java读书心得精选范文.docx

上传人:b****3 文档编号:27392540 上传时间:2023-06-30 格式:DOCX 页数:24 大小:23.12KB
下载 相关 举报
java读书心得精选范文.docx_第1页
第1页 / 共24页
java读书心得精选范文.docx_第2页
第2页 / 共24页
java读书心得精选范文.docx_第3页
第3页 / 共24页
java读书心得精选范文.docx_第4页
第4页 / 共24页
java读书心得精选范文.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

java读书心得精选范文.docx

《java读书心得精选范文.docx》由会员分享,可在线阅读,更多相关《java读书心得精选范文.docx(24页珍藏版)》请在冰豆网上搜索。

java读书心得精选范文.docx

java读书心得精选范文

java读书心得

 

  java读书心得篇1

  首选很感谢JoshuaBloch写的这本书,当然更感谢我们的司令翻译。

至少目前我看到的100页的内容,基本没发现翻译很别扭的地方,包括错别字也没有发现,至少没有影响到我对书中内容的理解。

再次感谢。

 

  在后面的读书心得里,我会根据我的个人理解,将书中的各个知识点逐个和大家分享。

书中的一些观点我也不是完全赞同的,呵呵(估计是我的水平不够,呵呵呵)。

 

  我们先看全书第一个问题:

考虑用静态工厂方法代替构造器。

 

  也就是,不再使用new()这种方式来获得一个类的实例,而是通过工厂方法获得。

 

  优点:

 

  1有名字

 

  这个我体会还是比较深的,在JDK里,我见过一个类的最多的构造器数量,有16个。

大家可以看看Java.math.BigDecimal这个类就知道了。

 

  就算一个类的构造器有4个左右,我想你很可能在使用的时候会极其注意,不要选错了到底是用哪一个。

 

  所以,如果能提供一个很好命名的方法来实现构造类,确实是一个不错的主意,比如

 

  BigDecimal.getInstanceFromString(...);我想这个名字虽然有点垃圾,但要表达的意思确实异常的明确。

 

  在一些第三方的库里面,这种情况更加突出。

我许多时候不得不看看API文档,来区分我的那个int参数到底是使用三个参数的构造器,还是使用四个参数的构造器。

因为他们太像了。

 

  2可以单例

 

  这个就不用说了,你可以在方法里干你要做的任何事情,而new绝对会给你一个新的实例。

 

  3可以返回任何子类型。

 

  这个对于系统的扩展是很有用处的。

new已经决定了你肯定要这个类,而静态方法却可以修改,不一定肯定返回你方法所在的类,可以在必要时替换为一个子类。

 

  4代码简便

 

  这点我体会不深,呵呵

 

  不过这个写法我确实经常用

 

  Listlist=newArrayList();

 

  后面的那个ArrayList里面的String就是一个例子吧。

不过我倒是不是很在意这个,因为我很喜欢这样写了。

 

  下面这个例子看上去确实不错。

呵呵!

 

  [java]viewplaincopypublicclassTestextendsThread{

 

  publicstaticvoidmain(String[]args){

 

  Testte=Test.newInstance();

 

  }

 

  publicstaticTestnewInstance(){

 

  returnnewTest();

 

  }

 

  }

 

  java读书心得篇2

  最近我在慧桥上java的培训课,老师推荐了本不错的java教材《Thinkinjava》

 

  看书要学会做笔记,才会有更大收获,每天读30分钟,希望能坚持下去

 

  今天重新翻了第一章

 

  Introductiontoobject 面向对象主要围绕的五个要点

 

  1.Everythingisanobject

 

  每个东西都可以看作一个对象,它储存了你所需要的必要信息,你可以通过特定的请求方式来向这个对象请求你所需要的东西

 

  2.AProgramisabunchofobjectstellingeachotherwhattodobysendingmessages

 

  一个程序由很多对象组成,你可以向对象发送消息来告诉他们做什么和怎样做

 

  3.Eachobjecthasitsownmemorymadeupotherobjects

 

  你可以根据已经存在的对象来创建新的对象,这应该就是对象的继承与重载吧

 

  4.Everyobjecthasatype

 

  每个对象都是类的一个实例,都有自己的特定的需要其完成其功能的数据类型

 

  5.Allobjectsofaparticulartypecanreceivethesamemessages

 

  一个特定类型的所有对象能够获取同样的消息

 

  java读书心得篇3

  注:

