自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mutex底层原理实现

在下面的代码中,_queueLock.lock()就是锁,临界区域就是_queueLock.lock()与_queueLock.unlock()之间的代码。如果有两个并发线程,线程1持有锁之后就可以访问临界区域,线程2就需要等待,等待线程1释放锁之后,线程2尝试获取锁,再来访问临界区域。也就是说只允许持有锁的线程访问临界区域,其他未持有锁的线程必须等待这个线程释放锁,再去尝试获取锁才能访问临界区域。

2025-07-25 10:53:09 365

原创 初识bRPC

编译完整个主项目之后,用cmake运行样例(这个是仅编译example/echo_c++下的实例代码,不包含单元测试,运行的也是示例程序echo_server和echo_client)编译完成之后,运行测试(这个命令是编译所有代码 (主代码+单元测试代码),显示启用单元测试,运行所有单元测试,验证代码逻辑是否正确。进入到项目目录,接着使用cmake编译brpc整个项目(基础编译,仅编译项目的主代码和示例程序,不包含单元测试代码,不运行任何测试,仅生成可执行文件或库)①数据以什么格式传输?

2025-07-05 17:55:53 759

原创 从依赖地狱到自包含部署:Libevent实盘交易系统的工程化实践

在完成交易系统的程序里面,使用了libevent库封装网络部分的代码,开发环境是自己的虚拟机,是有互联网的,可以下载libevent。但是生产环境托管在机房内的机器上,这个机房只有局域网用于交易,没有互联网。所以就无法使用yum install、wget、git clone等需要外网的操作。并且还有一个问题,就是环境是否一致,如果手动在实盘机上编译安装libevent,可能导致版本与开发环境不一样,例如开发用libevent 2.1.12,实盘机装了2.0.21。依赖链就会断裂。

2025-06-27 15:37:51 596

原创 WebSocket的使用

WebSocket是一种在单个TCP连接上进行全双工通信的协议,适用于实时、双向的数据交换场景。它可以让浏览器和服务器之间持续的互相发送消息的协议,而不需要每次通信都重新建立连接。它可以让前端和服务端之间的通信像打电话一样顺畅,而不是像写信一样一问一答,让服务端主动发消息成为可能。

2025-06-20 14:07:34 1097

原创 “为什么我的回调不生效?”C++模块化设计中的隐藏坑点

在开发交易系统中,服务端发送错误码的详细内容给前端,但是前端却无法收到,尽管代码里面明明写了回调函数。回调机制为何失效?

2025-06-20 10:10:18 262

原创 Crow的学习

return res;});类型特征说明无参返回字符串或 JSON路径参数 <type>接收路径变量方法限定.methods( )限定 GET/POST 等请求方法request 参数处理请求体、头信息、查询参数等返回 crow::response适合自定义状态码、头部等。

2025-06-05 14:38:45 753

原创 认识软链接

软链接(也叫符号链接,符号连接)是文件系统里的一种特殊文件类型,好像Windows系统里的“快捷方式”,核心作用是为其他文件或目录创建一个便捷的“访问入口”软链接自身是一个独立的小文件,不存储实际数据,而是保存着目标文件/目录的路径信息。当访问软链接时,系统会顺着这个路径去找到并访问真正的目标内容。

2025-06-05 10:42:42 424

原创 C++编译指定新版libstdc++库

说明出现了标准库不兼容的问题,系统仍然在使用旧版的libstdc++.so.6解决方法是A[确认新库路径]->B[设置运行环境]

2025-06-05 10:41:34 287

原创 CMake的使用

把头文件utils.h移动到include目录下,使用命令:mv utils.h include/ 把源文件utils.c放到src目录下,使用命令:mv utils.c src/ main.c保留在根目录,如下图所示。可以创建一个练习目录,在该目录下添加两个文件,分别是main.c和CMakeLists.txt(可以通过配置 CMakeLists.txt 文件来指定项目的源文件、目标名称、编译选项等信息,从而构建出可执行文件)。必须在main.c所在的文件目录下,输入命令:came .,运行(若。

2025-03-28 13:59:00 1734

原创 利用WinSCP实现VSCode与CentOS之间的互传

选择绿色download进行下载下载完成之后,选择“为所有用户安装”点击“接受”选择“自定义安装”选择安装目录后面全部选择“下一步”选择安装安装完成二.点进winscp填写登录需要的信息:选择“SFTP”或“FTP”等协议。一般保持默认的SFTP(SSH File Transfer Protocol)即可,它基于 SSH 协议进行安全的文件传输。若 CentOS 服务器开启了 FTP 等其他服务并想使用对应协议,也可选择其他选项,但需要服务器端配置相应支持。:输入设备的IP地址或域名。

2025-03-27 19:30:35 788

原创 VSCode 终端赋能:CentOS 与 Gitee 代码互传

要实现一个代码文件如下图所示的互传,VSCode相当于一个桥梁,选择它作为桥梁是因为跨平台兼容性强,可以在Windows、Linux等主流操作系统上使用,并且具备强大的调试工具,也集成了Git工具。①通过“Remote-SSH”插件,实现SSH远程连接,就可以在VSCode本地窗口直接访问和操作CentOS远程服务器上的文件、运行程序等,十分便捷。

2025-03-27 19:07:51 1290

原创 epoll是同步阻塞的???还是异步非阻塞的???

一种可能的情况是,在异步操作的回调函数或者通知机制中,执行了一个阻塞操作。这意味着程序仍然是按顺序执行任务,但是在执行某些操作时,如果操作不能立即完成,不会阻塞程序,而是返回一个表示操作未完成的状态,程序可以继续检查这个操作的状态或者执行其他任务。如果一个操作是非阻塞的,当它不能立即完成时,它会返回一个表示操作尚未完成的状态,程序可以继续执行其他任务(在一个交通场景中,车辆可以在路口进行试探性前进,比如查看是否有足够的空间通过,如果不能通过,就执行其他操作比如换道或等待一会再尝试,而不是一直在那里等待)

2024-10-29 20:29:54 774

原创 Linux中shell命令解释器的实现

Linux中shell命令解释器的实现

2024-04-18 21:55:06 1042 1

原创 单链表逆置(头插法;向后转)

在这张图中你会看到第一个节点的next是100,不符合逆置后的链表,所以在循环进入之前就要对该节点的next进行处理,因为第一个节点逆置之后就是最后一个节点,所以要把第一个节点置空,在p,q,r定义完成之后才能确定位置,否则后面的数据都会消失,语句为“p->next=NULL”。首先“if (plist == NULL || plist->next == NULL || plist->next->next == NULL)”这个语句是为了 防止给的是空表或者只有一个节点,直接return出去,不会崩溃掉。

2024-04-11 23:00:35 1425 1

原创 C++继承

C++继承

2024-01-31 19:46:18 407

原创 左值引用和右值引用

左值引用和右值引用

2024-01-14 17:41:33 455 3

原创 通过交换函数Swap学习指针

通过交换函数Swap学习指针

2023-10-22 11:04:51 239 1

原创 给定一个整数可能为正,0,负数,统计这个数据的位数。例如1234567输出7位;-12345678输出8位;0输出1位

【代码】给定一个整数可能为正,0,负数,统计这个数据的位数。例如1234567输出7位;-1234567输出8位;0输出1位。

2023-10-16 17:30:15 92 1

空空如也

空空如也

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

TA关注的人

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