自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 计算机视觉2D几何基元及其变换介绍和OpenCV WarpPerspective源码分析

2D图像几何基元一般的,表示一个2d几何基元只用两个维度(比如x,y)就可以表示了,但是在计算机视觉研究中,为了统一对2d几何基元的操作(后面讲到的仿射,透射变换),一般会以增广矢量的方式表示几何基元。齐次坐标将原本n维的坐标用一个n+1维的坐标表示,其两个基本作用为: 1. 区分n维空间的点和向量,一个点的第n+1维为非零值,而向量的n+1维为0 ...

2017-12-13 17:54:00 827

转载 掉坑日志:Windows Native API与DPI缩放

高DPI显示器越来越普及,软件自然也要适应这个变化,最近实习的时候也遇到了一个关于DPI缩放的问题。因为内部框架的一个控件有BUG,会导致内容的显示出问题,后来实在没办法改成了用Windows Native API来自己定义字体,但是这一写就出问题了,本来在内部开发机100%放缩下好好的,一跑到我自己的WIN10,在2K屏放上缩放125%就字体就显示不正常了(字体变得过大)。Wind...

2017-08-05 16:09:00 419

转载 利用Python的pyHook包来进行键盘监听

最近在实习的时候发现一件很蛋疼的事情,那就是我们组的项目因为有后台进程,所有每次运行完以后后台进程都必须要自己手动关闭,每次编译之前忘记关就会有一大堆编译错误,我就想直接弄个可以快捷键直接关闭算了做这个东西的首要原则就是要简单,那自然用python做是最好的了,我们可以用pyHook这个包就可以很方便做到监听键盘的功能pyHook需要绑定一个消息处理函数,pyHook...

2017-07-01 15:43:00 476

转载 用Windows Native API枚举所有句柄及查找文件句柄对应文件名的方法

枚举所有句柄的方法由于windows并没有给出枚举所有句柄所用到的API,和进程所拥有的句柄相关的只有GetProcessHandleCount这个函数,然而这个函数只能获取到和进程相关的句柄数,不能获取到实际的句柄,要获得句柄,我们必须使用未公开的Native API才可以。PS:网上有很多关于这类的方法,但几乎都是抄来抄去,很多连编译都过不了就直接放上去了(囧)...

2017-06-02 13:54:00 670

转载 现代操作系统的调度

一. 操作系统调度的原则1. 什么是调度当计算机系统死多道程序设计系统时,通常就会有多个进程或者线程竞争CPU,只要有两个或者更多的进程处于就绪状态,这种情况就会发生,如果只有一个CPU可以用,那么必须选择下一个要运行的进程,在操作系统中,完成选择工作的这一部分被称为调度程序(scheduler)。该程序使用的算法称为调度算法(scheduler algorithm)。...

2017-04-07 23:34:00 526

转载 汉明码(Hamming Code)原理及实现

汉明码实现原理汉明码(Hamming Code)是广泛用于内存和磁盘纠错的编码。汉明码不仅可以用来检测转移数据时发生的错误,还可以用来修正错误。(要注意的是,汉明码只能发现和修正一位错误,对于两位或者两位以上的错误无法正确和发现)。汉明码的实现原则是在原来的数据的插入k位数据作为校验位,把原来的N为数据变为m(m = n +k)位编码。其中编码时要满足以下原则:...

2017-04-05 17:50:00 2619

转载 二叉查找树的前序遍历,后序遍历和中序遍历互求算法模板

遍历模板其实这个问题想清楚了很简单,只要把这三个概念理解透彻就可以做出来了,比如前序遍历的第一个值一定是根节点,然后这个根节点对应到中序遍历里面,在中序遍历的这个值的两边的值,一定在以此节点为根节点的两个子树上,同理,后序遍历也一样。已知前序遍历和后序遍历是不能求唯一的中序遍历树的。#include <iostream>#include <...

2017-03-26 00:28:00 132

转载 C++ NULL与nullptr的区别

C与C++中空指针的区别在C里面,由于处处都要使用指针,所以导致NULL遍布各地。我们先来看C99是怎么定义NULL的:NULL can be defined as any null pointer constant.Thusexisting code can retain definitions ofNULL as0or0L,but an implemen...

