<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ABWSO的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ABWSO</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ABWSO]]></copyright><item><title><![CDATA[Linux网络初识]]></title><link>https://blog.youkuaiyun.com/ABWSO/article/details/161290721</link><guid>https://blog.youkuaiyun.com/ABWSO/article/details/161290721</guid><author>ABWSO</author><pubDate>Sun, 26 Jul 2026 15:21:45 +0800</pubDate><description><![CDATA[TCP/IP协议的本质是一种解决方案TCP/IP协议能分层，前提是因为问题们本身能够分层截止到目前，我们还没接触过任何协议，但是如何朴素的理解协议，我们已经可以试试了。OS源代码一般都是用C/C++语言写的下面,我们来看下面这张图主机B能识别data，并且准确提取a=10b=20c=30 吗？这是肯定的,因为双方都有同样的结构体类型struct protocol。也就是说，使用的是同样的代码来实现协议。]]></description><category></category></item><item><title><![CDATA[哈希密钥：解锁unordered容器的极速潜能]]></title><link>https://blog.youkuaiyun.com/ABWSO/article/details/160287659</link><guid>https://blog.youkuaiyun.com/ABWSO/article/details/160287659</guid><author>ABWSO</author><pubDate>Sun, 26 Apr 2026 21:07:09 +0800</pubDate><description><![CDATA[1Key（键类型）用于定义键的数据类型，必须是可哈希可比较的2.Hash（哈希函数类型，默认：std::hash<Key>）将键转换为size_t类型的哈希值，可以使用stl内置的哈希函数，该参数可以缺省，如果用unordered_SET存储自定义数据类型，则需要自己设置哈希函数.3.KeyEqual（键相等比较函数，默认：std::equal_to<Key>）判断两个键是否相等，]]></description><category></category></item><item><title><![CDATA[通信之道:解锁Linux进程间通信的无限可能(三)]]></title><link>https://blog.youkuaiyun.com/ABWSO/article/details/160414324</link><guid>https://blog.youkuaiyun.com/ABWSO/article/details/160414324</guid><author>ABWSO</author><pubDate>Wed, 22 Apr 2026 22:19:26 +0800</pubDate><description><![CDATA[消息队列实际上就是在系统中创建了一个队列,队列中的每一个成员都是一个数据块，这些数据块都是由类型和信息两部分构成，两个互相通信的进程通过某种方式看到同一个消息队列，这两个进程向对方发送数据时，都在消息队列的队尾添加数据，这两个进程获取数据块时，都在消息队列的队头取数据块。也就是说，在内核当中只需要将所有的IPC资源的ipc_perm成员组织成数组的样子，然后用切片的方式获取到该IPC资源的起始地址，然后就可以访问该IPC资源的每一个成员了。被保护的共享资源称之为临界资源,临界资源的。信号量的数据结构如下。]]></description><category></category></item><item><title><![CDATA[通信之道:解锁Linux进程间通信的无限可能(二)]]></title><link>https://blog.youkuaiyun.com/ABWSO/article/details/159964725</link><guid>https://blog.youkuaiyun.com/ABWSO/article/details/159964725</guid><author>ABWSO</author><pubDate>Sat, 18 Apr 2026 13:55:01 +0800</pubDate><description><![CDATA[在系统当中可能会有大量的进程在进行通信,因此系统当中就可能存在大量的共享内存,那么操作系统就要对其进行管理,因此共享内存除了在内存当中真正开辟空间之外,系统还一定要为共享内存维护相关的内核数据结构.代码运行后,我们可以发现关联失败了,因为我们在使用shmget函数时,没有对创建的共享内存设置权限,所以创建出来的共享内存的默认权限为0,即什么权限都没有,因此进程没有权限关联该共享内存.通过上面创建共享内存的实验可以发现,当进程运行完毕时,申请的共享内存依旧是存在的,并没有被操作系统释放.实际上。]]></description><category></category></item><item><title><![CDATA[通信之道:解锁Linux进程间通信的无限可能(一)]]></title><link>https://blog.youkuaiyun.com/ABWSO/article/details/159054215</link><guid>https://blog.youkuaiyun.com/ABWSO/article/details/159054215</guid><author>ABWSO</author><pubDate>Sun, 05 Apr 2026 21:03:21 +0800</pubDate><description><![CDATA[进程间通信简称IPC(Interprocess communication),进程间通信就是在不同进程之间传播或交换信息.]]></description><category></category></item><item><title><![CDATA[类型驱动:解锁Qt模板的渲染潜能]]></title><link>https://blog.youkuaiyun.com/ABWSO/article/details/158378004</link><guid>https://blog.youkuaiyun.com/ABWSO/article/details/158378004</guid><author>ABWSO</author><pubDate>Sat, 04 Apr 2026 07:30:00 +0800</pubDate><description><![CDATA[在网页前端开发领域中, CSS是⼀个至关重要的部分. 描述了⼀个的 "样式". 从而起到对网页美化的作用.所谓样式, 包括不限于大小, 位置, 颜⾊, 背景, 间距, 字体等等.现在的网页很难找到没有 CSS 的. 可以说让 "界面好看" 是⼀个刚需.网页开发作为 GUI 的典型代表, 也对于其他客户端GUI开发产生了影响. Qt 也是其中之⼀.Qt 仿照 CSS 的模式, 引入了 QSS, 来对 Qt 中的控件做出样式上的设定, 从而允许程序猿写出界面更好看的代码.]]></description><category></category></item><item><title><![CDATA[代码之锚:洞悉Linux库的打包与复用法则]]></title><link>https://blog.youkuaiyun.com/ABWSO/article/details/158842551</link><guid>https://blog.youkuaiyun.com/ABWSO/article/details/158842551</guid><author>ABWSO</author><pubDate>Sat, 14 Mar 2026 12:32:20 +0800</pubDate><description><![CDATA[答案是不需要,因为在后面进程的使用libmyc.so这个动态库之后,它已经被加载到了内存里面,那么如果需要使用动态库的话,首先将自己的代码和数据加载到内存里面,然后将已经加载到内存里面的动态库通过页表映射到自己的地址空间里面.原因在于:动态库要在程序运行的时候,要找到动态库然后加载并运行,那么为什么会找不到动态库的路径呢,因为在编译的时候,告诉了gcc/g++编译器动态库的路径,但是并没有告诉操作系统.PC指针会保存正在执行的指令的下一条指令的地址----->pc指针指向哪里,CPU就去执行哪里的代码。]]></description><category></category></item><item><title><![CDATA[认知之钥: 解锁软件测试需求与模型的无限潜能]]></title><link>https://blog.youkuaiyun.com/ABWSO/article/details/158739065</link><guid>https://blog.youkuaiyun.com/ABWSO/article/details/158739065</guid><author>ABWSO</author><pubDate>Tue, 10 Mar 2026 11:29:58 +0800</pubDate><description><![CDATA[在多数软件公司,会有两部分需求,⼀部分是用户需求,⼀部分是软件需求。1.1:用户需求用户需求:可以简单理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务。该需求⼀般比较简略，通常是⼀句话.用户的需求是五花八门,往往只是⼀句话.例如:实现⼀个声控灯,实现⼀个软件的登录功能.]]></description><category></category></item><item><title><![CDATA[键值密钥:解锁 C++ 关联容器的存储潜能]]></title><link>https://blog.youkuaiyun.com/ABWSO/article/details/158659955</link><guid>https://blog.youkuaiyun.com/ABWSO/article/details/158659955</guid><author>ABWSO</author><pubDate>Fri, 06 Mar 2026 11:55:43 +0800</pubDate><description><![CDATA[map中的元素总是键值对map中的key是唯一的,并且不能修改默认按照小于的方式对Key进行比较.map中的元素如果用迭代器去进行遍历,可以得到一个有序的序列map的底层为红黑树,查找效率比较高.支持[]操作符,operator[]中实际进行插入查找Multimap是关联式容器,它按特定的顺序,存储由Key和value映射成的键值对<key,value>,其中多个键值对之间的key是可以重复的.在multimap中,通过按照key排序。]]></description><category></category></item><item><title><![CDATA[品控基石: 掌握软件测试的入门密钥]]></title><link>https://blog.youkuaiyun.com/ABWSO/article/details/158586017</link><guid>https://blog.youkuaiyun.com/ABWSO/article/details/158586017</guid><author>ABWSO</author><pubDate>Thu, 05 Mar 2026 14:00:59 +0800</pubDate><description><![CDATA[案例⼀举⼀个日常生活案例，商场买衣服，买衣服的整个过程中都伴随着测试行为外观测试：初筛选，走进⻔店，先挑衣服，测试是否存在符合个人审美的⾐服试穿测试：选择尺码，测试试穿之后衣服对个人的外观是否有提升面料测试：纯棉、涤纶、布料....价格测试：询价，心理预期是300以下购买衣服，交易完成.案例二对某款购物软件进行测试启动测试：点击软件图标，测试软件是否可以正常打开.搜索测试：点击输入框，输入关键词，点击搜索.商品测试：点击商品进入详情页.购物测试：点击购买下单成功.案例三。]]></description><category></category></item><item><title><![CDATA[有序之根:掌控二叉搜索树的高效法则]]></title><link>https://blog.youkuaiyun.com/ABWSO/article/details/158387440</link><guid>https://blog.youkuaiyun.com/ABWSO/article/details/158387440</guid><author>ABWSO</author><pubDate>Wed, 04 Mar 2026 11:02:46 +0800</pubDate><description><![CDATA[二叉搜索树的删除函数是最难实现的,若是在二叉树当中没有找到待删除结点,则直接返回false表示删除失败即可,但若是找到了待删除结点,此时就有以下。每一个关键码Key,都有与之对应的值Value,即<Key,Value>的键值对。3.它的左子树与右子树叶分别为二叉搜索树.要实现二叉搜索树，我们首先需要实现一个。,该中方法在生活中十分常见。]]></description><category></category></item><item><title><![CDATA[千面之法: 释放 C++ 多态的灵活威力]]></title><link>https://blog.youkuaiyun.com/ABWSO/article/details/158284224</link><guid>https://blog.youkuaiyun.com/ABWSO/article/details/158284224</guid><author>ABWSO</author><pubDate>Tue, 24 Feb 2026 11:49:07 +0800</pubDate><description><![CDATA[4:多态的原理4.1:虚函数表4.1.1:代码1。]]></description><category></category></item><item><title><![CDATA[窗口基石:掌控 Qt 界面的无限形态]]></title><link>https://blog.youkuaiyun.com/ABWSO/article/details/157404599</link><guid>https://blog.youkuaiyun.com/ABWSO/article/details/157404599</guid><author>ABWSO</author><pubDate>Sun, 22 Feb 2026 09:00:00 +0800</pubDate><description><![CDATA[对话框是 GUI 程序中不可或缺的组成部分。⼀些不适合在主窗口实现的功能组件可以设置在对话框中。对话框通常是⼀个顶层窗口，出现在程序最上层，用于实现短期任务或者简洁的用户交互。QFiledialog（文件对话框）、QColorDialog（颜色对话框）、QFontDialog(字体对话框)、QInputDialog （输入对话框）和 QMessageBox（消息框）。要想自定义对话框,就需要继承自QDialog创建类.通过纯代码的方式来自定义QDialog界面.通过图形化的方式.]]></description><category></category></item><item><title><![CDATA[基石之力:掌握 C++ 继承的核心奥秘]]></title><link>https://blog.youkuaiyun.com/ABWSO/article/details/157586586</link><guid>https://blog.youkuaiyun.com/ABWSO/article/details/157586586</guid><author>ABWSO</author><pubDate>Thu, 12 Feb 2026 12:44:00 +0800</pubDate><description><![CDATA[继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,简称派生类.继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程.以前我们接触的复用都是函数复用,继承是类设计层次的复用//父类/基类public://基类的成员私有private:string _name = "李华";//公有继承public:int _stuid;int _major;]]></description><category></category></item><item><title><![CDATA[万能钥匙:解锁 C++ 模板的无限可能(二)]]></title><link>https://blog.youkuaiyun.com/ABWSO/article/details/157518388</link><guid>https://blog.youkuaiyun.com/ABWSO/article/details/157518388</guid><author>ABWSO</author><pubDate>Fri, 30 Jan 2026 12:50:35 +0800</pubDate><description><![CDATA[一个程序(项目)由若干个源文件共同实现，而每个源文件单独编译生成目标文件，最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。优点模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生.增强了代码的灵活性.缺陷模板会导致代码膨胀问题,也会导致编译时间变长.出现模板编译错误时,错误信息会十分凌乱,不容易定位错误.]]></description><category></category></item><item><title><![CDATA[告别浅层调用：深入模拟实现STL Stack/Queue/Priority_Queue，知其所以然]]></title><link>https://blog.youkuaiyun.com/ABWSO/article/details/157177633</link><guid>https://blog.youkuaiyun.com/ABWSO/article/details/157177633</guid><author>ABWSO</author><pubDate>Sun, 25 Jan 2026 14:34:50 +0800</pubDate><description><![CDATA[使用正向迭代器适配反向迭代器的时候会认为它两存在对称关系,那么此时就会导致两个问题。]]></description><category></category></item><item><title><![CDATA[C++ STL 容器适配器详解：玩转 Stack (后进先出) 与 Queue (先进先出)]]></title><link>https://blog.youkuaiyun.com/ABWSO/article/details/157144233</link><guid>https://blog.youkuaiyun.com/ABWSO/article/details/157144233</guid><author>ABWSO</author><pubDate>Tue, 20 Jan 2026 08:00:00 +0800</pubDate><description><![CDATA[1.stack是一种容器适配器，专门用在具有后进先出操作的上下文环境中，其删除只能从容器的一端进行元素的插入与提取操作。2. stack是作为容器适配器被实现的，容器适配器即是对特定类封装作为其底层的容器，并提供一组特定的成员函数来访问其元素，将特定类作为其底层的，元素特定容器的尾部(即栈顶被压入和弹出。3. stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类，这些容器类应该支持以下操作：empty：判空操作.back：获取尾部元素操作.]]></description><category></category></item><item><title><![CDATA[深入剖析List的底层实现原理]]></title><link>https://blog.youkuaiyun.com/ABWSO/article/details/156833398</link><guid>https://blog.youkuaiyun.com/ABWSO/article/details/156833398</guid><author>ABWSO</author><pubDate>Mon, 19 Jan 2026 00:18:14 +0800</pubDate><description><![CDATA[而一个结点需要存储的信息有：数据、前一个结点的地址、后一个结点的地址，于是该结点类的成员变量也就出来了（数据、前驱指针、后继指针）。因为该结点类只需要根据数据来构造一个结点即可，而结点的释放则由list的析构函数来完成。但是,上面的访问的方式还是有些绕,按照曾经我们学过的方式,我们更偏向于使用 ->的方式来进行访问.先记录当前结点指针的指向，然后让结点指针指向前一个结点，最后返回“自减”前的结点指针。先让结点指针指向前一个结点，然后再返回“自减”后的结点指针。判断这两个迭代器当中的结点指针的指向是否不同。]]></description><category></category></item><item><title><![CDATA[Qt常用控件(三)]]></title><link>https://blog.youkuaiyun.com/ABWSO/article/details/156709811</link><guid>https://blog.youkuaiyun.com/ABWSO/article/details/156709811</guid><author>ABWSO</author><pubDate>Fri, 16 Jan 2026 10:33:05 +0800</pubDate><description><![CDATA[这种设定方式其实并不方便. 尤其是界⾯如果内容⽐较多, 不好计算. 而且⼀个窗口大小往往是可以调整的, 按照绝对定位的⽅式, 也无法自适应窗⼝大小. 因此 Qt 引入 "布局管理器" (Layout) 机制, 来解决上述问题.运行程序, 观察代码效果. 可以看到两个按钮之间已经存在了间隔了.调整 QSpacerItem 不同的尺寸, 即可看到不同的间距.⼀个表格控件. ⼀个表格中包含若干行, 每⼀行又包含若干列. 表格中的每个单元格, 是⼀个 QTableWidgetItem。]]></description><category></category></item><item><title><![CDATA[Linux基础IO]]></title><link>https://blog.youkuaiyun.com/ABWSO/article/details/156015436</link><guid>https://blog.youkuaiyun.com/ABWSO/article/details/156015436</guid><author>ABWSO</author><pubDate>Wed, 07 Jan 2026 12:22:13 +0800</pubDate><description><![CDATA[缓冲区就是一段内存空间,由语言维护就叫做语言级的缓冲区,由操作系统内核维护就叫做内核级的缓冲区.]]></description><category></category></item></channel></rss>