ava程序员必看基础书籍和工具
1计算机基础
1、《深入理解计算机系统》
著名的CSAPP,从c语言到汇编语言到硬件再到操作系统,写得非常好.是一本能帮助深入理解计算机系统的书.基本上把这本书吃透面试操作系统的大部分问题都不是问题。
2、《算法导论(第三版)》
被很多acmer coder奉为学算法的经典之作,但不太适合初学者,因为它这本书很多内容只提供了伪代码,而没有具体实现.但可以从这本书学数据结构和算法最好,因为日后的编程语言对实现而言实际上并没有特别大的障碍,只是适合与不适合的选择罢了,而把想法转换成编程语言才是对算法知识的考验.如果不想太过深入的话可以忽略掉第四部分(高级设计和分析技术)第五部分(高级数据结构)和第七部分(算法问题选编),你会发现书其实比你想象中薄很多噢!
3、《计算机网络:自顶向下方法》
软件学院的计算机网络教材,非常适合初学者,里面将计算机网络从顶层到底层逐章分析了一遍,最好能够结合一些实验来辅助理解,里面的讲解比较抽象。
4、《STL源码剖析》
如果你是经常用c++刷算法题的同学,那么一定经常用STL的各种集合, vector, set, stack, queue等等..它们的实现原理,在源码面前,了无秘密。
5、《Linux命令行与shell脚本编程大全》
亚马逊书店五星推荐!里面大概讲述了很多linux系统的使用和命令行等. linux是Java后台开发人员必知必会的操作系统,而命令行是使用linux系统必须要面对的对于不想装linux系统的同学其实可以考虑使用腾讯云学习一些linux相关的命令行知识(没错,不需要图形界面),学生价一个月才一块钱,跟月饼厂一个月十块钱比起来也太划算了吧!而且用linux也蛮酷的啊。再推荐一个神器: GitHub - robbyrussell/oh-my-zsh。
6、《图解HTTP》
日本人著的介绍HTTP协议的书,对理解HTTP协议的一些细节有非常大的帮助,插画也很多(日本人的行文风格,感觉就像看漫画一样),很容易就理解了。
7、《TCP/IP详解卷一》
这本书能把枯燥的知识讲得很细致,强烈推荐这本,看完相应章节后大概能够明白为什么TCP/IP要这么设计了.面试的时候经常问到三次握手和四次挥手,还有各种状态的转移, TIME_WAIT的时间为什么是2*MSL...
8、《UNIX网络编程卷一:套接字联网API(第三版)》
中文版快800页,不过我只看了一些章节,这本书也是把TCP/IP的细节讲得很深很深,此外还有非常重要的基本套接字编程,就是写网络程序的时候那些bind, accept, listen, send, receive函数之类的,内容非常多,但是这些是理解多路复用模型所需要掌握的...select/poll/epoll这些系统调用解决了什么问题?事件机制能不能理解?就看这本书的前六章了。
9、《数据库管理系统(原理与设计)》
这个也是web开发中离不开的东西,必须划重点学会的是ER图/SQL语句/存储数据(磁盘|文件|RAID|缓冲池等)/三大范式/索引以及相应的数据结构/事务相关的所有概念,尤其重点学习SQL,附上学习链接 .之后学会使用mysql workbench来进行数据库建模/逆向工程生成建表语句/根据SQL生成JAVA实体类等就不赘述了,开发过程中百度谷歌一下就知道啦,然后如果习惯在windows下开发的同学推荐利用navicat这个好东西,当然如果说想训练自己写sql语句的能力那纯粹用命令行也无所谓...
2必备工具
1、VIM
vim编辑器相对其他编辑器来说确实难用了一些,入门的学习成本也很高,不过在linux系统中使用vim可以说是必须掌握的技能.记得我大一的时候程序设计课的TA就开始安利我们使用vim了,不过当时真的是太愚钝,根本就学不会。
网上关于vim的教程很多,不过有的感觉太专业(比如自定义功能之类的),我个人认为只要你安装了vim后,命令行输入vimtutor,把那个教程过一遍基本就可以了....入门的难点主要是理解vim的三种模式:编辑/命令/视图...理解了这个后就顺风顺水了。
至于自定义功能的话,交给网上的其他大牛来完成吧233333,这里强烈推荐 GitHub - spf13/spf13-vim: The ultimate vim distribution .效果如下,比以往的效果好了太多:
2、html/css/javascript
这个是做web开发基础中的基础,个人感觉学习难度不大,但是建议一口气学完并尝试利用它们做一个简单的个人简历,否则学习曲线会比较断断续续,不够一气呵成,具体教程可以参考 html/cssjavascript入门javascript进阶Javascript深入浅出。
3、emmet cheat sheet
做前端的应该都知道这个玩意的了,简单地说就是能让开发更加方便吧,解放生产力的一个工具,至少大于号和小于号不用再按来按去了...
借助emmet插件只需要这么写:
.list-block.list-block-search.searchbar-found>ul>(li.item-content>.item-inner>.item-title{$})*6
然后按tab键就能生成了....
jQuery/Bootstrap/AngularJs
关于javascript,其实纯粹使用原生javascript开发网站的话很麻烦,所以就萌生出了这么一些框架: jQuery解决了浏览器兼容性的问题(虽然据说要过时了), Bootstrap可以很无脑地开发出看起来蛮好看的网页(其实还有很重要方面是响应式前端);而AngularJS主要是有一个很重要的思想:MVVM,随后崛起的vue.js也如出一辙而上手更快...对于Java Web开发程序员而言建议刚开始有选择性地进行学习,可能真正涉猎深了就可以随意转换了.
4、acm-cheet-sheet
如果你觉得看伪代码转换成编程语言这样的学习方式很吃力,这个完全可以满足你的需求,里面把很多常用的算法实现了(c/c++语言),坚持临摹(不是死记硬背,是临摹!),是绝对能应对大多数公司的笔试编程题。
5、JS的原型链与闭包
可能利用上面框架开发的时候会遇到一些很棘手的问题不知道如何解决或理解,那么建议先看看王福朋的博客: 《深入理解javascript原型和闭包系列》,我觉得看完理解了以后定位js的bug应该会更容易一些。
6、SublimeText
一个对于前端开发工程师来说非常强大的编辑器,可以提供各种各样的自动补全(必会emmet插件语法),附上教程快乐的sublime编辑器和前端开发工具技巧介绍—Sublime篇.自从用了SublimeText,我再也不畏惧前端编程了...如果觉得教程看得不过瘾,知乎上这几个帖子可以让你领略SublimeText的奇淫技巧。
7、WebStorm
Jetbrain旗下的前端IDE,我觉得相比SublimeText它更好的一点就是不需要你自己去装插件就已经有了很多方便的功能,上手比SublimeText快。
8、VSCODE
微软开源的编辑器,知乎上也有比较详细的讨论.个人认为好看/高雅/好用,如果习惯SublimeText入手vscode并不难,反正我现在已经转战VSCODE了,就因为它可以设置背景为萌萝莉喔,是不是蛮可爱的,感觉打代码更有精神了。
9、Github
将github列为基础可以足以说明它的重要性,其实主要是理解版本控制与分支协作的概念,不过使用这个网站之前得先学git,建议刚入门github的时候可以将github当成云仓库(你甚至可以把东京热的种子放在github里哈哈哈),熟悉一些基本命令.到后面团队作业的时候强制使用github进行协同合作,会渐渐发现和理解github的好处的。
10、Markdown
markdown也是很相见恨晚的东西,我觉得markdown类似于html,但是比html更简单简洁,对于喜欢做网上笔记或者个人博客的同学而言是值得推荐的工具.半小时应该就能上手了,教程在此Markdown——入门指南...附上vscode的markdown笔记截图(分栏看预览效果,感觉高大上了呢),你会爱上markdown的(虽然我个人笔记整理得很乱- -等我闲下来再好好整理)
注:加群要求 学习交流群:450936584
1、想学习JAVA这一门技术, 对JAVA感兴趣,想从事JAVA工作的。
2、工作0-5年,感觉自己技术不行,想提升的
3、如果没有工作经验,但基础非常扎实,想提升自己技术的。
4、还有就是想一起交流学习的。
5、小号加群一律不给过,谢谢。
群内每天会分享最新的视频和资料,可以免费领取学习视频和资料
转发此文章请带上原文链接,否则将追究法律责任!
网友评论