2017-03-21 15:35:00 134

转载 C++ 内存分配操作符new和delete详解

重载new和delete首先借用C++ Primer 5e的一个例子:string *sp = new string("a value");string *arr = new string[10];这其实进行了以下三步操作:new表达式调用一个名为operatornew(或者operatornew[])的标准函数,分配一块足够大的,原始的,未命...

2017-03-17 18:26:00 346

转载 std::copy性能分析与memmove机器级实现

复制数据的快速方法std::copyC++复制数据各种方法大家都会,很多时候我们都会用到std::copy这个STL函数,这个效率确实很不错,比我们一个一个元素复制或者用迭代器复制都来的要快很多。比如,我写了一段下面的代码,复制100000000数据量,std::copy的性能要比前两个性能要好。 const int size = 100000000;...

2017-03-15 17:53:00 567

转载 牛顿迭代法求高次方程的根

比二分更快的方法如果要求一个高次方程的根,我们可以用二分法来做,这是最基础的方法了。但是有没有更好更快的方法呢?我们先来考察一个方程f(x)的在点a的泰勒展开,展开到一阶就可以了(假设f(x)在点a可以泰勒展开,也就是泰勒展开的那个余项在n趋于无穷时趋于0)f(x) -> f(a) + (x - a)f'(a)现在我们令这个一阶展开为0...

2017-03-12 22:00:00 1971

转载 运用模逆运算(同余方程)来解决Matlab课上的一道思考题

一道Matlab编程题 &暴力解法Matlab课上老师出了这样一道题:一个篮子有K个鸡蛋:2个2个拿剩1个;3个3个全部拿完;4个4个拿剩1;5个5个拿剩4个;6个6个拿剩3个;7个7个拿全部拿完;8个8个拿剩1个;9个9个拿全部拿完;求篮子里鸡蛋的个数K虽然这是一道matlab拿来玩的题目,可是我觉得完全...

2017-03-10 00:56:00 1670

转载 线程实现方式与临界区保护

  线程拥有寄存器,用来保存当前的工作变量;线程有自己的栈堆,用来保存上下文,在同一个进程当中,允许拥有较大独立性多个线程,是对一个计算机上多个进程的模拟,在单核CPU中,每个线程分配的CPU速度的V/N。线程实现方式  1. 用户级线程(多对一): 把线程表放在用户空间中,切换快。在用户空间中可以防止某些垃圾回收程序过早退出。 缺点...

2017-02-26 20:22:00 424

转载 线程调度的问题:Lock Convoy(锁封护)与Priority Inversion(优先级反转)

Lock Convoy(锁封护)  [1]Lock Convoy是在多线程并发环境下由于锁的使用而引起的性能退化问题。当多个相同优先级的线程频繁地争抢同一个锁时可能会引起lock convoy问题,一般而言,lock convoy并不会像deadlock或livelock那样造成应用逻辑停止不前,相反地,遭受lock convoy的系统或应用程序仍然往前运行,但是,由于线程们频繁...

2017-02-26 13:45:00 396

转载 C++ lvalue,prvalue,xvalue,glvalue和rvalue详解(from cppreference)

General每一个C++表达式(一个操作符和它的操作数,一个字面值,一个变量名等等)都代表着两个独立属性:类型+属性分类。在现代C++中 glvalue(泛左值) = lvalue (传统意义上的左值)+ xvalue(消亡值,通过右值引用产生) rvalue (传统意义上的右值) = prvalue(纯右值) ...

2017-02-06 13:29:00 467

转载 WPF显示尺寸与设备无关问题

WPF单位WPF窗口以及其中的所有元素都是用与设备无关的单位进行度量。一个与设备无关的单位被定义为1/96英寸。WPF程序统一用下面一个公式来定义物理单位尺寸:[ 物理单位尺寸(像素)] = [ 设备无关尺寸 ]*[ 系统DPI ]我们知道标准的Windows的系统DPI是 96 dpi,这个时候物理单位就是1像素,一个40*40WPF单位的按...

