自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (3)
  • 收藏
  • 关注

原创 音频处理基础的一些笔记碎片

下面是日常生活中的一些声音频率特征和声音大小,大家可以用本身佩戴助听器或人工耳蜗听听,看看有啥题目——各个频率的小声能否听见?小鸡的啼声 频率范围 2000 —4000 赫兹 声音大小: 40 —50分贝。硬币撞击声 频率范围 2000—4000 赫兹 声音大小: 40—50 分贝。抽油烟机声 频率范围 200 —750 赫兹 声音大小: 50 —60分贝。键盘敲击声 频率范围 500—1000 赫兹 声音大小: 50—60 分贝。火车靠站 频率范围 2000—4000 赫兹 声音大小: 90 分贝以上。

2023-09-26 14:19:32 123

原创 对变量“喜新厌旧”的编译器

【代码】对变量“喜新厌旧”的编译器。

2023-06-19 20:26:53 100

原创 State 和 Status 傻傻分不清

而真正表示某个具体的状态的时候我们使用 status。而 response 返回码使用的是 status,而此时我们会自然的想到 state status,巧了,是这两个词的中文意思还是一毛一样的❗❗❗。而 enum 的内容就应该使用 status,不管这个返回码是多少,它都是指定的一个状态。而 status 是值特定时期的状态,状态的集合时,我们都使用 state,我们经常会遇到需要表示状态的时候,只是说我是一个状态机用来管理状态,泛泛的指状态或是用来表示管理状态,state 表示的是一种状态,

2023-06-10 10:39:21 1810

原创 程序猿的浪漫:TODO、FIXME、XXX 注释标签

但是程序猿的世界总是有它自身的发展规律,通过学习前辈们的留下来的经验,代码编写有一些浪漫的约定规则,这些特殊的约定规则,帮助开发者还是读者传递一些代码线索,这些线索会穿越时空,起承转合,让前人后人之间心领神会。但这种实用性的需求,不论下至谭浩强,上至软件工程,乃至 Agile 也没有明确告诉开发者如何处理。从字面意思也很好理解,该关键字所表达的含义是待实现,目前尚未实现的功能。该关键字表达的含义是此处代码实现有问题,先临时实现,须要后续的修正。也是表示后续代码须要修正,更多强调的是对代码进行优化。

2023-02-08 15:51:51 925

原创 #define可能是个“渣男”

structfoo这样,编程者只需在程序中改动一行代码,即可改变a、b、c的类型,而与a、b、c在程序中的什么地方声明无关。宏定义的这种用法有一个优点——可移植性,得到了所有C编译器的支持。这个语句定义了 FOOTYPE 为一个新的类型,struct foo完全等效。单纯看这个使用似乎与宏定义的使用没有太大区别,但是更多的时候,使用宏定义类型,真的很不靠谱!structfoo*从上面两个定义来看,T1和T2从概念上完全符同,都是指向结构foo的指针。T1 a , b;T2 a , b。

2022-11-06 22:12:25 272

原创 “悬挂式条件”引发的“血案”

