02 2014 档案

摘要:在删除主表数据时,报了一个异常Cannot delete or update a parent row: a foreign key constraint fails原因是主表中还包含字表的数据,不能删除与这张表或数据有关联的字段,所以无法删除解决办法:在创建数据库的外键时,将删除的动作配置由RESTRICT改成cascade,就可以解决. 阅读全文
posted @ 2014-02-28 19:30 E_star 阅读(1020) 评论(0) 推荐(0) 编辑
摘要:简单来说,对象内存分配主要是在堆中分配。但是分配的规则并不是固定的,取决于使用的收集器组合以及JVM内存相关参数的设定以下介绍几条基本规则(使用的ParNew+Serial Old收集器组合):一,对象优先在新生代Eden区分配[java]view plaincopy//-XX:+UseParNewGC-Xms20m-Xmx20m-Xmn10m-XX:+PrintHeapAtGC-XX:+PrintGCDetailspublicclasstest{staticintmb=1024*1024;publicstaticvoidmain(String[]args){byte[]b1=newbyte[ 阅读全文
posted @ 2014-02-24 21:09 E_star 阅读(2013) 评论(0) 推荐(0) 编辑
摘要:基本上 jvm内存回收有三种 基本算法标记-清除标记清除的算法最简单,主要是标记出来需要回收的对象,然后然后把这些对象在内存的信息清除。如何标记需要回收的对象,在上一篇文章里面已经有说明。标记-清除-压缩这个算法是在标记-清除的算法之上进行一下压缩空间,重新移动对象的过程。因为标记清除算法会导致很多的留下来的内存空间碎片,随着碎片的增多,严重影响内存读写的性能,所以在标记-清除之后,会对内存的碎片进行整理。最简单的整理就是把对象压缩到一边,留出另一边的空间。由于压缩空间需要一定的时间,会影响垃圾收集的时间。标记-清除-复制这个算法是吧内存分配为两个空间,一个空间(A)用来负责装载正常的对象信息 阅读全文
posted @ 2014-02-24 19:53 E_star 阅读(1045) 评论(1) 推荐(0) 编辑
摘要:转载自:http://www.cnblogs.com/aigongsi/archive/2012/04/06/2434771.htmljava与C,c++有很大的不同就是java语言开发者不需要关注内存信息,不会显式的直接操作内存,而是通过jvm虚拟机来实现。java虚拟机运行的时候内存分配图如下图:jvm虚拟机栈:一个是线程独有的,每次启动一个线程,就创建一个jvm虚拟机栈,线程退出的时候就销毁。这里面主要保存线程本地变量名和局部变量值。本地方法栈: 调用本地jni方法的时候而创建的。这里分配的jvm之外的内存空间。方法调用结束之后销毁。pc寄存器 : 这个保存线程当前执行的字节码指令堆:主 阅读全文
posted @ 2014-02-24 19:34 E_star 阅读(721) 评论(0) 推荐(0) 编辑
摘要:互联网大势1、《浪潮之巅》:吴军,电子工业出版社,2011年讲述历史,揭示规律:从科技工业一百多年的发展,揭示那些站在技术革命的浪尖之上的公司成功的本质原因。2、《沸腾十五年:中国互联网1995-2009》:林军,中信出版社,2009年覆雨翻云的中国网事;荡气回肠的产业传奇;虚拟世界的真实讲述;万象网络的还原走笔。这本关于中国互联网产业历史的书,脉络清晰、生动鲜明地把这样一大批创业者的形象和他们的动人故事呈现在读者眼前,值得一读。3、《互联网进化论》:刘锋,清华大学出版社,2012年用全面、联系的观点看云计算,物联网、移动互联网与传统互联网:一本全方位地介绍互联网的技术要点和商业模式,深入探讨 阅读全文
posted @ 2014-02-24 15:31 E_star 阅读(898) 评论(0) 推荐(1) 编辑
摘要:事务传播属性REQUIRED:业务方法需要在一个事务中运行。如果方法运行时,已经处在一个事务中,那么加入到该事务,否则为自己创建一个新的事务。NOT_SUPPORTED:声明方法不需要事务。如果方法没有关联到一个事务,容器不会为它开启事务。如果方法在一个事务中被调用,该事务会被挂起,在方法调用结束后,原先的事务便会恢复执行。REQUIRESNEW:属性表明不管是否存在事务,业务方法总会为自己发起一个新的事务。如果方法已经运行在一个事务中,则原有事务会被挂起,新的事务会被创建,直到方法执行结束,新事务才算结束,原先的事务才会恢复执行。MANDATORY:该属性指定业务方法只能在一个已经存在的事务 阅读全文
posted @ 2014-02-23 10:31 E_star 阅读(519) 评论(0) 推荐(0) 编辑
摘要:1:配置数据源,如: 这一步完成之后我们可以进行数据的增删改查操作啦。注意使用到的Jar包写实体bean, 以及servive 层, 然后再xml中配置bean 以及为bean配置数据源; package cn.gbx.service.impl;import java.util.List;import javax.sql.DataSource;import org.springframework.jdbc.core.JdbcT... 阅读全文
posted @ 2014-02-23 09:53 E_star 阅读(897) 评论(0) 推荐(0) 编辑
摘要:1: 首先我们要定义 配置成切面的类package cn.gbx.example;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.After;import org.aspectj.lang.annotation.AfterReturning;import org.aspectj.lang.annotation.AfterThrowing;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotatio 阅读全文
posted @ 2014-02-22 16:21 E_star 阅读(331) 评论(0) 推荐(0) 编辑
摘要:------------------------------------------要进行AOP编程,首先我们要在spring的配置文件中引入aop命名空间:Spring提供了两种切面声明方式,实际工作中我们可以选用其中一种:基于XML配置方式声明切面。基于注解方式声明切面自定的切面:(注意我们的切面一定要交给Spring管理才行,也即在XML文件里配置)package cn.gbx.example;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.After;import org.as 阅读全文
posted @ 2014-02-22 15:54 E_star 阅读(348) 评论(0) 推荐(0) 编辑
摘要:当我们用Proxy 实现Spring的AOP的时候, 我们的代理类必须实现了委托类的接口才能实现。 而如果代理类没有实现委托类的接口怎么办? 那么我们就可以通过CGLib来实现package cn.gbx.aop; import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy; import cn.gbx.service.impl.PersonService; public class ProxyFactory implements Invoca 阅读全文
posted @ 2014-02-22 13:09 E_star 阅读(601) 评论(0) 推荐(0) 编辑
摘要:首先给出设计模式静态代理与动态代理的学习:http://layznet.iteye.com/blog/1182924 讲的不错然后我们实现AOP 就要求我们对委托的所有方法的调用实现拦截代理类生成的工厂package cn.gbx.aop;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;import cn.gbx.service.impl.PersonService;public class ProxyFactory impleme 阅读全文
posted @ 2014-02-22 09:54 E_star 阅读(361) 评论(0) 推荐(0) 编辑
摘要:通过在classpath自动扫描方式把组件纳入spring容器中管理前面的例子我们都是使用XML的bean定义来配置组件。在一个稍大的项目中,通常会有上百个组件,如果这些这组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找及维护起来也不太方便。spring2.5为我们引入了组件自动扫描机制,他可以在类路径底下寻找标注了@Component、@Service、@Controller、@Repository注解的类,并把这些类纳入进spring容器中管理。它的作用和在xml文件中使用bean节点配置组件是一样的。要使用自动扫描机制,我们需要打开以下配置信息: 默认注册了注解处理.. 阅读全文
posted @ 2014-02-21 20:38 E_star 阅读(877) 评论(0) 推荐(0) 编辑
摘要:首先分析。1: 肯定要利用dom4j读取xml配置文件,将所有的bean的配置信息读取出来2: 利用反射技术,实例化所有的bean3: 写注解处理器, 利用注解和内省实现依赖对象的注入。4: 利用XML中信息,通过内省beanUtils实现基本数据类型的注入实现:package cn.gbx.example;import java.beans.IntrospectionException;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.io.File;import java.lang 阅读全文
posted @ 2014-02-21 19:17 E_star 阅读(1549) 评论(0) 推荐(0) 编辑
摘要:依赖注入: 使用构造器注入 使用属性setter方法注入 使用Field注入(用于注解方式)注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,因为自动装配会产生未知情况,开发人员无法预见最终的装配结果。手工装配依赖对象,在这种方式中又有两种编程方式1. 在xml配置文件中,通过在bean节点下配置,如 //构造器注入 //属性setter方法注入2. 在java代码中使用@Autowired或@Resource注解方式进行装配。但我们需要在xml配置文件中配置以下信息: 这个配置隐式注册了多个对注释进行解析处理的处理器:AutowiredAnnotationBeanP... 阅读全文
posted @ 2014-02-21 11:01 E_star 阅读(248) 评论(0) 推荐(0) 编辑
摘要:1: 在给对象提供构造器public class PersonServiceImpl implements PersonService { private PersonDao personDao; private String name; public PersonServiceImpl(PersonDao personDao, String name) { super(); this.personDao = personDao; this.name = name; } public void save() { personDao.save(); System.out.pri... 阅读全文
posted @ 2014-02-21 10:54 E_star 阅读(434) 评论(0) 推荐(0) 编辑
摘要:1: 首先给service添加集合类型的属性,并提供getter, setterpackage cn.gbx.serviceimpl;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Properties;import java.util.Set;import cn.gbx.daoimpl.PersonDao;import cn.gbx.service.PersonServ 阅读全文
posted @ 2014-02-21 10:02 E_star 阅读(360) 评论(0) 推荐(0) 编辑
摘要:注入bean有两种方式:注入其他bean:方式一 方式二(使用内部bean,但该bean不能被其他bean使用) 一般我们的工程在service层依赖dao层的实现来实现业务逻辑。service层:public class PersonServiceImpl implements PersonService { private PersonDao personDao; @Override public void save() { personDao.save(); System.out.println("service : " + " save 方法") 阅读全文
posted @ 2014-02-20 20:37 E_star 阅读(1272) 评论(0) 推荐(0) 编辑
摘要:1: bean的创建: 如果我们默认的scope配置为Singleton的话, bean的创建实在Spring容器创建的时候创建; 如果scope的配置为Prototype的话,bena的创建是在getBean的时候创建的。 同样我们还可以在的配置中配置lazy-init = ”true“是bean的创建在getBean时。2: 我们有时候可能在bean完成之后可能想要打开一些资源。 我们可以配置init-method="init" init方法在调用了类的默认构造函数之后执行3: 如果我们想在bean销毁时,释放一些资源。 我们可以配置destroy-method=&qu 阅读全文
posted @ 2014-02-20 10:51 E_star 阅读(1811) 评论(0) 推荐(0) 编辑
摘要:1.使用类构造器实例化 (90%以上都是使用这种)2.使用静态工厂方法实例化public class OrderFactory { public static OrderServiceBean createOrder(){ return new OrderServiceBean(); }}3.使用实例工厂方法实例化: 首先要实例化工厂public class OrderFactory { public OrderServiceBean createOrder(){ return new OrderServiceBean(); }} 阅读全文
posted @ 2014-02-20 09:50 E_star 阅读(2043) 评论(0) 推荐(0) 编辑
摘要:1: 首先我们要利用dom4j进行xml的解析,将所有的bean的配置读取出来。2:利用java的反射机制进行对象的实例化。3: 直接获得对象package cn.Junit.test;import java.net.URL;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.XPath;import org.dom4j.i 阅读全文
posted @ 2014-02-20 09:34 E_star 阅读(575) 评论(0) 推荐(0) 编辑
摘要:由于spring的schema文件位于网络上,如果机器不能连接到网络,那么在编写配置信息时候就无法出现提示信息,解决方法有两种:1。让机器上网,eclipse会自动从网络上下载schema文件并缓存在硬盘上。2。手动添加schema文件,方法如下:windwos->preferences->myeclipse->files and editors->xml->xmlcatalog点"add",在出现的窗口中的Key Type中选择URI,在location中选"File system",然后在spring解压目录的dist/ 阅读全文
posted @ 2014-02-19 18:42 E_star 阅读(319) 评论(0) 推荐(0) 编辑
摘要:这里是采用的视频里面的spring版本下载spring2.5.6, 然后进行解压缩,在解压目录中找到下面jar文件,拷贝到类路径下dist\spring.jarlib\jakarta-commons\commons-logging.jar上边两个是基本的jar包。。如果使用了切面编程(AOP),还需要下列jar文件lib/aspectj/aspectjweaver.jar和aspectjrt.jarlib/cglib/cglib-nodep-2.1_3.jar如果使用了JSR-250中的注解,如@Resource/@PostConstruct/@PreDestroy,还需要下列jar文件lib 阅读全文
posted @ 2014-02-19 18:28 E_star 阅读(1504) 评论(0) 推荐(0) 编辑
摘要:Spring是什么? Spring是一个开源的控制反转(Inversion of Control ,IoC)和面向切面(AOP)的容器框架.它的主要目得是简化企业开发.IOC 控制反转: public class PersonServiceBean { private PersonDao personDao = new PersonDaoBean(); public void save(Person person){ personDao.save(person); }}PersonDaoBean 是在应用内部创建及维护的。所谓控制反转就是应... 阅读全文
posted @ 2014-02-19 15:14 E_star 阅读(202) 评论(0) 推荐(0) 编辑
摘要:1: 在Myeclipse中新建一个java工程2: 将你的标签处理器类统统都拷到工程里面, 将tld文件拷到META-INF里面3:点击file里面的export, 阅读全文
posted @ 2014-02-19 11:05 E_star 阅读(298) 评论(0) 推荐(0) 编辑
摘要:•开发防盗链标签: (控制整个jsp页面是否执行)package cn.gbx.web.example;import java.io.IOException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.jsp.JspException;import javax.servlet.jsp.PageContext;import javax.servlet.jsp.SkipPageException;import javax 阅读全文
posted @ 2014-02-19 10:53 E_star 阅读(395) 评论(0) 推荐(0) 编辑
摘要:自定义标签可以定义一个或多个属性,这样,在JSP页面中应用自定义标签时就可以设置这些属性的值,通过这些属性为标签处理器传递参数信息,从而提高标签的灵活性和复用性要想让一个自定义标签具有属性,通常需要完成两个任务:在标签处理器中编写每个属性对应的setter方法在TLD文件中描术标签的属性为自定义标签定义属性时,每个属性都必须按照JavaBean的属性命名方式,在标签处理器中定义属性名对应的setter方法,用来接收JSP页面调用自定义标签时传递进来的属性值。 例如属性url,在标签处理器类中就要定义相应的setUrl(String url)方法。在标签处理器中定义相应的set方法后,JSP引擎 阅读全文
posted @ 2014-02-18 16:34 E_star 阅读(635) 评论(0) 推荐(0) 编辑
摘要:由于传统标签使用三个标签接口来完成不同的功能,显得过于繁琐,不利于标签技术的推广, SUN公司为降低标签技术的学习难度,在JSP 2.0中定义了一个更为简单、便于编写和调用的SimpleTag接口来实现标签的功能。实现SimpleTag接口的标签通常称为简单标签。简单标签共定义了5个方法:setJspContext方法setParent和getParent方法setJspBody方法doTag方法setJspContext方法用于把JSP页面的pageContext对象传递给标签处理器对象 setParent方法用于把父标签处理器对象传递给当前标签处理器对象 getParent方法用于获得当前 阅读全文
posted @ 2014-02-18 16:24 E_star 阅读(381) 评论(0) 推荐(0) 编辑
摘要:Tag接口的执行流程 JSP引擎将遇到自定义标签时,首先创建标签处理器类的实例对象,然后按照JSP规范定义的通信规则依次调用它的方法。 1、public void setPageContext(PageContextpc), JSP引擎实例化标签处理器后,将调用setPageContext方法将JS... 阅读全文
posted @ 2014-02-18 15:50 E_star 阅读(268) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示