2017-01-23 20:14:00 396

转载 用事件队列解决GUI的操作顺序问题(Qt中处理方法)

GUI操作顺序问题引发异常:  有时候我们使用写GUI程序的时候会遇到这样的问题:比如在程序中,建立了一个列表的GUI。这个列表是随着时间不断更新的,而且操作也会读取这个列表GUI的内容。  如果这个程序是多线程的程序,而且只是除了GUI的线程不操作,只是其他线程操作这个列表GUI,那么这个问题很简单,只用加互斥锁就可以了。但如果GUI线程自己本身也要操作这个列表,那么这个问...

2017-01-18 00:01:00 397

转载 UNIX 进程间通讯(IPC)概念(Posix,System V IPC)

  IPC(Inter-Process Communication,进程间通讯)可以有三种信息共享方式(随文件系统,随内核,随共享内存)。(当然这里虽然说是进程间通讯,其实也是可以和线程相通的)。相对的IPC的持续性(Persistence of IPC Object)也有三种:随进程持续的(Process-Persistent IPC)IPC对象一直...

2017-01-14 00:16:00 307

转载 C#值类型和引用类型与Equals方法

1. C#的值类型和引用类型  C#的对象里面有两种类型,一个是引用类型,一个是值类型,值类型和引用类型的具体分类可以看下面的分类。  在C#中,不管是引用类型还是值类型,他们都隐式继承Object类(这里应该这样仔细理解,引用类型是直接地继承Object类,但是值类型是继承的是Object类的子类ValueType。  需要注意的是,C#的对象内存管理方式...

2017-01-11 22:06:00 342

转载 单片微机原理P4:80C51串口与串行总线拓展

0. 串口通讯0. 串口通讯的数据传输方式:单工(单向传输数据),半双工(非同时双向传输),全双工(同时,双向传输)1. 根据通信方式的不同又分为同步通讯和异步通讯。同步通讯:所有设备都使用同一个时钟,称为同步时钟。在数据传送时,以若干个数据字符(称为数据块)为单位进行传输,每个数据块包括同步字符、数据块和校验字符CRC。异步通信是指在串行通信中,接收设备和发送设备有...

2017-01-10 01:45:00 287

