- 博客(96)
- 收藏
- 关注
原创 网络:网络层(IP协议)和数据链路层
本文介绍了网络层中的IP协议及其关键内容。首先解析了IP协议报头格式,包括版本号、头部长度、服务类型等字段功能。其次详细阐述了网段划分方法,包括IP地址分类(A-E类)和CIDR无类别路由方案,通过子网掩码实现更灵活的网络号与主机号划分。文中还列举了特殊IP地址用途(如环回测试地址127.0.0.1)和IP地址限制问题,提出动态分配、NAT地址转换和IPv6等解决方案。最后区分了私有IP与公网IP的概念,说明私有IP范围(10.、172.16-31.、192.168.*)和NAT技术在多层路由器中的地址转换
2025-10-27 18:43:05
935
原创 二叉树的前中后序遍历(迭代)
本文介绍了二叉树前序、中序和后序遍历的迭代实现方法。前序遍历最简单,采用栈存储右子树,每次访问当前节点后转向左子树。中序遍历需要先压入左子树,访问完当前节点后转向右子树。后序遍历有两种方法:第一种类似前序遍历但结果需逆序;第二种通过标记区分左右子树的返回状态。三种遍历方法都通过栈结构实现非递归操作,时间复杂度均为O(n),空间复杂度为O(h),其中h为树的高度。
2025-10-19 19:54:45
366
原创 网络:传输层协议UDP和TCP
传输层协议UDP和TCP的核心特点与区别: UDP是无连接、不可靠的协议,面向数据报传输,不保证数据顺序和完整性,适用于实时性要求高的场景(如DNS、流媒体)。其报文简单,最大传输64K数据,无发送缓冲区。 TCP是面向连接、可靠的协议,通过确认应答、重传等机制确保数据传输,支持流量控制和拥塞控制。其报文结构复杂,含序号、确认号等字段,适用于文件传输、网页访问等场景。 常见协议端口号:HTTP(80)、HTTPS(443)、SSH(22)、DNS(53)。UDP适合快速响应,TCP适合可靠传输。
2025-10-19 19:51:50
836
原创 网络:相比于HTTP,HTTPS协议到底安全在哪?
HTTPS相比HTTP通过加密传输保障数据安全,其核心在于非对称加密+对称加密+CA证书认证机制。对称加密效率高但密钥传输不安全,非对称加密安全但效率低。HTTPS采用混合方案:先用非对称加密安全传输对称密钥,再通过对称密钥加密通信内容。CA证书机构通过数字签名验证服务器公钥真实性,防止中间人攻击。数字签名通过hash算法和CA私钥加密确保证书完整性,最终实现安全可靠的加密通信。
2025-08-31 21:21:41
1170
原创 网络:基础概念
本文介绍了计算机网络的基础概念,重点讲解了网络协议分层模型和网络传输流程。文章首先从局域网和广域网的区分入手,阐述了计算机网络的产生背景和发展历程。随后详细解析了网络协议的本质,说明了OSI七层模型和TCP/IP四层模型的区别与联系,并介绍了各层的核心功能。文中还分析了局域网传输的基本流程,包括MAC地址的作用和数据封装过程,最后简要介绍了IP地址的概念和跨网络传输的原理。文章通过层次化的方式,帮助读者理解计算机网络的基本架构和数据传输机制。
2025-07-26 22:37:38
828
原创 网络:应用层
本文探讨了应用层网络协议的设计与实现,重点介绍了自定义协议和HTTP协议。文章首先解释了TCP/UDP的全双工特性,并以网络计算器为例展示了结构化数据的序列化/反序列化处理,推荐使用Jsoncpp库实现。随后详细解析了HTTP协议,包括URL编码、请求/响应格式及常用方法(GET/POST等)。文中还提供了守护进程化的C++实现代码。通过实际案例和代码示例,帮助开发者理解应用层协议的核心概念和实现方式。
2025-07-26 22:36:33
891
原创 Linux:线程同步与互斥
线程互斥,互斥量,条件变量,生产消费者模型,POSIX信号量,线程池设计,日志与策略模式,单例模式,线程安全,重入问题,死锁
2025-06-04 00:11:37
988
原创 Linux:进程信号
掌握Linux信号的基本概念。掌握信号产⽣的⼀般⽅式。理解信号递达和阻塞的概念,原理。掌握信号捕捉的⼀般⽅式。了解中断过程,理解中断的意义掌握操作系统运⾏,系统调⽤原理,理解缺⻚异常或其他软件异常的基本原理重新了解可重⼊函数的概念。了解竞态条件的情景和处理⽅式。了解SIGCHLD信号, 重新编写信号处理函数的⼀般处理机制
2025-03-22 21:52:41
1161
原创 Linux:动静态库
库是写好的现有的,成熟的可以复用的代码。现实中每个程序都需要依赖很多基础的底层库。世界上有很多大佬为了实现某一个功能,写了很多很NB的代码。他们把代码封装成一个库,这样我们不必写出像他们一样厉害的代码,只需要使用它们分享的库,也能使用对应的功能了。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。静态库 .a[Linux/macOS]、.lib[windows]动态库 .so[Linux]、.dll[windows]、.dylib[macOS]
2025-02-13 17:32:55
1054
原创 Linux:EXT2文件系统
磁盘结构,分区,CHS寻址,LBA寻址,inode,Super_Block,GDT,块位图,inode位图,inode节点表,Data Block,路径解析,路径缓存,挂载分区,软硬链接,ACM时间,理解一切皆文件。
2025-01-20 22:09:05
1037
原创 MySQL:索引
认识磁盘、磁盘的和操作系统是如何进行IO的、数据库与操作系统的IO、索引的原理及其底层数据结构B+树、如何创建索引、复合索引。
2025-01-02 17:54:50
1219
原创 MySQL:复合查询
介绍复合查询方法包括:多表查询、自连接、子查询(单行、多行、多列等)、from 子句子查询、合并查询(union、union all)、内外连接等
2024-12-24 20:39:41
1257
原创 MySQL:内置函数
MySQL 中常用的日期、字符串、数学及其他函数的基本用法,包括日期操作(如 current_date() 和 date_add())、字符串操作(如 concat() 和 replace())、数学函数(如 abs() 和 mod())以及加密函数(如 SHA2() 和 md5())。
2024-12-22 19:53:09
825
原创 MySQL:基本查询
全面阐述 MySQL 中 CRUD 操作。涵盖创建数据的多种插入方式,检索数据的各类查询语法,更新数据的列值变更,删除数据的不同方法,还介绍聚合函数、group by 子句、having 用法及 truncate 与 delete 区别等重要知识。
2024-12-21 17:33:32
1205
2
原创 MySQL:数据类型
介绍 MySQL 数据类型,包括数值(如 INT、FLOAT 等)、文本二进制(CHAR、VARCHAR 等)、时间日期、ENUM 和 SET 类型,阐述各类型特点、范围、存储方式及应用场景,还有相关注意事项与案例。
2024-12-12 18:15:33
1109
原创 Linux:文件与IO
C 语言文件操作,如多种函数及打开模式;系统调用接口,如 open、close、write、read 函数及其参数、返回值;还介绍文件描述符原理,进程与文件联系,以及磁盘与内存文件关系,重定向原理,语言缓冲区,内核缓冲区,阐释基本文件操作原理与机制。
2024-12-07 18:09:26
1130
原创 Linux:进程(二)
进程退出的场景、退出码以及 exit 与_exit 函数。进程等待的原因和方法,status 参数、wait 和 waitpid 函数,非阻塞轮询。进程替换的概念、函数,如 execl、execle、execv。
2024-11-28 23:52:54
777
原创 Linux:进程(一)
著名的冯诺依曼结构,什么是操作系统,为什么需要操作系统,进程是什么,进程如何创建,进程的状态,什么是僵尸进程和孤儿进程,进程优先级,O(1)调度算法。
2024-11-22 15:07:03
1018
原创 Linux:版本控制器git和调试工具cgdb
为了能够更⽅便我们管理这些不同版本的⽂件,便有了版本控制器。所谓的版本控制器,就是能让你了解到⼀个⽂件的历史,以及它的发展过程的系统。通俗的讲就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统,同时也⽅便多⼈协同作业。 ⽬前最主流的版本控制器就是 Git 。
2024-11-16 16:02:03
1084
原创 C++进阶:异常
异常处理机制允许程序中独⽴开发的部分能够在运⾏时就出现的问题进⾏通信并做出相应的处理, 异常使得我们能够将问题的检测与解决问题的过程分开,程序的⼀部分负责检测问题的出现,然后解决问题的任务传递给程序的另⼀部分,检测环节⽆须知道问题的处理模块的所有细节。
2024-11-02 21:56:21
882
原创 C++进阶:C++11的新特性
2011年,C++标准委员会发布了C++11标准,这是C++的一次巨大飞跃,引入了许多重要的新特性,如智能指针、lambda表达式、并发编程支持等。这一版本的发布对C++社区产生了深远的影响,使得C++在现代软件开发中更具竞争力。
2024-11-01 22:19:35
1130
原创 Linux:编辑器Vim和Makefile
vim主要的三种模式分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)
2024-10-27 14:12:29
1622
原创 Linux:权限
目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd进入, 即使目录仍然有-r读权限。(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
2024-10-26 22:08:10
1057
原创 C++进阶:哈希
哈希(hash)⼜称散列,是⼀种组织数据的⽅式。从译名来看,有散乱排列的意思。本质就是通过哈希函数把关键字Key跟存储位置建⽴⼀个映射关系,查找时通过这个哈希函数计算出Key存储的位置,进⾏快速查找。
2024-10-21 14:47:30
1024
1
原创 C++进阶:实现红黑树
红⿊树是⼀棵⼆叉搜索树,他的每个结点增加⼀个存储位来表示结点的颜⾊,可以是红⾊或者⿊⾊。 通过对任何⼀条从根到叶⼦的路径上各个结点的颜⾊进⾏约束,红⿊树确保没有⼀条路径会⽐其他路径⻓出2倍,因⽽是接近平衡的。
2024-10-11 23:04:22
879
1
原创 Linux:基本指令
XShell 下的复制粘贴复制: ctrl + insert (有些同学的 insert 需要配合 fn 来按)粘贴: shift + insertctrl + c / ctrl + v 是不行的
2024-10-03 22:54:01
941
17
原创 C++进阶:AVL树保持平衡的秘诀
AVL树整体结点数量和分布和完全⼆叉树类似,⾼度可以控制在log(n),那么增删查改的效率也可 以控制在O(log(n)),相⽐⼆叉搜索树有了本质的提升。
2024-09-29 11:40:22
1157
8
原创 C++进阶:set和map
set是key搜索场景的结构, map是key/value搜索场景的结构。它们的底层都是红黑树,红⿊树是⼀颗平衡⼆叉搜索树。
2024-09-27 18:27:31
796
17
原创 C++进阶:二叉搜索树
另外,⼆分查找也可以实现O(logN) 级别的查找效率,但是⼆分查找有两⼤缺陷:1. 需要存储在⽀持下标随机访问的结构中,并且有序。2. 插⼊和删除数据效率很低,因为存储在下标随机访问的结构中,插⼊和删除数据⼀般需要挪动数 据。 这⾥也就体现出了平衡⼆叉搜索树的价值。
2024-09-16 20:27:23
1306
16
原创 C++进阶:多态
• 对不满⾜多态条件(指针或者引⽤+调⽤虚函数)的函数调⽤是在编译时绑定,也就是编译时确定调⽤函数的地址,叫做静态绑定。• 满⾜多态条件的函数调⽤是在运⾏时绑定,也就是在运⾏时到指向对象的虚函数表中找到调⽤函数的地址,也就做动态绑定。
2024-09-14 13:22:32
979
16
原创 C++进阶:继承
继承(inheritance)机制是⾯向对象程序设计使代码可以复⽤的最重要的⼿段,它允许我们在保持原有类特性的基础上进⾏扩展,增加⽅法(成员函数)和属性(成员变量),这样产⽣新的类,称派⽣类。
2024-09-12 11:34:10
1180
16
原创 C++初阶:stack&queue&deque
但是,deque有一个致命缺陷:不适合遍历,因为在遍历时,deque的迭代器要频繁的去检测其是否移动到某段小空间(缓冲区)的边界,导致效率低下,而序列式场景中,可能需要经常遍历,因此在实际中,需要线性结构时,大多数情况下优先考虑vector和list,deque的应用并不多,而目前能看到的一个应用就是,STL用其作为stack和queue的底层数据结构。
2024-09-07 17:13:24
758
14
原创 C++初阶:list
(1)这里的list迭代器的实现不再是简单的原生指针,而是对原生指针进行了一层封装,使它更符合迭代器的行为(2)这里多加两个模板参数,主要是 * -> 两个操作符重载访问Node里面的内容。如果调的是const_iterator,那么返回的就是const指针(const修饰指针指向的内容不可修改)或引用如果调用普通的iterator,返回普通指针或引用。(3)这样通过模板编译器其实还是会生成两个类,减少了重复的代码(4)list的迭代器不是随机迭代器,而是双向迭代器。
2024-08-08 22:04:04
704
24
基于C语言开发的《贪吃蛇双人版》小游戏
2024-04-28
基于C语言开发的贪吃蛇小游戏
2024-04-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