自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qazw9600的专栏

qazw9600的博客

  • 博客(181)
  • 论坛 (1)
  • 收藏
  • 关注

原创 Linux 动态库版本管理

说明由于动态库支持动态链接和动态装载,使用中具有很强的动态性,在大型项目中如果缺乏约束,很容易出现版本问题,导致程序运行异常,例如:不小心使用旧版本的动态库文件替代了新版本的动态库。新版本动态库中的接口发生变化而引起,尽管在设计动态库时应该向下兼容,然而要保证动态库完全向下兼容却是不可能的。新版动态库引入了一些新的Bug。…解决方法解决版本问题的首要工作就是标识每一个版本,这就是版本号的作用,但是仅仅使用版本号并不能解决问题,甚至破坏了动态库的动态性,因为版本号不同,不同版本的动态库

2021-06-17 17:18:48 10

原创 作业管理

说明在linux shell平台上执行命令,每一条内置命令都会转化成shell内部的函数调用,而每一条非内置命令最终都会转换为一个进程运行,为了使用户更好理解,shell将命令运行抽象为作业(job),也时常被叫做任务。有了作业/任务的概念,作业的管理和控制就有了存在的必要。作业特征在一个tty中,我们可以运行多个任务,并切换激活不同的任务到前台,可以有多个后台任务在运行,但是只能有一个作业在前台运行。注意:作业管理和控制仅限于同一个tty执行的任务。作业状态Running :运行中

2021-04-21 14:19:08 24

原创 行车记录仪 - 碰撞检测