转载 单片微机原理P3:80C51外部拓展系统

  外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。0. IO接口电路概念与存储器拓展1. 为什么需要IO电路?:1. 协调计算机与外设的速度的差异 2. 输入/输出过程中的状态信号 3. 解决计算机信号与外设信号之间不一致2. IO传送方式三种:1. 无条件传送(灯...

2017-01-09 21:54:00 1657

转载 单片微机原理P2:80C51外部中断与定时器系统

0. 外部中断  书上的废话当然是很多的了,对于中断我想大家应该早就有一个很直观的认识,就是“设置断点,执行外部外码,然后返回断点”这样的三个过程。中断给系统提供了一个良好的响应模式。当然了,响应中断的时候记得保护现场,这是写汇编的良好习惯。  80C51一共是5个中断源,这五个中断源分别是外部中断0,1定时器中断0,1,串口中断。1. 我们现在先来看外部中断:...

2017-01-09 12:06:00 794

转载 单片微机原理P1:80C51指令系统和编程方法

0. 寻址方式  寻址方式在汇编中是很重要的,汇编所有的操作都是和和内存或者寄存器打交道的,在80C51里面一共7种寻址方式。1. 立即寻址:这个没什么好说的,就是往寄存器或者内存里面写立即数,在80C51汇编里面立即数前面带一个#(这个和Intel其他汇编和AT&T的都是不一样的)。MOV A, #00H ;把数字0放入寄存器A中2. 直接寻...

2017-01-09 00:06:00 1159

转载 单片微机原理P0:80C51结构原理

  51这种货色,学了最多就所谓的垃圾科创利用一下,但是想一下这门课我也要考试,还是写一点东西顺便放博客上吧。  这一系列主要参考《单片微机原理与接口技术》这本书的内容(这本书的特点就是废话特别多,中国式特色教科书)+ 一点CSAPP,还有老师的课件。0. 机器码的表示  简单的原码,反码和补码的表示相信大家一定很熟了,下面我们来聊下BCD码的计算和IEEE标准的浮...

2017-01-08 18:31:00 798

转载 C# Interface的使用方法探讨

  接口是把公共实例(非静态)的方法和属性结合起来,以封装特定功能的一个集合,一旦定义了接口,就可以在类中使用实现接口中的所有成员,接口可以看作创建者和使用者之间的契约,一旦实现了接口,就不要轻易变动(如果需要变更接口,一般需要继承旧接口并且添加版本号)。我们知道在C++里面是有纯虚函数,虚继承和多重继承的,C#里面为了简化C++的这些复杂的设施,引出了接口这个概念。C#接...

2016-12-19 01:44:00 146

转载 C#网络编程数据传输中封装数据帧头的方法

  在C/S端编程的时候,经常要在C端和S端之间传数据时自定义一下报文的帧头,如果是在C/C++,封装帧头是一件很简单的事情,直接把unsigned char *强转为struct就行,但是在C#中,并没有提供直接从struct到byte[]的转换,这个时候就需要用到Marshal等非托管的方法了。自定义帧我们可以在C#中写出如下代码: 1 [StructLayout...

2016-12-09 14:55:00 1177

转载 WPF直接用Window.Close直接关闭窗口导致不能完全退出的问题

更新:2018 2. 27这是我两年前写的文章,当时没考虑到debug环境下的问题,事实上debug环境下才会有AdornerLayer,这个问题应该不是单纯由AdornerLayer引起的刚好今年一月份的时候有个人艾特了我http://bbs.youkuaiyun.com/topics/392301858,而我已经很久没写WPF了请参考提问者最后一个回答:但网络上也没有别的猜测...

2016-12-03 23:38:00 1539

转载 WPF制作的VS黑色风格的Listbox

最近写的一个玩具,WPF写出来的东西还是挺好看的style.xaml 1 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 2 xmlns:x="http://schemas.micros...

2016-11-29 01:58:00 181

转载 逆波兰表达式模型

  其实这个东西早在7月开始的时候我就写好了,本来想等小师妹写好了她的版本再放到网上的。。。无奈她写的实在是太慢了。这个东西还是有改进的空间的,比如升级成浮点模型啥的。  逆波兰表达式的可以以O(N)时间复杂度处理任意表达式,其实也叫后缀表达式,中缀表达式(就是我们一般看到的表达式(1+1=2)),处理的时候分两个栈,一个符号栈,一个表达式栈:  (注意我只选二元运算符为例,只处...

2016-08-28 11:09:00 93

转载 C/C++: C++可调用对象详解

  C++中有几种可调用对象:函数,函数指针,lambda表达式,bind创建的对象,以及重载了函数调用符的类。1. 函数  函数偏基础的东西,在这里不再叙述。重点讲下C++11的某些重要特性和函数指针。  可变形参函数:  C++11有两种办法传递可变形参(其实学了模板以后可以用模板的自动递归来展开所传递的参数,这个后面再说)。  1.第一种是initial...

2016-08-28 00:47:00 256

转载 C++变量和基本类型

1. 如何选择类型的准则当明确知晓数值不可能为负的时候,应该选择无符号类型。使用int执行整数运算的时候,在实际应用中,short常常显得太小而long一般和int有一样的尺寸,如果数值超过了int,那么就要用long long(ACM经常用)。在算术表达的时候不要使用char或者bool,char在一些机器上是有符号的,而在另一些机器上又是无符号的。执行浮点运算的时...

2016-08-27 10:38:00 64

转载 C++位域和内存对齐问题

1. 位域:1. 在C中,位域可以写成这样(注:位域的数据类型一律用无符号的,纪律性)。1 struct bitmap2 {3   unsigned a : 1;4   unsigned b : 3;5   unsigned c : 4;6 }bit;  sizeof(bitmap) == 4;(整个struct的大小为4,因为位域本质...

2016-08-25 02:54:00 207

转载 大整数模板

  稍微测试了一下感觉还行,可能有BUG,如果发现了还望告诉我。代码是C++11写的,要有能支持constexpr这些关键字的编译器才可以编译出来。  update: 2016.8.5 15:51 加了个可以转出字符串的功能 1 #pragma once 2 #ifndef BigIntNums_H 3 #define BigIntNums_H 4 5...

2016-08-05 00:08:00 125

转载 时钟Demo

  其实是一个很简单的Demo,可以编译了拿NSIS打包。最近在做富文本编辑器和补C++不记得的东西吧,项目遥遥无期。 1 //clock.pro 2 3 #------------------------------------------------- 4 # 5 # Project created by QtCreator 2016-07-26T19:06...

2016-08-03 21:22:00 139

转载 C++中static,extern和extern "C"关键字

1. extern 变量  extern 表明该变量在别的地方已经定义过了,在这里要使用那个变量。  当extern不与"C"在一起修饰变量或函数时,如在头文件中: extern int g_Int;它的作用就是声明函数或全局变量的作用范围的关键字,其声明的函数和变量可以在本模块活其他模块中使用,记住它是一个声明不是定义!也就是说B模块(编译单元)要是引用模块(编译单元)A中定...

2016-08-03 21:16:00 106

转载 基于Z-WAVE 协议的LED智能照明系统的研究笔记

LED调光基础:☆:LED照明调光控制信号的方式有两种:  1. 通过PWM信号控制LED灯具开关电源的占空比从而实现调光;  2. 通过调光控制信号和交流电源供电线合用的两线式或三线式(例如LED相控调光)  3. 调光控制信号和交流电源供电线分离调光(0-10V,ADLI,DMX512,KNX等)。☆:LED智能家居通讯协议:  1...

2016-06-06 09:26:00 306

转载 链表原地反转Demo

  现在就是Qt开发和给师弟师妹讲下数据结构吧,感觉还挺漫长的,上个Qt帖子等我把成品做出来再更。 1 //Convert_plug.h 2 3 #ifndef CONVERT 4 #define CONVERT 5 6 #define MAX 81 7 typedef char NmaeType; 8 typedef struct _name_...

2016-06-04 09:51:00 150

转载 ASM:《X86汇编语言-从实模式到保护模式》越计卷:实模式下对DMA和Sound Blaster声卡的控制...

说实话越计卷作者用了16页(我还是删过的),来讲怎么控制声卡,其实真正归纳起来就那么几点。★PART1:直接存储访问1. 总线控制设备(bus master)  在硬件技术不发达的早期,处理器是最重要的总线主控制设备,它有权决定谁参与总线数据传输。考虑代码片断:mov [0x2000],dx,在执行这条指令时,处理器不但发出地址信号,也发出控制信号,控制信号用来...

2016-04-08 18:32:00 499

转载 ASM:《X86汇编语言-从实模式到保护模式》第17章:保护模式下中断和异常的处理与抢占式多任务...

★PART1:中断和异常概述1. 中断(Interrupt)  中断包括硬件中断和软中断。硬件中断是由外围设备发出的中断信号引发的,以请求处理器提供服务。当I/O接口发出中断请求的时候,会被像8259A和I/O APIC这样的中断寄存器手机,并发送给处理器。硬件中断完全是随机产生的,与处理器的执行并不同步。当中断发生的时候,处理器要先执行完当前的指令(指的是正在执行的指令),然后...

2016-04-03 02:17:00 1158

转载 ASM:《X86汇编语言-从实模式到保护模式》第9章:实模式下中断机制和实时时钟...

  中断是处理器一个非常重要的工作机制。第9章是讲中断在实模式下如何工作,第17章是讲中断在保护模式下如何工作。★PART1:外部硬件中断  外部硬件中断是通过两个信号线引入处理器内部的,这两条线分别叫NMI和INTR。处理器正在运行的时候会收到各种各样的中断,有些中断必须被处理,这就叫非屏蔽中断;有一些中断的处理优先级没有那么高,并且可以屏蔽,这就叫可屏蔽中断...

2016-03-25 01:32:00 686

空空如也

空空如也

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

TA关注的人

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