自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Terry

——学海无涯,唯勤是岸

  • 博客(85)
  • 资源 (2)
  • 收藏
  • 关注

原创 统计git提交次数

git  备份:git log --author=yourname --since="2014-07-01" --no-merges | grep -e 'commit [a-zA-Z0-9]*' | wc -l

2014-07-28 15:34:23 6386

原创 编译amlogic android kernel 无法正常启动问题

今天编译了amlogic android kernel ,升级到板子上后无法正常启动,查看串口的log出现了下面的错误:[    4.528115@1] init: skipping insecure file '/init.rc'[    9.221520@1] init: Timed out waiting for /dev/.coldboot_done[    9.221765@

2013-04-25 13:56:13 1526

转载 使用 libevent 和 libev 提高网络应用性能

简介许多服务器部署(尤其是 web 服务器部署)面对的最大问题之一是必须能够处理大量连接。无论是通过构建基于云的服务来处理网络通信流,还是把应用程序分布在 IBM Amazon EC 实例上,还是为网站提供高性能组件,都需要能够处理大量并发连接。一个好例子是,web 应用程序最近越来越动态了,尤其是使用 AJAX 技术的应用程序。如果要部署的系统允许数千客户端直接在网页中更新信息,

2013-03-20 23:00:42 706

转载 libevent入门教程:Echo Server based on libevent

花了两天的时间在libevent上,想总结下,就以写简单tutorial的方式吧,貌似没有一篇简单的说明,让人马上就能上手用的。首先给出官方文档吧: http://libevent.org ,首页有个Programming with Libevent,里面是一节一节的介绍libevent,但是感觉信息量太大了,而且还是英文的-。-(当然,如果想好好用libevent,看看还是很有必要的

2013-03-20 15:43:05 934

转载 Unix操作系统LD_PRELOAD简介

在Unix操作系统的动态链接库的世界中,LD_PRELOAD就是这样一个环境变量,它可以影响程序的运行时的链接(Runtime linker),它允许你定义在程序运行前优先加载的动态链接库。这个功能主要就是用来有选择性的载入Unix操作系统不同动态链接库中的相同函数。通过这个环境变量,我们可以在主程序和其动态链接库的中间加载别的动态链接库,甚至覆盖正常的函数库。一方面,我们可以以此功能来使

2013-03-20 13:53:44 573

转载 mtrace查看内存使用情况

对于内存溢出之类的麻烦可能大家在编写指针比较多的复杂的程序的时候就会遇到。Debug起来也是比较累人。其实linux系统下有一个使用的工具可以帮忙来调试的,这就是mtrace。mtrace主要能够检测一些内存分配和泄漏的失败等。函数原型如下:    void mtrace(void);    void muntrace(void);    头文件为:mcheck.h

2013-03-15 15:29:17 983

原创 offsetof(TYPE, MEMBER)宏和container_of(ptr, type, member)宏的实现

#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)1. ( (TYPE *)0 ) 将零转型为TYPE类型指针; 2. ((TYPE *)0)->MEMBER 访问结构中的数据成员; 3. &( ( (TYPE *)0 )->MEMBER )取出数据成员的地址; 4.(size_t)(&(((TYPE*)

2013-03-12 22:45:28 507

转载 __init 和 __exit 修饰符

static int __init initialization_function(void){/* Initialization code here */}在内核模块中经常会看见这样的函数定义,声明中的__init标志看起来有点怪;它是一个给内核的暗示,给定的函数只是在初始化使用。模块加载者在模块加载后会丢掉这个初始化函数,给它的内存可做其他用途。一个类似的标签 (__i

2013-02-07 14:55:54 939

转载 Armlinux GCC 交叉编译工具

http://blog.csdn.net/ruixj/archive/2009/05/30/4225886.aspxArmlinux GCC 交叉编译工具可以通过以下方式获取:1. 通过现有GNU tools 编译GNU tools源码来获取交叉编译工具。这种方法需要对GNU tools各个源码之间的版本匹配。2.使用Dan Kegel开发的cross-tool脚本来编译源

2013-02-05 23:22:23 479

原创 正则表达式

1.  基本元字符集及其含义--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2013-01-30 23:08:51 222

转载 一个华为人辞职创业后的几个反思

作者是一个在华为工作 6 年的华为人,2 年前,抱着做大事业的愿景,作者与几个朋友离开华为,希望能闯出一个路子来创业。  时隔两年,笔者的创业经历就像是一出狗血剧,各种电视剧里的经典桥段都发生在他身上。笔者将两年来创业过程中的种种反思汇总为以下 14 点,希望能给有志创业或者正在创业中的朋友们一些启发。  1、不要把创业代替就业  我这两年,感觉到周围的朋友,尤其是越来越多

2013-01-30 10:35:02 330

原创 一些强大的命令

一些强大的命令再分享一些可能你不知道的shell用法和脚本,简单&强大!在阅读以下部分前,强烈建议读者打开一个shell实验,这些都不是shell教科书里的大路货哦:)1、!$!$是一个特殊的环境变量,它代表了上一个命令的最后一个字符串。如:你可能会这样:$mkdir mydir$mv mydir yourdir$cd yourdir

2013-01-05 13:48:03 438

转载 浅谈C/C++中可变参数的原理

以前只是知道C/C++可变参数怎么用,但是一直对它的原理是似懂非懂,现在对计算机有了比较深刻的认识之后,回头再看,豁然开朗。AD:要理解可变参数,首先要理解函数调用约定, 为什么只有__cdecl的调用约定支持可变参数,而__stdcall就不支持?实际上__cdecl和__stdcall函数参数都是从右到左入栈,它们的区别在于由谁来清栈,__cde

2013-01-05 13:37:14 303

转载 lint使用简介

LINT工具是一种软件质量保证工具,许多国外的大型专业软件公司,如微软公司,都把它作为程序检查工具,在程序合入正试版本或交付测试之前一定要保证通过了LINT检查,他们要求软件工程师在使用LINT时要打开所有的编译开关,如果一定要关闭某些开关,那么要给出关闭这些开关的正当理由。  可想而知,如果从我们编码后第一次编译程序时就使用LINT来检查程序,并且保证消除所有的LINT告警,我们就不会遇

2013-01-05 11:11:48 1210

原创 C函数调用shell脚本

C程序调用shell脚本共有三种方式:system()、popen()、exec系列函数1)system(shell命令或shell脚本路径);        执行过程:system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD

