<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[风清扬zld的博客]]></title><description><![CDATA[此刻正当修行时]]></description><link>https://blog.youkuaiyun.com/zuolindian</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zuolindian]]></copyright><item><title><![CDATA[随便写写!]]></title><link>https://blog.youkuaiyun.com/zuolindian/article/details/160308625</link><guid>https://blog.youkuaiyun.com/zuolindian/article/details/160308625</guid><author>zuolindian</author><pubDate>Sun, 19 Apr 2026 15:13:55 +0800</pubDate><description><![CDATA[比如说我想深入了解某个网络协议，AI给出的答案通常是"概述式"的——讲了是什么，但不够细；它证明了"对抗式多Agent架构"确实能提升内容质量——让AI互相挑毛病，比单枪匹马确实要强。就像你问"怎么做饭"，它告诉你"放油、放菜、炒一炒"——这对初学者够用，但对我这种想真正搞懂的人来说，不够。第二层：三个专业评审官上场——技术准确性官、结构表达官、工程实用官，各自挑毛病。想象一下，你问个问题，然后得去泡杯茶、刷会手机、上个厕所，回来还没好。结构化：有清晰的章节层次，不像AI直接生成的那么"流水账"]]></description><category></category></item><item><title><![CDATA[网络深处的守门人]]></title><link>https://blog.youkuaiyun.com/zuolindian/article/details/146768291</link><guid>https://blog.youkuaiyun.com/zuolindian/article/details/146768291</guid><author>zuolindian</author><pubDate>Sun, 30 Mar 2025 16:34:37 +0800</pubDate><description><![CDATA[最近因为工作需求的原因，在学习IEEE 802.1X(简称dot1x)协议，学习了有一阵子了，而且本地攒了很多在学习过程中的材料，一直打算整理一下，写成一篇博客，但是我感觉可能我还理解的不太到位，所以打算后面再详细写写该协议的原理。但是刚才脑瓜子想到一个事情：从过年到现在，DEEPSEEK持续爆火，各大企业和个人投入非常大的热情，来使用它。可以说，你要是还没使用它，你会觉得自己落伍了。我突然就想，如果要AI大模型以小说的形式介绍dot1x，它们会怎么介绍呢？]]></description><category></category></item><item><title><![CDATA[C语言网络编程探秘]]></title><link>https://blog.youkuaiyun.com/zuolindian/article/details/143327800</link><guid>https://blog.youkuaiyun.com/zuolindian/article/details/143327800</guid><author>zuolindian</author><pubDate>Tue, 29 Oct 2024 14:09:32 +0800</pubDate><description><![CDATA[最近在阅读Redis源代码的网络IO模型，于是想写一篇socket通信的文章，以总结一下。但是我又不想自己从头写，毕竟从写例子到组织语言需要耗费太多的时间，而且我组织的语言通常比较啰嗦。我想到我平时经常用到AI编程工具，于是我在`百度文心快码`、`腾讯云 AI 代码助手`、`MarsCode AI `提出了以下问题，要他们写一篇关于C语言网络编程的博客，本文就是在这三个AI编程工具写的博客基础上做的一些修改，并将举的例子在本地运行了。]]></description><category></category></item><item><title><![CDATA[C语言的预处理指令]]></title><link>https://blog.youkuaiyun.com/zuolindian/article/details/142926399</link><guid>https://blog.youkuaiyun.com/zuolindian/article/details/142926399</guid><author>zuolindian</author><pubDate>Mon, 14 Oct 2024 19:18:11 +0800</pubDate><description><![CDATA[本文通过示例介绍了C语言的宏定义和条件判断两个预处理指令的使用方法。]]></description><category></category></item><item><title><![CDATA[Linux下的文件打包、压缩和解压缩]]></title><link>https://blog.youkuaiyun.com/zuolindian/article/details/142870340</link><guid>https://blog.youkuaiyun.com/zuolindian/article/details/142870340</guid><author>zuolindian</author><pubDate>Sat, 12 Oct 2024 10:01:33 +0800</pubDate><description><![CDATA[本文主要介绍了在Linux下常用的打包和压缩工具的使用以及相关示例。其中打包工具介绍了tar。压缩工具介绍了gzip、bzip2、xz。]]></description><category></category></item><item><title><![CDATA[GCC使用入门]]></title><link>https://blog.youkuaiyun.com/zuolindian/article/details/142623328</link><guid>https://blog.youkuaiyun.com/zuolindian/article/details/142623328</guid><author>zuolindian</author><pubDate>Sun, 29 Sep 2024 07:30:00 +0800</pubDate><description><![CDATA[本文通过实例介绍了gcc的基本使用。包括单个文件的编译过程、多个文件的编译过程、静态库文件和动态库文件的制作与使用、编译选项、调试信息、编译优化]]></description><category></category></item><item><title><![CDATA[递归、排序、二分查找(C语言实现)]]></title><link>https://blog.youkuaiyun.com/zuolindian/article/details/142250720</link><guid>https://blog.youkuaiyun.com/zuolindian/article/details/142250720</guid><author>zuolindian</author><pubDate>Sat, 14 Sep 2024 10:04:15 +0800</pubDate><description><![CDATA[本文是作者之前在学习一书时的笔记，并用C语言将相关的排序算法和二分查找实现之。]]></description><category></category></item><item><title><![CDATA[二层交换基础]]></title><link>https://blog.youkuaiyun.com/zuolindian/article/details/141232087</link><guid>https://blog.youkuaiyun.com/zuolindian/article/details/141232087</guid><author>zuolindian</author><pubDate>Sun, 25 Aug 2024 11:30:00 +0800</pubDate><description><![CDATA[缺省时，整台交换机的所有端口均属于同一个广播域当网络中的交换机数量特别多时，广播域将变得特别庞大，网络中可能充斥着大量广播无法根据业务需求灵活的规划网络逻辑单元。VLAN(Virtual Local Area NetWork，虚拟局域网)，可以解决上面的问题。它能够将一个物理的LAN在逻辑上划分成多个广播域。一个VLAN中所有设备都是在同一广播域内，不同的VLAN为不同的广播域。]]></description><category></category></item><item><title><![CDATA[图解搜索算法(BFS、DFS、Dijstra算法、KSP算法、A*算法)]]></title><link>https://blog.youkuaiyun.com/zuolindian/article/details/141393153</link><guid>https://blog.youkuaiyun.com/zuolindian/article/details/141393153</guid><author>zuolindian</author><pubDate>Wed, 21 Aug 2024 15:05:34 +0800</pubDate><description><![CDATA[由于在工作中用到了BFS算法、DFS算法、Dijkstra算法、KSP算法，因此将上述算法的工作原理记录一下，同时用图解的方式解释相应的算法。A*算法由于本文在工作中，还没用过，因此只做了一个简单的介绍。]]></description><category></category></item><item><title><![CDATA[VRRP(虚拟路由冗余协议)工作原理]]></title><link>https://blog.youkuaiyun.com/zuolindian/article/details/141342306</link><guid>https://blog.youkuaiyun.com/zuolindian/article/details/141342306</guid><author>zuolindian</author><pubDate>Tue, 20 Aug 2024 18:30:00 +0800</pubDate><description><![CDATA[VRRP通常部署在局域网中的出口网关设备上，通过将具有相同出口的路由设备纳入同一个备份组并通告为一台虚拟路由器作为默认网关，实现对局域网内网关设备的备份。只要将用户的默认网关地址设置为虚拟路由器地址，当单点网关设备故障造成网络中断时，VRRP协议能自动将数据转发切换至备份路由器进行，便可实现在不改变网络内主机默认网关前提下网络通信的快速恢复。VRRP目前有两个版本VRRPv2和VRRPv3，其中VRRPv2仅适用于IPv4网络，VRRPv3适用于IPv4和IPv6两种网络，本文讲的是VRRPv2。标准。]]></description><category></category></item><item><title><![CDATA[生成树技术：MSTP协议基础知识]]></title><link>https://blog.youkuaiyun.com/zuolindian/article/details/141224575</link><guid>https://blog.youkuaiyun.com/zuolindian/article/details/141224575</guid><author>zuolindian</author><pubDate>Sat, 17 Aug 2024 08:30:00 +0800</pubDate><description><![CDATA[RSTP虽然在STP的基础上进行了一定程度的优化，但是依然与STP一样存在一个较大的短板，那就是当它们都被部署在交换网络中时，所有的VLAN共用一颗生成树。这个短板将使得网络中的流量无法再所有可能链路上实现负载分担，导致链路带宽利用率、设备资源利用率较低。Cisco的私有生成树协议PVST(Per-VLAN Spanning Tree)，它基于每个VLAN进行生成树的计算。这种技术的优点是实现了负载分担。但是这种技术也有缺点。]]></description><category></category></item><item><title><![CDATA[生成树技术：RSTP协议基础知识]]></title><link>https://blog.youkuaiyun.com/zuolindian/article/details/141197959</link><guid>https://blog.youkuaiyun.com/zuolindian/article/details/141197959</guid><author>zuolindian</author><pubDate>Thu, 15 Aug 2024 07:53:24 +0800</pubDate><description><![CDATA[由于STP协议的缺点，引入了RSTP协议。RSTP全称Rapid Spanning-Tree Protocol，快速生成树协议。该协议在IEEE 802.1W中有描述。RSTP是从STP发展而来，实现的基本思想一致。RSTP具备STP的所有功能，可以兼容STP运行。RSTP和STP有所不同：(1) 减少了端口状态。RSTP只有丢弃(Discarding)、学习(Listening)、转发(Forwarding)三个状态；(2) 增加了端口角色。]]></description><category></category></item><item><title><![CDATA[生成树技术：STP协议基础知识]]></title><link>https://blog.youkuaiyun.com/zuolindian/article/details/141192286</link><guid>https://blog.youkuaiyun.com/zuolindian/article/details/141192286</guid><author>zuolindian</author><pubDate>Wed, 14 Aug 2024 16:00:57 +0800</pubDate><description><![CDATA[如下图所示的交换网络，要让三个二层交换机可以相互通信的话，则至少需要如下图所示的连接。但是如果SW3和SW2之间的连接故障了，则SW1和SW3之间通信就断开了，因此这个网络不够健壮。为了减少单链路故障，提升网络的健壮性、增加网络的冗余性。交换网络中通常会增加，比如将SW1和SW3之间也增加一条链路，如下图所示：但是这又会引入二层环路。]]></description><category></category></item><item><title><![CDATA[线程与线程同步]]></title><link>https://blog.youkuaiyun.com/zuolindian/article/details/141128513</link><guid>https://blog.youkuaiyun.com/zuolindian/article/details/141128513</guid><author>zuolindian</author><pubDate>Mon, 12 Aug 2024 12:54:24 +0800</pubDate><description><![CDATA[本文主要介绍线程以及线程的多种同步方式，包括互斥锁、条件变量、读写锁、Posix信号量]]></description><category></category></item><item><title><![CDATA[常用Linux命令行总结]]></title><link>https://blog.youkuaiyun.com/zuolindian/article/details/141054838</link><guid>https://blog.youkuaiyun.com/zuolindian/article/details/141054838</guid><author>zuolindian</author><pubDate>Fri, 09 Aug 2024 10:23:21 +0800</pubDate><description><![CDATA[下面的表格是作者在工作中常用到的一些命令行，有些命令不止表中列出的功能。如果想要获知其完整功能，请自行搜索。]]></description><category></category></item><item><title><![CDATA[C语言文件操作]]></title><link>https://blog.youkuaiyun.com/zuolindian/article/details/140766767</link><guid>https://blog.youkuaiyun.com/zuolindian/article/details/140766767</guid><author>zuolindian</author><pubDate>Mon, 29 Jul 2024 11:21:05 +0800</pubDate><description><![CDATA[它们产生相同的结果，但是当文件是一个符号链接时，lstat返回的是该符号链接本身的信息，而stat返回的是该链接指向的文件的信息。从上面的结果上看，第一次有输出到屏幕上，而第二次没有输出到屏幕上，这是因为write函数是直接写入内核缓存的，而printf是先写入库缓存的，待满足一定的条件后，才会将库缓存中的内容写到内核中。从上面的输出可以看出来，fgets读取的结果不符合预期，readBuf中没有内容，原因和之前说的一样，在fputs之后，文件指针指向了末尾，因此再fgets函数的时候，就读取失败了。]]></description><category></category></item><item><title><![CDATA[一个数是否为2的次幂的问题]]></title><link>https://blog.youkuaiyun.com/zuolindian/article/details/119744139</link><guid>https://blog.youkuaiyun.com/zuolindian/article/details/119744139</guid><author>zuolindian</author><pubDate>Mon, 16 Aug 2021 22:53:10 +0800</pubDate><description><![CDATA[判断一个数是否为2的次幂
判断一个数是否2的次幂的方法:
(n &amp; n - 1) == 0

