首页
归档
友情链接
关于
Search
1
在wsl2中安装archlinux
80 阅读
2
nvim番外之将配置的插件管理器更新为lazy
58 阅读
3
2018总结与2019规划
54 阅读
4
PDF标准详解(五)——图形状态
33 阅读
5
为 MariaDB 配置远程访问权限
30 阅读
心灵鸡汤
软件与环境配置
博客搭建
从0开始配置vim
Vim 从嫌弃到依赖
archlinux
Emacs
MySQL
Git与Github
AndroidStudio
cmake
读书笔记
菜谱
编程
PDF 标准
从0自制解释器
qt
C/C++语言
Windows 编程
Python
Java
算法与数据结构
PE结构
登录
Search
标签搜索
c++
c
学习笔记
windows
文本操作术
编辑器
NeoVim
Vim
win32
VimScript
Java
emacs
linux
文本编辑器
elisp
反汇编
OLEDB
数据库编程
数据结构
内核编程
Masimaro
累计撰写
308
篇文章
累计收到
27
条评论
首页
栏目
心灵鸡汤
软件与环境配置
博客搭建
从0开始配置vim
Vim 从嫌弃到依赖
archlinux
Emacs
MySQL
Git与Github
AndroidStudio
cmake
读书笔记
菜谱
编程
PDF 标准
从0自制解释器
qt
C/C++语言
Windows 编程
Python
Java
算法与数据结构
PE结构
页面
归档
友情链接
关于
搜索到
13
篇与
的结果
2018-01-07
《疯狂的程序员》读后感
之前我在新年计划中说,争取新加一点读书笔记的内容,为博客赚点流量,所以这是我的第一篇读书笔记,为什么选这本书呢?可以说这本书给我详细介绍了程序员的工作,世界观,使我对计算机编程有了浓厚的兴趣,同时它也给我指明了后面努力的方向。初次读这本书是在我大二那年,由一个同学推荐,后来在毕业之后我在万能的某宝上找到了它的纸质版,又读了几遍,每次读都有很大的感触,所以我决定拿他作为我的第一篇读书笔记。感悟初次读这本书是我的一个大学同学推荐的,当时我正在大二,那是个时候我感觉到有一丝迷茫,有一丝压力,压力主要在将来就业上,当时我读的不是什么名牌大学,没有什么特别突出的能力,专业课也听得似懂非懂,那个时候总感觉以现在的状态坑定要失业。虽说想要学习点东西,不知道从何学起。那个时候学习的东西太多了,C/C++、Java、HTML、ASP.NET等等,很多东西都是浅尝辄止,一直感觉很无力,。我与几个朋友一起交流的时候,他给我说:“我给你推荐一本书吧,叫《疯狂的程序员》网上有电子版的,这本书是作者根据自身经历写,讲述了主人公从刚进入大学到最后工作再到后期创业的整个故事。里面详细介绍了主角的整个学习过程,主人公从大学一直学习汇编,然后到毕业实习、工作,逐渐过渡到VC++的种种,至此我似乎有了一丝学习的脉络,当时我给自己定下的目标是利用一个寒假好好补一下之前落下的汇编,然后再利用一个学期学习C/C++,当我把汇编学习完了之后我发现C语言里面的指针,数组,结构体,共用体什么的都不再那么神秘,从汇编角度上看只不过是内存的不同摆放方式,采用不同的寻址方式罢了,函数调用,各种传参等等就没有什么难度了,学完汇编再看C语言的种种语法就觉得是那么顺理成章。后来两年中,我基本上是按照这本书中主人公的学习脉络来的,先从汇编到Win32 汇编再到VC++,MFC编程,依照这个顺序,在自学的过程中再也没有遇到过之前那种离了书本就什么都不会的经历,这也给我后面学习带来很大的动力。以前我一直把程序员当做一个理工科的内容,一直认为它只是类似于水利工程师,建筑工程师之类的职业,但是我从这本书中读到一个观点“程序员的双手是魔术师的双手,他将枯燥的代码编程优美的可执行的软件”。原来程序员可以是一个艺术家,是类似于画家的,是可以写出优美的软件,从书中的字里行间,我读到作者作为一个程序员的骄傲,作者那种学习新技术,努力写出优美软件的那种执着。这些都使我对程序员的世界产生了浓厚的兴趣,根据这本书上的相关内容,我注册了一个CSDN,一个看雪的账号,经常在各大程序员论坛潜水,努力希望融入这个圈子,学习程序员文化。可以说这本书带给我关于程序员的启蒙教育,以前一直把程序员当做一个赚钱的行业,当时从那个时候起,我是真正喜欢上了这个职业,喜欢上这种文化。名言警句书中也有许多有意思的想法,时不时爆出一些名言警句什么的,下面我列举出我比较喜欢的一些句子:要么做第一个,要么做最好的一个。什么是鸡肋课?就是每个人都在自己课表的这门课旁边标注一个“可旷”或者“选修”。什么程序优化啊,都抵不上有钱,有钱就是最好的优化。说什么“效率就是金钱”,其实“金钱就是效率”。中国人和外国人很大不同就在于外国人总想热衷于第一时间把自己的新发现公布出来以此向广大人民群众展示自己的水平。中国人往往喜欢把自己的新发现阴在心里,自己偷偷垄断享用。唯恐被第二个人知道。公布出去,相关部门肯定马上解决。所谓好的病毒就是要:“持续时间特别长,波及范围特别广,破坏力特别大。”能进别人系统偷东西,那就是小偷;能进别人系统又不偷东西,那就是黑客。当你不是黑客的时候,总说:“我是个黑客”。当你真正成为黑客的时候,你往往会说:“我不是黑客”程序员是值得尊敬的,程序员的双手是魔术师的双手,他们把枯燥无味的代码变成了丰富多彩的软件……一个人静静的坐在电脑前写大卖的感觉,那是什么感觉?那就是武林高手闭关修炼的感觉。一本好书,就像高级武功秘籍一样,哪怕只从里面领悟个一招半式,功力提升起来都是惊人的,眉超风学的那半生不熟的九阴真经就是证明。所以练武功和写程序一样,不在乎你修炼了几十年还是几百年,也不在乎你少林武当娥眉拜了多少门派,关键是你有没有把一门武艺炼到出神入化的境界。学武艺,最忌讳总想着去追求大而全,你要明白,其实只需要“打狗棍法”这么一招,就足够你掌舵丐帮,受用终生。-天下武功出少林,天下语言出汇编提升功力大低有两种方法,一是自己不断写代码,不断完善,不断把自己的代码写好,二是看牛人的代码。牛人的代码实在太高深了,一句看似平凡的语句,也许背后都蕴含着惊天地泣鬼神的智慧。现在你看不出什么端倪,等十年八年之后,你猛然醒悟:啊,原来大牛的代码竟是如此博大精深!对男人来说钱什么都不是,但是你没钱,你就失去了让她了解你的机会。对女人来说漂亮什么都不是,但是你不漂亮,你就失去了让他了解你的机会。人不怕被识破也不怕丢脸,怕就怕被当场识破和当众丢脸。。力的作用是相互的,你打别人有多疼,自己的手就有多疼。与其大家都疼,还不如最开始就不要下手打。每个人都期盼着便宜能光顾到自己,就算没有正儿八经地想,多多少少也偷偷的想过,但是有天便宜真的来了,可要小心了。写程序并不是一辈子都只是写代码。IT这一行是相当广博的,不管你是男的还是女的,不管你技术是初级、中级还是高级,你都能在这行中找到你自己合适的位置。如果你真的用心了,它带给你的会是一生的回报。男人的工资,和女人的年龄差不多。没钱的时候,最忌讳别人追问自己的工资待遇。可男人的工资,又和女人的年龄不一样。女人要是年轻,别人问她年龄,她自然敢大方地回答。男人的工资呢?要是高了,还是怕别人追问。“疯狂的程序员”绝对不是靠狂妄和拼命的程序员,而是能够脚踏实地、持续努力的程序员。一个程序员真正做到了这两点,技术上去之后,唯一能够限制他的只有想像力,到那个时候,才算“疯狂的程序员”,这种程序员啊,才能令竞争对手无比恐惧。技术其实还是我们最需要的东西,以前我们没有过硬的技术,所以疯狂地追求它。现在呢?有了一点技术,便觉得技术不那么重要。如果这样放任下去,等到我们失去技术的那一天,一定会后悔莫及的!最后说点题外话从当时懵懂的菜鸟到现在入行块两年的老菜鸟,目前仍然在学习Windows编程方面的东西,很多人都说现在PC端萎缩,学习PC端的编程没有出路,但是我自己不这么想,编程这个东西与具体的平台无关,与语言无关,编程靠的永远都是基础知识,数学和算法才是王道。但是算法和数学就只看理论是没有办法入门的,必须要实践,而实践的最好方法就是深入一个平台,一门语言不停的学习某个平台某一个语言的相关内容。在学习的途中会涉及到许多算法,操作系统,网络,数据库等等基础部分的知识,有的还可能会涉及到具体的硬件知识。比如Windows平台编程中的进程、线程、内存管理,想要学通这些没有操作系统的相关知识是不可能的,学习网络编程的时候需要网络知识,而数据库则需要数据库相关的知识,而且在Windows中采用的许多框架许多机制一般在其他平台也适用,比如Windows上的回调、消息机制、映射等等相关内容在其他平台其他语言基本上都有,现代操作系统,编程语言都是想通的,基本上是一通百通。因此在学习的过程中不要太纠结于平台和语言。随便选择一个平台,努力深入进去,在编程的同时学习一下基础理论的内容。不要被目前很火的大数据、人工智能云计算,等等东西蒙蔽了头脑,它们说到底也是对数学和算法在具体环境中的应用而已,只要有扎实的基础,想要跳到对应行业,只需要了解对应语言的语法,相应的接口而已。归结起来就一句话:数学和算法是王道。以上都是一个IT菜鸟的肤浅的理解而已,同意就点个赞,不同意也不要喷!!!!
2018年01月07日
4 阅读
0 评论
0 点赞
2018-01-01
2017总结与2018规划
时间如白驹过隙,回想起过去的2017年仿佛就在昨天,元旦做了几天咸鱼,没有能够及时更新自己的年终总结,在此补上回望2017回望2017,在4月份我换了一份工作,之前的工作实在太闲了,我感觉这样不利于自己的进步,于是在3月份的时候正式提出离职,在4月份进入新公司。工作感悟新公司主要是做Web安全的,而我主要负责一款扫描器插件的开发于扫描器本身的维护工作。这份工作经常给我带来惊喜,就比如说sql注入,正常人的思维是输入一个值,然后在数据库中查询,但是sql注入就不是,它会在输入的查询条件中带上sql语句,这与传统的方式不同,它给我一种耳目一新的感觉。我第一次学习到sql注入的原理时是那样的兴奋,感慨于它的不同寻常。同时也对安全从业者产生了一定的崇拜,他们一定是一些思维活跃的人,是一群打破常规的人,这些都是我决定从事安全行业,努力融入安全圈内。这一年收获很多,在这一年中学习了一些常见漏洞的原理,攻击与防御的相关知识,通过阅读公司扫描器的源代码,学习了一些阅读源代码的方法,虽说还没有总结出一整套的方法论,但是也有一些思路。并根据这些方法我找到对应的代码并进行了一些修改。另外,在这一年中学会了一些脚本语言,比如Python、JavaScript。我自己感觉虽然扫描器是使用VC++语言编写的,但是我在这一年中本身使用最多的反而是Python。在刚入职时使用Python开发了扫描器对于ajax部分的支持,使其能够正常爬取到使用JavaScript动态生成的脚本。后来又使用Python开发了大量的漏洞扫描插件。现在又在使用Python开发一款网站监控软件。可以说这一年如果不是自己一直在自学VC的内容,可能现在C的东西都忘干净了^_^由于需要与Web程序打交道,所以一些理论方面的内容必定会涉及到,这一年主要详细了解了http协议,但是主要是在数据包层面上的,比如http的协议头、协议体等等,对于网络底层的东西仍然不是太明白,这也是目前的一个短板。后来为了方便,使用Python发送网络包的时候主要使用的requests库。知道了使用requests库定制协议头、判断响应包等等操作。但是反而对原生的urllib库不太了解。总结这一年我感觉最有用处的项目就是当时我使用Python + webkit写的一个web2.0的爬虫以及现在的一个web监控系统。web监控目前没有完成,所以暂时不提它,这里主要说说web2.0爬虫项目web2.0爬虫参考书籍《白帽子将web扫描》一书,基本代码都是按照书中的思路来的。这个项目使我详细了解了http协议,正则表达式、xpath表达式等等。为了使用webkit,项目主体是一个qt的任务调度部分负责调度由扫描器传过来的需要解析的url,每当有一个url过来的时候,都会触发一个自定义的事件,然后由qt调用对应的槽函数。其实我原本打算使用Python的线程池,来进行调度,但是由于使用的是webkit的Python封装——ghost库,这个库有一个好处就是能够捕捉到所有的网络请求,这样我可以很方便的得到ajax异步加载时请求的URL,从而得到一些额外的url,当时ghost库使用的是全局的app类对象,qt又不允许跨线程访问对象,所以没办法取消了多线程。后来经过我的测试在性能上虽然有一些损失但是损失在能接受的范围内。在解析url时候主要解析下面几种:在一些常规标签中的url,对于这种采用的是常规的xpath表达式出现在文本内容中的链接,或者JavaScript脚本中的链接,这种采用的是正则表达式需要进行异步请求的链接,这种链接主要出现在一些JavaScript注册的事件中。这种链接主要使用ghost库,获取所有网络请求,然后解析其中的url还有就是一些需要进行渲染之后才能出现的链接,对于这种链接,采用的是ghost库中的webkit进行渲染然后解析生成的HTML其余事项我在国庆期间去了一趟深圳,见了一下之前的大学同学,虽然很遗憾,不少人都回去了,但是我见到了当年的室友,以及领我上安全这条路的大牛同学。在于大牛同学的一些交谈中,我发现自己进步的没有想象中那么大,这些都激励着我继续努力不足2017虽然有进步,但是也有许多的不足:生活过于懒散:最大的毛病在于生活过于懒散,没有规律。经常周五熬夜做自己感兴趣的事,一旦这件事做完了或者碰到瓶颈没法解决的时候,后面几天就成了一无是处的咸鱼。手机占据了大量的业余时间,在这一年中,公司很多时候没有什么大事,加班比较少,我虽然回来的早,但是大量的时间用在玩手机上,根据我自己的观察,差不多从7点到8点半的时间很多时候都是在玩手机。而且有时候在学习的时候集中不了精力,时不时会看看手机,这样极大的影响了注意力。缺少锻炼:要说这一年什么收获最大,那应该是我身上的30斤肥肉T_T,从年初的100多斤涨到现在快130斤,在加上自己经常久坐,导致现在有时候稍微活动一下就浑身不舒服,浑身酸痛。18年需要改变这一现状读书太少:这一条与玩手机太多有很大的关系,长时间玩手机,使读书的时间压缩了,有时候200多页的书需要看个把月,总体算下来,今年一年加上在kindle上的书共有6本,明年可能要花更多时间在读书上展望2018生活习惯针对上述出现的问题2018年决定做如下改变:多锻炼:目前计划在3月份房子到期找到新地方后就近找一个健身房办张卡,经常去锻炼身体,并且强迫自己每个星期必须出去走走按时休息:每天按时休息不再分周末和平时,到点了放下手机或者手中的事睡觉,周末白天尽量在8点前起来,保证每天早上出去吃个早餐尝试自己做饭,少点外卖学习计划详细学习网络原理系统学习渗透测试,一些常见漏洞的攻击与防御学习一些逆向的知识学习一些Windows驱动编程的东西看完之前的一套VC高级编程的视频,并针对每个知识点编写相应的代码多写博客,做到每周一篇技术博客,尝试写一些读书笔记、鸡汤、项目总结类的文章将CSDN博客中之前写的VC反汇编系列、VC高级编程系列的内容慢慢转到自己在GitHub的博客上我的博客合理利用周末,周末做到每天玩手机时间不超过2小时,平时不超过半小时2018书单2018年计划读如下书目:1.《白帽子讲Web安全》2.《TCP\IP协议》3.《数学之美》4.《人类简史》5.《未来简史》6.《腾讯传》7.《古龙全集》(利用坐地铁的时间)8.《球状闪电》 最后祝我与所有朋友2018越来越好
2018年01月01日
5 阅读
0 评论
0 点赞
2016-10-23
我的大学回忆录
我是今年刚从学校毕业的一名软件工程专业的学生,过去的美好时光一直在眼前浮现,我感觉自己的大学生活很美好,生活上有好室友好同学,在以后的规划上又有一位好的人生导师,虽然现在他们在全国各地,有可能这辈子再也见不到他们,但是过去跟他们相处的很愉快,就像一句话说的:不在乎天长地久,只在乎曾今拥有((∩_∩)这句话好像用在这有点不合适,但是我感觉最符合我现在的感觉吧,原谅我读书少)。之前一直想找个机会把在大学的时光记录一下,以便自己以后有个东西好回忆,然后给以后的朋友一个参考吧,但是由于一直在学习或者在忙其他事(其实就是懒)所以拖到现在,不过现在也好,工作了一段时间,我现在又有的新的感悟,现在就把自己的学习经历和现在的感悟一起发出来。同时也把自己当初在学习的时候看的书提一下,算是给后面入行的朋友指一条路。大一——懵懵懂懂在高考那年有点发挥失常,没有考到理想的分数,然后被一所2本学校的软件工程专业录取了,从此开始了4年的大学生活,其实开始的时候我并没有打算学软件工程,当时听家里人的建议主要是报的土木工程,但是好像我这个学校那年新开了一个软件工程专业,然后就这样被录取了。那个时候刚来大学的时候对一切都很好奇,早早的将学校逛了个遍,然后就是新生的军训,入学教育,头一个月就这样平平淡淡的过去了。那个时候我对计算机和相关的技术是没有什么概念的,之前接触计算机是在中学的信息技术课,那个时候的信息技术课对于我们而言就是能上网。所以在学校我对这个专业要学的东西一无所知。我记得那个时候学校开了一门叫做计算机导论的课,将计算机中涉及到的基本上简单介绍了一遍,但是我感觉基本上没什么用,那个时候讲的很多名词基本上都不记得。只知道当初坐我旁边的一个跟我侃各种硬件软件把我听的一愣一愣的。那个时候为学校也有许多社团,但是我一没特长二不知道自己的兴趣在哪,所以当初就报了一个跟专业相关的计算机协会,在这里面我差不多学会了装机以及安装系统,那个时候就社团组织了几次技术讲座,由高年级的学长讲课,然后有几次跟随社团成员一块在社区免费维修电脑,然后在里面被参加了一个装机比赛,苦练了一段时间,拿到了一个预选赛的第二,结果在决赛的时候掉链子了。那个时候还有一门课是C语言,这个是我第一次接触编程语言,那个时候痛苦并快乐着,辛辛苦苦改语法错误(那个时候程序都比较短,没有什么逻辑错误),然后看着它正确的结果,心里的成就感油然而生啊,但是后面接了网线之后一切都变了,为了腾出时间上网,作业没有以前那么认真,而且空余时间也不写程序了,所以说有的学校规定大一不允许带电脑是有道理的,这个时候是打基础的时候,有电脑有网,都没心情学习,基础没打好后面的几年就玩完了。我基本上就是处于这种情况,这个在我大二的时候体现的最为明显。下半年就开了数据结构这门课,很多学生都吐槽数据结构有多难,经过我的真实经历,我发现它是真的难,那个时候指针都没搞明白,而数据结构的算法基本上都是与指针有关,所以那个时候基本上就是想听也听不懂,给的例子代码基本上是一脸懵逼,那个时候只是知道一些基本的概念,大概知道各种数据结构的存储方式,但是算法是写不出来的。然后就这样结束了大一的时光。另外在插一句,网上有段子说亲戚朋友总以为学计算机的就要会修电脑,其实我特别理解这种误解,因为我开始也以为学计算机的基本技能就是要会修电脑,所以那个时候我对一些修电脑的技术特别上心,总是去图书馆借关于维修方面的书,我记得当初看过一本讲怎么挑选硬件,怎么组装那些硬件的书,然后又看了一本关于windows的安装与使用技巧的书,现在想想那个时候真的是什么都不懂,有劲使错了方向。大二——事倍功半我的大二基本上是白费的一年,到大二快结束的时候基本上几门主流语言都陆陆续续学了,那个时候基本的流程是上半年学习C++,下半年学习JAVA,那个时候第一次接触了面向对象,知道了面向对象的语言,那个时候在我的心里以后要找工作基本上只有C++和JAVA,所以需要在这两门语言中选一门学习,当下半年开了JAVA课,学了一段时间的Java后我果断选择了C++,那个时候主要的考虑有3点,第一点是我很不习惯Java那种大括号的格式,每次碰到那种格式,我总是习惯把它放下来,另起一行;第二点是当时我感觉Java很多东西都是用别人的库,感觉没有那种自由,没有太多的发挥空间,而我自己不太想记那些类和类中的方法,那个时候我一直认为C++很酷,要什么都可以自己写,现在想想自己当时真的很幼稚,如果什么都自己写,那现在开发一个应用程序也太慢了;第三点是java强迫你用面向对象,而且那个时候对比C++的hello world 和Java的hello world 我总感觉没有C++的简洁;第四点就是我当时对Visual C++环境太熟悉了,调试、断点、查看临时变量啥的都会,面对开始用命令行编译后来放到我还不会调试的Ecilpse上面我是拒绝的,那段时间主要也是自己懒,不想学新的环境;所以我决定自己以后要往C++上面发展。路选好了,剩下的自然就是学了,那个时候我们还开了一门数据库的课,当时做课程设计的时候需要写一个界面,然后那个时候我从百度上知道了MFC这个东西,那个时候自己比较抠,但是也花钱买了一本孙鑫老师的《VC++深入详解》那个时候就拖了一个对话框然后在网上找了一些代码完成了,而在下半年决定学C++后我下决心要啃完这本书,那个时候书上讲的MFC各个资源的使用我完全蒙了,这个时候我才发现我好多基本的语法都没过关,这个时候我抱着打基础的目的,在许多论坛上得到了很多免费的视频,很多时候我看了一点感觉我好像会了,接着去学一些高级的技术,但是基本上是又卡住了,这个时候再折回头看其他视频的基础部分,那个时候就在这循环,我现在想想那个时候的自己,感觉有点不可思议,为什么不能耐下心来把一套视频完整的看完,而好多看了一半又去找其他的视频,而我的大二就是在这样的一个死循环上面突破不了,那个时候虽说表面上我是在学习,但是我感觉自己并没有学到什么东西,时间都浪费了,而自己也越来越迷茫了,到底该不该走这条路,自己是不是不适合学编程。现在我才体会到网络有时候是个好东西,利用网络确实能给我们学习带来很多东西,但是网络上的学习资料太多,而自己方向不明确,有的时候东西太多会把自己带跑偏了。有的时候社会上都说大学生能力差,大学生在学校怎么堕落,但是我现在感觉到很多时候并不是我们不愿意学,而是缺少高中时候的那种引导,高中的时候一门心思想考大学,考大学需要什么就学什么,而且有老师专门来为你制定学习计划,帮你检查学习成功,这个反馈机制比较及时,这个时候你会感觉到自己距离目标有多少差距,路是不是正确的,会根据这个反馈及时调整,而到大学完全不一样,首先没有了目标,大学即使分了专业,那个专业的就业范围也比较广,而且很多人还从事与所学专业无关的事,没有了目标就不知道往哪个方向努力;另外一点就是即使有了方向,也没有及时的反馈给你,告诉你达成这个目标需要哪些技术,你已经掌握了哪些,还需要哪些,掌握的是不是掌握的很好,需不需要再加强,那个时候我感觉我自己就是不知道学哪些东西,我把关于C++的东西几乎都找到了,每个都想学,但是结果就是什么都没学好,另外就是自己本来基础不好,但是我总感觉知道了那些什么封装,继承,多态我好像就把C++的基础都学会了。没了目标,没有与目标相关的反馈机制,这样再努力也是白搭,这个是我真实的体会。最近我跟一些同学聚会聊天的时候谈论到大学的时候,我跟他们说我的大二是废掉的一年,他们都笑笑说:“你是学霸,经常看到你在那看视频学习,而我们在打游戏,如果你的大二是废掉的,那我们的算什么”,我很认真的跟他们说,那个时候我虽然在看视频,但是真真没有学到多少东西,其实也跟你们打游戏差不多。这个不是谦虚,这个是真实的状态。大三——突飞猛进总结我的整个大学生活,我感觉大三是最有意义的,最累的也是这个大三。在大三我有了志同道合的朋友,有了很好的老师引导,成长当然也是最快的。在大三,学校为了就业率好看,基本上引进了三个培训班,一个是学校老师自己带的C++班,一个是外面的Java,还有一个是安卓的(后来的同学都说那个安卓的是个坑,这是后话)。一般到了大三学生不是报了考研辅导班就是报了这种培训班。当初这个班学费是5500,这个时候我遇到了我的一位人生导师——我们培训班的老师,我们称他老吴,老吴是我们学校关于C/C++最权威的人,我在大二的时候知道有这么一个班,这个班是面向大二大三招生的,那个时候据说只收基础好的学生,我当时怂了一波没有去报名,我有的时候在想,如果当时我在大二的时候报名学下C++然后大三学学操作系统,网络,并结合他们写点程序啥的是不是现在就走向人生巅峰了,但是没有如果。整个大三加上大四的一直到11月份,我都是在老吴的手下学习,那个时候他带着我们从0开始,每周的周一到周五晚上两个小时,周六一天。那个时候基本上为了完成作业天天晚上写代码写到12点以后,而且那个时候我开了这个博客,有的时候也在更新自己的博客,所以基本上学到很晚,但是这种感觉很棒,感觉自己每天都在进步,每天都掌握了新的内容,从基本的语句到函数到指针,再到复杂的函数实现原理,变量的作用域,函数指针,指针函数,数组指针,指针数据,函数传参,不定参数等等,那个时候我把之前自己理解不了的,或者比较模糊的东西基本上都弄清楚了,我感觉自己现在的状态就想某些修真小说里面说的,吐出一口浊气,然后整个眼睛都是雪亮的,没有一丝阴影。在上半年我把整个C的语法部分都学完了,那年的寒假特别长,那个时候有两个月的寒假,所以放假前老吴提示我们回去好好看看汇编,学习汇编对于掌握C语言很有帮助,并且说元旦来了会给汇编的资料,而那个时候我归家心切,找我的另一位人生导师——在这我就称他为林同学,我找林同学要了本关于汇编的书——王爽老师的《汇编语言》,我不知道当初放假前老吴会给什么资料,他会要求我们学到什么程度,但是这个寒假我乖乖把那本书从头到尾看了一遍,把书上的每一个例子都敲了一遍,然后一个个的进行调试,有的时候我经常想如果当初我把老吴的资料拿回去,根据他的要求学(我总是这样,很多时候一遍老师说不需要特别关心的地方我都不会管,不知道这个是不是一个好习惯),会不会有现在的基础(抱歉我总是喜欢假设如果我不这么做会怎样,可能这个就像有的星座的文章上面讲的,双鱼座天生就拿不定主意喜欢胡思乱想吧,有的时候我能脑补好久)。关于这本书对我的影响下面呢还会再说。下半年主要是学习windows编程,从基本的win32窗口程序开始,一步步学习怎么写带主窗口的程序,消息循环,窗口类,窗口,窗口类的回调函数,GDI,基于对话框的程序等等关于界面方面的东西,并带着我们实现了一个仿照MFC的带有消息映射宏的一个纯C的界面库,这个库没有什么特别的牛的功能,就是简单的把窗口的创建,显式以及消息处理函数用宏的方式写了一个映射,这些东西基本上把我之前不了解的MFC的消息映射基本上搞清楚了。接着就是windows上提供的一些与操作系统相关的操作,比如线程,进程的创建,HOOK,DLL,数据库编程,socket编程以及windows上的5大网络模型,通过这些东西我基本上把之前学的操作系统,网络原理,数据库等东西又复习的一遍。之前我一直不理解这些计算机的理论是怎么运用到实践中,通过这些学习,我知道了这些理论是如何被写成接口并给程序调用。暑假的时候我们是没有回家而是接着在培训班里面学习,这个阶段主要是学习C++一些语法,之前在学习C的时候老吴带着我们用C写了一个通用链表,这个链表用统一的代码来实现链表的基本算法,比如遍历,插入,删除,查找,等等,但是对于具体节点的读写操作而是提供了一组统一的函数接口,这些读写函数由具体的数据结构提供者来提供,节点的头四个字节是这个函数数组的首地址,通过强制转化的方式来组成链表,而在需要时通过这头四个字节来调用读写函数,当时他跟我们说的是理解了这些,C++就没有什么问题,当时没太注意,在学习C++的时候我才体会到当时老吴的用心良苦,确实当初写的这些就是模拟C++的虚函数表,而那头四个字节就是C++里边的虚函数指针啊,通过之前的铺垫,我很容易就理解了C++中的多态。另外根据这些特性结合当时学的Windows编程,老吴又带着我们写了一个模仿MFC的库,这次用C++实现,基本上实现了MFC中几大要素:动态类型识别,消息映射等等。至此对于MFC的认识又进了一步。大四——离别前夕大四按照学校的惯例,差不多在每年的11月份就可以离校了,离校前似乎其他同学的心情都挺愉快的,培训班的课基本上都结束了,现在我跟同学差不多就是见一次少一次了,我当时的心情有些沉重,想想一起相处四年的兄弟们就要分离了,有的可能一辈子再也见不到了,总有一丝伤感,心里总是不愿意分离,这段时间总是胡思乱想,不知道以后找工作是否顺利,那些我前面出去的同学不知道怎么样了,总之那段时间我基本上放弃了学习,有时间就找还在学校的同学打打游戏,聊聊天,一起吃个饭啥的,我是本着能多说一句话就多说一句,能多在一起待会就多待会。晚上躺在床上我总是回忆起当初在一起的点点滴滴,思考未来会怎么样,总之那段时间我内心是复杂的,既担心以后该怎么混,也不想就这样离开,那段时间我把回家的时间往后一推再推,但不管怎么往后推,离别的时刻总会来临。说说我当初看过一些书下面我把我之前看过的书从头到尾梳理一遍,毕竟读书也是大学生活的一部分。其实我挺喜欢读书的,平时没有别的爱好,也没啥特长,从小学开始我基本上是靠着书打发时间,从小学的漫画,到中学时候的小说,再到大学时候在图书馆借各种各样的书。《黑客与画家》我非常喜欢这本书,它告诉了我程序员的伟大之处,既然以后是信息化时代,那么做程序员的前景应该还不错。那本书里面将程序员和画家进行类比,里面说好的程序是艺术品而好的程序员是艺术家,我感觉说的挺有道理,所以现在我自认为是一个手工艺人(虽说自己做出来的就是粗制滥造的东西),有一次我的一位朋友跟我说:“你的手又细又长,跟女孩子的手一样”,我跟他开玩笑说,我们程序员是靠手吃饭的是手艺人,手不好看能行吗。后来我发现我的同学或者同事基本上都跟我差不多,都有一双不错的手,不知道是不是真的证明我们程序员是靠手吃饭的(手动滑稽)《疯狂的程序员》这本书主要记录了一个程序员从大学到工作的日子,算是作者的回忆录,之前我百度过这本书的作者,好像说是因为写DNF的外挂被抓了,也不知道是不是真的。我非常喜欢这本书,当时我看的是电子版,后来毕业之后我在淘宝上找到了纸质版,并把它买了下来。书中的主人公绝影是一个对技术比较狂热的程序员,经常为了写程序熬夜,里面没有多好深奥的技术,只有一些简单朴实的话语,同时包含了作者对现实世界的理解,我觉得他里面写的关于资本家对员工的压迫和当前相亲时男方看中女生的相貌,女生着重关注男方的资产这块的分析很有意思,在一定程度上代表了作者对这个世界的思考。但是真正让我着迷的还是里面经常出现的,为了一个技术难题,绝影和BOOS Liu两个通宵加班的场景,每次看到这部分我总是热血沸腾,恨不得给还躺在床上的自己一巴掌(滑稽脸),或许是这本书奠定了我现在的想法——要做就做那些难度大的,没人愿意做的;所以现在我基本上是一条路走到黑,坚持自己的底层之路。另外这本书的副标题很有意思叫程序员版的奋斗,里面确实讲述了一个程序员的奋斗历史。《汇编语言》这本书和下面我要说的一本书对我影响最大,是我为数不多的认真看了两遍以上的技术书籍,这本书最大的价值是前面讲的内存、寄存器、CPU的相关知识,以及后面的寻址方式,函数调用等等,而至于中断宏汇编什么的就不那么重要了,前面的都掌握了之后,可以看看后面的几个深入讨论的部分,那部分是关于C与汇编的,我觉得那些是这本书的重点,当初在看这本书的时候是下足了功夫,我把书上的每个例子都敲进电脑,编译运行,调试。给我影响最深的是3个程序,一个是关于读写一个保存了学生数据的结构体数组的,这个程序用一个寄存器保存数组的首地址,每个数组成员的地址用另外一个寄存器,另外还需要计算每个成员在结构体中的偏移地址,这个例子解决了,我基本上对C中的数组和结构体的寻址有了很深的理解。另外一个是关于函数调用的,当时我写的这个程序最大的问题是少出栈了一个寄存器,结果导致在调用ret时候返回到了错误的地址,结果程序崩溃了,通过这个例子,我终于理解到了程序中引入ebp寄存器的作用,不管你是不是出栈错了,只要运行mov esp, ebp后再直接返回总能返回正确的地址,总之汇编是学习C语言迈步过去的一道坎《VC++反汇编与逆向技术解密》这本是钱松林老师的一本书,在看雪论坛上还有专门的板块讨论它,我当时跟朋友聊天的时候戏称为小黄书,这本小黄书通过汇编的方式详细介绍了VC++语言各个特性具体的实现细节,通过这本书可以很好的理解C/C++,这本书配合之前说的汇编可以很好的理解C/C++。如果不想从事逆向分析,那主要看从第二章到最后的结构化异常处理就好(我是只看了这些)至于后面的例子,不从事这方面可以不用管它其他好书后面要说的书有不少,而且很多我只是简单看了一遍,理解并不深厚,不向上面的那些,有自己的理解,或者夹杂了一些自己有趣的回忆,所以就简单的说说。《windows程序设计》与《win32汇编语言程序设计》我觉得这两本书很详细的讲解了windows应用层的开发,但是需要互相补充,Win32汇编这本书更偏向于底层,比如后面讲的SEH,和PE文件结构,另外这本书前面讲的32位的保护模式,函数的调用约定都很经典,可以看看,然后结合汇编码分析一下,可以更好的理解windows上的开发。我在读Win32汇编这本书的时候就觉得微软的宏汇编真的做的很出色,在使用时就好像是在用C语言,特别是在函数调用这块,既不需要我们考虑参数的压栈和出栈,也不需要进行栈平衡,另外如果你的汇编基础比较好可以考虑将这本书里面的汇编代码改写为C代码。《windows核心编程》这本书是进行windows高级开发必读的经典,这个没什么好说的《windows网络编程》我之前一直以为这本书是老外写得,最后发现原来是国人写的,搞的我之前以为自己买的是盗版,这本书详细介绍了网络方面的编程,其实不光是网络,比如串口通信,管道通信。《现代操作系统》这本书可以结合之前的那本核心编程一起看,主要看看操作系统提供的功能在windows上怎么样实现的,以达到理论结合实际的效果。对于理解这两本书都有好处《VC++深入详解》之前提到过的书,我之前看不懂这本书,并不是书的问题,而是我自己基础的问题,MFC库文件微软都给了,结合之前说的《windows程序设计》关于界面的知识,这本书就不再是问题。《TCP/IP详解》这个主要讲的网络原理的,一般是有两本,卷一和卷二,这个结合之前的windows网络编程一起,主要也是达到理论结合实践的目的。还有一些内核的书比如《寒江独钓 Windows 安全编程》,这个是我目前在研究的书,我自己觉得还不错,可以看看。至于Linux方面的,我没有怎么接触,只能推荐一些大家都觉得好的比如《鸟哥的Linux私房菜》和《Unix核心编程》。写在最后的话其实总结自己的大学的生活,我还是觉得大三过的是最充实的。我得出一个结论人真的需要一个目标,而有了目标之后,有一个引路人也是十分重要的,而我自己的引路人一个是上面说的老吴,一个是林同学。我觉得老吴可能并没有交给我许多知识,而且也没有讲完当初传单上面的知识,很多由于时间关系都略过了,但是我仍然觉得值,主要是因为他教给了我学习的方法,给我指出了一个C++程序员应该走的路。老话说的好:“师傅领进门,修行在个人”,确实是这样啊!!!
2016年10月23日
4 阅读
0 评论
0 点赞
1
2