自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(670)
  • 收藏
  • 关注

原创 线程池 和 IO复用(IO模型),是2个完全不相关的概念吗?

两者属于不同层级的技术(线程管理 vs IO模型),但存在互补关系。选择取决于业务特性:IO密集型优先考虑多路复用,CPU密集型适合线程池,混合型场景可组合使用。

2025-07-18 11:07:44 76

转载 多线程间同步之:事件Event

下面对这个触发一个事件脉冲PulseEvent ()写一个例子,主线程启动7个子线程,其中有5个线程Sleep(10)后对一事件调用等待函数(称为快线程),另有2个线程Sleep(100)后也对该事件调用等待函数(称为慢线程)。而不论手动置位事件还是自动置位事件,那2个慢线程由于Sleep(100)所以会错过事件脉冲,因此慢线程都会进入等待状态而无法顺利执行下去。事件Event内部它包含一个使用计数(所有内核对象都有),一个布尔值表示是手动置位事件还是自动置位事件,另一个布尔值用来表示事件有无触发。

2025-07-17 18:07:02 5

原创 多线程间同步之:信号量Semaphore

在对信号量调用等待函数时,等待函数会检查信号量的当前资源计数,如果大于0(即信号量处于触发状态),减1后返回让调用线程继续执行。第三个参数表示名称,不同进程中的各线程可以通过名称来确保它们访问同一个信号量。第三个参数可以用来传出先前的资源计数,设为NULL表示不需要传出。第四个参数表示信号量的名称,传入NULL表示匿名信号量。第二个参数表示增加个数,必须大于0且不超过最大资源数量。第二个参数表示信号量句柄继承性,一般传入TRUE即可。可以看出来,信号量也可以解决线程之间的同步问题。

2025-07-17 17:46:35 375

原创 Winsock2接口使用

在recv之前,使用"IO复用(select/poll)\IOCP模型" + 线程池=》可以提高效率!是Windows平台上用于网络通信的API库,它提供了丰富的函数和数据结构用于处理TCP/IP协议族。5.等待客户端连接accept(返回一个新建立连接的套接字)8.释放winsocket库资源WSACleanup。6.接收/发送数据recv/send。7.关闭套接字closesocket。3.绑定本地IP和本地端口bind。2.创建监听套接字Socket。4.监听套接字listen。

2025-07-17 15:13:29 107

原创 VS中没有x64平台问题:为VS2005添加X64编译平台

完成之后,重新打开vs项目:就会出现x64平台!原因:vs安装的时候,没有安装x64编译环境!

2025-07-15 20:52:09 197

原创 一定要会画 list节点指针指向

目的:在分析第2行代码的指针指向时,不要错误的认为成(第1行代码变更前的指向)。实际可能在第1行代码变更时,就改变了原有的指针指向!3、后面的每一行代码,都依托于“前方代码 指针变更后的结果”!一定要逐行进行分析!1、list节点前后2个节点,共计4个指针的指向问题!a:是节点2的前驱节点的后继指针;d:是节点2的后继节点的前驱指针;之后,才能更新指针的指向!b:是节点2的前驱指针;c:是节点2的后继指针;2、首要的是:搞清楚。

2025-07-05 11:40:31 153

原创 类型萃取 编译报错问题:typedef _A::size_type size_type;

1、模板类型T,在没有实例化的时候不能确定其类型。根据编译错误信息,加一个typename前缀即可。

2025-07-05 10:41:55 211

原创 架构、框架、设计模式 区分

微服务框架‌,代表框架‌:Spring Boot(Java)、Express.js(Node.js)。‌MVC衍生架构模式:包括MVVM、MVP、MVI、VIPER等衍生架构模式;假设C/S + MVC,编码层面可以用某些设计模式,如:“单例模式”,也可以不用!2、从概念的广泛性而言,架构(C/S, B/S)> MVC框架 > 设计模式;如:设计一个软件,首先可以知道是C/S 还是B/S部署;假设是C/S,那么可以采用MVC模式,也可以不采用;常见架构:C/S, B/S;

