- 博客(78)
- 收藏
- 关注
原创 TS学习(3)交叉类型与泛型深度解析
本文系统讲解TypeScript中交叉类型(A & B)与接口继承(extends)的区别,深入剖析泛型的使用场景、类型推断与约束,涵盖泛型函数、接口、类及内置工具类型(如Partial、Readonly、Pick、Record),并解析索引签名的应用。内容涵盖类型安全、复用性与实际开发中的高频考点,适合C/C++后端开发者进阶TS核心概念。
2026-10-25 16:30:20
190
9
原创 Git学习(1):从零搭建版本控制体系
本文系统介绍了Git版本控制的核心概念与实战操作,涵盖安装配置、仓库初始化、工作区-暂存区-版本库三态流转、提交流程(git add/git commit/git log)、文件差异查看(git diff/status)、版本回退(git reset)及误删恢复(git reflog)。重点解析了Git底层机制:对象存储(blob/tree/commit)、HEAD指针、分支引用与版本链结构。通过实操示例,阐明如何高效管理代码版本,避免数据丢失,是C/C++开发者掌握项目管理的实用指南。
2026-10-25 16:27:02
281
2
原创 TS学习(2)
枚举(enum)是 TypeScript 中定义命名常量的机制,可限定变量取值范围,编译后生成运行时对象,支持遍历与动态访问。相比字面量联合类型(如 'Up'|'Down'),枚举保留运行时信息但体积更大;推荐优先使用字面量联合类型以保持轻量。any 类型会关闭类型检查,应避免使用,可用 unknown 替代以增强安全性。typeof 用于获取变量类型或运行时类型。类(class)支持类型注解、访问修饰符(public/private/protected)、构造函数及继承(extends)和接口实现(imp
2026-10-22 21:46:55
98
原创 TS学习(1)
TypeScript是JavaScript的超集,由微软开发,为JS添加静态类型系统。它在编译阶段进行类型检查,提前发现类型错误,提升开发效率与代码可维护性。支持类型推断、类型注解、接口(interface)与类型别名(type)等特性,兼容最新ES语法,广泛应用于Vue3、Angular、React等主流框架。通过类型约束、智能提示和重构友好性,TS已成为大中型前端项目的首选语言。
2026-10-19 17:52:00
256
7
原创 JS学习(3)
JavaScript由ECMAScript(基础语法)、DOM(操作页面结构)和BOM(操作浏览器)三部分组成。ECMAScript是语言基础,DOM和BOM构成WebAPI,用于实现页面交互。通过querySelector等方法获取元素,利用事件监听实现用户交互,使用innerText、innerHTML、style或className修改内容与样式,并通过创建、添加、删除节点实现动态页面更新。掌握这些核心概念即可实现网页的增删改查与交互功能。
2026-10-18 14:42:49
70
2
原创 JS学习(2)数组,函数,作用域,对象
本文系统介绍了JavaScript中数组、函数、作用域及对象的创建与使用。数组支持字面量和new Array()两种方式,元素可混用类型;通过下标访问/修改元素,可用push()新增、splice()删除。函数支持声明式与表达式,具有参数不匹配处理及arguments伪数组特性。作用域分为全局与局部,遵循就近原则,避免隐式全局变量。对象可通过字面量、new Object()或构造函数创建,ES6引入class语法,支持继承(extends)、super()调用及静态成员,实现更清晰的面向对象编程。
2026-10-15 18:11:13
164
2
原创 JS学习(1)书写位置,变量、数据类型、运算符
JavaScript是一种解释型脚本语言,最初用于浏览器端表单验证,现已成为全栈开发语言。它可运行于前端(实现网页交互、动画)、后端(Node.js)、桌面应用(Electron)及移动端。与Java无关,其核心由ECMAScript(语法)、DOM(页面操作)和BOM(浏览器操作)组成。支持动态类型,变量无需声明类型,可灵活赋值。常用数据类型包括number、string、boolean、undefined、null。通过alert、prompt、console.log进行输入输出。变量使用var(已不推
2026-10-15 15:15:12
150
原创 CSS 学习(1):语法、引入方式、选择器、字体与背景
本文系统介绍了CSS的基础知识,涵盖其作用(美化HTML页面)、三种引入方式(行内、内部、外部)、选择器类型(标签、类、ID、通配符及复合选择器)、优先级规则,以及字体、文本对齐、背景属性等核心样式控制。内容实用,适合初学者快速掌握前端样式设计核心技能。
2026-10-14 17:32:42
304
17
原创 CSS学习(2)|元素显示模式、盒模型、Flex 布局
本文系统讲解了CSS中元素的三种显示模式(块级、行内、行内块)及其特性,重点对比了它们在宽高设置、布局位置和内外边距方面的差异。通过代码实例展示了display属性的使用效果,并深入解析了盒模型结构(内容、内边距、边框、外边距)及box-sizing: border-box对盒子尺寸的影响。文章还介绍了弹性布局(Flex)的核心概念,包括主轴与交叉轴、justify-content和align-items等关键属性,结合广告板与热榜页面实现案例,全面演示了实际应用技巧。
2026-10-14 17:32:40
230
10
原创 HTML学习(2)列表与表单和应用
本文系统讲解HTML列表标签(ul、ol、dl)及表单元素的使用,涵盖无序列表项目符号样式、有序列表编号类型与start/value属性、自定义列表结构。详细介绍form表单的action与method属性,input各类控件(文本、密码、单选/复选框、按钮)、select下拉菜单、textarea多行输入框的用法。结合Emmet快捷键提升开发效率,并通过个人简历展示与信息填写页面实例,综合应用布局、语义化标签与表单交互,实现完整网页功能。
2026-10-11 14:43:53
147
7
原创 HTML学习(1):从骨架到标签全解析
本文系统介绍HTML基础语法,涵盖标签类型(成对与单标签)、属性使用、文档结构(DOCTYPE、html、head、body)、DOM树层级关系及开发者工具查看方法。重点讲解常用标签:标题(h1-h6)、段落(p)、换行(br)、水平线(hr)、文本格式化(strong/em/del/ins)、图片(img)与超链接(a)的用法与规范。详细说明路径概念(相对/绝对)、锚点链接、表格结构(table/tr/td/th)及合并单元格(colspan/rowspan),强调语义化标签优先原则,指导初学者构建符合标
2026-10-07 14:33:03
169
5
原创 多源最短路算法--Floyd-Warshall
Floyd-Warshall算法是基于动态规划的多源最短路径算法,通过逐步引入中转点k,更新任意两点间最短距离。状态dist[i][j]表示从i到j仅使用编号≤k的节点作为中转时的最短路径,转移方程为:dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j])。可原地优化为二维数组,时间复杂度O(n³),支持负权边但不支持负环。通过prev数组可重构路径,关键在于prev[i][j] = prev[k][j],因新路径中j的前驱由k到j的路径决定,而非直接为k
2026-10-01 11:04:58
240
2
原创 跳表详细解析
本文详细解析了跳表(SkipList)的原理与实现,基于随机化策略替代传统固定分层,确保查找、插入、删除操作均摊时间复杂度为O(log n)。通过随机生成节点层数(如Redis采用p=0.25),实现高层稀疏、低层稠密的结构,使每层横向比较次数为常数,纵向下沉层数为O(log n)。文中完整实现了跳表的增删查功能,并通过findprev、add、erase等核心方法演示其工作流程,最终以代码形式呈现可运行的跳表数据结构。
2026-10-01 09:40:51
192
3
原创 B树详解:从零构建平衡多路搜索树
本文系统介绍了5阶B树的结构特性与实现原理,涵盖其平衡性、有序性及多路查找特性。通过C++模板实现,详细阐述了节点定义、查找、插入(含分裂机制)与中序遍历等核心操作。重点解析了插入时自底向上分裂过程,支持动态维护树的平衡,确保查询效率稳定。代码完整可运行,适用于理解数据库索引与文件系统底层数据结构。
2026-09-30 09:26:27
335
14
原创 最短路径--Dijkstra算法详解
Dijkstra算法(邻接矩阵版,O(n²))通过维护距离、访问状态和前驱数组,每次选择未确定最短路径中距离源点最近的顶点,锁定其最短距离,并用它松弛邻接点。由于无负权边,该贪心策略保证一旦顶点被锁定,其最短路径即为最终结果。若有负权边,后续可能更新已锁定顶点,导致算法失效。
2026-09-26 12:35:21
207
13
原创 Kruskal与Prim算法
本文详细介绍了求解无向连通图最小生成树(MST)的两种经典算法:Kruskal与Prim(堆优化)。Kruskal通过将所有边按权重排序,利用并查集判环,贪心选取不构成环的最小边;Prim则从起点出发,动态维护已选点集合,每次扩展权重最小的外部边。两者时间复杂度均为O(E log E),但Kruskal适合稀疏图,Prim更适合稠密图。代码实现基于邻接矩阵,辅以优先队列优化,逻辑清晰,适用于C++后端开发学习者掌握图论核心算法。
2026-09-25 20:33:10
659
10
原创 图解图论核心:从基础到邻接矩阵,邻接表实现
本文系统介绍了图的基本概念与两种核心存储结构:邻接矩阵与邻接表。涵盖图的定义、无向/有向图区别、完全图、度、路径、连通性及生成树等基础知识点。重点对比了邻接矩阵(适合稠密图,查边快)与邻接表(适合稀疏图,节省空间)的优劣,并通过模板实现展示了图的构造、加边、遍历(BFS/DFS)等操作,适用于实际编程应用。
2026-09-25 16:52:47
294
原创 最短路径--Bellman-Ford算法详解
Dijkstra算法适用于正权图单源最短路,时间复杂度O(N²),但无法处理负权边;Bellman-Ford可处理负权边并检测负环,标准实现复杂度O(N·E),邻接矩阵版达O(N³),效率较低。其核心在于外层循环最多n-1次,确保所有简单路径(至多n-1条边)被松弛。双数组版本严格遵循动态规划思想,每轮仅用前一轮结果,保证正确性;而单数组版本可提前收敛,效率更高。关键理解:每轮扩展一条边,需n-1轮才能覆盖最长无环路径。
2026-09-24 16:53:48
368
原创 并查集详解
并查集用于高效管理不相交集合,支持查找元素所属集合(find)和合并两个集合(union)。核心思想是用数组维护森林,通过路径压缩和按秩合并优化性能。典型应用包括求连通分量(如省份数量)和判断等式方程的可满足性。
2026-09-19 11:02:59
185
6
原创 HTTPS协议原理
HTTPS通过“非对称加密+对称加密+数字证书”三重机制实现安全通信:客户端用服务器证书中的公钥加密会话密钥,确保密钥传输安全;服务器用私钥解密获取密钥后,双方使用高速对称加密传输数据;数字证书由CA签发,防止中间人篡改公钥,保障身份可信。该方案兼顾安全性与性能,是现代互联网安全通信的基石。
2026-09-16 10:59:13
72
2
原创 5种IO模型与阻塞IO,select,poll,epoll,LT和ET模式
本文以“钓鱼”比喻深入解析五种IO模型:阻塞、非阻塞、信号驱动、IO多路复用(select/poll)与异步IO,揭示其核心差异。重点对比select、poll、epoll三大多路复用机制,指出epoll凭借红黑树与就绪链表实现高效事件管理,性能最优,尤其适合高并发场景。强调同步/异步本质区别在于是否全程参与等待与拷贝,而ET边缘触发模式需配合非阻塞IO才能避免阻塞,提升吞吐。最终结论:IO多路复用(尤其是epoll)是高并发服务器的首选方案。
2026-09-12 16:46:26
260
2
原创 数据链路层
(策略)跨子网,选路径(能力)同一个局域网,一台机器怎么把帧交给本子网另一台机器IP 层(网络层)负责把数据包送到目标主机所在的那个子网;但是数据包进到这个子网内部之后,就得靠数据链路层,把包精准交到子网里那台具体主机手上。也可以这样再理解:ip层回答了为什么B要去F的过程,因为B和C不在一个子网,需要经过F的路由(原因),而数据链路层就解决的是B怎么到F的(方法)
2026-09-11 21:09:00
265
20
原创 TCP结束
<think>我们根据内容生成摘要,不超过150字。需要概括TCP连接管理机制、三次握手、四次挥手、滑动窗口、拥塞控制等要点。用户要求“根据以下内容,生成≤150字的文章摘要”。所以尽量简洁。</think>TCP用三次握手建立连接、四次挥手断开,状态由内核管理。三次握手验证全双工、同步ISN防旧报文;四次挥手中主动方进入TIME_WAIT等待2MSL。滑动窗口实现流量控制,慢启动与拥塞避免控制发送速率。
2026-09-03 21:53:54
388
8
原创 UDP和TCP原理
<think>我们根据要求,需要生成一个≤150字的文章摘要。文章内容是关于UDP和TCP的协议详解,包括端口、报文格式、可靠性、滑动窗口、三次握手等。摘要需要概括核心内容。注意字数限制。需要简洁。 先梳理主要内容:文章介绍了UDP传输层特点(无连接、不可靠、面向数据报),端口号五元组,UDP报文格式,以及TCP协议(可靠传输、序号确认、超时重传、流量控制、连接管理标志位等)。摘要要涵盖这些,但字数有限,所以用简洁语言概括。 可能结构:UDP提供无连接不可靠的数据报服务,通过端口号标识应用;TC
2026-09-01 19:18:00
368
5
原创 C++ 常用流类
<think>我们是由AI助手,需要根据用户提供的关于C++头文件的分类的内容,生成不超过150字的文章摘要。用户要求“根据以下内容,生成≤150字的文章摘要”。我们需要提炼核心要点,简洁概括。 首先,理解内容:主要讲C++中三类头文件:iostream(标准IO流)、fstream(文件流)、sstream(字符串内存流)。提及了istream/ostream、cin/cout/cerr/clog,继承关系,文件流的打开模式、指针、seekg/tellg,字符串流的应用等。 摘要应简明扼要,涵
2026-08-31 13:12:35
225
原创 网页重定向,GET和POST,长短连接,Cookie + Session
<think>我们根据要求生成摘要。内容摘要要点:301/302定义及区别;重定向流程;浏览器兼容历史;GET/POST区别;RESTful;长连接/短连接;无状态;Cookie+Session机制及安全。要求≤150字。需要简洁概括。</think>本文详解HTTP核心机制:301永久重定向与302临时重定向均依赖Location头完成跳转;GET参数在URL,POST在请求体,但HTTP明文都不安全;RESTful用URL+方法表达操作;长连接复用TCP提升效率;HTTP无状态,
2026-08-31 12:58:50
354
16
原创 应用层协议HTTP
虽然我们说,应用层协议是我们程序猿自己定的。但实际上,已经有大佬们定义了一些现成的,又非常好用的应用层协议,供我们直接参考使用.HTTP (超文本传输协议) 就是其中之一。在互联网世界中,HTTP(HyperText Transfer Protocol,超文本传输协议)是一个至关重要的协议。它定义了客户端(如浏览器)与服务器之间如何通信,以交换或传输超文本(如 HTML 文档)。HTTP 协议是客户端与服务器之间通信的基础。客户端通过 HTTP 协议向服务器发送请求,服务器收到请求后处理并返回响应。
2026-08-28 18:09:52
436
7
原创 进程间关系与守护进程
本文介绍了Linux进程管理中的核心概念,包括进程ID(PID)、进程组ID(PGID)和会话ID(SID)的层级关系,重点阐述了守护进程的实现原理。内容涵盖:1)进程组生命周期不依赖组长进程;2)会话与进程组的关系;3)Xshell登录流程及终端控制机制;4)作业控制命令的使用;5)守护进程创建方法(setsid系统调用)及其脱离终端的关键特性;6)/dev/null的特殊作用;7)实际部署示例展示守护进程的目录结构和日志管理。通过解析SSH断开导致进程退出的根本原因,说明了守护进程对服务器程序的重要性。
2026-08-22 15:10:49
217
8
原创 序列化,Jsoncpp,NetCal代码实现
本文摘要: 文章系统介绍了网络应用层协议设计与实现的关键技术。首先阐述了应用层协议的基本概念,强调协议是双方约定的结构化数据传输规范,并以网络计算器为例说明两种协议定制方案:字符串拼接和序列化/反序列化。重点解析了序列化必要性:解决跨平台内存对齐、跨语言兼容性问题。通过TCP全双工通信流程,深入剖析了read/write系统调用的本质是用户态与内核态缓冲区的数据拷贝。最后详细演示了使用Jsoncpp库实现JSON数据的序列化与反序列化,并给出了完整的网络计算器实现代码,包括协议封装、TCP通信框架和业务逻辑
2026-08-14 11:29:32
261
25
原创 tcp编程上
本文摘要: TCP服务器开发的核心流程包括:socket创建、bind绑定、listen监听和accept接收连接。文章详细介绍了各系统调用的参数和功能,重点剖析了accept机制(监听fd接收连接后创建专用通信fd)。通过饭店前台和包间的比喻形象说明了监听套接字与通信套接字的区别。文章展示了四种服务器实现方案:单进程版(仅演示基本流程)、多进程版(父进程accept+子进程服务)、多线程版(主线程accept+工作线程服务)和线程池版。特别强调了对长/短任务的处理差异,并给出了远程命令执行的安全实现(白名
2026-08-10 22:03:12
281
11
原创 Socket编程3个版本
本文摘要: 本文系统讲解了Socket网络编程的核心概念与技术实现。主要内容包括: 网络通信本质是跨主机进程间通信,IP地址定位主机,端口号定位进程; 详细解析了TCP/UDP协议特性差异及适用场景; 介绍了网络字节序转换、sockaddr地址结构等基础概念; 通过三个版本代码示例(基础回显、翻译服务、群聊系统)演示了UDP套接字编程的实现过程; 重点讲解了bind绑定规则、全双工通信特性、多线程处理等关键技术点; 对比了系统级IPC与Socket通信的差异,突出Socket的跨主机通信优势。 文章从理论到
2026-08-03 22:29:04
540
25
原创 揭秘局域网通信:从MAC到IP的数据之旅
本文系统介绍了局域网通信的核心原理与实现流程。主要内容包括:1)MAC地址作为硬件唯一标识的作用;2)以太网共享信道特性与碰撞检测机制;3)网络分层模型中封装/解封装的栈式处理流程;4)IP地址与MAC地址的本质区别(IP负责端到端寻址,MAC负责本地交付);5)跨网段通信时路由器的转发机制(IP地址全程不变,MAC地址逐跳更新)。文章通过对比OSI七层模型各层协议单元(帧/数据报/段),揭示了网络通信中"协议栈"的运作本质,最终以主机跨网段通信的完整案例,说明了IP与MAC地址的协同工
2026-07-29 18:02:59
241
4
原创 初识计算机网路,协议
• TCP/IP协议的本质是⼀种解决方案• TCP/IP协议能分层,前提是因为问题们本身能分层TCP/IP协议与操作系统的关系(宏观上,怎么实现的)为什么 Windows 和 Linux 能互相通信操作系统可以不一样,但是两端的网络协议栈必须遵守同一套标准。各层在系统中的位置应用层:操作系统之上,由用户应用程序实现传输层、网络层:集成在操作系统内核数据链路层:网卡驱动程序中网卡:底层硬件TCP/IP 名字由来TCP(传输层) + IP(网络层),因此整套协议统称为 TCP/IP 协议。
2026-07-27 16:31:44
244
11
原创 日志和线程池
基类只规定 “要有这个行为”,不知道具体怎么做。普通虚函数:提供【默认行为,允许子类个性化覆盖】:基类有一套通用逻辑;大部分子类直接复用,少数子类按需改写。
2026-07-25 18:54:25
307
19
原创 POSIX信号量和环形队列
本文介绍了POSIX信号量的核心概念及其在环形队列生产消费模型中的应用。POSIX信号量作为计数器用于资源同步,支持线程/进程间共享,通过P/V操作保证原子性。重点阐述了环形队列的同步机制:使用sem_blank和sem_data两个信号量分别控制生产者和消费者的并发访问,实现读写指针不同时的并行操作。文章提供了基于C++的生产者-消费者模型实现代码,包括环形队列模板类和信号量封装类,并讨论了多生产者-消费者场景下的锁优化策略,指出先申请信号量再申请锁的方案能避免线程饥饿问题。最后对比了信号量与条件变量的唤
2026-07-22 20:57:52
258
11
原创 多线程同步:条件变量与生产者消费者模型
摘要:本文介绍了多线程编程中的线程同步机制,重点讲解了条件变量的使用。条件变量用于解决互斥锁导致的不公平调度和线程饥饿问题,通过等待/唤醒机制控制线程按顺序访问临界资源。文章详细说明了条件变量的接口(初始化、销毁、等待、唤醒)及其在多生产者和消费者模型中的应用。通过阻塞队列示例代码,展示了如何实现生产者-消费者模型,并解释了while循环检查条件的重要性。该模型能有效解耦生产消费流程,提升系统并发效率。
2026-07-22 00:12:23
222
原创 线程栈与TLS和线程互斥
本文主要探讨了线程栈的特性、线程局部存储(TLS)和线程互斥机制。线程栈具有动态扩容和缺页容错特性,通过mmap分配固定大小栈空间;线程局部存储通过为每个线程分配独立内存段实现数据隔离;互斥锁通过原子操作实现临界区保护,解决多线程数据竞争问题。文章还分析了不加锁导致的超卖问题,并展示了使用pthread_mutex_t互斥锁的正确实现方式,包括全局锁和局部锁两种初始化方法,以及锁的底层实现原理(原子交换指令xchg)。最后强调了临界区代码对外呈现原子性的重要性。
2026-07-20 10:14:20
256
1
原创 System消息队列
和共享内存一样,调用后删除命令后不会立刻销毁,仅做删除标记;所有当前挂载使用队列的进程全部退出后,内核才真正释放队列和里面所有消息。
2026-07-12 06:33:19
302
1
原创 线程理解和控制
文章摘要:本文深入剖析了Linux线程的核心概念与实现机制。首先阐明了Linux线程本质是轻量级进程(LWP),共享进程地址空间等资源但拥有独立执行流。重点解析了物理内存管理(struct page、页表转换)、线程私有资源(寄存器、栈等)及切换机制。通过pthread_create/join/detach等接口详解线程控制,并揭示其底层通过clone系统调用实现。文章以代码示例展示线程创建、传参及返回值处理,特别强调线程退出方式差异(return/pthread_exit/cancel)。最后剖析了pth
2026-07-07 09:48:30
551
26
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