编程知识、想法汇总(长期更新)

 

本文主要记录学习编程中的一些想法,以及自己学习过程。用于反思自己的所学,督促自己按时完成任务。尽量每周做一次总结。

其次记录在学习编程中遇到的易错点易混点,以及一些比较好的用法。很多时候,写错的地方第二次常常也写错,有些用法看了好几次也没彻底会用,记录下这些知识点,方便复习进步!!

 

july推荐一些有关编程或算法学习的基础书籍、资料,十项:1、c++ primer;2、算法导论;3、c和指针;4、STL源码剖析;5、深度探索c++对象模型;6、编程珠玑;7、编程之美;8、深入理解计算机系统;9、程序员编程艺术;10、结构之法算法之道blog。

这些一定会在读研期间全部看完。

 

1.理解递归类,调用多次的一些算法,最好的理解方式是,在vc中调试,一步步运行,主要查看变量变化和函数如何返回的。(by:2015-6-16)

 

2.看了一下算法导论,分别是深度优先、广度优先、拓扑排序、强连通分量以及最大流,主要是最大流和二分图匹配很难理解,书上的实例也较少,没看明白,计划明天在网上查找一下资料学习。(by:2015-6-17)

ps:今天请师兄吃饭,请教了学习的方向问题,收获颇多,当然,在经历了以前的一些事后,懂得他的话不是完全正确,需要结合自身分辨,我不太同意他对于算法的说法。毕竟读研期间老师没项目,学好算法至少能在面试中有一定的优势,反正他的想法值得借鉴,但还是要坚持自己的认为正确的一些东西,努力学习下去。他说的一定要学习数据挖掘机器学习相关内容,并在github上加入一个开源项目,这我一定会去做,但时间应该是在,今年10月份以后,想在一定基础下再去搞这些。

 

3.今天在看求取最小的K个数时,学习了时间复杂度为O(N)的快速选择算法,在看了思路后,觉得完成代码很难,自己尝试了半个小时,成功写出了求解代码后,又不想去看作者的思路,总觉得理解很难。

综上,觉得自己有两点不足:a,看了算法思路后,虽然理解,但对思路中每个步奏的实现没有清晰的认识,因此,每次看完算法思路,都不想费脑不想思考如何去实现,懒于实践,这是一大缺点。最近还好,逼着自己先不去看作者的实现代码,自己先实现。

b,一旦自己实现了算法思路后,就不想花时间理解作者的代码。以后一定要坚持理解作者的思路,作者的水平大多很高,因此,写出的代码更简洁、更易于实现,只有在比较和学习别人的代码,才能使自己不断进步,成为更好的程序员。

同时,还借了两本关于STL的书籍。在看别人AC的代码中,经常出现一些模板库的使用,大多都不了解,因此,彻底理解STL是非常必要。希望能在两周内过一遍。

还有一点,在编写代码时,没有很清晰的思路,每次总是想到哪儿写到哪儿,在完成程序后,往往需要调试很长时间才能成功,以后得多花时间思考,减小代码的查错和调试,并且以后要脱离编译器编写代码,等编程能力上去了,争取在今年八月份左右改用vim编写代码。

最后,在一本书上看到了调试数据的技巧,将输入数据写到文本中,用ifstream cin(“xx.txt”)来读取数据,方便快速输入和修改操作。以前调试poj题目遇见很多数据的输入项,总觉每次调试都要敲很烦,这下有办法解决了。

(by:2015-6-18)

 

4.这两天主要学习了STL,了解了STL主要是有容器,迭代器,算法构成,然后详细学习了其中所有知识的用法,体会到c++泛型编程的强大所在。还在学习中,争取早点看完一遍。

同时,买了算法导论和机器学习实战的书,机器学习必须得好好掌握,算法导论前面大概看了三分之一,任务是9月之前看完。(by:2015-6-21)

 

5.这一周多的时间,处理的事有点杂,感觉没学到实际的东西,也总结一下吧.

首先,采购了几本书STL源码剖析,unix高级编程,编程之美,剑指offer,鸟哥的linux私房菜,都是网上推荐的经典.

