自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 从零开始的git学习(所有命令后面-h有提示)

也就是说,我们可能下载下的是主分支,但是可以在本地直接利用这个命令进行分支切换,这样本地的分支就变成了分支xxx。5、如果下载本地副本以后,有别的用户更新了远程仓库,那么当前本地仓库和远程仓库是不一致的。1、分支是一个远程仓库中的多个独立副本,副本之间是互不影响的。最常见的配置如下,只需要在第一次使用git的时候配置即可,以后上传代码都不需要再配置了!1、标记某个修改记录,用于归档对应的分支下截止到这次修改的文件。我们clone下来的是一个仓库,仓库有不同的分支,我们可以进行分支的切换。

2025-06-01 21:23:21 762

原创 C与指针——常见库函数

【代码】C与指针——常见库函数。

2025-05-05 21:13:41 429

原创 C与指针——输入输出

2、一个程序至少有三个流,标准输出流stdout,标准输入流stdin,标准错误流stderr.他们都对应一个指向FILE结构的指针。标准流不需要打开和关闭。3、fopen 和 fclose用于打开/关闭一个流。通常是文件的操作,即当我们需要处理一个文件时,我们会打开一个对应的流,返回FILE*。一般输出缓冲区满的时候才刷新,也就是显示到屏幕上。但是有的输出我们可能希望立即刷新。当一个库函数出错时,errno会被重置。

2025-05-04 21:56:39 346

原创 C和指针——预处理

预处理是编译前的过程,主要对define,include以及一些编译器定义的内容进行替换约定,一般宏定义都用大写为了删除一个宏定义,可以用

2025-05-04 21:26:00 594

原创 C与指针——结构、联合、内存对齐、位域

在内存中会先存储c1,然后空3个字节(满足了d1地址被4整除要求),然后存d1,再存c2。这样内存开销为12(1+3+4+1+3)一般情况下,int 长度是4字节,要求起始地址与4对齐。那么该结构体中对对齐要求最严格的数据结构就是int,所以会强制让该结构的起始地址满足4的倍数要求。位段的数据类型只允许是unsigned int,int, signed int.三种。对于B,对齐要求为double(8),因此开销为24(1+3空+4+1+7空+8)这样内存开销为8(4+1+1+2)。1、定义结构与初始化。

2025-05-04 15:34:25 426

原创 C与指针——内存操作与动态内存

【代码】C与指针——内存。

2025-05-04 14:29:40 209

原创 C与指针5——字符串合集与#运算符

3、分割 strtok(),非线程安全,内部保留静态变量,而且line会被修改,因为函数原型为char* = strtok(char*,const char*);1、拷贝、长度、比较。

2025-05-03 22:56:45 233

原创 C与指针4——指针与数组

3-3、下标引用与间接访问等价,*(aa+1) 和 aa[1]均表示。3-1、aa是二维数组名、指向第一个一维数组的常指针。3-2、aa+1 代表指向第二个一维数组的常指针。3、同:都可以进行下标引用和间接访问的操作。2、数组名和指针进行sizeof结果不同。4、sizeof(a)返回的是数组长度。1、a是一个常指针,但是b的指向可改变。指向第二个一维数组的第一个元素的常指针。3、尝试修改a变量的值是不合法的。2、&a 是一个指向数组的指针。

2025-05-03 18:25:59 222

原创 C语言与指针3——基本数据类型

【代码】C语言与指针3——基本数据类型。

2025-05-02 15:56:33 240

原创 C和指针笔记2——编译、链接、可执行文件的内存模型

out 和 .exe都是可执行文件,前者是Linux系统下,后者是window系统下。

2025-05-01 21:57:54 355

原创 体系学习1:C语言与指针1——预定义、进制打印、传参为数组

5、两种常见的输入——scanf()会忽视空格和换行,但是getchar一视同仁。发现地址不同,但是数组内容确实被改变了,所以是按照引用传递。1、不对一段代码进行编译。4、数组以引用形式传参。

2025-05-01 20:53:14 264

原创 如何查看全连接队列和半连接队列的长度以及溢出

对于监听状态的连接而言,Rec和Send分别代表当前全连接队列长度/上限对于非监听状态的连接而言,代表接受队列中尚未读取的字节数,发送队列中尚未被发送的字节数。

2025-04-12 13:18:57 260

原创 继承、多态——面试特别常见的C++八股文

因为父类的构造函数是虚函数,因为多态,实际上应该调用子类的构造函数。而子类的vptr还未初始化。如果 Father 类的析构函数不是虚函数,当执行 delete p;:基类的指针或引用可以根据其实际指向的对象类型来调用相应的函数。:如果一个类有虚函数,那么他一定有一个虚函数表——接口描述了类的行为和功能,而无需完成类的特定实现。2、一般专门用来被重写,是多态实现的关键。3、每个包含虚函数的对象都有一个指向。抽象类的目的是作为基类。,存储在对象内存头部。