2012-12-27 15:02:38 651

原创 常用 压缩命令-vi-SHELL命令-正规表示法

压缩命令: *.Z      compress 程式壓縮的檔案;  *.bz2    bzip2 程式壓縮的檔案;  *.gz     gzip 程式壓縮的檔案;  *.tar    tar 程式打包的資料,並沒有壓縮過;  *.tar.gz tar 程式打包的檔案,其中並且經過 gzip 的壓縮compress filename  压缩文件  加[-d]解压  unc

2012-12-25 16:22:19 440

原创 c语言实现向远程http服务器传数据

最近项目中要实现一个从嵌入式设备中通过http请求向远程服务器传输数据的功能。所以写了一个简单的测试程序,客户端用c语言实现http请求,服务器写了一个简单的php页面打印客户端发来的数据。服务器端php代码:<?php $raw_post = file_get_contents("php://input"); echo $raw_post;?>客户端代码:#

2012-12-18 22:33:34 2195

转载 内存对齐的规则以及作用

首先由一个程序引入话题: 1 //环境:vc6 + windows sp2 2 //程序1 3 #include iostream> 4  5 using namespace std; 6  7 struct st1  8 { 9     char a ;10     int  b ;11     short c ;12 };13 14

2012-10-10 09:35:06 509 1

转载 linux core dump

当我们的程序崩溃时,内核有可能把该程序当前内存映射到core文件里,方便程序员找到程序出现问题的地方。最常出现的,几乎所有C程序员都出现过的错误就是“段错误”了。也是最难查出问题原因的一个错误。下面我们就针对“段错误”来分析core文件的产生、以及我们如何利用core文件找到出现崩溃的地方。何谓core文件    当一个程序崩溃时,在进程当前工作目录的core文件中复制了该进程的存

2012-10-05 15:35:17 635

转载 线程私有数据

概念及作用在单线程程序中,我们经常要用到"全局变量"以实现多个函数间共享数据。在多线程环境下,由于数据空间是共享的,因此全局变量也为所有线程所共有。但有时应用程序设计中有必要提供线程私有的全局变量,仅在某个线程中有效,但却可以跨多个函数访问,比如程序可能需要每个线程维护一个链表,而使用相同的函数操作,最简单的办法就是使用同名而不同变量地址的线程相关数据结构。这样的数据结构可以由Posix线

2012-10-05 10:40:48 685

原创 多线程编程-条件变量

