<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Sudouble的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/VVBBBBB</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; VVBBBBB]]></copyright><item><title><![CDATA[AI是怎么回事]]></title><link>https://blog.youkuaiyun.com/VVBBBBB/article/details/159563724</link><guid>https://blog.youkuaiyun.com/VVBBBBB/article/details/159563724</guid><author>VVBBBBB</author><pubDate>Sat, 28 Mar 2026 07:52:42 +0800</pubDate><description><![CDATA[《AI探索笔记：拆解智能黑箱》是一份非教程性质的实践指南，通过16篇系列文章分三部分系统解构AI：1）从人脸识别到ChatGPT，揭示神经网络、学习机制等核心原理；2）分析AI在创作、驾驶等领域的真实能力边界；3）提供人机协作的实用建议。作者以&quot;拆解到可手算&quot;为准则，强调AI本质是统计学的胜利，旨在帮助读者建立独立判断能力而非成为专家。系列特别关注现象背后的简单原理（如6000万参数的&quot;旋钮&quot;比喻）与典型矛盾（如能夺冠却开不好车），最终指向普通人如何安全高效地运用AI]]></description><category></category></item><item><title><![CDATA[Linux DMA拷贝数据到用户态--图解：零拷贝Zero-Copy技术大揭秘]]></title><link>https://blog.youkuaiyun.com/VVBBBBB/article/details/152128950</link><guid>https://blog.youkuaiyun.com/VVBBBBB/article/details/152128950</guid><author>VVBBBBB</author><pubDate>Fri, 26 Sep 2025 16:39:52 +0800</pubDate><description><![CDATA[本文探讨了Linux系统中文件拷贝导致高IO负载的问题及解决方案。传统数据拷贝方式存在多次冗余拷贝和内核态/用户态切换，效率低下。文章介绍了零拷贝技术，包括mmap+write、sendfile、DMA收集和splice等方法。这些技术通过减少数据拷贝次数和状态切换来提升性能，其中sendfile+DMA收集方式在硬件支持下可实现零CPU拷贝。零拷贝技术能显著提高服务并发能力，但对数据修改和硬件支持有一定限制。]]></description><category></category></item><item><title><![CDATA[生产力和时间管理方法]]></title><link>https://blog.youkuaiyun.com/VVBBBBB/article/details/149637086</link><guid>https://blog.youkuaiyun.com/VVBBBBB/article/details/149637086</guid><author>VVBBBBB</author><pubDate>Fri, 25 Jul 2025 14:18:26 +0800</pubDate><description><![CDATA[摘要：本文探讨高效时间管理方法，强调自我管理的两个维度：向内管理情绪、身体和心态；向外管理时间分配、任务列表和团队协作。文章指出养成习惯的重要性，建议循序渐进而非追求完美，避免自我施压。同时强调情绪自主和充分休息的必要性，认为身体健康是高效工作的基础。作者通过在线课程学习，将理论应用于实践，分享了对抗时间焦虑的实用建议。]]></description><category></category></item><item><title><![CDATA[Qt5离线安装包无法下载问题解决办法]]></title><link>https://blog.youkuaiyun.com/VVBBBBB/article/details/145364326</link><guid>https://blog.youkuaiyun.com/VVBBBBB/article/details/145364326</guid><author>VVBBBBB</author><pubDate>Sun, 26 Jan 2025 09:34:28 +0800</pubDate><description><![CDATA[解决qt download from your ip is not allowed]]></description><category></category></item><item><title><![CDATA[职场如何有效学习充电]]></title><link>https://blog.youkuaiyun.com/VVBBBBB/article/details/137740577</link><guid>https://blog.youkuaiyun.com/VVBBBBB/article/details/137740577</guid><author>VVBBBBB</author><pubDate>Sun, 14 Apr 2024 11:49:08 +0800</pubDate><description><![CDATA[学习过中，也肯定会碰到很多的疑惑或不解，会涉及到和不同人的交流与沟通。学完后，也需要进行学以致用，毕竟对于计算机这种偏向于实践性质的来说，学了不用等于没学。在现在的工作中，需要接触和了解各式各样的内容，但很多时候我自己没遇到过。而平时有感觉没什么时间，因此产生了这个疑问，看完这个课程后，对这块有了较为体系化的了解。很多时候，自己无意之间看的内容，竟然也就排上了用场，那种感觉真的是很美妙。在整体的日常工作、提炼方法（学习)、实践、总结、输出分享中，一步步强化自我，达到学习充电的目的~！]]></description><category></category></item><item><title><![CDATA[如何做好软件架构]]></title><link>https://blog.youkuaiyun.com/VVBBBBB/article/details/136963924</link><guid>https://blog.youkuaiyun.com/VVBBBBB/article/details/136963924</guid><author>VVBBBBB</author><pubDate>Sat, 23 Mar 2024 11:53:49 +0800</pubDate><description><![CDATA[期间也会涉及到和各个部门或组的人进行交流，会涉及到一些软技能。因此要把一个架构做好，需要密切的团队合作，很考验架构师的综合素质和实力。总的来说，软件架构是基于实际业务需求，无法为实际业务服务，再花哨的软件架构都无法产生任何价值。最近学习了Udemy的一个软件架构课程，在此做一个记录和分享。当需求到来，我们需要分以下几个大致步骤进行分析和拆解。]]></description><category></category></item><item><title><![CDATA[Native Hook 技术，天使还是魔鬼]]></title><link>https://blog.youkuaiyun.com/VVBBBBB/article/details/135005252</link><guid>https://blog.youkuaiyun.com/VVBBBBB/article/details/135005252</guid><author>VVBBBBB</author><pubDate>Thu, 14 Dec 2023 21:56:07 +0800</pubDate><description><![CDATA[总的来说 Native Hook 是一门非常底层的技术，它会涉及库文件编译、加载、链接等方方面面的知识，而且很多底层知识是与 Android 甚至移动平台无关的。在这一领域，做安全的同学可能会更有发言权，我来讲可能班门弄斧了。不过希望通过这篇文章，让你对看似黑科技的 Hook 有一个大体的了解，希望可以在自己的平时的工作中使用 Hook 来完成一些看似不可能的任务，比如修复系统 Bug、线上监控 Native 内存分配等。]]></description><category></category></item><item><title><![CDATA[PLTHook]]></title><link>https://blog.youkuaiyun.com/VVBBBBB/article/details/135004729</link><guid>https://blog.youkuaiyun.com/VVBBBBB/article/details/135004729</guid><author>VVBBBBB</author><pubDate>Thu, 14 Dec 2023 21:22:46 +0800</pubDate><description><![CDATA[【代码】PLTHook。]]></description><category></category></item><item><title><![CDATA[深入了解GOT,PLT和动态链接]]></title><link>https://blog.youkuaiyun.com/VVBBBBB/article/details/135003925</link><guid>https://blog.youkuaiyun.com/VVBBBBB/article/details/135003925</guid><author>VVBBBBB</author><pubDate>Thu, 14 Dec 2023 20:37:06 +0800</pubDate><description><![CDATA[上面说了很多.got, .plt啥的, 那么这些section到底是做什么用的呢. 其实这些都是链接器(或解释器, 下面统称为链接器)在执行重定向时会用到的部分, 先来看他们的定义.为了灵活利用虚拟内存空间, 所以编译器可以产生位置无关的代码.可执行文件可以是位置无关的, 也可以是位置相关的, 动态链接库绝大多数都是位置无关的. GOT表可写不可执行, PLT可执行不可写,他们相互作用来实现函数符号的延时绑定. ASLR并不随机化PLT部分,]]></description><category></category></item><item><title><![CDATA[Linux虚假唤醒]]></title><link>https://blog.youkuaiyun.com/VVBBBBB/article/details/134823937</link><guid>https://blog.youkuaiyun.com/VVBBBBB/article/details/134823937</guid><author>VVBBBBB</author><pubDate>Wed, 06 Dec 2023 10:00:39 +0800</pubDate><description><![CDATA[为什么会有虚假唤醒一说。Linux内核这么强大，怎么会出现这样的情况？一直以来也很困惑，看了下文链接中的介绍后，豁然开朗。]]></description><category></category></item><item><title><![CDATA[WSL2 Ubuntu安装CUDA Toolkit]]></title><link>https://blog.youkuaiyun.com/VVBBBBB/article/details/134129558</link><guid>https://blog.youkuaiyun.com/VVBBBBB/article/details/134129558</guid><author>VVBBBBB</author><pubDate>Mon, 30 Oct 2023 23:28:07 +0800</pubDate><description><![CDATA[目前CUDA ToolKit需要切换到WSL2，在WLS1下不支持。]]></description><category></category></item><item><title><![CDATA[分布式会话跟踪系统架构设计与实践]]></title><link>https://blog.youkuaiyun.com/VVBBBBB/article/details/128701805</link><guid>https://blog.youkuaiyun.com/VVBBBBB/article/details/128701805</guid><author>VVBBBBB</author><pubDate>Mon, 16 Jan 2023 11:03:19 +0800</pubDate><description><![CDATA[这期沙龙主要内容有：分布式服务通信框架及服务治理系统、分布式监控系统实践、分布式会话跟踪系统架构设计与实践，特邀美恰CTO讲解时下热门话题“微服务”。其中既包括关键系统设计、在美团点评内部的实践经验，也包括一些项目在业界开源的运营实践。]]></description><category></category></item><item><title><![CDATA[Google Dapper-大规模分布式系统的基础跟踪设施]]></title><link>https://blog.youkuaiyun.com/VVBBBBB/article/details/128701679</link><guid>https://blog.youkuaiyun.com/VVBBBBB/article/details/128701679</guid><author>VVBBBBB</author><pubDate>Mon, 16 Jan 2023 10:55:34 +0800</pubDate><description><![CDATA[比如GFS，会有很多用户，有的可能是直接访问GFS，有的可能是比如通过Bigtable产生对GFS的访问，如果没有Dapper，对这种共享式系统将会很难调试，通过Dapper提供的数据，共享服务的owner可以方便的对用户根据各项指标(比如网络负载，请求耗时)进行排序。比如在搜索系统中，用户的一个请求在系统中会经过多个子系统的处理，而且这些处理是发生在不同机器甚至是不同集群上的，当请求处理发生异常时，需要快速发现问题，并准确定位到是哪个环节出了问题，这是非常重要的，Dapper就是为了解决这样的问题。]]></description><category></category></item><item><title><![CDATA[简述同步IO、异步IO、阻塞IO、非阻塞IO之间的联系与区别]]></title><link>https://blog.youkuaiyun.com/VVBBBBB/article/details/123784188</link><guid>https://blog.youkuaiyun.com/VVBBBBB/article/details/123784188</guid><author>VVBBBBB</author><pubDate>Sun, 27 Mar 2022 23:13:17 +0800</pubDate><description><![CDATA[POSIX

