2010年7月1日
深圳或杭州的兄弟姐妹有谁有兴趣到华为的吗?
要求重点本科2年
经验/硕士1年经验,有C语言开发经验。有兴趣的将简历
发到
kgha@sohu.com,谢谢!
2007年8月12日
经过3天没日没夜的定位,终于把一个阻塞近一个周的问题解决了,再拖下去估计老大要把我给吃了。回想起这三天定位的过程,简直不亚于任何一部侦探小说。无数次的失望,无数次的毫无头绪或者千头万序,但总能在关键时刻发现点点蜘丝马迹,引导问题进一步深入。猜想、验证、再猜想、再验证。几乎每次都觉得问题很快就会找到头绪了,结果测试的数据无情的否定了猜想。但是又能根据测试结果引入更加深层次的问题。定位过程走了很多弯路,现在回想起来感觉就是磕磕碰碰的走过来,很多没有必要的工作也浪费了大量的时间。真是有山穷水尽疑无路、柳岸花明又一村的感觉。真是佩服古人能用如此精确的语言把这种感觉说出来。要是我想到死也想不出如何形容当时的感觉了。^_^
每次定位完一个问题后,在整理思路的时候,总是感觉这是多么自然而然的事情啊,居然当时没有想到。哈哈,可能很多人都有同样的感受,可是真正身在其中有太多的因素干扰你,把你引入歧途,等你发现的时候又要从头而来。由己及人,我们对待别人的问题是否也是这样,一个看似很简单的逻辑其中也包含了别人在很多错误基础上的尝试。或许我们在嘲笑别人犯错误的同时,更要看到别人正在向正确迈进。
呵呵,每次写BOLG都发现脑子有很多东西都混成一团,不知道从哪里开始,写起来东一句西一句的,可能这也是我高中语文作文总是不及格的原因吧。看来要找时间好好整理下自己的思路了。
2007年6月2日
如何订阅 一切请看这里:http://news.yaako.com/oeflash/ 今天终于会用新闻组了。国内的新闻组好像不太多,大部分都是外国,看英文还是比较累的
下面是转载的一篇文章:
使用Usenet(新闻组)的十大理由
1. 全球统一的分类。Usenet(新闻组)上有多达几万个不同类别的组,而且有着严格统一的管理,更重要的是它是按分级原理组织命名的,有着清楚的脉络可寻。组是Usenet(新闻组)的单位,服务器是居于次要地位的(当然,前提是你总得用一台服务器^_^)。在Usenet(新闻组)中有着数不清的服务器,来自全世界的Usenet用户们不管你连接哪台Usenet(新闻组)服务器,都可以找到一样的组名、一样的标记,找到依旧的朋友们!论坛就不同了,每个论坛的分组几乎都不同,而且各有侧重点,有时提个比较深的问题还得立马现找新论坛。你说为了寻找一个答案把帖子往几个论坛里发,或者在几个论坛里面搜索,是不是比较费力了一点。
2. 分散的服务器。你只要能找到Usenet(新闻组)中的一台服务器就行了,剩下的你就不必管了,你根本不需要担心是否有人看到,能传播到多大的范围,你要相信Usenet(新闻组)的力量是无所不到的。你更不必担心由于服务器突然关闭使得好不容易在某个讨论组上形成的某种社区气氛的消失;像论坛倒闭一样,大家作鸟兽散,这种现象在Usenet(新闻组)中是绝对不会存在的!
3. 有Google替你存档。你是不是经常有这种现象:某个你曾经看过的帖子,日后由于某种原因你突然感觉一定要重新找到再看一下,如果是在论坛,你可能得费九牛二虎之力还不一定找得到,更不要说可能连这个论坛都不在了;至于用搜索器搜,现在许多论坛都是用动态的脚本,许多搜索器也对之鞭长莫及。而在 Usenet(新闻组)中就不会有这种现象,任何过去的帖子你都可以用google找到,因为google为整个Usenet(新闻组)保存着备份。
4. 高效的交流体验。很少有论坛具备「自动跟踪自己参与过的讨论」之类的功能,菜鸟发表一帖问题,第二天去寻找答案得累死他,找啊找,最后终于找到了别人给他的回复帖,你看看这要浪费多少查找的时间!如果最终还是没找到回复帖,他就会疑问:到底是我没找到回复帖呢,还是根本就没有人回复?由此可见,论坛是一个折磨人的地方。Usenet(新闻组)不一样,Usenet(新闻组)用新闻组阅读客户端获取帖子,每一封帖子客户端都会自动识别,凡是你参与过的讨论,你感兴趣而标记过的主题或作者,你讨厌而加入黑名单的主题或作者...你的新闻组阅读客户端都会给你分得清清楚楚,配上不同的视图,让你一目了然。
5. 集中精力。Usenet(新闻组)的风格是简朴的,功能又是最强大的。Usenet(新闻组)人性化的设计使得你能最大限度的将精力集中于交流本身;不像论坛,每个论坛都有不同的分类、每个论坛都有不同的版式,到了个新的论坛往往找个回复链接按钮都要上下左右看一看,由于带宽的限制以及论坛外表设计的越趋复杂,连接、下载往往会出现等待的现象(你砸鼠标也没用),那些和你无关的花花绿绿的flash、图片、背景音乐充斥着你的感官,你说你是来讨论交流的还是来虐待自己的?
6. 充分的思考。现在几乎每个人社会事务都很繁忙,使用Usenet可以高效率地分配你的时间。在现今宽带逐渐普及的情况下,新闻组离线特点的意义在于能够充分利用你的每一个空闲的时间段。上线取回一批帖子,在离线状态下,你可以有充裕的时间和时段来精心回复你所感兴趣、你所「跟踪」的讨论。所谓「文如其人」,你可以将自己的思索经过充分酝酿后展示给世界。你不需要天天在线,只要利用好线索、跟踪等功能,你不会错过你感兴趣的任何讨论。
7. 论坛需要登陆。你说你没关系反正整天挂在网上,靠,你是为显示你有钱还是显示你是个无事闲人?再说了,即使你用隐身登陆挂着也不好啊,总会有人知道你隐身了:小样,整天躲在背后,没准内心阴暗着呢。你看看,你白担了多少虚名。新闻组不一样,新闻组就没有在线、隐身一说,连上服务器拉回一批帖子,之后就和它没关系了,你大可以慢慢看,就是断断续续地看个十天半月也没关系,看完了,也写好回帖了,再次连上(别嫌烦,点一个位置永远不变的按钮而已)服务器发出帖子,之后就又和服务器没关系了。
8. 以「CN」开头中文GB码顶极组。2001年,正式成立了cn.*顶极组(the top CN hierachy),中国的Usenet用户终于有了自己的家园,Usenet(新闻组)终于正式有了中国的身影。感谢news.cn99.com!感谢 PY!虽然三年过去了,中文Usenet(新闻组)一直未能真正发展起来...但是:我们相信网络的力量;我们相信人之为人的自由表达的天赋权力;我们相信Usenet(新闻组)应有简体中文的一席之地。请支持中文Usenet(新闻组)的发展。
9. 一份历史文档。在Usenet(新闻组)中,任何一封帖子都有可能成为一份历史文献。例如:当年21岁的Linus Benedict Torvalds在Usenet(新闻组)的comp.os.minix组中的一系列关于开发Inter 80386体系机构的新操作系统的讨论已经是Linux历史的一部分;嗯,Linus不是人人能做的,但如果你能在1981年5月11日在自己发往 Usenet(新闻组)帖子中提到一家名叫Microsoft的小公司,你同样能名垂史册的...
10. 不要小看了自己。Usenet(新闻组)能够忠实记录和实践你的生命中每段时刻的所见所闻所想,你的进步、你的困惑、你的迷茫、你的喜悦...即使你终其一生只能是一个普通人,但几十年后自己回头看看你一路走过的风光,那些的只言片语、那些的人生思索、那些曾经多么年轻的脸...你一定会感叹:「哦,我当年也不是不英俊的。」;即使你终其一生只能成为一个普通人,但并不妨碍你的后辈追随你的足迹,以彰显人伦的仰慕和光辉。请记住:人生的意义在于其过程。
好了,谢谢你终于看完这篇文档,你愿意试试吗?请在IE或Mozilla(不是Mozilla Firefox)地址栏键入 news://news.yaako.com ,订阅「cn」开头的系列组进入中文Usenet(新闻组)世界(这里提醒你一下,yaako服务器中有近三万个分类组,下载组列表时可能要花费一点时间...)。如果你对怎样加入Usenet新闻组一无所知也没有关系,请点击下面的链接:http://news.yaako.com/oeflash/ , 这里有一篇关于使用Outlook Express(IE就是调用OE来进入Usenet的)加入Usenet新闻组的视频教程。
PS:什么?你说什么?你说论坛有积分,你有荣耀感?拜托,老大!都什么时代了还搞这套迂腐的东东!大侠不是积分积出来的,大侠是灌出来的!你见过有几个真正的大佬,整天扛着块牌子上写「我是老大」?相信自己,你就是那么帅!就凭你那光辉灿烂的ID,只要你愿意,你一定能够像cn.fan组的流星99一样:就是发出个内容是「呵呵」签名有四行的帖子,大家都得认真拜读,从中领会大侠一颦一笑的真谛。
2007年3月10日
也不想写什么大的东西,最近一个小的项目需要写自己管理一块单独的内存,包括内存的分配和释放。所以想自己独立的写个内存分配函数,其实这方面的东西,网络上很多现成的算法。也分析了几种算法的实现。有很多算法确实具有很大的诱惑,很复杂并且很完备,但是不适合简单的嵌入式管理内存。对于现在的项目一个简单的首次适配法就足够满足了。
写个首次适配法的内存管理程序并不复杂,很多人在大学就写过,书上也有不少现成的范例,但是还是想亲自写一写,便于对内存分配有个清楚的认识。
2007年3月4日
最近一直想编写一个跨平台带界面的GUI软件,在linux上可以免费用QT提供的GUI类库,但是Windows上的QT一般是收费的(都怪微软),没办法只好换各类库,本想用MFC,但是MFC本身太复杂了,涉及到很多奇怪的宏定义,对于跨平台的软件编写不是太理想。如果实在找不到类似的GUI类库,只有自己通过API来写一个了。幸运的是,突然发现在codeproject上一个比较好的windows下的GUI类库:Win32++。
本身这个类库就是模仿MFC的风格写的,都是直接调用windows API函数完成,代码比较清晰。很容易就可以看到作者的实现思路,不像MFC封装了太多东西,学习起来太麻烦了。
反正就是一个用起来很舒服的东西,用它的库来实现跨平台的软件简直太完美了。
下载地址:http://www.codeproject.com/win32/framework.asp
2007年2月10日
在编写设备驱动时,
tasklet
机制是一种比较常见的机制,通常用于减少中断处理的时间,将本应该是在中断服务程序中完成的任务转化成软中断完成。
为了最大程度的避免中断处理时间过长而导致中断丢失,有时候我们需要把一些在中断处理中不是非常紧急的任务放在后面执行,而让中断处理程序尽快返回。在老版本的
linux
中通常将中断处理分为
top half handler
、
bottom half handler
。利用
top half handler
处理中断必须处理的任务,而
bottom half handler
处理不是太紧急的任务。
但是
linux2.6
以后的
linux
采取了另外一种机制,就是软中断来代替
bottom half handler
的处理。而
tasklet
机制正是利用软中断来完成对驱动
bottom half
的处理。
Linux2.6
中软中断通常只有固定的几种:
HI_SOFTIRQ(
高优先级的
tasklet
,一种特殊的
tasklet)
、
TIMER_SOFTIRQ
(定时器)、
NET_TX_SOFTIRQ
(网口发送)、
NET_RX_SOFTIRQ
(网口接收)
、
BLOCK_SOFTIRQ
(块设备)、
TASKLET_SOFTIRQ
(普通
tasklet
)。当然也可以通过直接修改内核自己加入自己的软中断,但是一般来说这是不合理的,软中断的优先级比较高,如果不是在内核处理频繁的任务不建议使用。通常驱动用户使用
tasklet
足够了。
软中断和
tasklet
的关系如下图:
上图可以看出,
ksoftirqd
是一个后台运行的内核线程,它会周期的遍历软中断的向量列表,如果发现哪个软中断向量被挂起了(
pend
),就执行对应的处理函数,对于
tasklet
来说,此处理函数就是
tasklet_action
,这个处理函数在系统启动时初始化软中断的就挂接了。
Tasklet_action
函数,遍历一个全局的
tasklet_vec
链表(此链表对于
SMP
系统是每个
CPU
都有一个),此链表中的元素为
tasklet_struct
。此结构如下
:
struct tasklet_struct
{
struct tasklet_struct *next;
unsigned long state;
atomic_t count;
void (*func)(unsigned long);
unsigned long data;
};
每个结构一个函数指针,指向你自己定义的函数。当我们要使用
tasklet
,首先新定义一个
tasklet_struct
结构,并初始化好要执行函数指针,然后将它挂接到
task_vec
链表中,并发一个软中断就可以等着被执行了。
原理大概如此,对于
linux
驱动的作者其实不需要关心这些,关键是我们如何去使用
tasklet
这种机制。
Linux
中提供了如下接口:
DECLARE_TASKLET(name,function,data)
:此接口初始化一个
tasklet
;其中
name
是
tasklet
的名字,
function
是执行
tasklet
的函数;
data
是
unsigned long
类型的
function
参数。
static inline void tasklet_schedule(struct tasklet_struct *t)
:此接口将定义后的
tasklet
挂接到
cpu
的
tasklet_vec
链表,具体是哪个
cpu
的
tasklet_vec
链表,是根据当前线程是运行在哪个
cpu
来决定的。此函数不仅会挂接
tasklet
,而且会起一个软
tasklet
的软中断
,
既把
tasklet
对应的中断向量挂起
(pend)
。
两个工作完成后,基本上可以了,
tasklet
机制并不复杂,很容易的使程序尽快的响应中断,避免造成中断丢失。
2007年2月6日
终于要准备第一次在自己的BLOG上发贴了,以前申请了不少blog,但是网络高手无数,自己实力尚浅,面对各路高手总是心虚,其实仔细想过,在网络能记录下自己的学习心得,让自己看到每天的进步未尝不是一件好事。不管你是高手也好菜鸟也好,blog是在网络上一个自己的空间,在网络上瞎混这么多年总要有点自己的心得体会吧。
很喜欢这样一个专门为技术人员做的blog,一群崇尚技术热爱技术的狂人们,每天都将自己的学习经验共享出来。在网上读了这么多文章,学了这么多东西,总感觉欠了别人的东西一样,如果不为网络付出一些,总是对不起别人的。网络是各公开的地方,就像某人说的那样:如果我给你一个思想,你给我一个思想,我们就共同拥有了两个思想。思想的共享永远是有利无害的。
希望能在这里记录自己的思考,不管对技术还是对人生,总之网络的一个小角落里总留下了自己点点的痕迹!