因为如果一个数是2的次幂，则它对应的二进制数中只有一个1, 如果将这个数减1，则这个仅有的1会变成0，而它的低位则会变成1。所以，将这个数与减去1的数进行与运算后就会为0。
unsigned int IsPowerOfTwo(unsigned int n)
{
    if ((n &amp; n-1) == 0) {
        return 1;
    }
    return 0;
}

计算大]]></description><category></category></item><item><title><![CDATA[悬空指针与野指针]]></title><link>https://blog.youkuaiyun.com/zuolindian/article/details/119410601</link><guid>https://blog.youkuaiyun.com/zuolindian/article/details/119410601</guid><author>zuolindian</author><pubDate>Thu, 05 Aug 2021 10:23:02 +0800</pubDate><description><![CDATA[悬空指针(dangling pointer)
在C语言中，调用free§函数会释放p指向的内存块，但是不会改变p本身。如果忘记了p不再指向有效内存块，混乱可能随即出现。

If a pointer still references the original memory after it has been freed, it is called a dangling pointer.

char *p = malloc(4);
...
free(p);
...
strcpy(p, "abc"); // wr]]></description><category></category></item><item><title><![CDATA[【转载】__attribute__ ((__packed__))关键字]]></title><link>https://blog.youkuaiyun.com/zuolindian/article/details/119305201</link><guid>https://blog.youkuaiyun.com/zuolindian/article/details/119305201</guid><author>zuolindian</author><pubDate>Sun, 01 Aug 2021 22:50:47 +0800</pubDate><description><![CDATA[转载于: https://blog.youkuaiyun.com/u012308586/article/details/90751116
不想要字节对齐的时候，有没有办法取消字节对齐？答案是可以，就是在结构体声明当中，加上__attribute__ ((packed))关键字，它可以做到让我们的结构体，按照紧凑排列的方式，占用内存。来段实际代码：
#include &lt;stdio.h&gt;
#include &lt;iostream&gt;

using namespace std;

struct test1 ]]></description><category></category></item><item><title><![CDATA[C语言弹性数组成员]]></title><link>https://blog.youkuaiyun.com/zuolindian/article/details/119304904</link><guid>https://blog.youkuaiyun.com/zuolindian/article/details/119304904</guid><author>zuolindian</author><pubDate>Sun, 01 Aug 2021 22:31:36 +0800</pubDate><description><![CDATA[假设需要定义一个结构，这个结构包括一个len字段和一个data字段。分别表示这个数据的长度和对应的数据。我们一般有以下几个方法这样做。
引言
方法一：定长数组
第一种方法就是使用定长数组。即对数组设置一个足够大的缓冲区。如：
struct vstring1 {
    int len;
    char data[N];
};

其中N是一个表示字符串最大长度的宏。考虑到字节对齐，则这个结构体的大小 大于等于:
sizeof(int) + sizeof(char) * N;

这样做既限制了我们使用字符串的]]></description><category></category></item></channel></rss>