2025-07-03 16:17:04 177

原创 借助AI总结规律:分析、归纳、总结出规律比人强!

2、对于算法题,有些提醒“描述的很复杂”,无法得出有效结论!deepseek总结出如下规律!人的归纳总结能力不足:难以将 复杂问题简化、抽象,无法得出有效结论!用AI帮忙总结规律!然后,自己归纳保存!

2025-06-17 14:24:10 83

转载 std::list 的容器类中:友元 friend class iterator,有什么作用?

在这个例子中,如果 MyList::Node 是 private 的,并且 iterator 不是 MyList 的友元,那么 iterator 中的 current_node->data 和 current_node->next 将无法编译,因为它试图访问私有成员。是一种在保持容器类封装性的同时,允许其紧密耦合的迭代器类访问必要内部细节的有效方式。如果 MyList 的节点及其成员是 private 的,那么一个外部的 iterator 类将无法直接访问它们来执行其职责(如获取数据、移动到下一个节点)。

2025-06-16 17:48:14 25

原创 学习C++模版的神器:CppInsights

CppInsights是一个强大的工具,它通过展示C++代码的底层实现,极大地增强了开发者对C++语言的理解。随着C++标准的不断演进,CppInsights的功能也在不断扩展,未来将为开发者提供更多的支持和帮助。CppInsights正是在这一背景下应运而生的工具,它通过展示C++代码的底层实现,帮助开发者更好地理解C++代码的工作机制。代码审查和维护:CppInsights可以帮助开发者在代码审查过程中更清晰地理解代码的行为,特别是在处理复杂的模板和隐式代码生成时。2、什么是CppInsights?

2025-06-03 13:39:44 789

原创 算法技巧 整理:滑动窗口

1、滑动窗口算法: 本算法通过维护一个动态变化的窗口,能够在 O(n) 时间复杂度内找到最长的符合条件的区间。

2025-05-06 21:45:53 200

原创 加载ko驱动模块:显示Arm版本问题解决!

开始以为是内核zImage\dtb文件、根文件系统版本不统一导致的!更换了好几个linux版本测试,发现还是不行!后面发现是:menuconfig问题!

2025-05-01 20:53:33 658

原创 Visual Studio 自动生成:C++代码“类图“(QT项目也可以)

前几天学习了UML类图的基本知识,见文档UML类图快速掌握,但是手工绘制还是比较繁琐,本文记录了Visual Studio 2022自动生成C++代码类图的操作方法,可极大提高工作效率。文档记录的工具版本Visual Studio 2015(导入QT5.12.9版本pro项目)。

2025-04-29 18:17:15 607

原创 Python语法

1、

2025-04-29 15:42:28 108

转载 cl : 命令行 warning D9030: “/Gm”与多处理不兼容;忽略 /MP 开关

其中/Gm和/MP都是cl.exe命令行参数,参见http://blog.csdn.net/lijie45655/article/details/6730885。此时/MP 开关被关闭,不能使用多线程编译,生成速度又会变得巨慢无比,/Gm是最小生成,解决方法是打开项目属性页,把启用最小生成设为否。原文链接:https://blog.csdn.net/fly2leo/article/details/8229183。cl : 命令行 warning D9030: “/Gm”与多处理不兼容;操作与多处理不兼容;

2025-04-28 18:07:51 67

原创 驱动 开发

