- 博客(34)
- 收藏
- 关注
原创 内存池项目学习
内存大小不可能是负数,int 是有符号的(能存负数),在 64 位系统下,int 最大只能表示 20 亿左右,万一内存大一点,int 就爆了。在 9~16 之间,都是 2。极短的函数写完了实现,写在头文件里,编译器会自动把它优化成内联函数(inline),运行速度极快,不需要频繁跳转。如果你要 8 字节,算出来是 1,-1 后是 0,对应 0 号池子(里面格子大小是 (0+1)*8 = 8)。你要 9 字节,算出来是 2,-1 后是 1,对应 1 号池子(格子大小是 (1+1)*8 = 16)。
2026-11-10 22:58:12
175
原创 linux学习
sudo make install:组装好的家具(编译好的库文件),原本放在你的临时工作区。坏处是,你的程序体积会变大。于是,他会根据你的计划书,结合你电脑的当前情况(比如装了什么编译器,库在哪),生成一本极度详细的《施工进度表》。很多大牌的第三方库(比如你刚装的 libevent)为了照顾不同的需求,会同时提供动态库(.so)和静态库(.a),但并不是所有库都这样。只有动态库:常见于系统的核心库(比如你系统的底层 C 库),或者一些商业闭源软件(厂商只给你一个黑盒子,不让你直接把代码打包进你的程序)。
2026-11-08 00:17:02
172
原创 python语法学习
当写到 my_tuple = ([1, 2], [3, 4]) 时,元组这个“大箱子”里装的,其实是两张快递单。这就是现代编程语言极其推崇的 “面向接口编程”:把“怎么取数据(下标管理)”的脏活累活封装在底层,让写代码的人专注于“怎么处理数据”。重点来了:吐完最后一个,它会在内存里悄悄把前面的元素记录下来,然后重新从 (‘Green’, 2) 开始吐,永不停歇。等号右边 a, b 其实是一个元组 (a, b),等号左边 x, y 也是一个元组 (x, y)。传送带先按顺序吐出 (‘Green’, 2)。
2026-10-28 01:07:41
146
原创 C++项目2
第一章:进货和准备工作(头文件与变量)第二章:买电话、拉线、开机(准备总机)第三章:开门营业(死循环与保安查房)情况 A:有新客户打进来(总机响了)情况 B:老客户发消息(专线响了)第四章:接客与聊天(处理事件)
2026-10-22 02:13:44
11
原创 C++八股
每个有虚函数的对象,内存里有一个隐藏的 vptr(虚表指针),指向所属类的 vtable。vtable(虚函数表):存储虚函数地址的表,每个有虚函数的类都有一张。C++ 的语言规定:派生类析构函数执行完后,会自动调用基类的析构函数。作用:让编译器帮你检查是否真的重写了基类的虚函数。override:明确表示重写。final:禁止重写或继承。构造函数不能是虚函数。
2026-09-22 00:26:34
185
原创 c++项目
T get();// Box.cppBox<T>::Box(T val) : data(val) {} // 定义} // 定义// main.cpp - 链接错误!正确做法一:全放头文件// Box.hT data;public:Box(T val) : data(val) {} // 直接定义} // 直接定义正确做法二:头文件包含实现文件// Box.hT data;
2026-08-31 00:08:51
215
原创 刷题catcatcatcat
是 C++11 列表初始化 + 隐式构造,若函数返回值类型是 vector,{a, b} 会自动构造出一个临时 vector。例子:给出一个元素,判断这个元素是否出现过,如果出现过,返回这个元素的下标。那么判断元素是否出现,这个元素就要作为key,所以数组中的元素作为key,有key对应的就是value,value用来存下标。pair<int, int>(nums[i], i):显式调用 pair 构造函数,老式 C++ 写法,兼容所有编译器。pair<int, int>(a,b) 与 {a,b} 区别。
2026-06-12 01:01:48
279
原创 线程c++
一个程序跑起来,默认有主线程,它从 main 函数开始跑:新创建一个线程,它也必须从某一段代码开始跑。所以 C++ 规定:创建线程时,必须给它一个函数作为入口,线程启动后,必须去执行一个函数,线程要执行代码 → 代码必须写在函数里 → 所以线程必须绑定函数。原因:线程是操作系统里的真实执行流,是唯一的、不能克隆的, C++ 规定:thread 没有拷贝构造函数,不能复制。所以遍历线程必须用 &(引用),for (auto& t : threads) ,相当于直接用原来的线程,不创建新的,不拷贝。
2026-05-29 07:40:00
64
原创 c++小巧思
本文介绍了C++中的智能指针创建方法、容器常用操作以及C++17结构化绑定特性。主要内容包括: 智能指针创建: make_shared和make_unique模板函数的使用语法 两种智能指针的创建方式比较 容器常用操作: 通用操作(size/empty/clear/迭代器) 顺序容器(vector/list/deque)的特有操作对比 关联容器(map/set等)的增删查改操作 特殊容器(智能指针)的特有功能 C++17结构化绑定: 用于简化pair/tuple元素的访问 与传统写法的对比 在遍历关联容器时
2026-05-28 23:35:55
313
原创 健身饮食2
人体的血浆和组织液的钠离子浓度正常130+mmol/L,额外多吃3g钠即130+mmol钠,为了维持人体的钠离子浓度,就要吸水1L来中和130+mmol的钠,体重会涨一公斤,减脂每天300-500大卡的热量缺口,即便假设全部在脂肪分解上,一点肌肉都没有损失,按脂肪9大卡/克的热量来算,也就减脂30-50克,脂肪变化的占比10%都不到,
2025-05-17 20:23:34
348
原创 健身动作框架学习笔记
所有的推胸运动都包含了三种运动:①肩关节水平内收:水平面上大臂从躯干外侧向内侧移动,由胸大肌和肩前束负责②肩关节屈:矢状面上,大臂从躯干后侧向前侧移动了一些,同样由胸大肌和肩前束负责肩关节水平内收和肩关节屈的这两种运动复合就形成了卧推时大臂的运动轨迹。③肘关节伸:肘关节从折叠变为打直,肱三头肌负责握距窄,开肘小,拉向腹部一线的下背划船,肩后束参与的相对较少,握距宽,开肘大,拉向胸口的上背划船,肩后束参与的较多,上背划船里的背阔肌不会很活跃,但肩后束会很活跃。
2025-05-11 01:11:11
954
原创 电路基础学习(4章)
叠加定理:有源二端网络Ns单独工作时,电流源断开处理,在相同的点获得的电压是U撇,是开路电压,没有电流,第二部分是电流源单独作用时,有源二端网络Ns内部所有的独立源置0,从外往里看就是纯电阻电路或只含受控源的电路,在相同的位置点获得的电压是U撇撇,任何元件和电流源串联的时候,在研究外电路的时候,此元件可以被短路。有源二端网络等效为实际的电压源模型,
2024-12-24 00:09:33
825
原创 营养学--维生素
两大来源:①动物肝脏;鸡蛋蛋黄、牛奶、牛奶制品(奶油、黄油、奶酪);②蔬菜、水果,颜色鲜艳的蔬菜水果,深绿色、橙色、黄色、红色的蔬菜水果里含有类胡萝卜素,类胡萝卜素在体内转化为维生素a的效率低,速度慢。因此只吃素的人易出现维生素A缺乏,可能会出现部分症状:夜盲症、干眼症、皮肤粗糙、皮肤角质化、鱼鳞。
2024-12-09 22:28:15
545
原创 电路基础学习(1-2章)
对于电源而言,电流方向与电压方向是非关联方向。一般参考点接地,作为零电位点,参考点变了,电位就变了,电导的单位是s,西门子,
2024-10-27 23:31:07
522
原创 家用配电箱
只有当电流超过限定值一部分,并且持续一段时间后,空气开关才会切断,电流过载幅度不高的情况往往是因为一个回路中并入了过多的用电器,或者用电器功率过高导致,还有一种电流过载情况是电流会在瞬间大大超过限定值,也就是短路,火线没有经过用电器,直接和零线或者地线搭在一起了,因为导线的电阻很低,就会在瞬间通过极大的电流。不同粗细的电线,要搭配不同规格的空气开关,越粗的电线能承载的电流就越大,就可以搭配限定值大点的空开,越细的电线能承载的电流就越小,就可以搭配限定值小点的空开,独栋或者别墅,三根线就会都接进来,
2024-10-23 23:50:01
629
原创 cpp54-c
根据TCP/IP协议在网络中传输数据,传输的数据采用大端存储法,将数据的高有效位即靠近符号位的那边放在低地址上。驼峰命名法:每个单词首字母大写CLearning。下划线命名法:c_learning。x86是32位的平台,
2024-06-10 21:52:14
292
原创 03 - 侯捷 - C++设计模式笔记
设计模式目的是提高复用性,抽象可以用一种统一的方法进行处理,不用分而治之,只有父类写了虚析构函数,以后子类通过多态释放时,子类的虚析构函数才会被调用到,否则调用不到子类的析构函数,绝大多数的继承都应该用public继承,需要多态性,虽然放的类型是shape,但之后可能希望指向的是Line类型或Rect类型,需要用指针Shape* ,如果不用指针,就会导致对象切割,如果传一个Line,会把L切割成一个小对象,所以里面不能放Shape,要放Shape指针才能表现多态性,
2024-05-05 21:27:52
413
原创 c++04C++新标准C++11&14笔记
设计函数print可以接受任意个数的参数,并且每一个参数的类型也是任意的,只有typename是关键字,args和Types是任意命名的,为了处理最后的状态还要再写一个上面的函数,最后没有参数的时候会调用上面的函数①版本,如果没有①版本就会编译错误,所以使用Variadic Templates的时候,一定需要写一个处理最后情况的东西,这个东西针对函数就是函数,针对类就是一个类,递归分解,
2024-05-02 21:44:19
224
1
原创 c++02 - STL标准库和泛型编程笔记
容器把内存的问题解决了,程序员看不到内存,分配器是来支持容器的,帮助分配内存,容器是一个模板类,generic programming模板编程的思想,第二个模板参数是分配器可以不写,在容器的源代码里用默认的分配器,有默认值,分配器本身也是一个模板,必须告诉它每次分配的是什么东西,此处每次分配的内存是一个int,要搭配,vi是object 对象,迭代器是泛化的指针,count_if,count是计算,if指带一个条件,所以此算法能帮助计算给它的条件之下符合这个条件的元素有几个,
2024-04-26 17:55:19
800
2
原创 c++程序设计(II)兼谈对象模型笔记
operator后面加空格,要转换为什么类型,就作为函数名称的一部分,这个函数的意思是fraction可以被转换为double,编译器在碰到任何需要把fraction转换为double的时候就来调用黄色的函数,不可以有参数,转化没有参数,转换函数没有return type 返回类型,返回类型就是函数名称里面的类型,转换不可能改变class里的data,所以转换函数通常会加上const在()后{}前,
2024-04-24 21:16:12
240
原创 侯捷C++面向对象高级开发(上)笔记
函数定义在构造函数body内部,自动声明为inline,即类中的成员函数缺省都是内联的,但能否内联要看编译器,在构造函数外部声明内联函数要加inline关键字。3.inline函数仅仅是一个对编译器的建议,所以最后能否真正内联,看编译器的意思,它如果认为函数不复杂,能在调用点展开,就会真正内联,并不是说声明了内联就会内联,声明内联只是一个建议而已。2.在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件上时,就会出现大量“重定义”错误。
2024-04-19 21:47:57
1408
1
原创 acwing算法基础笔记第三章搜索与图论
每一行都要放一个皇后,并且只能放一个皇后,所以可以从前往后枚举每一行的皇后可以放到哪一个位置上,比如写出n行,即n个空位,如果在第一行的把皇后放到第一列就是1,第二行把皇后放到第三列就是3,即搜索顺序和全排列的搜索顺序是一样的,树是一种特殊的图,无向图是一种特殊的有向图,对于每一条无向边,建两条边就可以了,所以只需要考虑有向图如何存储就可以了,第u行所在的对角线和反对角线是对应的直线的截距b,因为y-x可能为负数,所以补上n这个偏移量,反对角线是y+x,一个有向无环图的拓扑序不一定是唯一的,
2023-08-24 23:48:23
263
1
原创 acwing算法基础笔记第一章基础算法
分治是快排的思想,调整区间后分界点不一定是x调整区间方法1调整区间方法2双指针,无论什么时候,i指针前面的数都是小于x的,同理j指针后面的数都是大于x的,所以当两个指针相遇穿过,就分成了两个区间,两个指针穿过了就不能交换指针了,每次交换完两个指针后,都会往中间移动一格,因此可以先不管,直接把两个指针往中间移动一次,然后再进行判定,因此两个指针就需要把两个指针放到边界的左右两侧一格,这样最开始移动一格后,才能到真正的边界,
2023-08-13 13:31:06
1501
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