自定义博客皮肤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)
  • 收藏
  • 关注

原创 Arduino 使用看门狗

简介本人使用的Arduino uno r3,avr单片机自带看门狗电路下文引自单片机文档ATmega48/88/168/328 has an Enhanced Watchdog Timer (WDT). The WDT is a timer countingcycles of a separate on-chip 128 kHz oscillator. The WDT gives

2013-12-08 11:20:48 7613 2

原创 Ubuntu 下访问摄像头 及将摄像头数据重定向到http协议 远程访问摄像头

本文的主要工作是ubuntu下打开摄像头,保存图片及视频,以及将视频流搬到网络上,远程访问之。两个目的,第一是手头现有树霉派,但是没有摄像头模块,所以就以笔记本来做实验,最终想法是树霉派连接摄像头模块作为一个远程网络视频监控器。第二,是安卓或者IOS装个支持视频流的播放器,就可以打开上述远程视频监控器了。

2013-12-01 10:56:53 8085

原创 Beginning Visual C++ 2005 之二

记录2 size_t count = ~static_cast(0)/2; 这是一个比较大的数据,为什么呢,具体是多少呢,再看看。try catch 也不适用于任何情况,比如适合网络连接中断,而不适合数据格式错误。函数重载主要是能分别出来,需要执行的具体函数即可。函数模版也不熟悉,p332。va_list arg_ptr; // Declare argument list pointe

2012-05-02 22:14:56 571

原创 SVN server and client on Windows

本人之前使用的商业版本控制工具Perforce。现在需要在自己的电脑上做一个版本控制工具。先用SVN吧,以后再尝试Git或者Hg之类。下载VisualSVN server,安装之,并重启。下载TortoiseSVN,作为client在SVN server中新建Repository,并设置用户和密码使用svn client的方法是,新建一个文件夹,右键文件夹,选择svn checkout选项

2012-05-01 22:18:46 828

原创 Beginning Visual C++ 2005 之一

阅读记录而已。为什么要读2005呢?第一,本人非常熟悉unix环境编程,项目需要转到了windows。第二,本人貌似要使用vs2005,所以就看vc2005吧。下为记录:1、VC支持native C++和C++/CLI,后者是运行在CLR下面。2、进行windows C++编程的话,可以完全只用native c++直接操作API,或者采用MFC来操作API,也可以用Form

2012-05-01 22:08:54 532

转载 C编程能力测试题

绝对能够测试你的C语言功力的几个问题!很少有真正精通了C语言编程的,一般都有或多或少概念不是完全清楚的问题,特别是一些需要丰富的实战经验才能体会和明白的问题,如字符串,指针,类型转换,定义指向函数的指针类型,这也是导致学习C困难的一个原因。下面有几个简单测试将能发现你对C语言的掌握情况。1)int x=35;   char str[10];//问:strlen(str)和sizeo

2012-03-04 20:00:41 949

转载 进程的一生

进程的一生 随着一句fork,一个新进程呱呱落地,但它这时只是老进 程的一个克隆。 然后随着exec,新进程脱胎换骨,离家独立,开始了为人 民服务的职业生涯。 人有生老病死,进程也一样:  自然死亡,即运行到main函数的最后一个“}”,从容地离我们而  去。              这就是进程完整的一生。  自杀(自杀有2种方式)    调用exit函数;

2012-03-04 19:55:04 718

转载 GNU make 的主要预定义变量及常用命令行选项

预定义变量                       含义$*               不包含扩展名的目标文件名称。$+               所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。$$?               所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。$@               目标的完整名

2012-03-04 19:54:12 1035

原创 setjmp & longjmp 使用

在C语言中,用于跳转的goto语句,只能够用在同一个函数内部的跳转。而setjmp 与 longjmp的结合使用,却可以实现在不同程序之间的跳转。让我们先来看一下函数原型吧:#include int setjmp(jmp_buf env) void longjmp(jmp_buf env, int val); 这两个函数都要包含头文件setjmp.h。而且它们在处

2012-03-04 19:46:48 692

原创 进程通信之六 UDS

