《2023年java编程思想读书心得学java心得体会(3篇).docx》由会员分享,可在线阅读,更多相关《2023年java编程思想读书心得学java心得体会(3篇).docx(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2023年java编程思想读书心得学java心得体会(3篇) 心中有不少心得体会时,不如来好好地做个总结,写一篇心得体会,如此可以始终更新迭代自己的想法。我们想要好好写一篇心得体会,可是却无从下手吗?下面我给大家整理了一些心得体会范文,希望能够帮助到大家。 java编程思想读书心得 学java心得体会篇一 这本书主要讲解并描述的是,作者采访精神病人时的故事。通俗的说,就是以精神病人的角度去看这个,我们不断质疑的世界。 其实生活中我们经常质疑这个世界,例如先有蛋还是先有鸡,活着的真正目的究竟是为了什么等等一系列的质疑!我们正常人或许只是从表面分析一下。而精神病患者往往会偏执于他们所执著的事,把一
2、些微小的事放大化的来看,以至于做出些极端的事情。所以在正常人的眼里他们病了,俗称“精神病患者”。 书中提到有许多精神病医师因为长时间跟精神病患者接触最终他们也“病”了,或许在他们的内心深处原来就存在些因素。因为长时间跟精神病患者接触他们内心里面的平衡点被打乱了,所以“病”了!其实天才与疯子只是一线之隔,关键在于内心里那个平衡点! 书中有两个爱情故事。但是可以用一段文字说明。摘抄的。 指间的戒指不再闪亮 婚纱在衣柜早就尘封 我们的容颜都已渐渐苍老 感谢你带给我的每一天 正是因为你 我才有志气说: “恒久,恒久。” 第一个故事是一位臆想症的老人,老伴逝去多年,依旧认为他活着。 其次个故事是一位丧偶
3、的中年人,不断的学习生理等课程,为了复活爱人。 感受很深,然后静默不言。 书中有一段是讲“角度问题”。一个女“患者” 说在工作外她会是个孩子,她喜爱这个簇新的世界,而不是去习惯这个世界,每个人都有权利选择自己的喜好而不是必需跟别人一样的看法!这个女人其实没有问题,反而是认为她有问题的人才有问题。不是每个人都习惯墨守成规,孩子是的列子。不是全部大多数人认为对的事情就是对的,大多数人认为错的事情就是错的!而那个“大多数“的界限往往让我们思想上有限制了,所以慢慢的我们也就习惯了! 书中结尾是我最喜爱的一句话“人生若只如初见“! java编程思想读书心得 学java心得体会篇二 注:框架可以用word
4、菜单中的 “视图/文档结构图” 看到 j2ee模式 value object(值对象) 用于把数据从某个对象/层传递到其他对象/层的随意java对象。 通常不包含任何业务方法。 或许设计有公共属性,或者供应可以获得属性值的get方法。 jsp 的基础学问 _ _ | directive (指令) | |- scripting (脚本) jsp -| |_ action (动作) | |_template data :除jsp语法外,jsp引擎不能解读的东西 1)在jsp中运用的directive(指令)主要有三个: a) page指令 b) include指令 c) taglib指令 在jsp
5、的任何地方,以任何依次,一个页面可以包含随意数量的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. 恳求限制器结构(request controller) 也被称之为jsp model 2 architecture 这种途径涉及到运用一个servlet或一
6、个jsp作为一个应用程序或一组页面的入口点。 为创建可维护的jsp系统,request controller是最有用的方式之一。 不是jsp,而是java类才是放置限制逻辑的正确的地方。 恳求限制器的命名模式为: 恳求限制器类的命名模式为: requestcontroller 中的javabean jsp三种bean的类型 1) 页面bean 2) 会话bean 3) 应用bean 大多数的系统会运用一个会话bean来保持状态,而对每一个页面运用一个页面bean 来对困难的数据进行表示。 页面bean是一个模型,而jsp是一个视图。 tag bean是信息的携带者, 而tag更适用于处理信息。
7、 标记库包含一个标记库描述符(tld)和用于实现custom tag的java类 在翻译阶段,jsp容器将运用tld来验证页面中的全部的tag是否都被正确的运用。 标记处理程序只是一个简洁的适配器,而真正的逻辑是在另一个类中实现的,标记处理程序只是供应了一个供其他的可复用的类的jsp接口 servlet tconfig l 一个servletconfig对象是servlet container在servlet initialization的时候传递给servlet的。 servletconfig包涵 servletcontext 和 一些 name/value pair (来自于deploym
8、ent descriptor) l servletcontext接口封装了web应用程序的上下文概念。 2.会话跟踪 1) session l 当一个client恳求多个servlets时,一个session可以被多个servlet共享。 l 通常状况下,假如server detect到browser支持cookie,那么url就不会重写。 2) cookie l 在java servlet中,假如你光 cookie cookie = new cookie(name,value) 那么当用户退出browser时,cookie会被删除掉,而不会被存储在客户端的硬盘上。 假如要存储 cookie,
9、需加一句 age(200) l cookie是跟某一个server相关的,运行在同一个server上的servlet共享一个cookie. 3) url rewriting 在运用url rewriting来维护session id的时候,每一次http恳求都须要encodeurl 典型的用在两个地方 1) (“form action=” ”); (url(“sessionexample”); (“form action=” ”); (“method = get>”); 2) (“ ; (url(“sessionexample?database=foodatavalue=bar”); n
10、(“” >url encoded ;”); threadmodel 默认的,每一个servlet definition in a container只有一个servlet class的实例。 只有实现了singlethreadmodel,container才会让servlet有多个实例。 servlet specification上建议,不要运用synchronized,而运用singlethreadmodel。 singlethreadmodel(没有方法) 保证servlet在同一时刻只处理一个客户的恳求。 singlethreadmodel是耗费资源的,特殊是当有大量的恳求发送给s
11、ervlet时,singlethreadmodel的作用是使包涵器以同步时钟的方式调用service方法。 这等同于在servlet的service方法种运用synchronized. single thread model一般运用在须要响应一个heavy request的时候,比如是一个须要和数据库打交道的连接。 2. 在重载servlet地init( )方法后,( ); 3. the client通过发送一个blank line表示它已经结束request 而the server通过关闭the socket来表示response已结束了。 4. 一个http servlet可以送三种东西给
12、client 1) a single status code 2) any number of http headers 3) a response body 5. servlet之间信息共享的一个最简洁的方法就是 (“key”,”value”); 6. post和get post:将form内各字段名称和内容放置在html header内传送给server get: ?之后的查询字符串要运用urlencode,经过urlencode后,这个字符串不再带有空格,以后将在server上复原所带有的空格。 get是web上最常常运用的一种恳求方法,每个超链接都运用这种方法。 7. 就是web ap
13、plicatin 的deployment descriptor 作用有:组织各类元素 设置init param 设置平安性 8. request dispatcher用来把接收到的request forward processing到另一个servlet 要在一个response里包含另一个servlet的output时,也要用到request dispatcher. 9. servlet和jsp在同一个jvm中,可以通过serveltcontext的 setattribute( ) getattribute( ) removeattribute( ) 来共享对象 10. ameter( )得
14、到的string存在字符集问题。 可以用 strtitle = ameter(“title”); strtitle = new string(es(“8859-1”),”gb2312”); 假如你希望得到更大得兼容性 string encoding = racterencoding; /确定application server用什么编码来读取输入的。 strtitle = new string(es(encoding),”gb2312”); xml 基础学问 1. 一个xml文档可以分成两个基本部分: 首部( header ) 内容( content ) 2. xml名字空间规范中指定: xm
15、l文档中的每一个元素都处在一个名字空间中;假如没有指定的名字空间,缺省的名字空间就是和该元素相关联的名字空间。 3. a document that is well-formed obeys all of the rules of xml documents (nested tags, etc.) if a well-formed document uses a document type definition (more on these in a minute), and it follows all the rules of the dtd, then it is also a vali
16、d document 4. a tag is the text between the ; an element is the start tag, the end tag,and everything (including other elements) in between 5. 标签( tags ) 事实上包含了“元素”( elements ) 和 “属性”( attributes )两部分。 用元素( elements )来描述有规律的数据。 用属性( attributes ) 来描述系统数据。 假如你有一些数据要供应给某个应用程序,该数据就可能要用到一个元素。 假如该数据用于分类,或
17、者用于告知应用程序如何处理某部分数据,或者该数据从来没有干脆对客户程序公开,那么它就可能成为一种属性。 6. cdata (读作:c data ) c是character的缩写。 . /| der /| ser vice 2.1 webservice的基本概念 webservice是一种可以接收从internet或者intranet上的其它系统中传递过来的恳求,轻量级的独立的通讯技术。 这种技术允许网络上的全部系统进行交互。随着技术的发展,一个web服务可以包含额外的指定功能并且可以在多个b2b应用中协作通讯。 web服务可以理解恳求中上下文的关系,并且在每一个特定的状况下产生动态的结果。这些
18、服务会依据用户的身份,地点以及产生恳求的缘由来变更不同的处理,用以产生一个唯一的,定制的方案。这种协作机制对那些只对最终结果有爱好的用户来说,是完全透亮的。 uddi 在用户能够调用web服务之前,必需确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件。所以,我们须要一种方法来发布我们的web服务。 uddi (universal description, discovery, and integration) 是一个主要针对web服务供应商和运用者的新项目。uddi 项目中的成员可以通过uddi business registry (ubr) 来操作web服务的调用
19、,ubr是一个全球性的服务。 web服务供应商可以在ubr中描述并且注册他们的服务。 用户可以在ubr中查找并定位那些他们须要的服务。 uddi是一种依据描述文档来引导系统查找相应服务的机制。 uddi包含标准的“白皮书”类型的商业查询方式, “黄皮书”类型的局部查找,以及 “绿皮书”类型的服务类型查找。 uddi利用soap消息机制(标准的xml/http)来发布,编辑,阅读以及查找注册信息。它采纳xml格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回须要的数据。 wsdl 对于商业用户来说,要找到一个自己须要运用的服务,他必需知道如何来调用。 wsdl (web ser
20、vices description language) 规范是一个描述接口,语义以及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=/> ;my first se
21、rvice; 它包含了以下的关键信息: 消息的描述和格式定义可以通过xml文档中的;和; 标记来传送。 ; 标记中表示了消息传送机制。 (e.g. request-only, request-response, response-only) 。 ; 标记指定了编码的规范 。 ; 标记中表示服务所处的位置 (url)。 wsdl在uddi中总是作为一个接口描述文档。因为uddi是一个通用的用来注册wsdl规范的地方,uddi的规范并不限制任何类型或者格式描述文档。这些文档可能是一个wsdl文档,或者是一个正规的包含导向文档的web页面,也可能只是一个包含联系信息的电子邮件地址。 现在java供应
22、了一个 java api for wsdl (jwsdl)规范。它供应了一套能快速处理wsdl文档的方法,并且不用干脆对xml文档进行操作,它会比jaxp更便利,更快速。 soap 当商业用户通过uddi找到你的wsdl描述文档后,他通过可以simple object access protocol (soap) 调用你建立的web服务中的一个或多个操作。 soap是xml文档形式的调用商业方法的规范,它可以支持不同的底层接口,象http(s)或者smtp。 之所以运用xml是因为它的独立于编程语言,良好的可扩展性以及强大的工业支持。之所以运用http是因为几乎全部的网络系统都可以用这种协议来
23、通信,由于它是一种简洁协议,所以可以与任何系统结合,还有一个缘由就是它可以利用80端口来穿越过防火墙。 soap的强大是因为它简洁。soap是一种轻量级的,特别简单理解的技术,并且很简单实现。它有工业支持,可以从各主要的电子商务平台供应商那里获得。 从技术角度来看,soap具体指明白如何响应不同的恳求以及如何对参数编码。一个soap封装了可选的头信息和正文,并且通常运用http post方法来传送到一个http 服务器,当然其他方法也是可以的,例如smtp。soap同时支持消息传送和远程过程调用。以下是一个soap恳求。 post /stockquote http/1.1 host: uote
24、server content-type: text/xml; charset=utf-8 content-length: nnnn soapaction: some-uri xmlns:soap-env=; 56789101112131415 soap-env:encodingstyle=;/> ;sunw; jaxr 为了支持uddi在java平台上的功能,java apis for xml registries (jaxr)允许开发者来访问注册中心。 值得留意的是,jaxr并不是建立web服务必需的,你可以利用其他常用的xml apis来干脆集成这些协议。 jaxr是一个便利的api
25、,它供应了java api来发布,查找以及编辑那些注册信息。它的重点在于基于xml的b2b应用,困难的地址本查找以及对xml消息订阅的支持等web服务。 它也可以用来访问其他类型的注册中心,象ebxml注册中心。 这些对web服务的注册信息进行的操作,可以运用当前的一些web服务工具来完成(例如第三方的soap和ebxml消息工具)。另外,当jaxp供应了一样并具有针对性的api来完成这些操作,这将使开发变得更加简单。 jax/rpc 为了使开发人员专注于建立象soap那样的基于xml的恳求,jcp正在开发基于rpc (jax/rpc) 的java api。jax/rpc是用来发送和接收方法调
26、用恳求的,它基于xml协议,象soap,或者其他的象xmlp (xml protocol,要了解更多可以参考)。jax/rpc使你不用再关注这些协议的规范,使应用的开发更快速。不久,开发人员就不用干脆以xml表示方法调用了。 目前有许多第三方实现了soap,开发人员可以在不同的层次上调用soap,并选择运用哪一种。将来,jax/rpc会取代这些apis并供应一个统一的接口来构造以及处理soap rpc恳求。 在接收一个从商业伙伴那里过来的soap恳求的时候,一个java servlet用jax/rpc来接收这个基于xml的恳求。一旦接收到恳求后,servlet会调用商务方法,并且把结果回复给商
27、业伙伴。 jaxm 当从商业合作伙伴那里接收一个web服务的恳求时,我们须要java api实现一个servlet来处理ebxml消息,就象我们用jax/rpc来处理soap恳求一样。 java api for xml messaging (jaxm) 是集成xml消息标准(象ebxml消息或者soap消息)的规范。 这个api是用来推动xml消息处理的,它检测那些预定单的消息格式以及约束。它限制了全部的消息封装机制,用一种直观的方式分割了消息中的信息,象路由信息,发货单。这样,开发人员只要关注消息的有效负载,而不用去担忧那些消息的重复处理。 目前的开发人员用jaxp来实现jaxm将要供应的功
28、能,jaxm将会供应一套特别具有针对性的api来处理基于xml的消息传送。这将大大简化开发人员的代码,并使它们具有统一的接口。 jaxm和jax/rpc的差别在于处理消息导向的中间件以及远程过程调用的不同。jaxm注意于消息导向,而jax/rpc是用来完成远程过程调用的。以下是图解。 请留意,在jaxm 和 jax/rpc技术成熟之前,开发人员还是依靠于第三方的soap apis,象apache soap, idooxoap, 以及 glue。当jaxm 和 jax/rpc正式发布后,它将为当前不同的soap和ebxml消息供应统一的接口。就象jdbc位多种不同的数据库供应统一的接口。 jax
29、b xml绑定技术可以把xml文档和java对象进行自由转换。 用jaxb,你可以在后台的ejb层,把xml文档转换成java对象。同样你也可以把从ejb中取出的java对象转换成xml文档返回给用户。 jaxb接口供应了比sax和dom更高级的方法来处理xml文档。它供应的特性可以在xml数据和java类之间相互映射,供应了一个简洁的方法来转换xml数据。它比逐个解析标记更简洁。 2.2 建立weservice的步骤 在建立weservice的时候,有三个主要步骤: 1.建立客户端联接 为了允许applets,applications,商业合作伙伴,阅读器和pdas 运用web服务。 2.实
30、现web服务 包括工作流,数据传送,商业逻辑以及数据访问。这些功能是隐藏在web服务后,并且为客户端工作的。 3.联接后台系统 这个系统可能包括一个或多个数据库,现存的企业信息系统,商业合作伙伴自己的系统或者web服务,以及在多个系统中共享的数据。 基于j2ee的web服务的核心构架: rmi 1. rmi-iiop 2. rmi 是在java中运用remote method invocation的最初的方法,包 rmi-iiop 是rmi的一个特别版本,rmi-iiop可以和corba兼容, jaf(java活动构架) 开发者可以运用jaf来确定随意一块数据的类型、封装对数据的访问、找寻合适
31、的操作、实例化相关的bean来执行这些操作等。 例如,javamail就是运用jaf依据mime类型来确定实例化那一个对象。 ejb 1. ejb组件实现代码的限制 ejb组件的约束 ejb的开发者并不须要在ejb的组件实现代码中编写系统级的服务,ejb供应商/开发 者需知道并且严格地遵守一些限制,这些限制与开发稳定的和可移植的ejb组件的利益有 <1><2><3><4><5><6><7><8><9><10><11><12><13><
32、14><15> 关。 以下是你应当回避运用的一些java特色,并且在你的ejb组件的实现代码中要严格限 制它们的运用: 1.运用static,非final 字段。建议你在ejb组件中把全部的static字段都声明为final型的。这样可以保证前后一样的运行期语义,使得ejb容器有可以在多个java虚拟机之间分发组件实例的敏捷性。 2.运用线程同步原语来同步多个组件实例的运行。避开这个问题,你就可以使ejb容器敏捷的在多个java虚拟机之间分发组件实例。 3.运用awt函数完成键盘的输入和显示输出。约束它的缘由是服务器方的商业组件意味着供应商业功能而不包括用户界面和键盘的i/o
33、功能。 4.运用文件访问/ 操作。ejb商业组件意味着运用资源管理器如jdbc来存储和检索数据而不是运用文件系统api。同时,部署工具供应了在部署描述器(descriptor)中存储环境实体,以至于ejb组件可以通过环境命名上下文用一种标准的方法进行环境实体查询。所以,运用文件系统的需求基本上是被解除了。 5.监听和接收socket连接,或者用socket进行多路发送。ejb组件并不意味着供应网络socket服务器功能,但是,这个体系结构使得ejb组件可以作为socket客户或是rmi客户并且可以和容器所管理的环境外面的代码进行通讯。 6.运用映象api查询ejb组件由于平安规则所不能访问的类
34、。这个约束加强了java平台的平安性。 7.欲创建或获得一个类的加载器,设置或创建一个新的平安管理器,停止java虚拟机,变更输入、输出和出错流。这个约束加强了平安性同时保留了ejb容器管理运行环境的实力。 8.设置socket工厂被urls serversocket,socket和stream handler运用。避开这个特点,可以加强平安性同时保留了ejb容器管理运行环境的实力。 9.运用任何方法启动、停止和管理线程。这个约束消退了与ejb容器管理死锁、线程 和并发问题的责任相冲突的可能性。 通过限制运用10-16几个特点,你的目标是堵上一个潜在的平安漏洞: 10.干脆读写文件描述符。 1
35、1.为一段特定的代码获得平安策略信息。 12.加载原始的类库。 13.访问java一般角色所不能访问的包和类。 14.在包中定义一个类。 15.访问或修改平安配置对象(策略、平安、供应者、签名者和实体)。 16.运用java序列化特点中的细分类和对象替代。 17.传递this引用指针作为一个参数或者作为返回值返回this引用指针。你必需运用 sessioncontext或entitycontext中的getejbobject的结果。 java2平台的平安策略 以上所列的特点事实上正是java编程语言和java2标准版中的标准的、强有力的特色。ejb容器允许从j2se中运用一些或全部的受限制的特
36、色,尽管对于ejb组件是不行用的,但需通过j2se的平安机制来运用而不是通过干脆运用j2se的api。 java2平台为ejb1.1规范中的ejb容器所制定的平安策略定义了平安许可集,这些许可在ejb组件的编程限制中出现。通过这个策略,定义了一些许可诸如:.filepermission,.netpermission,tpermission,ty.securitypermission,以便加强从前所列出的编程限制。 很多ejb容器没有加强这些限制,他们希望ejb组件开发者能遵守这些编程限制或者是带有冒险想法违反了这些限制。违反这些限制的ejb组件,比标准方法依靠过多或过少的平安许可,都将很少能在
37、多个ejb容器间移植。另外,代码中都将隐藏着一些不确定的、难以预料的问题。全部这些都足以使ejb组件开发者应当知道这些编程限制,同时也应当仔细地遵守它们。 任何违反了这些编程限制的ejb组件的实现代码在编译时都不能检查出来,因为这些特点都是java语言和j2se中不行缺少的部分。 对于ejb组件的这些限制同样适用于ejb组件所运用的帮助/访问(helper/access)类,j2ee应用程序运用java文档(jar)(代表enterprise archive)扩展名的文件中,这个ear文件对于发送给文件部署器来说是标准的格式。ear文件中包括在一个或多个ejb-jar文件中的ejb组件,还可能
38、有ejb-jar所依靠的库文件。全部ear文件中的代码都是经过深思熟虑开发的应用程序并且都遵守编程限制和访问许可集。 将来版本的规范可能会指定通过部署工具来定制平安许可的实力,通过这种方法指定了一个合法的组件应授予的许可权限,也指定了一个标准方法的需求:如从文件系统中读文件应有哪些要求。一些ejb容器/服务器目前在它们的部署工具中都供应了比标准权限或多或少的许可权限,这些并不是ejb1.1规范中所须要的。 理解这些约束 ejb容器是ejb组件生存和执行的运行期环境,ejb容器为ejb组件实例供应了一些服务如:事务管理、平安长久化、资源访问、客户端连接。ejb容器也负责ejb组件实例整个生命期的
39、管理、扩展问题以及并发处理。所以,ejb组件就这样借居在一个被管理的执行环境中-即ejb容器。 因为ejb容器完全负责ejb组件的生命期、并发处理、资源访问、平安等等,所以与容器本身的锁定和并发管理相冲突的可能性就须要消退,很多限制都须要运用来填上潜在的平安漏洞。除了与ejb容器责任与平安冲突的问题,ejb组件还意味着仅仅聚焦于商务逻辑,它依靠于ejb容器所供应的服务而不是自己来干脆解决底层的系统层的问题。 3 4 5 6 7 8 9 10 11 12 13 14 15 可能的问题 通常,ejb组件在容器之间的移植不行避开地与如下问题相关: 1.它须要依靠的受限制的特点在特定ejb容器中没有得
40、到加强。 2.它须要依靠的非标准的服务从容器中可获得。 为了保证ejb组件的可移植性和一样的行为,你应当运用一个具有与java2平台平安 策略集相一样的策略集的容器来测试ejb组件,并且其加强了前述的编程限制。 总结 ejb组件开发者应当知道这些举荐的关于ejb组件的编程限制,明白它们的重要性,并且从组件的稳定性和可移植性利益方面考虑来遵循它们。因为这些编程限制能阻挡你运用标准的java语言的特点,违反了这些编程限制在编译时不会知道,并且加强这些限制也不是ejb容器的责任。全部这些缘由都使你应很当心地遵守这些编程限制,这些限制在组件的合同中已经成为了一个条款,并且它们对于建立牢靠的、可移植的组
41、件是特别重要的。 2. 优化ejb entity bean为在应用程序和设计中描述长久化商业对象(persistent business objec ts)供应了一个清楚的模型。在java对象模型中,简洁对象通常都是以一种简洁的方式进行处理但是,许多商业对象所须要的事务化的长久性管理没有得到实现。entity bean将长久化机制封装在容器供应的服务里,并且隐藏了全部的困难性。entity bean允许应用程序操纵他们就像处理一个一般的java对象应用。除了从调用代码中隐藏长久化的形式和机制外,entity bean还允许ejb容器对对象的长久化进行优化,保证数据存储具有开放性,敏捷性,以及可
42、部署性。在一些基于ejb技术的项目中,广泛的运用oo技术导致了对entity bean的大量运用,sun的工程师们已经积累了许多运用entity bean的阅历,这篇文章就具体阐述的这些卡发阅历: *探究各种优化方法 *供应性能优化和提高适用性的法则和建议 *探讨如何避开一些教训。 法则1:只要可以,尽量运用cmp cmp方式不仅削减了编码的工作量,而且在container中以及container产生的数据库访问代码中包括了很多优化的可能。container可以访问内存缓冲中的bean,这就允许它可以监视缓冲中的任何改变。这样的话就在事物没有提交之前,假如缓存的数据没有改变就不用写到数据库中。
43、就可以避开很多不必要的数据库写操作。另外一个优化是在调用find方法的时候。通常状况下find方法须要进行以下数据库操作: 查找数据库中的纪录并且获得主键 将纪录数据装入缓存 cmp允许将这两步操作优化为一步就可以搞定。详细怎么做我也没弄明白,原文没有详细阐述 法则2:写代码时尽量保证对bmp和cmp都支持 很多状况下,ejb的开发者可能无法限制他们写的bean怎么样被部署,以及运用的container是不是支持cmp. 一个有效的解决方案是,将商业逻辑的编码完全和长久化机制分别。再cmp类中实现商业逻辑,然后再编写一个bmp类,用该类继承cmp类。这样的话,全部的商业逻辑都在cmp类中,而长久化机制在bmp中实现。我觉得这种状况在实际工作中很少遇到,但是作者解决问题的思路值得学习 法则3:把ejbstore中的数据库访问减小到最少。 假如运用bmp,设置一个缓存数据变更标记dirty特别有用。全部变更数据库中底层数据的操作,都要设置dirty,而在ejbstore中,首先检测dirty