自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

David

烂笔头

  • 博客(246)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 C#Struct结构体内存对齐

在c/c++中内存对齐是个经常遇到的问题,现在的CPU一次读取64bit,所以Struct编译时会自动8byte对齐。c#同样的结构体也是8byte对齐。using System;struct ss{ public int a; // 4字节 // public int aa; // 4字节 public Int64 aaa; public In...

2020-03-18 10:59:31 1861

原创 docker安装nginx+rtmp模块搭建服务器实现ffmpeg推流+ffplay播放

docker可是一个好东西。在开发和测试的时候经常需要安装环境,而且在安装过程中可能出现非常多的问题,有了docker一切都不是问题了,一定要用好docker。在windows中也能使用docker。1. 在docker中安装nginx+rtmp拉取镜像docker pull alfg/nginx-rtmp创建并运行容器,映射出两个端口1935、80docker run -itd -p...

2020-03-16 17:18:42 5404

原创 使用C#与GO语言开发高性能且安全的Windows桌面应用程序

在Windows上开发桌面应用程序最快的方式无疑是使用C#,前有WinForm现有WPF,都是很好的开发框架,不管是MFC还是QT总还是复杂了一些。但是C#有一个最最大的缺点,就是没办法避免反编译,虽然我也经常反编译别人程序,但是绝不愿意看到自己的程序被别人反编译。曾经我考虑过用C/C++做核心的功能,界面用C#做。虽然也是一种办法,但是C/C++还是麻烦了一些,而且在部署时,需要同时安装.NE...

2020-03-12 17:18:25 5503

原创 c++ traits编程/基于特性的泛型模板编程