2025-03-27 18:27:01 282

原创 Docker快速使用指南

创建一个Dockerfile,放在任意目录下,内容如下。运行镜像,将主机的目录与docker的目录同步。

2025-02-26 17:36:52 357

原创 c语言的文件常见操作

3、read是一次系统调用,将磁盘中的数据读取到了内核缓冲区,然后将内核缓冲区中的数据转移到用户缓冲区。用户态->内核态->用户态。4、write是一次系统调用,将用户态中的数据写到套接字缓冲区,然后用网络发送出去。//直接将文件中的数据拷贝到套接字缓冲区,这样减少了一次read。1、首先,open产生了一次系统调用。2、stat是一次系统调用,得到了文件的大小。//将文件直接映射到内存区域中,是很常见的操作。//其实系统调用角度上来看,没有节省。或者mmap的系统调用。

2025-02-15 21:39:33 227

原创 单例模式、构造函数、左值右值

/禁用拷贝构造;//禁用移动构造//禁用拷贝赋值运算符//例如 Singletem A;// A = B;//禁用移动赋值运算符//例如 Singletem A;private:或者写作public:return it;private:这里有一个小细节,operator返回的是引用,这是为了链式法则,例如a=b=2;

2025-02-15 17:44:23 318

原创 /etc/sysctl.conf——系统的配置文件

控制当前会话的文件描述符数量(一般打开一个终端就是一个会话)控制核文件大小。

2025-02-14 21:17:49 230

原创 ifconfig指令详细解读

【代码】ifconfig指令详细解读。

2025-02-14 17:21:19 305

原创 函数perror 和全局变量errno

【代码】函数perror 和全局变量errno。

2025-02-14 15:43:26 221

原创 Git基本使用指南

2、去主目录下按ctrl+h显示隐藏文件夹,打开.ssh文件夹中的id_rsa.pub,复制下来,到github中打开设置。1、github中打开Setting- SSH and GPG- New SSH key-Add SSH key。如果后续想要开新的分支。

2025-02-11 19:03:11 223

原创 const 快速记忆:离谁近修饰谁

1: const 距离char更近,修饰指针所指内容,即字符串内容不允许通过*f_n的方式改变。2: const 距离 f_n更近,即f_n只能用于指向这个字符串,不允许指向其他对象。

2025-02-06 16:38:32 87

原创 sizeof易错点

【代码】sizeof易错点。

2025-02-05 10:50:55 119

原创 进程的环境变量

当一个进程被创建时,操作系统会为其分配一些基本的资源,其中就包括环境表。环境表本质上是一个字符串数组,每个字符串的格式为变量名=变量值,比如 MUDUO_LOG_DEBUG=1。这个环境表通常位于进程地址空间的数据段之后,在进程启动时由操作系统初始化。在类 Unix 系统(如 Linux、macOS)中,环境变量并不直接存储在堆、栈或传统意义上的全局变量区域,而是存储在进程的环境表中。有时在程序运行前,我们希望设置环境变量。此处::表示全局命名空间。

2025-02-04 21:07:21 290

原创 Epoll编程——流程、易错、关键参数

1、现在假设有一个客户端,向服务器发起链接请求,TCP已经握手成功。2、服务端一侧accept创建了文件描述符,并且用epoll_ctl成功将该描述符new_fd添加到epoll_fd的管理中。3、客户端不发送任何消息,直接close文件描述符,此时TCP的FIN信号被服务端接收,并且触发可读事件。4、此时服务端read函数返回为0。但是服务端我们并没有close该文件描述符,处理如上述代码所示。

2025-02-01 17:20:11 482

原创 socket编程短平快

【代码】socket编程短平快。

2025-01-31 18:11:19 246

原创 core dump调试指南

break file.cpp:line_number:在 file.cpp 文件的第 line_number 行设置断点。break function_name:在 function_name 函数入口处设置断点。print 或 p :打印表达式的值。run 或 r:开始运行程序。step 或 s:执行下一行代码,如果是函数调用,会进入函数内部。break main:在 main 函数入口处设置断点。next 或 n:执行下一行代码,但不会进入函数内部。break 或 b :在指定位置设置断点。

2025-01-16 14:19:38 403

原创 linux常用指令解析 netstat

t:指定显示 TCP(Transmission Control Protocol)连接相关的信息。-u:用于显示 UDP(User Datagram Protocol)连接相关的内容。-p:与网络连接或监听端口相关的进程信息,包括进程 ID(PID)和进程名称。netstat 查看网络连接情况、监听端口以及对应的进程信息。-n:以数字形式(numeric)显示网络地址和端口号。-l:表示只列出正在监听状态的端口。

