- 博客(13)
- 收藏
- 关注
原创 深入理解 HTTP:从基础概念到代码实现
通过本文的介绍,我们对 HTTP 的基本概念有了更深入的理解,包括 HTTP 与 HTTPS 的区别、HTTP 服务器端与客户端的连接方式、HTTP 状态码以及 HTTP 报文。同时,通过分析具体的代码实现,我们了解了如何使用 C 语言编写一个简单的 HTTP 服务器。希望本文对你理解 HTTP 有所帮助。
2025-04-01 18:50:50
837
原创 TCP 协议深度解析
三次握手是 TCP 建立连接的过程,主要目的是同步双方的初始序列号,并建立可靠的连接。四次挥手是 TCP 断开连接的过程,主要目的是确保双方都能正确地关闭连接。:服务器直接进入ESTABLISHED状态,可能遭受SYN Flood攻击。启用TCP延迟确认机制(delayed ACK):客户端未确认服务器的序列号(seq=y):当网络拥塞导致旧SYN包延迟到达时。支持FIN-ACK合并的系统实现。
2025-03-27 19:56:06
952
原创 TCP网络编程与多进程并发实践
本文通过两个C语言代码示例(ser.c/cli.c),演示基于TCP协议的网络通信和fork多进程并发服务的实现。内容涵盖套接字编程核心API、网络字节序转换、多进程并发处理机制等关键技术点。
2025-03-27 16:17:45
404
原创 Shell脚本编程完全指南:从基础到自动化项目实战
本文系统化解析Shell脚本编程的核心技术与实战应用,涵盖以下关键内容:基础到进阶语法;文本处理三剑客;企业级项目实战;高级开发技巧。
2025-03-26 18:52:58
1019
原创 Linux环境下Git使用全攻略:从安装到实战操作
本文详细讲解Linux环境下Git的全流程使用指南,涵盖:Git安装验证:通过apt快速安装及版本确认;四大工作域解析:Workspace、Stage、Repository、Remote的协作关系;文件状态转换机制:Untracked/Unmodified/Modified/Staged状态转换流程图解;核心操作命令:仓库初始化→暂存提交→版本回退→日志查看的完整代码示例;高效分支管理:创建/切换/合并分支的实战命令及冲突解决思路;远程仓库配置:SSH密钥生成、公钥绑定、克隆推送的标准化流程;
2025-03-23 13:46:37
625
原创 Git 图形化操作全攻略:从本地到云端的可视化实践指南
本文系统梳理 Git 与 GitHub 的核心技术架构,对比国内镜像服务方案,提供多平台安装指南与图形化操作全流程解析。
2025-03-21 17:19:42
620
1
原创 深入探索 MySQL 数据库:基础、操作与 C 语言访问
本文深入介绍 MySQL 数据库,涵盖数据库概念、分类,阐述其安装、基本操作及数据表操作方法,详细讲解 C 语言访问 MySQL 的流程与相关函数,助力读者掌握 MySQL 基础与应用开发知识。
2025-03-20 16:33:50
939
5
原创 哈希表:核心原理与冲突解决方案
方法适用场景优点缺点直接定址法小范围连续数据无冲突,时间复杂度为O(1)空间利用率低除留余数法通用场景灵活高效,需处理冲突适用场景广泛线性探测法低冲突率环境实现简单易产生聚集效应链地址法频繁插入/删除场景避免聚集效应需要额外指针空间动态扩容高负载场景保持高效查询性能容量扩大耗时private:// 初始哈希表大小static const double负载因子阈值 = 0.7;// 负载因子阈值// 哈希表数组,键为字符串,值为对应的值int size。
2025-02-19 14:16:30
938
1
原创 柔性数组(Flexible Array Member)
柔性数组是C99标准引入的特性,允许在结构体的最后一个成员定义为未知大小的数组。这种设计使得结构体的长度在编译期不完全确定,运行时可按需动态调整数组大小。int i;int a[0];// 柔性数组成员(部分编译器支持)// 或 int a[];// C99标准推荐写法。
2025-02-19 11:01:58
178
1
原创 排序算法 (C语言)
本文围绕排序算法展开,对冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序以及堆排的时间复杂度,空间复杂度,代码以及代码思路做了详细概括。
2024-09-29 10:46:22
1656
4
原创 C语言之下动态内存
在这里你可能注意到,void free(void *ptr) 参数中只需要传入一个指针参数,就可以释放掉所分配的内存,它是如何确定指针所指向的区域分配了多大的内存空间呢?为了完成释放任务,很多内存分配函数都会在一个称之为头部指针(header,或者称之为头块)的地方保存一些额外的信息,头部指针通常在放回的内存块之前。* 1) 重复释放同一块内存 -> s=malloc free(s);* if(tmp == NULL) //扩容失败 原先内存不需要释放。
2024-05-13 17:35:38
1377
1
原创 C语言指针
指针变量加1,即向后移动1 个位置表示指针变量指向下一个数据元素的首地址。至于真实的地址加了多少,要看原来指针指向的数据类型是什么。数组与指针 arr[0] ==> *(arr+0)p+1 ==>p的偏移量+sizeof(类型)字节。大小 x86 32位。1.字符数组,查找是否存在元素‘a’ (指针)int*p=&a p指针指向a。
2024-04-08 20:20:24
1381
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人