自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (4)
  • 收藏
  • 关注

原创 线程同步之条件变量

相关函数int pthread_cond_init(pthread_cond_t *restrict cond, const pthread_condattr_t *restrict attr);初始化一个条件变量;也可以直接定义的方式初始化:pthread_cond_t cond = PTHREAD_COND_INITIALIZER(只能使用默认参数设定); int pthread_co...

2018-05-14 01:23:47 307 1

原创 linux多线程之posix信号量

信号量理解1.在多任务操作系统中,通常资源都是固定数量可用的,比如打印机这个外设;但是需要使用该资源的任务有很多,这时就可以使用到信号量来协调资源的使用了(当然在资源内部用锁也可以达到同样的效果); 2. 信号量有被操作系统实现为PV操作:P(passeren),消耗资源,对信号量做减一操作;V(vrijgeven),释放资源,对信号量做加一操作;PV操作都是原子操作; 3. 当任务A需要...

2018-05-13 00:00:48 320

原创 设定线程运行栈:pthread_attr_setstack()

概述linux在创建线程时,如果使用默认的栈,默认栈的大小通常为8MB,这对内存比较紧张的嵌入式平台来说,是无法接受的巨量内存浪费;pthread_attr_setstack()可以设定线程栈的地址和大小,设定的栈地址必须以linux页面大小对齐,所以这里使用posix_memalign()分配页面对齐的内存;线程的最小栈大小为16KB,小于这个数值pthread_attr_setsta...

2018-05-10 00:29:48 5218

原创 prctl()设定线程名

基本介绍prctl()原型为int prctl (int __option, …);用于控制主进程或者子进程的属性;本文主要介绍使用PR_SET_NAME 这个flag设定线程的名字,这个在平常调试中很有帮助,比如想知道哪个线程的CPU占用高;需要包含的头文件为 sys/prctl.h;用法:prctl(PR_SET_NAME , (char*)name);其中设定的名字字符串长度不...

2018-05-09 23:41:54 4319

原创 线程同步之互斥锁:pthread_mutex_init,pthread_mutex_lock,pthread_mutex_unlock,pthread_mutex_destroy