简介Socket原本是被应用于双机通信,之后引入了Unix Domain Socket。该Socket应用于本机的进程之间,由于其去掉了复杂的协议处理过程,效率会高普通Socket。其用法与普通Socket基本相同。也需要经历socket,bind,listen,connect,read,write,close等阶段。示例:/* * =======================

2012-02-23 20:39:37 6024

原创 进程通信之五 共享内存

简介共享内存是到目前为止,cost最低的通信方式。由于不需要拷贝数据,共享效率非常的高。一般需要信号量等配合使用,来实现进程的同步与互斥。API key: 标识符的规则size:共享存储段的字节数flag:读写的权限返回值:成功返回共享存储的id,失败返回-1int shmget(key_t key, size_tsize, int flag);sh

2012-02-22 19:34:20 840

原创 进程通信之四 信号量

直接上例子/* * ===================================================================================== * * Filename: sem_ipc.h * * Description: Header file for IPC using sem * *

2012-02-21 22:48:02 573

原创 进程通信之三 消息队列

简介消息队列也是常见的进程通信方式之一,并且加上之后将要介绍的信号量和共享内存,这三种并称为XSI IPC。其特点可以参考这里(http://blog.csdn.net/wzhwho/article/details/3990118),但最终来自于APUE这本书。示例/* * =====================================================

2012-02-21 22:33:54 504

转载 推荐读物,出处未知

非常推荐的两本书是:【竞争战略】【竞争优势】这两本书起到了振聋发聩的作用但是 翻译比较烂,如果有英文阅读功底,建议看英文版。 拓宽视野 1,经济学《经济学:微观经济学》,萨缪尔森《经济学原理:微观经济学》,曼昆《企业、市场与法律》,科斯《经济解释》,张五常普及性的经济学读物:《经济学的思维方式》,保罗•海恩《生活中的经济学》,茅于轼《弗里

2012-02-20 20:56:21 663

原创 C++算法及迭代使用小例

1 #include 2 #include 3 #include 4 5 using std::string; 6 using std::cin; 7 using std::cout; 8 using std::endl; 9 10 int main(){ 11 12 std::vector v; 13 int s; 14

2012-02-20 20:47:33 874 2

原创 进程通信之二FIFO

简介FIFO突破通常管道无法进行无关进程之间的通信的限制,使得同一主机内的所有的进程都可以通信。FIFO是一个文件类型,stat结构中st_mode指明一个文件结点是不是一个FIFO,可以使用宏S_ISFIFO来测试这一点。当一个FIFO存在于文件系统里时,我们只需要在想进行通信的进程内打开这个文件就可以了。当然FIFO作为一个特殊的文件,它有一些不同普通文件特性,下面会详细详述它的读写规则,

2012-02-20 20:44:57 744

原创 进程通信之一 pipe

开题其实按照开源领域的原则来说,本文是不该产生的。因为进程通信别人整理过无数次了。知识应该重用。但是呢,从本人提高的过程来说,这里算是做个记录吧。详解管道是Linux支持的最初Unix IPC形式之一,具有以下特点:    * 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;    * 只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程

2012-02-19 19:43:54 655

转载 在Fedora 14中安装Nginx+MySQL+PHP5(PHP-FPM模式) LNMP

Nginx(发音为 “engine x”)是一款免费、开源、高性能的HTTP服务器。同时Nginx以稳定、功能丰富、配置简单、资源消耗少著称。这篇教程将会为你展示如何在一台 Fedora 14中安装Nginx+MySQL+PHP5(PHP-FPM模式)我已经测试无误,这将保证为你工作!1 前言备注在这篇教程中我使用的用户名是www.unixbar.net,IP地址是192.168.0.

2012-02-12 10:11:30 781

原创 用 Graphviz 可视化函数调用

主要参考来自这里,http://www.ibm.com/developerworks/cn/linux/l-graphvis/主要操作安装graphviz,在fedora下yum install graphviz-devel。从IBM的deveopworks的网页下载pvtrace,  并编译安装之,详见其说明。 gcc -g -finstrument-functions test.c

2012-02-11 16:18:28 1455

转载 syslog的使用

这里面的三个函数openlog, syslog, closelog是一套系统日志写入接口。另外那个vsyslog和syslog功能一样,只是参数格式不同。    通常,syslog守护进程读取三种格式的记录消息。此守护进程在启动时读一个配置文件。一般来说,其文件名为/etc/syslog.conf,该文件决定了不同种类的消息应送向何处。例如,紧急消息可被送向系统管理员(若已登录),并在控制台上

2012-01-11 20:34:43 782

原创 C++ 记录2

容器与迭代器 container::iterator container::const_iteratorcontainer::size_typec.begin()c.end()c.rbegin()c.rend()container c;container c(c1);container c(n);//n个元素的容器container c(n,

2012-01-11 20:24:33 479

原创 C++ 记录1

using namespace std:cout  using namespace std #include using std::string  string s1; string s2(s1); string s3("value"); string s4(n,'c'); getline(cin,line_string);s.empty()

2012-01-11 20:17:23 455

原创 Linux Networking 有用的网站

iptables tutorial http://www.frozentux.net/iptables-tutorial/iptables-tutorial.htmlpacket-filtering http://netfilter.org/documentation/HOWTO/packet-filtering-HOWTO-7.htmlebtable http:/

2012-01-11 20:14:59 961

转载 让人心疼的射手女

射手快乐吗?射手会背叛感情吗?    流过的泪比谁都多,受过的伤比谁都痛,    爱过的人一生一世,只是没人能懂...    懂的人多无奈的尊重射手对爱人的专一而放弃 远远的离去!   每个射手都能这里看到自己的影子--一个真实的射手座!      射手总是喜欢说谎--善意装饰的谎言,快乐和开心背后的谎言,    代替真实的谎言,留给别人掩盖悲伤的谎言,

2012-01-06 21:24:57 11271

转载 射手女生性格大全

1.自由是她最爱,你只是其次,不能给她自由和信任,她早晚会飞越疯人院;    2.不要埋怨她的孩子气,在那快乐中你会感到她的爱恋;    3. 欺骗者死,你可以沉默,她不会问你,但你只要说谎就是死罪,你有一次辩解机会,别把她当傻子;    4. 她是粗心的,但她是女人,只要是女人就是细腻的,她忽略的事情并非不晓得,只是不介意;    5. 不要强求她化妆,射手最崇尚自然,素面朝天同

2012-01-06 21:24:09 1282

转载 算法经典代码块

二分查找的代码.int bfind(int* a,int len,int val){    int m = len/2;    int l = 0;    int r = len;    while(l!=m && r!= m)    {        if(a[m] > val)        {            r = m;

2012-01-05 21:15:22 411

原创 容器与迭代器 速记

container::iterator container::const_iteratorcontainer::size_typec.begin()c.end()c.rbegin()c.rend()container c;container c(c1);container c(n);//n个元素的容器container c(n,t);contai

2012-01-05 21:13:48 591

原创 容器,迭代器,算法使用小例

1 #include 2 #include 3 #include 4 5 using std::string; 6 using std::cin; 7 using std::cout; 8 using std::endl; 9 10 int main(){ 11 12 std::vector v; 13 int s; 14 s

2012-01-05 21:12:46 417

转载 C++别人的总结

前言   我的blog以前很长一段时间关注的都是C++中的技术&细节,乃至于读者和应者都寥寥。然而5月份的时候写的一篇“你应当如何学习C++”,阅读量却达到了3万多,在blog上所有文章中却是最高的(且远远超过了第二位);评论数目也有一百多。为什么独独这篇能够激起这么多的回应,想必是国内的C++社群被C++压抑太久,或者,严格来说,是被C++的教育方式压抑太久。实际上,不管是在各大国内论坛

2012-01-04 09:50:35 706

原创 rm血的教训

使用rm -rf 删除文件一定要慢呀,三思呀,尤其是删除文件夹。本人准备删除一个以T开头的文件夹,却不慎t和shift没能同时按下,于是打出了t,习惯性的按下了tab,然后就是回车了,于是悲剧产生了,删除了另外一个文件夹。那个文件夹至少保存了我两月来一些学习的代码。其他的都想不起来了。悲催呀。正在想办法,解决中。貌似恢复的概率不大了。鉴于这种血的教训,特制定下述规则。1,alias

2011-12-27 16:44:09 930

原创 Linux驱动模型的基本数据结构kobject介绍

看了几天的Linux驱动模型,有必要做个总结了。否者还是会出现后面又忘了的情况。跟设备模型密切相关的是sysfs文件系统,二者大概是存在一一对应的关系。后面看了sysfs再做补充,其实一些人的博客倒是看过,就是还没有深入的理解。先说三个结构体kobject,kset,ktype.这里先做一个形象的比喻,如果把内核比喻为世界,那么kobject就是基本的组成单元-人。kset相当于把人组成为

2011-12-23 22:43:53 840

原创 GDB调试多线程

GDB是*nix下常用的调试工具,可以提供及其复杂的调试功能,功能十分强大。这里展示一下GDB调试多线程的常规方法。常用命令:info threads :显示当前可以调试的所有线程。thread IDx : IDx请用上述命令中的线程ID替换,该命令用于切换被调试的线程,请注意GDB只能调试一个执行序列,也就一个传统意义上的进程break file.c:20 thread all:

2011-12-23 22:38:40 4730 1

原创 GDB 调试多进程

这位IBMer提出三种调试方式,很是靠谱。http://www.ibm.com/developerworks/cn/linux/l-cn-gdbmp/。鉴于本人的嵌入式背景,多数不太适合采用VNC,于是乎,就举例说明前两种方法吧。待调试代码 1 #include 2 #include 3 4 int main(){ 5 pid_t pid; 6

2011-12-23 22:33:17 1102

原创 宏定义中##和#的使用

在宏定义中##用于连接两部分,#用于将参数扩展成为字符串结构,也就是为变量加“”。实例:#define add(some,new) some_##new 那么add(view,pic)将被编译为view_pic #define prt(name) printf(#name)那么 prt(error)将被编译为 printf("error");程序示例: 1 #inclu

2011-12-19 20:17:34 419

原创 Linux下的链表使用简介

数据结构在coding中起到了非常重要的作用,重要的数据结构包括了链表,栈,队列,树等等。这里介绍一些链表在内核中的实现。我们书本上学到的链表的一般实现方式如下:struct my_link{ struct my_link *next; //next指向下一个节点 DataType data; //实际数据}这种做法是数据嵌入到链表结构中。在内核中,存在着各种各样的数据,很多都

2011-12-19 20:16:03 535

原创 container_of宏深究

在Linux内核编程中广泛使用了container_of宏,有必要对该宏的使用及实现做一个详细的分析。1,作用原型container_of(ptr,type,member)。ptr是指向类型为type的结构体中member元素的指针,该宏最终返回类型为type的结构体的指针。举个例子, struct my_struct{ int i; int y;

2011-12-19 20:11:25 505

原创 再读《Linux内核设计与实现》之时间管理

时间管理在Linux中也是重要的组成部分PART 1 系统时间linux内核需要tick来驱动,Hz不能太大也不能太小。jiffies是一个全局时间计数变量,可以被访问。由于存在回绕的可能,故系统提供了一个回绕安全的判断宏。time_after()time_before()time_after_eq()time_before_eq()PART2 RTCRTC

2011-12-19 19:30:41 675

原创 再读《Linux内核设计与实现》之VFS

最近细读tcp/ip协议栈实现,遇到了文件系统的一些障碍。比如需要声明socket文件系统,以及对文件的读写最后怎么转化为socket的处理。于是再读一下VFS原理,发现,有些东西确实不用就忘了,这里在记录一下吧。VFS的作用对上层应用程序,屏蔽底层设备的不同,抽象出一个统一的操作接口。像write(fd,&buf,len)此类操作,应用层不需要关心文件实际的存储方式,存储位置。最后数

2011-12-18 20:17:24 871

原创 Fedora 14 升级内核版本

本人采用的fedora 14,但是正在看的内核版本是2.6.35.8,考虑到以后可能会有一些实验性修改,这里需要编译一个新的2.6.35.8的内核。操作步骤如下:1,下载所需要的内核2.6.35.82,make mrproper3,copy当前的默认配置,位于/boot/config-`uname -r` 4,make -j2 all5,make modules_i

2011-12-18 20:16:07 2003

原创 net_device 结构分析

在linux内核中采用一个net_struct的实例来表示一个网络设备,这其中包括了虚拟网络设备和实际网络设备。该数据结构比较复杂,主要任务分为两部分:第一对上层协议屏蔽底层设备的区别,提供统一的操作接口。第二对下层设备,提供实际驱动方法。strcut net_device{//通用区域    char name[]// 名字    struct hlist_node name_h

2011-12-15 21:01:06 1647

空空如也

空空如也

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

TA关注的人

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