- 博客(54)
- 收藏
- 关注
原创 HTTPS协议
一、介绍二、HTTP中间人攻击1、介绍2、下载示例三、相关概念1、密钥2、加密3、解密4、数据摘要(1)介绍(2)特点5、数字签名(1)介绍(2)实现步骤(3)示意图四、对称加密1、介绍2、特点3、缺点五、非对称加密1、介绍2、优点3、缺点六、CA证书1、介绍2、功能3、CA认证4、示意图七、HTTPS通信流程1、示意图2、涉及的三组密钥3、原因
2024-11-08 10:48:08 741
原创 HTTP协议
一、HTTP协议1、介绍2、主要特点二、URL1、介绍2、组成3、示例4、编码规则三、HTTP请求格式1、请求行2、请求头3、空行4、请求正文四、HTTP响应格式1、状态行2、响应头3、空行4、响应正文
2024-11-08 10:41:04 888 4
原创 网络编程套接字
一、源IP地址和目的IP地址二、端口号1、与进程pid的关系三、网络字节序1、字节序转换函数四、套接字socket,套接字编程五、socket编程接口1、socket,domain、type、protocol参数2、bind、listen、accept、connect六、sockaddr结构sockaddr、sockaddr_in、sockaddr_un,示意图七、地址转换函数inet_aton、inet_pton、inet_ntoa、inet_ntop八、示例1、客服端(client)2、服务端(serv
2024-10-24 17:01:29 897 3
原创 网络基础知识
一、计算机网络背景1、介绍2、早期3、计算机网络示意图二、网络发展1、局域网的出现2、广域网的构建3、网络协议的制定4、网络技术的革新三、网络协议1、概念2、OSI七层模型(1)概念(2)物理层(3)数据链路层(4)网络层(5)传输层(6)会话层(7)表示层(8)应用层3、TCP/IP五层(或四层)模型4、示意图四、网络传输基本流程1、介绍2、TCP/IP通信过程3、跨网段示意图五、数据包封装和分用1、介绍2、数据包封装3、数据包分用六、地址管理1、IP地址(1)介绍(2)类别(3)获取方式2、MAC地址
2024-10-24 16:37:20 688
原创 类型转换与RTTI
一、类型转换1、C语言2、C++3、注意二、static_cast1、介绍2、示例三、reinterpret_cast1、介绍2、示例代码3、运行结果四、const_cast1、介绍2、示例五、dynamic_cast1、介绍2、示例代码3、运行结果六、RTTI1、介绍2、typeid(1)介绍(2)示例代码3、decltype
2024-09-24 19:28:29 566 2
原创 IO相关流
一、C语言的输入与输出1、介绍2、输入输出缓冲区(1)介绍(2)示意图二、流1、介绍2、主要特点三、C++IO流1、介绍2、示意图四、iostream1、介绍2、基本概念3、注意五、类型转换1、operator bool(1)介绍(2)示例(3)示例代码12、构造函数3、C++类型转换六、文件IO流(fstream)1、介绍2、示例3、参数mode4、二进制方式读写(1)示例代码(2)运行结果(3)注意5、文本方式读写(1)示例代码(2)运行结果七、stringstream1、介绍2、主要特点3、注意
2024-09-24 19:24:49 691
原创 C++11(二)
一、新的类功能1、移动构造函数和移动赋值运算符重载(1)介绍(2)编译器默认生成条件2、类成员变量初始缺省值3、default和delete关键字4、override与final关键字二、可变参数模板1、介绍2、递归函数方式展开参数包,介绍、示例代码、实现原理、运行结果、注意事项3、emplace接口三、lambda表达式1、介绍2、语法3、参数说明4、捕获列表说明(1)值捕获(2)引用捕获(3)混合捕获(4)注意事项四、包装器1、介绍2、function类五、bind1、介绍2、基本语法六、相关文章
2024-09-09 17:25:20 1072 3
原创 C++11(一)
一、简介二、统一的列表初始化三、initializer_list四、声明1、auto2、decltype五、左值引用与右值引用1、左值与左值引用2、示例代码3、右值与右值引用4、示例代码5、move(1)函数(2)作用6、总结六、右值引用和移动语义1、左值引用的短板2、移动语义3、示例代码4、示意图七、万能引用与完美转发1、万能引用(1)基本概念(2)用途(3)万能引用与右值引用的区别(4)参数转发属性变化2、完美转发3、示例代码4、运行结果八、后续文章
2024-09-09 17:15:53 1160 3
原创 特殊类设计与单例模式
一、不能被拷贝的类1、介绍2、示例代码二、只能在堆上创建对象的类1、介绍2、示例代码三、只能在栈上创建对象的类1、介绍2、示例代码四、单例模式1、介绍2、设计模式3、懒汉式(1)介绍(2)示例代码1(3)运行结果(4)示例代码2(5)说明4、饿汉式(1)介绍(2)示例代码
2024-09-08 21:22:12 885 1
原创 线程相关内容
一、介绍二、thread库1、构造函数2、join函数3、detach4、joinable5、get_id函数三、mutex的种类1、mutex,lock、unlock、try_lock2、recursive_mutex3、timed_mutex四、lock_guard五、unique_lock六、condition_variable,wait3、等待一段时间4、通知七、this_thread八、应用1、题目2、解析3、代码九、atomic十、相关概念1、内存屏障2、并发3、并行十一、无锁编程十二、相关文章
2024-09-08 21:17:57 1050
原创 异常与使用
一、C语言传统的错误处理机制二、异常1、概念2、关键字3、示例三、异常的使用1、异常的抛出和匹配原则2、在函数调用链中异常栈展开匹配原则3、栈展开示意图4、示例代码5、运行结果四、异常的重新抛出1、作用2、示例代码3、运行结果五、异常安全六、异常规范1、概念2、示例代码3、运行结果七、异常体系1、C++标准库(1)概念(2)示意图2、自定义(1)作用(2)示意图八、异常的优缺点1、优点2、缺点
2024-08-31 18:03:53 864 4
原创 智能指针(RAII)
一、内存泄漏1、介绍2、原因3、泄漏的内存类型分类二、RAII1、介绍2、基本思想3、优点4、实现方式三、unique_ptr1、介绍2、主要特性3、注意事项4、unique_ptr类5、示例代码6、运行结果7、简单实现四、shared_ptr1、介绍2、主要特点3、注意事项4、shared_ptr类5、简单实现五、weak_ptr1、介绍2、weak_ptr类3、shared_ptr的循环引用问题4、循环引用示例代码
2024-08-31 17:59:00 888
原创 位图、布隆过滤器和哈希切割
一、位图1、概念2、示意图二、位图的简单实现1、位图类(1)代码(2)说明2、设置函数(1)代码(2)说明三、应用1、题目一(1)题目(2)解法2、题目二(1)题目(2)解法(3)示意图3、题目三(1)题目(2)解法(3)示意图四、布隆过滤器1、概念2、示意图五、布隆过滤器相关操作1、插入数据(1)操作(2)示意图2、查找(1)操作(2)存在示意图(3)不存在示意图(4)误判示意图3、删除(1)操作六、布隆过滤器的优缺点1、优点2、缺点七、哈希切割1、概念2、操作3、示意图
2024-08-15 10:23:06 686 2
原创 哈希以及闭散列和开散列
一、哈希1、概念2、哈希冲突二、哈希函数1、设计原则2、常见的哈希函数(1)直接定址法(2)除留余数法(3)平方取中法(4)折叠法(5)随机数法(6)数学分析法3、注意三、闭散列1、概念2、操作3、线性探测(1)操作(2)优点与缺点(3)插入元素操作示意图4、二次探测(1)操作(2)优点与缺点5、示例代码6、扩容四、开散列1、操作2、插入元素操作示意图3、扩容
2024-08-15 10:18:59 891 3
原创 线程与多线程(二)
一、线程互斥1、相关概念二、互斥锁1、介绍2、使用场景3、初始化4、销毁5、加锁6、解锁7、示例代码三、安全1、线程安全2、重入3、常见的线程不安全的情况四、死锁1、概念2、产生的必要条件3、避免方法五、条件变量1、背景概念2、初始化与销毁3、等待。互斥锁的作用4、唤醒5、示例代码6、运行结果六、生产者消费者模型3、优点4、环形队列(1)示意图(2)说明七、POSIX信号量1、概念2、初始化3、销毁4、等待5、发布八、单例模式1、概念2、实现方式(1)饿汉模式(2)懒汉模式九、其他常见的锁
2024-08-10 09:08:11 2016 5
原创 线程与多线程(一)
一、线程1、概念2、示意图3、虚拟地址转换到物理地址4、与进程相比的优点5、与进程相比的缺点6、与进程的关系(1)线程独有(2)共享(3)示意图二、POSIX线程库三、创建线程1、函数2、概念四、pthread_self1、函数2、概念3、pthread_t4、示意图5、说明五、线程终止1、方式2、pthread_exit(1)函数(2)概念3、pthread_cancel(1)函数(2)概念六、线程等待1、函数2、概念3、意义七、线程库八、示例代码1、代码2、运行结果九、分离线程1、函数2、概念3、代码
2024-08-10 09:02:33 1030 6
原创 Linux操作系统之进程信号
一、信号1、概念2、系统定义的信号列表3、常见的信号处理方式二、产生信号的方式1、终端按键(1)组合键2、调用系统函数(1)kill命令(2)kill函数(3)raise函数(4)abort3、软件条件(1)alarm4、硬件异常三、阻塞信号1、概念2、信号在内核中的示意图四、信号集、sigset_t2、信号集操作函数3、sigprocmask函数,参数how的有效值4、sigpending5、示例代码五、信号捕捉1、捕捉信号2、signal函数3、sigaction函数4、可重入函数六、SIGCHLD信号
2024-08-05 10:23:17 1169 5
原创 红黑树详解
一、概念二、性质三、节点结构1、代码2、实现原理四、变色1、情况2、处理操作3、示意图五、单旋1、情况2、处理操作3、示意图六、双旋1、情况2、处理操作3、示意图七、插入节点1、操作2、代码八、检测1、代码2、实现原理九、红黑树与AVL树的比较
2024-08-01 11:25:19 1068 4
原创 AVL树详解
一、概念二、图示三、结构定义1、介绍四、旋转1、概念与种类2、原则与目的五、右单旋1、操作2、示意图3、代码4、注意六、左单旋1、操作2、示意图3、代码七、左右双旋1、操作2、示意图3、代码八、右左双旋1、操作2、示意图3、代码九、插入节点1、操作2、代码3、平衡因子处理十、检测1、计算子树高度(1)代码(2)实现原理2、检测函数(1)代码(2)实现原理
2024-07-29 10:41:02 1124 7
原创 进程间通信
一、进程间通信的目的二、管道1、概念2、示意图三、匿名管道1、pipe函数2、示例代码3、运行结果4、单进程使用匿名管道示意图5、父子进程使用匿名管道示意图6、读写规则7、特点四、命名管道1、概念2、mkfifo函数3、打开规则五、system V共享内存1、概念2、共享内存示意图3、相关函数(1)ftok函数(2)shmget函数(3)shmat和shmdt函数(4)shmctl函数。cmd的有效值4、命令行操作共享内存段六、进程互斥
2024-07-25 09:04:11 954 10
原创 操作系统之基础IO
一、信号1、概念2、系统定义的信号列表3、常见的信号处理方式二、产生信号的方式1、终端按键2、调用系统函数(1)kill命令(2)kill函数(3)raise函数(4)abort函数3、软件条件(1)alarm函数(2)描述4、硬件异常三、阻塞信号1、概念2、信号在内核中的示意图3、解释四、信号集、sigset_t2、信号集操作函数3、sigprocmask函数4、sigpending函数5、示例代码五、信号捕捉1、捕捉信号2、signal函数3、sigaction函数4、可重入函数六、SIGCHLD信号
2024-07-22 09:11:36 858 7
原创 操作系统之进程控制
一、进程创建1、进程2、fork函数创建进程执行到内核中的fork代码时,内核做的操作。返回值3、常规用法4、代码5、执行结果二、进程终止1、进程的退出结果2、常见退出方法(1)正常终止(2)异常退出3、exit和_exit函数。区别4、代码5、运行结果三、进程等待(1)wait和waitpid(2)参数和返回值【1】pid【2】options【3】返回值(3)status【1】概念【2】分布【3】两个宏。使用wait和waitpid函数的原因四、进程程序替换,替换原理,exec系列函数
2024-07-10 10:58:58 1177 6
原创 set与map
一、序列式容器与关联式容器二、pair1、键值对2、作用3、构造函数4、make_pair(1)构造函数(2)作用5、代码6、运行结果三、set1、概念2、代码3、运行结果4、说明四、multiset1、与set的关系2、代码3、运行结果五、map1、概念2、代码3、运行结果六、multimap1、与map的关系2、代码3、运行结果
2023-11-29 21:04:00 1391 14
原创 二叉搜索树
一、概念二、K模型与KV模型三、整体框架1、代码2、实现原理四、查找操作1、操作2、代码3、实现原理五、插入操作1、操作2、代码3、实现原理六、中序遍历1、代码2、实现原理七、删除操作1、操作2、代码3、实现原理图4、注意八、性能分析九、整体代码
2023-11-27 15:45:34 937 9
原创 C++中的多态
一、概念二、虚函数1、概念2、重写(覆盖)3、重载、覆盖(重写)、隐藏(重定义)的对比(1)重载(2)重写(3)隐藏三、多态的定义与使用1、多态的构成条件2、代码3、运行结果四、虚函数重写的两个例外1、协变2、析构函数的重写五、override和final六、抽象类1、概念2、接口继承和实现继承3、代码4、运行结果5、错误代码6、编译器报错七、虚函数表1、代码2、运行结果与调试窗口查看3、说明6、派生类虚表的生成7、虚函数与虚表八、动态绑定与静态绑定
2023-11-05 16:58:41 323 17
原创 继承、菱形继承与虚拟继承
一、继承概念二、定义格式三、继承方式四、派生类继承基类成员访问方式的变化五、基类和派生类对象赋值转换1、概念2、示意图3、示例代码4、特点六、继承中的作用域1、概念2、示例代码3、运行结果七、派生类的默认成员函数1、调用方法2、示例代码3、运行结果八、友元关系不能继承1、代码2、注意3、运行结果4、错误代码与编译器报错九、继承类别1、单继承(1)概念(2)示意图2、多继承(1)概念(2)示意图3、菱形继承(1)概念(2)示意图(3)缺点(4)示例代码(5)调试结果(6)不显式指定时编译器报的错误4、虚拟继承
2023-11-03 19:39:56 272 14
原创 冯诺依曼体系结构、进程、环境变量
一、冯诺依曼体系结构1、结构图2、示例3、CPU与数据二、进程1、概念2、查看进程(1)通过/proc系统文件夹(2)通过top和ps用户级工具(3)通过系统调用3、通过系统调用创建进程(1)fork函数(2)功能4、进程状态(1)概念5、Z(zombie)僵尸进程(1)僵死状态(Zombies)(3)显示进程头部部分代表的意思(4)危害6、孤儿进程(1)概念三、进程优先级1、概念2、查看系统进程3、PRI和NI4、更改已存在进程的nice值四、关于进程的其他概念五、环境变量1、概念2、常见环境变量3、与环
2023-10-29 23:19:02 238 17
原创 list的模拟实现
一、节点类1、代码2、实现原理3、注意二、迭代器类1、基本框架(1)代码(2)实现原理2、*运算符重载(1)代码(2)作用(3)注意3、->运算符重载4、自增与自减运算符重载5、判断运算符重载三、list类1、基本框架(1)代码(2)实现原理(3)注意2、insert函数3、erase函数4、迭代器函数5、clear函数和析构函数6、swap函数、构造函数、拷贝构造函数和赋值运算符重载(1)代码(2)实现原理四、模拟实现list的代码
2023-10-23 23:38:26 385 22
原创 vector的模拟实现
一、整体框架1、代码2、实现原理3、注意二、迭代器操作函数1、代码2、实现原理三、容量函数1、代码2、实现原理四、reserve函数1、代码2、实现原理3、注意五、resize函数1、代码2、实现原理3、注意六、insert函数1、代码2、实现原理3、注意七、erase函数1、代码2、实现原理八、构造函数1、代码2、实现原理3、注意九、swap函数和赋值运算符重载函数1、代码2、实现原理十、拷贝构造函数1、代码2、实现原理3、注意十一、析构函数1、代码2、实现原理十二、模拟实现vector与测试的代码
2023-10-22 00:17:02 278 18
原创 string的模拟实现
一、整体框架1、代码2、实现原理3、注意二、构造函数1、代码2、实现原理3、注意三、析构函数1、代码2、实现原理四、swap和拷贝构造函数1、代码2、实现原理五、赋值运算符重载函数1、代码2、实现原理六、resize函数七、reserve函数八、c_str函数九、[]运算符十、insert函数十一、erase函数十二、push_back函数十三、append函数十四、关系运算符十五、find函数十六、流输入与流提取运算符重载十七、模拟实现string与测试的代码
2023-10-20 10:03:38 235 16
原创 vim、gcc/g++、make/Makefile、yum、gdb
一、Linux编辑器vim1、简介2、三种模式的概念3、三种模式的切换4、正常/命令模式命令集5、vim末行模式命令集二、Linux系统下的C/C++编译器gcc/g++2、编译器编译代码的过程5、预处理6、编译7、汇编8、链接9、函数库(2)静态库(3)动态库三、Linux项目自动化构建工具make/Makefile3、依赖关系4、依赖方法5、伪目标6、原理7、项目清理四、Linux 软件包管理器yum1、软件包2、查看软件包3、安装软件包4、卸载软件五、Linux调试器gdb1、说明2使用格式3调试命令
2023-10-15 11:29:34 974 25
原创 shell运行原理、权限
一、shell运行原理1、简介2、shell的简单定义3、外壳程序的意义4、简易示例图二、Linux下的两种用户三、whoami命令四、su命令五、Linux权限管理1、文件归属2、文件权限图3、文件类型4、文件名后缀5、文件权限(2)rwx-代表的意义6、文件的归属六、chmod指令(1)用户表示符+/-=权限字符(2)属性符号七、chown指令与chgrp指令1、chown指令2、chgrp指令八、umask指令九、粘滞位
2023-10-10 09:04:47 747 18
原创 Linux基本指令二
一、more指令1、语法2、功能3、常用操作二、less指令1、语法2、功能3、常用选项4、常用操作三、head指令1、语法2、功能3、常用选项4、示例四、tail指令1、语法2、功能3、常用选项4、示例五、date指令1、语法2、功能3、常用的标记4、设置时间5、时间戳6、示例六、cal指令1、语法2、功能3、常用选项4、示例七、find指令1八、grep指令4、示例九、zip/unzip指令1、语法2、功能3、常用选项4、示例十、tar指令十一、uname指十二、热键十三、关机1、语法2、常用选项
2023-10-08 10:42:37 934 13
原创 Linux基本指令一
一、ls指令1、语法2、功能3、常用选项4、示例二、pwd指令1、功能2、示例三、cd指令1、语法2、功能3、常用操作4、示例四、 touch指令1、语法2、功能3、示例五、mkdir指令六、rmdir指令1、语法2、适用对象3、功能4、常用选项5、示例七、rm指令1、语法2、适用对象3、功能4、常用选项5、示例八、man指令1、语法2、功能3、常用选项4、man手册的8章5、Linux对man手册8章的介绍九、cp指令十、cat指令十一、mv指令1、语法2、功能3、常用选项4、示例
2023-10-08 10:38:09 789 8
原创 string容器的常用操作
string容器、string构造函数、赋值运算符、[]运算符、容量操作、find、rfind、substr、append、push_back、+=。string和vector都不喜欢用iterator,因为[]更好用,而list、map和set等等只能用迭代器进行访问。iterator是所有容器通用的访问方式,即所有容器的用法都是类似的。iterator的用法像指针一样。在string尾部追加字符时,s.push_back( c ) / s.append(1, c) / s += 'c’三种实现差不多。
2023-09-07 07:52:14 1333 11
原创 模板和STL简介
泛型编程的概念。函数模板的概念与使用。类模板的概念与使用。STL的概念、简介与其六大组件。错误的代码示例与编译器报错。使用函数重载虽然可以实现一个通用的交换函数,但是使用这种方法有几个不好的地方。重载的函数只有形参的类型不同,其他的都一样,这样的代码复用率比较低,当要进行操作的对象的类型不同时,就需要用户自己添加对应类型的函数。代码的可维护性比较低,一个函数出错可能所有的重载函数均会出错。
2023-09-04 12:34:06 1059 10
原创 内存管理方式
C/C++的内存管理方式,malloc/calloc/realloc/free、new/delete及其实现原理和new[]/delete[]。operator new与operator delete。内存泄漏。栈/堆栈:存储非静态的局部变量、函数参数、返回值等等,栈是向下增长的。内存映射段:高效的I/O映射方式,用于装载一个共享的动态内存库。用户可以使用系统接口创建共享内存,做进程间通信。堆:用于程序运行时进行动态内存分配,堆是向上增长的。数据段:存储全局数据和静态数据。代码段:存储可执行的代码、只读常量
2023-09-03 12:18:24 1979 12
原创 类与对象(下)
一、初始化列表1、构造函数与初始化在对象调用构造函数之后,对象中的成员变量虽然已经有了一个初始值2、使用初始化列表的形式在构造函数后面,以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个“成员变量”后面跟一个放在括号中的初始值或表达式。类中包含以下成员变量时,必须将其放在初始化列表位置进行初始化:引用成员变量。const成员变量。自定义类型成员变量。explicit关键字、static成员、友元1、友元函数、友元类、内部类1、作用2、代码3、讲解4、运行结果与编译器报的错误友元类(1)概念(2)特性(
2023-08-26 10:47:09 626 11
原创 类与对象(中)
本文讲解的是类与对象的关系,主要讲解六个默认成员函数,构造函数、析构函数、拷贝构造函数、赋值运算符重载等等,讲解它们的概念、作用与如何使用等等,文章讲解详细、清晰且附有代码与图片。内置类型:语言提供的数据类型,如:int、char、double等等。自定义类型:我们使用class、struct、union等等,自己定义的类型。
2023-08-23 19:05:44 290 9
原创 类与对象(上)
/类体:由成员函数和成员变量组成//记得加上分号class为定义类的关键字,ClassName为要定义的类的名字,{}中的内容为类的主体,在类定义结束时,}后面的分号不能省略。类体中的内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。声明和定义全部放在类体中,编译器可能会将其当成内联函数处理。int _age;
2023-08-18 21:32:50 933 11
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人