主要函数说明int pthread_mutex_init (pthread_mutex_t *__mutex,const pthread_mutexattr_t *__mutexattr)创建一个锁;int pthread_mutex_destroy (pthread_mutex_t *__mutex)销毁锁;int pthread_mutex_trylock (pthread_mute...

2018-05-08 23:57:34 5712

原创 让printf打印更加丰富多彩

基本原理在支持ANSI color控制的终端上,可用通过ANSI控制码改变终端的字符的显示方式;所以我们可以通过printf或者cout输出特定ANSI控制码来让后面的字符串输出改变成想要的显示方式;ANSI控制码以ESC作为控制码的开始标记,在C语言中对应转义字符\033;然后以m作为结尾字符;在C中设定ANSI控制码的格式为: \033[控制码1;控制码2;控制码3;…;控制码nm...

2018-05-06 11:01:50 549

转载 常用ANSI控制码表

【光标控制】控制码 说明 [X;YH 将光标移至第 X 行,第 Y 列的位置。 [nA 光标上移 n 列。<<若至屏幕顶端则无效>> [nB 光标下移 n 列。<<若至屏幕底端则无效>> [nC 光标向右 n 行。<<若已至屏幕最右端则无效>> [nD 光标向左 n 行。<<若已至屏幕最左端则无效

2018-05-06 01:10:56 2166

原创 linux系统时间获取与设定

clock_gettime()原型为int clock_gettime (clockid_t __clock_id, struct timespec *__tp); 获取当前系统时间,示例:/** * clock_gettime()的第一个参数可以如下设定: * CLOCK_REALTIME:获取当前系统的绝对时间,从UTC1970-1-1 0:0:0开始计时; ...

2018-05-01 23:11:07 1251

原创 linux消息队列操作

基本函数说明int msgget (key_t __key, int __msgflg),创建消息队列;或者返回已经存在的消息队列的ID;int msgctl (int __msqid, int __cmd, struct msqid_ds *__buf),消息队列控制,如删除消息队列,获取消息队列的信息等;ssize_t msgrcv (int __msqid, void *__msg...

2018-05-01 14:59:19 801

原创 linux下pthread基本操作

常用pthread函数int pthread_attr_init (pthread_attr_t *__attr), 初始化pthread创建参数;int pthread_attr_destroy (pthread_attr_t *__attr),销毁pthread创建参数;int pthread_attr_getdetachstate (const pthread_attr_t *__...

2018-04-30 18:15:33 12855

原创 二分查找算法

二分查找算法简要介绍应用二分查找算法的前提是输入序列有序:升序或者降序;二分查找算法,每次取输入序列seq的中间下标middle对应的值与需要查找的key比较;对于升序序列而言:如果key>seq[middle],则将middle+1作为下一次查找的左边界,右边界不变;如果key < seq[middle],则将middle-1作为下一次查找的右边界,左边界不变;如果ke...

2018-04-15 22:58:23 237

原创 生成斐波拉契数列

斐波拉契数列介绍斐波拉契数列除了第一个和第二个数为1外,以后的数都是前面两个数之和;数学表示为:F(0)=1,F(1)=1;N>=2;F(N) = F(N-1)+F(N-2);最后产生斐波那契数列如下: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …代码实现#include <stdio.h>#includ...

2018-04-15 16:54:38 255

原创 C实现快速排序

快速排序算法概述快速排序是采用一种分治的策略;对输入的无序序列选择一个基准数,然后将比基准数小的放在左边(序列A),比基准数大的放在右边(序列B)(假设现在排序要求升序排列);然后对序列A和序列B分别再做为第二步的输入序列,重复第二步;递归操作上面两步,直到输入序列只剩下一个元素返回,这样整个原始序列就已经变为有序序列;快速排序的平均时间算法复杂度为O(nlogn),最差的情况下时间...

2018-03-20 13:48:41 251

原创 基于libjpeg实现的jpeg解码demo

使用的libjpeg版本为jpegsr9b,在上一篇blog有libjpeg在VS2012下的编译步骤: VS2012编译libjpeglibjpeg解码jpeg图片解码调用流程如下:static bool _jpgToRGBColor(PICTUREINFO picInputInfo, PICTUREINFO *picOutputInfo){ struct jpeg_de

2018-01-23 21:31:40 2070

原创 VS2012下编译jpeg编解码库:libjpeg.lib

整个编译工程已经上传到CSDN:libjpeg编译工程工作前准备从IJG网站上下载最新版本的Libjpeg源码,网址如下: http://www.ijg.org/ 我下载时的版本是: jpegsr9b; 当然请安装VS2012的C++编译环境;理清编译libjpeg依赖文件因为我们下载的jpegsr9b.zip解压后不仅仅是包含编译Libjpeg.lib的源文件,也包含很

2018-01-06 17:55:22 1956 1

原创 CRC32算法实现:python与C

背景CRC32这种轻量级的校验算法在嵌入式开发中使用非常广泛,比如User data的存储,非关键数据的 保存(对于重要数据,一般不建议只用CRC32去校验其完整性,还会考虑加密处理).在PC端常用脚本 语言(例如python)去生成CRC32校验值值,而在嵌入式设备端,由于设备端能力有限,会直接使用C编写的程序去 做CRC32校验;python实现CRC32校验算法python实现crc32

2017-12-23 22:30:47 6066

原创 python实现任意位置文件分割

应用场景在嵌入式开发中,常常需要将一个binary文件分割成多个文件,或者将一个binary的某块区域抓成一个单独文件。本篇blog以python为例,实现了以上需求;实现代码#!/usr/bin/python"""./file_split.py, just for testing;"""import sysimport osimport refrom os.path import jo

2017-11-26 17:52:25 1107

原创 win10下Python3.5.4安装流程

一.初始环境介绍cmd进入DOS命令行,敲winver,弹出windows版本信息,如下图: 之前在Linux环境下安装过python2.7,这次选择python3.5.4版本安装(据说3.X版本有很多有用的新特性,如编码支持相较2.7更加友善.3.5.4是最近官网release中比较稳定的版本);然后从官网:python官网抓windows对应的python版本,如下: 在国内偶尔连接py

2017-10-14 02:24:59 4361

原创 Linux下简单的mount命令实现(自动识别文件系统类型)

背景简述mount()/umount()为Linux下挂载和卸载磁盘分区的系统调用,函数原型分别如下:int mount(const char *source, const char *target, const char *filesystemtype, unsigned long mountflags, const void *data);int umount(const char *ta

2017-09-27 19:56:11 6810

原创 wordpress安装add-from-server插件问题

小弟最近有在企鹅云上捣鼓一个主机,有尝试安装wordpress。有遇到wordpress只支持上传2MB大小的附件这种问题;所以想办法先将大的媒体文件传到主机,然后再将媒体文件添加到wordpress的数据库中; 现将解决方法记录如下:安装rz/sz命令因为在主机上没有安装ftp服务,所以为了方便上传下载文件,有安装rz/sz命令,主机是centos,如下安装方法:yum install lrz

2017-09-21 21:47:05 1698

原创 base64的C++实现

base64简介base64网络上已经有很多人有讲述,下面摘录wiki上的简述: Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符。三个字节有24个比特,对应于4个Base64单元,即3个字节可表示4个可打印字符。它可用来作为电子邮件的传输编码。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9,这

2017-09-20 20:09:40 2507

source insight配置文件

1.自用五年的source insight配置文件,基本配色沿用SI默认的配色; 2.table键替换为4个空格,显示行号,在大括号里面换行会自动对齐; 3.文件名显示取消首字母大写;

2018-06-03

libjpeg的VS2012编译工程;

libjpeg在VS2012下的编译工程,可以直接编译成windows下可用的Libjpeg.lib来使用;

2018-01-06

python3.5.4_windows下32与64位安装包

python官网下载安装包太慢了,特将python3.5.4 win下的安装包上传到CSDN,以便各位朋友下载使用;

2017-10-14

空空如也

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

TA关注的人

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