本人是西安一所985院校09级毕业生,大学应用数学系。大1时学习较好,那时学C语言的基础很不错。但大2、3、4都是在网吧里度过的,招聘会就去了那么两次,(那时,太天真了)。
毕业后,再找来找工作,找不到技术类(啥都不会啊),别人看我学校不错,在一培训机构教书2000,干到了现在(去年10月到今年5月了)
工作期间,每天都要5个小时的WOW。但现在,我真的想改变命运!
从4月20号到现在,每天能抽出6个小时看JAVA,而且有双休。所以最近将JAVA基础的视频看的差不多了,买了本本网上推荐的Think in java,并开始读了200页了。
一个比较好同学在北京做软件,一直叫我过去,说他来教我,只要我能每天看书12小时以上,保证我3个月学通JAVA,并找到好工作。但我担心自己现在实力太差了,北京消费又那么高,怕过去也难过日子。
想待在西安自学,各位高手指点下该看到啥程度。
首先既然你选择了java就要知道最核心要学习的是一个叫做面向对象的思想,至于这个思想你那个比较好的同学说每天12小时看书属于一个干扰选项,毫无关系。
对于计算机编程尤其是面向对象思想来说,属于一个典型的领悟性知识,不是你看书多长时间就可以的,从这个层面来说这个和佛教看经书一样,你觉得没悟性的人每天看12小时金刚经就能领悟么?
多的不说,捞干的讲,所谓CS和BS结构是在互联网飞速发展以后出现的,CS就是传统的客户端服务器应用,而BS是浏览器服务器应用,都需要有服务器,严格说单机版的软件(完全不上网)不属于这两种,那么就要知道java究竟适合做什么
如果要做CS结构软件这个是比较麻烦的,因为多数用户使用windows系统,如果要做CS结构的软件需要让客户在本机上安装java的运行环境(jre或者jdk)才可以运行软件,虽然很多优秀软件比如Eclipse都是java开发的,但是要做到和C,C++,C#媲美的桌面应用图形界面要做的工作非常艰巨
而BS结构就是java的优势了,对于微软来说他们的BS程序只能跑在IIS服务器上而IIS服务器又只能在windows上安装,但是java就不同了,java的特点是跨平台无论你是Linux,Unix,MacOS还是windows都可以安装java应用服务器(最著名的tomcat,JBoss,WebSphere,WebLogic),由于浏览器服务器的软件结构,用户是完全感受不到你服务器端使用的是什么系统,但是由于java如此灵活在服务器端就可以实现一次编写处处运行
两种软件结构说完了,再说说现在java的趋势,java发明之初是用在洗衣机上的,由此java起初是一款嵌入式编程语言,而现在很多手机依然使用java来编程,这里就涉及到java类库的三个版本java SE,java EE,java ME,其中ME就是专门给手机之类移动设备使用的,而如今Google推出了android以后让java更上一层楼,android其实是一款使用java语言的Linux手机系统
另外java最新版本javaFX,正在挑战RIA行业两个老大flash/flex和Silverlight,另外这个版本的后续应该会非常容易移植到android上,这样就造成一次编写在BS结构服务器端可以跑放在android手机上也可以跑
另外一楼说的SSH已成明日黄花,struts正在逐步被淘汰,取而代之是struts2,虽然名字只相差1个数字,两个框架是完全不同的struts2其实是围绕着xwork来开发的比struts1.x强的不是一星半点现在还有人用struts完全就是历史遗留项目而言
至于spring,尤其内容很庞大而大家通常使用的组件又很少造成很大程度的冗余,Google guice就是一款非常不错的AOP组件可以代替spring的AOP组件(spring最常用的组件)
另外你朋友在北京应该做的是BS javaEE或者手机,这两块javaEE要赚大钱难,你需要有团队而你只是个棋子,团队赚钱,你分残羹而言,对于手机来说如果你开发android完全可以做个freelancer,可以赚很多,不过建议是少看书,每天12小时写代买加思考,书这种东西尤其是字典一样厚的技术书要当做工具书来翻,通读是浪费时间而且你根本记不住,只要知道有问题哪里找即可
另外所谓985只能证明你高中很会应试而已,建议你起北京不要老把这事挂嘴边,你知道身边谁是北青人大的?
此外推荐一本杂志《程序员》每期都要看,比看12小时书有意义的多
首先既然你选择了java就要知道最核心要学习的是一个叫做面向对象的思想
对于计算机编程尤其是面向对象思想来说,属于一个典型的领悟性知识,不是你看书多长时间就可以的,从这个层面来说这个和佛教看经书一样,你觉得没悟性的人每天看12小时金刚经就能领悟么?
多的不说,捞干的讲,所谓CS和BS结构是在互联网飞速发展以后出现的,CS就是传统的客户端服务器应用,而BS是浏览器服务器应用,都需要有服务器,严格说单机版的软件(完全不上网)不属于这两种,那么就要知道java究竟适合做什么
如果要做CS结构软件这个是比较麻烦的,因为多数用户使用windows系统,如果要做CS结构的软件需要让客户在本机上安装java的运行环境(jre或者jdk)才可以运行软件,虽然很多优秀软件比如Eclipse都是java开发的,但是要做到和C,C++,C#媲美的桌面应用图形界面要做的工作非常艰巨
而BS结构就是java的优势了,对于微软来说他们的BS程序只能跑在IIS服务器上而IIS服务器又只能在windows上安装,但是java就不同了,java的特点是跨平台无论你是Linux,Unix,MacOS还是windows都可以安装java应用服务器(最著名的tomcat,JBoss,WebSphere,WebLogic),由于浏览器服务器的软件结构,用户是完全感受不到你服务器端使用的是什么系统,但是由于java如此灵活在服务器端就可以实现一次编写处处运行
两种软件结构说完了,再说说现在java的趋势,java发明之初是用在洗衣机上的,由此java起初是一款嵌入式编程语言,而现在很多手机依然使用java来编程,这里就涉及到java类库的三个版本java SE,java EE,java ME,其中ME就是专门给手机之类移动设备使用的,而如今Google推出了android以后让java更上一层楼,android其实是一款使用java语言的Linux手机系统
另外java最新版本javaFX,正在挑战RIA行业两个老大flash/flex和Silverlight,另外这个版本的后续应该会非常容易移植到android上,这样就造成一次编写在BS结构服务器端可以跑放在android手机上也可以跑
另外一楼说的SSH已成昨日黄花,struts正在逐步被淘汰,取而代之是struts2,虽然名字只相差1个数字,两个框架是完全不同的struts2其实是围绕着xwork来开发的比struts1.x强的不是一星半点现在还有人用struts完全就是历史遗留项目而言
至于spring,尤其内容很庞大而大家通常使用的组件又很少造成很大程度的冗余,Google guice就是一款非常不错的AOP组件可以代替spring的AOP组件(spring最常用的组件)
另外你朋友在北京应该做的是BS javaEE或者手机,这两块javaEE要赚大钱难,你需要有团队而你只是个棋子,团队赚钱,你分残羹而言,对于手机来说如果你开发android完全可以做个freelancer,可以赚很多,不过建议是少看书,每天12小时写代买加思考,书这种东西尤其是字典一样厚的技术书要当做工具书来翻,通读是浪费时间而且你根本记不住,只要知道有问题哪里找即可
此外推荐一本杂志《程序员》每期都要看,比看12小时书有意义的多
学习Java编程技术肯定是以就业拿到高薪工作为主要目的的,可是高薪不会那么轻易拿到,这是一个最简单的道理。没有付出就没有回报,在整个学习Java编程技术的过程中,你需要付出时间、精力、金钱。废话不多说直接上干货。
在开始学习之前你需要做到以下5点:
第一:需要达到什么样的技术水平才能就业?
既然是为了就业,你就要知道学习Java编程技术需要达到什么样的技术水平,才能获得一份Java开发的工作。就好比高考的一个分数线,你是否能被大学录取,要看你能不能过分数线。软件公司录用你,也是有一个标准,所以首先你要知道学习Java编程技术应该能达到什么样的水平才能就业。
目前行业就业标准:需要有项目开发的经验,一年经验Java开发项目经验以上,进公司一周后可以参加项目模块的开发。
第二:明确Java都应该学习什么企业需求的技术
IT行业技术更新的比较快,所以我们肯定是学现在企业需要的技术,而不是一些已经淘汰的技术。所以作为一个零基础开始学习Java的人,你应该了解你现在需要学哪些技术,这些将是你要攻克的内容。
第三:合理的学习周期计划
合理的学习计划周期,你要学一个专业很强的技术,你肯定不能盲目的学,肯定是要把所有的内容进行分块来学。每天的内容都是固定的。学习编程有一个词语叫做“循序渐进”。不能急也不能拖。每天学习的量要差不多,然后完成每天的知识,并且把它掌握,每天做多少练习,完成什么作业,都要明确。
这要根据你的学习能力接受能力以及每天付出多少时间来学习制定的合理周期。
举例:如果一天8个小时,建议总时长5个月。
第四:有一个指导你的技术大佬
如果决心想学好Java编程技术,就需要在前期有一个技术好的人指导你。全程靠自己自学Java编程技术的人其实心里是并不想学好的。大部分都是不想付出就想得到回报的。因为Java编程技术专业性很强,前期是必须有人带的。主要是因为遇到问题无法解决,解决起来效率非常低,也会越学越迷茫,最后导致浪费时间。缺少跟专业的人交流的过程,毕竟高薪不是随便拿着,如果每个人都可以靠自己自学会Java,那你应该是985、211这种学习能力很强的人。由于不是这个行业的人,对于编程学习的方法一无所知,所以一定会造成走很多弯路的结果,最后导致放弃。
第五:意志坚定形成每天的学习习惯
以上4点都解决之后,剩下的就是半年如一日的每天学习了。根据我接触的人来看,大部分的人都会在中途放弃,主要原因就是渴望值很低,你想要得到一个东西,你必须非常渴望,并且付出很多东西,大部分人都不是这样的,所以坚定自己学习Java编程技术的决心很重要。
如果大家对于学习Java有任何问题(学习方法,学习效率,如何就业),可以随时来咨询我,这是我的Java交流学习扣扣qun:前面是六一五,中间是七四一,后面是六三六。 多多交流问题,互帮互助,群里有不错的学习教程和开发工具。
小白学习Java最常见的几个问题和误区:
1. 无脑盲目的刷视频去看,但是很少去练习。正常的状态应该是在整个学习的过程中,四分之三的时间都是在练习。视频只是让你了解学习什么内容,看一遍就行了。有很多人都是无脑的刷视频看,最后浪费几个月的时间,也找不到工作。
2. 小白开始学习的时候,看书是一种非常严重的误区。所以新手禁忌看书学习编程。至于原因是什么,在这里我不做太多解释。
3. 很多人都是遇到一个问题,就是能看懂代码,但是不会写,这是比较常见的问题。
4. 还有一个最现实的问题,就是学了后面的忘了前面,这是由于学习方法和方式存在这很大的错误。
5. 整个学习流程混乱,没有系统的安排,学的不系统不专业,技术掌握的不好,浪费几个月甚至半年的时间。
6. 缺乏和专业人士交流的过程,作为一个小白,在初期学习的时候,所学的最多的东西一定是从别人那里学到的,闭门造车。
Java学习到什么程度可以找第一份工作?Java开发属于入门容易精深难的编程语言,尤其各种框架繁杂,很难一口气就达到很高的程度。其实面试官也明白:对于刚刚步入职场的人,他们不会奢求你是个全才,但是要个能做事的人、会做事的人则是他们的底线。
即便你有名校标签或者在大学期间有着不错的学习成绩,但是也要深刻的认识到:大学的教学内容与社会工作需求方向是不一致或者说是不吻合的,单纯指望靠大学所学的知识一毕业就风生水起、加官进爵是非常不现实的想法。
平庸的自己,如何在海量简历中脱颖而出,我认为最重要的一点就是精准表达自己的价值。
各个公司业务不同,要求高低和方向也不同,因此无须让自己符合每一个方向,但是至少在某一或几个业务模块里体现自己的存在感。同时也要明白职场也是浓缩的社会,除了业务能力,表达能力、学习能力、应变能力、抗压能力等也是HR面试时非常看中的能力。
如果单纯从技能角度出发,我建议大家从如下知识点入手:
· Java基础:基本语法、面向对象、常用类、正则、集合、Io流、多线程、Nio、网络编程、JDK新特性、函数式编程等。
· Javaweb:掌握数据库(MySQL)、前端(Html5、CSS3、JS、BootStrap、jQuery)、后端技术(Servlet、Filter、Listener、JSP)、会话跟踪技术(Cookie、Session)、版本控制器(SVN)、在线支付等。
· Java框架:掌握主流的企业级框架,开发和管理工具(Maven、Git、Idea)、Spring、webMVC框架(SpringMVC、Struts2)、ORM框架(Hibernate、MyBatis)、权限管理(Shiro)、工作流(Activite)、POI、Echarts、Spring新特性等。
· Java+云数据:完成金融/电商类大型分布式项目/APP 服务端项目
最后,希望大家都可以找到一份称心如意的“第一份工作”
首先总结一下做java最后大致是两个方向:web企业级开发(JavaWeb
J2EE)和手机android开发。这两个方向的先决条件是J2SE,J2SE并不是那么简单,只有当你逐渐学的深入了你才体会到java的精髓。
1.HTML+CSS+DIV,前端会用到,作为研发人员至少应该会简单写些页面出来,这是许多编程语言都需要了解的基础。
2.JAVASCRIPT,想要使用一些特殊的效果就需要这个了,但是你并不需要很精通,当你需要用到JS的地方可以用Jquery代理,Jquery很好学,很有用的JS框架,看似复杂华丽的效果他都能轻松完成。
3.Ajax,前端异步交互技术,值得去研究
4.JSP,Servlet,Javabean,发展至今已经不提倡在JSP里嵌入JAVA代码,所以仅仅是作为视图层使用,嵌入些如JSTL和Struts2标签库的标签成为动态页面。Servlet是应该重点学习的,包括如过滤器、监听器等,这些都是当下Struts2或者未来WEB框架的底层基础和原理。
5.Strut2+Hibernate(or JPA)+Spring,当下十分流行的开发框架。其实是很容易上手的,但关键是需要懂得原理。
6.Web Service技术,它能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web
Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。
用一个月时间把《Java2参考大全》或者《Java核心技术1(基础篇)》拿下来,然后再用1个月时间把《Java核心技术2(高级篇)》拿下来,最后再把《Java编程思想(第四版)》弄熟(理念性比较强,主要是将编程思想的),然后强迫自己去多做项目,慢慢累计自己的代码量,这样差不多1年时间,估计你就能掌握java编程了,也就代表你能上班了。