自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(27)
  • 资源 (14)
  • 收藏
  • 关注

原创 vim看代码的工程配置

Android开发,重点在kernel、bootloader、system等。每天有大量的代码要看,分散在很多目录下。核心思路:1. 使用数据库缓存,加速常用操作。2. 在vim中根据环境变量加载相应工程的各种符号数据库。 1,自定义shell命令,准备工程的环境变量。本地有多个代码目录,需要切换工程,可将如下语句添加到.bashrc中,路径自定义,命令名称自定

2014-12-13 15:45:50 591

原创 Linux下开发环境配置

核心思路:1. 使用数据库缓存,加速常用操作。2. 在vim中根据环境变量加载相应工程的各种符号数据库。 1,自定义shell命令,准备工程的环境变量。本地有多个代码目录,需要切换工程,可将如下语句添加到.bashrc中,路径自定义,命令名称自定义。这些环境变量,主要是给vim准备的。alias cdsyn="export PRJTOP=~/code1/share/MT6795_SYNC ; ex

2014-12-13 15:38:05 128

原创 linux的NAPI方法收包

NAPI和传统收包方法的区别是:NAPI可以进一次中断收很多次的包,但是传统方法进一次中断后将包放到local cpu的softnet_data的input_queue,之后就退出中断。 一、传统方法         进入处理程序后,首先从物理设备中将数据分组拷贝到内

2011-09-25 19:41:22 4895 1

原创 操作系统相关概念的通俗理解

将一台计算机看作一个KTV娱乐中心,每一个KTV包房看作一个CPU。现在只考虑单CPU也就是只有一个KTV包房的情况。现在有很多客户想到包房里面K歌,每一个客户可以看作一个进程。资源有限,所以必须有一个排队/调度机制,谁先唱歌谁后唱歌,怎么切换。  KTV的管家,也可就是操作系统,由它来完成调度。当客人不是很多的时候,一个简单的先进先出的队列就可以解决这个问题。但是当客人越来越多的时候,如果还是先

2011-06-26 11:40:00 785 1

原创 使用sed修改配置文件

