- 博客(22)
- 收藏
- 关注
原创 通过wireshark抓包,分析HTTP的请求头
在浏览器输入网址:www.gdsyzx.edu.cn/index。通过http去访问一个http网站会发生什么。值是:www.gdsyzg.edu.en。5开头的表示服务器端的差错 如502。4开头表示客户端的差错 如404。最后一行还给出了cookie。URL是:/index ,紧接着又是/r/n 换行符。1开头的状态码表示通知信息。版本是:HTTP/1.1。紧接着是/r/n 换行符。版本是:HTTP/1.1。本例子中,200表示成功。首部字段名是:Host。接着就是/r/n换行符。
2024-11-25 02:16:36
572
原创 C++中,指针和引用的区别
指针可以改变指向的内存块,引用不能改变绑定的对象。指针占有内存空间,引用相当于变量的别名,不占内存。指针可以为空,引用必须绑定对象。指针可以为多级,引用只能有一级。
2024-11-22 12:06:45
104
原创 c++ 的maloc和free有什么缺陷?
返回void* 类型的指针,使用时需要显式的类型转换,可能会导致类型不匹配。总结:malloc和free无法进行自定义对象的构造和析构。不支持异常处理,分配失败返回Null需要程序员手动检查。malloc无法调用对象的构造函数。需要手动计算算申请空间,容易出错。忘记释放内存时会导致内存泄漏。
2024-11-22 11:40:45
120
原创 静态多态,动态多态
(动态联编,通过函数重载或者函数模板实现)运行时多态:动态多态。(静态联编)编译时多态:静态多态。后期联编通过虚函数表实现动态多态。(先写几行字,晚点查资料更新)被调用的函数必须是虚函数。必须是指正或者引用调用。
2024-11-21 15:24:45
87
原创 C++多态与虚函数
这篇文章带你聊些:虚函数,虚函数表指针,虚函数表,多态的体现。创建类对象的时候,构造函数会给虚函数表指针赋值。类的普通成员函数,不占用类对象的内存空间。虚函数会占用类对象的内存空间。(讲的不完整,晚点修改)
2024-11-21 15:05:45
161
原创 Linux中使用C+产生守护进程,示例,接着上次的代码
产生一个子进程,然后杀死父进程,子进程就会被Init进程接管,成为守护进程,与终端无关。不会输出任何东西,因为daemon函数让他成为守护进程,改变了运行目录,与终端无关。可以看到父进程8672被1号进程接管,成为守护进程。同时8672下还有4个字进程。如果没有成为守护进程,那么终端关掉后这些进程也不复存在。
2024-11-20 23:40:11
359
原创 C++多进程框架(Linux环境),将进程绑定到对应CPU核心
往下翻 ,可见7074,7075,7076,7077这四个进程,分别在3,2,1,0,这四个核心上运行,如下图。worker_process_cycle函数,调用 worker_process_init绑定进程。如果创建成功,通过函数指针proc调用worker_process_cycle函数。另外,7073是主进程,7074,7075,7076,7077是主进程产生的子进程。worker_process_init函数,进程绑定内核在此处实现。n次调用 spawn_process产生n个子进程。
2024-11-19 16:27:15
393
原创 samba无法共享ubuntu的文件给windows?记得打开防火墙!
执行这条命令后: sudo ufw allow samba。正当我失去耐心的时候,我想起来,是不是防火墙的问题,果然。
2024-11-13 19:11:44
112
原创 linux下的gtest单元测试,使用示例
gtest是Google的一套用于编写C++测试的框架,可以运行在很多平台上(包括Linux、Mac OS X、Windows、Cygwin等等)。基于xUnit架构。支持很多好用的特性,包括自动识别测试、丰富的断言、断言自定义、死亡测试、非终止的失败、生成XML报告等等。安装后的 GoogleTest 会被系统识别,你只需要使用常规的 g++ 命令来链接库文件,无需手动指定库路径和头文件路径。GoogleTest 需要 C++14 或更高版本的标准,因此你必须确保编译时使用合适的标准。
2024-11-13 00:48:29
2469
原创 Linux中,内存检测Valgrind,Mencheck使用案例
Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,作者是获得过Google-O'Reilly开源大奖的Julian Seward,它包含一个内核──一个软件合成的CPU,和一系列的小工具,每个工具都可以完成一项任务──调试,分析,或测试等,内存检测。输入命令:valgrind --tool=memcheck --leak-check=full --log-file=./log1.txt ./--leak-check=full:表示采用完整的内存检测。然后,使用内存检测工具。
2024-11-12 16:25:49
383
原创 malloc和new的区别,这样说更明白
new和delete更适合在 C++ 中使用,因为它们支持对象初始化和析构操作,更符合 C++ 的面对对象的需求。malloc和free是 C 语言的函数,不支持构造和析构,适用于需要在 C++ 中直接操作内存的低级场景。最后我说一句,以前面试问到我我不会,现在我大概说清楚了。
2024-11-08 13:39:36
262
原创 Linux top指令查看进程线程,ps -T -p查看进程
另外,也可以用ps指令查看进程下的线程,输入指令:ps -T -p 37468。查看37468进程的情况 , 输入指令 top -p 37468。按"H",注意,是大写的H,就可以切换到线程查看模式,查看线程。表中信息:PID为进程号 SPID为线程号 CMD为线程名称。输入指令:killall thingsboard。可以杀死所有名字为thingsboard的进程。输入指令:kill -9 37468。可以杀死PID为37468的进程。知道进程信息后你也可以杀死进程。可以查看进程情况,如下图。
2024-11-08 11:01:23
842
原创 Linux指令,查看端口占用情况
同理,也可以查看指定端口,比如查看1883端口,输入命令:netstat -tuln |grep 1883。也可以查看指定端口状态,比如查看8080端口,输入命令:ss -tuln |grep 8080。另外,想查看8080端口的具体情况,可以输入命令:lsof - i :8080。可看到占用程序为thingsboard用户的java程序,进程ID为37468。第二种, 输入命令:netstat -tuln。第一种, 输入命令:ss -tuln。l表示仅显示监听状态的端口。n表示用数字格式显示端口号。
2024-11-08 10:01:54
707
原创 MySQL数据的增删改
这就需要修改表的结构,输入语句: ALTER table player MODIFY level INT default 1;然后,单独更新LiSI的经验为1:输入语句:UPDATE player level=1 where name='LiSi';然后,删除经验为100的玩家,输入语句:DELETE FROM player wherl level=100;然后,将所有玩家的金钱跟新为88,输入语句:UPDATE player money=88;然后查询表,输入:select * from player;
2024-11-08 02:18:49
302
原创 MySql创建和管理表的基本操作,详细解释SQL语句
然后查询game数据库下的表,看看play是不是真的删掉了,输入语句:show tables;然后查询表的结构,查看修改后的结果,输入语句:desc player;然后查询表的结构,查看修改后的结果,输入语句:desc player;然后查询表的结构,查看修改后的结果,输入语句:desc player;然后查询表的结构,查看修改后的结果,输入语句:desc player;然后,切换到game数据库,输入语句:use game;然后,查看表的结构,输入语句:DESC player;
2024-11-08 01:10:04
464
原创 C++滑动窗口,不含重复字符的最长子字符串
滑动窗口:使用两个指针来维护一个窗口范围,使得窗口内没有重复字符。哈希表记录:使用哈希表记录字符的最近索引,便于快速判断字符是否重复。时间复杂度:由于每个字符只会被窗口遍历一次,算法的时间复杂度为O(n)。
2024-11-07 17:05:07
209
原创 经典的区间合并问题
2 可以合:有交集,当前区间左边界小于或者等于前一个区间的有边界,可以合并,有边界更新为两个右边界的最大值。1 合并不了 的情况:无交集,当前左边界大于前一个区间的右边界,得新建一个区间,合并不了。输入: [5,10],[1, 51.[3, 4].[15,20]没理解代码的话,看看我粗浅的解释,希望对你有所启发。如下图,排序后,同一颜色的可以合并为同一区间。给定一个整数区间列表,输出合并后的区间。来实现这个区间合并问题。输出: [1,10],[15,20]合并区间时的情况,有两种,
2024-11-07 16:37:58
245
原创 C语言中的位运算解析:详解 ^、&、|、% 操作符
所以,经过以上几步,输出结果:1 2 3 1。分别使用了异或、按位与、按位或和取余操作。先看代码,以下代码的输出结果会是什么。输出结果会是:1 2 3 1。
2024-11-07 15:53:13
263
原创 C语言中,unsigned int类型被赋值为负数会怎么样
先看如下代码,在32位系统中,输出结果会是什么。所以,在C语言的编程中,应尽量避免将负数赋值给。,即负数会被转换为一个非常大的正数。,以免引入潜在的溢出错误或逻辑混乱。赋一个负数时,编译器会对该负数进行。输出结果:4294967295。,即负数被解释为一个大正数。类型只能表示非负整数。在C语言中,将负数赋值给。
2024-11-07 15:25:57
839
原创 C/C++宏定义的使用技巧和返回值
所以A(a, b, c, d)的返回结果是2,打印输出为2。使用了逗号表达式,最终返回的是最后一个赋值表达式的值。看如下代码,思考一下,它的输出结果是什么。程序的输出结果为:2。
2024-11-07 15:14:45
342
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人