有的时候仅仅依靠锁住共享资源来使用它是不够的。有时候共享资源只有某些状态的时候才能够使用。比方说,某个线程如果要从堆栈中读取数据,那么如果栈中没有数据就必须等待数据被压栈。这种情况下的同步使用互斥锁是不够的。另一种同步的方式--条件变量,就可以使用在这种情况下。条件变量的使用总是和互斥锁及共享资源联系在一起的。线程首先锁住互斥锁,然后检验共享资源的状态是否处于可使用的状态。如果不是

2012-09-20 22:24:34 267

转载 线程的分离状态

线程的分离状态决定一个线程以什么样的方式来终止自己。线程的默认属性是非分离状态,这种情况下, 原有的线程等待创建的线程结束。只有当 pthread_join()函数返回时,创建的线程才算终止,才能释放自己占用的系统资源。而分离线程不是这样子的,它没有被其他的线程所等待,自己运 行结束了,线程也就终止了,马上释放系统资源。程序员应该根据自己的需要,选择适当的分离状态。    从上面的描述中可

2012-09-19 22:21:07 341

转载 Boost.asio的简单使用(timer,thread,io_service类)

2. 同步Timer本章介绍asio如何在定时器上进行阻塞等待(blocking wait). 实现,我们包含必要的头文件. 所有的asio类可以简单的通过include "asio.hpp"来调用.#include #include 此外,这个示例用到了timer,我们还要包含Boost.Date_Time的头文件来控制时间.

2012-09-14 00:25:50 597

转载 Linux 内核中的 GCC 特性

GCC 和 Linux 是出色的组合。尽管它们是独立的软件,但是 Linux 完全依靠 GCC 在新的体系结构上运行。Linux 还利用 GCC 中的特性(称为扩展)实现更多功能和优化。本文讨论一些重要的扩展,讲解如何在 Linux 内核中使用它们。GCC 当前的稳定版本(版本 4.3.2)支持 C 标准的三个版本:International Organization for

2012-09-02 14:25:40 344

转载 深入浅出VA函数