同步IO、异步IO、阻塞IO、非阻塞IO，这几个词常见于各种各样的与网络相关的文章之中，往往不同上下文中它们的意思是不一样的，以致于我在很长一段时间对此感到困惑，所以想写一篇文章整理一下。


POSIX(可移植操作系统接口)把同步IO操作定义为导致进程阻塞直到IO完成的操作，反之则是异步IO

按POSIX的描述似乎把同步和阻塞划等号，异步和非阻塞划等号，但是为什么有的人说同步IO不等于阻塞IO呢？先来说说几种常见的IO模型吧。

IO模型

这里统一使用Linux下的系统调用recv作为例]]></description><category></category></item><item><title><![CDATA[字符串匹配问题-最长公共子串]]></title><link>https://blog.youkuaiyun.com/VVBBBBB/article/details/123702408</link><guid>https://blog.youkuaiyun.com/VVBBBBB/article/details/123702408</guid><author>VVBBBBB</author><pubDate>Thu, 24 Mar 2022 09:20:23 +0800</pubDate><description><![CDATA[问题

给定两个字符串str1和str2,输出两个字符串的最长公共子串。

问题分析
利用动态规划，依次匹配str1[i]和str2[j]判断是否相同：
1.相同，上一步匹配的子串长度为dp[i-1][j-1]，则状态转换dp[i][j] = dp[i-1][j-1]+1,同时记录新的子串匹配的终点indxend；
2.不相同，则状态dp[i][j]=0（匹配的是连续公共子串，所以当前字符不匹配，长度更新为0）