功能需求行车记录仪的核心功能是记录,大部分时候,行车记录仪都是在循环录制视频和音频,而设备的存储空间是有限的,因此录制机制一般是循环覆盖录制,如此一些重要的记录(例如:发生碰撞时的记录)就可能会被覆盖,为了避免这种情况的发生,行车记录仪设备就需要感知这些情况并做特殊处理(例如:备份相应时刻的录像数据)。实现原理碰撞检测是通过物理芯片G-sensor来实现的,加速度发生变化时G-sensor驱动会将加速度上报给应用层,应用层做相应处理。G-sensorG-sensor(Gravity se

2021-04-08 17:56:34 112

原创 自动化构建 - cmake - 构建目标类型 - Debug,Release,RelWithDebInfo,MinSizeRel

说明软件项目构建的目标程序为了标识不同的用途,时常会有Debug版本,Release版本等区分;使用cmake构建工具,CMAKE_BUILD_TYPE选项是实现该区分的标准接口。cmake支持四种构建类型:Debug;调试版本Release;正式版本RelWithDebInfo;既优化又能调试的版本MinSizeRel;最小体积版本使用类型选择构建时可以通过以下方法,选择不同的构建类型。在CMakeLists.txt中设置,代码如下:SET(CMAKE_BUILD_T

2021-03-27 16:52:08 120

原创 状态维持 - cookie,session,token

说明web程序是通过HTTP协议与服务器通讯,而HTTP协议本身是无状态的协议,如果没有其它辅助机制,服务器无法唯一标识HTTP请求,对于请求处理结果没有记忆能力,无法保存历史请求处理信息,一些需要持续保存一些状态的需求将无法实现,例如:用户登录功能,如果无法保存登录状态,意味着后续每次请求都需要重新登录一次,而不是只需要判断一下是否已登录,因此需要一些辅助机制来实现web程序的状态维持工作。cookie,session,token是常用的状态维持机制。cookie状态维持最简单的方式就是数据

2021-03-24 12:32:43 8

原创 成长 - 不要为打翻的牛奶哭泣

说明“不要为打翻的牛奶哭泣”这句话应该大部分人都听过,但是能做到的人很少。个人理解不要做无意义的事情这是我早期得到的教诲,打翻的牛奶已经被打翻了,哭泣也无法复原,哭泣是一种无意义的事情,做了也不会有任何改变。虽然我明白这个道理,但是却无法做到,因为我不是机器人,无法控制自己做的每件事情都是有意义,有益的,并且也不想强迫自己变成这样,因为这样就真成了一个没有感情会自动选择有益的机器人了。坏情绪的影响后来才慢慢明白:如果你想哭泣,说明事情已经改变了你的情绪,坏的情绪会影响你下一步行为,低

2021-03-19 21:41:16 9

原创 pthread库 - 线程同步 - 条件变量

说明多线程编程中,时常会遇到需求:线程需要等待某些条件满足才能继续运行,而这些条件会在别的线程中发生变化。为实现这种需求,应用层简单方法可能是:使用锁+轮询;使用锁来保护“条件变量”的访问,使用轮询的方式来修改和读取“条件变量”的值,然而该方式会有一些不便之处,如下:频繁的锁定和释放锁会有一定的性能浪费。轮询间隔不好把握,间隔时间太短,消耗的CPU资源较多,间隔时间太长,不能很及时的响应请求。条件变量条件变量就是解决以上问题的一种线程同步机制,其做法:采用阻塞线程和消息唤醒的方式可以极

2021-03-19 20:42:01 26

原创 基础知识 - 语法标准(ANSI C、ISO C、GNU C)

由来早期,程序员使用汇编语言进行编程,汇编语言与机器平台紧密耦合,为了屏蔽不同平台的差异性,增加代码的可移植性,就需要对汇编语法进行一定抽象并且制定一些标准接口,不同平台按照标准实现相同接口,这就是C语言的产生。标准语法标准ANSI C二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。ISO C与ANSI C标准同时出现的就是ISO组织,将ANSI C加入了ISO的大家庭,

2021-03-05 20:15:22 41 2

原创 反思 - 完美主义

说明越优秀的程序员越容易生成完美主义,追求细节的完美,追求单个模块的完美,但是这会成为成就优秀项目管理路途上的绊脚石。因为项目管理人员首先应该关注整体,再关注于细节。完美主义在大学中,我们就被教育了软件开发的基础流程,并在公司中可能又整理了一份适合中小公司的基础流程:需求分析 - 简单设计 - 正常流程(模块独立流程)- 再异常流程(模块之间相互配合流程)- 测试 -上线等。但是由于很多原因,中小公司任何一个流程都可能卡住,不容易进展下去,例如:需求分析不完善,不细,模拟两可。技术积

2021-02-06 20:31:23 29

原创 反思 - 中小公司项目管理思维 - 先将产品做出来,先将功能做出来

说明不同公司的情况不同以及面对的困难也不同,项目管理思维方式不能完全照搬,公司差别很大时照搬可能会导致巨大的损失。我想记录的只是可以通用的一小部分。先将产品做出来,先将功能做出来“先将产品做出来,先将功能做出来”这句话是中小公司项目中常听到的话语,几乎在每家中小公司都能听到这句话,因为每家中小公司都有一些共同点:项目时间紧;中小公司人少,想要和其它公司竞争就只能比别人快;中小公司野心大,很多中小公司只看到别家公司的成绩,却看不到别家公司的付出和基础。经验和技术积累不足;中小公司积累少,

2021-02-06 20:02:06 29

原创 声波通讯 - 流式数据处理 - 窗口对齐

问题描述个人当前实现的声波通讯程序原理是:采用两个不同频率的声波表示0和1,按照所需传输数据的二进制编码生成一段声波进行播放,音频接收端使用快速傅里叶算法解析采集到的音频数据,通过解析出的两个特定频率的排列顺序还原出二进制数据。问题:音频频率并不是一个sample的音频就可以解析出,使用快速傅里叶算法解析,需要多个sample的音频数据才能表示一个频率,假设是每40个sample表示一个频率(即一个二进制位0或1),音频接收端也需要以同样的sample个数作为一个解析窗口,由于发送和接收的时间不一定同

2021-02-06 19:19:32 45

原创 编程能力提升方向

问题从整体来看,程序员能力提升的方向有很多:编程能力,沟通能力,管理能力等;细分到编程能力,程序员提升的方向有哪些?理解编程本质 - 使用国家教育系统已经给出过答案了,在大学中有两种学科:理论学科和应用学科,例如:计算机是理论学科,软件工程是应用学科,应用的意思就是使用;编程是软件工程最本质的部分,因此编程的本质就是使用。工作多年理解:程序本质上就是上层代码调用下层代码,下层代码调用系统接口,操作系统接口调用驱动接口,驱动控制硬件;当然并不是简简单单的调用,更重要的是同层次的扩展,例如:操作

2021-02-05 21:21:24 92 4

原创 行车记录仪 - 国际化 - 光源频率/电源频率

说明之前做IPC(IP camera)项目时,IPC有一个设置项叫做电源频率,可选值有50HZ/60HZ;当前做行车记录仪项目,也有一个设置项:光源频率或者光源闪烁频率,可选值也是50HZ/60HZ,之前并未过多在意,只知道该设置项的作用但不清楚为什么要可设置,故记录下。理解基础概念光源频率/电源频率这两个设置项配置的是同一个属性,即交流电的频率,众所周知,平常生活中使用的电源是交流的,方向交换频率有50Hz/60Hz两种,中国是50HZ,而有的国家或地区是60HZ。为什么要可设置

2021-02-05 17:47:16 885 1

原创 程序调试 - Debug/Release 版本

说明在多年的嵌入式研发工作中,发现大部分中小公司都没有划分Debug/Release版本的习惯,即使是一些自誉业内翘楚以及大公司出来的创业团队。常见处理:整个研发阶段只有一种版本,几乎不使用额外工具,调试等通过打印而不使用gdb等工具。编程调试时使用带调试信息的版本,正式版本在此基础上strip下。个人理解是否需要区分Debug/Release版本Debug(调试阶段)、Release (版本发布阶段),每个程序的生命周期中都有这两个阶段,为了针对性处理,每个程序都应该有两种版本(D

2021-01-20 21:40:18 33

原创 C/C++语言基础知识 - 函数调用规则

引子一道比较常见的关于printf的笔试题#include <stdio.h> void main() { int i = 5; printf("%d %d %d %d %d %d\n", i, --i, i--,i, i--,i); } * 求运行结果在64位Ubuntu上的输出结果是 :2 2 4 2 5 2在嵌入式平台ssc323上输出结果是 :2 2 4 2 3 2原因这是由于函数调用规则不同导致的,函数调用对于程序

2021-01-14 20:59:51 32

原创 行车记录仪 - 录像存储功能需求分析

需求分析行车记录仪产品的主要作用是记录汽车行驶过程中的现实场景,因此记录(录像录音存储功能)是其核心功能。和其它录像产品(IPC)比较个人做过IPC产品,行车记录仪的录像存储和IPC的录像存储,侧重点是不一样的,如下:IPC产品录像侧重点IPC产品拥有稳定的电源,大部分时候是独自工作的(用户不会一直使用产品),因此IPC的录像侧重点是:存储时长越长越好,方便用户后续回放。行车记录仪产品侧重点行车记录仪产品不一样,正常情况下车主和设备时刻在一起的,正常行驶的录像对于用户来说

2021-01-14 18:25:52 109

原创 产品安全 - 小漏洞导致大问题

说明近日,公司为了加强代码安全,引入了代码加解密工具,即:对程序员编写的代码进行加解密,只能使用被授权的编辑工具,在指定的地理范围(公司)内显示和编辑,对PC进行监控,不允许代码文件的拷贝和发送等操作,对PC上U盘等外置设备的插拔进行监控等。工具说明工具拥有window和linux版本window版本拥有主要的功能,包括:对个人pc的监控,代码编辑工具的授权等,未授权的工具打开代码会显示乱码,功能看起来比较完备。linux版本,好像实现不了授权工具对代码编辑时自动解密,使用授权工具对加密代码

2021-01-13 22:10:27 131 3

原创 自动化测试 - uiautomator2框架应用 - 自动打卡

说明最近公司更改了打卡方式,改为使用手机APP定位打卡,类似于阿里的钉钉打卡。为了学有所用,特编程实现自动打卡。框架说明UIAutomator是Android提供的自动化测试框架,支持大部分Android系统操作,是用来做UI黑盒测试的,也就是模拟人工的手工测试,例如:点击控件元素看看显示是否符合预期,特点如下:黑盒测试,模拟人的操作,不需要了解实现细节。不依赖于某个APP,能跨App运行。不需要root权限。缺点是只支持SDK 16(Android 4.1)及以上,不支持Hybi

2021-01-13 21:21:58 136

原创 时间操作 - 时间格式转换

说明编程中,时间格式转换是常用的功能,特别是与格式化字符串之间的互相转换。时间转格式化字符串固定格式字符串 - asctime/asctime_r/ctime/ctime_r函数asctime/asctime_r函数支持将一个struct tm结构格式化为一个固定格式字符串;ctime/ctime_r函数支持将一个time_t变量转换为一个固定格式字符串。固定格式:Www Mmm dd hh:mm:ss yyyy,Www 表示星期几,Mmm 是以字母表示的月份,dd 表示一月中的第几天,

2021-01-12 20:35:31 49

原创 C编译器 - 隐式函数声明

引子初学者使用C语言编程,有时会出现异常崩溃,如下:* test.c#include <stdio.h>int main(){ printf("%s\n", test()); return 0;}* xxx.cchar *test(){ return "hello world";}* 编译gcc test.c xxx.c -o test* 执行xxx:~/demo$ ./test段错误 (核心已转储)问题原因在C语言中,如果函数在调

2021-01-07 11:24:16 43

原创 nor flash 应用层操作

说明flash是嵌入式开发中接触频繁的器件之一,有很多功能依赖于它,例如:升级时需要将升级文件写入flash;有些平台在flash上划分一块区域,实现保存配置(nvram)功能。使用应用层,我们平常会直接使用命令操作flash,例如:使用flashcp烧写flash分区,使用flash_eraseall清空flash分区,使用flash_lock_unlock对flash加锁取消锁等;即使是项目代码中也常看到直接调用这些命令操作flash。为了更好理解命令的实现原理和实现自己的需求(当前平台没

2020-12-29 20:42:55 51

原创 基础语法 - 位运算

位移内存中存储的数据按二进制位左右移动。右移 (二进制数据向右移动) 操作符:>>左移 (二进制数据向左移动) 操作符:<<使用示例int a = 1;int b = a << 1; //左移1位int c = a >> 2; //右移2位C语言处理标准左移:移位和右边补零右移:有两种处理方式无符号数采用逻辑右移:移位和左边补零有符号数采用算术右移:移位和左边补符号位(正数补0,负数补1)。示例:unsig

2020-12-26 18:09:46 22

原创 网络编程 - 阻塞和非阻塞

说明网络编程中有两种模式:阻塞和非阻塞,默认是采用阻塞方式。什么是阻塞和非阻塞阻塞和非阻塞是对操作请求者在等待返回结果时的状态描述,阻塞时,在操作请求结果返回前,当前线程会被挂起,得到结果之后返回;非阻塞时,如果不能立刻得到结果,请求者不会挂起当前线程,而是直接返回错误信息,因此对应非阻塞的情况,调用者需要定时轮询查看处理状态。本质:阻塞和非阻塞本质上是本地系统对socket的不同处理方式,并不影响socket链接,也不会影响通信对方,通信双方可以自由选择阻塞还是非阻塞,例如:客户端设置成阻塞

2020-12-25 20:41:35 60

原创 进程通信 - 管道

说明管道是一种进程通信方式,可以实现进程之间数据传输。管道是半双工,数据只能向一个方向流动,如需双向通信,可以创建起两个管道。分类Linux支持两种管道机制:无名管道(PIPE)和有名管道(FIFO)。区别:有名管道在文件系统中提供了一个以文件形式存在的访问接口与之关联,而无名管道访问接口和数据传输都在内存中完成,其它进程无法访问,因此无名管道只能用于具有亲缘关系的进程之间的通信(父子进程或者兄弟进程之间),实现依赖于进程文件描述符传递,而有名管道可以用于任何进程之间。无名管道

2020-12-24 20:21:33 54 1

原创 软重启(reboot)

说明嵌入式开发中,重启操作是最常用的操作之一,由于其操作简单,不容易受到关注,但是不同的重启方式实现和现象其实是不一样的。断电重启操作:关机后再开机,例如:拔掉电源再接上电源或者电池没电后再充电开机。该方式是完整的重启操作,硬件会重新上电,内存等都会被重置,软件会重新执行,重新初始化等。软重启操作:在Linux平台上手动执行reboot命令重启设备,其它平台类似。不同于断电重启,软重启是软件机制,其通过信号或者其它方式通知各个模块设备需要重启,模块需要自己实现模块的重启,从而实现设备

2020-12-19 15:07:36 438 1

原创 嵌入式产品防盗版

说明在电子产品开发中,防止产品被盗版是一个必须考虑的问题,技术成熟的公司都会有相应措施。盗版的危害盗版拥有价格优势,侵占原版市场开发新产品,成本和时间支出占很大比例的就是研发,而盗版产品,不需要研发支出以及相应的时间支出,因此可以接受比原版更低的价格售卖,进行压价,占有原版市场。盗版质量不行,影响原版声誉盗版厂商可能利用有原厂背锅的因素,为获得更大的利益,采用低价材料;或者盗版实力不强,导致盗版结果不完美,影响原版评价。盗版的可行性熟系电子产品的都知道,盗版是可行的,如

2020-12-14 09:50:43 176

原创 环境准备 - 工程管理

说明工程管理即项目管理,go语言中提供了工作区管理,源码管理,第三方依赖库管理等规范。go是工程语言,不像学院语言那么自由,对工程管理做了一些规范。工作区(workspace)管理go语言编程,并不是随便创建一个目录就能作为工作目录,因为依赖文件的查找和中间、目标文件的生成,以及可执行文件的安装,go对工作区的目录结构以及工作区的指定有一定规范。当然如果工程只有单个源码文件或者多个文件但是导入包路径按绝对路径写死也是可以编译的,但是不建议这样做。查看和设置go环境安装好后会设置默认的

2020-12-07 20:58:38 28

原创 代码优化 - likely和unlikely函数

简介likely与unlikely是内核中定义的两个宏,位于/include/linux/compiler.h中,具体定义如下:#define likely(x) __builtin_expect(!!(x), 1)#define unlikely(x) __builtin_expect(!!(x), 0)__builtin_expect是gcc的内置函数,是一个预处理命令(即起作用于编译时预处理阶段),用于代码优化, 具体定义如下:gcc(version 4.4.0)long __b

2020-11-18 11:07:43 49

原创 标准库 uClibc

简介PC上常用的标准库glibc是一个非常宠大而完整的库,但是对于嵌入式系统来说,其体积显得过于大了一些;uClibc的提出就是为了解决这个问题。uClibc尽可能的兼容Glibc,大多数应用程序可以在很小或完全不修改的情况下就可能使用uClibc替代glibc;通过uClibc来代替Glibc,可以在不改变应用程序功能的前提下,大大减少发布文件的大小,无论应用程序以静态链接来编译,还是以动态链接形式编译。使用在嵌入式平台,标准库(不管是glibc还是uClibc)的使用,有两种情况。环

2020-11-18 09:46:04 99

原创 嵌入式Linux平台下SD卡使用

说明在嵌入式开发中,SD卡是比较常用的器件,记录下其使用方法。底层配置驱动调试。内核配置。Linux内核选项device deivers -> mmc/sd card support -> Samsung s3c sd/mmc card interface support应用层使用硬件识别和显示如果SD卡驱动和内核配置ok,插入SD卡后,内存文件系统目录/sys/bus/mmc/devices/下会自动生成文件节点来表示SD卡,例如:mmc0:504

2020-11-16 21:06:49 155

原创 Binutils - c++filt工具

简介c++filt是C++源码编译后生成二进制文件中符号表中的符号名还原工具。C++语言是允许函数重载的,但是程序中一个函数名只能拥有一个内存地址,为了支持函数重载,c++编译时会在符号表中对函数名进行修改(根据参数类型等信息),因此符号表中的函数名将会变得人眼不可读,如下:0000000000019176 t _ZL18__gthread_active_pv00000000000190ad T _ZN10TimeWalker10abstime2tsERKSs使用帮助信息xxx@ch

2020-11-16 20:31:04 35

原创 Binutils - strings工具

简介strings是文件中的字符串检索工具;它可以打印出文件中存在的所有满足条件的字符串。其主要是用来检索出编译生成的二进制文件中的字符串。使用帮助信息xxx@chejiser:~$ strings -hUsage: strings [option(s)] [file(s)] Display printable strings in [file(s)] (stdin by default) The options are: -a - --all Sc

2020-11-16 20:07:36 26

原创 内核配置保存

事由调试开发板,想在sigmastar提供的内核配置上做些修改,去掉一些不需要的配置,保存一份自定义的配置,但是配置过程中出现了一些异常和疑惑,理解后,特记录下。异常sigmastar提供的默认配置和编译命令,如下:declare -x ARCH="arm"declare -x CROSS_COMPILE="arm-buildroot-linux-uclibcgnueabihf-"make infinity6_cardv_defconfig //使用配置infinity6_cardv_

2020-11-12 20:34:47 98

原创 嵌入式Linux时区设置

说明在多个平台进行时区设置,发现有多种方式,有的组合设置能生效但是有些组合不能,有些不解,特记录一下。时区设置早期平台(gm8126平台)之前gm8126板子上时区设置只需要将相应的时区文件覆盖掉/etc/timezone即可。/etc/timezone是时区文件,里面内容是复杂不可读的时区信息。平台使用glibc。MTK8516平台MTK8516平台使用systemd系统为初始化进程(init)。设置时区需要使用以下命令:sudo timedatectl set-timez

2020-11-11 19:19:39 161

原创 goahead - 导入项目

说明在项目中采用goahead作为Http服务器,为远程客户端提供访问接口和资源(网页,图片等),往往需要自定义很多接口和处理。自定义接口,简单点可以使用CGI协议(大部分公司采用的),但是由于CGI程序的性能问题以及CGI程序与主程序进程通信的不便,我们需要其它方式,例如:内存CGI,嵌入到主进程等。goahead扩展性设计初,goahead就充分考虑了扩展性和可嵌入性,内存CGI等机制就体现了这一点,查看编译脚本可发现核心源码最终编译成了一个库(libgo.so),主程序goahead也是

2020-11-10 19:48:35 101

原创 busybox 移植使用

简介busybox是Linux上的一个应用程序,它整合了许多最常用的工具和命令,如rm, ls, gzip, tftp等,是嵌入式平台根文件系统中常用的构建模块。由于busybox程序小,占用内存少并且功能强大,编译后只有单个程序,特别适合资源敏感的嵌入式系统,因此常用来构建嵌入式平台的根文件系统。使用说明官网:http://www.busybox.net/下载地址:https://busybox.net/downloads/下载地址中包含了所有的busybox版本,有些是stable版

2020-11-04 21:23:13 26

原创 调试工具 - 嵌入式平台GDB调试

说明gdb是C/C++编程中常用的调试工具,在嵌入式平台也是一样,但是大部分嵌入式设备内存空间都不充裕,运行gdb程序比较吃力,在嵌入式平台常采用GDB + GDB Server的方式。GDB + GDB Server方式是C/S结构,通过网络进行调试,以减少设备端的内存占用。环境搭建平台:SOC: ssc323交叉编译链:arm-buildroot-linux-uclibcgnueabihfgdb移植GDB源码下载地址:http://www.gnu.org/software

2020-11-03 21:34:04 94

原创 任务时间预估

说明时间管理是项目管理中非常重要的一项,确保大部分任务都在预期时间内完成,整个项目在预期时间内完成,计划才具有有效性。但是对于管理新手而言,任务时间预估是非常困难的一件事。困难点站在被安排者角度没做过类似任务,不清楚该如何实现或者了解一些但是不确定是否可行,需要研究下才知道。大体上知道该如何实现,但是不确定完成要多久或者中间是否会出现困难点。站在安排者角度对员工实力把握不准,由于不是自己做,预估不了时长,担心自己制定的时长不切实际,预估时间太短或者长了。担心员工完不成或者

2020-11-02 21:24:10 58

原创 根文件系统(rootfs)理解

说明最近学习了使用qemu搭建ARM vexpress环境,对rootfs有了一些大致理解并且对rootfs的构建做了些测试验证,特记录下。简介文件系统有两种意思:文件管理系统,例如:ext2、ext3、vfat、ntfs等文件管理和组织结构。一定规模文件的集合,分别起不同作用的文件按照一定结构组合形成系统。显而易见根文件系统不是类似于ntfs等文件管理系统,它属于第2种意思,根表示设备启动后该文件系统将被mount到根目录即路径’/'下。根文件系统不是一种文件管理系统,但是根文

2020-11-02 20:43:29 109

原创 人脸算法应用总结

说明2018年专门负责研发人脸相机有一年的时间,在这期间对接了多家公司的算法,例如:瑞为FPGA算法板、君正T01算法板、伟视清提供的软算法、以及一些小公司的软算法,也接触了阅面等公司的算法,特记录下一些理解。人脸相关技术人脸检测人脸跟踪人脸识别人脸检测人脸检测即检测出摄像头采集视频画面中的人脸。遇到问题:早期算法无法识别活体,如果镜头中有玻璃反射出的人脸以及书籍上的人脸、照片等无意义的人脸都会被检测到,浪费了一定性能,当前算法应该大部分支持活体检测。人脸跟踪人脸跟踪即跟踪

2020-10-31 17:18:36 63

空空如也

gstreamer 获取音频时长 duration 信息

发表于 2019-06-10 最后回复 2019-06-18

空空如也

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

TA关注的人 TA的粉丝

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