
读后感
woshiyilitongdouzi
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
gawk1.01源码分析08
gawk1.01源码分析08还有一个小时就要干活了。一直在断断续续的读gawk101的源码,我原来一个同事,特别会写awk脚本,我比不上他。我想,我要超过他,就只能读源码了。在项目组干活时,有一天,我忽然想读开源的源码,我不太会搜索,请项目经理帮我找开源软件,他帮我找到了sed的源码,当时真时读得想吐,其中遇到getopt函数,根本就看不懂。于是我放弃了。后来,自己就找到了gawk101的源码。因为我对awk熟悉一些。我比较喜欢看书,因为perl的作者说,他是因为遇到一个问题,用awk解决不了,于是原创 2020-10-13 10:15:34 · 178 阅读 · 1 评论 -
浅谈如何阅读开源软件的源码----谈谈我读ruby049源码的体会
浅谈如何阅读开源软件的源码----谈谈我读ruby049源码的体会很长一段时间没有读源码,也没有更新csdn,但所幸的是,还是在断断续续的读。有时在网上找资料,发现,很少。有时,找来找去,还是只看到自己写的那些博客。而自己写的博客内容是很浅薄的。于是,心想,或许我来补充完整吧。网上读源码的人少,我来当第一人,把大家都带动起来。今天重点谈谈自己的一些思路。第一、用成长型思维读源码。前段时间看书,发现思维模式很重要,有人用成长型思维看问题,有人用固定型思维看问题。而读源码时,个人体会是,第一眼看到从官网上原创 2020-10-13 04:02:48 · 1386 阅读 · 1 评论 -
学着折腾树莓pi和51单片机
学着折腾树莓pi和51单片机树莓pi真是一个好玩意儿。基本上的功能都能实现,只是有些python的模块装不上,因为没有arm支持。像百度网盘也没有arm版本。但折腾起来很好玩。我安装了ssh,可以远程登陆,这样,树莓pi不用接显示器,通过笔记本连接上,然后就可以操作树莓pi,另外,如果想要图形界面,还可以安装vnc,真是很好玩的。我还试着弄一个samba,sftp,来把文件转来转去。另外,我原来买的单片机调试程序不好,于是买了和书配套的单片机,卖家送了光盘,把上面的程序一个一个调试,真是很爽。可惜.原创 2020-09-25 18:55:32 · 518 阅读 · 0 评论 -
coreutils4.5源码expand.c分析
coreutils4.5源码expand.c分析感觉这个代码真复杂。本来以为很简单的一个命令,就是把tab转为空格。但你看。echo -e "ab\td\tx" | ./expand -t 2 | od -cb0000000 a b d x \n 141 142 040 040 144 040 170 0120000010第二个tab只转为了1个空格。我以为是我看错了,又执行几次:echo -e "ab\td\tx" | ./expa...原创 2020-09-05 18:00:23 · 294 阅读 · 0 评论 -
coreutils4.5.1源码阅读读后感20200905
coreutils4.5.1源码阅读读后感20200905先把源码的长度进行排序,wc -l *.c | sort -n > source.txt并写到一个文件中,如图: 2 ls-dir.c 2 ls-ls.c 2 ls-vdir.c 7 md5.c 7 sha1sum.c 71 false.c 71 true.c 74 sync.c 82 pwd.c读代码时,打开这个文件,从长度最小的依次向...原创 2020-09-05 11:38:12 · 166 阅读 · 0 评论 -
coreutils4.5源码expr.c分析——漂亮的代码
coreutils4.5源码expr.c分析——漂亮的代码有一本书叫《漂亮的代码》,其中选择了一些写得漂亮的代码,重点加以分析,如只用30多行程序实现正则表达式。今天反复读expr.c,感觉这个代码写得真漂亮。比如:static char *inttostr (intmax_t i, char buf[INT_STRLEN_BOUND (intmax_t) + 1]){ uintmax_t ui = i; char *p = buf + INT_STRLEN_BOUND (intmax_t)..原创 2020-09-04 16:45:21 · 257 阅读 · 0 评论 -
coreutils4.5源码读后感20200904
coreutils4.5源码读后感20200904为了在vim下写代码,有时写好代码后,要保存,退出编辑器,回到命令窗口,再编译执行。为了不退出vim进行编译,我在网上找程序员vim配置文件,发现一个高人,总结了如下三句话:git clone https://github.com/chxuan/vimplus.git ~/.vimpluscd ~/.vimplus./install.sh真是超级爽。不过,如果要么直接在linux下读,要么在windows下读。如果你在win10下,进入ubuntu原创 2020-09-04 16:33:14 · 166 阅读 · 0 评论 -
coreutils4.5源码expr.c读后感20200903
coreutils4.5源码expr.c读后感20200903很长一段时间没有写博客了。因为很久一段时间没有读源码了。这两天,又开始读。感觉还是要从基础的读起,一下子读ruby0.49等编程语言的源码,哪怕是awk1.01的源码,都太复杂了。饭还是要一口一口的吃。原来还想用平板看代码,现在发现,还是要用笔记本看,因为读代码时,要调试,要编译,再进行测试,根据结果来验证自己的想法是否正确。当然,前期也可以只是看,但效果不是太理想。还是要手摸键盘,一边看,一边改代码,编译后,执行一把,才能看到效果。所以,原创 2020-09-04 16:31:50 · 181 阅读 · 0 评论 -
oz grep源码分析
oz grep源码分析今天在笔记本上折腾ubuntu18,真是很好玩。配置低的本上,装ubuntu,真划算。原来4G跑win10总是慢得不行,现在跑linux,感觉还是很快的。我在本子上读regex.c这个文件,一个地方卡住了。 for (p = pat; *p; p++) { lp = mp; switch(*p) { case...原创 2020-03-23 13:06:16 · 244 阅读 · 0 评论 -
安装ubuntu18
安装ubuntu18前几天,因为执行编译后的ruby0.49后, 一旦执行,就报coredump错误,于是就想,因为在win10下,wsl一个ubuntu,因为生成不了core文件,于是想,还是在虚拟机下安装一个完整的ubuntu,再生成coredump文件,这样,调试一下,看到底是哪个地方去错了。我把一万多个警告错误好不容易去掉了。这要不能执行,真不甘心呀。网上有人说,win10下,可以...原创 2020-03-23 07:52:49 · 250 阅读 · 0 评论 -
《软件随想录》读后感
《软件随想录》读后感我特别喜欢买书,有时找遍京东,居然发现没有新出什么好的计算机书籍。真的。joel说软件这本书,我当时买的时间是2008年前后,现在重印了,于是趁着半价,就又购了一本。我买的是第一本,读起来,很有感触。尤其是谈到C语言字符串的处理,因为我读源码,被字符串处理弄得痛苦无比。像oz的grep中,regex.c中,对正则表达式进行解析,再用解析后的中间代码去进行匹配。总之,我快要被...原创 2020-03-21 17:30:38 · 208 阅读 · 0 评论 -
《程序设计实践》读后感
《程序设计实践》读后感昨天晚上读这本书,重点读数据结构这一章,也许是因为读gawk101源码有一段时间,在重读时,感觉作者写得真好。我重点放在书中的代码上,发现那些代码写得像珍珠一样,真是漂亮。作者写了链表,然后再写一个遍历链表的函数,因为遍历链表时,可能是要打印,可能是要统计元素个数,可能是要找某个元素。作者就把遍历链表时,要干的事用一个函数指针来表示,这个手法太漂亮了。就像schema中...原创 2020-03-19 20:37:24 · 248 阅读 · 0 评论 -
ruby0.49 array.c源码阅读
ruby0.49 array.c源码阅读我想,应该叫源码阅读,自己随心所欲的读。就像读小说一样。因为我比较喜欢ruby语言,读新版本的,代码量太大,不划算。为此,找了最早版本的。代码量少些。读array.c源码,今天基本上把代码过完了,而且基本都理解了。数组中,好像有三个重要的要素arr->len 存储数组中实际的元素个数,下标从0开始。arr->capa 存储数组中,目前分...原创 2020-03-19 20:27:29 · 145 阅读 · 0 评论 -
coreutils-4.5.1源码阅读
今天忽然想,我目前的功力去勉强读gawk1.01,ruby049的源码,都有些勉强,真的。因为涉及到编译器的许多知识。为此,还是读简单些的,如coreutils的源码。于是,我打开了coreutils,现在读的时候,我第一选择是想多读些文档,最好是帮助文件,但网上下载,太慢了。于是,忽然想,coreutils文件夹下应该也有的。于是,在doc文件夹下,果然发现了一个,有些长。但也能读。...原创 2020-03-18 16:17:39 · 494 阅读 · 0 评论 -
oz grep.c源码阅读有感想
oz grep.c源码阅读有感想我最早开始读源码,就是读了有一个人分析oz的grep.c源码的文章,我读了博客后,感觉不过隐,继续下载了oz的源码,自此,就再开始读coreutils等源码。但陆续读代码,其中grep.c中的正则表达式大体逻辑懂了,但其中关于位图的一些操作,一直没有弄明白。昨天,我想,再回过头来读grep.c的源码,开始下载,使用wget总是下载不了。于是,直接使用网页打开,再...原创 2020-03-18 15:03:04 · 219 阅读 · 0 评论 -
谈谈我读源码的心得
谈谈我读源码的心得为了搜索他人对gnugawk源码的分析成果,在百度上搜索,发现除了我写的一些东西,其它人没有写。于是,就重新操起了笔,自己接着写。我很久没上csdn,密码忘记了,上次登陆没进去。这次居然一次性还记起来了。首先,我想,还是读老版本的代码,性价比高。因为老版本的代码,解决了最核心的问题,从0到1,这是最根本的。但一个问题,老版本的代码编译不了,因为操作系统,编译器都不同了。于是...原创 2020-03-08 11:31:25 · 294 阅读 · 0 评论 -
gawk1.01源码分析——进行调试2
gawk1.01源码分析——进行调试2今天读代码时,发现我对awk2.c中如何生成解析树的过程还是很模糊。于是想上网搜索资料。发现没有。于是,心想,没人写,那我就再接着写吧。不指望有多少人看,就当成是把自己分析源码的心得、想法进行总结。就当写日记一样。以前读源码,因为编译不了,总是纸上谈兵,但读着读着,发现不行。因为我无法验证我的理解对不对?而且也没有人和我交流,那不行。还是要把程序编译成功...原创 2020-03-08 10:50:02 · 191 阅读 · 0 评论 -
coreutils5.0 tsort.c源码分析
coreutils5.0 tsort.c源码分析昨天很冷,没有写博客。今天太阳出来,开始写。我很喜欢看sort,comm,seq,diff,uniq之类的程序,因为其中用到一些算法,而且与内核关系不大,不象chown之类,需要调用系统调用,而我能系统调用不熟悉,因此,昨天就打开了tsort.c的源码,但读了一点就看书去了,今天接着看,感觉有点眉目了。因为我没用过tsort程序,于是百度一下...原创 2019-12-19 10:10:28 · 307 阅读 · 1 评论 -
coreutils5.0 paste.c源码分析
coreutils5.0 paste.c源码分析时间过得真快,一晃又到中餐时间了。我要赶紧再写一篇。先说paste的用法。paste -s把每个文件变成一行,再把两个文件合在一起。paste -s -d: a1 a2此时,a1中每一行末尾的\n用:来进行分隔。然后再看相应功能在程序中是如何实现的。先翻到main函数。serial_merge=0在getopt_long中,当分析...原创 2019-12-17 11:26:52 · 132 阅读 · 0 评论 -
coreutils5.0 unexpand.c源码分析
coreutils5.0 unexpand.c源码分析这个程序没有使用过。今天先测试一下用法。echo " bc haha " | ./unexpand | cat -t发现果然把空格转换成tab键了。而且,还有选项unexpand -a表示除文件行开头的空格转外,文件中间、末尾的空格也转为tabunexpand -t 4把连接的4个空格转为t...原创 2019-12-17 10:57:12 · 101 阅读 · 0 评论 -
coreutils5.0 split.c源码分析
coreutils5.0 split.c源码分析接着打开split.c,先测试一下用法。a.3的内容如下12345./split -l 3 a.3xaa123xab45看来,按行拆分好理解的。于是,我就找按行拆分的 方法。先从头到尾逛一下,翻到main时,先从getopt分析命令行参数中,找到如何分析-l发现,把行数存储到accum中,并split_type=t...原创 2019-12-17 10:00:44 · 131 阅读 · 0 评论 -
coreutils5.0 fold.c源码分析
coreutils5.0 fold.c源码分析先说点闲话,感觉打开电脑,能静下心来读源码,是一种幸福的生活。昨天把办公桌上的卫生整理了一下,然后在win10的笔记本上安装coreutils5.0,忽然发现编译不了。编译到seq.c时就报错误了。我心想,还是把那些能编译出来的代码读一下,我不想把时间花在调试环境上。于是就打开,发现win10下的ubuntu很不好读代码,那个注释的字体太暗了。还是...原创 2019-12-17 09:31:22 · 173 阅读 · 0 评论 -
coreutils5.0 factor.c源码分析
coreutils5.0 factor.c源码分析今天接着想读读代码行数少的程序,wc *.c | sort -n| more这样一选择,想读读tee.c可,发现有-a选项,因为想测试一下。a.3中有内容122echo "hello" | ./tee -a发现tee.c居然没有编译成功。原来前面seq.c就编译不成功,报floor错误,我想应该是加编译选项-lm,可我把凡是用到g...原创 2019-12-16 11:15:45 · 167 阅读 · 0 评论 -
coreutils5.0 echo.c源码分析
coreutils5.0 echo.c源码分析随便翻翻,因为前几天学习了sort的用法,想读读sort.c的代码,一打开,完全看不懂,因为数据结构中,内部排序我懂了,但外部排序我不懂,看样子,作者好像是用到了外部排序。于是果断的略过。然后再找代码少的来读,打开echo.c的代码。代码是简单的,如果没有参数就只是把参数直接打印出来。但如果加选项,象./echo -e "a\tbb"是在...原创 2019-12-16 10:27:22 · 243 阅读 · 0 评论 -
coreutils5.0 uniq.c源码分析
coreutils5.0 uniq.c源码分析运动了一会儿,让身体动起来,这样更有利于思维活跃起来。接着打开uniq.c的源码。原来,总认为代码太长,今天,先不管长度,把代码从头到尾翻一次,找出其核心的算法,一旦能从宏观上理解处理算法,至于细节,就只能慢慢看了。毕竟C语言是一种相当细的语言。先弄个测试文件a.3内容如下1223334然后进行测试./uniq a.3并加上...原创 2019-12-16 09:51:19 · 240 阅读 · 1 评论 -
coreutils5.0 comm.c源码分析
coreutils5.0 comm.c源码分析很久没有读代码了,双12为改善环境,网购了两个乐哥支架,把显示器弄得更人性化,于是又开始读源码。这次,不太急了,因为我知道源码总是读不完的,而且读完源码后,再干什么呢?好象也还是读源码,那为什么不把心思放在当下,好好的享受一下读源码的乐趣呢。而且,我原来读源码时,总是要拷一些代码出来,后来,发现意义不大,我要从宏观上理解代码,而一下拷出代码,也是...原创 2019-12-16 08:59:13 · 168 阅读 · 0 评论 -
gawk1.01源码awk3.c分析
gawk1.01源码awk3.c分析我一边读源码,一边把自己的一些想法写出来。我的笔记本外接了一个显示器。init_vars() 这个过程,对FS,NF,RS,NF,FILENAME,OFS,ORS,OFMT几个变量进行初始化。 其过程很有意思, FS_node=spc_var("FS",make_string(" ",1)); spc_var("FS",make_string...原创 2019-11-07 10:31:58 · 275 阅读 · 0 评论 -
gawk1.01源码分析——各文件功能
gawk1.01源码分析——各文件功能今天就各个文件的基本功能谈下我的理解。一、awk.h头文件先列出数据结构typedef struct hashnode HASHNODE;struct hashnode { HASHNODE *next; char *name; int length; ...原创 2019-11-07 09:52:56 · 183 阅读 · 0 评论 -
gawk1.01源码大体结构分析
gawk1.01源码大体结构分析昨天找gawk的选项,因为我想分析其调试过程。我想根据其debug的过程,来分析程序。发现在awk1.c中有-D选项,试一下,结果出现一大堆:yang@DESKTOP-V9HS3B6:~/gawk101/gawk$ echo "ok" |./gawk '{print $0}'okyang@DESKTOP-V9HS3B6:~/gawk101/gawk$ ech...原创 2019-11-05 07:06:54 · 136 阅读 · 0 评论 -
编译成功的gawk1.01源码上传了
编译成功的gawk1.01源码上传了世界上最幸福的事,就是把代码编译成功了。然后一个屏幕对代码进行编辑,另一屏幕,进行测试,立即看到效果。太爽了。今天,我把gawk1.01编译成功,我开始进行一些简单的测试,如从内置函数开始。如何测试呢?yang@DESKTOP-V9HS3B6:~/gawk101/gawk$ ./gawk 'BEGIN {print 2+3}'5yang@DESKTOP...原创 2019-11-04 18:36:29 · 141 阅读 · 0 评论 -
gawk1.01源码安装 续
gawk1.01源码安装 续今天是个好天气,我昨天发现有冲突,看了会书,还是不得要领,今天把冲突进行研究,发现Option 1, statements -> <Rule 24, tokens 2 .. 5> statements -> <Rule 22, empty>Option 2, statements -> <Rule ...原创 2019-11-04 17:57:04 · 264 阅读 · 0 评论 -
gem algorithms010 读然后学着写
#在网上想找一些小程序进行练手,没找到,于是在书架上番,找到一本书《算法迷题》#就用这本书上的题目,进行练习。这是第一题,9宫格的问题。$arr=[]$book=[](0..10).each do |i| $book[i]=1endputs $arr.to_sputs $book.to_sdef is_ok() he=(1..9).to_a.inject(0) {|x,s...原创 2019-10-14 18:13:54 · 107 阅读 · 1 评论 -
gem algorithms010 读然后学着写
gem algorithms010 读然后学着写今天为了弄那个参赛国家接龙的程序,忽然想到,《程序设计实践》上讲了,齐次马尔科夫过程,我想,用ruby也写一次。因为当时,用C语言感觉相当麻烦,而用awk而无比优雅。可程序并不能解决我的问题。还得再想想。arr=[]File.open("english2.txt") do |fp| fp.each_line do |line|# ...原创 2019-10-14 17:38:10 · 102 阅读 · 0 评论 -
gem algorithms010 笔记本环境准备
gem algorithms010 笔记本环境准备今天讲讲我的笔记本环境,我发现要讲究舒适,一定要把环境配好。一、打开ruby的命令行,进入cmd,进入编码的子目录,再gvim进行编辑二、编辑好后,存盘,alt+tab切换到命令行界面,进行调试三、当编辑好后,把博客内容先写到一个文本中,打开这个文本的方法是:ctrl+alt+a 输入csdn.txt,直接打开四、编辑好了,打开csd...原创 2019-10-14 14:46:25 · 124 阅读 · 0 评论 -
gem algorithms010 读然后写
gem algorithms010 读然后写今天把昨天没弄完的题目继续写。我的理解是,进行参赛国家的接龙,第一次有32个选择,第二次,在选定一个国家后,找出其后继国家,直到选不出国家后继为止。因此,换了种写法,直接求出国家的后继,如下:$guojia=%w(Brazil Cameroon Chile Greece Uruguay Italy France Bosnia_and_Herzegov...原创 2019-10-14 14:32:13 · 114 阅读 · 0 评论 -
gem algorithms010 读然后学着写
gem algorithms010 读然后学着写今天遇到一个难题,进行接龙,《程序员的算法趣趣题》第14问我用队列没弄出来,进行深度优先搜索,程序如下,弄出来的也不对。我的理解的,先找一个单词,再根据单词从哈希表中查该单词末尾字母表示的链,再选第一个,再重复,如果找不到,就回到前一步,选下一个单词。看上去用深度优先搜索可弄出来。发现,算法不对。(今天买了轨迹球,真好玩。)$gu...原创 2019-10-13 20:14:29 · 115 阅读 · 0 评论 -
gem algorithms010 读然后学着写03
gem algorithms010 读然后学着写03#1000日元换成最多15种硬币(10,50,100,500)(0..100).each do |i| (0..20).each do |j| (0..10).each do |k| (0..2).each do |m| if i*10+j*50+k*100+m*500==1000 and ...原创 2019-10-13 11:17:19 · 161 阅读 · 1 评论 -
gem algorityms010读源码再学着写
gem algorityms010读源码再学着写Q03翻牌这道题,开始没有头绪,后来想先随便开始吧,结果居然做出来了,真是神奇。Max=100pai=(1..Max).to_aputs pai.to_spai[0,0]=0puts pai.to_sidx=2while true old_str=pai.to_s tmp_idx=idx while(tmp_id...原创 2019-10-13 09:49:53 · 120 阅读 · 0 评论 -
gem algorithms010读然后写
gem algorithms010读然后写早上读了新书《掌控习惯》后,书上讲,要养成习惯,关键是做某事的数量,不在于质量,数量上去了,总有些满足质量标准的。为此,我的博客中一定要数量多,多写,然后学着写好。拿《程序员的算法趣题》上面的练习题进行练。一、找回文数任务是找出十进制,2进制,8进制都是回文数的数。num=11cnt=0while true if num.to_s =...原创 2019-10-13 07:59:21 · 133 阅读 · 0 评论 -
gem algorithms010 读源码后开始写
gem algorithms010 读源码后开始写今天接着想把稀疏矩阵的几个算法弄一下,先弄转置,我不知如何在ruby中存储结构体,于是用struct,写得很差,总算弄出一个。n=Struct.new("JUCHEN",:mu,:nu,:tu,:arr)data=[[1,2,12],[1,3,9],[3,1,-3],[3,6,14], [4,3,24],[5,2,18]...原创 2019-10-12 07:27:28 · 125 阅读 · 0 评论