Java
Jde冻结
这个作者很懒,什么都没留下…
展开
-
Java的垃圾回收机制
我们就以内存回收,垃圾收集算法以及jvm中的垃圾收集器原理和特点三个部分来讨论。一、内存回收1、哪些内存需要回收?2、判断对象是否还存活1)引用计数算法(Reference Counting)2)可达性分析算法(Reachability Analysis)3)四种引用4)两次标记5)方法区的回收二、垃圾收集算法1)标记清除算法(Mark-Sweep)2)复制算法(Copying)3)标记整理算法(Mark-Compact)4)分代收集算法(Generational Collecti原创 2015-08-25 14:54:41 · 494 阅读 · 0 评论 -
web过滤器
过滤器是一个服务器端的组件,它可以截取客户端的请求与响应信息,并对这些信息过滤。过滤器的应用场景:1.对用户请求进行统一认证2.编码转换3.对用户发送的数据进行过滤替换4.转换图像格式5.对响应内容进行压缩原创 2016-02-16 23:45:01 · 301 阅读 · 0 评论 -
观察者模式
一、什么是观察者模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。二、观察者模式的本质观察者模式的本质是触发联动。三、观察者模式的两种实现1.推模型目标对象主动像观察者推送目标的详细信息,推送的信息通常是目标对象的全部或部分数据,相当于广播通信。2.拉模型目标对象在通知观察者的时候,值传递少量原创 2016-02-25 00:01:04 · 370 阅读 · 0 评论 -
mysql优化总结
我们可以从四个方面来对数据库进行优化:SQL及索引、数据库表结构、系统配置、硬件。这四种优化成本一次升高,效果却依次降低。所以我们对数据库的优化应该更关注成本低效果好的SQL及索引优化和数据库表结构优化。优化手段一:我们可以开启慢查询日志对有效率问题的SQL进行监控优化手段二:使用explain查看SQL的执行计划优化手段三:建立合适的索引,尽量选择在where从句、gro原创 2016-02-23 23:08:01 · 284 阅读 · 0 评论 -
设计模式之单例模式
一、什么是单例模式保证整个应用中某个实例有且只有一个,这类实例如果创建多个往往会导致许多问题,比如占用过多资源,得到不一致的结果等。二、单例模式的应用场景配置文件、工具类、线程池、缓存、日志对象等三、单例模式的代码实现单例模式分为饿汉模式和懒汉模式饿汉模式实现public class Singleton { private static Sing原创 2016-02-22 22:10:36 · 218 阅读 · 0 评论 -
在浏览器中输入www.taobao.com后执行的全部过程
在浏览器中输入www.taobao.com后执行的全部过程1、客户端浏览器通过DNS解析到www.taobao.com的IP地址a,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到a,然后通过TCP进行封装数据包,输入到网络层。2、在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择转载 2016-01-19 11:04:52 · 12246 阅读 · 0 评论 -
JDBC实现事务
首先我们要知道JDBC对事务管理的支持:1.事务的操作是默认自动提交的2.可以通过调用setAutoCommit(false)来禁止自动提交3.我们可以通过提交commit()或者回滚rollback()来管理事务的操作下面以一个伪代码做讲解try { //try catch整个事务 conn.setAutoCommit(false); //将自动提交关闭原创 2016-01-10 17:41:15 · 386 阅读 · 0 评论 -
Java监听器
一、什么是监听器Servlet规范中定义的一种特殊类,用于监听ServletContext(application)、HttpSession(Session)、ServletRequest(Request)等域对象的创建与销毁和域对象的属性发生修改的事件,可以在事件发生的前后做一些必要的处理。二、监听器的应用场景1、统计在线人数和在线用户2、系统启动时加载初始化信息3、原创 2016-01-18 21:55:19 · 233 阅读 · 0 评论 -
Spring高级事务管理难点剖析
1Spring事务传播行为所谓事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播。Spring支持7种事务传播行为PROPAGATION_REQUIRED(加入已有事务)如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见也是默认的方式。PROPAGATION_SUPPORTS(跟随环境)支持当前事务,如果当前没有事务,就以非转载 2016-03-08 01:03:46 · 473 阅读 · 0 评论 -
Java NIO:浅析I/O模型
也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型。下面本文先从同步和异步的概念 说起,然后接着阐述了阻塞和非阻塞的区别,接着介绍了阻塞IO和非阻塞IO的区别,然后介绍了同步IO和异步IO的区别,接下来介绍了5种IO模型,最后介绍了两种和高性能IO设计相关的设计模式(Reactor和Pr转载 2016-01-13 23:25:11 · 231 阅读 · 0 评论 -
java设计模式—工厂模式
一、工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 工厂模式在《Java与模式》中分为三类:1)简单工厂模式(Simple Factory):不利于产生系列产品;2)工厂方法模式(Factory Method):又称为多形性工厂;3)抽象工厂模式(Abstract Factory):又称为工具箱,产生产品族,但转载 2016-01-10 16:59:57 · 252 阅读 · 0 评论 -
Hibernate小结
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 一、使用流程 1:通过configuration来读cfg.xml文件 2:得到SessionFactory 工厂 3:通过SessionFactory 工厂来创建Session实例 4:通过Session打开事务 5原创 2016-02-28 21:55:35 · 293 阅读 · 0 评论 -
Struts工作原理
1、HTTP请求经过struts2框架的核心控制器(StrutPrepareAndExecuteFiler)第二步:核心控制器依次查找ActionMapper来决定调用这个请求是否调用action。如果actionMapper决定调用action,那么核心控制器就把请求的处理器控制权委托给actionProxy第三步:actionProxy通过ConfigurationManage原创 2016-03-04 15:24:13 · 360 阅读 · 0 评论 -
代理模式
一、什么是代理模式为其他对象提供一种代理以控制对这个对象的访问。代理对象起到中介作用,可去掉功能服务或增加额外的服务。原创 2016-03-02 00:08:43 · 415 阅读 · 1 评论 -
Mybatis工作原理
在使用mybatis之前,我们要知道不使用Mybatis的时候我们用JDBC是如何做数据库相关的操作,进而才会更加深刻的理解为什么我们要使用mybatis这种ORM框架,当然ORM框架还有一个比较有名的开源框架Hibernate,本文我会重点讲解为什么将JDBC封装成Mybatis这样一种持久层框架,在对Mybatis分析完成之后,我会对比两个ORM框架的异同点.1.使用JDBC实现数原创 2015-12-10 18:25:51 · 6218 阅读 · 0 评论 -
过滤器和拦截器的区别
拦截器和过滤器的区别:过滤器Filter依赖Servlet容器,基于回调函数,过滤范围大,不仅过滤请求,还过滤资源等等。拦截器Interceptor依赖框架容器,基于反射机制,只过滤请求。原创 2016-02-20 22:04:09 · 255 阅读 · 0 评论 -
Maven的生命周期
maven包括了三套相互独立的生命周期 clean 清理项目default 构建项目site 建立项目站点1.clean主要负责项目清理pre-cleanexecutes processes needed prior to the actual project cleaningcleanremove all fil原创 2016-02-20 22:00:27 · 654 阅读 · 0 评论 -
模拟JavaWeb过滤器——责任链模式
对request和response里的字符串信息过滤(在这里我们通过过滤器来达到对request和response传入的数据替换一些字和增加一些字的效果),在过滤器层面上模拟客户端和服务器交互,如下图:这里我们直接对原创 2015-08-29 14:27:48 · 615 阅读 · 0 评论 -
Java对象在HotSpot虚拟机的创建、内存分布和访问
一、对象的创建:①检查是否已经被加载、解析、初始化②为新生对象分配内存③分配内存时考虑并发情况④初始化零值⑤对象头的设置⑥根据程序员的意愿进行初始化二、对象的内存分布在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。1.对象头2.实例数据3.对齐填充三、对象的访问定位我们的Java程序需要通过栈上的reference数据来操作堆上的具体对象。Java虚拟机目前主流的访问方原创 2015-08-21 17:13:15 · 915 阅读 · 0 评论 -
Java基础知识(一)
1.ArrayList和LinkList、Verctor有什么区别,性能、安全性、扩容2.线程池和连接池是什么,线程池可以做什么,连接池可以做什么,你用过什么连接池3.什么是线程可见性,线程之间如何保证共享变量的一致性4.HashMap和HashTable有什么区别、String、StringBuffer、StringBuild的区别5.LinkHashMap和HashMap、HashTable的区别6.Spring mvc由几大组件组成7.Restful风格的由来8.线程并发包熟悉吗?用过哪原创 2015-10-25 12:00:12 · 598 阅读 · 0 评论 -
Java自定义注解的语法要求
我们先来看一个注解@Target({ElementType.METHOD, ElementType.FIELD, ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documentedpublic @interface Description { String value(); String原创 2016-02-06 22:22:43 · 401 阅读 · 0 评论 -
XML的DTD约束和Schema约束
DTD和Schema是两种常用的xml文件的约束文件,都是用来约定XML文件,目的是会提示使用者让使用者按照规定的格式去书写XML,验证XML文件有效性。主要的区别有一下几点: 1、Schema遵循XML语法,学习成本低,不需要再学习新的语法;DTD和XML语法使用的是自己特殊的语法 2、DTD只能指定元素含有文本,不定定义元素文本的类型,如字符型、整型、日期型、自定义类型等。Schema在这方面比DTD强大。 3、Schema对命名空间的支持,如果出现两个相原创 2016-02-06 21:40:25 · 747 阅读 · 0 评论 -
git常用指令
git init 初始化git仓库git add 文件名 将工作文件修改提交到本地暂存区git add . 将该目录下所有工作文件修改提交到本地暂存区git commit -m "版本备注" 提交本地暂存区的代码git remote add origin url 本地仓库关联远程git仓库,并设置远程仓库的别名为origingit remote remove origin 删原创 2016-01-08 23:27:17 · 467 阅读 · 0 评论 -
设计模式之单例模式
单例模式 对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。 单例模式在全局范围内,同一个类只构造一个对象,全局范围可以引用。减少因对象创造、销毁带来的资源消耗。(项目中的应用:spring容器中所有的bean都是单例的),因原创 2015-12-17 18:25:59 · 945 阅读 · 0 评论 -
策略模式
策略模式(Strategy)1 场景问题1.1 报价管理向客户报价,对于销售部门的人来讲,这是一个非常重大、非常复杂的问题,对不同的客户要报不同的价格,比如:(1)对普通客户或者是新客户报的是全价(2)对老客户报的价格,根据客户年限,给予一定的折扣(3)对大客户报的价格,根据大客户的累计消费金额,给予一定的折扣(4)还要考虑客户购买的数量和金额,比如:虽然是新用户,但是一次购买的数量非常大,或者是总金额非常高,也会有一定的折扣 (5)还有,报价人员的职务高低,也决定了他是否有权限对价格进转载 2016-02-25 23:55:35 · 801 阅读 · 0 评论 -
日志框架和日志系统
日志框架和日志系统日志系统JUL(java.util.logging.*),JDK 1.4 自带的日志系统;JUL 并没有明显的优势来战胜Log4j,反而造成了标准的混乱——采用不同日志系统的应用程序无法和谐共存;Logback,是较新的日志系统,它是 Log4j 的作者吸取多年的经验教训以后重新做出的一套系统;它的使用更方便,功能更强,而且性能也更高;Logback 不能单独使用,必须配合日志框架 SLF4J 来使用;日志框架JUL 诞生以后,为了克服多种日志系统并存所带来的混乱,原创 2016-02-21 20:46:35 · 452 阅读 · 0 评论 -
Dubbo分布式服务框架
Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。说到RPC框架和SOA服务治理,还是从"淘宝技术这十年"听过并尝试着了解这一块的内容,Dubbo是阿里开源的RPC框架,与其类似的还有HSF,但是这个应该是阿里内部框架。说到RPC之前,首先解释下什么是SOA(service orientied architecture) 所谓SOA就是面向服务编程,通常我们所写的一个web项目都是分层设计,前端到后端的Http请求,首先到达后端的C原创 2016-01-07 23:08:18 · 838 阅读 · 0 评论 -
Java代码中的特殊注释
TODO: + 说明:说明在标识处有功能代码待编写,待实现的功能在说明中会简略说明。FIXME: + 说明:说明标识处代码需要修正,甚至代码是错误的,不能工作,需要修复,如何修正会在说明中简略说明。XXX: + 说明:说明标识处代码虽然实现了功能,但是实现的方法有待商榷,希望将来能改进,要改进的地方会在说明中简略说明。原创 2016-02-19 17:17:43 · 1142 阅读 · 0 评论 -
final关键字浅析
在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。1.修饰类 当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。2.修饰方法 当用原创 2016-01-14 22:30:59 · 284 阅读 · 0 评论 -
junit4常用注解
@Test 将一个普通的方法修饰成一个测试方法@Test(expected = xxxException.class) 若测试时改方法抛出xxxException异常则测试成功@Test(timeout = 毫秒) 超出该时间则停止运行@BeforeClass 它会在该测试类的所有方法运行前执行,static修饰,只执行一次,所以常用来加载初始化配置如spring的ioc容器@原创 2016-02-20 21:29:13 · 401 阅读 · 0 评论 -
Maven依赖范围
我们在平时编写项目的时候,如果要用到某一个框架,这时,我们要把这个框架的jar包引入到项目classpath路径下才可以使用。maven为我们提供了三种classpath分别是:编译 测试 运行在maven中我们通过设置scope属性来控制依赖范围:complie 默认的范围,编译测试运行都有效provided 在编译测试的时候有效,在运行的时候不会加入 具体例原创 2016-02-20 21:37:33 · 277 阅读 · 0 评论 -
Integer缓存分析
Integer我们从源码分析,当我们给一个Integer对象赋一个int值的时候,自动装箱会调用Integer类的静态方法valueOf public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return Integ原创 2016-01-08 23:53:30 · 416 阅读 · 0 评论