- 博客(69)
- 资源 (8)
- 收藏
- 关注
转载 pthread_cond_wait() 使用
1. 首先pthread_cond_wait 的定义是这样的The pthread_cond_wait() and pthread_cond_timedwait() functions are used to block on a condition variable. They are called with mutex locked by the calling thread or und
2015-12-25 13:59:12
574
转载 /dev/mem
/dev/mem是物理内存的全映像,可以用来访问物理内存,一般用法是open("/dev/mem",O_RDWR|O_SYNC),然后mmap,接着就可以用mmap的地址来访问物理内存,这实际上就是实现用户空间驱动的一种方法。有几个论据倾向于用户空间编程,有时编写一个所谓的用户空间设备驱动对比钻研内核是一个明智的选择,用户空间驱动的好处在于:[html] view plainc
2014-12-02 17:13:03
1124
转载 Java语言和C++语言的差异
Java采用了C及C++的语法格式,对于学习过C及C++的程序设计者来说,学习Java将有可能很轻松。但是,如果仔细检查Java语言的许多细节,就会发现Java取消了不少C及C++的特性,并且加入了一些新的特性。这些差异包括: o 不再有指针(Pointer)的概念。 这是Java和C/C++在语法上的主要区别之一。在C及C
2014-11-20 14:34:22
685
转载 C++中类不能定义自身类的对象,Java表面可以
这个牵扯到类的声明与定义。定义类时候,遇到右花括号结束,并且一旦定义了类,那我们就知道了所有的类成员,以及存储该类的对象所需要的存储空间。C++可以声明一个类而不去定义它,例如: class Screen; 它只是在程序中引入了类类型,在声明之后定义之前,它是一个不完全类型。不完全类型只能以有限的方式使用,不能定义该类型的对象,只能用于定义指向该类型的指针及引用,或用于声明(而不是定义)使用
2014-11-13 11:20:05
983
原创 工作感悟
工作之中的深深体会:1.同事之间讨论问题,不懂就不要多嘴,但可以等他们讨论完后再请教;就算懂也不要急于表现卖弄不然会适得其反,令人反感。2.做技术,要谦虚,不断的学习,切忌关公面前耍大刀!!3.当和同事发生争执的时候,不要各自坚持各自的想法或者做法,想办法去证实;有时可以圆滑一些,因为只要争执起来就没有赢家。4.两个同事之间讨论问题,自己旁听就可以了,不要插嘴把自己
2014-11-07 11:29:04
875
翻译 怎样正确的使用QThread类
背景描述:以前,继承 QThread 重新实现 run() 函数是使用 QThread唯一推荐的使用方法。这是相当直观和易于使用的。但是在工作线程中使用槽机制和Qt事件循环时,一些用户使用错了。Qt 核心开发人员Bradley T. Hughes, 推荐使用QObject::moveToThread 把它们移动到线程中。不幸的是, 以用户反对这样使用。Olivier Go
2014-11-06 18:10:54
1727
转载 最值得学习阅读的10个C语言开源项目代码
阅读优秀代码是提高开发人员修为的一种捷径…… 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:h
2014-11-06 14:44:57
831
转载 从《绝命毒师》看研发人员的自我管理
国庆期间抽空把《绝命毒师》第一季看完了,主角老白真是一个让人印象深刻的角色,他是一个顶尖的化学家,曾经参与过诺贝尔奖实验,曾经是一家大型化学品公司的联合创始人,同学聚会上,同学们都记得他在读研时曾经看一眼就搞定其他人几个星期都查不出的问题;这样的一个牛人,在50岁时,却只是一个中学化学老师,每天下班还要到洗车店当擦车小弟补贴家用,被查出得了肺癌却没有医保,最后走投无路去制冰毒。我发现老白是一个典型
2014-10-11 14:28:01
1149
转载 platform_device与platform_driver
做Linux方面也有三个多月了,对代码中的有些结构一直不是很明白,比如platform_device与platform_driver一直分不清关系。在网上搜了下,做个总结。两者的工作顺序是先定义platform_device -> 注册 platform_device->,再定义 platform_driver-> 注册 platform_driver。 (1)platform_devic
2014-09-19 14:08:49
564
转载 container_of使用分析
1.container_of宏1> Container_of在Linux内核中是一个常用的宏,用于从包含在某个结构中的指针获得结构本身的指针,通俗地讲就是通过结构体变量中某个成员的首地址进而获得整个结构体变量的首地址。2>接口:container_of(ptr, type, member) ptr:表示结构体中member的地址 type:表示结构体类型 membe
2014-04-08 15:50:06
647
转载 应用 Valgrind 发现 Linux 程序的内存问题及交叉编译for arm
Valgrind 概述体系结构Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。Valgrind的体系结构如下图所
2014-03-28 14:22:21
5660
转载 USB Mass Storage协议
简介USB Mass storage Device协议即海量存储设备协议适用于硬盘,U盘等大容量存储设备。协议使用的接口端点有BulkIn、BulkOut和Interrupt端点。该设备类又包含6个独立的子类以及3种传输协议。bInterfaceSubClass命令集描述01hRBC通常,FlashDevice使用RBC,事实上所有大容量存储
2014-02-26 15:02:39
1082
转载 【嵌入式】探究bootloader,分析u-boot源码
Preface 之前也发表过关于《Bootloader启动过程分析》的文章,但是内容表达得比较抽象,大多是文字叙述,所以这里从系统和代码的角度来深入分析bootloader的启动过程。 工具:Source Insight 目标:U-Boot-1.1.6 仅留此分析过程,日后再作补充(纯手打也不容易啊,嘿嘿)。U-Boot工程结构
2014-02-14 12:06:58
1514
转载 linux下ls,pwd,cp等源代码的下载
找到想看源码的命令属于哪个包:$ dpkg -S `which cp`coreutils: /bin/cp下载源码:$ apt-get -d source "coreutils"Reading package lists... DoneBuilding dependency tree Reading state
2014-02-14 09:34:53
4280
转载 什么是ROM、RAM、DRAM、SRAM和FLASH的区别
ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。RAM有两大类,一种称为静态RAM(Static RAM/SRAM),SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以
2014-01-14 16:44:41
722
转载 单片机中各种周期的关系与定时器原理
我们现来理解几个比较重要的概念:时钟周期: 时钟周期也叫振荡周期或晶振周期,即晶振的单位时间发出的脉冲数,一般有外部的振晶产生,比如12MHZ=12×10的6次方,即每秒发出12000000个脉冲信号,那么发出一个脉冲的时间就是时钟周期,也就是1/12微秒。通常也叫做系统时钟周期。是计算机中最基本的、最小的时间单位。 在8051单片机中把一个时钟周期定义为一个节拍(用P表示
2014-01-09 10:01:00
1906
转载 嵌入式系统文件系统比较
Linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,为了对各类文件系统 进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口。 Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而
2013-12-29 23:02:27
1391
转载 Qt4项目升级到Qt5可能遇到的问题
1. 由于Qt5将大部分桌面部件移到了Qt Widgets模块中,所以在.pro中要增加下面一行QT += widgets2. 程序中使用了OWC10,用到了ActiveQt,原来的做法是在.pro中加CONFIG += qaxcontainer,现在需要改成QT += axcontainer当然了,原来的CONFIG += qaxcontainer也
2013-12-26 10:59:06
6772
原创 C++与Java比较之向上转型
前几天看Mars老师的视频教程,里面有这样一句“一个引用能调用那些成员属性(变量和函数),取决于引用的类型;调用的方法取决于引用所指向的对象。(向上转型)”今天在使用C++的upcast时感觉不对啊?网上搜了下原来Java和C++的向上转型的机制不同。C++向上转型使用静态邦定,所以在无法识别类类型引用或指针调用对应类的成员函数方法。c++示例:class Ba
2013-11-21 16:35:22
1947
2
转载 sqlite 数据库升级
做Android应用,不可避免的会与SQLite打交道。随着应用的不断升级,原有的数据库结构可能已经不再适应新的功能,这时候,就需要对SQLite数据库的结构进行升级了。 SQLite提供了ALTER TABLE命令,允许用户重命名或添加新的字段到已有表中,但是不能从表中删除字段。 并且只能在表的末尾添加字段,比如,为 Subscription添加两个字段: 1 ALTE
2013-10-29 09:54:12
767
原创 VmWare Tools 安装提示 “The path "" is not a valid path to the.......”
First, make sure install build-essiontial and linux-headers.$ sudo apt-get install build-essential linux-headers-$(uname -r)And then,$ sudo -i# cd /lib/modules/ 'uname -r' /build/include
2013-10-22 14:45:31
1295
转载 字符串Hash函数评估
Hash查找因为其O(1)的查找性能而著称,被对查找性能要求高的应用所广泛采用。它的基本思想是:(1) 创建一个定长的线性Hash表,一般可以初始化时指定length;(2) 设计Hash函数,将关键字key散射到Hash表中。其中hash函数设计是最为关键的,均匀分布、冲突概率小全在它;(3) 通常采用拉链方法来解决hash冲突问题,即散射到同一个hash表项的关键字,以链表形式来表
2013-10-09 14:31:13
863
转载 Qt 的Model/View
QTableView::setEditTriggers(QAbstractItemView::NoEditTriggers); /设置为不可编辑状态QTableView::horizontalHeader()->setResizeMode(QHeaderView::Stretch); //设置显示铺满整个viewQHeaderView::ResizeToContents
2013-09-29 16:47:21
2882
转载 win7的vmware中安装ubuntu 13.04看不到共享目录
问题:vmware 9.0.2下新装ubuntu 13.04,安装完成后按照惯例添加共享目录。重启ubuntu 13.04,在/mnt/hgfs目录下看不到共享目录的名称。解决办法:1. 反复确定设定共享文件夹,并重启虚拟机多次,都不能在/mnt/hgfs目录下看到任何内容;2. 放狗搜,看到"小卷儿2008"给出的方案是:试一下1.
2013-09-27 13:16:23
1795
转载 java中的匿名内部类总结
匿名内部类也就是没有名字的内部类正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象方法?123456789101112
2013-09-25 23:06:44
655
转载 三、vim使用手册--找到 tag:1/3 或更多
我们在vim中加载了ctag+taglist+winmanager后我们在关联一个函数或者一个变量定义的时候,经常有多处地方定义了相同名字,需要定位正确的定义地方。:ts 或 tselect 查看有相同地方的定义:tn或tnext 查找下一个定义地方。:tp 查找上一个地方。:tfirst 到第一个匹配:tlast 到最后一个匹配
2013-09-23 18:05:37
1015
转载 Linux V4L2 摄像头视频采集
一,什么是 video4linuxVideo4linux(简称V4L),是linux中关于视频设备的内核驱动,现在已有Video4linux2,还未加入linux内核,使用需自己 下载补丁。在Linux中,视频设备是设备文件,可以像访问普通文件一样对其进行读写,摄像头在/dev/videoN下,N可能为0,1,2,3... 一般0.另,推荐一个用于播放从摄像头采集到的raw数据的播放器
2013-09-23 15:13:35
1564
转载 作为程序员,除了编程你还学到了什么?
本文出自 “典型狮子男” 博客,请务必保留此出处http://zhouhongyu1989.blog.51cto.com/2931598/1227989这篇文章完完全全是针对我们程序员个人而写,不关乎于企业,不是一篇洗脑文章~我想作为一名程序员,编程是我们最最基础的技能,天天的做一样的事情,日积月累不想成长都很难。只是用心的人他会在相同的时间里成长的更多罢了。然
2013-06-26 09:03:08
869
原创 ubuntu deb包制作例程
下面是使用 dpkg包管理系统制作deb包的过程(站在前人的肩膀上做的修改,已在ubuntu 12.10下验正)1、新建一个工作目录mkdir deb2、新建我们程序的目录mkdir hellodebcd hellodeb3、编写我们的程序hellodeb.c代码如下#include int main(int argc, char* argv[]){
2013-04-21 16:32:48
2139
转载 U-boot中设置开机logo的方法
在有实现LCD显示和LCD命令行终端的U-boot中,默认情况下在左上角都有显示一个logo,如果是atmel的芯片,就会有atmel的logo,三星的则是denx的logo。如果想把它改成自己喜欢的或者公司的logo,则只要作简单的修改便可以实现。一、图片的放置路径所有的开机logo都放在了 /tools/logos 之下,所以,把你需要显示的logo图片(bmp格式)也
2013-04-18 14:05:02
2283
转载 回调函数
软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。1.同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;2.回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;3.异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客
2013-04-15 13:40:01
874
转载 可重入函数和不可重入函数
可重入函数也可以这样理解,重入即表示重复进入,首先它意味着这个函数可以被中断,其次意味着它除了使用自己栈上的变量以外不依赖于任何环境(包括static),这样的函数就是purecode(纯代码)可重入,可以允许有该函数的多个副本在运行,由于它们使用的是分离的栈,所以不会互相干扰。如果确实需要访问全局变量(包括static),一定要注意实施互斥手段。可重入函数在并行运行环境中非常重要,但是一般要为访
2013-04-15 13:04:42
1166
原创 骑驴找马
如论坛里所说今年IT就业形势确实不太好!俩周前更新了自己在智联和51上简历仅仅接到俩三个面试电话,相比与去年此时确实少了很多。昨天下午请假参加了个面试,面的一塌糊涂,被一和自己年龄差不多给灭了,自己很受打击,感受颇多。毕业三年了(真正从事编码工作不到俩年),按论坛里说技术也该达到一定水平,工资也应该过万了,可昨天的面试发现自己真的没有达到那样的高度,工作以来自己好像真的没有静下心来去看过书感觉也静
2013-04-13 19:20:19
975
原创 指针数组和数组指针
起因:二维数组做为实参,由于自己基础不是很好颇费周折,写下备忘一下。数组在传入函数的时候会退化成指针。一维数组就直接退化成指针,二维数组退化成一个指向一维数组的指针,如char (*)[32]可选方式:char a[ ][ ];func(char b[ ], int rows, int cols);func(char (*b)[ ] );指针
2013-03-07 14:24:19
983
转载 内核源码树目录下的Kconfig和Makefile。
分布在各目录下的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。在内核配置make menuconfig(或xconfig等)时,从Kconfig中读出配置菜单,用户配置完后保存到.config(在顶层目录下生成)中。在内核编译时,主Makefile调用这个.config,就知道了用户对内核的配置情况。上面的内容说明:Kconfig
2013-02-25 09:18:30
903
转载 Linux下网络IP地址的转换函数(点分式--长整型转换)
网络IP地址本是用32位二进制来表示的,为了记忆的方便可以用点分十进制来表示IP地址,同时,网络IP地址在网络传输和计算机内部的存储方式也不同,需要用函数来进行转换。1.将点分十进制字符串转换成十进制长整型数:in_addr_t inet_addr(const char *cp); in_addr_t 即long型,参数cp表示一个点分十进制字符串,返回值是十进制长
2013-02-05 14:01:15
10925
转载 Makefile典型模板
一般应用程序的Makefile PRGM = zztest CC = gcc CPPFLAGS = LDFLAGS = -lrt -lz CFLAGS = -Wall -ggdb3 COMPILE = $(CC) $(CPPFLAGS) $(CFLAGS) -c LINKCC = $(CC) $(LDFLAG
2013-02-01 17:15:27
820
转载 uboot的编译及配置浅析
U-Boot的源码是通过GCC和Makefile组织编译的。顶层目录下的Makefile首先可以设置开发板的定义,然后递归地调用各级子目录下的Makefile,最后把编译过的程序链接成U-Boot映像。1.顶层目录下的Makefile它负责U-Boot整体配置编译。按照配置的顺序阅读其中关键的几行。每一种开发板在Makefile都需要有板子配置的定义。例如smdk2410开发板的定义如
2013-02-01 15:36:53
625
转载 ubuntu下调试android手机,并进入手机shell终端
既然玩android开发,就必须也得深入到系统,模拟器慢得要死,就上真机了。windows下一切都是那么小白,换到linux下就得自己动手。查了相关资料 ,终于知道怎么弄了。我的机型是 moto mb525 (Defy)首先准备好一切环境adb,官网有,开发肯定离不开这个android sdk手机设置为调试模式能看
2013-01-23 10:08:03
3158
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人