自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 初始化列表;常对象、静态对象的使用方法

初始换列表:class Test1{public: Test1(int a, int b) :ma(b), mb(a) { //等价 ma = b; mb = a; } void Show() { std::cout << "ma:" << ma << std::endl; std::cout << "mb:" ...

2018-11-30 18:19:56 344

原创 C++特性之封装:类与对象

封装:将东西包裹起来,使外界无法知道,只能通过某些特定的方式才能访问。其目的是增强安全性和简化编程,使用方无需知道其具体实现,只能通过外部接口以及特定的权限来使用其成员。C++中的类就是把属性和方法进行封装,同时对外部的访问通过访问限定符进行限制。而类是一种抽象的概念的数据类型,就像设计图一样,是对设计物抽象的描述,而真实存在的是物品。对于C++而言,对象是类的存在形式,占用内存空间。...

2018-11-27 12:02:23 351

原创 引用 '&' 与const

引用:由于按值传递参数时会为实参生成一个副本,需要花费大量时间和空间,并且无法修改实参。然而引用传递实参时,可以直接使用实参,并且可以修改实参。实例:int a = 10;int&amp; b = a; //b为a的别名void Swap(int&amp; a, int&amp; b){ int tmp = a; a = b; b = tmp;}引用的特点:...

2018-11-23 00:02:39 195

原创 虚拟地址空间

在进程创建的时候,操作系统会为之分配4G大小的地址空间(32位的CPU的寻址空间是4G)。4G虚拟地址空间,分为两部分:用户空间和内核空间(Linux:3/1; windows:2/2)。以Linux为例,如图,3G的用户空间(User Space)、1G的内核空间。保留区(128m)的空间是不允许访问的,意在防止操作干扰和页的加载约定。.text段(指令代码段):存放的是程序指令(函...

2018-11-19 18:32:23 341

原创 .c/.cpp程序生成可执行文件的过程

.c/.cpp文件生成到执行过程预编译:gcc -E main.c -o main.i main.i处理源代码文件中的“#”开始的预编译指令。如“#include”、“#define”等。具体如下: 宏替换:将所有的“#define”删除,并展开所有的宏定义。 处理条件预编译指令,如“#if" "#endif" "#elif" "#else"指令:表达式1为...

2018-11-19 18:05:10 2650

原创 malloc()、free()与new、delete的区别

定义与使用:malloc()和free()函数:动态内存分配(申请一块连续的指定大小的内存区域,以void *类型返回分配的内存区域地址)与释放函数(释放malloc函数给变量分配的内存空间)。C++/C语言的标准库函数。void *malloc(size_t size);void free (void *memblock);int *pC =(int *)malloc(si...

2018-11-18 19:26:32 247

原创 系统编程——进程创建fork()函数

fork()函数:创建一个子进程(拷贝父进程的PCB、页表,然后修改PCB中的部分数据);声明:#include <unistd.h>pid_t fork(void);返回值: 原来进程返回新进程PID,新进程返回0;出错返回 -1 ;fork函数测试(fork之后父子进程互为独立进程,操作系统决定谁先执行):运行结果:父子进程关...

2018-11-14 13:06:13 337

原创 字符串匹配算法——BF算法、KMP算法

BF算法(暴力匹配算法):将目标串的第一个字符与模式串的第一个字符进行匹配。如果相等,则继续匹配下一个字符;如果不等,模式串回退到第一个字符再与目标串的第二个字符匹配(每次匹配错误,目标串移动一个,模式串从头开始)。时间复杂度:O(M*N);代码实现:int BF(char *str1,char *str2){ assert(str1 != NULL &amp;&amp; s...

2018-11-14 00:03:28 528

原创 用于C和C++混合编程的 extern "C"

extern "C":C++语言提供,用来兼容C语言,实现C++代码调用C语言代码。extern "C"{代码段},代码段编译器会按照C语言的方式进行编译。(C++函数标识和C函数标识生成规则不同,所以在自己的环境里无法找到调用函数)extern:   可以置于变量或函数前,以表示变量或函数的定义在别的文件中可以使用。提示编译器遇到该函数时在其他文件中寻找其定义。extern也可用于进行连...

2018-11-12 16:24:36 267

原创 C++内联函数

内联函数:在编译期间,建议编译器在该函数被调用的地方生成函数体代码的副本,以避免函数调用的开销。但这往往会使程序变得很大。定义:限定符inline +函数体inline double Cube(double a){ return a*a*a;}int main(){ double v = Cube(3.2); printf("%f\n ",v); return 0;...

2018-11-12 15:18:45 239

原创 C/C++函数符号生成规则(函数名的修饰);C++ 函数重载

函数符号(函数的名字修饰):在编译阶段生成的字符串,来指明函数的定义或原型 。C函数符号生成规则:_cdel调用约定(C标准调用约定):函数名前加下划线。_stdcall调用约定:函数名前加下划线,函数名后加“@”符号和其参数字节。_fastcall调用约定:函数名前加“@”符号,函数名后加“@”字符和其参数字节。C++函数符号生成规则:_cdecl调用约...

2018-11-12 14:36:51 4058 1

原创 带参数默认值的函数

带参数默认值的函数说明:函数有一个或多个的参数有默认值;如float Area(float r = 3.5); int Sum (int a,int b = 5, int c =10)。带参数默认值函数注意:1、默认值参数只能放在函数声明或定义处,一般放在函数声明中。int Fun(int a, int b, int c = 9);int Fun(int a, int b, ...

2018-11-12 12:26:51 3454

复杂版线程池(头文件)

复杂版线程池:线程池中的线程数量管理。线程池中的线程数量需要限制在一定范围内,包括最小线程数、最大线程数和当前存活线程数。同时,运用线程池中的锁机制和存活线程数等概念,以便更好地管理线程池中的线程。此外,设立管理者线程的概念,用于监控和调度其他普通线程的工作。在动态地增加或删除线程数时,需要根据任务的数量和最大线程数来决定是否需要增加或减少线程数。管理者线程以便更好地管理线程的创建和销毁,提高程序的性能和稳定性。

2023-12-26

线程池优化版(管理者线程)

复杂版线程池:线程池中的线程数量管理。线程池中的线程数量需要限制在一定范围内,包括最小线程数、最大线程数和当前存活线程数。同时,运用线程池中的锁机制和存活线程数等概念,以便更好地管理线程池中的线程。此外,设立管理者线程的概念,用于监控和调度其他普通线程的工作。在动态地增加或删除线程数时,需要根据任务的数量和最大线程数来决定是否需要增加或减少线程数。管理者线程以便更好地管理线程的创建和销毁,提高程序的性能和稳定性。

2023-12-26

tcp包裹函数(出错处理封装函数)

tcp包裹函数(出错处理封装函数)

2023-12-26

tcp包裹函数(出错处理封装函数)

tcp包裹函数(出错处理封装函数)

2023-12-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除