前路漫漫,道阻且长

座右铭

我们都不是很完美的人,但我们要接受不完美的自己!

推荐文章

Cpp并发编程

C++11首次实现了对多线程的支持

简介

在计算机中并发就是指在单个系统里同时执行多个独立的任务,而非顺序的进行一些活动。

以前,大多数计算机只有一个处理器,具有单个处理单元(processingunit)或核心(core),如今还有很多这样的台式机。这种机器只能在某一时刻执行一个任务,不过它可以每秒进行多次任务切换。通过“这个任务做一会,再切换到别的任务,再做一会儿”的方式,让任务看起来是并行执行的。这种方式称为“任务切换(taskswitching)”。

在一个双核机器(具有两个处理核心)上,每个任务可以在各自的处理核心上执行。在单核机器上做任务切换时,每个任务的块交织进行。但它们中间有一小段分隔(图中所示灰色分隔条的厚度大于双核机器的分隔条);为了实现交织进行,系统每次从一个任务切换到另一个时都需要切换一次上下文,任务切换也有时间开销。进行上下文的切换时,操作系统必须为当前运行的任务保存CPU的状态和指令指针,并计算出要切换到哪个任务,并为即将切换到的任务重新加载处理器状态。然后,CPU可能要将新任务的指令和数据的内存载入到缓存中,这会阻止CPU执行任何指令,从而造成的更多的延迟。如下图所示:
并发的两种方式

阅读更多

Linux进阶学习

记录学习Linux的路程

常用命令

  1. 显示时间与日期:date

    [root@name ~]# date
    2023年 03月 19日 星期日 11:17:06 CST
  2. 显示日历:cal

    [root@name ~]# cal
          三月 2023     
    日 一 二 三 四 五 六
              1  2  3  4
     5  6  7  8  9 10 11
    12 13 14 15 16 17 18
    19 20 21 22 23 24 25
    26 27 28 29 30 31
  3. 使用计算器:bc

    [root@name ~]# bc
    bc 1.06.95
    Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type `warranty'. 
    1+2
    3
  4. man命令和--help命令

  5. 观察系统的使用状态

    1. 查看谁在线:who
    2. 查看网络的联机状态:netstat -a
    3. 查看后台执行的程序:ps -aux
  6. 关机与重启:shutdownreboot

  7. 将数据同步写入磁盘:sync

阅读更多

PrimerCpp学习

Primer C++作为C++的经典书籍,值得一读!

C++基础

变量、语句、字符串、数组

表达式和函数

类的初步使用

阅读更多

C

C语言相关知识点深入理解

第一关:C和指针

整型

整型分为有符号和无符号。

整型值相互之间的规则是:长整型至少应该和整型一样长,而整型至少应该和短整型一样长。

浮点类型

浮点数在缺省情况下都是double类型的,加L或l表示为long double类型的,或者加F或f表示是float类型的值。

宽字符常量

如果一个多字节字符常量前面带有一个L,那么他就是宽字符常量。例如:L‘X’

作用域

代码块作用域

位于一对花括号之间的所有语句都称为一个代码块,任何在代码块的开始位置声明的标识符都具有代码块作用域。

文件作用域

任何在所有代码块之外声明的标识符都具有文件作用域。

原型作用域

原型作用域只适用于在函数原型中声明的参数名。

函数作用域

函数作用域只适用于语句标签,指在函数内声明的所有变量在函数体内始终是可见的,可以在整个函数的范围内使用及复用。

枚举类型

枚举类型的实质是以整型形式进行存储的,符号名其实都是整型值。如果某个符号未显式复制那个他的值就比前面的一个符号名的值大1。第一个未命名的初始化为0。

可变参数列表

可变参数列表是通过stdarg宏实现的,位于stdarg.h头文件。函数声明了一个var_arg的变量,用于访问参数列表未确定部分,通过调用va_start来初始化,第一个参数是va_list变量的名字,第二个参数是省略号前最后一个有名字的参数。为了访问这个参数,需要使用va_arg这个宏,这个宏接受两个参数,va_list和参数列表中下一个参数的类型。访问完毕后使用va_end函数。

字符串常量

K&R C并没有提及一个字符串常量中的字符是否可以被修改,但是其表明具有相同值的不同字符在内存中是分开存储的,因此许多编译器运行程序修改字符串常量。

ANSI C则表明如果对一个字符串常量进行修改,效果是未定义的。他也允许编译器将一个字符串常量存储于一个地方,即使其在一个程序中多次出现。因此许多ANSI C编译器不允许修改字符串常量。

字符串常量在程序中使用会生成一个”指向字符的常量指针”。

char *message = "Hello";
/*等价于
char *message;
message = “Hello”;
*/

指针与常量

int const *p;//可以修改指针的值,无法修改指针指向的值
int * const p1;//指针为常量无法修改,指针指向的值可以修改
int const * const p2;//指针的指向和指针指向的值都不可以改变
阅读更多

C++学习

数组

方便存放同类型的元素

一维数组

一维数组数组名代表数组的首地址

一维数组名可以计算出数组在内存空间所占内存大小

二维数组

二维数组名代表二维数组的首地址,也可以查看某行的首地址

二维数组可以计算出数组在内存空间所占内存大小,也可以计算出某行所占内存大小

阅读更多