2025-01-15 13:49:40 124

原创 CMakeLists的常见写法

【代码】CMakeLists的常见写法。

2025-01-14 16:48:42 100

原创 类静态成员的相关内容

会报错d和header_map未定义的引用。感觉这个就是编程语言的限定,考虑到类静态成员是全局变量,所以不允许在类中初始化。C++ forbids in-class initialization of non-const static member

2025-01-10 17:15:31 164

原创 C++线程调用顺序的一些误区,以及线程资源的释放

【代码】C++线程调用顺序的一些误区,以及线程资源的释放。

2024-11-23 16:48:40 240

原创 管道 pipe 相关概念

当一个进程向管道写入数据时,数据被存储在这个缓冲区中。另一个进程从管道读取数据时,就是从这个缓冲区中获取数据。当创建一个管道时,内核会分配两个文件描述符,一个用于写入数据(通常称为管道的写入端),另一个用于读取数据(通常称为管道的读取端)。在操作系统中,管道(Pipe)是一种用于进程间通信(IPC,Inter - Process Communication)的机制。管道就像是一条连接两个进程的通道,数据在这个通道中单向流动,从一个进程的输出端(写入端)流向另一个进程的输入端(读取端)。

2024-11-21 20:28:13 386

原创 http协议——简易版

例如,在http://example.com/products/123中,/products/123就是请求 URI,它指向服务器上products目录下编号为 123 的资源,可能是一个产品详情页面。关于请求的附加信息,每个请求头是一个键值对,格式为 “Key: Value”,多个请求头之间用换行符分隔。请求头和请求体之间用一个空行分隔。这是 HTTP 协议规定的格式,用于区分请求头和请求体。只有在 POST、PUT 等请求方法下才会有请求体。常见的是 HTTP/1.0 和 HTTP/1.1。

2024-11-20 21:15:04 437

原创 epoll详解(使用、原理、实验)

链接:

2024-11-19 11:53:38 205

原创 c++类的内存对齐

所以对齐的时候是向8对齐,sizeof是16。也就是说,这个对象会被填充4个字节的空白,以保证变量大小是16倍数。所以对齐的时候是向4对齐,sizeof是8。也就是说,这个对象会被填充3个字节的空白,以保证变量大小是8倍数。最常见的对齐机制就是,int是4字节,所以一般的int变量地址都是4的倍数。最常见的对齐机制就是,double是8字节,所以一般地址都是8的倍数。一般情况下,c++编译器在为变量分配内存空间时,会注意内存对齐机制。这里Per2 有一个double(8)一个int(4),

2024-11-18 12:04:18 196

原创 c++头文件中 #ifndef的作用

int b=1;#endifint main()如果上述三个文件,c1.hpp不写预处理指令,编译会出现redefinition variable a 的错误。就是因为c1.hpp被重复包含了。当编译器第一次处理这个头文件时,#ifndef SOME_HEADER_FILE_H检查SOME_HEADER_FILE_H这个标识符是否未被定义。

2024-11-17 20:26:04 318

原创 c++ condition_variable条件变量+消费者生产者

初始状态下,product中有一个元素,消费者1没有持有互斥量,调用wait函数:先检查lambda表达式,发现非空。初始状态下,product中有一个元素,消费者1持有互斥量,调用wait函数:先检查lambda表达式,发现非空。1、对于生产者,我们向product变量中添加数据,添加完毕后,我们调用cv.notify_once函数,告诉消费者product可能发生变化。如果先释放锁,再唤醒,很有可能出现锁一释放就被其他的消费者占用了,而被唤醒的消费者根本不可能参与到锁的竞争中。假设现在有消费者A,B。

2024-11-16 16:57:08 386

原创 c++ shared_ptr 常见构造函数

直观的就是说,shared_ptr对象,可以好几个指针指向同一片内存空间。当最后一个对象失效的时候,这篇内存空间就会释放。

2024-11-13 11:18:13 378

原创 c++ extern用法,声明、定义的区别,chong,chacs

一般用于:1、跨文件引用 2、全局变量。

2024-11-13 10:09:57 328

原创 c++常见锁:unique_lock、lock_guard、mutex 忙等待、阻塞、挂起

构造时:lock_guard自动持有锁,unique_lock可以不持有(取决于参数)lock_guard对象构造时自动持有锁,会在生命周期结束后自动释放锁。临界区:lock_guard不能释放锁,unique_lock可以释放。lock_guard在生命周期中都不允许释放锁,这样很不方便。最常见的多线程表示方法。析构时:都自动释放锁。

2024-11-12 16:23:11 275

原创 c++指针加减法与常见类型大小

直接上代码看上去很正常这里就看出问题来了。

2024-11-11 19:37:04 178

空空如也

空空如也

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

TA关注的人

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