- 博客(116)
- 收藏
- 关注
原创 MySQL数据类型
摘要:本文介绍了MySQL中常见的数据类型分类与特性。数值类型包括tinyint(有/无符号)、bit(位字段)和浮点数(float/decimal),其中decimal精度更高但占用更多资源。字符串类型分为定长char和变长varchar,前者效率高但浪费空间,后者节省空间但效率较低。日期时间类型包含date、datetime和timestamp。枚举(enum)存储单一选项值,集合(set)可存储多个选项值,两者实际以数字形式存储。文章还对比了不同类型的使用场景和注意事项,如unsigned类型的使用限
2026-02-24 21:40:53
624
原创 网络协议总结
本文系统梳理了计算机网络各层核心知识点:应用层重点介绍了HTTP协议和DNS原理;传输层详解TCP协议的可靠性机制(连接管理、流量控制等)和UDP实现可靠传输;网络层解析IP地址划分、路由过程和NAT技术;数据链路层阐述以太网通信原理和ARP协议。全文以复习纲要形式呈现,涵盖四层网络模型的关键概念和协议特性,为网络知识体系提供结构化索引。(149字)
2026-02-12 20:21:21
48
原创 NAT技术
NAT是一种地址转换技术,它可以将IP数据报文头中的IP地址转换为另一个IP地址,并通过转换端口号达到地址重用的目的。NAT作为一种缓解IPv4公网地址枯竭的过渡技术,由于实现简单,得到了广泛应用。
2026-02-12 20:17:09
576
原创 网络层协议 -- ICMP协议
ICMP协议是TCP/IP协议族中的网络层协议,用于传递控制消息和错误报告。它主要功能包括确认IP包到达状态、报告丢包原因,常用于网络诊断(如ping测试连通性、traceroute追踪路径)。ICMP报文分为错误报告和查询两类,基于IP协议工作但不涉及传输层端口。其优点是简单高效、诊断能力强,但存在安全隐患(如可能被用于Ping Flood攻击)。安全防护措施包括防火墙过滤、速率限制和禁用非必要功能。典型应用场景如主机不可达时返回ICMP目标不可达报文,以及通过ping命令验证网络连通性。
2026-02-11 22:29:52
678
原创 DNS技术(域名系统)
DNS(域名系统)是将人类可读的域名转换为机器识别的IP地址的关键系统。文章介绍了DNS的背景、域名结构(如顶级域名.com、二级域名.baidu.com)、解析过程(静态和动态解析),以及使用dig工具分析DNS查询的方法。此外,还详细阐述了在浏览器输入URL后发生的完整流程:DNS解析、TCP三次握手、HTTP请求发送、服务器处理响应(可能重定向或返回HTML),以及浏览器渲染页面的过程。DNS的存在解决了IP地址难记的问题,其分级管理结构提高了网络的可扩展性和管理效率。
2026-02-10 22:07:26
757
原创 数据链路层协议 -- 以太网协议与ARP协议
本文系统讲解了计算机网络数据链路层的核心概念。首先回顾了网络四层结构中的前三层功能,重点阐述了数据链路层负责同一链路段相邻节点间的可靠传输。通过比喻形象说明了数据链路层与网络层的区别:网络层规划整体路由,数据链路层确保每一跳的可靠传输。详细介绍了以太网的技术标准、MAC地址特性、MTU限制及其对IP/UDP/TCP协议的影响。特别解析了ARP协议的工作机制,说明其如何实现IP地址到MAC地址的转换。文章通过技术细节与生活化比喻相结合的方式,帮助读者深入理解数据链路层在网络通信中的关键作用。
2026-02-06 22:39:51
672
原创 IP协议内容补充
本文探讨了网络数据传输中的分片与组装机制。IP协议负责跨网络寻址,当数据超过MAC帧1500字节MTU限制时,网络层需进行分片处理。分片过程中使用16位标识、3位标志和13位片偏移确保接收端正确重组。分片会增加丢包风险,建议通过路径MTU发现、TCP MSS协商等方式避免分片。IPv6将分片功能转移至发送端。文章还分析了NAT技术对IP地址的转换过程,说明其在地址复用和网络安全方面的重要作用。整个过程体现了网络协议栈各层协同工作的机制。
2026-02-04 23:10:45
675
原创 网络层协议 -- IP协议
本文介绍了IP协议的核心概念与应用。主要内容包括:1. IP协议基础:作为TCP/IP协议族核心,负责数据包的路由和寻址,定义了报文格式;2. IP地址管理:详解网段划分、子网掩码、CIDR技术,以及私网/公网IP的区别;3. 路由机制:阐述数据包"跳转式"传输原理,路由表的生成算法(静态/动态路由);4. 特殊地址:说明网络号、广播地址和环回地址的特殊用途;5. 现实应用:分析IP地址短缺问题及解决方案(动态分配、NAT、IPv6)。文章系统梳理了网络层的关键技术,为理解互联网通信机制
2026-02-01 20:39:38
653
原创 TCP相关实验
本文分析了TCP连接中的TIME_WAIT和CLOSE_WAIT状态机制。当服务端主动关闭连接时会进入TIME_WAIT状态,需等待2MSL(通常60s)才能释放端口,这是为了确保网络中残留报文消失和最后ACK可靠到达。CLOSE_WAIT状态出现在被动关闭方,文中通过示例展示了服务端线程未正确关闭连接导致CLOSE_WAIT的情况。此外,实验验证了listen()的backlog参数控制全连接队列长度(实际值为参数+1),当队列满时新连接会停留在SYN_RECV状态。文章还介绍了使用netstat监控连接
2026-01-23 14:37:40
651
原创 UDP与TCP的区别
TCP和UDP是两种核心传输协议:TCP可靠但慢,适用于网页、邮件等需要数据完整性的场景;UDP快速但不可靠,适合视频、游戏等实时应用。关键区别在于TCP需建立连接、保证数据有序到达,而UDP直接发送、可能丢包。选择取决于需求:要可靠性选TCP,要速度选UDP。两者各有优劣,需根据具体场景选用。
2026-01-22 20:22:45
351
原创 传输层协议--TCP协议
摘要:TCP协议是互联网中最广泛使用的可靠传输层协议,通过确认应答、超时重传、流量控制和拥塞控制等机制确保数据传输的可靠性。其报文格式包含端口号、序号、确认序号、窗口大小等关键字段,支持滑动窗口机制提高传输效率。TCP通过三次握手建立全双工连接,四次挥手释放连接资源,并采用延迟应答、捎带应答等优化性能。虽然存在粘包问题,但可通过明确包边界解决。相比UDP,TCP更复杂但可靠性更高,适用于HTTP、HTTPS、FTP等对可靠性要求高的应用层协议。
2026-01-20 16:22:05
963
原创 MySQL表的操作
本文介绍了SQL语句的分类及表的基本操作。SQL语句分为DDL(数据定义语言)、DML(数据操作语言)和DCL(数据控制语言),其中表操作主要涉及DDL和DML。详细讲解了表的创建(CREATE TABLE)、修改(ALTER TABLE)和删除(DROP TABLE)操作,包括添加/修改/删除列、重命名表等具体语法。通过创建users表示例说明了表结构、存储引擎(MyISAM)和字符集(utf8)的设置方法,并展示了查看表结构(desc/show create table)的操作。最后说明了临时表的
2025-12-01 15:55:54
675
原创 MySQL库的操作
本文介绍了MySQL数据库的基本操作,包括创建、查看、修改和删除数据库的方法。创建数据库时可指定字符集和校验规则,默认使用utf8字符集和utf8_general_ci校验规则。文章详细说明了如何查看系统默认及支持的字符集和校验规则,并解释了校验规则对数据比较的影响。此外,还介绍了数据库的备份与恢复操作,包括使用mysqldump命令备份整个数据库或特定表,以及使用source命令恢复数据。最后讲解了如何查看当前数据库连接情况,帮助监控数据库使用状态。
2025-11-22 20:50:31
798
原创 传输层--UDP协议
UDP协议作为传输层核心协议,其特点包括无连接、不可靠和面向数据报。协议采用固定8字节报头,通过16位长度字段实现报文分离,借助端口号机制完成数据交付。UDP最大报文长度限制为64K,缓冲区机制可能导致数据乱序。典型应用包括DNS、DHCP等协议。在实现上,UDP报头采用C语言结构体表示,并通过套接字接口连接应用层与内核协议栈。与TCP不同,UDP没有复杂的连接管理和重传机制,适用于对实时性要求较高的应用场景。
2025-11-19 16:21:39
905
原创 传输层--再谈端口号
传输层通过端口号标识主机上通信的应用程序,端口号仅在网络通信时被占用(如单机游戏不占用)。知名端口号(0-1023)用于常见服务(如HTTP-80、SSH-22),动态端口号(1024-65535)由系统分配。一个进程可绑定多个端口,但一个端口只能被一个进程独占。工具netstat可查看网络状态,pidof可查询进程ID。五元组(源/目的IP+端口+协议号)唯一标识通信连接。
2025-11-19 09:20:04
929
原创 应用层协议——HTTPS
本文对比分析了对称加密与非对称加密的原理与应用。对称加密使用相同密钥加解密,效率高但密钥分发存在安全风险;非对称加密采用公钥/私钥机制,安全性强但运算效率低。通过示例说明HTTP明文传输易受中间人攻击,HTTPS通过组合加密方式提升安全性:先使用非对称加密交换对称密钥,再转为对称加密通信。文章强调初始公钥可信度的重要性,揭示中间人攻击的原理与危害,指出当前主流方案是"对称加密+非对称加密+证书认证"的综合应用,在保证安全性的同时兼顾传输效率。
2025-11-18 18:25:33
683
原创 应用层协议 -- HTTP协议
本文系统介绍了HTTP协议的核心概念,包括URL组成、协议格式、方法和状态码等。首先解析了URL的7个组成部分和编解码原理,然后详细讲解了HTTP请求和响应的四部分格式。文章通过TCP服务器示例演示了HTTP请求的获取过程,并构建了包含HTML页面的响应返回浏览器。重点讨论了HTTP方法、状态码和常见Header,特别是深入分析了Host头的作用机制和Cookie/Session的安全应用。最后简要提及HTTPS的安全特性,建议使用抓包工具进行协议分析实践,为理解HTTP工作机制提供了全面指导。
2025-11-09 16:16:16
860
原创 了解“网络协议”
本文介绍了网络协议的基本概念及其在网络通信中的核心作用。首先阐述了协议作为通信双方共同遵循的规则,确保了数据传输的标准化和互操作性。然后重点讲解了结构化数据传输的两种方案:字符串组合和序列化/反序列化,并以网络版计算器为例,详细说明了如何制定应用层协议。文章还通过实际代码示例,展示了如何实现协议的序列化、反序列化、编码和解码过程,包括客户端请求和服务端响应的具体处理逻辑。最后通过测试验证了该协议能正确处理各种运算并返回正确结果或错误码。该内容为理解网络协议和实现简单网络应用提供了实用参考。
2025-10-20 21:36:41
1081
原创 网络编程套接字(五)---额外要注意的细节
本文补充了网络套接字编程中的关键细节,主要包括:1. 地址转换函数推荐使用线程安全的inet_pton和inet_ntop替代旧函数,因其支持IPv6、提供更好的错误处理和缓冲区控制;2. 分析了inet_ntoa函数的线程安全问题,指出其静态缓冲区在多线程环境下的风险;3. 解释了TCP协议通信流程,包括三次握手建立连接、全双工数据传输和四次挥手断开连接的过程;4. 对比了TCP(可靠、有连接、字节流)和UDP(不可靠、无连接、数据报)的特性差异。这些补充说明有助于更深入地理解网络编程中的底层机制和最佳实
2025-09-26 15:42:19
1062
4
原创 网络编程套接字(四)---优化单例TCP网络程序
本文探讨了TCP网络程序的并发优化方案,从单线程阻塞问题出发,逐步分析了多进程、多线程和线程池三种解决方案。重点比较了多线程与线程池的实现差异,指出线程池通过任务队列和固定线程数量,有效避免了频繁创建销毁线程的开销,提高了系统整体性能。文章详细介绍了线程池的实现原理,包括任务封装、线程同步机制等关键技术点,并提供了完整的代码示例和测试方法,为开发高性能网络服务提供了实用参考。
2025-09-24 11:19:14
1057
4
原创 网络编程套接字(三)---简单的TCP网络程序
本文介绍了如何实现一个简单的TCP网络程序,与UDP相比多出监听和连接建立环节。作者通过封装套接字类简化了TCP服务器和客户端的实现:服务器端需要创建套接字、绑定地址、设置监听状态并循环接收连接;客户端则创建套接字后直接发起连接。文章详细说明了listen、accept、connect等关键系统调用的用法,并指出单线程服务器的局限性:只能顺序处理客户端请求。最后提到后续将引入多进程或进程池来解决并发问题。代码示例完整展示了TCP通信的基本流程,包括数据读写和连接管理。
2025-09-22 21:23:39
947
2
原创 网络编程套接字(二)---简单的UDP网络程序
本文介绍了如何实现一个简单的UDP网络程序,包括服务端和客户端的开发。服务端通过创建套接字、绑定IP和端口启动服务,使用recvfrom接收数据并处理,再用sendto返回响应。客户端只需创建套接字,在发送数据时由系统自动分配临时端口,无需手动绑定。程序演示了基本的UDP通信流程:服务端持续监听,客户端发送消息并接收服务端的响应。通过封装UdpServer和UdpClient类,实现了代码的模块化和复用。该程序虽然简单,但展示了网络编程的基本原理和实现方法。
2025-09-14 20:43:30
1062
2
原创 网络数据传输必备知识
局域网通信本质是广播式传输。当主机A向主机B发送数据时,数据会被局域网内所有主机接收,但只有主机B通过MAC地址匹配识别并处理数据,其他主机则丢弃该数据。数据传输过程中采用分层协议封装,通过报头长度和自描述字段实现报头与有效载荷分离。在早期集线器网络中,为避免数据碰撞,同一时间仅允许一台主机发送数据;而现代交换机网络则允许多台主机同时通信。数据碰撞发生时,主机会等待后重传数据,这一原理曾被用于早期的网络攻击。
2025-09-12 22:58:54
1049
2
原创 网络编程套接字(一)---必要知识储备
本文系统介绍了网络编程中的核心概念与技术要点。首先阐述了IP地址(源/目的)和MAC地址的作用原理,解释了为何需要两套地址系统;其次详细讲解了端口号的功能及其与进程ID的区别;然后对比分析了TCP和UDP协议的差异及适用场景;接着说明了网络字节序的重要性及其大端设计原因;最后介绍了socket编程接口、IP地址转换函数等实用技术。文章通过生动的比喻(如唐僧取经、快递运输等)将复杂的网络概念形象化,为后续实现网络程序奠定了理论基础。全文贯穿网络协议栈各层的关键技术点,为网络编程提供了全面的知识储备。
2025-09-12 17:47:43
1324
1
原创 网络入门基础
网络已成为现代社会的关键基础设施,支撑着工作、学习、娱乐等方方面面。网络协议栈采用分层模型(应用层、传输层、网络层、数据链路层)实现高效通信,通过封装和分用机制完成数据传输。IP地址标识网络中的主机(如家庭住址),而MAC地址是设备的唯一硬件标识(如身份证号)。网络发展经历了从独立计算机到局域网、广域网的演进过程,TCP/IP协议族成为实际标准。理解网络分层、数据包传输流程及地址管理机制,是掌握计算机网络通信的基础。
2025-09-10 11:39:34
1010
原创 MySQL数据库的基础
本文介绍了在Ubuntu系统下安装和使用MySQL数据库的基本方法。主要内容包括:MySQL的两种安装方式(在线和离线)、数据库基本概念、服务器连接与管理(启动/停止/重启)、数据库服务器与表的关系。通过示例演示了数据库创建、表操作、数据插入和查询等基本SQL操作,并解释了MySQL的架构设计(连接层、服务层、引擎层、存储层)和SQL分类(DDL/DML/DCL)。最后介绍了存储引擎的概念,重点说明了InnoDB引擎的特性。文章提供了从安装到基础使用的完整MySQL入门指南。
2025-09-09 23:20:03
825
原创 线程安全的单例模式
单例模式是一种创建型设计模式,确保类仅有一个实例并提供全局访问点。其特点是通过控制实例化过程来保证唯一性,常用于资源管理、配置加载等场景。实现方式分为饿汉式(程序启动即初始化)和懒汉式(首次调用时初始化)。懒汉式需要考虑线程安全问题,可通过双重检查锁机制和volatile关键字优化。该模式还需禁用拷贝构造函数以防止多实例产生。两种实现方式各有优劣:饿汉式简单但启动慢,懒汉式启动快但需处理并发问题。
2025-07-25 17:25:11
843
6
原创 【项目设计】高并发内存池
这是一个以学习为导向、基于谷歌 tcmalloc 的开源项目。通过复刻 tcmalloc 的核心组件(如线程缓存、中心缓存、页堆管理),深入探究高性能内存分配器的设计哲学与实现细节。项目不追求工业级稳定性,而是聚焦于关键技术点的拆解与实践,帮助开发者理解内存池设计、多线程优化等底层技术,适合系统编程爱好者参考学习。
2025-07-24 16:33:26
1215
6
原创 Linux--线程池
Linux线程池是一种高效管理多线程的机制,通过预先创建并维护一组线程来执行任务,避免了频繁创建销毁线程的开销。它适用于短时间任务、高并发场景(如Web服务器),能有效提高响应速度并防止资源耗尽。文章详细介绍了线程池的实现原理,包括任务队列、互斥锁和条件变量的使用,并提供了一个基于C++的线程池代码示例。关键点包括:线程池的静态方法设计原因、任务处理与锁的关系、避免惊群效应的唤醒策略等。最后通过随机任务生成演示了线程池的实际运行效果。
2025-07-02 18:32:21
1196
原创 Linux-读者写者问题
本文介绍了读写锁在多线程编程中的应用场景及三种实现算法:读者优先、写者优先和公平算法。读写锁主要解决多读少写场景下的同步问题,其核心思想是"写独占,读共享"。文章详细分析了每种算法的实现原理,包括信号量设置和线程调度策略,并通过伪代码展示了具体实现。同时介绍了POSIX线程库中的读写锁接口函数及其使用方法。典型应用场景如售票系统,通过控制对共享变量ticket的访问,演示了读写锁如何协调读者和写者线程。不同算法在实际应用中可能产生写饥饿或读饥饿现象,需根据具体需求选择合适的策略。
2025-06-28 23:17:54
967
1
原创 Linux-信号量
文章详细介绍了POSIX信号量的工作原理及其在同步机制中的应用。信号量作为一种计数器,通过PV操作(原子性增减)实现对临界资源的细粒度管理,解决多线程/进程访问共享资源时的数据一致性问题。文章对比了二元信号量与互斥锁的异同,并通过环形队列的生产者-消费者模型示例,展示了双信号量(blank_sem和data_sem)如何协同工作:生产者关注空间资源,消费者关注数据资源,通过信号量状态自动处理队列满/空时的线程阻塞与唤醒。这种机制相比传统互斥锁方案,能显著提升系统吞吐量(30%-50%),尤其在负载不均
2025-06-26 16:16:03
1088
1
原创 Linux生产者消费者模型
生产者消费者模型是一种解决生产者和消费者强耦合问题的多线程同步机制。该模型通过缓冲区(阻塞队列)作为中介,生产者将数据放入队列后无需等待消费者处理,消费者直接从队列获取数据。这种设计实现了松耦合,支持并发操作,并能应对生产消费速度不均的情况。文中以超市运营为例,将供应商比作生产者,顾客为消费者,货架作为缓冲区,生动阐释了模型中的互斥与同步关系。代码实现展示了基于阻塞队列的生产消费逻辑,强调了条件判断和线程唤醒机制的重要性。该模型在提高系统稳定性和效率方面具有显著优势。
2025-06-18 19:30:03
929
5
原创 多线程并发编程中的竞态条件分析
这篇文章分析了一个多线程并发程序的输出可能性。题目涉及两个线程同时执行修改全局变量并输出的操作。关键点包括:线程并发执行的非原子性操作、共享变量的竞态条件、I/O缓冲机制的影响。详细解释了四种可能的输出结果(22,23,32,33),并从机器指令、线程调度和缓冲机制等角度进行了说明。特别强调了printf缓冲机制对输出顺序的影响,以及非原子操作导致的数据竞争问题。通过具体时序分析展示了不同线程交错执行可能产生的各种输出组合。
2025-06-16 17:13:21
817
1
原创 Linux-多线程安全
Linux线程管理与同步机制摘要 本文详细介绍了Linux系统中的线程管理与同步机制,主要内容包括: 线程状态管理 分离线程(Detached)与可连接线程(Joinable)的区别 pthread_detach()函数的作用和使用方法 线程资源回收机制 线程互斥 临界资源和临界区的概念 互斥量(mutex)的原理和接口 原子操作的重要性 互斥量实现原理(swap/exchange指令) 线程安全问题 可重入与线程安全的区别与联系 常见线程不安全情况分析 死锁的四个必要条件及避免方法 线程同步机制 条件变量
2025-06-15 12:13:57
1208
12
原创 Linux多线程-进阶
本片文章主要先从进程来对比讲解线程,然后分析线程与进程的关系。然后介绍了POSIX线程库。之后介绍了线程的整个生命周期,及其对应的函数。
2025-06-08 21:41:56
1100
9
原创 Linux详谈进程地址空间
本文探讨了进程地址空间与页表的底层原理及操作系统调度机制。首先解释了虚拟地址空间隔离机制,指出不同进程的相同虚拟地址通过独立页表映射到不同物理内存。接着分析了内核空间与用户空间的差异,强调所有进程共享内核级页表。在进程切换时,CPU通过CR3寄存器更新页表基址实现地址空间切换。文章还详细介绍了二级页表设计,说明其通过页目录和页表项两级映射,以4KB为单位管理内存,有效降低内存消耗。最后揭示了操作系统的本质是基于时钟中断的事件驱动循环,通过中断机制实现进程调度和资源管理。整个过程涉及硬件(如MMU、CR3寄存
2025-05-30 16:08:22
1744
18
原创 SIGCHLD信号--补充
本文介绍了两种避免僵尸进程的方法。第一种是通过自定义SIGCHLD信号处理函数,父进程可以异步处理子进程终止,无需阻塞或轮询。示例代码演示了父进程使用waitpid获取子进程退出状态的过程。第二种方法是将SIGCHLD动作设置为SIG_IGN,使子进程自动终止而不产生僵尸进程,但指出这种方法可能不适用于所有UNIX系统。文章强调了Linux环境下可以验证后一种方法的有效性。代码示例展示了父进程收到SIGCHLD信号后处理子进程终止的具体实现。
2025-05-28 13:36:06
523
4
原创 Linux多线程-入门
摘要本文介绍了Linux系统中线程的基本概念及其特性。线程是进程内部的一个执行路线,本质是在进程地址空间内运行的轻量级执行流。Linux通过进程(task_struct)模拟线程,所有线程共享进程资源。相比进程,线程创建和切换代价更小,能更好利用多处理器资源,但存在同步困难、健壮性降低等问题。线程适用于提高CPU密集型和IO密集型程序的性能。需要注意的是,Linux并没有真正的线程实现,而是通过轻量级进程(共享地址空间的进程)来模拟线程功能。线程异常会导致整个进程终止,合理使用多线程能显著提升程序性能和用
2025-05-28 13:23:00
911
2
原创 Linux进程间信号
执行该信号的默认处理动作。提供一个信号处理函数,要求内核在处理该信号时切换到用户态执行这个处理函数,这种方式称为捕捉(Catch)一个信号。忽略该信号在Linux当中,我们可以通过man手册查看各个信号默认的处理动作。
2025-05-10 23:25:18
1304
9
原创 Linux平台下SSH 协议克隆Github远程仓库并配置密钥
在使用Git进行代码管理时,配置SSH密钥是确保安全连接的重要步骤。首先,检查是否已有SSH密钥,若无则使用ssh-keygen -t ed25519 -C "your_email@example.com"生成新密钥。接着,将生成的SSH密钥添加到ssh-agent,并将公钥复制到GitHub的SSH and GPG keys设置中。完成这些步骤后,通过ssh -T git@github.com测试连接,确保配置成功。最后,使用SSH协议的地址进行git clone操作,确保Git使用S
2025-05-10 22:30:53
1134
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