后面的“4.1.15”,这里要根据你所使用的 Linux 内核版本来设置,比如 ALPHA 开发板现在用的是 4.1.15 版本的 Linux 内核,因此就是“/lib/modules/4.1.15”。不然挂载驱动的时候,会报错(不一致)!uboot、linux内核(zImage\dtb)、根文件系统rootfs,可以在保留另外2个同时,随意替换其中的1个(在开发这1个的时候,可以找另外2个配合,做到随时随地开发/替换任意1个。但是,如果要把lcd驱动问题解决,需要注意各个板子型号特征量的不同,分别设置。

2025-04-21 10:29:27 415

原创 数字 电路

1.

2025-04-18 14:38:15 99

转载 UML建模图(类图)

原文链接:https://blog.csdn.net/m0_67656158/article/details/1431782101. 前言来理一理我们前面走过的【软件工程】学习之旅,来帮助大家更好的搞清楚软件工程学习思路。软件工程是什么首先定义软件工程的概念,解释其重要性和目标。要通过系统化(系统定界方法)、工程化方法(引入软件开发过程)来解决软件工程问题说明软件工程面临的挑战,并引入系统化和工程化方法作为解决方案。

2025-04-14 11:33:29 147

转载 看懂电路图

C31起到的是增加稳定系数的功能,由于电容两端电压不能突变,假设单片机的功耗短暂的增加了一下,我们不希望这个信号影响到AMS1117的输出电压,因为AMS1117有一定的反应时间,如果没有这个电容,那么IC就因为很小的波动而持续输出高电压或低电压,不稳定的电源对单片机的伤害还是很大的。AMS1117-3.3是在单片机电源中极其常用的一款贴片IC,能把5V的电压转换成3.3V的电压,VCC5和一般接地符号(倒三角)来自于5V的供电,C30接在VCC5和接地符号之间,起到了滤波的效果。

2025-04-11 15:45:53 47

原创 使用VS2022远程调试Linux项目问题

2.2 原因是自己创建的是一个“生成文件项目”。而这类项目 配置类型是“生成文件”,不是.out类型!所以一直无法生产.out可执行文件!当修改为“应用程序(.out)”之后,就可以生成可执行文件了!而且属性页的显示也变化了!2.1 c++语言格式 正确、远程也没有问题!2、搞了很久,发现是自己的一个疏漏!

2025-04-04 17:24:04 385

原创 VS2022中按照免费使用的AI助手Fitten code

2、VS2022扩展中直接搜索,下载按照。之后要关闭,重新打开VS2022才能使用。1、VS版本要19及其以后,这里可以从网上搜索,看一下需要新版本支持。

2025-04-04 11:34:27 477

原创 VS2022远程调试Linux程序

实际是:代码还是先部署在Windows中VSStudio项目中,之后编译的时候,会自动将这些“源码”复制一份到Linux的远程项目文件夹内!4.1 打开VS软件 ,打开软件上方菜单栏的【工具】->【选项】, 然后鼠标下翻滚选择【跨平台】->【连接管理器】->[添加]菜单栏上的【工具】->【选项】->【跨平台】->【连接管理器】->【远程连接标头管理器 ->【下载】注意:勾选的时候,要勾选下方的选项,才能调试Linux环境下运行的程序!IP】、【用户名】、【密码】,之后点击“连接”,之后选择“是”。

2025-04-04 11:24:12 860

原创 并发模型之事件驱动模型:其中的之一的Reactor模型

这种方式,服务器端使用一个线程基于多路复用就完成了所有的 IO 操作(包括连接,读数据、业务处理、写数据等),没有多线程间通信、竞争的问题,实现简单。这虽然是"传统"的处理方式,但是也是最经典的IO线程模型。这种模型下,Reactor线程只负责处理所有的事件的监听和响应(数据读、写),而不参与数据的业务处理(数据编解码、逻辑处理)。操作系统内核收到用户进程发起的请求后,从I/O设备读取数据到kernel buffer中,再将buffer中的数据拷贝到用户进程的地址空间,用户进程获取到数据后返回给客户端。

2025-03-30 15:21:22 587

原创 IO模型之于并发编程模型、并发模型之于架构模式

‌:利用操作系统的进程模型来实现并发。缺点是创建进程的开销高,且上下文切换的开销也大。线程比进程创建的系统开销小,但线程间通信复杂,需要解决竞态条件问题。‌:协程在用户态进行调度,避免了线程创建和上下文切换的开销,适合高并发场景。选择合适的并发模型可以提高程序的性能和稳定性。‌:通过单个线程或进程监听多个I/O事件,适用于高并发场景。‌:通过消息队列来处理并发任务,适用于解耦和异步处理。这种模型可以显著减少系统资源的消耗,提高系统的响应速度‌3。,可以有效地处理高并发场景下的任务调度和消息传递‌4。

2025-03-29 18:23:16 254

转载 IO模型在:Windows系统 与 linux系统的对比

IO复用。

2025-03-29 17:14:16 62

原创 c++跨平台的开源网络传输库LibCurl使用

libcurl是一个跨平台的开源网络传输库,它支持许多协议,包括HTTP、HTTPS、FTP、FTPS、SCP、SFTP、TFTP、LDAP、以及许多其他协议和文件传输方式。libcurl允许开发者使用C语言编写代码来进行网络通信,并提供了简单易用的API接口。跨平台性: 可以在各种操作系统上使用,包括Linux、Windows、macOS等。多协议支持: 支持多种常用的网络协议,例如HTTP、FTP等,以及安全协议如HTTPS、FTPS等。

2025-03-26 15:19:45 891

转载 UML建模

看到一篇总结的很不错的博客,学习一下,仅供学习使用!!如有侵犯权益,可以联系修改!第一篇原文链接:UML详解:建模语言在软件工程中的应用-CSDN博客第二篇原文链接:https://zhuanlan.zhihu.com/p/645276949注重掌握常用的图:用例图、活动图、状态图、类图、时序图这些工作中常用的图!!可以将这几个图与其他图分开,这几个着重总结一下!一、背景UML:Unified Modeling Language(统一建模语言),是一种绘制软件蓝图的标准语言(是一种绘画语言,不是一种编程语

2025-03-26 10:02:42 63

原创 Gdiplus(也就是GDI+)使用

Gdiplus(也就是GDI+)使用步骤:1.包括相应的头文件及引入相应的lib//如果没有using namespace Gdiplus;就需要添加“命名空间作用域符” Gdiplus::Image2.初始化Gdiplus3. 加载相应的资源(此处为图片)//图片对象4.绘制图片5.关闭Gdiplus。

2025-03-20 15:57:22 940

转载 C++流行的开源框架和库

关于开源框架和第三方库,看到一篇总结的很不错的博客,转载一下,仅供学习!!如有侵权可以联系修改!原文链接:https://zhuanlan.zhihu.com/p/651936903C++标准库,包括了STL容器,算法和函数等。C++通用框架和库音频,声音,音乐,数字化音乐库生物信息,基因组学和生物技术压缩和归档库并发执行和多线程数据库,SQL服务器,ODBC驱动程序和工具调试库, 内存和资源泄露检测,单元测试粒子物理动力学仿真引擎XML就是个垃圾,XML的解析很烦人,对于计算机它也是个灾难。这种糟糕的东西

2025-03-19 13:53:48 134

原创 Wireshark使用

打开 Wireshark 后,会直接进入「网卡选择界面」,WLAN 是我连接无线的网卡,我们抓一下这个网卡的流量,双击网卡名,自动开始抓包。有时候我们需要导出多个数据包,Wireshark有一个导出标记的数据包的功能,我们将需要导出的数据包都标记起来,就可以同时导出多个数据包。局域网的所有流量都会发送给我们的电脑,默认情况下,我们的电脑只会对自己mac的流量进行解包,而丢弃其他mac的数据包。开启混杂模式后,我们就可以解析其他mac的数据包,因此,我们使用Wireshark时,通常都会开启混杂模式。

2025-03-16 19:37:56 1072

原创 Wireshark:在 显示过滤器中“加入条件”过滤后,出现其他类型的数据包,为什么?

在Wireshark中使用tcp。

2025-03-16 16:36:00 375

原创 C++后端服务器开发技术栈有哪些?有哪些资源或开源库拿来用?

C++后台服务器开发是一个涉及多方面技术选择的复杂领域,特别是在高性能、高并发的场景下。以下是C++后台服务器开发的一种常见技术路线,涵盖了从基础到高级的技术栈。

2025-03-09 11:22:59 910

原创 libxml库下载

1、

2025-03-07 16:23:11 252

转载 CPU内部结构详解

在上一篇(CPU + 主存取值计算)了解后,就可以来看看CPU内部结构细节了!

2025-03-02 17:51:33 994

转载 CPU+主存:是如何配合 实现取值运算的?

在计算机系统中,软件和硬件在逻辑上是等效的,也就是说,对于某一种功能,既可以通过软件实现,也可以通过硬件实现,用软件实现成本更低,但效率不高,硬件实现成本更高,但效率也会提升很多。CPU想从主存中取某个数据,那么CPU会将该数据的地址保存在地址寄存器中,主存储器会根据MAR的地址信息,从存储体中取相应数据,并写到数据寄存器中,最后CPU就可以通过数据线,取走他想要的数据了。MAR指明了MAR的地址,所以MAR位数反映存储单元的个数,而MDR是要保存存储单元数据的,所以MDR位数=存储字长。

2025-03-02 12:24:12 113

转载 半导体量测检测

检测指在晶圆表面上或电路结构中,检测其是否出现异质情况,如颗粒污染、表面划伤、开短路等对芯片工艺性能具有不良影响的特征性结构缺陷;量测指对被观测的晶圆电路上的结构尺寸和材料特性做出的量化描述,如薄膜厚度、关键尺寸、刻蚀深度、表面形貌等物理性参数的量测。(1)检测:异物缺陷、气泡缺陷、颗粒缺陷(2)量测:光刻套刻偏移量(OVL)、薄膜厚度(THK)、三维形貌。

2025-02-28 18:32:19 939

转载 半导体设备通讯标准(SECS/GEM)

在高度自动化的半导体制造厂中,CIM(Computer Integrated Manufacturing【计算机整合制造】)统一管理各设备的生产流程,并随时监控设备过程的状态,以减少过程失误进而降低成本及提升产品的质量。但随着过程的不同,各设备有着不同特性的差异且各制造商所提供的设备也不尽相同,因此增加CIM自动化管理的困难与复杂程度。软件集成自动化存在的主要问题是在不同的设备供应商之间没有标准的通讯协议。

2025-02-28 18:11:26 427

转载 C++实现的GEM与SECS协议源代码 解析

GEM协议提供设备控制和数据采集的功能,SECS1用于基本的二进制数据传输,SECS2支持更高效的数据交换和大容量数据,HSMS则提高SECS2的传输速率以应对高速数据需求。GEM协议提供设备控制和数据采集的功能,SECS1用于基本的二进制数据传输,SECS2支持更高效的数据交换和大容量数据,HSMS则提高SECS2的传输速率以应对高速数据需求。GEM协议详细规定了半导体设备在生产过程中的行为,并定义了设备的状态、事件和消息,使得不同的设备和主机系统能够以标准化的方式进行交互。

2025-02-28 13:28:28 214

转载 存储系统4:Cache的原理

同时,对于LFU算法---曾经被经常访问的主存块在未来不一定会用到(例如某段时间频繁使用微信视频聊天相关的块,此时相关计数器会增加到很大,若之后不再需要视频聊天,但相关Cache块的计数器已经很大了,所以相关内存块在Cache中的数据副本在短时间内不会被淘汰),并没有很好地遵循局部性原理(最不经常使用算法可能会记录下全局的访问频率),因此实际运行效果不如LRU。LRU算法----基于"局部性原理",近期被访问过的主存块,在不久的将来也很有可能被再次访问,因此淘汰最久没被访问过的块是合理的。

2025-02-23 18:55:03 195

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除