想了解java网络编程入门吗?想了解Java网络编程(一):初体验,自学5个月Java找到了9K的工作,我的方式值得大家借鉴?? 吗?......本文带你一探究竟。
1.Java网络编程(一):初体验
有同学反应,光写数据结构太枯燥了,能不能搞点有趣的东西。嗯,我决定把网络这一部分提到前边来,做一点有趣的东西。这节课,我们体验一下Java网络编程。Java语言被越来越多地应用在网络环境下,偏重于服务端的开发,还有分布式系统,软件定义硬件功能的场景等等。这些场景下,都非常依赖于语言的网络开发的能力。我们今天就尝试使用一下Java的网络编程。Java的网络编程的接口大多数位于 和 java.nio 这两个package里,掌握这两个package是Java程序员必备的基础技能。服务端连接网络的过程和打电话的过程可以进行类比。比如,在手机网络中,每一个手机都有一个手机号,我们知道了某个提供服务的号码(比如外卖电话,银行电话等),拨通这个号码,就可以进行通话了。计算机网络也差不多,在计算机网络中,每个计算机上的每个网卡,都会有一个号码相互识别,这个号码在不同的场景下,会有不同的表现,比如,网址:知乎 - 与世界分享你的知识、经验和见解,再比如IP地址,再比如mac地址。后面我们会一点点讲解这些地址分别在什么场景下使用的。现在我们只需要知道一个服务端是要有一个地址的。而在我们的今天的场景下,这个地址(可以类比手机号码)就是IP地址。不多说了,先上代码,跑起来,大家就明白了。public class Server { public static void main(String args[]) throws { ss = new (8080); Socket conn = ss.accept(); br = new (new (conn.())); bw = new (new (conn.())); String s = br.readLine(); while (s != null) { System.out.println(s); bw.write(s.() + "\n"); bw.flush(); s = br.readLine(); } br.close(); bw.close(); conn.close(); } } 可以看到服务端在8080端口上开启了一个,等待连接。大家可以单步调试一下,看看当调用到accept的时候会发生什么情况。然后就是创建一个Reader用于从网络上读数据,一个Writer向网络上写数据。读进来的一行,把它转成大写,再发回到客户端。客户端也把代码放上来public class Client { public static void main(String args[]) throws { Socket conn = new Socket("127.0.0.1", 8080); br = new (new (conn.())); bw = new (new (conn.())); bw.write("hello\n"); bw.flush(); String s = br.readLine(); System.out.println(s); bw.write("world\n"); bw.flush(); s = br.readLine(); System.out.println(s); br.close(); bw.close(); conn.close(); } } 和服务端对应的,客户端创建一个Socket,这个 Socket 在构造的时候就发起向服务端的连接。连接了以后,也创建一个 Reader,一个 Writer。接着向服务端发送了两个小写字符串。先运行服务端,再运行客户端,我们可以看到这样的结果:问题今天就先稍微体验一下吧。这里涉及到socket,ip 地址, 端口号(程序中是8080)这些到底有什么关系?在Java虚拟机里到底是如何实现的?这些问题,我们会在接下来的课程里慢慢解释。今天的作业,从控制台上输入一个字符串,然后发送到服务端。上一节课:数据结构(七):二叉树的删除和应用举例下一节课:分层网络协议目录:课程目录
2.自学5个月Java找到了9K的工作,我的方式值得大家借鉴
我是去年9月22日才正式学习Java的,因为在国营单位工作了4年,在天津一个月工资只有5000块,而且看不到任何晋升的希望,如果想要往上走,那背后就一定要有关系才行。而且国营单位的气氛是你干的多了,领导觉得你有野心,你干的不多,领导却觉得你这个人不错。我才26周岁,实在的受不了这种工作氛围,情绪已经压制了很多久,一心想着要跳出来,却一直找不到合适的机会。因为身边的朋友有在北京做Java开发的,他工作了四五年的时间,可以在北京拿到3万的月薪,说心里话我是真的羡慕,这远超出了我的认知范围。所以经过朋友的推荐,我开始学习Java,一共学了大概5个多月的时间,今年的3月6号在天津找到了一份Java开发的工作,我包装了一年的工作经验,月薪9K五险一金,这算是成功上岸了。在刚开始学习的时候我考虑过去线下培训班,但是我朋友不建议去,因为他就是培训出来的,他和我说去培训班几乎没作用,你去了之后会发现全程都是靠自己自学,老师上完课就走,不如自己看视频学有效率,如果再有一次机会,我绝对不会花3万块钱去培训。因为朋友是过来人,他的建议我不得不听,而且我在网上查了一下,培训班的口碑似乎都不好,这就让我直接放弃了培训的想法。况且3万的培训费用是我不吃不喝半年的工资,确实有点舍不得。于是我开始自学,因为有朋友是做这行的,所以自己在开始的时候少走了很多弯路,他给了我很好的建议,所以学习Java有个大佬带是尤为重要的。因为做软件研发的都有一个圈子,所以经过了朋友的引荐,他让我加了他们那个圈子的Java技术研讨群。里面大部分都是自学成功的大佬,在整个学习期间,我在他们这里真的是得到了不少的帮助。因为他们每个人都积累了很多资源,所以平时都是相互分享资源,如果公司有内推就业的名额也会相互推荐工作机会。当然里面也有一些还在学习中的人,这都是朋友相互推荐聚到一起的。所以我建议那些还在学习Java的初学者,一定要多结识一些行业内的大佬,可以加一下这个Java交流群,对于一个初学者来说可以获得非常多的帮助,平时有一些问题发在群里,他们中有人工作不忙的时候就会出来解答,效率很高而且每个解答都讲解的非常透彻。我之所以能在5个月左右的时间自学Java就业,确实是得到了这些大佬不少的帮助。知乎营销平台我的学习心得,我认为能不能自学成功的要素有两点。*点就是自身的问题,虽然想要转行学习Java的人很多,但是非常强烈的想要转行学好的人是小部分。而大部分人只是抱着试试的心态来学习Java,这是完全不可能的。所以能不能学成Java并且就业,最关键的一点就是自己的愿望是否强烈。我是属于非常强烈那种,因为忍受不了现在工作的氛围,以及羡慕朋友在北京可以拿到3万的月薪,这些因素都促使我非常拼命的学。在加上自身可以做到从下班就开始看视频自学,一直学到晚上12点的这股劲,所以才能在5个月的时间内达到就业的水平。第二点就是有大佬带你,如果全程都靠自己摸索是非常难的,对于一个不是本专业的人来说从开始的时候就“无从下手”。更不要说在学习过程中遇到的无数bug问题很难得到解决,因为我们在学习过程中会遇到无数问题,有的时候一个小问题就能困扰我们几个小时的时间,会导致我们的学习效率很低,这种情况出现多了以后,信心就会受到打击,觉得自己不适合学编程,最终放弃。而当有一个大佬去给你解答后,你会很快得到答案,并且能理解为什么要这样做,到底是哪里出现了问题,学习效率会非常高。所以总结就是自身自觉主动学习在加上大佬全程带你,其实学习就是这么简单的事情,无非就是这两个关键的要素,少了其中一个都很难成功。自学Java必须注意的问题:(1)代码规范初学者一定要注意培养自己的代码规范,每行代码必须要注释,我之所以只学了5个月就能拿到9K的薪资,就是因为我代码规范很好。其实一个初学者在开始的时候能培养出好的代码规范很难,这源于在整个学习过程中有大佬带我的原因。(2)交流沟通切记不要认为自己可以摸索自学成功,能达到一定高度的水平,一定离不开很多专业人的指导,所以多认识一些大佬尤为重要,圈子真的可以决定我们可以达到什么水平。如果大家找不到合适的圈子,我强烈建议大家添加下面的Java技术研讨群,多认识几个大佬对于职业生涯有好处。知乎营销平台(3)效率:能快尽量快,如果你已经决定要转行学习Java,就千万别拖泥带水,把大部分的精力都投入进来,如果你是那种三天打鱼两天晒网的情况,我劝你尽早的放弃不要浪费时间,有这个时间去锻炼锻炼身体不好吗?(4)学习心态一定要抱着决心转行的心态来学,自身的意愿强度决定了你是否能转行成功。给自学Java的初学者的学习建议:1.了解如今的市场,都需要掌握哪些主要技术就可以快速就业,目前的企业都需要什么人才,这是你学习的方向和目标。2.系统的学习规划:有一个整体学习大纲,要知道自己每天学习什么,做什么练习进行知识巩固,一个阶段学完后应该完成什么项目实战,进行循序渐进的学习,不可以盲目的瞎学。3.一个大佬的指导:作为一个初学者一定要记得找大佬指导你,即使是花点钱也没关系,只要你能把技术学好就行。自己摸索基本都是弯路,很多人为什么学了一两个月就放弃了,因为他不知道路在哪里,整个人都是迷茫的,自然容易放弃。但如果你有了一个大佬带你,他就会给你做详细的学习计划,给你安排好一切,在整个学习过程中给你解答疑问,你学习起来就会思路清晰,简单效率。 Java主要的学习内容:一、JavaSE基础篇JavaSE就是一种标准版,是Java语言的基础部分,Java衍生出来的各种框架(如Spring系列)各种产品都是基于JavaSE标准,JavaSE是Java向上发展的基础,Java任何高级产品的底层基础都是JavaSE,通俗来讲这是所有孩子的”爹“。JavaSE如果学不好,理解不透彻,后面学习框架时就有如天书一般,所以JavaSE这部分的重要性是不言而喻的,希望各位初学者铭记。主要包含内容:数据类型、基础语法、运算符、流程控制、数组、面向对象、常用类、异常处理、集合、IO流、多线程、反射、注解、解析、网络编程。二、数据库篇数据库是学习Java语言必学的一项内容,常见的数据库就是MySQL和Oracle这两种,作为初学者一般都是学习MySQL为主,一般情况下中小型企业都会选择MySQL数据库,比较大型的互联网公司会选择用Oracle,而学习Oracle相对于MySQL也要复杂一些,建议是主要学习MySQL数据库,Oracle作为了解即可。学习数据库较为简单,基本的操作就是增删改查。三、Web开发Web前端内容:HTML/CSS//(前端页面)注意:Java后端开发可以不用过多关注HTML页面及CSS的处理,但是最起码要会用简单的HTML,是必需要会的,因为Javaweb后端程序员毕竟要接触使用AJAX方式处理数据及显示。当然如果只关注服务器端实现而不考虑任何用户界面,则HTML、CSS、都不用关注,但是完全脱离前端的开发现在虽然也不少,但是绝对不关心前端是不可能,尤其是,但是前端却可以完全不关心服务器后台的任何实现。JavaEE内容:Servlet/JSP虽然现在网上在传JSP很少用了,可能是被一些模板或JS AJAX方式代替了一些,但是我认为还是应该接触一下,万一要用到不会怎么办,而且它是Java EE的动态网页实现标准组件。学习JSP过程也能更好的帮助我们理解web会话的过程,掌握web会话都有哪些我们必需知道的。如果学习Javaweb、JSP都不接触那就相当于学习使用而一点不接触一样,岂不是稀里糊涂。包括开发Javaweb 我们必需知道的概念诸如Web应用上下文,请求对象,响应对象,,Cookie等都是在接触学习JSP和Servelt中体现的,还有一些比较少见的EJB JSF JMS 以及 Java Felix等。一些初学者不清楚这些难免会有误区,尤其是有些较成熟的工程师也这么说,我只能说他们很无知,只是代码机器而已,其实对于应用开发设计也就稀里糊涂,人云亦云罢了。永远没有被淘汰的技术也没有永远流行万能的技术,要看在什么环境和场合应用,符合我需求的技术和工具就是好的,就是对的。四、高级框架1、 核心IOC容器2、Spring boot 在Spring基础上的更全面提升效率的Spring工具3、ORM 框架当今流行使用较多的是Mybatis 和 MP(Mybatis插件),Hibernate是可选性学习的4、模板技术,比较成熟的、Spring Cloud 微服务框架,Spring Cloud提供的全套的分布式系统解决方案。五、工具maven 是构建管理项目的工具,svn 和git是团队协作开发的项目源代码及相关文档资料管理工具,需要学习者初步掌握其应用。像Tomcat,jetty ,resin,JBoss,GlassFish 等都是部署运行Java web应用的服务器。以上就是初学者大概学习的内容,我是尽量站在初学者的角度来说的,没有写得特别复杂,怕初学者看不懂,没有实质性的帮助。所以我尽量用白话把话说的简单一些,给大家罗列出主要学习的Java知识点。Java学习 - 知乎有任何关于Java相关的疑问,随时私聊我。
上述文章了解到关于Java网络编程(一):初体验,自学5个月Java找到了9K的工作,我的方式值得大家借鉴?? ,让我们对java网络编程入门 有一个直观的认知。我们发现,作为一个优秀的Java程序员是多么的自豪。