其次,在笔记本上装了linux系统,ubuntu14.04,安装了eclipse,配置了python的开发环境.安装了VIM软件,学习了简单的使用,虽然现在觉得不好用,但相信持续的用下去,会感受到它的强大之处.在VIM下配置了C++开发环境,步骤很多,不是很理解,需要进一步在编程尝试中学习.

最后,还学习了下机器学习实战的第一章,感觉理论讲的太少,需要一本理论书入门,再来学习比较好.

感觉买的书多了,有点不知道如何下手了.确定目标是,先学习STL知识,自己写各个容器算法的代码,加深理解.(By:2015-6-30)

 

6.又一周没有更新了,在这一周课余时间里,精力主要在STL源码剖析上,发现这本书估计得还需要一个月才能完全看完,太多东西要仔细理解了;在遇到list:sort()中的排序问题时,发现自己对于排序算法没有非常清晰的认识,接下来得花几天时间,透彻的学习下所有排序算法,并且每种算法的递归形式,非递归形式都要理解和实现,写一个综合性的博客。

其次,做了三套算法笔试题,发现c++的知识,算法知识,排列,概率等方面还存在许多问题,因此,偶尔做题反思也是很必要的。

最后,看了鸟哥的linux基础篇的前几章,感觉以前在虚拟机上瞎玩ubuntu完全没学到东西,还是要先看书,然后多实践;更加深入了解了linux,觉得学习linux非常必要,坚定了继续学下去的决心。(by:2015-7-8)

 

7.距离上次更新已经十天了,记录下最近课余的进展。STL源码剖析终于看完了,中间红黑树原理部分没看懂,其他的都看了一遍,感觉STL算法部分中,有蛮多比较经典的处理思路,比如快速计算一个数的n次幂,sort函数的优化。(by:2015-7-18)

 

8.距离上次更新十天了,上次说STL源码剖析看完了,本来想趁此整理一下容器和算法的一些知识的,写成博客,无赖自己太赖,再加上只看了一遍,好多地方只是有个模糊的概念,并没有能深入理解,因此打算放一放,到时进行回顾的时候在做整理(=  =一定要记得做到)。最近课余主要在做如下两件事情,

一是,继续看鸟哥的linux基础教程,全是一些命令,看过只能有一些概念。目前看了shell编程,这本书还有一半,争取在八月底之前看完

二是,在leetcode上刷题。刚开始在poj上刷过一些题,不过感觉题目太杂,有的太简单,有的过于复杂,而且讨论区界面很友好,因此放弃了。而leetcode,题目典型,难易较合适,而且评判系统更严格,对于提交的代码有运行时间统计,方便改进。最重要的一点,leetcode讨论区非常棒,里面的最佳算法都很有借鉴价值,这无疑是值得我去多学习的地方。

刷题的感受是,自己写得代码过于复杂,即使算法思路一样,实现过程总是不够简洁。好多代码都能在20行之内解决,以后写完得好好试试能不能改进。(by:2015-7-28)

 

9.很久没更新了,八月回家休息了半个月,期间大多时间在玩游戏,或者帮忙干点农活。每次感觉彻底放松一段时间后,学习起来就特别认真,大概是两方面的原因吧,一是玩了太长时间,自己感动荒废了时间,有了压力,因此稍微反思之后能静下心来。二是,玩几天,彻底放松后状态更好了,更能投入的去学。

从8月16号到现在9月21号,记录一下自己的学习经历。

a、十六号来学校,那一周又继续刷了一部分题。

b、看完了鸟哥的Linux基础篇,很多知识都只是有了概念,也忽略了一些章节,需要以后再看一遍。

c、看一些求职的经验和招聘要求,需要对分布式有一定了解,因此了解了Hadoop分布式框架,买了hadoop权威指南,坚持看了大概一半,也在ubuntu上配置好了开发环境,成功的测试运行了,但由于对java不熟,很多不能理解。因此决定放一放。

d、决定将apue看完。在这一月中,看了apue大概一半,里面的知识确实讲得很好,特别是实例,对于理解很有用。其中对于进程、线程讲了很大的篇幅,终于有了比较清楚的认识。接下来一个月的主要任务就是看完这本书。

