- 博客(14)
- 资源 (1)
- 收藏
- 关注
原创 IPC、NVR架构
IPC、NVR、DVR的软件架构都是差不多的。虽然没看过Android的架构,但是对单机设备来说,架构都是类似的。总体采用分层的形式。最底层是系统封装层,基础组件,类似的开源模块:curl,boost,sqlite,freetype,jsoncpp,openssl。业务支撑层:把适合也摄像头的业务下沉的这个层,也就是业务的共性部分,这一层开源相对较少。就是把业务细化为各个组件,提供给应用层。比如媒体采集,封装。应用层:这一层就是安防强相关的,比如web、onvif、gb28181、rtsp,基本
2022-02-28 22:26:13
3665
原创 C++ 默认构造函数
class CTest{public: CTest() = defalut; ~CTest() = defalut;}显示的指定默认构造函数;
2022-01-22 10:46:59
183
原创 C++11 初始化成员变量
在c++11之前初始化变量在构造函数中class CTest{public: CTest::CTest():m_a(1){}private: int m_a;}c++11可以在成员变量定义的时候直接赋值。class CTest{public: CTest::CTest(){}private: int m_a = 1;}...
2022-01-22 10:44:14
614
转载 Localtime导致进程死锁问题探源-转
前段时间我们发现在信号处理函数中使用localtime()函数可能会导致进程死锁。但一直没有找到解决此问题的方法,也没有找到产生此问题的根源。最近我考虑使用pthread_mutex来包装一次localtime()函数,达到安全使用localtime()函数的目的。在测试中发现,使用pthread_mutex并不能达到预期的设想。我把localtime()相关的代码全部删除,发现问题依旧。可见
2017-07-26 10:31:13
1043
原创 libevent学习之helloworld
libevent事件驱动模式。可以使用telnet测试(telnet 127.0.0.1 9995)/* This example program provides a trivial server program that listens for TCP connections on port 9995. When they arrive, it writes a short me
2016-09-04 18:43:02
702
原创 通用网络协议库
常用的网络框架,libevent、libev、boost.asio,ace,基于事件驱动的模式。选一个著名的开源库还是自己写。需要从几个方便考虑:1.目的,用来编写通用网络协议,包括ftp、http、dns等协议。2.稳定性。维护和使用的多。3.性能。应用于嵌入式设备。基于当前的实际情况,应该编写符合自己的网络框架。
2016-09-03 12:22:24
1196
原创 每日一练
最大公约数问题,有2个整数M,N,求最大公约数?这是数学问题:对公约数数学中有特定的书法,叫辗除法。1.M>N情况下,M除以N,余数r,如果r=0,则N就是最大公约数,结束。2.当r!=0,则M=N,N=r,执行第一步。为何如此推理,想不明白。此题可以采用递归,也可以使用循环处理。递归方式:int digui(int a,int b){ if(b > 0) re
2012-02-09 14:44:57
262
原创 每日一练
做面试题目有点类似做小学的应用题,理解问题,分析问题,尝试解决问题,检验假设。理解题目的意思。提出问题?分析问题。尝试解决问题。检验假设。
2012-02-07 16:52:33
269
原创 每日一练
1. (void*)ptr和*(void **)ptr的区别?ptr是指针。前者是指针强转,后者先强转为指针的指针,后获取指针的值。2.如何到指定的地址执行代码?强转为函数指针,调用该函数。0x100000。(*((void(*)(void))0x100000))();
2012-02-07 08:34:01
267
原创 可执行文件及linux进程内存
代码通过编译器编译为可执行文件,linux下执行文件的格式为elf。linux下物理内存通过mmu管理映射到进程的虚拟内存中,虚拟内存的分布1.代码段:只读内存区,当尝试写,系统产生段错误。linux下把elf文件中的代码段映射到该区域。该地址从08048000开始。2.data段:数据段,初始化的全局变量和static变量。为何还产生bss段,为了可执行程序更
2012-02-06 15:27:42
617
原创 shell脚本语法分析
任何语言都是围绕数据和算法。shell脚本语言是弱类型语言,数据没有类型,全部当做字符串处理。算法通过逻辑控制完成,引入关键字if,for,while等。脚本语言与编译语言不同之处,编译语言编译成目标代码,直接由计算机运行。脚本语言读取程序,转化为内部形式,再由脚本解释器执行。1.开头#!/bin/bash -f 最好采用这种方式,如果第一行不写的话,linux当初二进制可执行文件,发
2012-01-05 23:00:26
590
原创 gnu make工具
linux下源码的自动化编译使用make,如果只是C文件使用make反而麻烦,但是多个c文件编译成可执行文件首先使用gcc一个一个文件编译,最后把目标文件链接。而这样的工作需要不停的重复。引入make是为了自动化编译。但这不属于编译器的部分,至少gcc是这么做,vc是集成环境,包含了make的功能。linux下使用的编译器和make工具都是gnu项目的。c shell make都使用一定的字符组成
2012-01-02 23:46:20
415
原创 UCC-C语言语法分析
C标准中对语法分成3类:表达式,声明,语句。表达式是一种数学表达式的描述。声明是对数据类型的定义,语句包括前面2种,还有选择语句等。UCC中定义grammer头文件,分别描述声明,表达式,语句。声明的语法分析及检查decl.c decl.h declchk.c。表达式的语法分析及
2011-09-10 12:26:30
808
原创 UCC--C语言词法分析
C89中定义词法有:关键字,标识符,常量,串字符值,算符,标点符号。关键字:共有32个关键字。标识符,定义如下:非数字字符,标识符 非数字字符,标识符 数字字符。3种定义。 非数字字符的定义:A~Z,a~z,_。常量:浮点常量,整数常量,枚举常量,字符常量。字符常量:'a
2011-09-09 00:08:10
1100
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人