框架可以用word菜单中的“视图/文档结构图”看到

 

  j2ee模式

 

  valueobject(值对象)用于把数据从某个对象/层传递到其他对象/层的任意java对象。

 

  通常不包含任何业务方法。

 

  也许设计有公共属性,或者提供可以获取属性值的get方法。

 

  jsp

 

  1.jsp的基础知识

 

  __

 

  _____|directive(指令)

 

  ||--scripting(脚本)

 

  jsp-------||__action(动作)

 

  |

 

  |_____templatedata:

除jsp语法外,jsp引擎不能解读的东西

 

  1)在jsp中使用的directive(指令)主要有三个:

 

  a)page指令

 

  b)include指令

 

  c)taglib指令

 

  在jsp的任何地方,以任何顺序,一个页面可以包含任意数量的page指令

 

  2)scripting(脚本)包括三种类型

 

  a);

 

  b);

 

  c);

 

  3)action(动作)

 

  标准的动作类型有:

 

  a);

 

  b);

 

  d);

 

  e);

 

  f);

 

  g);

 

  h);日记日记300字

 

  1.注释:

;

 

  ;

 

  2.;

 

  session可以不赋值,默认为true,如果session=”false”,则在jsp页面中,隐含的变量session就不能使用。

 

  3.请求控制器结构(requestcontroller)

 

  也被称之为jspmodel2architecture

 

  这种途径涉及到使用一个servlet或一个jsp作为一个应用程序或一组页面的入口点。

 

  为创建可维护的jsp系统,requestcontroller是最有用的方式之一。

 

  不是jsp,而是java类才是放置控制逻辑的正确的地方。

 

  请求控制器的命名模式为:

xxxcontroller.jsp

 

  请求控制器类的命名模式为:

xxxrequestcontroller

 

  2.jsp中的javabean

 

  jsp三种bean的类型

 

  1)页面bean

 

  2)会话bean

 

  3)应用bean

 

  大多数的系统会使用一个会话bean来保持状态,而对每一个页面使用一个页面bean来对复杂的数据进行表示。

 

  页面bean是一个模型,而jsp是一个视图。

 

  3.customtag

 

  bean是信息的携带者,

 

  而tag更适用于处理信息。

 

  标记库包含一个标记库描述符(tld)和用于实现customtag的java类

 

  在翻译阶段,jsp容器将使用tld来验证页面中的所有的tag是否都被正确的使用。

 

  标记处理程序只是一个简单的适配器,而真正的逻辑是在另一个类中实现的,标记处理程序只是提供了一个供其他的可复用的类的jsp接口

 

  servlet

 

  1.servletconfig

 

  一个servletconfig对象是servletcontainer在servletinitialization的时候传递给servlet的。

 

  servletconfig包涵servletcontext和一些name/valuepair(来自于deploymentdescriptor)

 

  servletcontext接口封装了web应用程序的上下文概念。

 

  2.会话跟踪

 

  1)session

 

  当一个client请求多个servlets时,一个session可以被多个servlet共享。

 

  通常情况下,如果serverdetect到browser支持cookie,那么url就不会重写。

 

  2)cookie

 

  在javaservlet中,如果你光cookiecookie=newcookie(name,value)

 

  那么当用户退出browser时,cookie会被删除掉,而不会被存储在客户端的硬盘上。

 

  如果要存储cookie,需加一句cookie.setmaxage(200)

 

  cookie是跟某一个server相关的,运行在同一个server上的servlet共享一个cookie.

 

  3)urlrewriting

 

  在使用urlrewriting来维护sessionid的时候,每一次http请求都需要encodeurl()

 

  典型的用在两个地方

 

  1)out.print(“formaction=\””);

 

  out.print(response.encodeurl(“sessionexample”));

 

  out.print(“formaction=\””);

 

  out.print(“method=get>;”);

 

  2)out.print(“

 

  ;

 

  out.print(response.encodeurl(“sessionexample?

database=foo&datavalue=bar”));

 

  out.println(“\”>;urlencoded;”);

 

  3.singlethreadmodel

 

  默认的,每一个servletdefinitioninacontainer只有一个servletclass的实例。

 

  只有实现了singlethreadmodel,container才会让servlet有多个实例。

 

  servletspecification上建议,不要使用synchronized,而使用singlethreadmodel。

 

  singlethreadmodel(没有方法)

 

  保证servlet在同一时刻只处理一个客户的请求。

 

  singlethreadmodel是耗费资源的,特别是当有大量的请求发送给servlet时,singlethreadmodel的作用是使包容器以同步时钟的方式调用service方法。

 

  这等同于在servlet的service()方法种使用synchronized.

 

  singlethreadmodel一般使用在需要响应一个heavyrequest的时候,比如是一个需要和数据库打交道的连接。

 

  2.在重载servlet地init()方法后,一定要记得调用super.init();

 

  3.theclient通过发送一个blankline表示它已经结束request

 

  而theserver通过关闭thesocket来表示response已结束了。

 

  4.一个httpservlet可以送三种东西给client

 

  1)asinglestatuscode

 

  2)anynumberofhttpheaders

 

  3)aresponsebody

 

  5.servlet之间信息共享的一个最简单的方法就是

 

  system.getproperties().put(“key”,”value”);

 

  6.post和get

 

  post:

