- 博客(30)
- 收藏
- 关注
原创 观察者模式
展示了如何使用观察者模式来实现数据的发布-订阅机制,特别是在多线程环境下如何安全地进行数据更新和通知。以下是一个多线程环境下的观察者示例,用于模拟天气数据的更新和通知机制。是观察者,它们接收并处理天气数据的更新。是被观察者,负责生成和更新天气数据。
2025-10-16 20:18:08
276
原创 总结信号signal常用的api
通过该例子可以看出,当信号被屏蔽时,当进程接收到该信号后,默认处理是将其阻塞住了,等到解除对该信号的屏蔽后,进程会马上处理被阻塞的信号。比如这里的SIGINT,进程会马上退出。会被发送到进程,由于主线程屏蔽了该信号,信号不会被主线程处理。主线程屏蔽了SIGINT信号,子线程等待SIGINT信号。✅ 二、分别演示每个 API 的使用(C++ 示例)✅ 一、常用信号 API 列表。如果当前进程正在执行。会立即返回,不再继续休眠。,操作系统会向进程发送。当我按下ctrl+c后,
2025-10-15 15:56:04
254
原创 6.3 排序、RMQ
这是一个包含n个未知数、n个方程的方程组,但并不是有唯一解,因为把左边、右边全部加起来,会发现这是一个恒等式,所以上边实际上最多只有n-1个完全独立的方程。当输入是奇数个数的时候,下边的堆数量比上边多一个。我们只关心中位数,不需要对较小的数排序,也不需要对较大的数排序,所以可以用2个堆来做。),只要这样操作k次,就能保证逆序对为0,所有数为有序。到数轴上的点的距离之和的最小值,当为中点时,值最小。不支持修改,是一个静态算法,要求原来的数组不能变化。每一次交换,都是交换的前一个数>后一个数的场景(
2025-10-04 23:31:26
922
原创 int最大值2的次幂
都是带符号整数类型,占4个字节,因此它们能表示的整数范围为-2147483648 ~ 2147483647,也就是。short int是2个字节的带符号整数类型,能表示的整数范围是-32768 ~ 32767,即。是无符号整数类型,能表示的整数范围是0 ~ 4294967295,即0~,十进制表示中为10位。十进制表示中为10位。
2025-10-04 23:01:17
219
原创 【常用的git命令】
参考处理链接:https://blog.csdn.net/weixin_42623551/article/details/123372630。master分支里合入的commit id:32045b9bf33603d3f6d7b67c52907c7de9262490。解决冲突,使用vscode打开代码,找到冲突的代码,手动修改。,此时会提示成功或者失败。可以看到有冲突的文件。欲将其合入到br_dev分支。查看提交的commit id。在分支master上打开。首先明确是手动处理冲突。
2025-09-29 16:52:11
294
原创 多线程互斥访问全局共享变量
由于每个线程递增1000次,4个线程总共递增4000次,最终计数器值为4000。在每次递增操作前后,锁定和解锁互斥锁,确保同一时间只有一个线程能够修改。输出当前线程ID和计数器值,同样需要保护以避免输出混乱。:全局计数器,多个线程会共享并修改它。自动管理互斥锁的锁定和解锁。:互斥锁,用于保护对。
2025-09-22 21:01:50
273
原创 IPC_PRIVATE 的含义和作用
是一个特殊的常量,用于进程间通信(IPC)机制中,如信号量(semaphore)、消息队列(message queue)和共享内存(shared memory)。它的主要作用是创建一个私有的 IPC 对象,确保这些对象只能被创建它们的进程及其子进程访问。作为键,创建了一个包含一个信号量的信号量集。这个信号量集只能被创建它的进程及其子进程访问。它确保 IPC 对象只能被创建它的进程及其子进程访问,提供了一种安全且灵活的进程间通信方式。常用于进程组内部的同步和临时 IPC 对象的创建。
2025-09-18 19:59:14
281
原创 linux共享内存
共享内存创建共享内存后,进程结束,共享内存是否会消失?进程间通信使用的数据结构:管道、socket、共享内存、消息队列、信号量等,是属于内核级的,一旦创建后就由内核管理,若进程不对其主动释放,那么这些变量会一直存在,除非重启系统。
2025-09-17 15:05:36
386
原创 static关键字
static关键字类中的静态成员变量、静态成员函数如何初始化?静态成员不能在类中进行初始化,一般在类外和main()函数之前初始化,缺省时初始化为0。静态成员属于全局变量。静态成员函数只能操作静态成员变量。static修饰的类可以在别的文件中被调用吗?实例static变量的特殊性主要体现在其生命周期(全局)、作用域(局部或文件级)、初始化(只初始化一次)以及内存分配(静态存储区)。这些特性使得static变量在需要长期保持状态或模块内共享数据时非常有用。
2025-09-17 14:44:16
357
原创 6.1 位运算/递推/递归
类比快速幂乘法->乘方加法->乘法又名龟速乘计算a * b mod p数据范围1≤abp≤1018分析如下例如,b110102即b212324那么a∗b21a23a24a,可以预先处理得到每一项b的二进制表示最多有logb位,那么最多加logb次,所以时间复杂度就是logb。
2025-09-08 17:13:31
677
原创 4.2 树状数组
观察所有不同c之间的关系,发现c[16]=c[8]+c[12]+c[14]+a[16]的长度一定是r的二进制表示的最后一位1所对应的次幂,那么区间又可以表示成。那么对于x而言,1~x之间所有数的和,最多是拆分成。如何通过子节点找父节点=>对应修改操作。的和.因此在算总和的时候可以使用。较难的点是想到用树状数组来做。是x的二进制表示的最后一位1。,表示以x为右端点的,长度是。的二进制表示的最后一位1。修改x直接影响到的节点是。划分如下数组,左开右闭。的区间里边所有数的和,的复杂度就能算出来.。
2025-08-23 01:33:04
900
原创 C++ 字符串和数字的转换
1) 数值转字符串C++11提供了若干to_string(T value)函数将T类型的数值转换为字符串形式string to_string(int value)string to_string(long value)string to_string(double value)代码示例int a = -100;long b = 19999;double c = -78.986;cout << "a: " << to_string(a) << endl;
2020-07-23 10:14:48
267
原创 os.mkdir() 与 os.makedirs()
参考链接今天使用os.mkdir(path)创建文件夹时,总是报错显示File "/home/......./utils/util.py", line 87, in checkOutputPath os.mkdir(filePath) # 无论如何,都创建一个新文件FileNotFoundError: [Errno 2] No such file or directory: './out0720/mb'我在想,我在创建一个文件啊,当然没有这样的目录啊,你给我建不就完了,哪来这么多事?!之
2020-07-20 17:04:47
394
原创 C++ 函数传递二维数组
老哥说的很好>>二维数组名是一个指向数组的指针int num[3][4]; // 二维数组// num类型为 int (*)[4]void fun_1(int num[3][4]) {}void fun_2(int num[][4]) {}所以,要怎么做呢?一 使用STL模板代替传统数组(STL是个好东西啊!!)二 参考剑指offer中的代码,一下为参考代码// 使用 一维数组 代替 二维数组bool* visited[rows * cols];memset(vis
2020-07-15 16:45:47
527
原创 常用排序算法
冒泡排序// 冒泡排序 Bubble sort// 比较相邻的元素,如果第一个元素比第二个元素大,就交换他们两个// 从第一对开始,到结尾的最后一对void sort_pupple(int arr[], int length){ for (int i = 0; i < length; ++i) { for (int j = 0; j < length - 1 - i; ++j) // 这一步进行了一个优化,遍历顺序不需要进行到最后
2020-07-14 16:31:54
153
原创 大小端问题
直接看例子:我们要存储 unsigned int value = 0x12345678 这个数据,用 unsigned char buf[4] 来表示value大端模式Big-Endian:低地址存放高位高地址---------------------------buf[3] (0x78) – 低位buf[2] (0x56)buf[1] (0x34)buf[0] (0x12) – 高位---------------------------低地址小端模式Litle-Endian:低地
2020-07-09 18:26:09
229
原创 g++ 命令学习
gcc 和 g++分别是gnu的c/c++编译器,gcc/g++在执行编译工作的时候,总共需要四步预处理,生成.i文件 (宏的替换,注释的消除,还有找到相关的库文件)将预处理后的文件转换为汇编语言,生成文件.s转为机器码链接,生成可执行文件参考链接>>参考链接>>...
2020-07-09 17:33:47
160
原创 Python中time, calender模块
详情见它>>菜鸟教程import timeimport calendar##---------------time模块# 获取当前时间戳ticks = time.time()print("当前时间戳为:", ticks)# 当前时间戳为: 1593760787.8455389# 获取当前时间localtime = time.localtime(time.time())print("local time: ", localtime)# local time: tim
2020-07-03 15:33:27
274
原创 os.rename()使用方法
作用:os.rename()用于重命名文件或目录,从src到dst,如果dst存在,则会抛出错误语法:os.rename(src, dst)# src--要修改的目录名# dst--修改后的目录名# 该方法没有返回值# Exampleimport os src = "/home/feng/SStone/test"dst = "/home/feng/SStone/rename_test"try: os.rename(src, dst)except Exception as e:
2020-07-03 15:05:05
10914
1
转载 Python中究竟是传值还是传引用
Python中究竟是传值还是传引用?https://blog.csdn.net/u013095333/article/details/89400666
2020-06-30 11:27:11
182
原创 C++ 求和 accumulate() 返回最大索引max_element()
#include <numeric>vector<int> a = {1,2,3};int b = accumulate(a.begin(), a.end(), 7);cout << "b: " << b << endl;//输出:b: 10
2020-04-13 15:19:34
318
原创 codeblocks加载C++文件中文显示乱码
codeblocks加载C++文件中文显示乱码<已解决>问题描述分析问题问题描述注释的地方在导入时应当显示为中文,但现在是乱码。分析问题原因在于文件的编码格式与codeblock的导入格式不匹配记事本打开显示格式如下:编码格式为GB18030,而codeblocks中默认为utf-8。现在修改记事本下的编码格式为utf-8,保存:然后再在codeblock中重新打开,...
2020-03-20 22:55:04
900
转载 用Jupyter notebook 打开任意路径下的文件夹
用Jupyter notebook 打开任意路径下的文件夹亲测有效新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导...
2019-09-24 13:59:14
1456
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