e、对于后台开发需要的另外一些知识,mysql数据库、nginx服务器,也都了解了一些,配置了环境,收集了相关的学习资料。这就是看完apue后的主要任务。

(by:2015-9-21)

 

10,离上一次更新有23天了,感觉这一阵一点没状态,显示中秋节,国庆节连续放假,这一阵太浮躁了,apue也静不下心来仔细阅读,中间又沉迷于游戏之中,荒废了许多时间,深深的感到惭愧,一定得戒掉游戏,从其他方面提升自己。

在这一段时间,只学习了以下内容:

a,apue看了两章,太多新知识了,很难理解,感觉看完就忘了。

b,感觉没状态,转为看shell脚本攻略了,也看了两章,熟悉了许多基本的编写技巧。

c,看了一些网络协议相关的知识,握手,状态码以及七层模型和五层模型等,这方面的知识也很重要,后续还会花时间学习。

d,做了一些数据库和操作系统的题目,发现完全不会,虽然以前有上过数据库和操作系统的课程,但是学习得不深,时间太久没怎么运动全忘记了,这也是后续的重点。

想到这里,本科的课程有计算机网络,数据库,操作系统,java,数据结构,计算机图形学,图像处理等,算起来不是计算机专业,但重要的课程基本都学了,可惜当初太轻视这些课了,学的知识太少,无力去后悔了,加油学习吧!

(by:2015-10-13)

 

11,差不多一月之久没更新了,中间为老师干了不少杂事,心情一度低落,算来,这一月代码刷得少,书也看得少。生活太无赖,读研的兴致快完全被消磨殆尽了。含泪总结一下,后面加油吧!

a、shell脚本攻略看完了,真是一本简单明了的书,所涉及的大多命令都很有用,实例简短清晰,不想鸟哥的书罗列一大堆各个参数的解释,心情舒畅的看完了,对shell命令有了许多新的认识。

b、TCP/IP协议卷一,看了一半,对网络中各个层次解释的非常清楚,但看起来太费力,时间太杂,没能好好理解,后续再继续啃完。

c、headfirst设计模式,看了一半,非常清晰形象的一本书,自从放弃看网络协议了就一直坚持在看,目标是一周看完。

看完之后,得好好思考一下后面的时间安排了。明年三月奋战实习,算起来,也就只有三个月时间了,但自己还有太多学习的东西,题目也刷得少。

想想,第一是c++基础,坚持看c++ primer plus;第二是算法,先剑指offer,编程之美,leetcode继续;先准备好这两项基础,再去复习apue、linux、shell、tcp/ip、STL、设计模式等等。加油!

(by:2015-11-14)

 

12,离上次更新有两周时间了,因为上次整理了一下思路,最近学习状态有所好转。两周的总结如下:

a、headfirst设计模式,基本看完了,对讲解的十多种模式有个简单的认识了,感觉得在实践中慢慢摸索学习才好,暂时先不用再管,等后面写一些实际程序再进一步学习。

b、看完了编程之美,刚开始看没有找到节奏,慢慢就好了,对于每个题,先想思路,然后纸上写下自己的代码,再和书上比较,确实获益了蛮多,对一些常见的问题有了清晰的认识。最重要的一点是:一定要熟练动态规划、深度搜索,对于简单的深度搜索,可能自己可以写出其递归实现,但对于复杂一点的,就无从下手,并且深度搜索可以用非递归实现,这也是后面要重点掌握的。

c、对于apue,用了一些零碎的时间断断续续的看完了,其中的代码大多只是浏览了一下,没有尝试编译运行,理解的太浅,需进一步学习。

d、本来想看c++ primer plus的,看了两天,感觉太基础了就没接着看了。细节性的知识还是最后来看。

这次的想法有所不同,想把apue当做一个重点来复习,现在起,仔细学习和理解apue,精读每一章,敲一遍代码(关上书);看完一章,写总结,更新到博客中;花费时间多无所谓,重要的是彻底理解,并进行简单实践,参考别人学习的博客写一些代码。这个得当做重点、亮点。