将form内各字段名称和内容放置在htmlheader内传送给server

 

  get:

?

之后的查询字符串要使用urlencode,经过urlencode后,这个字符串不再带有空格,以后将在server上恢复所带有的空格。

 

  get是web上最经常使用的一种请求方法,每个超链接都使用这种方法。

 

  7.web.xml就是webapplicatin的deploymentdescriptor

 

  作用有:

组织各类元素

 

  设置initparam

 

  设置安全性

 

  8.requestdispatcher用来把接收到的requestforwardprocessing到另一个servlet

 

  要在一个response里包含另一个servlet的output时,也要用到requestdispatcher.

 

  9.servlet和jsp在同一个jvm中,可以通过serveltcontext的

 

  setattribute()

 

  getattribute()

 

  removeattribute()

 

  来共享对象

 

  10.利用request.getparameter()得到的string存在字符集问题。

 

  可以用strtitle=request.getparameter(“title”);

 

  strtitle=newstring(strtitle.getbytes(“8859-1”),”gb2312”);

 

  如果你希望得到更大得兼容性

 

  stringencoding=response.getcharacterencoding();

 

  //确定applicationserver用什么编码来读取输入的。

 

  strtitle=newstring(strtitle.getbytes(encoding),”gb2312”);

 

  xml

 

  1.xml基础知识

 

  1.一个xml文档可以分成两个基本部分:

 

  首部(header)

 

  内容(content)

 

  2.xml名字空间规范中指定:

 

  xml文档中的每一个元素都处在一个名字空间中;如果没有指定的名字空间,缺省的名字空间就是和该元素相关联的名字空间。

 

  3.adocumentthatiswell-formedobeysalloftherulesofxmldocuments(nestedtags,etc.)

 

  "ifawell-formeddocumentusesadocumenttypedefinition(moreontheseinaminute),anditfollowsalltherulesofthedtd,thenitisalsoavaliddocument

 

  4.atagisthetextbetweenthe;

 

  "anelementisthestarttag,theendtag,andeverything(includingotherelements)inbetween

 

  5.标签(tags)实际上包含了“元素”(elements)和“属性”(attributes)两部分。

 

  用元素(elements)来描述有规律的数据。

 

  用属性(attributes)来描述系统数据。

 

  如果你有一些数据要提供给某个应用程序,该数据就可能要用到一个元素。

 

  如果该数据用于分类,或者用于告知应用程序如何处理某部分数据,或者该数据从来没有直接对客户程序公开,那么它就可能成为一种属性。

 

  6.cdata(读作:

cdata)c是character的缩写。

 

  7.org.xml.sax.reader

 

  /|\

 

  org.xm.l.sax.xmlreader

 

  /|\

 

  org.apche.xerces.parsers.saxparser

 

  2.webservice

 

  2.1webservice的基本概念

 

  webservice是一种可以接收从internet或者intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。

 

  这种技术允许网络上的所有系统进行交互。

随着技术的发展,一个web服务可以包含额外的指定功能并且可以在多个b2b应用中协作通讯。

 

  web服务可以理解请求中上下文的关系,并且在每一个特定的情况下产生动态的结果。

这些服务会根据用户的身份,地点以及产生请求的原因来改变不同的处理,用以产生一个唯一的,定制的方案。

这种协作机制对那些只对最终结果有兴趣的用户来说,是完全透明的。

 

  uddi

 

  在用户能够调用web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件。

所以,我们需要一种方法来发布我们的web服务。

 

  uddi(universaldescription,discovery,andintegration)是一个主要针对web服务供应商和使用者的新项目。