这个问题虽然已经为人熟知,而且也并非c语言所独有,但即使是有多年经验的c程序员也常常在此失误过。估计稍微一点经验的编程者都理解这个理论基础,但很多时候却”防不胜防“,因为出现这种出乎意料的。,然而,这段代码实际上所做的却与编程者的意图相去甚远。原因在于C语言中有这样的规则,)时引入的,静悄悄而又隐蔽的出现,而造成的后果往往是崩溃性的。写法并非编程者开始设计的模样,往往是通过代码整合(这段代码中编程者的本意是应该有两种主要情况,源码管理时代码合并、解决冲突等。

2022-11-06 22:09:51 233 1

原创 失控的返回值

这个程序包含一个不易察觉的错误。C语言函数有个特点——一个返回值为整型的函数如果返回失败,实际上是隐含地返回了某个“垃圾”整数(如果非要深究,这个时候会返回处理器第一个运算寄存器的值,而这个值是什么取决于当前处理器的运算状态)。只要该数值不被用到,就无关紧要。在编译器中可以强制加上强制返回检查,当编程者在函数实现时遗漏了编译器会报错误或警告,因此上面第一个编译时,在新版本的会产生一个警告,养成一个好的习惯,所有的函数返回,不管是与否,都需要显式编写(包括与。

2022-11-06 22:05:03 444

原创 换马甲的数组

所以,C语言中会自动地将作为参数的数组声明转换为相应的指针声明。声明了 hello 是一个字符数组。如果将该数组作为参数传递给一个函数,是一个字符的二维数组。编程者可以任选一种写法来。是一个字符串数组,而下面那种写法,更强调的是。数据的这种多样性定义,被某些编程者称为。,容易造成混淆错觉,却又没有什么意义。如果我们使用数组名作为参数,那么。因此,将数组作为函数参数毫无意义。,这或许就是这个语言设计的初衷。上面一种写法,更加强调。与这种写法也完全相同。

2022-11-06 22:01:27 421

原创 注意分号 ; 的在语法节奏感

一位资深的编程者说,每个编程人员在编码的时候都会有一种抑扬顿挫的表达节奏,练成这种感觉以后,代码中出现以上这种异常的分号,会显得特别碍眼,那大家好好感受下这种节奏吧。在C语言中的作用是作为一条语句结束的标识,在C程序中如果不小心多写了一个分号可能不会造成什么不良后果,这个分号也许会被视作一个不会产生任何实际效果的空语句。由此可见当程序中出现多余的分号时,会隐藏不易被发现的错误。语句没有任何关系了,也就是在任何情况下b的值都会赋给。语句后多了一个分号,后面的语句。写法的问题,下面会描述)。

2022-11-06 22:00:16 337

原创 一个神奇的整型常量

当然,有一种情况需要注意的,在书写代码时候,为了上下文美观需要,忽略这个“神奇的整型常量”的编程者可能无意中把十进制写成了八进制,”好心却做了坏事“。了解进制含义都知道这个数在八进制与十进制上截然不同。在很多公司编程规范里,命令禁止使用八进制常量,有类似需求的使用十六进制代替。C 语言中,有一个神奇的整型常量语法定义——,而非数理逻辑里的十进制。010等于10(十)

2022-11-06 21:58:44 50

原创 ‘==‘与‘=‘并非胖与瘦一样容易分辨

同时出现(与三元表达式 c=a==b?1:2),并产生复杂的嵌套。,然后检查该值是否为零,但实际上有可能事与愿违,造成比较大的恶果。由于这样的特殊性,在一个表达式中可以出现多个。针对该陷阱,可以养成以下两个良好的习惯客服。等,用于相等比较的时候,使用。,而用于赋值的时候使用。

2022-11-06 21:54:08 185

原创 select() 的 timeout 陷阱

在调用 select() 的 timeout 会倾向于在循环外部进行赋值,以降低不必要的 CPU 消耗,关于 select() timeout 上的用法陷阱,很多资深的平台移植人员也掉进过,在 FreeRTOS 平台调用 select,timeout 的值在调用前后保持不变,但任何的处理都是要花费时间的,当 select() 第一次调用完成再次进入循环体时,这个 timeout 的值已经背更新为”剩下的时间“,如 9 秒,这个时候,select() 调用的设计不再符合设计者的初衷,

2022-11-06 15:17:20 1788

原创 禅道开源版修改mysql密码

按照官方指导在服务器上部署了禅道选择适合您的安装方法 - 禅道开源版使用帮助 - 禅道开源项目管理软件https://www.zentao.net/book/zentaopmshelp/40.html要注意的是,如果使用一键安装方式,由于目前云服务器预装了 apache 或者 lamp,使用一键安装包内自带了 LAMP,这个可能会冲突,安装之前确保已经退出了服务器上运行的 lamp,以 ubuntu 为例$ sudo /etc/init.d/apache2 stop$ sudo /etc/i

2022-02-11 12:40:15 4616

原创 tar指令打包文件不包含路径

生成文件 /tmp/a.tgz打包的目录是 ~/frank看了网上很多文章,通过 -C 参数,测试无果,最后发现 -C 后面是带目录,并非目标目录,中间还需要一个空格实现代码为:tar -czvf /tmp/a.tgz -C ~/frank/请注意在 ~/ 与 frank/ 中间有一个空格...

2021-12-24 23:22:33 2289

原创 美国时区对应 POSIX 时区

"timeZone":"Pacific/Honolulu" HST10 "timeZone":"America/Adak" HST10HDT,M3.2.0,M11.1.0 "timeZone":"America/Juneau" AKST9AKDT,M3.2.0,M11.1.0 "timeZone":"America/Metlakatla" AKST9AKDT,M3.2.0,M11.1.0 "timeZone":"America/Yakutat" AKST9AKD

2021-11-28 18:45:37 984

原创 AK3760E 方案更新 NANDFLASH 分区

1、确定分区未被挂载;2、使用 mtd_debug 擦除分区;2.1、mtd_debug info /dev/mtd9 查看 mdd.size 分区大小;2.2、mtd_debug erase /dev/mtd9 0 31457280注意:通过命令mtd_debug erase erase /dev/mtd9 0 `mtd_debug info /dev/mtd9 | grep mtd.size | cut -d ' ' -f 3`可以一步完成擦除工作3、使用原厂提供的 nan

2021-11-28 15:48:29 1454

原创 自动交叉编译 gdb-7.9 脚本

自动交叉编译 gdb-7.9 脚本#!/bin/shCPU_CORES="`cat /proc/cpuinfo |grep "processor"|wc -l`"#CROSS_COMPILE=""CROSS_COMPILE="arm-linux-"CROSS_ARCH="arm"# Download TermCapwget ftp://ftp.gnu.org/gnu/termcap/term

2016-08-23 13:43:10 647

原创 HI3516A交叉编译gdb-7.8

海思HI3516A腾空出炉,

2014-10-13 15:12:12 4711 1

原创 C++析构函数继承时的二三事

公司项目需要,原本一直从事C开发的我,强扭着写起了C++。一直以来C++的基础还停留在学生时代,由于理论基础的不扎实,在项目中析构函数多重集成后犯了一个低级的理论错误,特此记录,引以为戒。废话少说,看图说话。首先定义了一个类,然后继承他,#include class CPU{public: CPU(){ std::cout << "Struct CPU"

2014-04-17 23:32:16 841

转载 Web工程师的工具箱

本文出自Ivan Zuzak 的《The Web engineer’s online toolbox》,作者给了一个各种可以用来进行开发、测试、调试以及文档编排的在线工具集。(注:我发现CSDN上已经有了这篇文章《Web工程师必备的18款工具》,但可惜的是这篇文章并不全(原文后来被更新到了33个工具),而且其中并没有包括原文评论中出现的所有工具,所以,我一并补全了更出来,一共40多个工具)

2013-01-29 00:47:49 642

转载 应该知道的Linux技巧

这篇文章来源于Quroa的一个问答《What are some time-saving tips that every Linux user should know?》—— Linux用户有哪些应该知道的提高效率的技巧。我觉得挺好的,总结得比较好,把其转过来,并加了一些自己的理解。 首先,我想告诉大家,在Unix/Linux下,最有效率技巧的不是操作图形界面,而是命令行操作,因为命令行意味着自

2013-01-29 00:45:23 615

转载 ZeroMQ初体验——hello world

群里最近在说网络库的东西,群主推荐说可以看看ØMQ,说非常精简,而且支持多种语言,非常高效率,于是下载来看看。ØMQ官网 www.zeromq.orgGuide还没看完,大概先看了下,觉得很精简,而且写的非常清里面包含了多种设计模式的应用,建议大家有时间看看。所有网络交互所使用的API实际上是Berkeley套接字(BSD) 。这个源自1980年代早期的协议是TCP

2013-01-29 00:41:04 1148

转载 Unix网络编程第三版中代码环境搭建

最近在啃《Unix网络编程第三版 卷1》,其中出现了很多关于unp.h的地方,应该是书中自带的文件,搜索了一下,下载了源代码来自己编译。源代码下载地址:unpv13e.tar.gz下载 编译步骤tarzxvfunpv13e.tar.gz ./configure cdlibmake cd../libfreemake cd../lib

2013-01-29 00:10:52 1082 1

转载 Pthreads mutex VS Pthreads spinlock

转载自:http://www.searchtb.com/2011/01/pthreads-mutex-vs-pthread-spinlock.html锁机制(lock) 是多线程编程中最常用的同步机制,用来对多线程间共享的临界区(Critical Section) 进行保护。Pthreads提供了多种锁机制,常见的有:1) Mutex(互斥量):pthread_mutex_

2013-01-28 23:49:36 836

转载 初识英特尔线程构建模块之内存管理tbb_malloc

什么是TBB?TBB(Thread Building Blocks)是英特尔发布的一个库,全称为 Threading Building Blocks,里面包含了 Algorithms、Containers、Memory Allocation、Synchronization、Timing、Task Scheduling这六个模块。暂时我只用到了Memory Allocation模块,其他的没

2013-01-28 23:30:09 2024

AK3918EV330 交叉编译 GDB

AK3918EV330 交叉编译 GDB。 适用于安凯使用 arm-anykav500-linux-uclibcgnueabi- arm-anycloud-linux-uclibcgnueabi- 交叉编译工具链的平台, 包括 AK3918EV33X、AK37XXD、AK37XXE,AK3918AV100 等。

2023-02-16

404公益页面一起寻找失踪儿童

几个404公益页面,一起寻找失踪儿童的公益活动中去

2013-01-14

hi3507/hi3515交叉编译live555

主要在live555源码基础上验证了hi3507/hi3515交叉编译的可行性 下载解压后,在linux环境下, arm-hismall-linux-g++已经在环境变量中, 可以直接make编译, 编译完成以后直接执行mediaServer/live555MediaServer, 通过vlc点播test.264媒体文件

2012-11-15

Live555基于h264嵌入式linux下rtsp项目的裁剪

最近公司项目需要,需要定制一个rtsp的服务器。单纯自己通过学习阅读协议有点漫无边际。通过网上一些小项目代码学习,对协议解析不是十分的完善,有点隔靴搔痒。学习还是从经典入手。 但是由于live555强大的跨平台和多支持功能实现使这个框架十分的庞大,在便于学习的出发点下,我对live555的框架进行很大幅度的裁剪,去掉了所有的音频部分,不关心的客户端部分,只保留了h264和linux编译部分。

2012-06-19

空空如也

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

TA关注的人

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