- 博客(119)
- 收藏
- 关注
原创 GIT版本管理2:远程操作与多人协作
方法二:本地合并,pull更新master,dev合并master,有冲突在本地dev解决后,master合并dev。由开发者1新增function1,由开发者2新增function2,在不同分支下协作完成。将feature-1合并master分支,有冲突在feature-1解决。由开发者1新增"aaa",开发者2新增“bbb”,在一个分支下协作完成。在develop分支上创建release分支,进行测试。拉取远程仓库,将远程的feature-2分支拉到本地。在本地创建feature-2分支,与远程连接。
2026-10-11 13:41:55
134
原创 GIT版本管理1:基本操作与分支管理
设计文档V1,设计文档V2......,经过多次修改,发现设计文档V1符合预期,直接提交V1版本文档。设计文档V0,第一次修改,第二次修改......,经过多次修改,发现第一次修改的文档最符合预期。前提条件,commit之后没有进行push推送到远程仓库,撤销的目的是为了不影响远程仓库的代码。.git文件才是仓库,即版本库,虽然在gitcode目录下,但不属于工作区。但随着版本不断增多,维护版本就变得困难,各自版本修改的内容无法查找。所以版本控制器就诞生了,记录每次的修改,以及版本迭代的一个管理系统。
2026-10-06 14:36:52
297
原创 MySQL数据库2:库表操作
本文系统介绍MySQL数据库与表的基本操作:包括创建、删除数据库,设置字符集与校验规则(如UTF8、GBK),查看及修改数据库信息;实现数据库备份(mysqldump)与恢复(source);表的创建(指定字符集、引擎、字段约束)、查看(desc、show create table)及结构修改。强调编码一致性对数据操作的重要性,提升数据库管理效率与数据安全。
2026-10-03 23:08:11
294
原创 MySQL数据库1:数据库基础
数据库管理系统如何存储数据,如何为存储数据建立索引,如何更新、查询数据等技术的实现方法。文件提供了数据存储功能,但是没有提供很好的数据内容管理能力,所以引入了数据库。数据库本质:对数据内容存储的一套解决方案,提供字段与要求,直接返回结果。数据库:一套数据存储方案,在磁盘或内存中存储具有特定组织结构的数据。为保存应用中实体的数据,一般会在数据库中创建多个表,来保存程序数据。用来维护存储数据的结构,如:create,drop,alter。Oracle:甲骨文的产品,大型项目,复杂业务,并发性一般。
2026-10-02 22:38:51
193
原创 linux笔记归纳25:多路转接epoll
定位:基于等待多个文件描述符就绪事件的通知机制,为了处理大批量句柄而作了改进的poll。接口使用方便:拆分成三个函数,分离输入输出参数,不需要循环设置要关注的文件描述符。网络协议栈中的回调机制:一旦底层特定的文件描述符有数据就绪,就会自动进行回调。事件回调机制:避免遍历,使用回调方式将就绪的文件描述符从红黑树加入到就绪队列。就绪队列本质:内核告诉用户,哪一个文件描述符的哪些事件就绪。应用层在处理就绪事件的时候,处理的都是就绪的,不用进行检测。只有底层的数据发生从无到有,从有到多的变化时,才会通知上层。
2026-10-02 17:28:35
264
原创 基于Vibe Coding的OJ平台(三)
目录基于Vibe Coding的OJ平台(三)一、阶段五1.1.ui-ux-pro-max-skil1.2.登录注册页面开发1.3.题目列表页面开发1.4.题目详情页面开发1.5.管理后台页面开发1.6.提交历史页面开发1.7.落地页面开发二、阶段六2.1.playwright2.2.生成Web自动化测试文档2.3.实现数据库重置工具2.4.在Windows上clone仓库三、文档编写3.1.项目介绍文档和部署文档3.2.项目描述文档UI:用户界面(界面好不好看)UX:用户体验(界面好不好用)更新.g
2026-10-01 18:37:32
264
原创 基于Vibe Coding的OJ平台(二)
传统接口自动化:通过python代码编写测试用例,发送请求,解析响应,验证结果Vibe接口自动化:通过LLM的CURL命令,构建请求,验证结果。
2026-10-01 11:30:02
233
原创 基于Vibe Coding的OJ平台(一)
CMake工作原理:执行CMake命令,生成makefile,通过make命令进行编译。EXPECT_EQ:在gtest中称为断言,判断断言内两个值是否相等。打印日志是开发中最主要的调试手段,而打断点,观察变量的频率非常低。因为断点会把程序断住,修改程序的执行逻辑,在多线程程序中非常明显。在当前窗口中连接,输入密码,打开工程所在文件夹,再次输入密码。GIT版本管理:每次AI进行迭代更改,都提交一个GIT版本。在gtest中非常典型的写法,定义一个测试用例。升级root用户,安装依赖,文档提交GIT。
2026-09-30 18:53:49
354
原创 linux笔记归纳24:多路转接select
当poll返回时,fd和revents有效:内核告诉用户,要关心的fd上的events事件已经就绪。设为{0,0},在检测完一轮后,如果没有文件描述符就绪,就会立即返回(非阻塞)如果在设置时间内,没有文件描述符就绪,select返回后,就会被设为{0,0}设为正常事件,等待多个文件描述符,超过该时间后没有文件描述符就绪,立即返回。如果在设置时间内,有文件描述符就绪,select返回后,就会设为剩余时间。设为NULL,则表示一直阻塞,不返回,直到有任一文件描述符就绪(阻塞)
2026-09-27 20:58:05
212
原创 linux笔记归纳23:五种IO模型与非阻塞IO
select专门负责等待,数据准备好后,再调用read/write/recv/send/recvfrom/sendto......拷贝。传统接口read/write/recv/send/recvfrom/sendto......既负责等待,又负责拷贝。人 == 进程,鱼 == 数据,鱼竿 == 网络套接字,河 == 操作系统 ,桶 == 用户缓冲区。在钓鱼效率上两者没有任何区别,而非阻塞做了其他工作,效率才高,但IO效率一样。赵六:拉一卡车的鱼竿,共100只,在岸边来回等待(多路复用/多路转接)
2026-09-26 13:43:34
198
原创 linux笔记归纳22:NAT、代理服务、内网穿透
作用:两个设备之间进行数据传递以太网技术标准,包含了数据链路层与网络层的内容以太网的帧格式、MAC地址、ARP协议、MTU最大传输单元。
2026-09-22 22:22:17
82
原创 linux笔记归纳21:数据链路层
ARP缓存:路由器R收到了ARP的映射关系,会对目标主机的IP地址与MAC地址映射进行缓存。拿着目标主机的IP地址,在局域网内广播,目标主机收到消息后,进行应答,回复MAC地址。主机会在一段时间内,记录下局域网中,各个主机的IP地址与MAC地址的映射关系。目的地址与源地址:设备网卡的硬件地址,也称为MAC地址,是网卡出厂时固化的。数据帧传输到出入口路由器,知道目标主机IP地址,但不知道对方MAC地址。在网卡出厂时就确定了,不能修改,每个设备的MAC地址通常是唯一的。传输层:解决传输相关的问题,保证可靠性。
2026-09-22 22:20:41
177
原创 linux笔记归纳20:网络层协议IP
主机发送报文,每经过一个内网的路由器,就会进行源IP的替换,替换成当前路由器的WAN口IP。将IP地址中的主机地址全部设置为1,表示广播地址,给同一个链路中相连的所有主机发数据包。路由报文的本质是查找目标主机,查找的本质是淘汰的过程,淘汰的效率高那么查找的效率就高。只给接入网络的设备分配IP地址,同一个MAC地址的设备,每次接入互联网的IP地址不同。内网IP是固定的,不同内网的内网IP会出现重复,所以内网IP只能在该内网中有效。打开电脑浏览器,输入路由器的管理地址,就会访问到路由器上部署的HTTP服务。
2026-09-13 16:53:50
207
原创 贪心算法专题1:试题1~4
目录贪心算法简介贪心策略贪心的概念贪心的特点贪心的步骤贪心的例子贪心的常用证明方法试题1:柠檬水找零算法原理代码编写贪心证明试题2:将数组和减半的最少操作次数算法原理代码编写贪心证明试题3:最大数算法原理编辑代码编写贪心证明试题4:摆动序列算法原理代码编写贪心原理。
2026-09-10 13:45:35
268
2
原创 优选算法专题16:多源BFS
将distance初始化为-1,标记当前位置没有被搜索(类似:vis数组)解法一:暴力解法,将多源最短路问题转化为若干个单源最短路问题。解法二:把所有源点看成一个源点,转化为单一的单源最短路径问题。从distance中直接获取当前层数(类似:step,sz)把所有的起点加入到队列,一层一层地往外进行扩展。解法一:一个位置一个位置求(O(N^3))把所有的0当成起点,把所有的1当成终点。解法二:多元BFS + 正难则反。第一步:将所有的0坐标加入到队列。第二步:一层一层向外扩展。解法一:一个一个判断。
2026-08-27 15:12:48
237
原创 linux笔记归纳18:传输层协议UDP
端口号(Port):标识一个主机上进行通信的不同的应用程序在TCP/IP协议中,用源IP,源端口号,目的IP,目的端口号,协议号来标识一个通信。
2026-08-26 18:12:24
399
原创 linux笔记归纳17:应用层协议HTTP
超文本传输协议规定了客户端与服务器之间通信,用来交换或传输超文本客户端:通过HTTP协议向服务器发送请求(Request)服务器:收到请求后处理并且返回响应(Response)HTTP是一个无连接、无状态的协议无连接:TCP保持长连接,HTTP不需维护连接,一次处理多组请求和响应无状态:服务器不会保存客户端的状态信息,通过Cookie与Session解决。
2026-08-25 17:16:28
528
原创 linux笔记归纳16:自定义协议与序列化
目录自定义协议与序列化一、应用层1.1.应用层协议1.2.序列化和反序列化1.3.重新理解read和write二、Jsoncpp2.1.Jsoncpp概念2.2.Jsoncpp安装2.3.序列化2.4.反序列化2.5.手写序列化和反序列化三、进程间关系与守护进程3.1.进程组3.2.组长进程3.3.会话3.4.任务3.5.控制终端3.6.作业控制3.7.守护进程3.8.setsid函数3.9.null文件3.10.daemon函数四、网络版计算器2.1.socket封装2.2.自定义协议2.3.设计服务器。
2026-08-18 16:25:21
322
原创 linux笔记归纳15:Socket编程TCP
作用:创建一个通信的一端参数1:域本地通信:AF_UNIX网络通信:AF_INET参数2:套接字类型UDP:SOCK_DGRAM(面向数据报)TCP:SOCK_STREAM(面向字节流)参数3:设置为0返回成功:文件描述符返回失败:-1。
2026-08-07 20:45:02
430
原创 优选算法专题12:队列
解法二:利用数组存储二叉树(堆)优化。增加一个标记位,让偶数行信息逆序。相减之后即使溢出结果也是正确的。解法一:层序遍历(超时)
2026-08-05 22:53:57
192
原创 linux笔记归纳14:Socket编程UDP
作用:创建一个通信的一端参数1:域本地通信:AF_UNIX网络通信:AF_INET参数2:套接字类型UDP:SOCK_DGRAM(面向数据报)TCP:SOCK_STREAM(面向字节流)参数3:设置为0返回成功:文件描述符返回失败:-1。
2026-08-05 18:01:37
325
原创 优选算法专题11:栈
遇到右括号:拿出两个栈的栈顶元素解析,放到字符串栈的栈顶元素后面。遇到单独字符:提取字符串,放到字符串栈的栈顶元素后面。遇到左括号:提取后面的字符串,放入字符串栈。进栈的同时判断是否出栈,所有元素进栈完后。判断i是否遍历完毕,或者判断栈是否为空。遇到数字:提取数字,分情况讨论。遇到数字:提取数字,放入数字栈。遇到操作符:更新操作符栈。
2026-08-03 23:16:42
230
原创 优选算法专题10:字符串
解法二:无进位相乘后再相加,最后处理进位。解法一:两两比较(O(M * N))从中心点位置向两边扩展。奇数和偶数的长度都考虑。解法一:模拟列竖式运算。高位相乘的时候需要补0。解法一:中心扩展算法。
2026-08-01 22:29:52
632
原创 linux笔记归纳13:网络基础
网络层:负责地址管理和路由选择,通过IP地址表示主机,通过路由表规划线路,是路由器的工作。传输层:负责两台主机的数据传输,通过TCP传输控制协议,使数据可靠的从主机发送到目标主机。数据链路层:负责设备之间数据帧的传输和识别,网卡驱动、帧同步、冲突检测,是交换机的工作。一台主机向局域网内所有主机发送含有目标主机的信息,只有目标主机处理,其他主机抛弃。用户发送的数据,必须贯穿网络协议栈(操作系统是网卡的管理者),由网卡发送给目标主机。与本地通信的唯一区别在于线变长了,主机间的距离变远了,就会有新的问题产生。
2026-08-01 20:21:14
397
原创 linux笔记归纳12:线程同步与互斥
一个全局资源,如果没加保护,可能会有并发问题,又称线程安全问题如果票数是指针,或者是控制线程运行的标记位,都会引发相应的问题route函数被多个执行流重复进入,但有全局变量资源,是不可重入函数。
2026-07-30 13:53:37
249
原创 优选算法专题9:哈希表
概念:哈希表是存储数据的容器作用:用来快速地查找某个元素情况:频繁地查找某一个数时候用法:STL容器,或用数组模拟(字符串的字符,数据范围很小)
2026-07-24 13:50:38
251
原创 linux笔记归纳11:线程概念与控制
进程切换:保存旧进程CPU硬件上下文,切换新进程的PCB上下文,修改CR3寄存器中的页目录。在ELF文件中,同一个页框内的地址,前二十位都是一样的,属于同一个4KB中(局部性原理)在windows系统中,线程在内核中也需要管理,先描述,再组织,该描述结构体叫做TCB。即用户级别的库,pthread库是动态库,格式为ELF,可执行程序的文件格式也为ELF。将一个进程的所有线程TCB,用一种数据结构组织在一起,存放在该进程的PCB中(复杂)
2026-07-24 10:53:04
256
原创 优选算法专题8:链表
常用技巧一:画图常用技巧二:引入哨兵位常用技巧三:不要吝啬空间,大胆定义变量常用技巧四:快慢双指针常用操作一:创建新节点new常用操作二:尾插常用操作三:头插。
2026-07-22 19:14:18
637
原创 linux笔记归纳10:进程信号
流程1:执行到主函数的某一条指令时,会因为中断、异常或者系统调用进入操作系统内核流程2:内核处理完异常后,在准备回到用户模式前,会先处理当前进程中可以递达的信号流程3:内核调用do signal函数,查询进程PCB中的三张信号表流程4:如果此时信号对应的block为0,pending为1,handler为自定义捕获,则会跳转到用户层,执行用户自定义的方法sighandler流程5:在信号处理函数返回时,执行系统调用函数sigretum再次进入内核。
2026-07-20 16:33:13
310
原创 优选算法专题7:分治
本文介绍了颜色分类问题的分治算法解决方案。通过三指针技术(left、right、i)将数组划分为0、1、2三个区间,实现原地排序。个人版本与标准版本的核心逻辑相同:遇到0与左指针交换并右移,遇到1跳过,遇到2与右指针交换但不移动i(需重新检查)。两种实现的主要区别在于变量命名和初始化方式,但都达到了O(n)时间复杂度和O(1)空间复杂度的最优解。该算法典型体现了分治思想中的"划分"策略。
2026-07-17 13:48:53
271
原创 linux笔记归纳9:进程间通信
示例:进程A写"aaa",进程B写“bbb”,读端只会读到“aaabbb”或"bbbaaa",不会"aababba"IPC_CREAT(获取):如果目标共享内存不存在,就创建,否则打开这个存在的共享内存并返回。key值类似命名管道约定同一个管道文件,保证共享内存存在,标识共享内存的唯一性。最后一个进程只有父进程的一个写端,关闭后可以关闭该进程指向其他进程管道的写端。原子写入:多进程同时向同一个管道写数据时,单次写入的数据不会出现穿插和拆分。特性四:管道是单向通信的,子进程写数据,父进程读数据,属于半双工。
2026-07-16 20:39:43
264
原创 linux笔记归纳8:库制作与原理
库:写好的,现有的,成熟的,可复用的代码一种二进制形式的代码,可以被操作系统载入内存执行静态库:.a(Linux) 、.lib(windows)动态库:.so(Linux)、.dll(windows)动静态库中不需要包含main函数动静态库的本质是源文件(.c)对应的目标文件(.o)
2026-07-11 18:05:10
333
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