uddi项目中的成员可以通过uddibusinessregistry(ubr)来操作web服务的调用,ubr是一个全球性的服务。

 

  web服务供应商可以在ubr中描述并且注册他们的服务。

 

  用户可以在ubr中查找并定位那些他们需要的服务。

 

  uddi是一种根据描述文档来引导系统查找相应服务的机制。

 

  uddi包含标准的“白皮书”类型的商业查询方式,

 

  “黄皮书”类型的局部查找,以及

 

  “绿皮书”类型的服务类型查找。

 

  uddi利用soap消息机制(标准的xml/http)来发布,编辑,浏览以及查找注册信息。

它采用xml格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。

 

  wsdl

 

  对于商业用户来说,要找到一个自己需要使用的服务,他必须知道如何来调用。

 

  wsdl(webservicesdescriptionlanguage)规范是一个描述接口,语义以及web服务为了响应请求需要经常处理的工作的xml文档。

这将使简单地服务方便,快速地被描述和记录。

 

  以下是一个wsdl的样例:

 

  targetnamespace=""

 

  xmlns:

tns=""(5)(6)(7)(8)(9)(10)(11)(12)(13)(14)(15)

 

  xmlns:

xsd1=""

 

  xmlns:

soap=""

 

  xmlns="">;

 

  xmlns="">;

 

  type="tns:

stockquoteporttype">;

 

  transport=""/>;

 

  soapaction=""/>;

 

  ;myfirstservice;

 

  它包含了以下的关键信息:

 

  消息的描述和格式定义可以通过xml文档中的;和;标记来传送。

 

  ;标记中表示了消息传送机制。

(e.g.request-only,request-response,response-only)。

 

  ;标记指定了编码的规范。

 

  ;标记中表示服务所处的位置(url)。

 

  wsdl在uddi中总是作为一个接口描述文档。

因为uddi是一个通用的用来注册wsdl规范的地方,uddi的规范并不限制任何类型或者格式描述文档。

这些文档可能是一个wsdl文档,或者是一个正规的包含导向文档的web页面,也可能只是一个包含联系信息的电子邮件地址。

 

  现在java提供了一个javaapiforwsdl(jwsdl)规范。

它提供了一套能快速处理wsdl文档的方法,并且不用直接对xml文档进行操作,它会比jaxp更方便,更快速。

 

  soap

 

  当商业用户通过uddi找到你的wsdl描述文档后,他通过可以simpleobjectaccessprotocol(soap)调用你建立的web服务中的一个或多个操作。

 

  soap是xml文档形式的调用商业方法的规范,它可以支持不同的底层接口,象http(s)或者smtp。

 

  之所以使用xml是因为它的独立于编程语言,良好的可扩展性以及强大的工业支持。

之所以使用http是因为几乎所有的网络系统都可以用这种协议来通信,由于它是一种简单协议,所以可以与任何系统结合,还有一个原因就是它可以利用80端口来穿越过防火墙。

 

  soap的强大是因为它简单。

soap是一种轻量级的,非常容易理解的技术,并且很容易实现。

它有工业支持,可以从各主要的电子商务平台供应商那里获得。

 

  从技术角度来看,soap详细指明了如何响应不同的请求以及如何对参数编码。

一个soap封装了可选的头信息和正文,并且通常使用httppost方法来传送到一个http服务器,当然其他方法也是可以的,例如smtp。

soap同时支持消息传送和远程过程调用。

以下是一个soap请求。

 

  post/stockquotehttp/1.1

 

  host:

 

  content-type:

text/xml;charset="utf-8"

 

  content-length:

nnnn

 

  soapaction:

"some-uri"

 

  xmlns:

soap-env=""

 

  〖5〗〖6〗〖7〗〖8〗〖9〗〖10〗〖11〗〖12〗〖13〗〖14〗〖15〗

 

  soap-env:

encodingstyle=""/>;

 

  ;sunw;

 

  jaxr

 

  为了支持uddi在java平台上的功能,javaapisforxmlregistries(jaxr)允许开发者来访问注册中心。

 

  值得注意的是,jaxr并不是建立web服务必需的,你可以利用其他常用的xmlapis来直接集成这些协议。

 

  jaxr是一个方便的api,它提供了javaapi来发布,查找以及编辑那些注册信息。

它的重点在于基于xml的b2b应用,复杂的地址本查找以及对xml消息订阅的支持等web服务。

 

  它也可以用来访问其他类型的注册中心

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1