javajava tcp socket编程 这种是怎么做出来的 见图

android客户端传图给java socket服务端,服务端再把接收到的图返回给客户端显示出来。但服务端接收到图并保存到文件了,客户端却收不到返回的图?
[问题点数:100分,结帖人Striker07]
android客户端传图给java socket服务端,服务端再把接收到的图返回给客户端显示出来。但服务端接收到图并保存到文件了,客户端却收不到返回的图?
[问题点数:100分,结帖人Striker07]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2014年6月 移动开发大版内专家分月排行榜第一2014年3月 移动开发大版内专家分月排行榜第一
2014年11月 移动开发大版内专家分月排行榜第二2014年4月 移动开发大版内专家分月排行榜第二2014年2月 移动开发大版内专家分月排行榜第二
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。Java:这种是如何请求Socket的,第一次见_百度知道
提问者采纳
您好,一、建立服务器类Java中有一个专门用来建立Socket服务器的类,名叫ServerSocket,可以用服务器需要使用的端口号作为参数来创建服务器对象。ServerSocket server = new ServerSocket(9998)这条语句创建了一个服务器对象,这个服务器使用9998号端口即在端口9998上注册服务,这里稍微要注意的是端口的分配必须是唯一的。因为端口是为了唯一标识每台计算机唯一服务的,另外端口号是从0~65535之间的,前1024个端口已经被Tcp/Ip 作为保留端口,因此你所分配的端口只能是1024个之后的。当一个客户端程序建立一个Socket连接,所连接的端口号为9998时,服务器对象server便响应这个连接,并且server.accept()()方法会创建一个Socket对象。服务器端便可以利用这个Socket对象与客户进行通讯。Socket incoming = server.accept()() ; // 监听窗口,等待连接进而得到输入流和输出流,并进行封装BufferedReader in = new BufferedReader(newInputStreamReader(incoming.getInputStream()));/*当读取文件时,先把内容读到缓存中,当调用in.readLine()时,再从缓存中以字符的方式读取数据(以下简称“缓存字节读取方式”)。*/PrintWriter ut = new PrintWriter(incoming.getOutputStream(),true);随后,就可以使用in.readLine()方法得到客户端的输入,也可以使用out.println()方法向客户端发送数据。从而可以根据程序的需要对客户端的不同请求进行回应。在所有通讯结束以后应该关闭这两个数据流,关闭的顺序是先关闭输出流,再关闭输入流,即使用out.close();in.close();二、建立客户端代码相比服务器端,客户端要简单一些,客户端只需用服务器所在机器的ip以及服务器的端口作为参数创建一个Socket对象。得到这个对象后,就可以用&建立服务器&部分介绍的方法实现数据的输入和输出。Socket socket = new Socket(&168.160.12.42&,9998);或:Socket socket = new Socket(InetAddress.getLocalHost(),5678); // 向主机名为InetAddress.getLocalHost()的服务器申请连接客户机必须知道有关服务器的IP地址,对于着一点Java也提供了一个相关的类InetAddress 该对象的实例必须通过它的静态方法来提供,它的静态方法主要提供了得到本机IP 和通过名字或IP直接得到InetAddress的方法。in = new BufferedReader(new InputStreamReader(socket.getInputStream()));out = new PrintWriter(socket.getOutputStream(),true); 以上的程序代码建立了一个Socket对象,这个对象连接到ip地址为168.160.12.42的主机上、端口为9998的服务器对象。并且建立了输入流和输出流,分别对应服务器的输出和客户端的写入。
提问者评价
其他类似问题
为您推荐:
socket的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁java socket 这种是怎么做出来的 见图_百度知道
提问者采纳
每个客户端同时也是服务器就行了吧,客户端连接到服务器后把客户端用来接收数据的端口号告诉服务器,服务器把ip与端口号存在一个集合里,需要的时候用Socket把数据按照存下来的ip与端口号发出去就好了说白了就是数据的发送与接收而已,完全没有什么难理解的地方吧?想发数据就用Socket 想收数据就用ServerSocket
提问者评价
我知道了 谢谢
其他类似问题
为您推荐:
socket的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁我们如何学好Java?
我先说说自己情况,一名大二学生,马上大三了,跟着一个培训班学习java三个月了,我们一直在学基础期间老师也让做过五子棋,弹球游戏,但是没有一个自己能打出来的,感觉很郁闷,因为在一块学的他们就能做出来,而且很多都是我陌生的知识,
有的就不知道,我也很郁闷,感觉自己这三个月貌似什么也没学一样,我这种在学习java中缺少的是什么?_?代码还是?我接下来应该怎么改变自己这种状况?求解答
按投票排序
首先先搞懂JavaSE的部分,Swing和swt部分就可以少看或不看,因为现在用的比较少。重点是看懂Java中的面向对象、集合框架、JDBC、异常、IO、线程和网络编程。JavaSE搞定后再学习Servlet、JSP,然后才是经典的Struts2、Hibernate和Spring,学习框架时重点理解框架的运行原理,甚至可以尝试自己写个轻量级的框架。理解运行原理的最好方法就是阅读源代码,还是要感谢Java中的开源项目。这期间还要多找各种大小的项目去完成,不一定要大,但是要精致,功能要完整,这样可以练习所学知识,并且可以在做项目中发现自己的知识体系中不足的地方。关于看视频,我不推荐,很多同学一天到晚就知道看视频,殊不知,编程真理在于“练习,练习,不停练习”!
再补充下:当学习Java的期间,会碰到各种各样的异常,请积累这些异常信息,以及如何出现的异常和如何处理的,因为java中常见的异常就那么几种,积累的多了,处理问题的能力就提高,这样水平会提高的很快!-----------------日修改---------------这个答案最开始是11年回答的,不少留言的同学问现在这个答案是否还有效,答案是依然有效。因为这几年的发展,从招聘的角度看,使用 Java 的IT 的公司对技术的要求变化不大,依然要求你有扎实的 JavaSE 功底,会使用常用的框架。SpringMVC 这几年的占有率迅速的提高,可能之后会取代 Struts2,但是无论怎么变化,这些还都是 MVC 模式,理解了这个模式,上手任何的 MVC框架都应该很快。企业需要的变化还体现在大数据方面,因为 Hadoop 的流行,Java 的应用场景又多了一个。所以,不喜欢 web 的可以考虑学习大数据方面的知识。另一个流行的场景自然就是 Android,学习 Android 依然需要你有 JavaSE 的底子+HTTP 协议的理解,再配合上 Linux 的知识就可以开始了。再说下找项目的问题,初学者可能会碰到不知道做什么的问题,其实最开始大家都是从模仿开始的,例如你学会了 jsp+Servlet,那就可以模仿一个 v2ex 这样的论坛出来。学会了 SpringMVC,那就试着将论坛的代码重构,提供restful接口供客户端访问(Android、IOS 、web 等)。论坛做的没难度了,那就模仿一个团购网站,依然是不一定要做全部的功能,但是做出的功能要稳定,要精致。或者一个微信公众平台的开发都是不错的项目。初学者看源代码有的人推荐看 Struts2、spring 的,但是我相信10个初学者9个看不懂,那就从简单的开始,例如 Apache 的 Commons 库,例如 lang、dbutils、io 等,这些都是非常不错的代码,类的数量不多而且质量也不错,这些看懂之后,你的基础水平增长的不是一点点。再次提醒初学者,学习编程没有你想的那么简单,必须要多练习,多思考,最主要的是你对这个有兴趣。现在不少网站和媒体都宣传1个月学会前端、3个月入职 BAT 的口号,那也就是口号而已,别太认真。这条路没有捷径,写你的代码就是了!暂时就这么多,有问题的可以留言!感谢大家捧场!(利益相关,我是Java 培训师)
马士兵有一篇文章,我觉得写得很好,原文转载如下,希望题主可以好好读读。------------------------------------------------------------------------------------------------------------目录JAVA自学之路 一: 学会选择.............................................................................................. 1JAVA自学之路 二: JAVA自学路线图................................................................................... 2JAVA自学之路 三: 要动手.................................................................................................. 3JAVA自学之路 四: 要事为先.............................................................................................. 4JAVA自学之路 五: 问题解决之道....................................................................................... 51:要仔细的观察错误的现象,是的,要仔细.............................................................. 52:要仔细思考问题会出在哪些环节(重要).............................................................. 63:如何定位错误(重要)分析清楚有哪些环节之后,下一步就是定位到底什么环节出错了。 64:如果还不行,google吧........................................................................................... 65:什么?还不行?那么就BBS吧................................................................................ 76:还解决不了?问老师吧,这个只能是在你参加了培训的前提下了。........................ 87:还解决不了?天哪,是不是思路从根上就搞错了?写信给我,让我也学习一下,共同进步吧。 8JAVA自学之路 六: 项目的自学........................................................................................... 8JAVA自学之路 七: 路线图明细........................................................................................... 9一:J2SE.................................................................................................................... 9二:数据库(Oracle或者MySQL)............................................................................. 9三:JDBC.................................................................................................................. 9四:HTML_CSS_JAVASCRIPT...................................................................................... 10五:Servlet & JSP...................................................................................................... 10六:Struts................................................................................................................ 10七:XML.................................................................................................................. 10八:Hibernate.......................................................................................................... 11九:Spring............................................................................................................... 11十:EJB3.0............................................................................................................... 11十一:至于SOA,对于自学的同学来说,暂时不用特别关注。.................................... 12JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训。
决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机、嵌入式、游戏、3G、测试等。 那么究竟应该选择什么方向呢?
我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了解这个世界吧。 每个培训机构都会宣传自己的好处,并不能说明大的趋势。
一些新闻文章很有可能是枪手写的,不必太过相信。国外背景的教师和课程,未必适合你。那么怎么才能确定自己将来的方向?如何才能从纷繁复杂、或真或假的数据世界中挖出一条路?
我讲一个通过招聘网站的观察方法。可以到各种招聘的网站上查询信息(可以到google上查询招聘的网站),例如:
招聘频道 ,综合了各大招聘网站的数据。 这些数据都是最真实不掺假的原始数据,你可以每隔一段时间搜索一次,一些规律就会被总结出来了。 比如说我在中搜索java,全国大概提供了3万个职位。
位然后要多翻几页,这样不仅能够看清楚大概有多少是有效的职位,而且还可以看清楚用人单位最关心的技能是什么,这个很重要,决定着你将来要花多少时间和精力在特定的知识点上,比如说swing,搜了一下,全国只有700个左右的职位,仔细读了一下,也并非全是有效的职位,花太多时间和精力在这个上面就不值得了,当然自己感兴趣或者为了研究的话另当别论。不过如果是为了快速的就业,把太多时间和精力花在很多职业生涯的前一、二年用不到的知识上就太可惜了。
同时,并非某一个行业的职位数目少,就不能当作一个方向进行选择,比如.NET,我搜索到的职位数是1.6万左右,比java少,是不是就选java了呢?不一定,因为java职位虽然多,但是可能竞争者可能也多,有些方向虽然职位数不多,但是和你竞争这些职位的人数量也少,不见得就不能选择。不过,如果某一个方向的职位数目过少,你可就要小心了,选择这样的方向风险会非常大,如J2ME。 我个人觉得java/J2EE、.net、嵌入式开发是不错的三个方向。 如果非要在java和.net中选择的话,我个人是推荐java的,原因: 1:Java能够开发linux、unix服务器上的程序
2:JavaEE和.NET在企业应用方面的关注点是差不多的,但是学习了java如果将来想转到.net上会比较简单,几天的学习然后上手开发应该是问题不大的,但是反之就不行了。当然如果有了些经验之后,你就会发现语言或者平台不再是技术上的阻碍,一些原理性的东西学到手,然后再加上项目经验,使用什么平台,反而不是最重要的。不过如果非要用一种平台进入企业开发的领域,至少在目前,2007年9月,我推荐java。 完全可以不同意我的观点,但是无庸置疑,如果是为了就业,多到招聘网站阅读阅读职位的信息,对你将来的方向和学习是大有益处的。 选择是最痛苦的,看看《天生购物狂》中的刘青云就知道了,不过既然无法逃避,就作出自己的选择吧。 每个人都会受到别人的影响,在作出决定之前,要想尽各种办法让自己理性一些吧。这样,你的选择会离正确的方向更近一些。JAVA自学之路 二: JAVA自学路线图有不少的同学发信给我,和我探讨java的自学过程应该是什么样的,毕竟有很多人因为各种各样的原因不能参加培训。我试着给出自己的见解,抛砖引玉吧。这个路线图是给那些为了就业的人准备的,如果只是兴趣,不一定照这个走。这里只是讲了路线图,关于路线中的各个阶段,学到什么程度,如何学习等,可以参考后面的JAVA自学之路 七:《路线图明细》。首先要学JavaSE,这是无庸置疑的。与此同时,是的,与此同时,和JavaSE的学习同步,建议大家研究一下数据结构与算法。在这儿之后,你可以选择向J2ME、或者Java GUI、Socket编程等方向努力,但是通过第一篇的办法,你可以很容易就将这方向过滤掉(永远不要忘了我们是为了就业),好吧,暂时和它们诀别,还是向着J2EE的方向前进吧。在JavaSE完成之后,可以试着完成一些小项目,同时关注一下设计模式的内容,不必强求自己能够完全掌握各种细节,往前走吧。掌握一种编程工具,比如说Eclipse。数据库,可以选择使用Oracle或者MySQL开始。JDBC,用Java连接数据库。可以选择在这个地方切入Hibernate,也可以选择在Struts之后。 HTML
CSS JavaScript,这些东西是做web项目必需的内容。 Servlet
\JSP,服务器端必需。XML 、AJAX,新的流行趋势不能不了解。作一些小项目吧。比如BBS、留言系统、学籍管理、商城等等,随便找一些业务逻辑比较简单的来做一做: Struts,MVC的典型应用,Hibernate,OR
Mapping的典范之作。Spring IOC + AOP,面向对象 + 面向切面,完善的旅程。把以前自己的小项目加入Struts、Spring、Hibernate的元素吧。去研究各种商业项目的业务逻辑吧,才能在你的简历中加入浓重的一笔。EJB3.0,java在走了很多弯路后的回归之作,值得研究。SOA,业界铁定的未来趋势,要紧紧跟随。在后面,我会告诉你每一步的学习方法和学习重点。JAVA自学之路 三: 要动手 无论如何,请坚持不懈的动手实验! 学习Java要动手,仅仅是看和听是不能够学好编程的。总有同学来信问我们这样的问题,说:"老师我看了视频了,可是怎么一动手就没有任何思路呢?" 对此,我一般都会说不要着急,如果你只是看了视频就想行云流水的话,那老师这些年的锻炼真是白费了,这么多年的苦练才能略有些行云流水的感觉,你一朝一夕就想自己能够达到,不是太奢侈了吗?作为编程的过来人想一下,当年自己学编程的时候是什么时候有思路的呢?至少也是照猫画虎画了一段时间之后吧,我本人是在某一个领域画虎画了上万行代码的时候才慢慢有自己思路的。就像写作文,要有自己思路总是一般来说要经过几个阶段,首先学习词汇,然后学习造句,然后大量阅读别人的文章,自己模仿着写一些,逐渐的经验积累,才能形成自己的思路。学编程,恐怕也得慢慢的来吧,只是看一看、听一听视频,是不足以学好编程的。 所以,动手吧,跟着做,一行一行的跟着敲,一个项目敲完了,比如坦克,再试着加一些自己的功能,按照自己的思路敲一些代码,收获远比干听大的多。 如果遇到,暂时对于一些思路不能理解的同学,我一般都会劝告说,动手写,先写代码,量变会引起质变的。而这种质变的确发生过不少次。 提醒一句,要理解代码思路之后再跟着敲 ,背着敲,千万不要左边摆着别人的程序,右边自己一个一个子母的写,这就不再是程序员了,成了打字员了。 纸上得来终觉浅,所以:别问那么多,别想那么多,动手写吧。JAVA自学之路 四: 要事为先对待人生的任何事情都要:抓大放小,要事为先!对于一个以前从来没有接触过java的人,java无疑是庞大的,似乎每个领域都可以拓展开来都是一片开阔地,每一个领域要想深入接触到每一个细节所耗费的精力都是巨大的。这个时候大家都胸怀壮志,两眼发光的盯着每一个崭新的知识点,遇见了任何一个知识点都恨不得抠的清清楚楚,明明白白。 难道这有什么不对吗?我的意见是,这样并没什么大毛病,但是学习效率太低了!我们推荐的学习方式是,抓大放小,要事为先{马士兵老师的这句话可能并不适合当代的大学生。仔细思考} 。比如说学习J2SE的时候,学到GUI这一章,有的同学认为,既然学到这儿了,我们去把SWING细细的了解一遍吧;还有的同学,遇到了在Linux下的Shell编程,就恨不得把Shell先学成专家才肯,或者是才敢,继续往下学习;有没有过这样的感觉,一本书的上册没有学好,觉着下册心里也没底儿,甚至非要把上册复习一遍才敢继续学习。如果你也是这样,要去看看心理医生啦,没准儿会有洁癖的毛病。 任何事情都要追求完美才敢继续往后进行,是一种性格缺陷大胆的放弃一些东西吧,有失才有得,把自己有限的、宝贵的精力用在对于就业直接相关的地方,这才是最有效率的学习方式!等你参加工作,有了可持续发展的事业动力和经济基础,有时间有精力闲的没事儿干的时候,再去研究那些其它吧。曾经有一个故事,说得是产能和产量的关系。一个人喜欢读书,读了一辈子,无所不通,这时候要做任何工作都可以,他的产能到了极致,但是,他老了,即便每天产出大量的东西也不能维持多久了,一辈子的产量并没有多少。另一个人直接工作,忙,天天在机器旁日复一日,做了一辈子,没时间学习和进修,可以想象,产量能有多大呢。人的一生,要锻炼产能,也要及时产出,引擎要转,也要停下来加油,这两者平衡的越好,你的贡献和产量就会越大。如果钻研的东西和产能目标(或者说近期的产能目标)无关的话,要舍得放手。所以,对于SWING,暂时先扔在一边吧。对于shell,对于各种协议过于详细的细节,对于喜欢的游戏编程,对于javascript各种华而不实的效果,都暂时和它们分别吧。一切和我们的直接工作目标关联不大的东西,扔在一边或者弄清楚到足够支持下一步的学习就可以了。 {能否把这种工作目标换成其他的东西呢?}那这样岂不是妨碍我成为通晓各种细节的高手了吗?我一向不认为一个人掌握了很多很多知识点的细节就是高手了,一个人如果告诉你,回字有四种写法,你会认为他是高手吗? 毫不客气的说,现在我们所教授的所有知识细节在网上或书中都可以找到,只要你肯花时间花精力去动手试,去钻研,没有什么不能掌握的。struts、spring你能掌握吗?当然能!但是如果把时间花在spring的各种细节的研究上,花在研究中国企业应用不广泛地的spring mvc上,这个精力就太浪费了,而且学习的积极性会受到打击,谁愿意整天泡在细节的蜘蛛网中挣扎不出来呢?谁愿意天天经历风雨却总是不能见到彩虹呢?盖房子,要先建骨架,再谈修饰。画山水,要先画结构,再谈润色。认识一台结构复杂的机器,应该首先认清楚脉络,然后再逐步认识每一个关节。为了应付从小学到大学的考试,我们背了各种各样的不应该提前掌握的细节,同时也养成了见到细节就抠的学习习惯。而现在,是到改改的时候了。 请在合适的时间,做合适的事情吧。{Do Forward!Think Forward!Sanely!}把时间和精力花在作项目上面,花在写作品以及锻炼解决问题的能力上面吧,这是迈向高手的正确的而且快速的方向。 我一直不认为一个课程提供了很多很多的细节就是优秀的价值高的课程了,掌握必要的细节,这个不含糊,至于其他,或者通过视频给出(这样可以给出更多的细节,但是不占上课时间,课上只讲重要的、必要的细节知识),或者在掌握了自学的能力后自己能够查出,这才是正途。当你看书到某个地方暂时不理解的时候的,暂时放手吧,追求一些行云流水、自然而然的境界吧,只是不要停下前进的脚步,不要被大路旁边的支根末节干扰了你前进的行程,项目,真实的项目,这才是目的,就在不远的前方。 陶渊明读书,叫做“不求甚解”,但他是大诗人。诸葛亮读书,总是“观其大略”,但他是大政治家。作研究的,是在确定了方向之后才详细的研究深入的东西。到了庐山,脉络形状扔在一边,盯着一棵棵小草、一粒粒石子的看,怎么样才能识得“真面目”?作为应用型的人才,是研究回字的n种写法还是抓紧时间向着主要应用的方向努力,请自己作出抉择。 以项目驱动自己的学习吧,当把握了技术的脉络之后再去补充细节的研究,是正途。这辈子就不研究其他的方向了吗?当然要研究!但是在将来合适的时间再说吧。 所以,抓大放小,要事为先!JAVA自学之路 五: 问题解决之道 既然是学习,就不可能不遇到问题。 既然是自学,就没有方便的和老师探讨的机会。 那么,遇到问题之后,环境配不通,程序调不过,运行不正常,遇见这些恼人的问题的时候,该怎么办呢? 首先我要恭喜你,遇见问题,意味着你又有涨经验的机会了,每解决一个问题,你的JAVA经验值就应该上升几百点,问题遇到的越多,知识提升的越快。 但是总是解决不了也是很恼人的,怎么办呢? 我一般要求我们的学生都是这样来进行的。 当你遇到一个问题的时候: 1:要仔细的观察错误的现象,是的,要仔细 有不少同学的手非常快,在编译一个程序的时候,报了一大堆的错误,扫了一眼之后就开始盯着代码一行一行的找,看清什么错误了吗?没有!有的时候安装软件出问题了,一个对话框弹出来说出错了,马上举手问老师:“不得了了,出错了,出错了”。 “什么错误?” “还没看呢?” 这都是典型的不上心的方法!请记住,学习编程并不是一件很容易的事情,自己首先要重视,要用心才可以。在开发中,仔细观察出错信息,或者运行不正常的信息,是你要做的第一件事。读清楚了,才能在以后的步骤中有的放矢,哭了半天,总要知道哭的是谁才成。 这里又分三种情况: A:错误信息读懂了,那么请进入2步:要仔细思考问题会出在哪些环节 B:没读懂,愣是一点没看懂,进入第4步吧:google C:读了个半懂,有些眉目但是不太能确定,第2步和第4步结合着来。 2:要仔细思考问题会出在哪些环节(重要) 当你读懂了一个问题之后,要好好的思考这个问题可能会在哪些环节上出错。 一辆汽车从总成品线上下来,车门子关不上! 哪错了?你怎么查? 当然是顺着生产线一站一站的查下来。 程序也是一样的,也是一系列语句完成后产生的结果。 写一个网络程序,总是发现服务器端打印不出接收的数据,有几个环节会出错?仔细分析这个现象的环节: 客户端产生数据-&按“发送”按钮-&发送到服务器-&服务器接收到后打印 这几个环节都有可能会出错: 有可能客户端根本就没产生数据,有可能发送按钮按下去后根本就没发出去,或者发出去的不是你产生的东西,或者根本就没连接网络,或者发送出去服务器没有接收到,或者接收到之前就打印了等等等等。 学着去这样仔细的分析程序的环节和这些环节可能会产生的问题,你的经验值定然会大幅度快速的提升,这样做很累人,但是一件事情如果做下来一点都不累的话,这个东西还有价值吗?在网页A输入了一个人的名字,提交到B,首先存储到数据库,然后再读出来,发现乱码!怎么办?当然是分析环节: 客户输入-&HTTP发送-&B接收-&存储到数据库-&读出-&展现到网页 每个环节都可能出问题,怎么才能知道哪里出的问题?继续往下读。 3:如何定位错误(重要)分析清楚有哪些环节之后,下一步就是定位到底什么环节出错了。 定位有以下三种办法: A
打印输出,比如java的System.out.println(),比如js的alert(),这种办法常用,必须掌握 B Debug,可以参考我们的视频《坦克大战》,详细讲了Eclipse的调试。 C 删掉一部分调试一部分,也就是去掉一部分的功能,做简化,然后调试剩下的功能,JSP和JavaScript常用。4:如果还不行,google吧 还查不出来?恭喜你,你遇到的错误是值得认真对待的错误,是会影响你学习生涯的错误,问一下google或者百度吧。照着下面的方法查查看。 一般来讲,搜索引擎可以搜到各种知识点,我曾经跟同学们开玩笑说:“学会了怎么google或者baidu,其实没必要跟老师学了,自己全都搞懂了,尚学堂是没必要来的。”当然,只是玩笑,培训的作用有三个: A:系统化知识 B:真实项目锻炼经验 C:少走弯路,节省时间 不知不觉开始做广告了,请原谅,处其位谋其事,总得为尚学堂说点什么:) 言归正传,如何查搜索引擎? 先精后粗,首先先进行尽量精确的查找,比如一个错误,SocketException,你怀疑它是在connect()方法出的问题,那么当然是选这样的关键词java connect SocketException 先中后英,本着以解决问题为主的想法,练习英文还是先放在一边吧,首先应该在中文网页中查询,还不行的话,搜索英文的吧,最近的尚学堂课程中会带大家阅读英文的书籍。有很多东西就像一层窗户纸,远看灰蒙蒙怪唬人的,你壮着胆子一捅,它就破了。阅读英文的书籍就是如此,不是想象中的那么困难:)宁可在沙场上战死,也不能被吓死不是吗:) 信息筛选,搜索出来的结果不见得能够完全匹配,建议大家多阅读前几页的搜索结果,多打开几个网页看看,不过,我的经验是超过3页一般就没意义了,所以超过3页还没有找到合适的答案,或许应该调整一下关键词,或者放粗整个搜索的结果了。 经常的进行知识难点的查询,如果一个问题牵扯的面比较广,就干脆到网上搜索一些相关的专题,比如“java 乱码 mysql” “oracle 创建用户”等等,如果有必要,不要犯懒,勤动手写一些小小的测试程序,来弄明白知识点的细节。这也是涨知识的重要的途径。 5:什么?还不行?那么就BBS吧 如果实在还不行,就到BBS上面问一问高手吧。 到哪个BBS上? google或者百度不就行了么?关键词“java论坛”“java
bbs” 然后在搜索结果里好好的看看那些活动频繁的论坛,以后就是你经常光顾的地方了。就很不错。 向别人提问是非常需要技巧的!曾经有人问我这样的问题:“请问如何才能学好java呢?”这个要求太泛泛了。还有人给我一段代码甚至jar包也寄过来,然后说老师的我的代码中有个错误您帮我查查。我没有办法去花大量的时间建立环境去调试一个还不知道存在不存在的错误! 还有人在BBS上问这样的问题:“是否有人能帮我完成一个完整聊天的程序?请帮我写一个登陆模块吧!” 这个要求有些过分了,有人帮你做是你的运气,没有人帮你是正常反应。 向别人提问,应该首先确定你已经做了自己应该做的事,简单说是我前面列举的1,2,3,4步你都作过了,然后再求助于人。不要没有经过认真思考就草率的向别人提问,自己也不会有长足进步的。 那我该怎么样向别人提问呢? 在google或百度搜索《提问的智慧》,你会找到答案。 在这里我给出一个链接,磨刀不误砍柴功,先花点时间去阅读一下吧。 得到别人的回答,要懂得感恩。不需要去写信感谢,不需要支付费用,不需要那些花言巧语,做到下面这一点就够了: 当你逐步成为高手的时候,要回答别人在论坛上提出的问题,有时间有精力的前提之下! 6:还解决不了?问老师吧,这个只能是在你参加了培训的前提下了。7:还解决不了?天哪,是不是思路从根上就搞错了?写信给我,让我也学习一下,共同进步吧。JAVA自学之路 六: 项目的自学现在就业竞争的激烈程度已经远远高于当年了,记得我当年毕业时,一个会编程的毕业生站到台上,大声问道:“我会ASP,月薪5000有没有人要?” 台下的企业马上哗的举起一大片手:"我要我要
!"。那时,没有任何项目经验也会有人提供学习的机会。这种好日子恐怕一去不复返了(有些夸张,但无疑当时找一份不错的工作是比现在要容易的多)。而现在,即便是各种必要的知识你掌握的差不多了,但还有一座大山横在你的面前,那就是——项目经验。 有经验的程序员都知道,学习编程的最有效率的方式,恐怕就是把你扔到一个项目组,连滚带爬的做下一两个项目来,你马上会发现所有的知识点全都连到一起了,不再是分散的,而是形成一个整体了。那种感觉是仅仅深入钻研知识点而不写真实项目的人所不能体会的。一个项目就是一根绳子可以把大片的知识串到一起。 如果想锻炼实际开发的能力而不仅仅是背诵或者了解一些知识点,如果想成为真正的好手而不仅仅是背诵“回”字有几种写法,那么,作项目吧! 目前,各种编程的知识点变得越来越容易掌握,按照
中的各种办法也可以逐步积累自己知识的广度和深度,那现在什么才能够体现水平的不同?当然是项目经验。 目前,尚学堂的课程已经超越了知识点的研究和罗列,我们将在未来的时间里逐步公布各个知识点的视频,包括SSH、EJB等,这样做有两个好处:首先自学的同学可以免费得到原来商业培训的内容,这样起码可以节省一些时间,省一些力气。其次尚学堂自己可以更加专注于项目上。 目前尚学堂的项目写作占了课程50%左右的比重,尚学堂的项目也早已经超越了简单的MIS系统的概念,逐步的成为综合了搜索引擎、工作流、SCA/SDO、Linux/UNIX、大型数据库系统、设计模式、架构模式、负载均衡等各种深层应用的综合大型项目并且采用手把手式的教学方法,做的更加的深入和细致,从现在看效果相当好,最近142班的就业就完全证明了这一点(了解142的就业情况),我们的计划是最近逐步将项目比重提升到70%以上,相信效果会更好。签于公司的规定,我们并不能将所有的项目实战都录制成视频来公布,但是已经公布的项目实战也是非常的有价值的:()
1:Chat & Tank系列2:BBS3:Shopping(近期公布) 那么如果自学我们应该怎么样才能学习项目的开发呢?一个比较有效的办法是,可以在现有项目的基础上做的更深入一些,比如在你按照视频完成了BBS之后,可以增加一些其他的功能,例如注册/积分/精华/搜索/贴图等等,在完成了Shopping之后,可以增加一些评论/排行/统计/存货等等方面的业务逻辑,尝试用自己的技术将他们作出来,这样既积攒了项目经验,又记住了知识点。那么如何才能确定我要写什么样的业务逻辑呢?应该讲这对于一个初学者是非常困难的,一些简单的系统,比如说BBS、Shopping、图书管理等等,它们的业务逻辑很容易确定,去浏览和参考一些现成系统的功能,很容易就能了解了。但是对于商用的大型系统,光是了解业务逻辑本身就会花费大量的精力,如果有时间有精力有财力的话,还是建议考虑一下我们的培训吧,这样经验的积累和薪水的提升会更快,从以前的统计数据看非常容易就可以回收这笔投资(替尚学堂的广告,必须得写,请见谅,但保证真实)。如果条件不允许,那么就按照上面的方法来学习项目吧,不要因为暂时不能接触更大型更深入的项目而气馁,记住:机会总是青睐有准备的头脑,努力吧。JAVA自学之路 七: 路线图明细下面给出第二节
中知识点的明细:一:J2SE面向对象-封装、继承、多态
内存的分析递归
集合类、泛型、自动打包与解包、AnnotationIO
多线程、线程同步 TCP/UDP
AWT、事件模型、匿名类正则表达式
反射机制二:数据库(Oracle或者MySQL)SQL语句
多表连接,内外连接, 子查询等管理表、视图、索引、序列、约束等
树状结构存储存储过程、触发器
数据库设计三范式、三:JDBCJDBC基础
连接池 树状结构存储与展现
DataSource
& RowSet {看有视频}JDBC连接Oracle及MySQL四:HTML_CSS_JAVASCRIPThtml、css、javascript基础语法
JavaScript Form判断 Dom编程基础(事件处理等)
JS常用效果如TreeView、下拉联动等JS学习方法
JS调试方法 DreamWeaver初步(建立HTML、Table、Form、CSS)等 五:Servlet & JSPtomcat基础
servlet基础 web.xml配置基础
web application的结构 servlet生命周期
response等常用方法 ServletContext类
HTTP协议基础(GET POST)Cookie
Application JSP的几种语法(包括JSTL等)注意在项目中练习,不要拘泥于语法细节而裹步不前。 六:Struts多层架构理论
1 and Model 2 Struts基本概念
MVCAction与业务逻辑类的关系
在Struts与JSP之间传递数据Struts处理流程(控制流)
TagLib(了解常用的)
ActionForm 字段收集
上传文件 类型转换
动态Action Form
验证框架ActionForward
转发与重定向
动态生成ActionForward 全局与局部的ActionForward
Forward ScopeUnknownActionMapping
Action的线程安全 I18N
如何切换语言环境Struts异常处理机制 程序处理 自动处理 自定义异常处理器Struts的多模块配置 七:XML(XML/XSL、XSLT/DTD、SCHEMA等基础的概念、关于Java的编程可以暂时扔在一边) 八:HibernateOR
Mapping原理 Hibernate基础开发步骤 Hibernate基本接口(重点Session)普通属性映射 关联关系映射 Native
SQL inverse
lazy cascade 继承关系映射 HQL 性能优化 一级缓存 二级缓存 查询缓存事务与并发 悲观锁、乐观锁 OpenSessionInView
CurrentSession
(至于JTA、联合主键、自然主键、动态主键、Any类型 Creteria Queries
Intercepter and Event 自定义类型等,可以暂时扔在一边) 九:SpringIOC/DI Spring配置Spring架构 AOP及Spring AOP 声明式事务(AOP)Spring
+ Hibernate Spring支持Web Scope (其他的Spring模块对于自学来说可以暂时扔在一边) 十:EJB3.0J2EE架构基础(JTA JMS等) EJB基础(地位及基本理论、分类等)Annotation
Ant编译与部署EJB Session
Bean EJB的依赖注入 Persistence
API (可以用JBoss学习EJB3.0)十一:至于SOA,对于自学的同学来说,暂时不用特别关注。 梳理一下,你就会发现东西不是想象中的那么多呀!建议大家优先学习我们公布的视频,然后再去找参考书,因为这个时候就能分辨出来哪些书适合你了。 那么,如何才能找到好书呢?一个简单的办法,在卖书的网站上,比如,搜索你想了解的知识点比如"javascript",按销售排行,排在前几位的,应该就是不错的,记下书名,到书店阅读几章,合适你的就是好书了。没钱买?简单!还有什么google
+ 电驴找不到的资料吗?---------------------------------------------------日更新-------------------------------------------------给了鸡汤,再递上一把勺子,文中提及的所有知识点,马士兵都做了相应的视频,手把手教你。
我把我自己整理的一些比较好的书列出来,当然好书可能不止这些,我只是举个例子第一阶段:初学java核心技术java语言程序设计第二阶段:熟悉java编程思想effective java中文版深入理解java 7:核心技术与最佳实践java网络编程(以及java web方面的书)第三阶段:加强或精通java并发编程实战java虚拟机规范(java se 7版)深入理解java虚拟机:jvm高级特性与最佳实践设计模式之禅(java版)算法导论 或者 算法(第四版)深入剖析tomcat深入理解计算机系统代码大全编程珠玑(各种开源框架的使用以及源码的理解)
以下方法适合有一定语言基础的及想学j2ee的同学:1.看int string for if等写法及格式2.看struts+spring+hibernate的相关知识及源码,仅仅看就行3.搭建struts+spring+hibernate,并尝试解决其中遇到的问题4.在自己的搭建的框架里尝试写个应用出来,比如留言板等5.认真学习java基础部分,有类的各种操作,常用的string方法,多线程等等6.与5同时进行,深入研究struts+spring+hibernate原理与参数配置7学习常用java 工具,如poi等8.尝试学习其他框架
我感觉如果是已经工作的话,首先得是以工作为首要目标,所以要以公司的项目为基础多深入研究学习,如果遇到基础方面的可以顺便提高下基础知识。等把公司的项目框架可以熟练应用以后可以从0搭建自己认为更合理成熟的框架,这样会对所学到的知识有个更深入的了解,或许你会发现db connection必须得在finally中关闭才安全,而之前用到的各种框架由于封装的很完善,所以你不会了解到这一层的知识。等你自己的框架稳定成熟后可以用其他替代的技术框架来搭建,比如之前用hibernate,现在新流行的springdata jpa也可以尝试下,总是就是要跟着新技术的潮流去不断提升自己,不要只把眼界限于某一个框架,要真正的是研究到底层也是王道。接下来就是要自己完全废弃框架,自己实现一套开源的框架了,像springside,jfinal,到这个时候我觉得你的技术已经炉火纯青了,bat也可以随便进入了吧。
无论什么语言学习的过程都是循序渐进的,可以按照这样一个步骤:1.看看headfirst Java和thinking in Java,掌握基础语言知识以及面向对象部分,继承、接口,封
装、多态、抽象类,要在脑子里形成面向对象编程的概念。2.掌握了基础之后,再往深入一点研究Java的高级知识,比如注解、NIO、并发、
线程池、同步容器和并发容器、阻塞和非阻塞、反射、以及设计模式的一些东西。
3.学习使用jdbC来连接数据库,掌握基本的SQL语句,插入、查询、结果集resultSet,
再深入一点就是事务管理,看书的时候一定要思考为什么设计成这样,以及这样有什么缺陷。
4.学习各种Java的框架,比如比较流行的Spring,Struts,以及对象关系映射hibernate,
学会配置这些,最后能够把它们整合到一起,可以参考***In Action这些书籍。
根据我的经验,简单来谈谈,和大家分享互相学习首先要明白一点,java是拥有面向对象特性的一门语言,承载着JVM,奠基着丰富的框架。既然是语言,那么基本的语法自然而然是要掌握,《Thinking in java》一本书,就够了,笔者看了4遍,每次还是受益匪浅。其次,是面向对象特性,这一点上光看书是看不懂的,一定要配合实际项目看,阅读源码,建议看看设计模式,有助于理解。接下来最重要的一点,JVM,java的核心所在,许多学者不关心jvm的知识,这也成为学习java的一道瓶颈,Java的内存分配,垃圾回收,线程究竟是怎么实现,当你了解了这些,会在遇到问题的时候有更加深入的思考,而不是表面的排除异常等等。推荐一本书《深入了解java虚拟机》,赞!最后,框架的学习是建立在上述基础上,如果单纯的学习一个框架,那么结果就是只会用,换一个或者添加一个功能就手足无措了,语言只是工具,学会融会贯通才是程序员应有的能力,具体需要在实践中会接触到,所以当你觉得达到一定瓶颈的时候,就反过来看看上述三点比较好个人经验,小小分享,欢迎各位大牛讨论...
三个字马士兵。。我感觉他解决了Java初学者的几乎一切问题。。。
重视基础!不要一开始就想着编出一个小网站或者游戏。另外思想比技术更重要,技术方面非常次要的细枝末节只要在用到的时候查查手册就行了。答案里面提到的各种技术多找几本书,以技术话题为单位依次去看就慢慢了解了。比如java语法方面,多找几本书,把每本书中的语法部分都看一遍,看看不同的作者如何解释同一个问题。看完之后用实践来检查自己是否真正懂了,这一步非常重要。基础篇。先学会编译运行,你会看到java的跨平台思想是多么机智。再学会语法,你会看到面向对象思想是多么简单易懂。然后学习集合框架,你会看到各种不同的容器是如何通过接口和继承精妙地联系在一起。然后学习io,你会看到各种不同的数据操作如何被抽象成统一的数据流而大大方便了程序的开发。如果要学好,还要学习算法,这里有很多数学思想。还要学习设计模式,掌握开闭思想。web篇。学习nio,你会看到缓冲区是如何提高性能的,你会感叹线程复用是多么巧妙。然后学习servlet,jdbc,sql声明式语言,jsp的模板思想。然后学习struts,你会看到mvc架构是多么灵活。然后学习spring,你会看到依赖注入是如何提高代码的复用,还有aop思想。学习rmi,你会惊讶分布式开发的语法竟然如此简单。学习jms,你会体会到系统之间通过异步消息来通信是多么可靠。当然后面还有很多技术,一切关键都在于技术背后的思想。
回答过这个问题了:java 自学群:,每晚统一解答问题
看视频,毕向东Java教程 传智播客新出的Java教程 很牛 我看过了
全套马士兵老师的视频
假设你的编程经验相当少的前提下,以下建议:1.看一遍Think in java,快速的看完,大致明白即可。2.安装jdk,eclipse,实际做一个任务。比如说做一个简单的网站。由这样的具体任务着手,在具体的编程细节里做调研和试验,学习的效率会很高。做一个网站太难的话,也可以从做一些没有画面的小程序开始,诸如文件读写,排序,xml解析等等。
Java平台包含的东西也挺多,先说JavaSE1.基础语言知识,主流语言都差不多,变量、常量、运算符、流程控制
2.面向对象部分,继承、封装、多态
3.集合框架
4.常用类库API
5.JFC部分,awt Swing JavaBean
6.Java高级知识,Annotation、IO和NIO AIO、多线程、线程池、阻塞、非阻塞、异步网络通信、反
射、动态代理
7.SQL基础,基本SQL语句、基本查询、多表查询、子查询、结果集的交、并、差运算
8.JDBC基础,常见数据库用法、JDBC操作常见数据库、RowSet与离线结果集、数据库连接池、事务处理、批处理
9.JDBC进阶,存储过程、函数、触发器、理解JDBC不足、掌握ORM工具优势和设计
书籍推荐疯狂Java讲义
Java核心技术
Java编程思想
Effective Java
学习完可以写一些小项目,比如MIS,小游戏,小型局域网聊天工具and so on学习完JavaSE,路你自己选
找个java培训网站的教学大纲比如 ,对着上面的大纲google, baidu自学。
JavaEE+3G/Android 学习路线图
推荐资源和教学视频网站: ,从最基础的SE开始一直到JS、EE、APPLET等等全部覆盖,有很多教学视频,你可以仔细看看,个人建议路线:Java SEMySqlJDBCJavaScriptJava EE(就是那四大项:)接着就看一看示例项目。然后你就入门了!接下来学习安卓编程(就是Java ME),CoreGUInetworkdatabase然后你就可以进入一些公司了,通过这些学习,你将会掌握Java的中级技能,要想进一步提升,就多看看文档和代码!
看看书、写写代码、到八戒网接个任务做做 。。
转自于我的微博:
今天要给别人推荐java的参考资料,简单找了一下。分享之吧~~其实不要全部看,宏观的过一遍,花大概15分钟。然后选最适合自己链接深入进去吧。不要被这个列表迷惑了。最好是直接英语的tutorial。个人经验是:1.“Java编程思想”,买侯杰的,或是我下面推荐的这本英语批注版的。2. 这里是交互式的,挺方便在线看。3.不要看视频,容易得到的也容易失去。视频信息量太大,不容易深刻的记住和复习。人类的大脑不是电脑,不是你拷贝进去就能运行的。如果真要看视频,直观一点的话,推荐用VLC 1.5+倍速度过一遍。---update刪掉以前所有多餘的鏈接,也反對上面我自己的學習方法.看我這篇回答.

我要回帖

更多关于 java socket编程 的文章

 

随机推荐