精华内容
下载资源
问答
  • 给那些做程序员和不做程序员的人

    万次阅读 多人点赞 2015-10-25 10:47:25
    给那些做程序员和不做程序员的人》 首先说一说进入计算机专业的目的,我个人是因为十分喜欢IT业,很喜欢折腾电脑,所以在填报志愿是毫不犹豫的在报了的所有的学校都填写的计算机专业,梦想着进入计算机专业...

    《写给那些想做程序员和不想做程序员的人》

    首先说一说进入计算机专业的目的,我个人是因为十分喜欢IT业,很喜欢折腾电脑,所以在填报志愿是毫不犹豫的在报了的所有的学校都填写的计算机专业,梦想着进入计算机专业后能遇见很多高手,能交到几个知己,谁之进来后却大失所望。计算机专业的学生有很多以前对计算机不怎么了解,而且还有部分人进大学前连计算机摸都没摸过,对计算机很熟悉的很少,高手更是凤毛麟角,大多数人是服从了父母之命,显而易见,目前社会最热的行业是IT业,工资最高的也是IT业,抱着这个因素,大多数考生的父母都让自己的孩子进入了计算机专业,而大多数学生也天真的认为从计算机专业毕业后就能够像电视里演的大多数白领一样每天只用坐在办公室里和同事们聊聊天,和老板吃吃饭,每天签几个字然后就有高工资等着你去拿。

    进校后他们发现其实他们在专业课方面什么都听不懂,自己也一点兴趣都没有,没有兴趣那就没有学习的动力,而且这个专业是要靠悟性的,而兴趣是培养悟性的第一步,然后他们会发现越往后学专业课越难,也越听不懂,好一点的就会狠下心来,硬着头皮苦学一通,有可能也就能走出一片路来,而不好的就会就此放弃,只需要混着考试通过,混毕业,找个单位安心上班。有些人上了几年学连自己上哪些课都不知道;拿个程序他分不清是用C语言写的还是用PASCAL写的;不小心进了DOS不知道怎么再回到WINDOWS。但说起游戏来头头是道,好像每个都是职业玩家一样,有的每天只知道泡在网吧。这就是中国计算机人才下一代的悲哀!再说现在计算机专业大学生的学习和生活。大多数计算机专业的学生对本专业的发展及前景一无所知,每天都是看小说、玩游戏、看电影、打牌、喝酒、睡觉等等很有"前途"的事情。偶尔看见一两个同学看看与计算机专业有关的书,跑去拿来一看,全是什么"游戏攻略""黑客秘技"等此类书籍。还有的人连C语言和C++谁是谁都还没搞清楚,就拿本VC的书"刻苦钻研",真不知他们看懂了没有。

    好多学生都买了电脑,但用处都是游戏机+碟机+音响,每天都在用电脑玩着各种流行的游戏、看着最新的大片、听着时尚的音乐,就是不用电脑学习。有的学生甚至问我电脑除了玩游戏还能干什么,我问他你为什么这么问,他告诉我他觉得电脑只能用来玩游戏,不知道还能不能干干别的什么。据我了解,近几年在国内好几所高校的计算机专业的毕业生的毕业设计竟然是做网页,在大学了四年,学完了《数据就构》、《软件工程》、《C语言》等专业课后,竟然交了一个没有学过计算机的人自学一两天就能做好的东西!这就是大多数计算机专业的学生,在我在大学玩了两年之后,我突然明白该为自己的未来打算打算了,但还有许多人仍然还什么都不明白,所以就有了这篇文章。如果你是以上我说的那种受父母之命来学计算机的学生,如果你看了《计算机应用文摘》第15期的《写给想当程序员的朋友》一文后,发现自己没有当程序员的欲望,那么我这里有几条路给你选择:

     1、学习网页制作,将来去网站工作!

    2、学习3D MAX等软件,去作动画!

     3、学习美术设计!

    4、学习网络,将来考个CCNA,去专业组网!

    5、在保证能顺利毕业的前提下,去疯狂玩游戏,做个职业玩家或做一个或几个网络游戏的GM。(我身边就有这样的人)

    6、以上五条都与计算机有关,要有一定的专业知识,但比起你的专业课简单多了。

    如果你看到这里还不觉得有适合你干的,那这条最适合你:在你们学校去修双学位,修一个自己感兴趣的专业,计算机真的不适合你!如果以上几条有适合你的,那么你就努力去做适合你的那一片天地,去看杂志的下一篇文章,下面的文字你看了只会浪费你的时间。如果你是计算机专业的在校大学生,而且想当程序员,那么请往下看:

    1、大学生活丰富多彩,会令你一生都难忘,但难忘有很多种,你可以学了很多东西而难忘,也会因为什么都没学到而难忘!

    2、计算机专业是一个很枯燥的专业,但即来之、则安之,只要你努力学,也会发现其中的乐趣的。

    3、记住:万丈高楼平地起!基础很重要,尤其是专业基础课,只有打好基础才能学得更深。

    4C语言是基础,很重要,如果你不学好C语言,那么什么高级语言你都学不好。

    5C语言与C++语言是两回事。就象大熊猫和小熊猫一样,只是名字很像!

    6、请先学习专业课《数据结构》、《计算机组成原理》,不要刚开始就拿着一本VC在看,你连面向对象都搞不清楚,看VC没有任何用处。

    7、对编程有一定的认识后,就可以学习C++了。(是C++而不是VC,这两个也是两码事!C++是一门语言,而VC教程则是讲解如何使用MFC类库,学习VC应建立在充分了解C++的基础之上。看VC的书,是学不了C++语言的。)

    8、学习编程的秘诀是:编程,编程,再编程;

    9、认真学习每一门专业课,那是你的吃饭碗。

    10、在学校的实验室就算你做错一万次程序都不会有人骂你,如果你在公司你试试看!所以多去实验室上机,现在错的多了,毕业后就错的少了。

    11、从现在开始,在写程序时就要养成良好的习惯。

    12、不要漏掉书中任何一个练习题--请全部做完并记录下解题思路。

    13、你会买好多参考书,那么请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码。

    14VCC#.NET这些东西都会过时,不会过时的是数据结构和优秀的算法!

    15、记住:书到用时方恨少。不要让这种事发生在你身上,在学校你有充足的时间和条件读书,多读书,如果有条件多读原版书,你要知道,当一个翻译者翻译一本书时,他会不知不觉把他的理念写进书中,那本书就会变得像鸡肋!

    16、我还是强调认真听专业课,因为有些课像《数据结构》、《编译原理》、《操作系统》等等,这种课老师讲一分钟能让你明白的内容,你自己看要看好几个月,有的甚至看了好几年都看不明白。

    17、抓住在学校里的各种实践的机会,要为自己积累经验,就业时经验比什么都有用。

    18、多去图书馆,每个学校的图书馆都有很多好书等你去看!

    19、编程不是技术活,而是体力活。

    20、如果你决定了要当一个好的程序员,那么请你放弃游戏,除非你是那种每天只要玩游戏就能写出好程序的天才!

    21、你要有足够的韧性和毅力!有个高手出了一道题测试你的韧性和毅力:找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。

    22、找到只属于你自己的学习方法!不要盲目的追随别人的方法,适合自己的才是最好的!

    23、请热爱程序员这项工作!

    以上的话有些是我的经验,有些是我从高手那里直接COPY来的,但他们都很有用,记住他们,并遵守他们,那你们一定会成功!

    对于大多数初学者来说,好多人有这种问题存在:我到底先学什么?学C/C++?还是学VC?还是学BorlandC++ Builder呢?还是Delphi?哪一个更好呢?学习程序设计和学习程序设计语言究竟是怎么一个关系?初学者究竟应该如何取舍呢?就这些问题,我从一个高手那里看了一下的这段话,可以帮助在这方面有问题的人:学习程序设计就好比学习射击,而程序设计语言就对应射击中的气枪、手枪、步枪等各种枪械。学习射击必须要选择一种枪械,不可能没有枪还能学好射击的,也不可能同时学会使用所有的枪械。但是,如果掌握一种枪械的射击,再学别的也就触类旁通了。因为在熟悉一种枪械的同时,也学习了射击技术本身。再学其他的,自然事半功倍。学习程序设计也是一样,必然要从学习一门程序设计语言开始入手。在学会系统的编程理念之后,用什么工具都一样!

    之所以写这篇文章呢是因为自己眼看身边那么多的同学一个个都"不务正业",荒废了学业,心急如焚,自己也荒废了好几年,眼看微软的Windows3.X 到现在的WIN10,还有最近的“谷歌与中兴事件”,而中国的软件业还是在原地踏步,难道我们真要每年等微软给他的操作系统换一次名字,我们给他交一次钱吗?难道我们用智能手机还要再看外国人的脸色吗?这么大的利润为什么不留给我们自己,为什么不让别的国家给我们交钱呢?这是广大中国程序员的一个共同的梦,要实现这个梦的人是现在还在大学里的"准程序员"们,他们是中国软件明天的希望!

    展开全文
  • 做前端或者已经在做前端的你 这篇文章希望和大家分享、交流,共同进步;更希望能够给将要在前端行业工作、实习的同学一些帮助。 P.S. 喷神请绕道,大神勿喷,不引战,不攻击,不钻牛角尖。 第一...

    写给想做前端或者已经在做前端的你

    写这篇文章希望和大家分享、交流,共同进步;更希望能够给将要在前端行业工作、实习的同学一些帮助。

    P.S. 喷神请绕道,大神勿喷,不引战,不攻击,不钻牛角尖。

    第一次接触前端时。许多同学估计都想过要做一个网站,大部分又是从PHP开始的(谁让它是世界上最好的语言呢)。后端语言参与渲染HTML一直很主流,跟着教程做,你会写一堆样式表,到后来也许是需要在提交表单时进行客户端验证,你开始写一些JS。
    想做个网站啥的(以前app没有那么多),必须要学会HTML、CSS、JS,HTML构造结构,CSS表现样式,JS决定行为。JS似乎充满奇技淫巧,可以做各种效果啊,飞雪花片啊,搞咱们选课、评老师的网站啊。

    后来接触了jQuery,用起来无比顺手,特别是看完《DOM编程艺术》以后。那段时间担心JS掌握得不好,心想总是用jQuery以后不会写Native怎么办?也会关注“可以直接学习jQuery吗”这样一些问题。学习了Ajax后又做过瀑布流图片墙,觉得无比兴奋。不过认识也仅仅停留在异步加载局部更新DOM可以创造更好地用户体验。

    实习期间,看到公司前端做雪碧图、切片、搞div、css布局,然后花很多时间在浏览器兼容的问题的调试上。尤其是活动页面,写HTML、CSS基本占到工程的80%,JS写起来很快。后来Bootstrap逐渐流行起来,后端同学可以直接写后台,甚至都不需要前端和射鸡师了。加点栅格,加几个类,轮播组件啥的样样有,再引入jQuery,前端便成为了顺带做的事了。

    我接触前端的过程没有系统性,充满了探(瞎)索(搞),也缺少引导。不过细想想,我邮只有前端的选修课啥的,课程也不是那么就业导向。就像论坛里的同学,自己搞,自己提升。

    我们把上面这些点提取出来:HTML、CSS、JS、jQuery、Bootstrap,再刷刷题,看看基础知识,基本就可以参加校招了。

    那些求入门、求实习、赶春招、赶秋招的同学一定来得及:不过泼一盆冷水,进入大公司只是开始,你的认识、习惯、思维方式最终会决定你事业或者专业的高度。

    面对新技术我觉得了解它为什么产生,解决什么问题,会怎么发展,如何在现有的工程中进行实践,比讨论它们的优劣更有意义:

    首先 html5 不是一个新技术,而是在现代浏览器中使用CSS 3等特性进行前端开发的过程。以前我们更关注浏览器的差异性,而现代的浏览器对标准的支持越来越统一。

    回到jQuery,在web app中使用越来越少了,一方面这个库太“大”了(吃流量),从页面加载、打开速度理论看,英明的老大会把它砍掉。针对库大小的问题,Zepto.js是一个解决方案。这个库与jQuery API相对统一,抛却了很多浏览器的兼容性的代码。

    但是现在浏览器的querySelector方法,已经很好地解决了jQuery中的“Query”,使用原生的fetch方法请求数据,返回Promise也能比jQuery.ajax()的实现更好、更清晰的解决问题。

    看待jQuery,我觉得应该更多看到它的历史意义。jQuery,一定程度上成为了工业标准,影响了JS语言的发展和其他JS库的构建。如同coffeescript对ES2015的影响。至于实践,越来越多的web已经不依赖jQuery进行开发了。

    前端这几年进步太快了,我尝试按照不同方向讨论一下这些技术栈。

    脱离浏览器的JavaScript

    Node.js

    我们讨论的JavaScript更多是以浏览器为宿主的ECMAScript,同源的ActionScript以Adobe的Flash作为宿主的。

    浏览器中的JavaScript提供了大量与浏览器相关的API。脱离这些特定API看JavaScript,异步是它特别重要的一个特性。Google的V8引擎,让JavaScript的运行时性能大大提升,是Node.js的产生另一个必要的条件。

    Jser突然可以全栈了,面对新的技术,不乏布道师。国内第一本Node.js书籍是BYVoid写的,当时盛传这个同学拿到了我司的60w的offer,一片沸沸扬扬;大家可以向他学习,在一个技术还未在祖国大地流行起来时,迅速写一本书。

    至少目前,很少有大公司完全把JavaScript作为前后端通用的技术栈。传统的后端语言和技术并未没有被代替的危险。不能把Node.js简单看做是JavaScript在服务端的延展。

    我觉得,Node.js很大程度拓展了JavaScript的使用范围,改变了传统前端的工作流程(后面提)。特别是NPM的产生,意义非常之大,它让JavaScript成为了一个生态系统,CommonJs也在JavaScript模块化未成熟之前,提供了优秀的模块化解决方案。

    通过package.json,我们可以依赖已有的NPM项目构建自己的库。前段时间,某个同学应为法律的问题,撤消了发布在NPM上的leftpad包,短短11行代码的包撤消后,造成了React-Native、Babel等项目构建失败的灾难。

    许多人反思,为啥那么简单的代码要依赖,不自己写?是不是Jser忘记了怎么写代码了?我觉得,盲目解除对其他库的依赖会失去NPM社区的初衷,除非你想做超级轮子哥。NPM生态圈制定一下撤包的规则,这种灾难或许以后就不会发生。自给自足的同学们,如果lodash撤包了,或者是tj holowaychuk大神激情起来删了所有包,你们怎么办?

    Node.js也让服务端渲染成为可能(universal),代码段技能在服务端运行也可以在客户端运行(universal)。从这点看,代码更容易维护和编写了,部分解耦了前端和服务端。对于SEO这个令人头大的商业问题,服务端渲染可以较好地解决。感兴趣的同学,可以去了解一下搜索引擎的爬虫是如何干活的。

    总结一下,Node.js的产生完善了JavaScript生态圈,让大家看到了JavaScript的潜力,让构建更为庞大的JavaScript项目成为可能,同时前端可以使用更为工程化的流程和工具进行开发。

    推荐大家一定去了解和使用Node.js,使用NPM构建自己的项目。

    JSON

    JSON变成了事实上Web数据的传输标准,这个是JavaScript另一大贡献。

    对终端的开发,使用JSON数据后使得服务端的开发更加专注和统一。

    这种代码展示了服务端渲染的能力。但是对于对于iOS、Android等原生应用,除了在WebView中,无法消费这些渲染好的HTML。

    JSON和App的流行,让后端语言在渲染方面逐渐让道,向纯粹的Service发展。比如beta版本的 Rails 5 大大增强了 Rails 作为 API Service的能力。

    从Ruby 或者 PHP转换到JSON需要相应的映射函数,Node.js来得更为直接,因为JSON就是一个普通的JavaScript对象。

    大家可以去学习成熟的JSON风格指南。同时通过实践逐步加强对JSON的认识,设计更为规范的JSON(这个会森森影响到Mongo的存储,查询效率,React的性能)。

    二进制处理后的JSON,是MongoDB存储的内容,这个基于文档的数据库被越来越多的公司使用,使得编写嵌套数据,存储流数据更为容易。传统的关系数据库,将查询结果表示为JSON,需要经过查询、封装、Transform等多个步骤,而MongoDB的查询结果就是JSON,直接查询直接使用。当然我们看到,在处理事务型问题上,关系型数据库还是首选,比如电商。我们去褒贬关系型数据库是否落后没有意义——使用场景不同。

    如果大家有兴趣,可以去尝试MongoDB,感受一下冲击。

    前端工程化

    接下来提一下前端工程化。脚本语言并不一定需要编译再执行。传统的工程中,通过<script>标签引入依赖的JavaScript库、样式表后直接开发,写样式表。

    当工程规模增大后,传统实践维护成本直线上升——于是模块化开发成为工程上的最佳实践。我们可以使用特定的技术对JavaScript、CSS进行压缩,同时合并JS与CSS解决脚本间的依赖问题,以此减少线上环境中HTTP请求的数量。

    Sass Less Stylus

    CSS在前端领域,进步最慢。声明式的样式表缺乏逻辑性,层层嵌套,维护成本高且不易团队合作,样式覆盖这个问题也相当恼人。

    Sass等技术,输出编译后的CSS样式表,把开发过程和实际样式表分开。.scss文件结构清晰,通过变量定义、mixin等的使用让样式表的开发更加正规化。

    Less与Sass类似,Stylus是TJ大神的作品,实在非常简约抽象,个人感觉不易维护。最新的Bootstrap 4使用Sass,放弃了Bootstrap 3中使用的Less。

    个人觉得,这些技术深入掌握一门就可以了。实际开发还要看公司的技术栈。

    CoffeeScript 与 TypeScript

    与Sass等技术思想类似,Coffee 与 TypeScript 也是一个编译技术——把.coffee.ts文件编译成javascript。编译这个思想在前端领域很重要:不改变现有的语言环境(JS、CSS)同时进行最佳的工程实践。

    使用过一段TypeScript,真心觉得是神器,在无类型语言中写类型不是倒退吗?请摒弃这些激进思想(世界上最好的语言第7代不是也支持类型了吗),尝试在项目中使用TypeScript,你就会感知到它的神器之处。首先,多人协作更为容易了,结合IntelliSense,IDE更为智能,开发快感直线提升。

    TypeScript是微软的开源项目,Angular 2 放弃 Dart完全拥抱了TypeScript,TypeScript与Angular 2 强强合作,加入了许多构建 Angular 2的新特性。

    我们整理一下这些工程化的实践:预编译、合并、压缩、打包,引入下一个概念Package工具:

    Webpack Gulp Grunt Browerify

    Package工具,是任务驱动型的工程化工具。通过打包构建,线上代码更为精简,循环引用等问题迎刃而解。

    上述这些工具变化极快,Webpack 2快接近稳定了,JSPM这个新的工具也得到了使用:但是没有最好的,只有最合适的工具。都说Grunt已经过时,jQuery等库还一度使用Grunt进行构建。对于新的工具,我们可以了解它们的思想,不要被它们压得喘不过气:比如Gulp更像是一个PipeLine,对代码流一步步通过Loader进行加工。

    在淘宝无线时,有些H5前端用Grunt构建工程,使用Less写样式表(还有些人什么都不用,直接在JsBin里面写样式、写JS)。

    任务工具结合CommonJS后,可以只引用需要的模块、样式表。这样打包后,文件更小:当然如果结合sourcemap,调试和定位问题会更为容易。

    JavaScript Libraries

    工程化、模块化解决了code如何生产,模块、结构如何组织等问题。大家也在不断思考在前端与数据的关系。传统前端开发并不是数据导向的,多数页面由服务端渲染,前端的重心不在数据而是聚焦在用户行为的响应上,这时前端仅仅是产品的视觉末梢。

    单页应用开发技术越来越多地被实践后,前端逐步变得更为数据导向(JSON API),由末梢变为大脑——业务逻辑前移;对浏览器历史的管理也是也是单页应用的另外一个中心,前端也逐步变得更为历史导向。

    为了更为数据,JavaScript 库借鉴了很多服务端的思想比如MVC。MVC将数据抽象为模型,在模型中定义操作数据的基本方法;在控制器中定义商业逻辑,并控制模型的渲染。

    这个阶段的代表是Backbone.js。Backbone有一个可以自定义的依赖于jQuery的前端模版引擎,是MVC模式在前端开发中的实践。同时Backbone.js 依赖于同一个作者创建的 Underscore 库,以函数式编程思想操作数据或者集合(这个Jser创造了CoffeScript、Backbone、UnderScore,Lodash是从Underscore项目派生出来的,大家可以膜拜大神Jeremy Ashkenas)。Backbone影响深远。比如facebook的 parse(中国克隆版叫LeanCloud)这种无后端服务就从Backbone借鉴了很多。

    Angular.js的产生是跨时代的,这个大而全的框架让单页应用的开发更为容易。
    最开始Jser们并不是很适应Angular,反倒Java程序员可以很快的上手,因为Angular 借助了很多 Spring的思想比如依赖注入。

    Angular 仍然深受 jQuery 的影响,内部实现了极简版本的选择器。Angular进行双向绑定,这个牛逼的特性也有时因为性能问题被诟病。

    JavaScript 库也借鉴了很多客户端开发的思想,比如React、Vue。

    个人觉得,拿Angular、React、Vue这些库比较,论其优劣意义不大。他们产生的时代不同,解决的问题不同。React、Vue离开Router和生态圈的其他组件也无法构建单页应用。

    React.js

    React并不是一个大而全的框架,主要专注在UI层,React以Component的方式组织应用:一个Component包含这个组件的模版(样式)和行为逻辑。多个Component可以组合,产生兄弟、父子的Component结构关系。

    以往开发强调结构、样式、行为的分离。但从组件角度看来,所有这些都是构成组件不可分割的整体。JSX使得HTML与JS的混编更为容易,同时React组件也可以使用内联方式来组织样式。

    React默认单向绑定,在State发生变换后重新渲染DOM。从Component的生命周期中,我们可以看到客户端开发的影子(特别有iOS开发的经验的话)。譬如componentWillMount、componentDidMount、componentWillReceiveProps、componentWillUnmount这些生命周期的钩子就是像客户端开发学习的例子。一方面,生命周期的增加细化了开发的粒度,另一方,也为前端的再一次拓展做了充分地准备。

    React调用render方法对Component进行渲染,其中涉及了Virtual DOM机制和只能的diff算法——只更新发生变化的DOM,以此提高渲染的效率。

    React并没有提供完成的数据管理方案,Flux也仅仅是一个实践的建议。去年,各种Flux解决方案百花齐放,Redux获得了最大的关注度。使用Redux是一个从入门到懵逼的过程,而且往往不知所以然,然后“这厮”有引入了Store、Action、这些概念。建议大家不要为了Flux而Flux,多做一些实践,了解函数式编程,了解Map、Reduce的概念,再深入Redux:

    在这里分享些自己的认识:每一个组件都有自己的State,有层次关系的State共同组成一颗状态树来记录整个应用的状态。当Aciton被触发后,State随之更新,React以此部分地更新应用的状态和视图(State —Action—> State’)。贴一个自己总结的白板图:

    这里第一次提到Immultable这个概念:总是不改变原来的对象而生成新的对象。Immultable,让时光大法得以实现。我们如果把DOM看做是State在UI层的映射,难么从State’到State后,自然能把UI层还原到原来的状态:Redux黑魔法

    Angular 2

    Angular 2 已经到了Realease Candidate阶段,从alpha阶段开始,每一次release都有一大堆BREAKING CHANGES(MD API说变就变)。

    不过好在基本每个版本我都在跟进,还是做了些实践。

    如果大家抱着学习的心态,一定不要去看国外或者知乎大神们对各种框架的褒贬,也不要去搜“我究竟是学习(使用)React、Angular 2、Ember还是Vue这种问题”,了解它们的思想和解决问题的方式。

    Angular 一直使用依赖注入的单例模式解决数据管理的问题。Angular 2使用zone.js实现了一个新的脏值检查机制,并在浏览器端使用System.js管理code的依赖。

    使用 TypeScript 进行开发,意味着从生产到上线过程必须经过编译和转换,特别装饰符的使用,让代码表意性更强,同时装饰符作为元数据,指导TypeScript的编译过程。

    举个例子,我们看看Angular 2如何解决表单的验证问题:
    Angular 2将每一个表单项(比如 input、textArea、radio)抽象为一个Control,将整个表单抽象为一个ControlGroup。每一个Control都有自己的验证规则,ControlGroup的合法性又由其包含的所有Control共同决定。这个实践使得验证逻辑与表单DOM实现了分离,更为清晰,同时原本操蛋的表单测试变得简单易行,因为测试ControlGroup时并不需要依赖于DOM。

    分享一篇我翻译的文章:Angular 2核心概念,阅读后可以对Angular 2 有一个大致的了解。

    Angular 2是对WebComponent的渐进,通过WebComponent,我们可以导入和使用各种成熟的组件,而不用关心它的具体实现,就像黑盒一样进行使用:例如我们想嵌入一个百度地图的WebComponent,可以这么写:

    于是就I生成一个指定大小和位置的地图组件(百度地图没有这东西,我YY的,股沟有)。

    Vue

    这个框架我不是很了解,开发者是尤雨溪大神,在github上stars超过10,000。
    手机淘宝的勾股大神一直在布道、推广、实践。个人觉得Vue的核心贡献者太少了,拉上阿里巴巴是一个明智的选择,毕竟很多前端大神可以共同完善它。

    脱离浏览器的 JavaScript Libraries

    再看Virtual DOM这个概念,就像是薛定谔的猫,在渲染前什么都是、什么都不是。Virtual DOM是一个抽象的概念,也组成了另一个抽象概念—— Component。(这个堪称是FB的野心,以后估计很多人被这个东西搞失业)。

    一个视觉元素,一个用户事件,可以做如下抽象:

    我们发现,如果在编译时View、Click才与运行环境相关,那么app、web app的开发其实是可以共享大部分代码的,这个时候JavaScript变为了中间语言。

    这个想法早在cocos2d中就已经实现,进行游戏开发的同学使用c++进行游戏开发,编译后产生安卓和 iOS 的版本平台相关的游戏。

    React-Native就是这个思路的实践者,通过js绑定了OC或者安卓的运行环境,开发出性能接近于原生的原生应用。React-Native大法延展了JS的广度,也填补了iOS和安卓开发间的技术沟壑。

    另一个黑魔法是热更新,以往大幅度更新App只能在App Store、安卓各大渠道发布更新,然后从应用商店提示用户升级,每一次提交都需要被审核,更何况并不是每一个用户都知道或者想去安装每一个更新版本(比如我妈)。通过React-Native可以直接下载新的bundle,实现热更新。

    论坛里,有人讨论React-Native热度骤减,你们去官网看看,人家才v0.25。很多公司用不好驾驭不了React-Native原因出在缺少既了解客户端开发有了解前端开发的程序猿(媛):不能否认,Reactive-Natvie的产生是大势所趋。

    说道阿里在搞的Weex,也是在向这个方向探索,如果特别成功并且使用广泛的话一定会把Vue搞得更大:尤雨溪大神在这个问题上相当的明智的。

    再回到Angular 2,DomRenderer.getNativeElementSync(elementRef)也不是在做同样的事情吗?相关项目详见:NativeScript 。

    除了JavaScript,CSS 也在尝试成为与平台无关的样式语言。React-Native就实现了CSS 的部分子集与iOS、Android的绑定。

    大前端

    未来的前端是一个包含但不仅限于app和web,从事多端构建任务的程序员工种。团队中单一技能的人员会越来越少,客户端与web端的界限也会越来越模糊。

    同时新的技术大多会在不同领域交叉点产生。网络提速,设别处理能力提高后,应用大小、性能可能退居第二,用户体验和开发效率提升到第一。

    比如很多公司,由于担心js、css打包后过大,放弃使用框架。这点我持保留意见,快速迭代的产品必须有敏捷的技术栈和稳定的框架。

    目前新版本的Chrome、Node.js对ES6标准的支持已经超过90%,Babel这一类工具的生命周期不会很长,TypeScript可能会越走越远。

    给大家的建议

    1. 道阻且长,冰冻三尺非一日之寒;
    2. 广泛地学习,有条件和能力的同学尽早地接触客户端开发,更多地了解服务端开发;
    3. 前端大有可为,新技术的发明者大多不是老东西,老东西经验足但是历史包袱重;
    4. 只在浏览器中思考必死无疑;
    5. 像一位同学提到的,打好基础,offer就有。学校里倒腾几年真的很难搞出什么大新闻,面试官也不会刻意为难你;
    6. 测试测试测试,前端测试值得学习掌握,比如e2e,这是一个机会:我能告诉你很多公司的前端测试都瞎JB点吗?
    7. 学习一些函数式编程的思想,例如:lodash、Redux、RxJS;
    8. 拿到offer只是开始不要嘚瑟。

    番外篇——理性看待前端紧缺的现象

    刚入职淘宝时,团队里有许多前端外包同学,后来很大一部分转正了,有经验的前端工程师一直稀缺。

    2012年,PC购物还是主流,我们见证了无线成交额(GMV)逐渐赶超PC的时刻:端的重心越来越向mobile(App)移动。

    Hybrid App很流行,部分是因为Native开发更为复杂,同时审核、更新机制缓慢。每一次手淘release都要考虑与老版本的兼容性,几百号人同时开发二个(安卓、iOS)App想想多复杂。

    H5在webview中运行,随时可以更新、快速迭代,新产品或者是活动页面大多数会采用H5的形式进行发布;甚至很多小公司由于财力和技术储备有限,直接用App做壳,里面全是用H5来开发:因此市场上产生了很大的H5程序员的需求。

    且慢,没有任何人说过H5比Native更好,也没有什么H5的春天,一切的一切都是因为Native 开发、更新不够成熟。但也仅限在一个时间段内。

    如果一切问题都不是问题了,干嘛不全做Native?目前看来类似于React-Native、JsPatch这样的技术逐渐会让很多前端失业或是是被动转岗到纯PC业务。

    番外篇——推荐学习资源

    1. You don’t know JS,clone下来以后用markdone阅读器阅读;
    2. ES6 教程,阮一峰大神的ES6教程,纸质书可以在京东啥的买到;
    3. LeanPub,自出版书籍网站,每次更新都会发布新版本。支持Visa支付;
    4. Manning,特别是MEAP系列的图书,按章节更新,最新一手资料,支持Visa、PayPal支付;
    5. CodeSchool,在线学习网站,覆盖前端、iOS、Ruby等,可以先试试免费课程,支持Visa、PayPal支付;
    6. EggHead,在线学习网站,先试试免费课程,授课人大神极多,基本涵盖了最新的前端技术,支持Visa支付,200刀一年略贵;
    7. 要是觉得贵,想想火麒麟。
    展开全文
  • 谁写了Linux?

    万次阅读 热门讨论 2009-08-26 09:55:00
    谁写了Linux陈皓 原文:http://coolshell.cn/?p=1360 酷壳 (请勿用于商业业用途,转载时请注意作者和出处) 2009年8月,Linux软件基金会发布了一份叫《Who Writes Linux and Who Supports It》(PDF)的报告。...

     

    谁写了Linux

    陈皓

     

     

    原文:http://coolshell.cn/?p=1360  酷壳

     

    (请勿用于商业业用途,转载时请注意作者和出处)

     

    2009年8月,Linux软件基金会发布了一份叫《Who Writes Linux and Who Supports It》(PDF)的报告。这份报告主要对Linux 2.6.x的开发进行了全方位的统计。看了以后才知道,原来Linux的开发的生产率竟是这样的惊人,而且相当的的令人振奋,所以,在第一时间转过来给大家看看。让人不得不惊叹,这不可思议的具有非凡活力的社区。(注意,我们这里说的是Linux,不是GNU的那些东西,所谓Linux就是Linux的Kernel)

    下面是一个导读,希望每一个看到这篇文章的朋友都能看看原文的报告:《Who Writes Linux and Who Supports It》(PDF)

    这份报告的一开始就对Linux的开发进行了总结:

    • 每2-3个月一个release
    • 最近的每一次release都超过10000个补丁
    • 有超过1000个开发人员进行开发,他们来自200个公司或组织。
    • 自2005年以来,超过5000个来自500个不同公司的开发人员为Linux内核做过贡献。
    • 自2008年以来,每次release,都大约增加了10%左右的开发人员,而且,代码码达到了2.7百万行。

    是的,这样的生产率真是太疯狂了。下面是这份文档中所涉及的一些介绍和一些具体的统计数据。

     

    Linux开发模式

    Linux的开发采用的是一种宽松的,基于时间的开发模式。每一个新的主要版本的release基本上会发生在2-3个月之内。这个开发模式是在2005年形成的,因为任何人都可以修改其内核的代码,所以,很多补丁进入内核的时间非常的快。

    其中一个有意义的事是,他们有一个叫Linux-Next的服务器,这个服务器一般来说会是下一个版本的staging,比如,如果目前的稳定版本是2.6.31,那么Linux-Next上就会运行2.6.32。这样,所有的developer都能看到下一个版本总体的样子,而且,这更容易发现一些集成性的问题。

    在2.6的mainline代码库上(mailline是代码库的主线),有一个叫做“stable team”的团队,他们会做短期的维护工作,他们确保所有的重要的补丁或更改都会被放入mailline中,这样就能滚入下一个release。

    然后,这份文档中给出了大量的开发编译数据。

    统计数据

    下面的统计数据是从版本2.6.11开始的,我把源文件中的表格合并成一个大表,如下所示。

    Linux Kernel开发统计数据

    从上图我们可以看到下面这些东西:

    • Linux Kernel开发的速度越来越快,看看每个release的补丁数,每天文件增、删、改就可以知道。
    • Linux Kernel开发的团队是越来越大,包括人员和参与的公司。

    下面是几个统计图表:

    linuxp1
    平均每天的修改

    linuxp2
    代码修改统计

    linuxp3
    开发人员

    谁写了Linux

    最后我们进入主题——谁写了Linux,首先,我们先来看一下进入代码修改的Top 30的开发人员列表:

    Top 30 Linux developer

    我们可以看到,Linus Torvalds (729 总修改,自2.6.24版来254 修改)无法进入前30名。当然,对Linux的贡献绝对不能通过代码行来表示,Linus对Linux就算是在今天也是至关紧要的。

    好,让我们再来看看那些公司对Linux的贡献。根据这份报告所说,知道每个developer所在的公司,主要是通过了下面的几种方法:

    • 使用的邮件地址有公司的名字。
    • 由赞助者提交的代码。
    • 直接询问得到的。

    所以,这些数据只能算得上的近似,不过也能看到一个总体的样子了。下图中“None”代表没有职业无业游民,“Unknown”代表无名氏或是英雄不知出处。

    Linux Company Top 30

    我们可以看到,Top 10公司,为Linux贡献了近70%的代码。包括了None和Unknown,而且,那些是拿着公司报酬给Linux作开发的程序员。

    那么,为什么这些公司要支持Linux的内核开发呢?

    • 我们可以看到像IBM, Intel, SGI, MIPS, Freescale, HP, Fujitsu这样的大公司,他们的目的当然是为了确保Linux能够在他们的硬件上工作得更好。
    • 我们也可以看到像Red Hat, Novell, 和MontaVista这些Linux的Distribution公司,他们是Linux的主力,主要是为了提供给他们的客户更好的服务。
    • 同样,我们还能看到像Sony, Nokia, 和Samsung这样的公司,这些公司主要是用Linux来开发数码产品,如摄像机、手机或是电视,他们使用Linux做一些嵌入式开发,以保证他们的产品工作得更好。
    • 还有一些和IT都没有关系的,例如:Volkswagen公司在v21.6.25中为Linux加入了PF_CAN网络实现的协议。Quantum Controls BV公司在2.6.30时加入了一个航海导航的补丁,这些公司都会使用Linux来完善他们的产品。

    看来,Linux的势头是越来越无法阻挡了,你也想加入这个阵营吗?点下面的链接吧:http://ldn.linuxfoundation.org/book/how-participate-linux-community

     

    (请勿用于商业业用途,转载时请注意作者和出处)

    展开全文
  • 20万行代码完,毕业了找一份工作不是问题! 刚一毕业因为找不到工作,就得报名去参加Java培训的大有人在。并不是说参加培训就不好,只不过以你现在这个毕业的时间点参加,就会显得特别匆忙。因为你的压力既来自于...


    作者:小傅哥
    博客:https://bugstack.cn

    沉淀、分享、成长,让自己和他人都能有所收获!😄

    一、前言

    20万行代码写完,毕业了找一份工作不是问题!

    刚一毕业因为找不到工作,就得报名去参加Java培训的大有人在。并不是说参加培训就不好,只不过以你现在这个毕业的时间点参加,就会显得特别匆忙。因为你的压力既来自于培训还需要花家里一笔不小的费用,也有同班同学已经找到一份不错的工作开始赚钱的比对。

    大学四年其实有足够的时间让你学会编程,也能从一个较长时间的学习中,知道自己适合不适合做程序员。就像我的同学里虽然都是计算机或者软件工程专业,但毕业后并没有都从事软件开发工作,或者从事了一段时间发现并不适合这个行业而选择到其他领域发展。

    所以如果你是真的喜欢编程,那么在这个行业里工作你会很开心,如果不是那么往后路还长,你所要面对的晋升加薪跳槽都可能成为一道道障碍。目前可能你还是新人不了解自己是否喜欢编程开发,那么可以在以后的学习中体会,自己是否愿意为一个运行结果调来调去,辗转不寐的研究分析,只为最后那一个运行通过而激动!

    当你可以在激动和开心中写完20万行代码,对于毕业后的求职找工作来说几乎可以叫你一声面霸,也可能你在实习时就被公司直接留下,这是个人才组织需要你!

    20万行代码看上去很多,但放在4年的大学学习中并不会有多难。平均每天200行,一个月是6000行,一年算10个月是6万行,三年就有18万行。这20万行代码会把你从一个编程小白,带入到熟练使用Java相关API,也能给你带入到初级工程师的水平。

    初学编程你可能想把一句代码完整敲下来都不容易,就更不用说运行出结果了。因此此时你的大脑和手还并不能迅速理解你眼睛里看到的这一行行代码都是啥,要干啥。这就像新买回来的钢琴手指头上去摸肯定是生硬的,敲出的声音也不连贯。这个阶段只能是照着例子大量的写,度过一个熟练期才能更好的学习。

    为了可以让更多的小伙伴理解这件事,我会从我的在校培训外包跳槽阶段成长以及找什么样的工作分享给大家作为参考,最后再把我整理出资料一并分享给大家。

    二、经历

    12年10月25日,在CSDN发的一个帖子 拿到两个offer,一个7k,一个转正税后4.5k。求意见! 距离现在它已经过去好久了,当时也是因为拿到了两份offer的选择纠结,所以发了个帖子求问。好气的是当时竟然不知道去面试面试互联网公司,信息太闭塞了,而且培训的地方并没有说过互联网一些公司的信息。

    讲一讲我这7k的经历;

    1. 12年07月,校企合作来北京昌平一个小县城的地方参加中软培训
    2. 12年10月,培训接近尾声,开始找工作,月薪7k的中软就是最后的选择的地方,放弃了在北航院内的国家科技
    3. 12年12月,虽然拿到中软Offer但迟迟不让入职,电话联系了很多次我说可以先去实习,但都说等通知。没办法,在北京也不可能就硬待着,回家的话也麻烦行李、住宿都得折腾,所以又面了一家中科软进去实习了三个月,赚点钱养活自己
    4. 13年03月,中软的通知终于来了,但竟然是参加岗前培训,又被培训了一次,当时特别讨厌培训,每次都是讲Java基础,差点生气怼老师
    5. 13年09月,在中软正式转正,也就是说培训完又是实习,7月份毕业后9月份才入职为正式员工,心里有点不爽,埋下了一个后续跳槽的种子。哪有实习这么久的!
    6. 15年04月,第一次有跳槽准备,毕竟写了两年的C#写够了,面试了第一家互联网公司,乐视致新,不过后来没去,被公司留了下来
    7. 15年08月,之前谈的留下来涨薪,但最后少涨了1千块钱。所以继续面试,还算顺利面了两家,最后在8月25日跳槽进互联网完成。

    以上整个过程就是我从学校实习找工作以及最后跳槽的一个阶段性经历,也有过在这条路上跌跌撞撞。就像;

    • 虽然我面到了中软管培生,但错失没选择要北京户口,而是要了400块房补
    • 在中软9月份从实习转正式员工,错过了第二年的入职满一年才涨薪的条件(但我觉得这个有点故意坑了)
    • 明明是学了那么多Java,但却写了两年C#,大家还是要选择自己喜欢的语言进行工作,否则会很麻烦
    • 提了离职,基本就不要想着再留下来,无论什么条件。哪怕钱和职位满足了,心里也有隔阂以及个人对没经历过事情的一个期许
    • 从传统外包跳槽的互联网,并不那么容易,技术使用的不同、开发场景的不同、组织关系的不同,一切都可能是从一个较低的位置重新开始。你需要自身技术不错,也需要一个好人带
    • 但当时在的传统也有不错的点,比如可以5:30下班,带我的经理人很不错,公司也不那么累,有时候还可以出差溜达溜达。

    三、学习

    一个大学生会经历在校、实习、就业几个阶段,其中在校学习属于蓄力阶段,要学习很多知识才能支撑起来将来的实习和平稳就业。

    蓄力阶段的学习,主要是对编程技术的基础的夯实,以及多学习与数学相关的内容,比如;数据结构、算法逻辑,这些知识对将来在技术上的提升和造诣都是非常好的基石。下面就是整个大学过程中在编程学习过程中需要经历的阶段,如图;

    • 熟悉工具:初学编程后你大概会接触到一系列的研发工具,包括IDEA、Eclipse、Navicat、Maven、Git、Tortoise、SourceTree、Visio、Xmind等等,工具的熟练会让编程更流畅。
    • 编写代码:此时你需要大量写代码,写很多的代码,因为你几乎就是需要靠写代码把整个所学的编程语言熟练使用起来。总不能手生到写完 public,写不出来 class,这跟我不会弹钢琴一样,敲完了1,后面不知道要在哪找下一个音符♪了。
    • 功能开发:小的功能开发是综合锻炼技术使用的阶段,比如做一个计算器、求一个水仙数、从一篇html中摘取你要的信息等等。此段经历会解决你之前感觉学完技术没出用的痛苦,现在你可以想象出各种场景问题,之后用代码去处理。还可以帮助英语系的小师妹,把她需要背的单词从网站中爬取下来,汇总出各类热词、语句、摘要等
    • 项目开发:小功能练手后,接下来你就可以做做项目了。比如你常听到的图书管理系统、教师教学管理系统等等。如果觉得没有意思,你可以从哪里获取项目呢?从你用到的各类APP中,把这里用的功能简化,之后做一些项目开发。比如一个简单的商城、抽奖、全物流单号查询。另外你还可以在github中查找一些项目,去参考学习并自己动手实践。
    • 数据结构:可能初学编程并不会对数据结构有多少思考,也想象不到这类内容是用在哪的。但其实这类技术内容早已被你天天使用,例如:LinkedList、ArrayList、HashMap,这里就包括了数组链表队列散列表等各项数据结构,当你将来要开发一些较大型的互联网应用程序时,你所有的逻辑设计都会考虑到数据要如何存放,数据结构如何设计才能更合理的被程序使用。
    • 算法逻辑:学完数据结构接下来要做的就是对算法逻辑的学习,这里不仅仅是简单的刷题,而是在数据结构的上使用算法将数据更合理的存放和读取以及做相应的操作。就像你能逐步了解的;排序、二分、旋转、洗牌等等,以及将来还会在阅读JDK源码中会看到,扰动函数、负载因子、拉链寻址、开放寻址、哈希散列、除法散列法、平方散列法、斐波那契(Fibonacci)散列法等等。
    • 设计模式:当你开发了很多很多程序代码以后,你会逐步的思考怎么才能让这些代码有可复用性呢,怎么写才能让更多人读懂呢、怎么实现才能让再接需求时能更快的承接呢。这些都会随着你开始实习真正接触到公司级的代码开始逐步的感受到的,写代码不是一锤子买卖,也不是炫耀技术,当你有更宽的视野范围时,就会思考的更多。这里推荐阅读《重学Java设计模式》 这是一本基于互联网真实案例编写的Java设计模式实践图书。全书以解决方案为核心,从实际开发业务中抽离出交易、营销、规则引擎、中间件、框架源码等22个真实场景,对设计模式进行全面、彻底的分析。帮助读者灵活地使用各种设计模式,从容应对复杂变化的业务需求,编写出易维护、可扩展的代码结构。

    以我个人经历和经验来看,想搞定这些学习范围和内容,最大的动力是来自于对编程的热爱和折腾。就像我这样做过很多土项目,如下;

    • 串口通信、在线考试、考试抽题、彩礼管理、成绩管理、即时聊天、计算器还有后来折腾过的仿微信聊天,这些项目都可以不断的夯实个人的技术能力,每一次做新的一个项目都会把之前所遇到的问题,又考虑新的实现方式再折腾一遍。
    • 编程的学习中重要的并不是结果,而是在这个过程中经历了什么。哪怕是犯了很多的错也没关系,因为每一次犯错都是学习的机会,都可以找到更多的资料,每一个资料里又可能教会你其他的知识。

    四、就业

    不只是我,可能很多在上学阶段并不知道都是做Java开发,就业的企业也分为传统行业、国企、半国企、外包、外企、互联网等这么多类型,尤其是我这样在13年毕业的时候,既没有所谓的就业指导,也没有有经验的朋友了解,就只能跟着大家走。好在现在大家可以在互联网中获取到这些信息,也就能早早的帮助毕业同学进行择业。

    1. 传统行业

    • 难度:⭐⭐
    • 公司:金蝶、用友
    • 发展:在传统行业方面有较强的技术积累和产品沉淀,一般其他公司也都有传统行业研发的产品。另外现在的传统行业逐步包括了互联网的领域开发以及技术使用,只不过会比纯互联网少一些高并发场景,因为大部分这类软件面对的并不是C端人群。所以个人进入此类公司会相对比较稳定,但如果后期想再跳槽比较麻烦,会出现技术断层。

    2. 国企&半国企

    • 难度:⭐⭐⭐
    • 公司:联想、京东方、中软国际、国家电网
    • 发展:早前应届生入职国企或者半国企一般会有解决北京户口,但现在可能名额不断的减少了。像中软有一部分自己做的东西,也有一部分是承接外包的内容。此类公司做的工作内容可能比较单一,有时候一个项目会用很多年,但同时可能不会太忙,有一些自己的时间,并且像联想、国家电网福利待遇也都不错。

    3. 外包

    • 难度:⭐⭐⭐
    • 公司:对日外包、企业外包
    • 发展:像是在大连会有一些专门的对日外包企业,还可能需要长期在日本出差。我的两个同学上学时候日语都学的不错,现在一直在日本工作,就他们来说挺习惯在外面的生活了。还有一部分外包是企业外包,比如你入职一个外包公司,可能会把你这个人外派给华为、腾讯、阿里等公司,开发他们外包出来的工作,此类工作一般相对来说短期、非核心。但干的好的也有转正机会,直接入职大厂,不过比较难。而且外包到企业里的人员,没有正式员工的待遇

    4. 外企

    • 难度:⭐⭐⭐⭐
    • 公司:亚马逊、谷歌、微软
    • 发展:外企工作还是挺香的,相对来说没有那么强的加班,福利待遇也比较不错。例如像这类的公司会明确写上不加班,以及各种假期和旅游。但可能是近几年被国内互联网挤压的,也有一些在国内的外企有裁员的动作。

    5. 互联网

    • 难度:⭐⭐⭐⭐⭐
    • 公司:百度、阿里、腾讯、字节、京东、美团、滴滴等等
    • 发展:这类公司在北上广就多了去了,虽然多但面试难度仍然不低,尤其是现在内卷的情况下,需要你会很多知识以及数据结构或者刷算法,才可能找到一份不错的工作。此类的公司的薪资待遇不错,每年都水涨船高,可能一个刚毕业的重点大学,大学生,入职的薪资就要倒挂各类老员工了。除了有少许的内卷,其他的还是挺不错的。

    6. 出国

    • 难度:⭐⭐⭐⭐⭐
    • 公司:加拿大的 shopee、美国的脸书、谷歌、苹果等等
    • 发展:如果喜欢国外的生活,又有出去的本事,那也是一个非常好的选择。像小傅哥熟悉的一个北大的伙伴,入职到了加拿大的 shopee,收入以及整个生活节奏对他来说还是非常满意的。

    以上就是各类公司的一个简单介绍,每一个人就业时都会有自己的选择,比如想安稳些、想要户口、想要高工资、想不那么加班等等,只要你能对自己的选择负责,合理规划好自己的职业发展,那么就可以了。

    五、资料

    1. 技术内容

    其实现在互联网的文档、资料、书籍、视频都已经很多了,但也可能正因为太多了,让初学编程的人找不到所处阶段,大一、大二、大三、大四以及毕业了工作了几年后,都应该找什么样的资料学习。

    所以我这里把各类资料进行整合,按照不同阶段的学习范围把资料分到不同的文件夹去,方便所处不同阶段的读者可以有一个相对准确的学习范围。

    2. 实战内容

    如果你已经跨过了初级阶段,需要做一些实践型的项目,可以关注下我的Github,如下:

    • 内容:本代码库是作者小傅哥多年从事一线互联网Java开发的学习历程技术汇总,旨在为大家提供一个清晰详细的学习教程,侧重点更倾向编写Java核心内容。这部分资料也是我所写博客中实践项目的源码,在这里你可以学到Netty、字节码编程、设计模式、领域驱动设计、规则引擎、面试、架构以及职场经历的分享。
    • 地址https://github.com/fuzhengwei/CodeGuide/wiki

    六、总结

    • 如果一个大学生不怎么关注技术博客,也不知道有哪些技术博客,那么大概率你基本不会了解到你要学什么技术,也没有渠道可以让你拓展自己的知识面。并且尤其是在现在的软件基于人群喜好推荐下,你知道的越少的东西,就越少知道这个东西。所以主动有意识的学习,几乎是你个人成长最快的方式。
    • 做一件事,就把一件事做好!认认真真的长期坚持下来,你会在所走的路上收获很多,千万不要急于求成,否则你能获得的只是微乎其微。当你有一天真的要拿手里的这几张牌,出去闯荡的时候,会被人家炸哭。
    • 另外在大学里进来不要去做一些不会给自身带来长久价值的兼职工作,如果你真的缺那份钱另说,否则尽可能把这些时间用在你将来要找的工作所需的知识学习上。时间不多,做有价值的事更有益个人成长。
    • 酒香不怕巷子深,放在现在是几乎就是不可能的。因为酒不在是你一家酒了,谁能曝光的更多,宣传的更足,展示的更好,谁就更有机会可能成为佼佼者。否则站在台上那个不一定比你强的人,却可能比你过的更好。

    七、系列推荐

    展开全文
  • 我入职阿里后,才知道原来简历这么

    万次阅读 多人点赞 2020-03-13 13:26:31
    私下里,有不少读者问我:“二哥,如何才能出一份专业的技术简历呢?我总感觉自己的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有过简历了,但我认识的一个同行,他在阿里,给我说了...
  • 程序员个人技术博客的价值与意义

    万次阅读 多人点赞 2019-11-08 21:31:07
    被别人超越想写,但不知道写什么技术含量低,写出来没意义,怕别人嘲笑写博客最初的想法写博客的价值与意义加深对技术点的理解,记录足迹,反映成长,分类检索,方便日后查阅观点碰撞,分享收获结交更多志同道...
  • 这篇文章拖了很久了应该说,本来在上周的,但是事情实在是太多,又不草草了事,所以搁置到现在。今天早上正好空出来了,就马上给大家码出来了。 开篇之前,提前预告,底部送价值99的简历模版,看完别忘记领。...
  • 工作两年简历成这样,要你呀!

    万次阅读 多人点赞 2020-04-12 09:55:07
    那么简历不好,相应的内容又没做好准备,你不失败失败。 二、我的简历都石沉大海 这是一份模拟真实的简历,如下; 这份简历有哪些问题: 简历格式不规整,由于是 word 格式在不同版本下展示可能有不兼容的问题。...
  • 优秀的程序员真的不注释吗?

    万次阅读 多人点赞 2020-05-11 07:02:23
    我在很多地方看到这样一个观点,“请停止注释,因为只有烂的代码才需要注释。”这个观点非常巧妙,它让我想起了孟子的一句话,“杨氏为我,是无君也;墨氏兼爱,是无父也。无父无君,是禽兽也。” 动不动就骂别人...
  • 博客,我们是看的

    千次阅读 多人点赞 2011-09-27 18:26:04
    今天看到一个博友对我一篇博客的评论,使我有着强烈的冲动下这篇博客。  在回答上面这个问题前还是有必要列数一下博客给我们带来的好处:  首先,博客我们可以沉淀自己的收获,在博客的过程中我们无形的...
  • #品读《你不努力,也给不了你要的生活》 这几天利用空闲时间读了一本励志书:《你不努力,也给不了你要的生活》。 本文将对文中的内容做简要的概述,并且一些自己的心得体验。 ##一。关于这本书的作者: ...
  • 说程序员不可以浪漫了?!我收集了各种各样的情话,以及特别篇(如吵架、女生来大姨妈等正确处理方案)。以后尽量每月一更,做个文艺情怀程序员,哈哈哈哈。 情话并非自创,各处收集的,侵删 第一回 现在的我 就...
  • 2.好一封工作邮件,重要的不是“怎么”,而是“什么该,什么不该”。 3.重要的备忘、通知和需要留底的话,最好通过工作邮件传递。 I、如何做到位极人臣?(奏章和来往批复的文件得好) 回到古代,司马光跟...
  • 但是这个工具可以帮助你检测安全漏洞,就使用拼写检查一下简单。 JSONSchema2POJO 一个把json文件转换成你java类的在线工具。有多种自定义选项,非常好用。 ADB IDEA 一...
  • 代码的小女孩

    千次阅读 多人点赞 2014-12-23 09:29:40
    代码的小女孩 童话故事 不知道大家有没有看过 天冷极了,下着雪,又快黑了。这是一年的最后一天——大年夜。在这又冷又黑的晚上,一个乖巧的小女孩在机房里调试程序。她从家里出来的时候还穿着一件外套,但是有...
  • Wanan 道过晚安后 ‘我想你’却一直未按下发送键 只是让你不要我一样多想你得安心睡觉
  • 博客的2年,我有12万+粉丝了,还上了百度百科!

    万次阅读 多人点赞 2021-06-21 10:10:48
    如果你了就去做,没有能代表的了你。说割韭菜,你割得动才行! 19年5月左右因为工作需要,去查询了一些关于 JVM 的字节码等内容,但网上的资料大多是Copy来Copy去,找到要的那一丢丢有用的内容,指不定翻阅...
  • 技术书是怎么出来的

    千次阅读 多人点赞 2014-09-15 07:50:44
    说:爱过,过,失落过,高兴过,低徊过,迷惘过,兴奋过,不管怎样,我从未对那些流过的汗水、付出的精力后悔过,如果还有机会,我还愿意再这样走上一遭。
  • 给自己的2011

    千次阅读 2011-12-31 20:34:19
    在CSDN注册了七八年了,直到2011年才开始在这里博客,将自己的一些经验出来,子曰,不积跬步,无以至千里;不积小流,无以成江海,只有自己不断的积累,才能达到自己的目标。自己忘记的话翻出来看看,同时或许能...
  • 使用“不用代码的IDE”是一种怎样的体验?

    千次阅读 多人点赞 2021-05-27 11:39:22
    可能有些人还不知道我指的是啥,以一款今年比较流行的全自动软件开发平台为例,所谓「全自动」,就是你在开发一个项目时,不需要你代码,只需要你画好对应的逻辑流程图,平台便可以自动帮你生成对应的代码。...
  • 今天我要Code吗?

    千次阅读 2010-05-07 10:31:00
    “Manager还能不能Code?”如果你刚从技术开发职位升迁到管理职位,这会是一个在相当长一段时间内非常纠结你的问题。如果你之前技术做得还不错、算是个“高手”,你应该会更加纠结一点,也许每天都在挣扎着:...
  • 努力只是因为去做做的事

    千次阅读 2015-02-02 23:55:19
    记得在About Me的时候有一个TO DO,上面着:设计师自由职业者Dream-Coastline那些做的事,怎么能在半路就返航。几件小事曾经抱怨过这个世界,为什么做得比别人好,却连与之相匹配的待遇。最后明白了。> 这个...
  • 学习需求分析

    万次阅读 多人点赞 2017-04-17 21:34:51
    笔者本身是软件工程专业出身,但是对如何需求分析仍然是一知半解,拿到需求,仍然不知道如何下手,才能达到需求分析的目的。 今天看到一篇文章,让我受益良多,同时参考此文,笔者也尝试了一个需求分析,一个...
  • 我自己都不敢相信,我竟然在半夜冒着大雨跑到一家网吧来这篇文章,这真是太刺激了!!!!一种激情澎湃的感觉在心底跃跃欲试,仿佛就要冲破身体的枷锁。我能体会到耶稣在被钉十字架后复活的那种感觉,真的。
  • 给20年后的自己:免费的午餐最贵

    千次阅读 多人点赞 2016-11-18 08:36:52
    你有过20年后的你会是什么样吗? 是拥有一个美好的家庭? 还是你的孩子初长成人? 是朝着父母的期盼归于安定? 是在一个理想上不停拼搏? 还是终在暮年寻得自己的人生真谛? 时间之于我们每个人都是公平的。...
  • 这很好,只要你决定你展示什么。但是,如果我告诉你,通过文章,你所展示出的隐私超过你所意识到的内容呢? 我们可以想象,一个人的写作风格可能与他或她的个性有某种联系。使用“哇”、“拥抱”、“聚会”等...
  • DL之RNN:人工智能为你歌词(林夕给陈奕迅)——基于TF利用RNN算法实现【机器为你作词】、训练&测试过程全记录 目录 输出结果 模型监控 训练、测试过程全记录 训练的数据集 输出结果 1、...
  • 作为一个在互联网公司面一次拿一次offer的面霸(请允许我使用一下夸张的修辞手法),打败了无数竞争对手,每次都只能看到无数落寞的身影失望的离开,略感愧疚,在一个寂寞难耐的夜晚,我痛定思痛,决定开始《吊...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 247,417
精华内容 98,966
关键字:

像谁的想怎么写