自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (1)
  • 收藏
  • 关注

原创 内核层与应用层通信详解

做驱动开发的肯定会遇到应用层与内核层的通信的问题,首先说内核层与应用层的通信可以大概分为两个方面,第一是应用层向内核层主动传递消息,第二是内核层主动与应用层通信。下面我们将分开来谈两个方面。我们先来看应用层向内核层传递的方法:BOOL DeviceIoControl ( HANDLE hDevice, // 设备句柄 DWORD dwIoControlCode, // I...

2019-07-30 08:41:28 12504 2

原创 Winscock 的I/O模式,阻塞、非阻塞、重叠、同步与异步

Winsock 脱胎于Berkeley socket,在Winsock中。主要有三种I/O模式:阻塞、非阻塞和重叠I/O。一般情况下,Berkeley和Winsock都是建立的阻塞的socket,为了建立非阻塞的socket,应用程序使用ioctlsocket的FIONBIO命令把socket设置为非阻塞。在创建的时候制定了重叠I/O属性时,才能使用重叠I/O功能。

2016-02-26 13:19:00 2863

原创 关于ARP的那些事儿

在了解ARP之前,赘述两句基本的网络知识,在TCP/IP结构中,将网络分为了四层,分别是应用层,运输层,网络层,链路层。他们分别对应的常用协议是:应用层:FTP,HTTP等等。运输层:TCP,UDP。网络层:IP,ICMP,IGMP。链路层:ARP,RARP。所以说,ARP仅仅是在链路层的一个协议而已,是根据IP地址获取物理地址的一个协议。它解决的是同一个局域网下IP地址和

2016-02-23 17:52:37 663

原创 IBM 服务器系统安装,以windows server 2008 为例

作为程序员,特别是做驱动的程序员,重装系统一定不陌生,纯裸机服务器就比较陌生了,基本上来说,不同的地方有以下几点:1、作为服务器一块硬盘是肯定不够的,一个纯裸机,是需要设置硬盘阵列的,就是把多块硬盘虚拟成一块,让用户可以方便的应用。2、是没有驱动的,光驱都找不到,需要下载相应的驱动进行安装。3、进入我们常用的光盘安装或者U盘安装后,问题又出现了,找不到硬盘。。。明明设置磁盘阵列了啊,那

2016-01-15 23:24:34 52495

原创 从数据长征和网络协议对TCP/IP,http,socket 进行概念梳理

首先说数据是怎么到到达你的终端的。在开始的开始不得不说的就是TCP/IP协议了,TCP/IP协议是网络的基础,是Internet的语言,可以说没有TCP/IP协议就没有互联网的今天。实际上说TCP和IP是互联网协议簇中最重要的两项。TCP/IP协议把网络划分为了四层:应用层,传输层,网络层,网络接口层。网络接口层是TCP/IP协议与底层硬件设备的接口,负责网络层和物理设备之间的数据交换,在

2015-09-23 10:12:20 930

原创 中间层过滤驱动和封包的16进制处理

NDIS模型的概述,对网络封包的分析,可以做自己的抓包工具

2015-09-21 09:33:45 3891

原创 LeetCode 的 C++ 实现(十一)移除链表元素

题目描述删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5哨兵节点 ListNode* removeElements(ListNode* head, int val) { ListNode* dummy = new ListNode(0); dummy->next = head; ListN

2020-05-12 23:34:22 196

原创 LeetCode 的 C++ 实现(十)删除链表的倒数第N个节点

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。暴力解法class Solution {public: ListNode* removeNthFromEnd(...

2020-04-25 23:04:59 186

原创 LeetCode 的 C++ 实现(九)合并两个有序链表

题目将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4非递归ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode* Dum...

2020-02-17 22:58:29 171

转载 LoadLibrary加载动态库失败的可能原因以及解决方案:

转自 : https://www.cnblogs.com/Braveliu/p/9342633.html(1)dll动态库文件路径不对。此场景细分为以下几种情况:1.1 文件路径的确错误。比如:本来欲加载的是A文件夹下的动态库a.dll,但是经过仔细排查原因,发现a.dll动态库竟然被拷贝到B文件夹下去了。若真遇到这种低级错误,建议你找个没人的墙角蹲下用小拇指逆时针划圈圈去吧。。。1.2 ...

2019-12-20 00:00:26 16838 4

转载 编译libjpeg和libpng

linux x64下编译libjpeg,libpng,zliblibJpeg编译:下载libjpeg源码:http://www.ijg.org/,下载jpegsrc.v9a.tar.gz 解压源码,命令:tar -zxvfjpegsrc.v9a,源码文件夹为jpeg-9a 运行命令:./configure --prefix=jpeg-9a/release--enable-share...

2019-12-06 18:11:00 229 1

原创 LeetCode 的 C++ 实现(八)两数之和(二)

题目给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8...

2019-11-25 23:18:31 118

原创 常用色彩空间 RGB HSV YUV

RGB色彩空间在图像处理中最常用的就是RGB色彩空间,非常容易被理解,用三个颜色分量来表示某个具体颜色。存储类型(1)RGB555:16位的RGB格式,各分量都用5位表示,剩下的一位不用。高字节 -> 低字节(根据内存大小端) XRRRRRGGGGGBBBBB(X代表不用)(2)RGB565:16位的RGB格式,但是R占用5位,G占用6位,B占用5位。(3)RG...

2019-11-14 14:48:24 2985

原创 Cmake学习笔记(五) cmake 应用训练,基于libuvc分析cmake

针对之前搞得的Cmake的东西,练手很少,还是觉得掌握的不到位,opencv什么的太大了,本身cmake也不会用的太多,就懒得看了,刚好最近项目有用libuvc,也是依赖cmake编译的,而且libuvc小而美,看代码的同事学习一下cmake,做为练习。简单介绍一句libuvc,跨平台的开源库,托管在git上,用来对标砖uvc设备进行操作,依赖libusb,可以增加对libjpeg的依赖(用来对...

2019-10-29 17:15:33 2199 1

原创 LeetCode 的 C++ 实现(八)两数之和

题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]暴力解法c...

2019-10-21 23:49:32 148

原创 LeetCode 的 C++ 实现(六)环形链表 ,判断环是否存在

题目给定一个链表,判断链表中是否有环。快慢指针/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution ...

2019-10-21 15:02:56 206

原创 LeetCode 的 C++ 实现(七)环形链表(2) ,判断环是否存在,同时找到入口

题目给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。Floyd算法思路1、通过快慢指针来判断是否存在环2、入环前的距离是F,第一次点h,以该点将环分割,两段分别距离分别为a 和 b。可以得到公式:2(F + a) = F + N(a + b) + a2F + 2a = F + 2a + b + (N - 1)(a + b)F = b + (N - 1...

2019-10-21 14:52:54 177

原创 LeetCode 的 C++ 实现(五)链表逆序

题目将给定的单链表L: L 0→L 1→…→L n-1→L n,重新排序为: L 0→L n →L 1→L n-1→L 2→L n-2→…要求使用原地算法,并且不改变节点的值例如:对于给定的单链表{1,2,3,4},将其重新排序为{1,4,2,3}.Given a singly linked list L: L 0→L 1→…→L n-1→L n,reorder it to: L 0...

2019-10-20 23:51:39 155

原创 LeetCode 的 C++ 实现(四)插入排序对链表进行排序的各类实现

题目使用插入排序对链表进行排序。Sort a linked list using insertion sort.基础插入排序/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x),...

2019-10-20 22:49:18 100

原创 LeetCode 的 C++ 实现(三)链表排序(要求空间复杂度和时间复杂度)

题目在O(n log n)的时间内使用常数级空间复杂度对链表进行排序。Sort a linked list in O(n log n) time using constant space complexity.思路由于题目要求空间复杂度是 O(1),因此不能使用递归。因此这里使用 bottom-to-up 的算法来解决。bottom-to-up 的归并思路是这样的:先两个两个的 merg...

2019-10-20 15:37:55 386

原创 LeetCode 的 C++ 实现(二) 逆波兰式(后缀表达式求解)

解题思路根据后缀表达式概念,借助栈,不断将字符入栈,当碰到当前字符是运算符,就将已入栈的左右数值弹出,求得结果后,将结果入栈class Solution {public: int evalRPN(vector<string> &tokens) { if(tokens.size() == 0) return 0; ...

2019-10-17 00:22:19 161

原创 LeetCode 的 C++ 实现(一) :求给定二叉树的最小深度,最小深度是指树的根节点到最近叶子结点的最短路径上的数量

题目描述求给定二叉树的最小深度。最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量。Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf...

2019-10-16 11:10:43 508

原创 图像的形态学运算-图像的膨胀、腐蚀、开运算、闭运算、梯度、顶帽、黑帽

文章和代码参考自,《OpenCV计算机视觉编程攻略》数学形态学是一门 20 世纪 60 年代发展起来的理论,用于分析和处理离散图像。它定义了一系列运算,用预先定义的形状元素探测图像,从而实现图像的转换。其中腐蚀和膨胀是是形态学运算的基础算子,开运算闭运算,和提度都离不开这两种基础运算,在形态学中,核心的概念是基础概念是结构元素(类似卷积,实际上卷积也可以代替,本质都是用用滤波器扫描图像),结构...

2019-10-03 12:43:55 1578

原创 Cmake学习笔记(四)find类指令 以FIND_PACKAGE()为例

Cmake Find类指令以FIND_PACKAGE()为例,我们用OpenCV为实例来看我们需要为工程设置依赖的头文件和库时,往往需要以下方法include_directiories(../include)target_link_libraries(proTest ../OpenCV)但是,opencv需要以来的动态库有时非常多,那我们一个个路径来配置么,肯定会比较麻烦,这时就会需要...

2019-07-30 15:17:53 893

原创 Cmake 学习笔记(三)常用预定义变量

常用变量CMAKE_SOURCE_DIR等同于PROJECT_SOURCE_DIR,源文件所在地址,顶层工程源码CMAKE_BINARY_DIR等同于PROJECT_BINARY_DIR,生成工程目标地址,顶层工程编译地址CMAKE_CURRENT_SOURCE_DIR等同于PROJECT_SOURCE_DIR,当前CMakeList所在地址CMAKE_CURRREN...

2019-07-29 19:07:20 1249

原创 Camke 学习笔记(二)常用命令

常用命令以Windows为例,对应VS相应设置选项命令作用project设置解决方案名称SET设置参数,不管是预定义参数,还是自定义参数ADD_EXECUTABLE生成可执行文件工程ADD_LIBRARY生成库工程(lib/dll)AUX_SOURCE_DIRECTORY收集目录里的所有文件名并赋值给变量INCLUDE_DIRECTO...

2019-07-29 18:24:14 367

原创 Cmake学习笔记(一),Windows/linux 环境搭建配置,入门及示例代码

环境搭建配置、入门API以及示例代码Cmake安装和配置linuxWindows示例工程HelloWord将HelloWord拆成三个文件HelloWord方法封装成一个静态库拆分源码路径修改文件输出路径修改为动态库Cmake为跨平台创建工程的,很多开源的项目,都采用Cmake来编译,opencv,libjpeg,QT部分等,非常有必要学习一下了,参考资料:https://blog.csdn....

2019-07-29 14:27:54 818

转载 Windows 钩子技术详解

Windows系统是建立在事件驱动的机制上的,说穿了就是整个系统都是通过消息的传递来实现的。而钩子是Windows系统中非常重要的系统接口,用它可以截获并处理送给 其他应用程序的消息,来完成普通应用程序难以实现的功能。钩子可以监视系统或进程中的各种事件消息,截获发往目标窗口的消息并进行处理。这样,我们就可以在系统中安装自定义的钩子,监视系统中特定事件的发生,完成特定的功能,比如截获键盘、鼠标的

2016-04-11 15:13:43 665

转载 什么是C++虚函数、虚函数的作用和使用方法

我们知道,在同一类中是不能定义两个名字相同、参数个数和类型都相同的函数的,否则就是“重复定义”。但是在类的继承层次结构中,在不同的层次中可以出现名字相同、参数个数和类型都相同而功能不同的函数。例如在例12.1(具体代码请查看:C++多态性的一个典型例子)程序中,在Circle类中定义了 area函数,在Circle类的派生类Cylinder中也定义了一个area函数。这两个函数不仅名字相同,而

2016-03-25 00:30:31 346

转载 关键段和旋转锁

原文地址:http://blog.csdn.net/morewindows/article/details/7442639提出了一个经典的多线程同步互斥问题,本篇将用关键段CRITICAL_SECTION来尝试解决这个问题。本文首先介绍下如何使用关键段,然后再深层次的分析下关键段的实现机制与原理。关键段CRITICAL_SECTION一共就四个函数,使用很是方便。下面是这四个函

2016-03-06 11:25:45 1643

转载 WinSock重叠IO模型一

http://blog.csdn.net/fengbangyue/article/details/5632263WinSock的重叠IO模型也就是重叠IO的一个特例罢了。其实就是把套接字当成文件来操作。在重叠IO中,如果读大文件的时候,为了不在那里干等。告诉系统,我先去下两盘象棋,你读完了,告诉我一下。下棋时窗口是全屏的,读完后,弹一个对话框出来告诉我下吧。恩,下棋,真是浪费时间的事,得戒

2016-03-01 13:59:36 404

转载 驱动层注册表操作

在用户态下面,有大把的API可供我们操作注册表,例如RegOpenKey,RegCloseKey等,这些API都是由windows提供给用户态使用的API。     那么对于驱动层了,因为驱动编程,并没有哪个能够提供额外的库可供我们调用,肯定是不能调用如RegOpenKey等这些API函数,那难道内核态就不能操作注册表嘛?答案显示是不成立的。那我们回头想想API的调用方式,任何注册表的操作

2015-12-25 15:59:35 1061

转载 SOCKET的短链接与长连接

所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持。 短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,一般银行都使用短连接。  比如http的,只是连接、请求、关闭,过程时间较短,服务器若是一段时间内没有收到请求即可关闭连接。 其实长连接是相对于

2015-10-18 15:01:50 938

转载 TCP三次握手详解及释放连接过程

TCP头部: 其中 ACK   SYN  序号  这三个部分在以下会用到,它们的介绍也在下面。暂时需要的信息有:ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1SYN(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接

2015-10-15 11:26:33 426

转载 socket 、webservices、Json的区别

今天上网浏览了一篇日志,这里仅仅作为收藏,供个人知识积累,特此声明 面试的时候,别人问到过这种问题,仅作个人积累socket是java针对 tcp/ip 的一个实现webservice是基于http的分布式系统的接口实现方式,http是在tcp/ip基础上搭建起来的超文本传输协议。socket和webservice都有跨平台的优点,但是socket偏底层,效

2015-10-02 11:33:36 843

转载 网络安全书籍推荐

转自:http://www.cnblogs.com/zer0Black/p/3959886.html看到作者列出的书籍列表,对于信息安全的初学者来说,能很好的选择教材,鉴于只有英文版,我尝试翻译成中文以供参考,初次翻译,翻译的不好请见谅。原文链接:http://dfir.org/?q=node/8/注:对于所有的书籍链接,我都会寻找中文版重新链接,如无中文版,则按原文链

2015-09-22 16:19:45 5595

转载 Socket模型详解(转),有完成端口链接

Socket模型详解两种I/O模式一.选择模型二.异步选择三.事件选择四.重叠I/O模型五.完成端口模型五种I/O模型的比较   两种I/O模式1、 两种I/O模式阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序。套接字默认为阻塞模式。可以通过多线程技术进行处理。非阻塞模式:执行I/O操作时,Winsock函数会返回并交出控

2015-09-21 12:03:20 927

MFC界面美化,继承该库,可换界面

进行MFC界面优化,将lib接入后,添加.h,待着界面dll就可以直接运行,可随意转化界面风格

2018-05-01

空空如也

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

TA关注的人

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