清丰网站建设费用,北京seo优化外包,禁止wordpress更新提示,建设银行不招聘网站《Effective.Enterprise.Java中文版》本书最重要的部分是#xff1a;理解企业级计算技术中的常规问题和使用企业级JAVA平台技术来处理这些问题。. 语言和API也许会发生变化#xff0c;但是你将会理解#xff1a;构建良好架构所要考虑的问题#xff1b;有那些通信方式可供选…《Effective.Enterprise.Java中文版》本书最重要的部分是理解企业级计算技术中的常规问题和使用企业级JAVA平台技术来处理这些问题。. 语言和API也许会发生变化但是你将会理解构建良好架构所要考虑的问题有那些通信方式可供选择如何选择状态存储的位置各式各样的安全问题等等这些思想性的东西不会变。 资源管理线程、数据库连接、套接字、文件所有这些资源比堆内存来说要更难于管理。他们的是生命周期存活于JAVA虚拟机之外并且需要以一种对并发使用来说友好的方式来被获取和被释放。 企业计算的十大谬误 参考P23 Web应用是一系列资源比如servlet、jsp、模型类、工具类、以及静态资源HTML、图像、声音文件等它们共同地相互协作以提供所需功能。Web应用采用单一的.war文件部署所以不可能出现只部署了部分应用或应用的各个部件之间的版本不匹配。 当你为企业级应用和系统规划基本流程和设计的时候牢记以下项中包含的建议你就能向优雅的目标迈进建立一个能够对高性能、高扩展性的企业级系统提供支撑的架构。 第1项优先采用构件作为开发、部署和重用的核心元素。 第2项跨越构件边界优先采用松耦合。 第3项区分逻辑层和物理层。 第4项数据和处理程序要尽可能靠近。 第5项牢记标识引起的竞争。 第6项使用“挂钩点”来注入优化、定制或新功能。 第7项面对故障时要健壮。 第8项定义性能和可扩展性目标。 第9项只在事务性处理中使用EJB。 第10项先测量性能再进行优化。 80/20规则它是计算机科学领域里最知名的规律之一其最常见的形式有20%的代码使用了80%的系统资源20%的代码占用了80%的运行时间20%的代码占用了80%的内存80%的需求文档只覆盖了20%的必要工作等等。 第11项认清“提供商中立”的成本。 第12项内置监控功能。 “心跳”进程监控错误与保存日志信息。 在不运行调试器的情况下要调试serlet或EJB时日志信息越多越好。 第13项内置管理支持。 第14项部署要尽可能简单。 第15项理解你所做的通信选择。 进程通信方式RPC和消息传送远程方法调用RMI公用对象请求代理程序架构CORBAServlet(servlet与xml有效负载结合直接进入Web Sservice领域);Java消息服务JMS(JMS与xml有效负载结合将你带入Web Sservice领域)Jini最显著的思想是自我修复网络和服务发现JXTA用于XML的Java APIJAX—RPC用于XML消息传递的Java APIJAXM。 上面中任何一个都能最终完成这项工作——将数据从机器A转移到机器B。很明显决策必须根植于某种事物如果你的系统通信要发生在特定环境之上请考虑下面的问题 1、你需要跨越防火墙的通信吗防火墙他们不允许在任意TCP/IP端口上有进入的流量而这正是RMI和CORBA都要使用的。 2、你需要同步通信吗如果你的通信模式大多是请求——响应模式RPC肯定上首选的通信模式。 3、你需要能够和任何平台进行通信吗包括那些你并不很了解的平台Web服务可以在所有平台之间创建一个“中间地带”因为XML的无处不在。 第16项仔细考虑你的查找。 在分布式系统中有多种形式的透明访问隐藏数据表示的不同以及一个资源如何被访问、位置隐藏一个资源被定位在哪里、迁移隐藏一个资源可以被移动到另一位置、重定位隐藏一个资源可以在运行时移动到另一位置、复制隐藏一个资源的复制、并发隐藏一个资源可以被多个竞争用户分享、失败隐藏一个资源的失败和恢复、持久性隐藏一个软件资源是在内存中还是在硬盘上。 第17项识别网络访问的代价。 第18项优选上下文完整的通信风格。 第19项优选数据驱动的通信而不是行为驱动的通信。 第20项避免为远程服务请求去等待响应。 第21项考虑构件的划分以避免任何一台机器负载过重。 分布式系统、DNS 第22项为了开放集成而考虑使用Web服务。 XMLHTTP 第23项大批量地传送数据。 传送的块状数据要足够大以适应远程调用的开销。不要一次传送一个而是大批量传送以完整的对象块或者对象集的形式。这正是IBM/BEA的服务数据对象Service Data Object解决方案的基本思想并且可以论证这只比过程优先的持久层差一点。 批量地传送数据也有一些局限性——不断地在网络上传送大量数据并不多次往返好多少因为你现在正在吸干网络带宽并强制通信层花费相当大的力气来编组、发送、接收、以及反编组数据。你还要基于客户端将怎样使用或不使用某一个特大的数据项来判断它是按引用传送还是按值传送更好尤其要注意集合和可序列化对象。 第24项考虑定制你自己的通信代理。 第25项保持简洁。 代码保持简洁 第26项优先采用规则引擎去处理复杂状态的评估和执行。 规则引擎通常服务于两个目的1以最好的方式捕获业务规则2允许修改这些规则而不需要重新编码Java代码本身。 任何书写规则引擎能够理解的“规则语言”有几种不同的实现一种是开源的实现叫做drools可以从http;//www.codehaus.org上获得BEA也包含了一种实现并将其作为WebLogic平台的一部分ILOG也在销售一种用来整合其它服务器的第三方的引擎。JSR94定义了标准的API用于连接规则引擎它的参考实现叫做Java专家系统外壳可以免费用于非赢利目的。 第27项优先为隐含的非原子性错误场景采用事务性处理。 第28项区分用户事务和系统事务。 第29项最小化锁窗口 作为一条规则在被同步的区域内你应该尽可能少的操作。 第30项当持有锁时不要让步给在构件之外的控制。 为了你自己在执行任何构件外的通信之前请确保所有的锁是释放的。 第31项理解EJB的事务关联。 第32项优先使用本地事务而不是分布式事务。 第33项为了更好的可扩展性而考虑使用乐观的并发机制。 第34项为了显式的并发控制而考虑使用悲观的并发机制。 第35项考虑使用较低的隔离级别以获得更大的事务吞吐量。 第36项面临回滚时使用保存点来保留部分工作。 第37项当有可能避免锁定区域时就复制数据源。 第38项偏爱不可变的因为它不需要任何锁。 第39项节省地使用HttpSession 第40项使用对象优先的持久化来保存你的领域模型。 第41项使用关系优先的持久化来显示关系模型的威力。 第42项使用过程优先的持久化来创建一个封装层。 第43项识别对象—层次结构的阻抗失配。 第44项使用进程内或本地存储以避开网络。 第45项不要假设拥有数据或数据库。 第46项惰性加载不频繁使用的数据。 第47项积极载入频繁使用的数据。 第48项批处理SQL的工作以避免往返访问。 第49项了解你的JDBC供应商。 第50项调整你的SQL语句。 第51项考虑富客户端UI技术。 HTML/DHTML、Flash/Flex、Applets、URLClassLoader类、JNLP和Java Web Start 第52项使HTML短小精悍。 第53项表示与处理分离。 第54项内容与样式相分离。 第55项预生成内容以最小化处理过程。 第56项尽早验证、尽量验证。 第57项安全是一个过程而不是产品。 第58项记住安全不仅仅是预防 第59项: 建立威胁模型 第60项作不安全假设 第61项:总是验证用户的输入 第62项打开平台安全机制 第63项使用基于角色的授权 第64项使用SignedObject以保证序列化对象的完整性 第65项使用SealedObject以保证可序列化对象的机密性 第66项使用GuardedObject以保证对象的存取控制 第67项主动释放资源 第68项调整JVM 第69项为版本并存使用独立的JRE 第70项识别类加载器的边界 隔离、版本控制 第71项理解Java的对象序列化 SerialVerUID域、自定义writeObject和readObject、 替换writeReplace和readResolve 第72项不要对抗垃圾收集器 第73项优选容器管理的资源管理 第74项使用Reference对象来扩展垃圾收集行为 SoftReference 对象 、WeakReference对象 、PhantomReference对象 第75项不要担心在服务器上的JNI代码 转载于:https://www.cnblogs.com/ajian005/archive/2012/10/28/2753653.html