- 博客(94)
- 收藏
- 关注
原创 网络协议分析
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP的基本特点如下。(1)面向连接。双方必须先建立连接才能进行数据的读写,双方都必须为该连接分配必要的内核资源,以管理连接的状态和连接上的传输。TCP连接是全双工的,双方数据传输可以通过一个连接进行,完成数据交换后,双方必须断开连接,以释放系统资源。(2)可靠传输。• TCP采用发送应答机制,TCP发送的每个报文段都必须得到接收方的应答才认为这个TCP报文段传输成功。
2025-01-06 22:33:12
792
原创 C++11(第一篇)【C/C++复习版】
左值是一个数据的表达式(如变量名或解引用的指针),我们可以获取它的地址,一般可以对它赋值,只有左值可以出现在赋值符号的左边,右值不行。左值引用就是对左值的引用,给左值取别名,左值引用的符号是&。左值引用的使用价值:减少拷贝1、做参数 2、做返回值但左值引用一直没有解决的问题是局部变量无法通过左值引用返回。右值不能取地址,一般是在赋值符号右边,但不能出现在赋值符号左边。对右值取别名就是右值引用,右值引用的符号是&&。内置类型的右值叫纯右值,自定义类型的右值叫将亡值下面两个函数构成重载吗?
2024-04-25 11:10:30
1153
原创 环境变量(进程第3篇)【Linux复习篇】
环境变量是系统提供的多组name = value的形式的变量,不同的环境变量有不同的用户,通常具有全局属性。main函数也是函数,是可以被传入参数的。argc表示参数个数,argv是参数数组,保存以空格分隔的字符串参数。当我们在命令行中输入“./mycmd -a -b”时,实际会给argc传入以空格分隔的字符串个数,再给argv传入以空格分隔的字符串。以“./mycmd -a -b”为例,argc=3 ,argv[0] = "./mycmd",argv[1] = "-a",argv[2] = "-b"
2024-04-24 18:32:10
469
原创 进程状态和优先级(进程第2篇)【Linux复习篇】
正在调度的队列的时间片都跑完后,就跑另一个队列里的进程,两个队列交替。怎么高效地判断每个子队列是否为空?利用位图,用比特位的0/1表示子队列是否为空,这样就可以用近O(1)的时间复杂度来进行进程调度,这种调度算法就叫Linux内核2.6的O(1)调度算法。并行:多个进程在多个CPU下分别同时进行运行(不如说两个单核CPU会有两个运行队列,意味着在同一时刻一定会有两个进程在同时运行,这就是并行)并发:多个进程在一个CPU上采用进程切换的方式,在一段时间内,让多个进程得以推进,称为并发。
2024-04-24 15:30:56
923
原创 进程概念(进程第1篇)【Linux复习篇】
操作系统是一款进行管理软件和硬件的的软件。为什么要有OS:通过管理好底层软硬件资源,为用户提供一个良好的执行环境。系统为了保证自己的数据安全,所有访问OS的行为,都只能通过系统调用来完成,系统调用就是操作系统给用户提供的操作自己的函数。硬件->驱动程序->操作系统->系统调用接口->用户操作接口(如C语言的printf)->用户父子进程代码和数据共享,他们还具有独立性吗?代码是只读的,父子进程都不能修改。
2024-04-23 20:32:59
982
原创 多态【C/C++复习版】
重写(覆盖)是指在派生类中有一个跟基类返回值,函数名,形参列表相同(缺省参数除外)的虚函数。重写时,只是重写函数体的部分,函数头用的是父类的,也就是说,如果有的话,缺省参数也是用的父类的。派生类重写时,可以不加virtual。虚函数返回值不同时,必须满足协变。协变的返回值可以不同,但协变的返回值必须是父子关系(不一定是当前的父子类,可以是任意别的父子类)的指针或引用(同时是指针或同时是引用)。
2024-04-11 23:59:59
787
原创 继承【C/C++复习版】
当多个类之间有许多共同的方法或属性时,可以将这些方法和属性提取出来作为一个父类,让子类通过继承父类来进行代码的复用,同时,子类也可以在父类的基础上做一些扩展。class 派生类名:继承方式(public/protected/private) 基类名public:int _n;在继承体系中基类和派生类的作用域是独立的,如果在基类和派生类中出现了同名成员,子类将屏蔽父类同名成员,直接访问自己的,这就叫隐藏。如果是成员函数,只要。
2024-04-11 16:08:18
1088
原创 MySQL基本查询【mysql数据库】
表的增删查改:CURDCreate(创建) Retrieve(读取) Update(更新) Delete(删除)
2024-04-01 08:20:58
936
原创 Https【Linux网络编程】
客户端发起第一次请求时,服务端要将自己的CA证书(包括CA机构的认证签名,服务端的公钥、域名等信息)响应给客户端。客户端收到证书后,用其内置的很多权威CA机构的公钥来验证签名(用公钥对数据摘要解密,再与计算根据明文计算出来的数据摘要进行比对),比对成功,则证明证书是可信的,也就是说证书上的服务端的公钥是可信的,由此就可以防范中间人攻击。之后客户端就可以用服务端的公钥来加密自己的对称密钥R,发送给服务端后,双方就可以通过对称密钥来进行通信。
2024-03-30 11:10:29
1299
原创 HTTP协议【Linux网络编程】
1)反爬虫,User-Agent是HTTP协议头中的一个字段,用于标识发起HTTP请求的用户代理(User-Agent)信息,通常包括浏览器类型、操作系统、设备类型等信息。登录后,服务器响应报头里的set-Cookie会保存登录信息(账号密码等),浏览器会将set-Cookie保存到Cookie文件中,之后的每次请求就会自动携带set-Cookie。http协议默认是无状态的,每次请求都是独立的,那当我们登录b站后,关掉浏览器,再打开b站,就不需要我登录了,这是怎么做到的?每组属性之间使用\n分隔;
2024-03-24 15:39:35
929
原创 表的约束【mysql数据库】
表中一定要有各种约束,通过约束来保证未来插入表格的数据是符合预期的。约束本质是通过技术手段倒闭程序员插入正确的数据。反过来,站在mysql视角,插入进来的数据,都是符合数据约束的。约束的最终目标:保证数据的完整性和可预期性。
2024-03-21 12:07:49
713
原创 数据类型【mysql数据库】
默认都是有符号,无符号要在对应的类型后跟unsigned在语言上,可能会有截断,但mysql会对不合法的数据做拦截。所以,mysql中,数据类型本身也是一种约束(约束使用者),保证数据库中的数据是可预期的,完整的。
2024-03-17 15:33:10
1030
原创 udp服务器【Linux网络编程】
【0,1023】:是系统内定的端口号,一般都有固定的应用层协议使用(http:80 https:443)我们要用1024及以上的端口号,同时,即便是1024以上,某些特定端口号也建议不要使用,如mysql:3306……function是C++内置的函数对象,上面这行代码定义了一个类型,func_t即一个返回值为string,参数为const string &的函数,func_t可以作为参数类型,即可将这样的一个函数作为参数传递。2、登录xshell时的ip是虚拟ip,要用ifconfig指令查真正的ip。
2024-02-24 21:42:42
1621
原创 表的操作【mysql数据库】
注:它是覆盖式的改,要把这一列的相关属性全部重新设置。要将该列的所有相关属性全部重新设置。drop table 表名。
2024-02-17 14:37:30
411
原创 专题二:滑动窗口【优选算法】
同向双指针(找单调性)1)用left、right指针维护窗口2)进窗口(right指针++,更新窗口内的值)3)判断出窗口(left++,并更新窗口内的值)4)更新结果(注意每道题更新结果的时机不同,需具体分析)
2023-10-21 17:14:16
362
原创 进程【Linux系统编程】
存储器:内存(硬盘是外存)输入设备:鼠标、键盘、摄像头、话筒、磁盘、网卡……输出设备:显示器、播放器硬件、磁盘、网卡……输入输出设备是外部设备,简称外设。中央处理器(CPU):运算器:对我们的数据进行计算任务(算数运算、逻辑运算)控制器:对我们的计算硬件流程进行一定的控制。以上每一个部分都是独立的个体,也就是说,各个硬件单元必须用“线”链接起来。“线”分两类:1、系统总线(CPU和内存之间) 2、IO总线(内存和外设之间)不考虑缓存的情况,CPU只能对内存进行读写,不能访问外设。
2023-10-21 09:58:02
170
原创 简单多状态dp【动态规划】
上一题用的是二维数组的第二维来表示多种状态,是因为状态比较多,如果像此题只有两种状态,就可以用两个函数,本质上是一样的。
2023-10-12 19:50:59
114
原创 专题二:二叉树的深搜【递归、搜索、回溯】
(DFS,全称为DepthFirstTraversal),是我们树或者图这样的数据结构中常用的⼀种遍历算法。这个算法会尽可能深的搜索树或者图的分⽀,直到⼀条路径上的所有节点都被遍历完毕,然后再回溯到上⼀层,继续找⼀条路遍历。三种遍历方式的最大区别是:处理根节点的时机不同。
2023-10-11 18:15:26
366
原创 斐波那契模型系列【动态规划】
是什么:dp表(可能是一维或二维数组)里的值所表示的含义。怎么来:1、题目要求2、经验+题目要求3、发现重复子问题dp[i]=...保证填表不越界写代码时,可以就按一下步骤:1、创建dp表2、初始化3、填表4、返回值5、可能会需要处理边界。
2023-10-04 15:52:09
134
原创 柠檬水找零【贪心1】
由于是贪心算法的第一道题,所以先介绍一下贪心算法。1、把解决问题的过程分为若干步2、解决每一步时,都选择当前看起来最优的解法。3、“希望”得到全局最优解。没有模版,只能是积累经验,心态放平。贪心算法的正确性需要证明。
2023-10-03 16:05:07
167
原创 Linux小程序——进度条【Linux系统编程】
回车换行:回车(\r)是回到当前光标所在行的最开始,换行(\n)是换到下一行,回车换行就是到下一行的最开始。
2023-07-19 14:22:15
416
原创 make/Makefile【Linux系统编程】
make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。被编译过的文件,如果代码没有更新,是无法再make的。.exe新于.c ,源文件是老的,不需要编译。
2023-07-15 16:44:10
250
原创 gcc/g++ 动静态库(略讲)gdb调试器【Linux系统编程】
库文件其实就是源文件经过一定的翻译+打包——不用给你提供太多的源文件,也可以达到隐藏源文件的目的。如果没有动态库,只有静态库,这时就算没有-static,也是可以进行静态链接的。头文件提供方法的声明,库文件提供方法的实现+你的代码 = 你的软件。如果没有静态库,又带 -static,是无法进行静态链接的;:告诉gcc,现在开始进行程序的翻译,当做完。:告诉gcc,现在开始进行程序的翻译,当做完。所以, -static的本质是改变优先级。:告诉gcc,现在开始进行程序的翻译,当。gcc默认优先动态链接。
2023-07-05 16:24:03
303
原创 前缀和与分差【算法基础】
数组:a1,a2,a3……an前缀和:Si=a1+a2+……+ai利用前缀和,可以求区间[l,r]的和。(1)先求出前缀和数组{S1,S2,S3……Sn}(2)用公式求区间和S[r ]-S[l-r]
2023-06-04 10:42:14
566
原创 yum和vim【Linux操作系统】
(下载到程序的源代码,进行编译,得到可执行程序,太麻烦,因此有些人会将有些常用的软件提前编写好,做成软件包)(安装各个软件包,各个包之间有依赖关系)(yum是软件包管理器。软件包和软件包管理器,就好比“App和应用商店”,解决安装源、安装版本、安装依赖问题)用于Windows机器和远端的Linux服务器通过Xshell进行文件传输文件。安装完毕后可以通过拖拽的方式将文件上传过去。关于yum的所有操作必须保证主机(虚拟机)网络通畅。ping www.baidu.com可验证。
2023-06-03 14:36:52
742
1
原创 图【数据结构】
图的抽象数据类型定义如下:ADT Graph数据对象V:具有相同特性的数据元素的集合,称为顶点集。数据关系R:R={VR}VR={<v,w>表示从v到w的弧,P(v,w)定义了弧<v,w>的信息基本操作P::图的创建操作。初始条件:无。操作结果:生成一个没有顶点的空图G。:求图中的顶点v的值。初始条件:图G存在,v是图中的一个顶点。操作结果:生成一个没有顶点的空图G。初始条件:V是图的顶点集,VR是图中弧的集合。操作结果:按V和VR的定义构造图G。
2023-05-28 21:26:48
1436
1
C语言实现三子棋的源码
2023-01-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人