自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (21)
  • 收藏
  • 关注

原创 基于C++11实现线程池

为何需要线程池那么为什么我们需要线程池技术呢?多线程编程用的好好的,干嘛还要引入线程池这个东西呢?引入一个新的技术肯定不是为了装酷,肯定是为了解决某个问题的,而服务端一般都是效率问题。我们可以看到多线程提高了CPU的使用率和程序的工作效率,但是如果有大量的线程,就会影响性能,因为要大量的创建与销毁,因为CPU需要在它们之间切换。线程池可以想象成一个池子,它的作用就是让每一个线程结束后,并不会销毁,而是放回到线程池中成为空闲状态,等待下一个对象来使用。C++中的线程池但是让人遗憾的是,C++并没有在语

2021-07-30 00:22:42 694

原创 Windows的网络模型

windows提供了六种网络通信模型:阻塞模型、选择模型、异步选择模型、事件选择模型、重叠I/O模型、IOCP模型。异步通信同步通信IOCP原理IOCP包括三个部分:完成端口(存放重叠的I/O请求),客户端请求的处理,等待线程队列(一定数量的工作者线程,一般采用CPU*2个)线程池中的工作线程的数量与CPU内核数量相同,用它来最小化线程切换代价。一个IOCP对象,在操作系统中可关联着多个socket和文件控制端。IOCP对象内部有一个先进先出(FIFO)队列,用于存放IOCP所关联的输入输出

2021-07-28 00:01:47 1446 2

原创 C++ rb_tree红黑树

在 STL 编程中,容器是我们经常会用到的一种数据结构,容器分为序列式容器和关联式容器。两者的本质区别在于:序列式容器是通过元素在容器中的位置顺序存储和访问元素,而关联容器则是通过键 (key) 存储和读取元素。本篇着重剖析关联式容器相关背后的知识点,来一张思维导图容器分类前面提到了,根据元素存储方式的不同,容器可分为序列式和关联式,那具体的又有哪些分类呢,这里我画了一张图来看一下。关联式容器比序列式容器更好理解,从底层实现来分的话,可以分为 RB_tree 还是 hash_table,所有暴

2021-07-25 23:57:16 813 5

原创 STL 迭代器与 traits 编程技法

在 STL 编程中,容器和算法是独立设计的,容器里面存的是数据,而算法则是提供了对数据的操作,在算法操作数据的过程中,要用到迭代器,迭代器可以看做是容器和算法中间的桥梁。迭代器设计模式为何说迭代器的时候,还谈到了设计模式?这个迭代器和设计模式又有什么关系呢?在设计模式中,关于 iterator 的描述如下:一种能够顺序访问容器中每个元素的方法,使用该方法不能暴露容器内部的表达方式。而类型萃取技术就是为了要解决和 iterator 有关的问题的。在 C++ 语言里面,我们可用以下方式来简单区分一下

2021-07-24 18:26:50 110

原创 C++ 模板