/** * traits编程的精髓: * 1. 在不同类中定义不同类型但是同名的别名 * 2. 函数使用不同类型重载,此类型不做任何传参,只用于重载区分 * 3. 定义一个对外的函数,内部获取输入类的类型区分别名,使用此别名类型创建对象,调用实际的重载函数 * * traits编程还可以用于函数返回值的定义,因为c++无法像java和c#那样反射,可通过traits技法实现 ...

2020-01-18 09:49:22 431

原创 c++ lamdba表达式

语法形式:[函数对象参数] [(表达式参数)] [mutable/exception声明] [->返回值类型] {函数体}/** * c++ lambda表达式 * * 语法形式:[函数对象参数] [(表达式参数)] [mutable/exception声明] [->返回值类型] {函数体} * * 1. 函数对象参数 * [] :无参数 * [=] :值传...

2020-01-16 11:39:09 269

原创 vscode+msvc调试c++程序

1. 打开vs工具命令提示我的在文件夹C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts中:选行x86或其他几个都行,双击运行2. 执行code打开vscode3. 配置settings.json{ "terminal.integrated.shell.windows": "C...

2020-01-13 19:41:36 2722

原创 相机VCM自动对焦(AF)策略

为了采集到清晰的图像,必须通过调整镜头改变焦点位置,获得清晰图像。通过外置音圈马达调节镜头是一种可行的方式。调焦分3个过程:粗调阶段,VCM调整步长就大,用于快速定位到焦点附近精调阶段,VCM调整步长比粗调阶段小,近一步定位准确焦点微调阶段,VCM在焦点附近移动,采集清晰图像调节VCM时还有很多细节需要注意:距离较远时,VCM的小变化回引起焦点的较大变化;距离较远和较近时的步长...

2020-01-06 12:06:04 3924 2

原创 数码相机成像原理

需要了解的知识: 1. 主要名词:焦点、焦距、景深、物距、成像面、成像点、光学中心、弥散圆、焦深、光圈 2. raw数据格式 3. RGB滤光层(柯达 赖斯-拜尔) 4. Sensor(cmos/ccd) 5. ISP 图像信号处理成像过程: 光->电->数字 光线->镜头->滤光层->感光片->raw数据(带马赛克)->正常图像各相机厂家的raw数据格式不一致,所以不能通用。 因为

2020-01-06 12:04:53 2610

原创 相机摄像头组成及参数

1. 摄像头由三部分组成镜头lens、图像传感器(sensor)、数字图像处理芯片(dsp)。摄像头工作的原理:光线通过镜头投射到图像传感器,图像传感器将光信号转为电信号,经过A/D转换后,转为数字信号输入到DSP,数字信号经dsp处理后,将图像数据输出。在安防应用中,还会加上一层红外滤光片;滤光片的位置可在镜头和sensor之间,或在镜头前。镜头前通常还会有一个玻璃盖板。下图是一...

2020-01-06 12:00:51 3886

原创 常用数据结构与算法

布隆过滤器(判断值是否已存在,需要多个哈希函数(不精确))布谷过滤器(判断值是否已存在,精确判断,哈希的一种应用,二维哈希)跳表skiplist(多级有序数据结构)hyperloglog(计数器,根据概论统计(不精确))...

2019-12-31 16:02:28 103

原创 do{...}while(0)的应用

参考:《do{…}while(0)的妙用》1. 帮助定义宏在看redis源码时,发现很多宏都用了do{…}while(0),例如在zmalloc.c中用于统计内存使用量时的宏:#define update_zmalloc_stat_add(__n) do { \ pthread_mutex_lock(&used_memory_mutex); \ used_memor...

2019-12-03 12:24:59 188 1

原创 Redis源码分析(1)内存管理

Redis在zmalloc.h和zmalloc.c实现了底层的内存管理,代码很简洁。Redis的内存管理提供了以下几个函数:// 申请内存,封装mallocvoid *zmalloc(size_t size);// 申请内存并初始化为0,封装callocvoid *zcalloc(size_t size);// 调整内存大小,封装reallocvoid *zrealloc(void...

2019-11-26 20:10:27 176

原创 vscode+wsl调试c++程序

1. 在wsl中打开vscode进入wsl,找到程序目录,在目录下打开vscode> cd /mnt/d/vscode/> code .ok,打开了vscode,并且进入了wsl。在vscode的左下角可以看到:2. 在vscode中配置c++环境创建main.cpp文件:#include<stdio.h>int main(){ int ...

2019-11-26 15:32:29 4192

原创 C结构体中的位域

之前没发现,竟然有这么个东西。一般存储数据都是以byte为单位,如果要表示0或1,最小也只能用char;但char占用了8个bit,有7个是浪费的。下面写代码,看看位域是什么东西:// sizeof : 4typedef struct bit_filed{ // 定义使用1个bit的位域 unsigned a : 1; int b : 1;};sizeof一下这...

2019-11-25 20:26:58 293

原创 数据结构与算法(五)检索(查找)基本算法

概念检索表:待查找的数据容器,例如线性表、树表(树、二叉树、B/B+树)等关键字:key关键字值:key对应的value检索/查找:Search1. 线性表的检索1.1 顺序检索可用于所有线性表,包括顺序表和链表。1.2 二分法检索只能用于顺序表(数组)。1.2.1 黄金分割点检索与二分法检索类似,但是分割检索区间的方式不同;二分法以二等分的方式分割检索区间,黄金分割点以...

2019-11-23 10:38:26 971

原创 汇编入门

1. 笔记1.1 常用寄存器8086有14个寄存器,物理地址 = 段地址*16+偏移地址,注意:一般不支持将输入直接送入段寄存器,例如 mov ds:1000H 是非法的入栈时,栈顶从高地址向低地址方向增长,出栈则相反;使用时应注意栈顶超界栈空时SP = 0 ,栈满时也是 SP = 0 ,超界时,栈顶将环绕寄存器名称说明示例AX通用寄存器16位寄存器,分...

2019-11-21 20:42:32 2963

原创 cmake笔记

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件cmake可根据CMakeLists.txt文件生成vs工程和makefile文件(通过-G 设置输出生成的文件类型)注意:本文使用vscode,使用nmake在vc++2013环境下测试。参考:Cmake 详解1. 基本语法# 运行...

2019-11-21 20:41:57 209

原创 COM编程入门

文章目录1. COM组件介绍2. COM组件开发2.1 创建COM组件接口2.2 创建COM组件实现类2.3 COM组件创建工厂2.4 COM组件的注册3. COM组件使用4.0 COM组件运行机制1. COM组件介绍COM组件是什么?COM是一种规范,而不是实现。但是当使用C++来实现时,COM组件就是一个C++类,而COM接口就是继承至IUnknown的纯虚类,COM组件就是实现相应C...

2019-10-29 15:40:20 12236 3

原创 数据结构与算法(四)图与网

1. 图图是由非空的顶点集合V和描述顶点间联系的弧(或边)的集合E组成的二元组,既G=(V,E)有向图 :V={vi} ; E={<vi,vj>} , vi->vj无向图 :V={vi} ; E=(<vi,vj>) , vi - jn 表示顶点数,e 表示边或弧的数目无向图: e 的取值范围 0 ~ n(n-1)/2 有向完全图:e = ...

2019-10-10 09:25:46 4466

原创 数据结构与算法(三)树与二叉树

1. 树非线性结构,层次结构每个元素至多有一个前趋,但可以有多个后继;根结点没有前趋,其他结点有且只有一个前趋数据元素间是一对多的关系树、二叉树、森林树是n(n>=0)个结点的有限集合,当n=0时为空树,否则称为非空树。 1. 树有且仅有一个根结点 2. 除根节点外,其余结点可分为m(m>=0)个互不相交的集合,每个集合本身又是一棵树,称为根的子树 ...

2019-10-10 09:25:39 255 1

原创 数据结构与算法(二)简单数据结构

1. 线性表由n个相同类型的元素组成的有限序列有且仅有一个第一个节点(头节点)和最后一个节点(末节点),第一个元素无前趋,最后一个元素无后继,其余元素只有一个前趋一个后继1.1 顺序表(sequence list) 内存连续,连续存储,相邻元素在内存中的位置也相邻 优点: 1. 无需为表示数据元素之间的关系而增加额外的存储空间 2. 可以随机...

2019-10-10 09:25:24 129

原创 数据结构与算法(一)常用数据结构

1. 数据结构什么是数据、数据元素、数据项、数据对象、数据类型?数据:万物都是数据,数据就是能输入计算机和被程序处理的符号数据元素:数据元素是数据的基本单位;是具体的数据;每一个学生的信息就是一个数据元素数据项:一个数据元素由若干个数据项构成;学生的姓名、学号等都是学生信息数据元素的一个数据项数据对象:具有相同性质的数据元素的集合,是数据的一个子集;例如:整数数据对象,字符数据对象,...

2019-10-10 09:25:09 215

原创 Ubuntu设置开机启动脚本

在/etc/init.d/目录下创建脚本文件web.sh,并设置web.sh文件的读写权限> sudo chmod 777 web.sh写入脚本#!/bin/sh### BEGIN INIT INFO## Provides: web.sh# Required-Start: $local_fs $remote_fs $network $syslog# Require...

2019-07-22 10:26:14 2133 1

原创 Unix编程笔记(〇)目录

Unix编程笔记(一)文件I/OUnix编程笔记(二)标准I/OUnix编程笔记(三)高级I/OUnix编程笔记(四)进程环境Unix编程笔记(五)进程控制Unix编程笔记(六)进程关系Unix编程笔记(七)信号Unix编程笔记(八)线程Unix编程笔记(九)线程控制Unix编程笔记(十)守护进程Unix编程笔记(十一)进程间通信Unix编程笔记(十二)终端I/O...

2019-06-14 09:46:26 178

原创 Windows API笔记(三)线程同步

Windows API笔记(一)内核对象Windows API笔记(二)进程和进程间通信、进程边界Windows API笔记(三)线程和线程同步、线程局部存储Windows API笔记(三)线程同步Windows API笔记(四)win32内存结构Windows API笔记(五)虚拟内存Windows API笔记(六)内存映射文件Windows API笔记(七)堆Windows A...

2019-05-29 16:39:23 818

原创 Windows API笔记(十)动态链接库

Windows API笔记(一)内核对象Windows API笔记(二)进程和进程间通信、进程边界Windows API笔记(三)线程和线程同步、线程局部存储Windows API笔记(四)win32内存结构Windows API笔记(五)虚拟内存Windows API笔记(六)内存映射文件Windows API笔记(七)堆Windows API笔记(八)文件系统Windows A...

2019-05-28 20:17:43 1029

原创 Windows API笔记(九)窗口消息

Windows API笔记(一)内核对象Windows API笔记(二)进程和进程间通信、进程边界Windows API笔记(三)线程和线程同步、线程局部存储Windows API笔记(四)win32内存结构Windows API笔记(五)虚拟内存Windows API笔记(六)内存映射文件Windows API笔记(七)堆Windows API笔记(八)文件系统Windows A...

2019-05-28 19:59:08 1390

原创 Go语言入门

文章目录1. 第一个 Go 程序1.1 Go 代码结构1.1.1 包声明1.1.2 引入包1.1.3 函数1.2 标识符大小写1.3 注意1.4 运行1.5 编译2. Go 语言基础2.1 Go 语言数据类型2.2 Go 变量2.2.1 声明变量及赋值第一种,指定变量类型第二种,根据值自行判断变量类型第三种,省略var多变量声明和赋值2.3 Go 常量特殊常量3. Go 语言函数4. 切片(Sli...

2019-05-27 11:16:05 223

翻译 Kafka笔记(一)Kafka介绍

Apache Kafka是一个开源流处理平台!一个流处理平台需要有三大核心功能:发布和订阅记录流,类似消息队列或企业消息系统以容错的持久方式存储记录流当记录发生时处理流kafka通常用于两个主要类型的应用:构建可在系统或应用程序之间可靠获取数据的实时流数据管道构建转换或响应数据流的实时流应用程序首先几个概念:Kafka以集群的方式运行在一个或多个服务器上,它可以横跨多个...

2019-05-22 10:42:12 383

原创 Windows API笔记(七)堆

在Win32中操作内存的第3种方法是使用堆。堆非常适合于分配很多小块的数据。例如,使用堆来管理链表和树要比使用虚拟内存或内存映射文件好很多。堆的特性:堆是属于进程的,一个进程的堆种的内容不能被其他进程种的线程访问在通常的程序中,很多数据默认存放在缺省堆,例如:new、malloc等申请的内存空间堆是虚拟内存上的一种特殊内存管理方式dll没有自己的堆,它使用的堆是进程地址空间的一部分...

2019-05-08 10:51:05 769

原创 Windows API笔记(六)内存映射文件

Windows API笔记(一)内核对象Windows API笔记(二)进程和进程间通信、进程边界Windows API笔记(三)线程和线程同步、线程局部存储Windows API笔记(四)win32内存结构Windows API笔记(五)虚拟内存Windows API笔记(六)内存映射文件Windows API笔记(七)堆Windows API笔记(八)文件系统Windows A...

2019-05-08 10:50:54 1753

原创 Windows API笔记(五)管理虚拟内存

Windows API笔记(一)内核对象Windows API笔记(二)进程和进程间通信、进程边界Windows API笔记(三)线程和线程同步、线程局部存储Windows API笔记(四)win32内存结构Windows API笔记(五)虚拟内存Windows API笔记(六)内存映射文件Windows API笔记(七)堆Windows API笔记(八)文件系统Windows A...

2019-05-08 10:44:48 2294

原创 Windows API(四)Win32 内存结构

1. 进程的地址空间进程创建时系统分配4G的地址空间。1.1 Windows如何划分进程的地址空间范围大小作用说明0x00000000 - 0x0000FFFF64KB用于NULL指针分配,不可访问NULL指针区域,师徒读写这一分区中内存地址将会引起访问冲突0x00010000 - 0x7FFEFFFF2GB - 64K - 64KB属于Win 32进...

2019-05-06 16:30:50 1610

原创 Windows API笔记(十一)设备I/O

常见设备和用处:设备常见的用处文件任意数据的持久化存储目录属性和文件压缩逻辑磁盘格式化物理磁盘分区表访问串行口通过电话线传输数据并行口向打印机传输数据邮件槽一对多的传输数据,通常通过网络向一台Windows机器传输命名管道一对一的传输数据,通常通过网络向一台Windows机器传输无名管道在同一机器上一对一的传输...

2019-05-05 17:40:00 1114

转载 (转载)UML入门

1. UML基础知识UML这三个字母的全称是Unified Modeling Language,直接翻译就是统一建模语言,简单地说就是一种有特殊用途的语言。UML由1.0版发展到1.1、1.2、…,到现在的2.0、2.x,本书将会以2.x版本为基础开展讨论2. UML有什么用?有很多人认为,UML的主要用途就是软件设计!也有人认为,如果你不是开发人员,是难以理解UML的。然而我第一次在实...

2019-05-05 16:58:15 181

原创 Unix编程笔记(二)标准I/O库

标准I/O库由ISO C标准说明,很多操作系统都实现了标准I/O库。标准I/O库处理很多细节,如缓冲区分配、以优化的块长度执行I/O等。这些处理使用户不必担心如何选择使用正确的块长度。1. 流和FILE对象2. 标准输入、标准输出和标准错误3. 缓冲4. 打开流5. 读和写流6. 每次一行I/O7. 标准I/O的效率8. 二进制I/O9. 定位流10. 格式化I/O11. ...

2019-04-28 23:34:27 307

原创 Windows API笔记(一)内核对象

1. 内核对象和句柄内核对象实际上是由内核分配的一块内存,而且只能由内核来访问。内核对象属于内核;句柄与进程相关,能被允许在该进程的所有线程正确使用!内核对象内存块是一个数据结构,他的组成:对象信息对象名安全描述使用计数…内核对象Event objects事件对象File-mapping objects文件映射对象File objects文...

2019-04-28 16:48:00 1230

转载 (转载)关于同步、异步与阻塞、非阻塞的理解

先说观点:同步与异步,指获取结果的方式:返回值或消息通知阻塞与非阻塞,指在等待结果返回时的状态:等待/线程挂起或轮询check异步就是异步,同步才有阻塞和非阻塞阻塞和非阻塞都是通过返回值获取结果以下是转载至《关于同步、异步与阻塞、非阻塞的理解》1、前言  前一段时间出去面试,被问到同步、异步与阻塞、非阻塞的区别。我一时半会没有想出来,作为一个工作三年的人来说,实在很惭愧。我当...

2019-04-28 15:36:42 159

原创 wsl使用笔记

1. 使用wsl + vscode搭建linux c/c++开发环境安装虚拟机好麻烦,写代码也不方便,虽然可以通过挂载的方式将windows系统下的目录挂载上去,但还是有点别扭。现在使用WSL + vscode,真的是不要太方便。在windows下编写代码,然后在WSL下编译,太方便了。但是有一点,windows下可能没用linux c/c++的头文件,但是没关系。拷贝linux c/...

2019-04-28 09:42:24 3281 1

原创 Unix编程笔记(一)文件I/O

文件I/O文件描述符、传递文件描述符标准I/O进程、进程间通信线程、线程同步信号

2019-04-27 19:16:49 167

CSS层叠样式

比较实用的CSS课件,个人感觉还比较简单易懂,喜欢的朋友可以下下来看一下。

2012-10-31

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

TA关注的人

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