问题:在接口up的时候,向一个配置文件中加入一些配置项,down的时候,将这些配置项从配置文件中删除。 radvd.temp.conf 保存接口相关的配置项,radvd.conf是最终配置文件。$REALDEVICE是接口名称。 up.sh sed -e "s/ppp0/$REALDEVICE/" radvd.temp.conf >> radvd.conf down.sh CFGNUM=`wc -l radvd.temp.conf | sed 's/[[:space:]].*$//g'

2011-05-29 21:09:00 3061

原创 fedora的root无法登录的问题

fedora linux 输入root,和密码 然后就出现  故障鉴定 。这是因为fedora linux 默认禁止了root 超级用户。 通过以下修改就可以了。 进入普通用户,在终端输入 “su“ 命令然后输入root密码 然后修改 gedit /etc/pam.d/gdm   gedit /etc/pam.d/gdm-password 注释掉 :auth required pam_succeed_if.so user != root quiet 如果没有普通账户,那么需

2011-05-26 22:43:00 376

原创 使用ftrace学习linux内核

linux中大量使用函数指针钩子,导致阅读代码困难。比如想知道一个函数的调用路径,那么就只能用source insight之类的工具看代码了。有没有办法可以迅速获得调用关系的整体印象?ftrace是内核提供的一种调试工具,可以对内核中发生的事情进行跟踪。比如函数的调用,进程的切换,中断的开关等等。这里利用这个工具来跟踪函数的调用。 # cat /boot/config-2.6.36 | grep FTRACE CONFIG_HAVE_FTRACE_NMI_ENTER=y CONFIG_HAV

2011-05-25 23:40:00 3545

原创 内核数据结构:红黑树(设计)

何为红黑树? 红黑树是一种具备较好平衡性的二叉搜索树,用于存储键值对类型的数据。 1. 所谓较好平衡性,是指该二叉树的任何一个子节点,其左右子树的高度都相近。从而在搜索/插入/删除节点的时候都有较高的效率。为保证这一特性,约定红黑树具有以下性质:       性质1. 节点是红色或黑色。            性质2. 根是黑色。            性质3 每个叶节点是黑色的。            性质4 每个红色节点的两个子节点都是

2011-05-18 21:11:00 1856

原创 内核数据结构:hlist_head

内核中,使用list_head作为链表,该数据结构本身即使head又是node。如果将它作为hash list的头节点,那么每个头节点会占用8个字节。因此内核中对其优化,使用hlist_head作为hash表的头节点。内核中定义其数据结构为: struct hlist_head { struct hlist_node *first; }; struct hlist_node { struct hlist_node *next, **pprev; }; 注意到

2011-05-16 20:58:00 4466 1

原创 fcntl设置文件为close_on_exec

用于设置文件描述符fd的标志位,目前只有FD_CLOEXEC可以设置。默认情况下,该标志位为0,表示在使用exec加载的子进程中仍然可以保持文件描述符是打开的,否则在子进程中文件描述符被关闭。close_on_exec.c #include #include #include #include #include #include int main(){ pid_t pid ; int fd ; int err = 0 ; char *s

2011-05-08 00:24:00 1158

原创 full cone的验证

1. 内部进程甲和乙是向相同的IP/port发送报文,在Modem的Wan侧镜像,看目的地址的端口号如何变化。2. 根据这个端口号,在服务器上初始化外部进程A用于收包,向该IP/port回应一个包。在内部主机上面抓包,可以收到这个包。3. 外部主机进程A向B共享WAN侧IP和端口号,进程B向该IP/port回应包。----------udptest1. 启动该进程后,陷入死循环,接受用户输入的命令2. send命令,向某个端口号发送消息3. receive命令,启动一个线程,监控某个端口号,接收消息。线程超

2011-03-30 09:54:00 1219

原创 M8 android

<br />1. cross compile<br />download from http://www.codesourcery.com/sgpp/lite/arm/portal/release1600, and install cross compile<br />cd kernel/2.6.29<br />cat .cross_compile<br />edit .cross_comile, replace the patch of cross compile to yours<br /> <br /

2010-12-19 12:47:00 101

原创 由printf引发的数据类型问题

<br />在PC上执行下面的程序:<br />int main()<br />{<br />    int j = 0xaaaa ;<br />    long long ll = 0x123456789abcdef ;<br />    unsigned char* pc = (unsigned char*)&ll ;<br />    printf("ll=0x%x, j=0x%x/n", ll, j) ;<br />    printf("ll=%llx, j=%x/n", ll, j) ;<br

2010-09-16 21:18:00 502

原创 container_of宏

<br />#include <stdio.h><br />#include <stdlib.h><br />#include <stddef.h><br />#define container_of(ptr, type, member) ({             /<br />         const typeof( ((type *)0)->member ) *__mptr = (ptr);     /<br />         (type *)( (char *)__mptr - offse

2010-09-10 07:06:00 327

原创 Modem版本切换工具设计

在嵌入式开发中,烧版本是个很耗时间的操作。由于我们使用的NOR Flash,写操作较慢,通常一个烧4M的版本得耗时一份多种。然后系统会重启并重新引导。花费大量的时间。能否有一种方法,在不烧版本不重启系统的形式下切换嵌入式的内核?今天看到kexec工具,觉得可以尝试一下。有以下约束条件:1. 板子的文件系统基于squashFS,大多数目录只读的。可写的目录只有var和mnt两个。2. 新

2010-05-20 23:09:00 262

原创 GoogleTest

GoogleTest是Google提供的C++测试框架,可以用于白盒测试,改善单元测试效率。概念:测试程序,测试用例,测试项。一个测试程序可以有多个用例,一个用例可以包含多个测试项。断言:预期代码执行后的效果。assert,如果出错且导致致命错误,可以退出测试程序,否则即时出错也可以执行测试。googletest用ASSERT_和EXPECT_前缀来区分是否退出测试程序。  一

2010-05-08 22:12:00 978

原创 云计算

      搜狗也出云输入法了,似乎是个公司都可以把云的概念套在身上。云计算是什么?听多了概念,不就是把计算和存储放在远程服务器么,那现在的Web邮箱也可以叫做云了?      中午和经理聊到这个话题,才发现这绝不仅仅只是一个概念,将会成为一个大有可为的事物。      手机看视频,视频的清晰与否很大程度取决于手机的视频解码能力。现在好了,有了云计算,直接将视频的解码和存储都放在远程了,手

2010-03-27 12:49:00 230

原创 如何在kernel中调用module的函数

     为什么要在内核中调用模块的函数?     linux解决方案提供商在发布代码时,可能希望将某些核心代码以二进制(对于内核,就是ko文件)的模块发布,然后在内核中调用模块的函数,以保护其知识产权。      模块调用内核的函数是很容易的,在内核EXPORT_SYMBOL函数,并包含相关的头文件,直接调用即可。但反过来,在内核中调用模块的函数则不太容易。即使包含相关头文件,编译通

2010-02-27 17:01:00 1796 1

原创 昨日之我与今日之我

回想起学生时代做的那个Agent平台,调试一个跨主机的通信故障,通信协议不正常。很多次,怀疑消息的字段有错误,却没有抓一次包来分析。依稀想过有一次,想看一下包的结构,用到了tcpdump,不会用,作罢。想到了用工具,却使用了一个不恰当的工具。如果当时有ethreal,那半年的调试工作会轻松很多很多很多。今日之我,是否仍然有这样的困境,只是自己没有意识到?或者,对手头的工具应用得不够精通?每个人都有

2010-01-26 08:16:00 248

原创 模块 list hash

这些代码片段展示如何使用linux内核模块,list,以及hash===================tccounter.c=====================#include #include #include #include #include #include #include #include MODULE_LICENSE("GPL");

2010-01-15 21:37:00 642

原创 关于设计

      在还是一个代码新手的时候,也许会觉得写代码最重要,最先考虑的是程序能够跑起来。但到了后期就会切实感受到,糟糕的设计让系统无法扩展。任何一点的新需求,都是大手术。      敏捷开发,要求快速迭代,但操作起来还是需要技巧的。

2009-11-18 00:50:00 170

原创 printk解析

需求:嵌入式开发Modem,Modem会不可预料地死掉,问题出现后只能重新上电重启Modem。而且重启之后,出错之前的信息都丢失了。一个思路是修改内核的printk模块,将printk都写到flash中保存起来。重新上电后,查看这一块flash的内容。 printk    --vprintk  将待打印的句子输出到tbuf中。如果没有制定字符的级别,默认加上一个。        -

2009-10-22 23:31:00 369

原创 asp.net中使用COM组件生成word的80070005错误

错误现象: 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。 CLSID可能为000209FF,00020906啥的。 解决办法: 这个问题折磨了我很长的时间。在VS2005的调试模式下能够正常生成word文件,但是通过web服务器访问时,就报这个错误

2009-10-08 22:37:00 2090 1

原创 版本控制

一定要做版本控制。被一个DCOM组件的错误折磨了近3天的时间,至今无解。不知道是程序的问题,还是环境的问题。为此安装了完全干净的系统,问题依然存在。那么很有可能是程序的问题了。但却找不到以前的历史版本。有一些零星的程序,散布在电脑硬盘的各个旮旯里面。好不容易找到一个,发现代码和数据库文件不匹配。 需要做这么几个方面的版本控制:1. 源代码,使用svn2. 版本文件,包括代码和数

2009-10-08 09:44:00 166

原创 Linux内核学习计划

参考资料:1. 《深入理解Linux内核》2. linux kernel 2.6.31源代码 按照主题的形式组织文章,围绕具体的问题写作 包括以下内容:1. 从ioctl和system两个系统调用开始,学习系统调用的参数传递、出错处理、内核态与用户态的切换2. Linux中的汇编语言3. I/O体系结构及设备驱动程序4. 从socket和open两个系统调用

2009-09-29 00:01:00 356

转载 深入分析 Linux 内核链表

深入分析 Linux 内核链表文档选项打印本页将此页作为电子邮件发送级别: 初级杨沙洲 (pubb@163.net)国防科技大学计算

2009-09-14 18:57:00 312

原创 sql中插值法完成缺失数据的填充

     在我做的大气污染报表系统中,由于原始数据缺失,经常出现一些负数或者0的大气浓度,导致最后生成的曲线很丑,会画到水平轴以下。将这些错误的数据当错缺失数据处理,需要采取一定的手段填充。缺失的数据采取插值法填充,这一点早就确定下来,但在如何实现上却困扰很久。     将原始问题简化一下。比如有这样一组数据。ID  so    co1 1  0.1  0.1 2  0    0.2 3 

2009-09-13 23:17:00 2079

gcc手册中文版(编译选项)

本手册页内容摘自 GNU C编译器的完整文档,仅限于解释选项的含义.

2009-09-05

strace命令用法

跟踪程式执行时的系统调用和所接收的信号.通常的用法是strace执行一直到commande结束. 并且将所调用的系统调用的名称、参数和返回值输出到标准输出或者输出到-o指定的文件.

2009-09-05

Chrome 4.0.206.1 Dev

谷歌浏览器Chrome是一款可让您更快速、轻松且安全地使用网络的浏览器,它的设计超级简洁,使用起来更加方便。Google 浏览器Chrome的特点是简洁、快速。

2009-09-05

asp.net水晶报表 示例

一个通用的在asp.net中使用水晶报表的示例

2009-06-30

使用编程方式添加计划任务的.net组件taskscheduler

使用编程方式添加计划任务的.net组件taskscheduler

2009-03-31

.net下的Windows定时器组件

向windows系统中添加定时计划任务的.net组件,以方便编程。

2009-03-31

linux下cpp插件开发实例

本例介绍了linux下用C++实现插件的一个简单实例。 相关文章:http://blog.csdn.net/atunet/archive/2006/11/09/1376299.aspx

2009-01-16

常见设计模式的解析和实现(C++)

author: 李创 http://www.cppblog.com/converse/ ------------ 作者解析了常见的20个设计模式,并使用C++语言实现这些模式。 rar包中包含解析说明pdf,及源代码。

2008-11-12

Understanding_the_Linux_Kernel_Third_Edition

[Linux英文原版图书系列].OREILLY-Understanding_the_Linux_Kernel_Third_Edition.chm 深入理解Linux内核

2008-11-04

linux网络编程之 epoll简介

编写连接数巨大的高负载服务器程序时,经典的多线程模式和 select模式都不再适 用。应当抛弃它们,采用 epoll/kqueue/dev_poll 来捕获 I/O 事件。最后简要介绍了 AIO。 --------- from 搜狗实验室

2008-11-04

大世界网络游戏服务器的构架

by 云风 大世界网络游戏服务器的构架 云风 游戏 服务器 大世界 架构

2008-11-04

软件开发过程中用到文档的模板

给出软件开发过程中所用到的各种模板。共13个,其中包括可行性报告,项目开发计划,需求规格说明书,等等

2008-11-04

XMPP即时通信 协议

从网上down的XMPP协议文档,doc格式

2008-11-04

libReflection

使用模板和宏,模拟实现Java的反射功能。支持VC环境。功能强大。

2008-08-04

空空如也

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

TA关注的人

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