其次,在看apue中,可以开始看剑指offer。

(by:2015-11-27)

 

13、距离上次总结已经46天之久,想来最近最近也是够颓废的。整整这么多天,荒废了前面的计划,沉迷在那些无关紧要的东西里,对于这些,有太多想说出来,无赖不知从何说起,从失去到失而复得,再到失去;还有跟哥们交流的一些想法,看课外书理解的一些东西,有个想法将这些记录下来,最近思考一下最近的工作总结如下:

a、应该是完成了毕业小论文的要求,水水的心态加灌水的文章,就这样吧,毕竟还是准备工作重要。

b、重新看apue,看到线程同步,断断续续参考着实现了几个程序,总算是有了一定理解。

c、这两天调整过来,在牛客网刷了剑指offer的几个题目。

d、杂项,课外书看了三本,正在看第四本,重点是训练思考的能力。

想想以上这些,也就两周能搞定的事,硬是颓废的拖着。玩了太多游戏,看了太多电影,看了太多闲书。思考下最近的安排,一周网上刷完剑指offer题目,再下一周看剑指offer书总结,其中继续看apue,这是寒假走之前的任务。

(by:2016-01-12)

 

14、距离上次更新19天,总结一下最近学习的内容,以及发生的事。

a、继续刷了剑指offer一些题目,看书看了60页,这个进展不是很多。

b、被老师拉去做一个合作项目,大数据相关的,去公司实习做,做了一些准备,落下了学习进度,不过想想,如果在大数据这一块坚持学习下去,肯定会很用。五天前已经到公司了,氛围不错,充满了活力与干劲,现在唯一的想法就是,多实习一阵,积攒经验,同时学习机器学习、数据处理知识。

c、彻底了解了python基础知识,目前能进行简单的程序编写了,在网上也刷了几个简单的题目。然后看机器学习实战这本书,结合代码学习python和机器学习。

d、公司这边,目前做的数据处理,主要是SQL server中分析数据,将以前忘记得差不多的SQL捡起来了,多用坚持熟悉SQL语句。

e、见了本科同学,初中同学,过了24岁生日,感觉自己还是好挫,还总是不努力、不自我反思。一定要学会思考,多看书,有野心,有干劲,成为自己想象中的人。

(by:2016-01-31)

 

15、距离上次更新40天,越来越懒了= =。除去中间年假,在公司待了近一个月,充实了蛮多。总结下最近的收获如下:

a、关于大数据相关的工作,这个项目太不实际了,而且数据挖掘这一块不擅长,算是才入门,不过不打算继续深入。

b、关于公司的XX电商平台项目、XX数据分析平台项目,主要是JAVA实现。在我的主动要求下,我开始接手其中的一下的内容处理,主要是从hbasd中获取数据并处理。另一个是维护数据分析平台,实时解决客户反馈的问题。

经过两周多的熟悉,对整个开发流程基本熟悉了,对JAVA操作数据库、使用jFinal web框架开发wed程序、以及hadoop平台和hbase等的使用有了认识。接下来就是进一步的熟悉,彻底理解然后自己动手尝试改进程序的每个部分。

c、以前一直没有使用java,接触项目后才重新学习。最近的任务是,继续学习java。

 

(by:2016-03-10)

 

16、距离上次更新40天,断断续续的被一些小毛病折磨,毫无学习状态,以至于荒废太多时间。这两天的事给我打击太大,原来自己一直活在梦里,自己太渣了,还一直以为自己肯定可以进入大公司实习。

a、回家原因放弃了腾讯的实习生笔试,打听到面试地点,去霸面,结果简历放那,筛选了好几篇,也没有获得面试资格。看了看别人大三的简历,顿时感觉自己弱爆了,难怪连面试机会没有。。

b、第一次做笔试题,四道编程题,只做出来一道。一直以为,自己刷了leetcode和剑指offer,编程题应该没有问题,是自己太幻想了。得继续好好练习编程,总结编程经验。

 

(by:2016-04-19)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值