VA函数(variable argument function),参数个数可变函数,又称可变参数函数。C/C++编程中,系统提供给编程人员的va函数很少。*printf()/*scanf()系列函数,用于输入输出时格式化字符串;exec*()系列函数,用于在程序中执行外部文件(main(int argc, char* argv[]算不算呢,与其说main()也是一个可变参数函数,倒不如说它是exe

2012-09-02 12:12:33 487

转载 安全编程: 防止缓冲区溢出

1988 年 11 月,许多组织不得不因为“Morris 蠕虫”而切断 Internet 连接,“Morris 蠕虫”是 23 岁的程序员 Robert Tappan Morris 编写的用于攻击 VAX 和 Sun 机器的程序。 据有关方面估计,这个程序大约使得整个 Internet 的 10% 崩溃。 2001 年 7 月,另一个名为“Code Red”的蠕虫病毒最终导致了全球运行微软的 II

2012-09-01 15:59:42 1853

转载 内存管理内幕

为什么必须管理内存内存管理是计算机编程最为基本的领域之一。在很多脚本语言中,您不必担心内存是如何管理的,这并不能使得内存管理的重要性有一点点降低。对实际编程来说,理解您的内存管理器的能力与 局限性至关重要。在大部分系统语言中,比如 C 和 C++,您必须进行内存管理。本文将介绍手工的、 半手工的以及自动的内存管理实践的基本概念。追溯到在 Apple II 上进行汇编语言编程的时代,

2012-08-26 22:47:12 433

转载 brk和sbrk

brk和sbrk主要的工作是实现虚拟内存到内存的映射.在GNUC中,内存分配是这样的:      每个进程可访问的虚拟内存空间为3G,但在程序编译时,不可能也没必要为程序分配这么大的空间,只分配并不大的数据段空间,程序中动态分配的空间就是从 这一块分配的。如果这块空间不够,malloc函数族(realloc,calloc等)就调用sbrk函数将数据段的下界移动,sbrk函数在内核的管 理下

2012-08-26 22:33:01 341

转载 总结几种结构体初始化方法

结构体能自由组装数据,是一种很常见的数据打包方法。当我们定义一个结构体后,没有初始化就使用,就会使用到垃圾数据,而且这种错误很难发现。对于定义的任何变量,我们最好都先初始化。 除了使用memset和ZeroMemory之外,有没有更简单的方法初始化呢?因为有时候每定义一个结构体,就使用一次memset,也会觉得很繁琐。 我这里总结三种方法,如果大家有什么好的方法,不妨加上去。

2012-08-23 09:29:43 836

转载 linux时钟浅析

时钟的作用尽管与CPU指令执行没有什么直接关系,时钟对于操作系统来说还是有着很重要的意义: 1、记录系统时间。很多应用程序需要知道日期和时间、由日期和时间构成的时间戳也会被打在文件上面、等等; 2、统计功能。如top之类的用户程序可以查看一段时间内的系统负载、以及各个进程占用CPU的时间、等等; 3、定时功能。很多用户程序会使用到定时器,比如sleep一段时间后做某件事情、比如给s

2012-07-30 16:36:48 501

转载 关于网络传输字节顺序的问题

很少有人关心字节顺序(Byte Ordering),因为它真的很少用到。何为字节顺序呢?让我们先来看一个例子,假设现在有一个WORD类型的变量,它的值为0x7788,那么它在内存中是怎么存放的呢? 内存中: 低地址         高地址   0x770x88 高地址         低地址0x77

2012-07-29 12:59:30 1473

转载 Glibc 的malloc源代码分析

有人写了一个测试程序#include #include #include #include main(){  int alloc_time = 20000;  char* a[alloc_time];  char* b[alloc_time];for(int j=0; j{   for(int i=0; i  {    a[i] = (c

2012-07-26 22:57:27 492

转载 error while loading shared libraries的解決方法

在linux下运行程序时,发现了error while loading shared libraries这种错误,一时间不知道解决办法,在网上搜索,终于解决了: ./tests: error while loading shared libraries: xxx.so.0:cannot open shared object file: No such file or directory

2012-07-24 16:52:55 959

原创 virtualbox openSUSE和windowss共享文件夹设置

设备-->分配数据空间,选择一个固定空间,比如E:\\virtualboxshare 在虚拟机里 #mkdir /media/vbshare #首先建立一个挂载的目录 #mount -t vboxsf virtualboxshare /media/vbshare

2012-07-18 14:19:33 1605

转载 Const,Const函数,Const变量,函数后面的Const (zz)

看到const 关键字,C++程序员首先想到的可能是const 常量。这可不是良好的条件反射。如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮。const 更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。const 是constant 的缩写,“恒定不变”的意思。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多C++程序设

2012-07-06 22:05:36 348

转载 git与github在ubuntu下的使用

原文链接:http://www.cnblogs.com/cocowool/archive/2010/10/19/1855616.html最近开始使用git对kohana3的文档做一些补充的工作,使用了git 和 github ,从了解到使用,还是有一点距离,下面是总结的一些方法。1、Git的安装我使用了ubuntu 10.04 ,默认情况下,ubun

2012-07-05 09:42:06 345

转载 Linux下makefile教程

转自陈皓 (CSDN)概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你

2012-06-19 00:33:20 589

原创 C/C++内存分配方式总结——来自《高质量编程指南》

C/C++内存分配方式有3种:        (1)从静态存储区域分配。内存在程序编译的时候就已经分配好了(即已经编址),这些内存在程序的整个运行都存在。例如全局变量,static变量等。         (2)在堆栈上分配。在函数执行期间函数内局部变量(包括形参)的存储单元都创建在堆栈上,函数结束时这些存储单元自动释放(堆栈清退)。堆栈内存分配运算内置于处理器的指令集中,效率很高,并且一

2012-06-15 00:44:42 405

原创 关闭ipad和iphone应用图标自动添加阴影和反光等视觉效果

“在默认的情况下,iPad将会把一些视觉效果应用到你所提供的图标上。他们会圆角,并添加阴影和反光。你也可以阻止iPad添加这些视觉效果。    回到该项目的Xcode主窗口。单击Resource文件夹下的TDGame-Info.plist文件,将其在Xcode编辑器中打开,点击最底下的条目,一个带有+的按钮将会显示在key-value对表格的右边。点击该按钮将新的一行添加到表格中,滚动

2012-06-08 14:24:36 1926

转载 iOS Block学习

iOS4已经直接支持blocks,很有必要学习一下。在ios,blocks是对象,它封装了一段代码,这段代码可以在任何时候执行。Blocks可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。它和传统的函数指针很类似,但是有区别:blocks是inline的,并且它对局部变量是只读的。Blocks的定义:       [cpp] view

2012-06-07 13:31:27 360

ios5 编程指南

最新的iOS5编程指导丛书。适合初级和中级开发者,全书900页,内容讲解详细并每个内容点都有一个完整的实例代码。

2012-03-09

iphone 开发秘籍

不错的iphone图书,还是中文版噢。适合初级学者参考阅读。

2012-02-29

空空如也

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

TA关注的人

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