- 博客(12)
- 资源 (3)
- 收藏
- 关注
原创 stl中 map ,unordered_map . hash_map插入,查询,对比测试结果
map:map内部实现了一个红黑树 所有元素都是有序的。hash_map:unordered_map:内部实现了一个哈希表 其元素的排列顺序是无序的。std::map 所有元素都是有序(红黑树)tr1::unordered_map元素的排列顺序是无序的(哈希表)测试一:O1编译插入10000000次map类型 插入int 插入std::string 全部查找int 全部查找std::stringstd::map 10.8376 sec 21.5493 sec 5.74504 sec 15
2020-09-23 11:51:59 777
原创 Windows dll的一些不为人知的设置
无论c或c++都会对导出函数改名或不改名,无论你是静态还是动态调用一个导出函数,都可能碰上改名后导致的调用失败(甚至可能是调用约定不同而导致清理堆栈出错,造成崩溃),下面分析一下改名和调用约定之间的关系。 一.先说extern c。 其含义是指,按c的方式编译代码。在vs7及以后的vs中,有编译选项可以直接选择“编译为:c代码”(在工程属性----》c/c++--...
2020-05-05 16:57:19 253
原创 程序员选择行业是否重要
为什么会想到这个话题呢?想想自己已经从事C++开发有6年的时间了,每换一份工作都是一种新的行业。 刚毕业的时候从事的是制造业,用的是Borlan c++ Builder,主要是针对硬件的测试需要写对应的程序去测试。平台主要是windows,所用的技术主要还是文件读写,socket通讯,多线程以及同步问题,STL里面的数据结构,像array、vector、map。严格来讲所在部门并没有...
2020-05-05 16:51:16 447
原创 模仿openssh工具,实现ipv4和ipv6兼容的服务(C实现)
这个月接到一个功能添加需求,需要为一个代理程序支持ipv6的功能。但是在支持ipv6的同时还不能影响ipv4的功能。于是做了如下调研。1.在linux中,尽管用AF_INET6协议族写的socket是兼容AF_INET连接的,但是这种只是针对服务,但是如果想拓展为代理程序,可能就比较局限,所以要检索本机的ipv4地址和ipv6的地址,分别建立socket.2.多个socket可以同时监听同...
2018-07-30 16:29:28 1692
原创 Linux 进程监控工具——Strace
最近在做蜜罐项目,因为要追踪攻击者的操作行为,所以想到通过攻击者的ip获取pid.那么想知道进程都进行了哪些操作,让我想到了strace工具。那么strace都有哪些功能呢?总结如下:-c 统计每一系统调用的所执行的时间,次数和出错的次数等.-d 输出strace关于标准错误的调试信息.-f 跟踪由fork调用所产生的子进程.-ff 如果提供-o filename,则所有进程的跟踪结果输出到...
2018-04-25 21:29:43 393
原创 Windows文件内存映射的理解和应用
首先我们想一个问题,为什么要用到文件内存?举个例子:如果你只是处理一个几KB 的txt文件,加载到内存里面。可能对系统的影响不大,那么试想,当你处理一个几个G的文件,难道你也要加载到内存么?所以内存映射对处理一些size比较庞大的文件,内存映射是一个不错的选择!先来讲解下我做文件内存映射的步骤吧:1.先用CreateFile()创建或者打开一个文件内核对象2.当创建件后指明了文件的路径,但是这个时...
2018-04-13 09:57:43 1790
原创 对ThreadPool理解与实现
线程池相信大家都不陌生,基本在涉及到多线程开发首先会想到线程池,那么线程池的原理又是如何呢?我想用下面的图做一个简单的分析:从上图我们可以看出什么东西呢? 其实我们可以把ThreadPool想象成一个非常大的洗澡池(北方的那种哈哈)。洗澡池里面有许多人在泡澡。那么我们想象,洗澡池肯定有最大容纳的人。那么现在你可以想到,人们首先排队陆续进如池子。当池子里面的人达到最大容纳数时,后面的人只能等代有人出...
2018-04-03 18:00:13 208
原创 尝试写win32 service
下面的代码虽然是一个小demo。但是表达出了创建一个服务的完整过程.当然前提是你的程序不要和用户互动。运行在后台。因为最近项目就是这个需求,而环境恰巧是运行在windows,所以想到用服务来实现。废话不多说,写贴代码:#include <windows.h>#include <stdio.h>#pragma comment(lib, "Advapi32")#define S...
2018-03-28 11:54:34 305
转载 对RDP协议的理解
最近在做堡垒机项目,要用到RDP协议,所以想了解下RDP协议的内部机制:一、前言windows从NT开始提供终端服务,它是微软买来的网络协议技术(Citrix),服务器端要安装、配置,客户端要连接程序。终端服务使任何一台有权限的终端机,用已知的账号登录服务器,可以使用账号内的资源,包括软件,硬件资源;同时,在协议升级后,客户端连接后可以使用本地的资源,包括本地打印机、声音本地回放,本地磁盘资源和本...
2018-03-23 10:25:07 5991
原创 请自觉为多态的基类声明virtual析构函数
最近做的项目一直会用到多态的思想,所以会考虑到如何能够正确有效的释放对象资源(包括基类与派生类)。为什么会考虑到这个问题呢?C++ 不像Java即使编程者忘记对资源的释放,java仍然提供缺省的机制来释放资源。所以说如果你一直从事与C++开发,这个问题是逃不掉的。那么现在有什么好的方法么?比如举个简单的例子,我们有许多办法可以记录时间。我们可以先设计一个base class TimeKeepe
2017-04-28 10:13:18 199
原创 善用const
首先,有些人会问?为啥要使用const,我使用宏定义不是照样可行?开发C++已有五年多的时间了,有时当遇到需要定义常量时,总有一个问题一直很疑惑,到底是用宏定义#define,还是用const修饰。现在终于有了答案,废话不多说,先上代码#define CALL_WITH_MAX(A,B) F((A) > (B) ?(A) : (B));光看这个宏,就有太多的缺点,首相你要使用它,...
2017-04-21 16:12:38 359
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人