注意：若匹配的字符串任意一个位于字符串的起始位置，则说明之前不可能存在匹配的子串，所以dp[i]]></description><category></category></item><item><title><![CDATA[C++11并发学习之六：线程池的实现]]></title><link>https://blog.youkuaiyun.com/VVBBBBB/article/details/123519337</link><guid>https://blog.youkuaiyun.com/VVBBBBB/article/details/123519337</guid><author>VVBBBBB</author><pubDate>Wed, 16 Mar 2022 10:10:25 +0800</pubDate><description><![CDATA[为什么要使用线程池？

   目前的大多数网络服务器，包括Web服务器、Email服务器以及数据库服务器等都具有一个共同点，就是单位时间内必须处理数目巨大的连接请求，但处理时间却相对较短。
   传统多线程方案中我们采用的服务器模型则是一旦接受到请求之后，即创建一个新的线程，由该线程执行任务。任务执行完毕后，线程退出，这就是是“即时创建，即时销毁”的策略。尽管与创建进程相比，创建线程的时间已经大大的缩短，但是如果提交给线程的任务是执行时间较短，而且执行次数极其频繁，那么服务器将处于不停的创建...]]></description><category></category></item><item><title><![CDATA[并发编程中条件变量(condition variables)实现原理]]></title><link>https://blog.youkuaiyun.com/VVBBBBB/article/details/123518753</link><guid>https://blog.youkuaiyun.com/VVBBBBB/article/details/123518753</guid><author>VVBBBBB</author><pubDate>Wed, 16 Mar 2022 09:52:29 +0800</pubDate><description><![CDATA[最初想的方向错了，需要从操作系统侧考虑如何实现条件变量。操作系统是主动调用者，而条件变量其实是操作系统预留出的接口。

