自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于C/C++数组初始化的记录

C语言在数组初始化话方面更灵活自由,上述几种选择性初始化,全部可以正常使用;按如下代码初始化,GCC编译运行正常,G++则会报错,错误与上相同。C++比较严格,必须从第一个元素按序初始化,但允许初始化一部分。但若按序初始化,如下所示,则编译运行均正常。令,如下代码,GCC和G++编译运行均正常。使用GCC编译运行正常。

2024-03-26 10:24:38 202 1

原创 linux命令之crontab

crontab常被用来执行周期性的命令,配置简单高效。近期在docker环境下使用crontab出现任务无法执行的问题。解决问题后特此记录,以示警醒。crontab有两部分组成:crond和crontab crond是服务部分,不启动,任务无法被执行。执行方式:```service crond restart/start/stop/statuscrond -n &```上述两种方式都可启动。 crontab是任务管理部分,负责任务发布、查询等。默认配置文件...

2020-10-16 12:28:14 681

原创 redis源码浅见之adlist

redis源码浅见之adlistadlist是redis项目封装的一个链表操作的库,其官方解释为A generic doubly linked list implementation,实际是组装了一个带头节点的双向非循环链表头,节点自持链表首尾两个数据节点,依次达到快速操作的目的。源码链接如下:adlist.hadlist.c难点:什么是链表链表的基本操作(指针操作)亮点:是listIter这个struct的封装和实现,它封装了链表的操作,如此在了解链表的基础知识后,可以很快入手adli

2020-06-11 21:13:01 372

原创 redis源码浅见之sds

