A. 什么是java socket
事实上网络编程简单的理解就是两台计算机相互通讯数据而已,对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了,Java SDK提供一些相对简单的Api来完成这些工作。Socket就是其中之一,对于Java而言,这些Api存在与java.net 这个包里面,因此只要导入这个包就可以准备网络编程了。
网络编程的基本模型就是客户机到服务器模型,简单的说就是两个进程之间相互通讯,然后其中一个必须提供一个固定的位置,而另一个则只需要知道这个固定的位置。并去建立两者之间的联系,然后完成数据的通讯就可以了,这里提供固定位置的通常称为服务器,而建立联系的通常叫做客户端,基于这个简单的模型,就可以进入网络编程啦。
Java对这个模型的支持有很多种Api,而这里我只想介绍有关Socket的编程接口,对于Java而言已经简化了Socket的编程接口。首先我们来讨论有关提供固定位置的服务方是如何建立的。Java提供了ServerSocket来对其进行支持.事实上当你创建该类的一个实力对象并提供一个端口资源你就建立了一个固定位置可以让其他计算机来访问你,ServerSocket server=new ServerSocket(6789);这里稍微要注意的是端口的分配必须是唯一的。因为端口是为了唯一标识每台计算机唯一服务的,另外端口号是从0~65535之间的,前1024个端口已经被Tcp/Ip 作为保留端口,因此你所分配的端口只能是1024个之后的。好了,我们有了固定位置.现在所需要的就是一根连接线了.该连接线由客户方首先提出要求。因此Java同样提供了一个Socket对象来对其进行支持,只要客户方创建一个Socket的实例对象进行支持就可以了。Socket client
=new Socket(InetAddress.getLocalHost(),5678);客户机必须知道有关服务器的IP地址,对于着一点Java也提供了一个相关的类InetAddress 该对象的实例必须通过它的静态方法来提供,它的静态方法主要提供了得到本机IP 和通过名字或IP直接得到InetAddress的方法。
上面的方法基本可以建立一条连线让两台计算机相互交流了,可是数据是如何传输的呢?事实上I/O操作总是和网络编程息息相关的。因为底层的网络是继续数据的,除非远程调用,处理问题的核心在执行上,否则数据的交互还是依赖于IO操作的,所以你也必须导入java.io这个包.java的IO操作也不复杂,它提供了针对于字节流和Unicode的读者和写者,然后也提供了一个缓冲用于数据的读写。
在网络搜索里输入java socket会有N多的结果给你答案。
B. android 开发上有什么比较好的书可以推荐
个人认为android的版本更新实在太快了,任何一本书籍都不可能跟上它的步伐。没有最好的书籍,只有相对适合的教材,而且针对特定人群。
个人认为对于新手学习的话,买一本入门书籍就可以了。《疯狂android讲义》这本书,这本是门槛很低,而且里面的例子相当的多,可以说是从零开始学android。首先这本书介绍了基本的android开发知识,比如环境,平台等。然后介绍了android的基本组建,五大组件,还介绍开发的基本流程,特色,比如界面与代码可以是分离的等概念。后面还手把手做了一些程序
1. 进一步熟悉Android框架内部
我不是说熟悉其文档,而是指框架代码。许多开发者害怕去深入Android框架内部,了解其工作原理以及各个部分是如何相互配合的。
如果你想在Android平台更上一层楼,大胆的接触Android SDK的内部,和它成为朋友。
2. 克服错失恐惧症
Android很大,非常的大。你不可能在一两个月内就从头到尾学一遍。学的越多,会发现更多的新东西需要学习。作为一个初学者,总是担心自己学漏了什么是非常正常的。
但是要克服这种担忧,学习自己目前开发的app所需要的就够了,然后慢慢的开拓自己的视野。
3. 开始阅读更多代码
许多开发者不愿意抽时间去阅读别人的代码,只把大部分时间花在写自己已经知道的东西上面。
但是那样不会帮助你成长,也不会增长你的知识。你应该开始阅读其它的开源app和开源库的代码。每天阅读30分钟的代码是一个好的开始。你会惊奇的发现原来还有这么多你不知道的东西。
C. 推荐几本javaEE的书籍,经典的。不要李刚的(虽然讲的好,但是繁琐,基础东西太多了)。结合了三大框架的
[Spring.2.0核心技术和最佳实践。廖学锋扫描版。
容易的Hibernate“PDF清晰版。PDF
精通struts的基于MVC的设计与开发PDF
[Struts.2权威指南 - 基于MVC开发的WebWork的核心。钢。Java.web扫描版PDF
Java方面的内部电驴学习知识
:
递归集合J2SE面向对象 - 封装,继承,多态
内存分析,通用,自动装箱和拆箱,注释
IO
多线程,线程同步
TCP / UDP
AWT,事件模型,匿名类
反射机制
SQL语句
多表联接的数据库(Oracle或MySQL)的正则表达式,内部和外部连接,子查询
管理表,视图,索引,序列,约束树的存储
存储过程,触发器
数据库设计三大范式,
3:JDBC
JDBC基本/>连接池
树的存储和显示
数据源的RowSet
JDBC连接Oracle和MySQL
:HTML_CSS_JAVASCRIPT
HTML,CSS,JavaScript的基本语法
> JavaScript的形成判断
DOM编程基础(事件处理程序)
JS效果,如TreeView,下拉联动JS学习方法
JS调试方法
DreamWeaver的初步(创建HTML,表格,表单,CSS)
5:Servlet的基础JSP
Tomcat的
servlet的基础的
web.xml中的配置基本
Web应用程序结构
servlet的生命周期
请求的响应常用的方法
的ServletContext类
HTTP协议基础(GET,POST)
饼干会话
应用程序
几个语法(JSP,包括JSTL)注意练习的项目,而不是坚持的语法和包装步骤的细节之前。
6:Struts的
多层体系结构的理论
模式1和模式2
Struts的
MVC
操作的业务逻辑类的基本概念之间的关系
Struts和JSP之间传递数据的
的Struts的治疗过程(流量控制)
的Struts的TagLib(了解常用的)
JSTL
中的ActionForm
>字段集合
上传文件的类型转换
DTO
动力作用形成的
验证框架
的ActionForward转发和重定向
动态生成的ActionForward
全局和局部的ActionForward
行动的推进范围
UnknownActionMapping
行动线程安全
I18N
如何切换语言环境的
Struts的异常处理机制处理
用户自定义的异常处理程序
Struts的多模块配置7:XML
(XML / XSL,XSLT / DTD的,SCHEMA基本的Java编程的概念可以自动处理暂且不说)
8:休眠 OR映射
Hibernate的基本发展原则,步骤
休眠
基本接口(重点届)
常见的属性的映射关系映射
原生SQL
懒级联反
继承关系映射
HQL
性能优化缓存二级缓存查询缓存
事务并发悲观锁定,乐观锁定
OpenSessionInView
CurrentSession
(至于JTA,的联合主键的自然主键动态主键的任何类型Creteria查询截击和事件自定义类型,等等。 ,你可以暂时扔到一边)
9:春季
IOC / DI
Spring配置
春季建筑
AOP和Spring AOP
声明式事务(AOP )
Spring + Hibernate的春天的Web
范围
(其他的Spring模块,你可以暂时扔到一边自学)
10:EJB3.0
J2EE架构基金会(JTA JMS)
EJB基础(地位及基本理论,分类等)
注释
Ant的编译和部署EJB
会话Bean的
EJB依赖注入
持久性API
(JBoss的学习EJB3.0)
11:SOA
30个进球
你需要精通面向对象分析与设计(OOA / OOD),涉及模式(GOF,J2EEDP),以及综合模式。你应该充分了解UML,尤其是类,对象,互动,和statediagrams。<BR / 2,你需要学习JAVA语言以及它的核心类库集合,序列化,流,网络,多线程,反射,事件处理,NIO,定制系统的本地化,以及其他的基本知识。
3类加载器,JVM,classreflect,以及垃圾回收的基本工作机制,您应该是知道的,你应该有能力反编译一个类文件并且明白一些基本的汇编指令。
如果你要写一个客户端程序,你需要学习WEB的小应用程序(applet),必需掌握GUI设计的思想和方法的,和桌面应用程序的SWING,AWT,SWT,你也明白的UI部件的JAVABEAN组件模式中。JAVABEANS适用于业务逻辑的分离表示层JSP。
5。需要学习java数据库技术,如JDBCAPI,会使用至少一种persistence / ORM构架,比如Hibernate,JDO,CocoBase,TopLink的InsideLiberator(国产JDO红工厂软件)或者iBatis。
6。您还应该了解对象关系的阻抗失配的含义,以及它是如何影响业务对象的与关系型数据库交互,和结果它的操作,但还需要掌握不同的数据库产品,如拉克勒,MySQL和MSSQLSERVER。
7。你需要学习JAVA的沙盒安全模式(类加载器,bytecodeverification,的经理,policyandpermissions,
代码签名,加密技术,认证,Kerberos身份,和其他人)digitalsignatures,以及不同的安全/认证API的JAAS()的,JCE(JavaCryptographyExtension)的的JSSE(JavaSecureSocketExtension)以及JGSS(JavaGeneralSecurityService)。
8。你需要学习Servlets和JSP,以及的JSTL(StandardTagLibraries)和选定的第三方TagLibraries。
9。你需要熟悉主流的网页框架,例如JSF,Struts中,挂毯,蚕茧,WebWork中,和他们下面的涉及模式,如MVC/MODEL2。
10。你需要学习如何使用及管理WEB服务器,例如tomcat的,树脂的JRUN,并知道如何的基础上扩展和维护WEB程序。
11。你需要学习分布式对象和远程API,例如RMI和RMI / IIOP。
12。你需要掌握各种流行中间件技术标准,并结合java实现,比如Tuxedo,CROBA,当然也包括JavaEE的本身。你应该学会
你需要学习至少一个XMLAPI例如JAXP(JavaAPIforXMLProcessing)的JDOM(JavaforXMLDocumentObjectModel),DOM4J,或JAXR(JavaAPIforXMLRegistries)。
14。如何利用JAVAAPI和工具来构建WebService的。(JavaAPIforXML / RPC),JAX-RPC SAAJ的(SOAPwithAttachmentsAPIforJava)的,JAXB(JavaArchitectureforXMLBinding)JAXM(JavaAPIforXMLMessaging)的JAXR(JavaAPIforXMLRegistries),或JWSDP(JavaWebServicesDeveloperPack)的。
> 15。需要,学习一个轻量级应用程序框架,例如Spring中,PicoContainer的阿瓦隆,以及他们的IoC / DI风格(setter方法??,构造函数,集成*** ceinjection)。
16。你需要熟悉不同的J2EE技术??,例如JNDI(JavaNamingandDirectoryInte *** CE)的JMS(JavaMessageService)的,JTA / JTS(JavaTransactionAPI / JavaTransactionService)的JMX(JavaManagementeXtensions),以及JavaMail的。
17。企业类级JavaBeans(EJB),你需要学习以及它们的不同组件模式:无状态/ StatefulSessionBeans,EntityBeans(bean-ManagedPersistence的包含[BMP]或容器ManagedPersistence [CMP]和它的EJB-QL),或者消息DrivenBeans(MDB )
18。你需要学习如何管理与配置一个J2EE应用程序服务器,如WebLogic,JBoss的,并利用它的附加服务,例如簇类,连接池以及分布式处理的支持。您还需要了解它是如何封装和配置应用程序能够监控,调整它的性能。
19。你需要熟悉面向方面的编程,以及面向属性的程序设计(两个很容易混淆缩写为AOP),以及他们的主流JAVA规格和执行。如AspectJ和AspectWerkz。
20。熟悉的服务不同有用的API和框架为你工作。例如,Log4J的(记录/跟踪),石英(调度)的JGroups(networkgroupcommunication)JCache(distributedcaching)的,Lucene的(全职文章搜索)JakartaCommons的。
21。如果你要对接和旧的系统或本地平台,你需要学习的JNI(JavaNativeInte *** CE)和JCA(JavaConnectorArchitecture)。
22。JINI技术,您需要熟悉,和它的分布式系统,如主CROBA。
23。你需要JavaCommunityProcess的( JCP),和他的不同JavaSpecificationRequests(JSR的),如JOLAP的Portlets(168)(69)(73),DataMiningAPI,等等。
24。你应该熟悉与的一个JAVAIDE例子的SunOne的NetBeans IntelliJIDEA或Eclipse(有些人更喜欢VI或EMACS来编写文件不管你是什么:)
25.JAVA一些配置(精确)是冗长的,它需要很多的人工代码(例如EJB),所以你需要熟悉代码生成工具,例如XDoclet。
26。你需要熟悉单元测试体系(JNunit),并且学习不同的生成,部署工具(Ant,Maven的)。
27。你需要熟悉JAVA开发的,经常使用的软件工程过程。例如RUP(RationalUnifiedProcess)andAgilemethodologies的。
28。你需要深入了解加熟练操作和配置操作系统,比如GNU / Linux操作系统,sunsolaris MacOS的,作为一个跨平台的软件开发。
29。您还需要跟上Java的发展步伐,比如现在可以深入学习javaME的,以及各种java中,使用的技术,如启动一个新的web富客户端技术的新规范。
30。您需要了解开源,至少在,许多Java技术的直接依赖开放源码,以推动发展,如JAVA3D技术。