C++模版的诞生程序本质是数据结构+算法,任何一门语言都可以这样理解,这个公式对计算机科学的影响程度足以类似物理学中爱因斯坦的“E=MC^2”——一个公式展示出了程序的本质。最初C++是没有标准库的,任何一门语言的发展都需要标准库的支持,为了让C++更强大,更方便使用,Bjarne Stroustrup觉得需要给C++提供一个标准库,但标准库设计需要一套统一机制来定义各种通用的容器(数据结构)和算法,并且能很好在一起配合,这就需要它们既要相对的独立,又要操作接口保持统一,而且能够很容易被别人使用(用到实

2021-07-22 00:16:02 343 5

原创 C++11多线程

线程:线程是操作系统能够进行CPU调度的最小单位,它被包含在进程之中,一个进程可包含单个或者多个线程。可以用多个线程去完成一个任务,也可以用多个进程去完成一个任务,它们的本质都相当于多个人去合伙完成一件事。多线程并发:多线程是实现并发(双核的真正并行或者单核机器的任务切换都叫并发)的一种手段,多线程并发即多个线程同时执行,一般而言,多线程并发就是把一个任务拆分为多个子任务,然后交由不同线程处理不同子任务,使得这多个子任务同时执行。C++多线程并发: (简单情况下)实现C++多线程并发程序的思路如下:将任

2021-07-21 23:37:10 449

原创 STL 配置器(allocator)

配置器:负责空间配置与管理,从实现的角度来看,配置器是一个实现了动态空间配置、空间管理、空间释放的 class template。空间配置器:整个 STL 的操作对象(所有的数值)都存放在容器之内,而容器一定需要配置空间以存放内容。什么是 allocator?allocator 有什么用?我们需要对 C++ 的 allocator 的堆内存接口调用顺序有个清晰的认识,如下图所示。allocator 堆内存管理接口 STL 的容器(eg: vector、stack、deque等)有一个共同特征,就是

2021-07-21 22:12:01 1121 3

原创 C++11随机数

在C++11之前,现有的随机数函数都存在一个问题:在利用循环多次获取随机数时,如果程序运行过快或者使用了多线程等方法,srand((unsigned)time(null))这样的设置当前系统时间为种子的方法每次返回的随机数都是一样的。而C++11中提供了真随机数做种子的方法来解决这一问题。random_device标准库提供了一个非确定性随机数生成设备.在Linux的实现中,是读取/dev/urandom设备;Windows的实现是用rand_s,使用的是操作系统来生成加密安全的伪随机数随机数生成

2021-07-21 00:34:44 1593

原创 C++处理日期和时间的chrono库

C++11 中提供了日期和时间相关的库 chrono,通过 chrono 库可以很方便地处理日期和时间,为程序的开发提供了便利。chrono 库主要包含三种类型的类:时间间隔duration、时钟clocks、时间点time point。时间间隔 duration常用类成员duration表示一段时间间隔,用来记录时间长度,可以表示几秒、几分钟、几个小时的时间间隔。duration 的原型如下:// 定义于头文件 <chrono>template< class Rep,

2021-07-18 18:13:35 1664 2

原创 C++数值类型和字符串之间的转换

在 C++11 中提供了专门的类型转换函数,程序猿可以非常方便的使用它们进行数值类型和字符串类型之间的转换。数值转换为字符串使用 to_string() 方法可以非常方便地将各种数值类型转换为字符串类型,这是一个重载函,函数声明位于头文件 中,函数原型如下:// 头文件 <string>string to_string (int val);string to_string (long val);string to_string (long long val);string to_

2021-07-18 17:29:57 434

原创 VS Code 修改用户配置的目录,防止C盘用户数据丢失

创建VS Code的快捷方式目标内指定用户配置的目录“D:\soft\VSCode\Microsoft VS Code\Code.exe” --user-data-dir “User Data”这里指定为VS Code同级目录下的User Data文件夹

2021-07-16 11:39:52 998

原创 Chrome浏览器指定用户数据的保存路径

这里将用户数据放到Chrome浏览器的当前目录我现在的浏览器路径是 D:\soft\Chrome\Application\chrome.exe选中它右键发送桌面快捷方式,将快捷方式剪切到chrome.exe同一目录右击快捷方式修改目标D:\soft\Chrome\Application\chrome.exe --user-data-dir=“User Data”–user-data-dir参数就是指定用户数据的存放目录,这里指定为当前目录的User Data文件夹然后用快捷方式打开浏览器就行了,

2021-07-16 09:57:50 5005

原创 qt.qpa.plugin: Could not find the Qt platform plugin “windows“ in ““

在 QApplication a(argc, argv); 之前设置环境变量 QByteArray qtdir = qgetenv("QTDIR"); /*QString strDir = "D:\\Qt\\myDebugQt\\myDebugQt";*/ QString strPlatforms = qtdir + QString(R"(\plugins\platforms)"); qputenv("QT_QPA_PLATFORM_PLUGIN_PATH", strPlatforms.toLoca

2021-07-14 16:34:25 356

原创 C++右值引用

右值C++11增加了一个新的类型,称为右值引用(R-value reference),标记为&&。在介绍右值引用类型之前要了解什么是左值和右值。lvalue是loactor value的缩写,rvalue是read value的缩写左值是指存储在内存中、有明确存储地址(可取地址)的数据右值是指可以提供数据值的数据(不可取地址)通过描述可以看出,区分左值和右值的便捷方法是:可以对表达式取地址(&)就是左值,否则就是右值。所有有名字的变量或对象都是左值,而右值是匿名的。右

2021-07-13 00:20:17 2318 1

原创 C++11基础特性

初始化列表C++11 添加了 initializer_list 类型,允许使用 initializer_list 初始化对象STL 容器例如 map, vector 等都实现了 initalizer_list constructor自定义的对象也可以使用 initalizer_list 作为构造函数的参数class CVector{private: std::vector<int> m_vec;public: CVector() {} CVector(const std

2021-07-02 00:03:50 206 2

转载 结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法

结构体中最后一个成员为[0]长度数组的用法:这是个广泛使用的常见技巧,常用来构成缓冲区。比起指针,用空数组有这样的优势:(1)、不需要初始化,数组名直接就是所在的偏移;(2)、不占任何空间,指针需要占用int长度空间,空数组不占任何空间。“这个数组不占用任何内存”,意味着这样的结构节省空间;“该数组的内存地址就和它后面的元素地址相同”,意味着无需初始化,数组名就是后面元素的地址,直接就能当指针使用。这样的写法最适合制作动态buffer,因为可以这样分配空间malloc(sizeof(structXXX)

2021-07-01 00:11:46 488

转载 C/C++中switch用法的一种替换方式

在C/C++中,switch语句是经常被用到的,当switch内的case语句较多时程序有时显得比较繁乱,此种情况下可以用另外一种实现方式替代switch。详细用法见例子:#include "stdafx.h" float AddFunc(float a, float b){ return (a + b);} float SubFunc(float a, float b){ return (a - b);} float MultiplyFunc(float a, float b)

2021-07-01 00:09:49 946

转载 VS自带工具:dumpbin的使用查看Lib,dll等

有时候我们想查看一个exe引用了哪些动态库,或者我们想看某个动态库包含哪些接口函数,这个时候可以使用dumpbin.exe工具:1.输入Dumpbin -imports calldll.exe查看它的输入信息,可以看到它加载了**.dll2.输入dumpbin –exports dlltest.dll,列出导出函数*开始->所有程序->Microsoft Visual Studio 2010->Visual Studio Tools ->“Visual Studio 命令提示(

2021-07-01 00:00:52 730

WinDbg_preview_1.1910.3003.0.zip

WinDbg是在windows平台下,强大的用户态和内核态调试工具。它能够通过dmp文件轻松的定位到问题根源,可用于分析蓝屏、程序崩溃(IE崩溃)原因,是我们日常工作中必不可少的一个有力工具

2021-10-10

ImagePlugin.zip

QImageIOPlugin扩展

2021-06-17

activemq-cpp编译出来的所有库包括openssl,cppunit,apr

Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件;由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行 支持的编程语言包括:C、C++、C#、Delphi、Erlang、Adobe Flash、Haskell、Java、JavaScript、Perl、PHP、Pike、Python和Ruby

2021-01-03

QT Player Demo

QT 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。 Player Demo

2020-12-02

PE格式解析.zip

一个操作系统的可执行文件格式在很多方面是这个系统的一面镜子。虽然学习一个可执行文件格式通常不是一个程序员的首要任务,但是你可以从这其中学到大量的知识。在这篇文章中,我会给出 Microsoft 的所有基于win32系统(如winnt,win9x)的可移植可执行(PE)文件格式的详细介绍。在可预知的未来,包括Windows2000, PE文件格式在 MicroSoft 的操作系统中扮演一个重要的角色。如果你在使用 Win32 或 Winnt ,那么你已经在使用 PE 文件了。甚至你只是在 Windows3.1 下使用 Visual C++编程,你使用的仍然是 PE 文件(Visual C++ 的

2020-09-09

最新编译好的Detours

Detours是微软开发的一个函数库,可用于捕获系统API。 HOOK函数 注入DLL 包含lib和.h

2020-06-07

二维码识别zbar.zip

zbar和zxing用的都是自己从github上clone的c++源码/接口编译出来的dll,都是默认参数 再说结论:测了大概几千张图片,两个库的准确率差不多(由于图片场景的多样性,确切的准确率数字也没有什么意义),但是zbar的速度要快很多,大概是zxing的4-5倍。其实两个库的准确率都不太如人意,稍微模糊一点就无法识别,甚至有一些不模糊的图像也识别不出。相比之下,微信的识别效果就逆天了,怎么折腾都能识别出来,让我很好奇。 后来自己尝试改进识别效果,先看了一下二维码的识别原理,太复杂了,无从下手。于是尝试对图像进行预处理改进,结果只是用了一个二值化加开运算就让识别效果得到了大幅提升,让我很奇怪这么简单的预处理为什么开发人员没有去做呢?然后又继续优化了一下,发现二值化的阈值对二维码的识别非常关键,badcase通常是因为阈值不合适导致的,于是牺牲了一下性能,在识别程序中多次尝试不同阈值,最终识别效果达到了比较令人满意的结果,准确率从90%左右上升到99.8%左右,绝大部分打印不清晰导致的badcase都得到了解决

2020-04-12

botan版本2.3.0.zip

botan加密算法库集成了常见的加密及哈希算法,哈希类(hash)如MD5,SHA-1,SHA-256,都是有的,对称加密算法如DES,AES,非对称加密算法如RSA都有支持

2020-04-12

WIN10-PCHunter64.zip

PC Hunter是Windows系统信息查看软件,一种常用性质软件。 软件性质:常用软件 更新时间:2019-01-31 应用平台:32位的2000、XP、2003、Vista、2008、Win7、Win8、Win8.1、Win10 64位的Win7、Win8、Win8.1、Win10 [1]

2020-04-05

Qt中文文档.zip

Qt是一个多平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的很容易扩展,并且允许真正地组件编程。 自从1996年早些时候,Qt进入商业领域,它已经成为全世界范围内数千种成功的应用程序的基础。Qt也是流行的Linux桌面环境KDE 的基础,KDE是所有主要的Linux发行版的一个标准组件。

2020-04-01

二维码本地识别.zip

二维码本地识别 二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。

2020-03-27

Windows,JAVA,Android的API文档.zip

Windows,JAVA,Android的API文档 Windows API Win32 API JAVA API Android API

2020-03-22

Qt5.13.0 Https库.zip

Qt Network为使用TCP/IP的编程应用程序提供了一组API,我们为SSL套接字和OCSP stapling支持添加了安全通道支持。 Qt 5.13现在使用OpenSSL 1.1来支持Linux和Android上的SSL连接。

2019-10-15

qrencode.zip

C/C++二维码生成库qrencode 现在生活中,二维码可以说是无处不在,微信扫码支付,支付宝扫码支付,就连贴小广告的都带上了二维码了。之前一直想去了解一下,还是太懒了,就没去,现在项目中需要用到这东西,正好借此机会了解一下。

2019-10-07

botan-2.1.0.zip

Botan 是一个 C++ 的加密算法库,支持 AES, DES, SHA-1, RSA, DSA, Diffie-Hellman 等多种算法,支持 X.509 认证以及CRLs 和 PKCS #10

2019-10-07

globalshortcut.zip

Qt实现全局热键支持所有系统 全局热键与特定 nonchild 窗口相关联。 它允许用户从系统的任何部分激活窗口。 应用程序通过将WM_SETHOTKEY消息发送到该窗口来设置特定窗口的全局热键。 例如, 如果m_HotKeyCtrl是CHotKeyCtrl对象, 并且pMainWnd是一个指向在按下热键时要激活的窗口的指针, 则可以使用以下代码将控件中指定的热键与指向的窗口相关联pMainWnd。

2019-10-04

Winhex 19.8 中文版

winhex 是一个专门用来对付各种日常紧急情况的工具。它可以用来检查和修复各种文件、恢复删除文件、硬盘损坏造成的数据丢失等。同时它还可以让你看到其他程序隐藏起来的文件和数据。总体来说是一款非常不错的 16 进制编辑器。得到 ZDNetSoftwareLibrary 五星级最高评价,拥有强大的系统效用

2019-04-28

win7,win10注入CSRSS 不蓝屏

winXp,win7 32 , win7 64 ,win10注入CSRSS蓝屏 这是一个重要的进程,他会随系统的启动而自动开启并一直运行。在大多数情况下它是安全的,你不应该将其终止;但也有与其类似的病毒出现

2019-04-22

贺喜谈笑间纯源码

本人好不容易得到的全部源码 罗培羽—教你用VB制作RPG游戏的源码 希望对大家有用

2013-08-01

空空如也

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

TA关注的人

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