02 2012 档案
摘要:Problem You want to provide access to one or more services using XML and web protocols J2EE applications expose coarse-grained business services using Service Facade (360). However, these services might be too fine grained to expose as a web service or may not be designed to be exposed outside...
阅读全文
摘要:根据WSDL定义,binding标签用于将抽象的数据定义与具体的实现协议、编码方式等进行绑定。这里用到两个重要的属性: style:RPC、Document use:encoded、literal<binding>标签片段如下:<binding name="ExamplePortBinding" type="tns:Example"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"&g
阅读全文
摘要:先看例子再做解释:<?xml version="1.0" encoding="UTF-8"?><definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.jsoso.com/wstest" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/&
阅读全文
摘要:Problem You want to invoke services asynchronously.Forces You want to invoke business services, POJOs, or EJB components in an asynchronous manner. You want to integrate publish/subscribe and point to point messaging to enable asynchronous processing services. You want to perform a business task...
阅读全文
摘要:意图: 将对象组合成树形结构以表示“部分-整体”的层次结构。 Composite使得用户对单个对象和组合对象的使用具有一致性。适用性: 你想表示对象的部分-整体层次结构。 你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。 (根据J道的理解,遇到树形结构的情形,就可以尝试是否使用组合模式。)组合模式一般有两实现方式:安全性与透明性模式。它们是一对互为矛盾的要求。透明性模式: Component(分支结点)里面声明所有用来管理子类对象的方法。 目的就是为了使客户看来Leaf和Composite没有区别。 但这造成安全性问题。安全性模式: ...
阅读全文
摘要:Command 模式(命令模式又称为行动(Action)模式或交易(Transaction)模式)意图: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤消的操作。适用性: 抽象出待执行的动作以参数化某对象,你可用过程语言中的回调(callback)函数表达这种参数化机制。 【所谓回调函数是指函数先在某处注册,而它将在稍后某个需要的时候被调用。】Command模式是回调机制的一个面向对象的替代品。(根据:DesignPatternMiniHandBook.chm)优点: 解耦了发送者和接受者之间联系。 发送者调用...
阅读全文
摘要:一个基于J2EE的开放源代码的应用服务器。 因为JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用它,而不用支付费用。另外,JBoss应用服务器还具有许多优秀的特质。 其一,它将具有革命性的JMX微内核服务作为其总线结构; 其二,它本身就是面向服务的架构(Service-Oriented Architecture,SOA); 其三,它还具有统一的类装载器,从而能够实现应用的热部署和热卸载能力。因此,它是高度模块化的和松耦合的。在2004年 6月,JBoss公司宣布,JBoss应用服务器通过了Sun公司的J2EE认证。有关JBoss应用服务器的架构和开发,开发者可以参考由S...
阅读全文
摘要:Seam远比传统的web框架,如Struts,涉及的范围更广范,最好把它说成是一个应用堆栈(application stack)。Seam应用堆栈包括框架、类库、构建脚本以及项目生成器、IDE集成、基础测试类、可嵌入的JBoss容器,而且与许多技术集成。为了了解为什么创建Seam,你需要知道它所面临过的挑战。尽管Java EE 5的发布已经为向着企业级Java开发建立敏捷平台前进了一大步,但是它在JSF管理的web层组件和JEB3管理的业务层组件之间留下了一个相当大的鸿沟,因此需要一个将二者连接起来的桥梁纽带。Java EE 5规范为了创建基于web的业务应用,合并了两个关键组件架构(用于创建
阅读全文
摘要:JDBC 驱动程序被认证为 J2EE 解决方案的一个组件。驱动程序认证的结果总是发布在 Sun 兼容性网站上。JDBC 驱动程序体系结构JDBC 驱动程序体系结构分为四种类型: ◆Type 1 ◆Type 2 ◆Type 3 ◆Type 4JDBC Type 1 驱动程序 JDBC Type 1 驱动程序基于 JDBC-ODBC 桥。因此 ODBC 驱动程序可以与此类 JDBC 驱动程序(由 Sun 提供)结合起来使用。JDBC Type 2 驱动程序 JDBC Type 2 驱动程序依靠特定于操作系统的库(共享库)来与 RDBMS 通信。应用程序将装入这种 JDBC 驱动...
阅读全文
摘要:个人认为的主要区别: 1、相比java5,java6的性能、稳定性显著提高; 2、java6对于桌面应用做了许多改进; 3、允许虚拟机运行时动态连接上去进行调试; 4、标准化脚本语言,包括JRuby,Javascript,Groovy等。详细区别如下:1、性能和质量 Java 6 同Java 5不一样,没有新的语言特征,是一个以稳定、提高为目的的版本。 Java 6不论是服务器端还是客户端版本都有了两位数百分比的提高,根据领域的不同Java 6性能提高了20%-40%。 在质量上,仅仅是兼容性测试就有100,000个测试程序来保证,Java 6是第一版在社区模式下开放式的进行的。...
阅读全文
摘要:ITIL即IT基础架构库(Information Technology Infrastructure Library, ITIL,信息技术基础架构库)由英国政府部门CCTA(Central Computing and Telecommunications Agency)在20世纪80年代末制订,现由英国商务部OGC(Office of Government Commerce)负责管理,主要适用于IT服务管理(ITSM)。ITIL为企业的IT服务管理实践提供了一个客观、严谨、可量化的标准和规范。在它的最新版2.0版中,ITIL主要包括六个模块,即业务管理、服务管理、ICT基础架构管理、IT服务管
阅读全文
摘要:内省(Introspector) Java 语言对 Bean 类属性、事件的一种缺省处理方法。 例如类 A 中有属性 name, 那我们可以通过 getName,setName 来得到其值或者设置新的值。 通过 getName/setName 来访问 name 属性,这就是默认的规则。 Java 中提供了一套 API 用来访问某个属性的 getter/setter 方法,这些 API 存放于包 java.beans 中。一般的做法 通过类 Introspector 来获取某个对象的 BeanInfo 信息,然后通过 BeanInfo 来获取属性的描述器( PropertyDe...
阅读全文
摘要:Spring文档地址:http://www.springsource.org/documentation包括如下部分: Spring Framework Spring Security Spring Roo Spring Mobile Spring Data Spring Web Services Spring Batch Spring Integration Spring AMQP Spring Social Spring Web Flow Spring BlazeDS Integration1、Spring Framework 。Flexi...
阅读全文
摘要:丐帮 - Apache Software Foundation在我开始学习Java的时候,Apache的Jakarta子项目还很弱小,Apache的头牌是Apache HTTPD Server(至今也还是头牌),如今已经成了Java开源江湖第一大帮。Apache势力庞大,背后有众多大厂商的支持,例如IBM资助了apache 的好几个 project,Sun则和tomcat合作密切,而BEA砸下重资在Beehive上面。有了官府的支持,Apache理所当然了成了第一大帮。不过 Apache的问题就是组织成员太复杂了,旗下各个project来自三山五岳,良莠不齐,甚至各个门下子弟还经常发生冲突,漫
阅读全文
摘要:BigTable是非关系的数据库。是一个稀疏的、分布式的、持久化存储的多维度排序Map。特点: 1、适合大规模海量数据,PB级数据; 2、分布式、并发数据处理,效率极高; 3、易于扩展,支持动态伸缩; 4、适用于廉价设备; 5、适合于读操作,不适合写操作。 6、不适用于传统关系数据库;BigTable两个开源实现: HBase:Java语言开发 Hypertable:Boost C++开发MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
阅读全文
摘要:B树、B-树、B+树、B*树 介绍、比较:B树: 二叉树,每个结点只存储一个关键字,等于则命中。B-树: 多路搜索树,每个结点存储M/2到M个关键字,非叶子结点存储指向关键字范围的子结点; 所有关键字在整棵树中出现,且只出现一次,非叶子结点可以命中。B+树: 在B-树的基础上,为叶子结点增加链表指针,所有关键字都在叶子结点中出现,非叶子结点作为叶子结点的索引; B+树总是到叶子结点才命中B*树: 在B+树的基础上,为非叶子结点也增加链表指针,将结点的最低利用率从1/2提高到2/3。数据库索引的种类有两种基本的索引结构,也就是索引文件的保存方式,一个是顺序索引,另外一个是散列索引。...
阅读全文
摘要:一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以流的形式访问(streaming acces
阅读全文
摘要:一、Scrum概述 Scrum是迭代的,增量型的流程。 Scrum构造的产品迭代周期为Sprints,工作的迭代周期一般为一到四周。 Sprints是有固定的周期——结束于固定明确的日期,无论该工作完成与否,从不延长。 在每一Sprint的启动阶段,一个多职能的团队长弄个已优先化的要求列表中挑选若干项目,并承诺在Sprint的末期完成这些项目。 每一工作日,团队成员互相通告工作进度,并更新简易的剩余工作量直观表示图表。 在Sprint的末期,团队将对这一阶段工作结果作一一展示并取得相关反馈,为下一Sprint做好准备。 Scrum强调生产可以使用的产品,意指在Sprint的末期产...
阅读全文
摘要:一、基本介绍: 回调函数(callback Function),顾名思义,用于回调的函数。 回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数。 回调函数是一个工作流的一部分,由工作流来决定函数的调用(回调)时机。 回调函数包含下面几个特性: 1、属于工作流的一个部分; 2、必须按照工作流指定的调用约定来申明(定义); 3、他的调用时机由工作流决定,回调函数的实现者不能直接调用回调函数来实现工作流的功能;二、回调函数和观察者模式的关系 观察者模式定义对象间的一种一对多的依赖关系。 当一个对象的状态发生改变时, 所有依赖于它的对象...
阅读全文
摘要:JBoss是一个运行EJB的J2EE应用服务器。它是开放源代码的项目,遵循最新的J2EE规范。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web 操作系统(operating system for web)具体配置和部署方法请参阅:http://www.huihoo.org/jboss/jboss3_ejb.htm
阅读全文
摘要:什么是WTP?WTP (Web Tools Platform) 是一个开发J2EE Web应用程序的工具集。用了太长时间的MyEclipse难免想换换口味,引用一段官方的描述来介绍WTP:The Eclipse Web Tools Platform (WTP) project extends the Eclipse platform with tools for developing Web and Java EE applications. It includes source and graphical editors for a variety of languages, wizards
阅读全文
摘要:在Java RMI中要求所有的参数传递和返回类型是JAVA的基本类型或实现Serilizable的对象。串行化对象通过值传递(又名拷贝传递),而不是引用传递。这意味着在某一层中串行化对象的更新并不自动影响到其它的对象。对于EJB对象而言,它由两个接口(home接口和remote接口)和一个类组成。容器会根据ejb规范来生成上面两个接口的类(我们分别称为xxxEJBHome对象和xxxEjbObject对象)。在较多的容器实现方案中,xxxEJBHome对象使用了factory模式来创建xxxEjbObject对象;xxxEjbObject对象则采用proxy模式作为xxxBean的代理类。在生
阅读全文
摘要:Observer模式 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 让一个对象(观察者,Observer)去监视另一个对象(目标,Subject); 它使得目标和观察者之间建立一种 "发布--订阅"(publish-subscribe )的关系。通过Observer模式,观察者可以向目标登记,表明自己要从目标接收事件。目标需要向观察者通知事件时,只是简单地将事件发给每一个观察者。Observer模式的好处是: 它解除了观察者和目标之间的耦合关系。 目标不需要知道它的观察者的任何信息。 相反,目标只是允许观察者订阅事
阅读全文
摘要:问: 为什么需要模式?答: 每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。 有了模式,你就能一次又一次的使用该解决方案而不必做重复(探索的)劳动。-----------------------------------------------------------------------------------------------------------------J2EE平台是分层系统,我们按职责将J2EE的层次模型化,共分了五个层次: 客户层、表示层、业务层、集成层和资源层。因为客户层和资源层并不是J2EE平台直接关注的问题,所以后面介绍的21个...
阅读全文
摘要:MDB是基于JMS技术支撑的,MDB实际上消息的消费者;进一步说,MDB是在标明自己是MDB身份的前提下的消息的消费者,那它就必须做到两点:一、继承javax.ejb.MessageDriverBean(标明MDB身份)二、继承javax.jms.MessageListener (说明自己是消费者)参考:http://hjw2java.iteye.com/blog/838062
阅读全文
摘要:1、synchronized不能继承, 父类的方法是synchronized,那么其子类重载方法中就不会继承“同步”。2、构造两个线程之间实时通信的方法分几步:(1). 创建一个PipedWriter和一个PipedReader和它们之间的管道;PipedReader in = new PipedReader(new PipedWriter())(2). 在需要发送信息的线程开始之前,将外部的PipedWriter导向给其内部的Writer实例out(3). 在需要接受信息的线程开始之前,将外部的PipedReader导向给其内部的Reader实例in(4). 这样放入out的所有东西度可从i
阅读全文
摘要:1、Bridge模式:将抽象和行为划分开来,各自独立,但能动态的结合起来(好象搭建了一座桥)。 在EJB中,是将商业逻辑和数据库访问这样的行为划分开来,数据库访问专门放置在DAO中了。2、Adapter模式:将特定的数据源驱动接口适配到DAO接口中去3、工厂模式:创建对象,达到接口和实现分离的目的4、单例模式:创建工厂类5、Facade模式:SessionFacade,将具体工作封装到EJB bean中6、Proxy模式:对EJB对象的调用实际是对EJB代理对象的调用参考:http://blog.csdn.net/hdy007/article/details/1458539
阅读全文
摘要:1、Annotation替代了配置文件 凡是EJB2中使用配置文件定义的;EJB3一般都可以使用 annotations定义(当然EJB3也支持配置文件定义); 凡是EJB2通过JNDI寻找的资源(调用容器中其他EJB、调用环境变量等Resource资源等),都是可以依靠annotations+依赖注射机制完成。2、持久层使用Java Persistence API 替代了EJB2的实体Bean。参考:http://www.jdon.com/artichect/EJB2_EJB3.html
阅读全文
摘要:JTA,即Java Transaction API,译为Java事务API。JTA允许应用程序执行分布式事务处理——在两个或多个网络计算机资源上访问并且更新数据。JDBC驱动程序的JTA支持极大地增强了数据访问能力。Java事务API(JTA:Java Transaction API)和它的同胞Java事务服务(JTS:Java Transaction Service),为J2EE平台提供了分布式事务服务(distributed transaction)。一个分布式事务(distributed transaction)包括一个事务管理器(transaction manager)和一个或多个资源
阅读全文
摘要:一、架构设计基本原则 1、关键点的分离 2、单一责任原则 3、最少知识原则 4、不要重复自己 5、避免在前期做大量的设计 6、多用组合少用继承二、设计要点 在设计软件或系统时,软件架构的目标就是通过将设计分割为不同的关注领域来降低其复杂性。 例如,用户接口、业务进程和数据访问均可视为不同的关注领域。设置应用程序的指导方针: 1、避免在前期做所有的设计 2、分割关注领域 3、每个组件或模块应有单一的责任 4、一个组件或对象不应该依赖其他组件或对象的内部细节 5、在一个应用程序内部不要复制功能 6、确定应用程序组件的组成部分 7、组织不同类型的组件到各自的逻辑层 ...
阅读全文
摘要:工作线程:public class SimpleThread extends Thread { private boolean isRunning; private GenericObjectPool pool; public boolean getIsRunning() { return isRunning; } public synchronized void setIsRunning(boolean flag) { isRunning = flag; if (flag) { this.notif...
阅读全文
摘要:hibernate延迟加载只对load,get,find等一些方法有用,对hql等写SQL的方法无效。(但是属性延迟加载的例子不就是使用HQL么???)hibernate提供了对实体对象、集合、属性三种类型的延迟加载。一、实体对象的延迟加载配置方法<hibernate-mapping><class name="com.neusoft.entity.User" table="user" lazy="true">...</class></hibernate-mapping>使用:User u
阅读全文
摘要:struts的第一个版本在2001年5月发布最初设想是通过结合JSP和Servlet,使Web应用的视图和业务/应用逻辑得以清晰地分离开来。(之前的做法是在JSP中加入业务逻辑或在Servlet中通过println()生成视图)到最后,产生了几个下一代Struts的解决方案。其中两个最受瞩目的方案是Shale和Struts Ti。Shale是一个基于构件的框架,并在最近成为 Apache的顶级项目。而Struts Ti则是在Struts的成功经验基础上继续坚持对前端控制器(Front Controller)和MVC(model-view-controller) 模式进行改进。WebWork项目
阅读全文
摘要:Struts2的拦截器堆栈(Interceptor Stacks)是一个典型的责任链模式的应用。 首先将整个执行划分成若干相同类型的元素,每个元素具备不同的逻辑责任,并将他们纳入到一个链式的数据结构中(堆栈)。 而每个元素又有责任负责链式结构中下一个元素的执行调用。Struts2的Interceptor一层一层,把Action包裹在里面。这样的结构有一下一些特点: 1、整个结构就如同一个堆栈,除了Action以外,堆栈中的其他元素是Interceptor 2、Action位于堆栈的底部,由于堆栈“先进后出”的特性,如果我们试图把Action拿出来执行,我们必须首先把位于Action上的...
阅读全文
摘要:Struts2的核心是使用的webwork框架,处理 action时通过调用底层的getter/setter方法来处理http的参数。它将每个http参数声明为一个ONGL语句。当我们提交一个http参数:Javascript代码 ?user.address.city=Bishkek&user['favoriteDrink']=kumysONGL将它转换为: Java代码 action.getUser().getAddress().setCity("Bishkek") action.getUser().setFavoriteDrink("k
阅读全文
摘要:exploit-db网站在7月14日爆出了一个Struts2的远程执行任意代码的漏洞。漏洞名称:Struts2/XWork < 2.2.0 Remote Command Execution Vulnerability相关介绍:http://www.exploit-db.com/exploits/14360/http://sebug.net/exploit/19954/Struts2的核心是使用的webwork框架,处理 action时通过调用底层的getter/setter方法来处理http的参数,它将每个http参数声明为一个ONGL(这里是ONGL的介绍)语句。当我们提交一个http
阅读全文
摘要:一种功能强大的表达式语言。通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。这种功能是模板语言的一个重要补充,像JSP2.0,Velocity,jelly等都有类似的功能。但是ognl比它们完善得多,而且以一个独立的lib出现,方便我们构建自己的框架。OGNL是通常要结合Struts 2的标志一起使用。主要是#、%和$这三个符号的使用。OGNL支持各种纷繁复杂的表达式。但是最基本的是访问用点串联起来的对象及其引用值。1. 基本对象树的访问 对象树的访问就是通过使用点号将对象的引用串联起来进行。.
阅读全文
摘要:十大差异:1、Action类2、线程模式3、Servlet依赖4、可测性5、捕获出入6、表达式语言7、绑定值到页面(View)8、类型转换9、校验10、Action执行的控制详细比较:1、Action类 Struts1:Action类需要继承一个抽象类(org.apache.struts.action.Action) Struts2:任何execute标示的POJO对象都可作为Action对象 另外: 1、虽然,在理论上Struts2的Action无须实现任何接口或者是继承任何的类。 但是,在实际编程过程中,为了更加方便的实现Action,大多数情况下都会继承com.o...
阅读全文
摘要:http://wenku.baidu.com/view/5a2f4b3083c4bb4cf7ecd180.html
阅读全文
摘要:解决办法:在Struts2过滤器前增加一个过滤器,使用过滤器转发到servlet上Web.xml<filter><filter-name>JSONRPCServlet</filter-name><filter-class>filters.ReDispatcherFilter</filter-class><init-param><param-name>includeServlets</param-name><param-value>JRPC</param-value><!
阅读全文
摘要:function GetXmlHttpObject(){ var xmlHttp=null; try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttp=new ActiveXObject("Microso...
阅读全文
摘要:线程池类: java.util.concurrent.ThreadPoolExecutor常用构造方法: ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime , TimeUnit unit, BlockingQueue<Runnable> workQueue, RejectedExecutionHandler handler)参数说明: 1)corePoolSize: 线程池维护线程的最少数量 2)maximumPoolSize:线程池维护线程的最大数量 3)keepAlive..
阅读全文
摘要:1、使用线程池的好处: 1、减少在创建和销毁线程上所花的时间以及系统资源的开销 2、如果不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及“过渡切换”2、什么情况下使用线程池? 1、单个任务处理的时间比较短 2、将需处理的任务的数量大3、Java中的线程池介绍:Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是ExecutorService。线程池的类体系结构中比较重要的类:ExecutorService: 真正的线程池接口。ScheduledExecutorService ...
阅读全文
摘要:1、继承(extends): 空心三角形+实线 有时称泛化(Generalization)2、实现(implements): 空心三角形+虚线 有时称实现(Realization)3、关联(Association): 实线箭头表示,例如:燕子与气候4、聚合(Aggregation): 空心的菱形+实线箭头 一种弱的“拥有”关系,例如公司和员工5、组合(Composition): 实心的菱形+实线箭头 部分和整体的关系,例如人和手6、依赖(Dependency): 虚线箭头表示,例如,动物与氧气7、基数: 连接两端的数字表明这一端的类可以有几个实例,如鸟应该有2个翅膀 关...
阅读全文
摘要:进程:运行中的应用程序,一套顺序执行的指令,每个进程都有自己独立的内存空间。线程:并发执行的顺序流,一个进程包括多个顺序执行的流程,这些流程被称为线程。JVM就是一个进程,在JVM中分出线程,比如main()就是主线程。同时开辟并发执行的序列即多线程。线程是一个操作系统创建并维护的一个资源,对于单CPU系统来说,某一时刻只可能由一个线程在运行。一个Thread对象就表示一个线程。线程由三部分组成: 1)CPU分配给线程的时间片 2)线程代码(写在run方法中) 3)线程数据进程的数据空间独立;线程的数据空间共享,能充分使用CPU资源线程间通讯容易。共享数据就要加锁、解锁,会降低效率...
阅读全文
摘要:来源:http://wenku.baidu.com/view/7a36f0db6f1aff00bed51e21.html
阅读全文
摘要:Object类的方法:wait(), notify(), notifyAll()Thread类的方法:sleep(), yield(), join()1. Object类的方法:wait(), notify(), notifyAll() 用于协调多线程对共享数据的存取,所以必须在Synchronized语句块内使用。 如果在其他地方调用,虽然能编译通过,但在运行时会发生IllegalMonitorStateException异常。wait() 使当前线程暂停执行并释放对象锁,让其它线程可以进入Synchronized数据块。 当前线程被放入对象等待池中。notify() 调...
阅读全文
摘要:Java采用了流的机制来实现输入/输出。所谓流,就是数据的有序排列。而流可以是从某个源(称为流源或Source of Stream)出来,到某个目的地(称为流汇或Sink of Stream)去的。由流的方向,可以分成输入流和输出流。一个程序从输入流读取数据向输出流写数据。流处理器所处理的流必定都有流源,而如果将流类所处理的流源分类的话,基本可以分成两大类: 第一 数组,String,File等,这一种叫原始流源。 第二 同样类型的流用做链接流类的流源,叫链接流源。Java语言的I/O库是对各种常见的流源,流汇以及处理过程的抽象化。客户端的Java程序不必知道最终的流源,流汇是磁盘上的文件还是
阅读全文
摘要:Oracle数据库:SET TRANSACTION ISOLATION LEVEL语句来设置ORACLE事务隔离级别。JDBC:设置Connection的setTransactionIsolation()Spring中:设置在方的注解里。如:@Transactional(readOnly=true, propagation=Propagation.NOT_SUPPORTED,isolation=Isolation.DEFAULT)public void find(Integer id) { em.find(Person.class, id);}
阅读全文
摘要:Isolation 属性一共支持五种事务设置:1、DEFAULT 使用数据库设置的隔离级别 (默认) ,由 DBA 默认的设置来决定隔离级别 . 2、READ_UNCOMMITTED 会出现脏读、不可重复读、幻读 (隔离级别最低,并发性能高)3、READ_COMMITTED 会出现不可重复读、幻读问题(锁定正在读取的行,适合于大多数系统) 4、REPEATABLE_READ 会出现幻读(锁定所读取的所有行) 5、SERIALIZABLE 保证所有的情况不会发生(锁表)三种恼人的问题:1: Dirty reads:读脏数据。 也就是说,比如事务A的未提交(还依然缓存)的数据被事务B读走,如果事.
阅读全文
摘要:Spring支持七种传播属性(Propagration):1、PROPAGATION_REQUIRED --支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。2、PROPAGATION_SUPPORTS --支持当前事务,如果当前没有事务,就以非事务方式执行。3、PROPAGATION_MANDATORY --支持当前事务,如果当前没有事务,就抛出异常。4、PROPAGATION_REQUIRES_NEW --新建事务,如果当前存在事务,把当前事务挂起。5、PROPAGATION_NOT_SUPPORTED --以非事务方式执行操作,如果当前存在事务,就把当前事务挂起...
阅读全文
摘要:Spring配置文件中关于事务配置总是由三个部分组成 DataSource TransactionManager 代理机制无论哪种配置方式,一般变化的只是代理机制这部分。DataSource、TransactionManager这两部分只是会根据数据访问方式有所变化。比如使用Hibernate进行数据访问时,DataSource实际为SessionFactory,TransactionManager的实现为HibernateTransactionManager。具体如下图:五种不同配置方法的共同部分配置如下: <bean id="sessionFactory" ...
阅读全文
摘要:目的:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。使用Decorator而不是继承的原因: 当需要扩展的功能的种类很多时,使用继承势必造成很多子类,增加系统的复杂性。经典例子: <<Head First Design Pattern>>里的咖啡吧例子。 基本咖啡有四种:HouseBlend,DarkRoast,Decaf,Espresso。 咖啡调味料四种:steamed milk, soy, mocha, whipped cream milk。 每种咖啡可以和一种或多种调味料混合形成新的咖啡。 此时如果使用继承,将会
阅读全文
摘要:简单介绍: 工厂模式专门负责将大量有共同接口的类实例化。 工厂模式可以动态决定实例化哪一个类。不必事先知道每次要实例化哪个类。工厂模式的几种形态: 简单工厂(Simple Factory) 又称静态工厂模式 <由一个具体工厂类使用静态方法根据客户端传入的数据决定创建那种产品> [main] Product prod = Creator.factory(type1); 工厂方法(Factory Method) 又称多态性工厂模式或虚拟构造子模式(Virtual Constructor) <客户端首先决定创建哪种具体的工厂类,然后由工厂类创建具体的...
阅读全文
摘要:这更多的是一个架构层面的模式,注重从架构的层次去看整个系统,而不是单个类的层次。目的是为一个复杂的系统提供一个统一的接口便于客户程序使用。可能的使用原因:1、原有系统非常复杂,客户程序可能只需要其中一部分功能,或是希望订制使用。2、提供统一的访问入口,限制客户程序对系统的全面访问。 使用Facade,可以监视系统的使用情况。3、提高系统的独立性,减少未来切换系统时对客户程序的影响。与其他模式的区别: Facade模式注重简化接口 Adapter模式注重转换接口 Bridge模式注重分离接口(抽象)与其实现 Decorator模式注重稳定接口的前提下为对象扩展功能例子:门卫通常需要抄作...
阅读全文
摘要:1、泛型2、增强的For循环3、自动置入、取出(Autoboxing/unboxking)4、类型安全的枚举5、静态导入6、可变参数7、新的并发包 (新) java.util.concurrent java.util.concurrent.atomic java.util.concurrent.locks简单介绍如下:1、泛型 可以声明一个集合将要接收/返回的对象类型,从而获得编译时的类型安全,更小的可能抛出ClassCastException2、增强的For循环for (type element : array){ System.out.println(element);}3、...
阅读全文
摘要:一级缓存: 就是Session级别的缓存。一个Session做了一个查询操作,它会把这个操作的结果放在一级缓存中。 如果短时间内这个session(一定要同一个session)又做了同一个操作,那么hibernate直接从一级缓存中拿,而不会再去连数据库,取数据。 它是内置的事务范围的缓存,不能被卸载。二级缓存: 就是SessionFactory级别的缓存。顾名思义,就是查询的时候会把查询结果缓存到二级缓存中。 如果同一个sessionFactory创建的某个session执行了相同的操作,hibernate就会从二级缓存中拿结果,而不会再去连接数据库。 这是可选的插件式的缓存,在...
阅读全文
摘要:singleton作用域:当把一个Bean定义设置为singleton作用域是,Spring IoC容器中只会存在一个共享的Bean实例,并且所有对Bean的请求,只要id与该Bean定义相匹配,则只会返回该Bean的同一实例。值得强调的是singleton作用域是Spring中的缺省作用域。prototype作用域:prototype作用域的Bean会导致在每次对该Bean请求(将其注入到另一个Bean中,或者以程序的方式调用容器的getBean()方法)时都会创建一个新的Bean实例。根据经验,对有状态的Bean应使用prototype作用域,而对无状态的Bean则应该使用singleto
阅读全文
摘要:创建模式:(5) 1、Simple Factory 2、Abstract Factory 3、Singleton 4、Builder 5、Prototype结构模式:(7) 1、Adaptor 2、Bridge 3、Composite 4、Decorator 5、Facade 6、Flyweight 7、Proxy行为模式:(11) 1、Chain of Responsibility 2、Command 3、Interpreter 4、Iterator 5、Memento 6、Mediator 7、Strategy 8、State 9、Observer...
阅读全文
摘要:1、单一职责原则(Single Responsibility Principle,简称SRP) 单一职责原则,就一个类而言,应该仅有一个引起它变化的原因。这是高内聚的绝佳体现,如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会消弱或者一直这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。而软件设计真正要做的许多内容,就是发现职责,并把这些职责相互分离。2、 开放--封闭原则(The Open-Closed Principle,简称OCP) 开放--封闭原则,是说软件实体(类、模块、函数等等)应该可以扩展,但是不可以修改。即对于
阅读全文
浙公网安备 33010602011771号