sds是redis项目封装一个基于字符串操作的库,其官方解释为:"SDSLib 2.0 -- A C dynamic strings library"。官方下载源码后上传至码云Redis,头文件和源文件连接如下:sds.hsds.c其想法是在保留C语言对字符串操作对同时,还实现了内存管理,节省了使用成本。实现原理:变长struct。typedef char *sds;struct __attribute__ ((__packed__)) sdshdr8 { uint8_.

2020-06-03 11:24:40 548

原创 PCM 单双声道转换

现有PCM数据,要进行如下转换,对于16位采样的PCM来说,单声道存储方式很好理解,一段连续内存,一个个int16_t排排站。以A表示一个int16_t,内存排列如下:AAAAAAAAAAAAAAA双声道的话,L表示左声道,R表示右声道,最常见的形式如下:LRLRLRLRLRLRLRLR也有LLLLLLLLRRRRRRRR这种排列的,比较少见,这里不做分析。先定义一个宏作为通用代码:#define COMBINE(l,r) (((int32_t)(l) + (r)) &gt

2020-05-11 17:25:39 3901

原创 golang install 'gopls'

前两天使用vs code写golang程序时,突然提示gopls需要更新,没有梯子的我,很悲催的发现无法正常后取更新,而没有这个工具的话,vs code的代码补齐和调转等功能完全无法使用,难受。没有办法只能想想如何手动安装了。就决定是你了:Go-zh操作步骤:mkdir -p $GOPATH/github.com/Go-zh/cd $GOPATH/github.com/Go-zh/...

2020-04-20 14:37:56 5281

原创 ETCD分布式锁

最近写了点ETCD的代码,记录一下关于分布式锁的点,方便查缺补漏。编程语言为go语言,使用ETCD的话,会比较方面,使用的源码为:https://github.com/etcd-io/etcd1. 为什么要用ETCD?为了服务发现,假设有多个节点需要上线,需要找到这些点的话,就需要一一记录每个节点的信息状态。但如果新增节点,那么需要手动添加,告诉服务又新增了哪些节点。但如果每个节点按固...

2019-10-11 17:00:51 744

原创 java版kafka producer实现

需求:1. kafka server已经配置完全,且设定了访问限制 基于这一点,必须要设定认证,及预先分配的账号密码2. 由于项目开发环境是java,且不允许使用LogStash 基于这一点,必须实现一个java版的producer先贴一份代码,本地运行通过,祛除不相干部分之后的代码(未验证):import org.apache.kafka....

2019-09-06 19:08:54 1090

原创 将静态库编译到动态库中

最近做一个东西,需要采集硬件设备的音视频数据,然后做编码。以前做过编码部分直接拽过来使用,只写硬件采集部分即可。调查发现,硬件采集驱动过于老旧,必须使用ffmpeg3的API,而编码部分则使用了ffmpeg4。 改动编码部分降级为ffmpeg3不现实,引出来多少问题不太确定。由此设计一套方案:编码部分使用ffmpeg4的动态库,链接位置自己指定 将硬件采集代码设计为...

2019-07-12 13:42:12 6755

原创 SDL2显示问题

初次结束SDL,版本为2.0.8,使用环境为MaxOS。参考网上的例子写了一个player程序,编译没有问题,运行过程中没有任何报错。但是SDL2创建的窗口显示不出来,真让人苦恼。综合种种现象和以往经历,这肯定是一个小问题,很可能是惯用用法不正常或者有遗漏造成的。最终经过大量的实验调整,添加如下代码,窗口得以重见天日:SDL_Event event;if (SDL_Poll...

2019-06-19 17:33:12 2063 5

原创 ImportError: No module named XXX

这个问题可能是python学习和使用过程中最常见的文件了,python提供了功能复杂,各式各样的包,在使用这些包的时候当然需要下载。 那么当出现ImportError时,可一按照一下几种方式一一排查。 目标包或者模块是否已经下载假设目标模块是numpy。终端模式下,执行如下命令,会清晰的告诉你本地安装numpy的信息(名称,版本,安装位置,作者,主...

2019-05-08 16:36:02 2395

原创 CORS:解决跨域访问报“No 'Access-Control-Allow-Origin' header is present on the requested resource.”错误

最近客串后端写个小服务,编程语言为golang。前端发送http POST请求后,发现报错,而后端没有收到POST请求,反而收到了OPTIONS请求。经过一番调查发现,当前端发送诸如包含“application/json”的非简单请求时,会先发送一个OPTIONS请求,此请求称之为“预检请求”。当前端对OPTIONS请求验证通过后,再发送最终需要发送的http请求。关于CORS网上介绍...

2019-04-30 16:25:30 2650

原创 Django + Nginx + uWSG 搭建自己的网站

博主最近需要搭建自己的网站,Django + Nginx + uWSG 三连击可解决问题,以此记录。同时本文也将介绍搭建过程中遇到的坑。博主属于零基础首次搭建,Django、Nginx、uWSG均属于首次接触,文档略有小白望见谅。 废话不多说! 前提:博主的工作环境为macos和ubuntu,分别搭建。 一. 安装三件套 Nginx是相当好用的web...

2019-04-23 18:06:15 644

原创 Bus error: 10

   最近写一个小程序,设计的类比较多,为了编译方便专门为源码和测试代码编写了Makefile。   调试过程中,突然出现“Bus error: 10”的错误,让人措不及防,为什么会出现这种奇观的问题呢?   网上查了很多几个帖子,基本一致认为是地址对齐的问题,大意为:int型数据的起始地址必须为4的倍数,否则会引起上述提到的总线错误。本着这个思想,查找了半天也没找到地址不对齐的地方。...

2019-02-26 11:44:49 6662

原创 打包aar时剔除资源文件

    最近一直在做SDK的事情,今天给其他组一个SDK,居然被嫌弃了,弃了,了。。。    SDK包总共7.7M大小,资源文件占据了90%还多,所以对方期望把资源文件从aar包中分离出来,由他们动态加载。这是一个很好的想法,个人非常认同,自己的锅,没得说,必须改。    网上查了好半天,好像没这方面的需求,偶然在stackoverflow上发现了类似的帖子,拿大神的建议改了改,亲测有效,...

2019-02-13 16:36:36 4783 1

原创 Android源码中如何根据库名或者可执行文件确定源码所在

    最近在做Android ROM的裁剪工作,被告知要删除xxx模块,需要修改xxx模块的Android.mk,那么问题来了,xxx模块的源码在哪呢?    首先可以蒙一下,直接在根目录下find一下xxx,可能会找到。有人就说了xxx肯定会出现在Android.mk中,grep一下吧。对此我只能呵呵了,几十个G的源码,在如此高效开发的环境下,真没那个耐心等啊。实际上笔者以前也是这么干的,...

2018-08-21 19:37:19 533

原创 交叉编译ARM平台WebRTC库

    前两天收到一个经过处理的webRTC源码,主要包含AEC,NS,AGC,VAD四项主要功能。要将其编译成一个ARM平台下库供Android APP使用。    怎么说呢,相当坑,源码好像是从GitHub上翻出来了,大牛精简抽离后,x86下可至今编译,但ARM下就需要下点功夫了。改起来相当累啊,耗时一个半工作日搞定,成果如下,请品鉴。configure时为了好看,连接符可能不太标准。...

2018-08-03 11:56:22 3543 9

原创 编译IOS下Opus音频库

    今天说一下为IOS编译Opus音频库遇到的坑。    首先要编译IOS的库,得找一个mac环境,并且下载了XCode,Linux或者Windows下未试过,暂时不知道怎么操作。    其次IOS需要的库比较特殊,它需要的是一个集大成者,意思是这个库中需要保护多个平台架构的各种库,比如i386 x86_64 armv7 armv7s arm64等等,即编译各个平台下的库,然后用苹果自...

2018-08-03 11:33:54 1595

原创 交叉工具编译ARM平台下X264库

    交叉编译的常见步骤,搭建交叉编译环境,编译,测试。x264为开源代码,请自行前往以下链接下载。https://www.videolan.org/developers/x264.html    1.搭建交叉编译环境,搭建成功后,无需重复搭建sh ~/sdk/android-ndk-r14b/build/tools/make-standalone-toolchain.sh \ ...

2018-08-03 11:12:53 732

原创 交叉工具编译ARM平台Opus音频库

     最近项目中使用到opus音频库,这是一款开源的高效的音频库。其优点相对于AAC编码来说,编码效率高,据说相同带宽下,音频质量完爆AAC,而高带宽下音质接近原始音频(不喜勿喷^_^)。详情及源码见官网http://www.opus-codec.org/     源码可以直接编译x86平台的库,想要编译ARM平台下,需一番配置。     首先配置交叉编译工具,交叉编译工具链网上有一大...

2018-08-03 10:57:26 3872 4

原创 Android源码层修改默认时区

首先确认一点修改默认时区是通过修改persist.sys.timezone的属性值实现的。所以要想成功修改默认时区,需要找到所有可能修改该值的地方,一般而言都是在device目录下。其次确定当前源码对应的设备,比如笔者此次使用的是hisilicon的板子,那么其设备自然是hisilicon的。在对应的设备的目录下找到device.mk或者customer.mk文件,使用find命令即可。...

2018-07-31 10:18:23 9333

原创 H.264裸流文件中获取每一帧数据

    测试解码器性能时,最常用的无非是向解码器中推送码流。    之前封装了一个avc的解码器,想做一个测试,读取H.264裸流文件将码流定期定时推送到解码器。    测试其实很简单:    1.了解H.264裸流文件的构成    2.解析H.264裸流文件    3.提取H.264码流调用接口推送数据    1. 了解H.264逻辑文件    根据H.264协议,a...

2018-07-27 15:54:01 14640 6

原创 Android源码层级修改默认语言

    最近项目上需要定制自己的Android ROM,默认语言修改了简体中文(吐槽,默认英语不好吗,正好还可以多学自己单词!麻烦归麻烦,该做的还是要做)。    首先要知道Android源码下语言格式为en_US, en表示英语,US表示哪个国家的英语。而解析的时候,en就将是设定的语言(language),US则是对应的国家(region)。     其次是如何判定语言的   ...

2018-07-18 10:23:35 2280 7

原创 下载ftp中的目录

   ftp本身不提供目录下载命令,不管get还是mget都只能下载文件,区别在于mget可以下载多个文件,而get只能下载单个文件。   那么可以选择一个取巧的办法下载ftp服务器中的目录,那就是wget命令比如ftp服务器(IP:192.16.1.123,端口:21)在test目录下有个download目录,要将其下载下来,假设账户和密码均为ftp。$ wget ftp://192.16.1....

2018-06-26 19:00:34 17312 2

原创 可执行文件存在但执行时提示文件不存在

背景描述: 想再虚拟机机(Ubuntu14 64)中安装一套交叉编译环境,所用东西很多,想到一个折中的办法,从已有的机器中,将所用的东西全被拷贝下来,如此一波三折:1. 目标机器中,tar命令打包所有的交叉编译环境用到的资源;2.上传到ftp服务器中;3.虚拟机中下载资源,将其解压到本地;4.配置环境,执行编译命令。但是:在执行时,却提示资源目录下xxx-gcc命令不存在,

2018-01-25 16:37:09 12156

原创 Windows7挂载NFS服务

Windows只有旗舰版和企业版有NFS挂载功能,其他版本需要第三方软件支持,第三方软件挂载方式不再赘述。1. 启用Win7的nfs功能:点开:计算机-控制面板(查看方式:类别,点选大或小图标方式)-程序和功能-打开或关闭Windows功能-勾选NFS服务和Telnet客户端(可用作登录和操作Linux服务器)-确定。2. 查看在msdos界面下运行如下命令查看目标

2017-11-08 10:33:36 10588

原创 Ubuntu搭建NFS服务

Ubuntu下nfs搭建Ubuntu下的nfs与其他Linux系统并无区别nfs服务器配置简单灵活,使用方便,只需要使用mount命令,像挂在文件一样将共享目录挂在到指定目录下即可.一旦挂在成功,就可以像使用本地目录一样,使用共享目录里的文件.1. 安装nfs所需的包$ sudo apt-get install nfs-common nfs-kernel

2017-11-08 10:05:40 294

原创 vs2015使用MinGW编译的动态库

工作过程中经常会遇到使用其他开源项目的情况,有些开源项目有vs工程,比如opus,可以直接编译出vs可识别的动态库或静态库,但有些开源项目则没有,此时想要做的就是利用该源代码编译一个或多个库来使用。MinGw完全可以胜任这些工作,它可以安装autoconf、automake等工具,用来编码源码很方便,折腾半天库终于编译出来了,MinGW下测试也木有问题,但是vs不识别,不识别,不识别。。。

2017-11-04 13:48:05 9194

原创 ubuntu 14.04 安装 open-vm-tools失败

在虚拟机中安装open-vm-tools时提示失败,错误提示如下:---------------------------------------------------------------------------------------------------------------------------------------------------------------------

2017-11-04 13:08:37 6094 1

原创 拆分264码流

当从avc编码器拿到一帧数据时,有时会考虑按NALU头进行拆分,示例代码如下:P帧和B帧只有一个NALU头,所以不再需要拆分,主要是I帧,一般包含7,8,6,5四部分。/* find the size of a frame. * @data the memory of avc bit stream, this should be start with [00 00 00 01].

2017-10-18 18:55:27 354

原创 windows下通过VNC客户端软件远程连接Ubuntu14.04的桌面共享服务

Windows 通过Vnc Viewer连接Ubuntu14.04桌面共享服务

2017-09-15 13:32:25 879

原创 使用adb通过wifi或者USB连接手机

使用adb通过wifi或者USB连接手机USB连接手机,通过如下命令查看连接接入的设备和连接状态。$ adb deviceswifi连接手机(假设IP是192.168.1.111),如果如下命令连接。$ adb connect 192.168.1.111连接成功后,可以通过上一条命令查看状态。如果连接出现错误,比如首先检测能否ping通手机$ p

2017-08-31 15:14:41 1679

原创 Ubuntu12升14常见问题汇总

1. 升级SystemSetting中的东西基本没有了,执行如下命令sudo apt-get install unity-control-center2. 输入法问题2.1 任务栏中没有输入法的图标ibus默认并不开启,因此只要按下super键,并输入ibus即可2.2 快捷键无法切换输入法可能是快捷键占用2.3 任务栏有输入法图标,但不管是快捷键还是鼠

2017-08-25 14:36:39 329

原创 Ubuntu下命令执行完毕后显示通知

有些时候我们会执行一些耗时的任务,但又不能时时刻刻的盯着它,这种情况下我们就需要一种通知手段,当命令执行完毕了,直接在桌面上通知,收到通知后,我们就可以第一时间处理。1. 安装软件$ sudo apt-get install undistract-me2. 上面安装的软件就可以实现该功能,但我们仍需要在bashrc文件中做一些配置,命令如下:$ vim ~/.b

2017-08-25 14:35:08 2425

原创 Ubuntu下安装搜狗输入法及常见问题解决

1. 由于14.04自带fcitx,所以最稳妥的办法是先将其卸载sudo apt-get purge fcitx*2. 安装fcitx和libssh2-1命令sudo apt-get install fcitxsudo apt-get install libssh2-13. 从http://pinyin.sogou.com/linux/下下载

2017-08-25 14:32:42 4288

原创 Java 遍历List的三种方法

现有List如下,内部有若干个成员, Size存储有width和height两个成员变量。List l;1. 常规访问方式 for(int i = 0; i < l.size(); i++){ Size s = l.get(i); Log.e(TAG, s.width + "x" + s.height);

2017-08-01 09:42:48 405

原创 x264设置固定I帧问题

最近研究x264,在设定定期I帧的问题上卡了一天时间。不论怎样设置,定期I帧总是不生效。    param.i_keyint_max = 30;    param.i_keyint_min = 30;按理来说,只需要设置i_keyint_min 和 i_keyint_max的值即可,将两个值都设置为同一个值。一开始不生效,是因为我在配置x264_para

2017-07-27 15:56:53 2595 1

原创 Android Studio 使用JNI库

在AS下添加JNI有两种方式:第一种:在build.gradle中提那家如下代码:    sourceSets.main {        jniLibs.srcDirs 'libs'    }指定jni库的位置在libs下,只需要将库放在对应的平台目录下即可。第二种使用默认JNI库位置:默认Jni库的位置:main/jniLibs

2017-07-21 09:36:16 542

原创 Android应用访问文本文件

Android下访问文件需要注意事项:1. AndroidManifest.xml中必须要添加相应的权限申请;2. 路径地址问题:一般情况下:private String mRecordFile = Environment.getExternalStorageDirectory() + "/test/abc.txt";文件指向/sdcard/test/22PC

2017-07-19 09:26:21 438

原创 C/C++ 下如何判断空指针

今天在写C++代码,遇到一个很奇怪的问题,在Android JNI下判断一个指针是否为空,但是发现 (NULL == ptr )或者 (nullptr== ptr )表达式均为真,然而ptr是刚new出来的,也有地址值。这就很让人费解了,不信邪,写了这么多年的代码了,这种代码怎么看怎么没问题,同样的代码到x86环境下跑一次,却得到了我想要的结果,真是让人凌乱啊。。。最后只能祭出了我

2017-07-04 17:50:10 28019 4

空空如也

空空如也

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

TA关注的人

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