因而这里主要是去考虑记录谁在等待、记录谁要唤醒、如何唤醒的问题。

0 介绍


以前只是会使用Linux下的条件变量pthread_cond_t，知道它的作用是配合互斥锁解决并发编程的同步问题，没有思考过它的实现原理，今天学习了清华大学陈渝老师的操作系统网课，总算是明白了，特此记录。

1 实现


条件变量是一种等待机制，每一个条件变量对应一个等待原因与等待队列。一般对于条件变量会有两]]></description><category></category></item><item><title><![CDATA[高性能网络编程（引自即时通讯网）]]></title><link>https://blog.youkuaiyun.com/VVBBBBB/article/details/121986224</link><guid>https://blog.youkuaiyun.com/VVBBBBB/article/details/121986224</guid><author>VVBBBBB</author><pubDate>Thu, 16 Dec 2021 23:25:39 +0800</pubDate><description><![CDATA[我的见解：对于高性能软件，一直认为只要在应用端做足够的性能优化就可以了。

这两天看了下面的一系列文章，极大的开阔了视野。将可能的性能瓶颈，从用户态程序转移至内核态程序。固然操作系统对硬件设备做了一层处理，极大的方便了用户进行调用。但在有的场景下，这一层处理速度是否足够，其实也是要打一层问号。如果真的碰到了性能瓶颈，用户态程序、内核态程序都有很大的优化空间，要对其进行综合优化，涉及到大量知识，如操作系统设计（线程、进程、线程切换、阻塞IO、非阻塞IO、同步调用、异步调用）、应用程序开发等。

如下图，从最基]]></description><category></category></item><item><title><![CDATA[Windows下令QProcess弹出CMD界面]]></title><link>https://blog.youkuaiyun.com/VVBBBBB/article/details/121016042</link><guid>https://blog.youkuaiyun.com/VVBBBBB/article/details/121016042</guid><author>VVBBBBB</author><pubDate>Thu, 28 Oct 2021 16:08:45 +0800</pubDate><description><![CDATA[需求

编写一个控制台应用程序，放到CMD中可以运行。

研究了快一下午，来回看了QProcess文档中，关于start、execute、statedDetached相关程序的说明。但通过在被调用程序中插入cout的打印输出观察后，发现运行的程序都是在父进程的cmd中运行。

使用方法

QProcess文档中有一段关于如下函数原型的描述。大意是说明在Windows平台下，QProcess的实现依靠于CreateProcess API，Qt对其进行了封装，如果需要更细粒度的控制，可以使用CreateProc]]></description><category></category></item><item><title><![CDATA[c++ extern关键字说明]]></title><link>https://blog.youkuaiyun.com/VVBBBBB/article/details/120301926</link><guid>https://blog.youkuaiyun.com/VVBBBBB/article/details/120301926</guid><author>VVBBBBB</author><pubDate>Wed, 15 Sep 2021 09:39:09 +0800</pubDate><description><![CDATA[extern 修饰变量，分两种情况：

非const对象

当修饰一个非const对象时，它是一个全局变量，整个程序都可以访问。如：file1.cpp中定义，file2.cpp中使用。


//file1.cpp
int num;

//file2.cpp
extern int num;
num++;

const对象

当有const 修饰一个变量时，该对象默认为局部变量，所以要让该变量为全局，在前面加extern。如：需在file1.cpp中的变量加extern，file2.cpp中才可以引用，否则..]]></description><category></category></item></channel></rss>