自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 问答 (1)
  • 收藏
  • 关注

spring解析xml生成BeanDefinition的过程

        毫无疑问,spring的核心是bean,一个简单的获取bean的过程如下: ClassPathResource resource = new ClassPathResource("services.xml"); DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); ...

2013-10-30 10:11:45 350

原创 ThreadLocal使用及原理解析

 1.ThreadLocal干什么的?      我们知道,在多线程程序中,同一个线程在某个时间段只能处理一个任务.我们希望在这个时间段内,任务的某些变量能够和处理它的线程进行绑定,在任务需要使用这个变量的时候,这个变量能够方便的从线程中取出来.ThreadLocal能很好的满足这个需求,用ThreadLocal变量的程序看起来也会简洁很多,因为减少了变量在程序中的传递. ...

2013-08-31 16:48:09 716

原创 自动化代码生成工具AutoPersistence

 简单介绍:        AutoPersistence是一款根据数据库表信息生成相关的java代码,xml配置文件的工具,对提高项目开发效率有非常好的帮助.可以用来生成dao层、service层及其测试类代码、ibatis、spring相关的配置文件.稍微配置一下数据库访问信息和代码存放路径就可以一键生成java代码,再稍微修改一下测试代码就可以开始测试dao,service层代码了.适用...

2013-06-18 09:59:02 398

原创 java性能调优工具

一.  jps:显示当前用户的java进程的pid,进程的启动路径等.,jps的优点是能迅速的找到java相关的进程,缺点是只能查看 当前用户的java进程,查看系统上所有的java进程,还是得用ps -ef | grep java.    常用参数示例:    jps -l   输出应用程序main class的package名或者应用程序的jar文件路径名     D:\>...

2013-04-23 21:13:46 110

原创 poi导出Excel报表

   下面是对poi导出excel的封装,稍微改动一下就能用于其它项目     pojo类见http://liudeh-009.iteye.com/blog/1847626的Student类     Excel导出类:  /** * * 类ExportBookOrderTool.java的实现描述:学生数据报表导出工具类 * @author liudeh_...

2013-04-17 12:32:24 108

原创 java的容器排序

    在项目开发中,经常回用到容器排序,而它们的写法比较固定,今天就来总结一下.pojo类如下:package com.ldh;public class Student implements Comparable<Student> { private int id; private String name; private in...

2013-04-15 21:25:23 251

原创 JVM的体系结构和垃圾回收机制

java虚拟机的体系结构图: JVM内存区域介绍  堆(Heap)       Heap是大家最为熟悉的区域,它是JVM用来存储对象实例以及数组值的区域,可以认为Java中所有通过new创建的对象的内存都在此分配,Heap中的对象的内存需要等待GC进行回收,Heap在32位的操作系统上最大为2G,在64位的操作系统上则没有限制,其大小通过-Xms和-Xmx来控制,-Xms为JV...

2013-04-03 14:57:28 114

BigDecimal在实际项目的应用及遇到的问题

      我们都知道,java中对大小数,高精度的计算都会用到BigDecimal.但是在实际应用中,运用BigDecimal还是会遇到一些问题.下面说一下我在项目中怎么样BigDecimal和遇到的一些问题.         1. 对商品的价格进行格式化,比如所有商品的价格保留两位小数       /** * * @param bd 商品的...

2013-03-27 13:30:45 206

原创 基于多进程和基于多线程服务器的优缺点及nginx服务器的启动过程

基于多进程服务器的优点:  1.由操作系统进行调度,运行比较稳定强壮  2.能够方便地通过操作系统进行监控和管理     例如对每个进程的内存变化状况,甚至某个进程处理什么web请求进行监控.同时可以通过给进程发送信号量,实现对应用的各种管理  3.隔离性好     一个进程出现问题只有杀掉它重启就可以,不影响整体服务的可用性     很容易实现在线热部署和无缝升级...

2013-01-13 10:39:58 558

Ibatis原理分析

       ibatis是什么?ibatis是一个基于Java的"半自动化"的持久框架,"半自动化"是指ibatis并不会在运行期自动生成sql语句执行,而是具体的sql需要通过配置文件进行编写,并将所需的参数,以及返回的结果字段映射到指定的POJO.      ibatis的核心类图      SqlMapClient类是ibatis的门面,通过ibatis完成的持久化操作都是通过...

2012-11-25 17:27:00 159

淘宝双十一为什么这么火?

       以我看,淘宝双十一的商品并不便宜啊,为什么还有这么人来买呢,奥秘何在?       第一,淘宝商品比较齐全,只要你想到都会有.这个就有很大好处了,买东西不是一看见就买吧,要比比,买到自己认为最划算的.其它的商城产品太少,都找不到差不多的商品来比较.思来想去买东西还得上淘宝啊      第二.发动了人民群众的力量. 双十一 的前几天,很多人都会收到商家短信,那个多啊.说明什么...

2012-11-11 19:42:14 126

原创 先写代码还是先写技术文档的思考

         以前在接手一个新项目的时候,总是会先写一个demo,把这个项目框架搭起来,已经知道的技术难点先解决掉.这样感觉做项目计划,写文档就更有信心了,时间也好估一点.但是呢,我接受到的观点都是先写技术方案,写用例,画流程图,写代码之前做了很多工作.我一直觉得后面一种观点不好,因为就算写了很多文档,画了很多图,之后写代码做计划还是虚.因为难点还没解决,到底能不能解决,不能解决怎么办呢,...

2012-11-11 14:59:08 804

长连接的几种实现方式

       在日常项目中,大多的时候我们用的是短连接,一个请求过来,一个线程处理完该请求,线程被线程池回收,这个请求就关闭了.虽然这能满足很大部分的需求,但是也有些问题,比如说:如果客户端发的请求比较多,比较频繁,服务端就会忙于建立连接处理请求,由于服务端的线程数也有限,并发比较大的话有可能会造成服务端的崩溃.那有没有一种办法使连接少一些,让一个线程可以处理多个连接?长连接的出现就是为了解决上面...

2012-10-14 17:22:54 2335

Jetty基于NIO的方式处理请求

       Jetty基于NIO的方式处理请求的类是SelectChannelConnector,该类同样继承AbstractLifeCycle类,SelectChannelConnector初始化的时候会调用AbstractLifeCycle类的start()方法,如下:        public final void start() throws Exception {...

2012-09-01 17:26:34 336

Jetty的启动过程

      Jetty 是一个轻量级的、开源的servlet容器,可以非常容易的嵌入到应用程序当中作为嵌入式服务器使用,下面我们从代码层面来看看它是如何启动的     Jetty的启动从Server类的start()方法开始的,Server类继承了AbstractLifeCycle类,会首先执行AbstractLifeCycle的start()方法.方法如下:      pub...

2012-08-26 17:48:27 316

原创 从整体解读tomcat

一. tomcat的容器组件     1.Engine,实现类StandardEngine     2.Host,实现类StandardHost     3.Context,实现类StandardContext     4.Wrapper,实现类StandardWrapper     容器类之间的关系如下:        容器的初始化顺序:     二. tom...

2012-07-29 15:43:33 112

Tomcat的Session过期处理策略

       tomcat容器实现类都继承了ContainerBase类,容器在启动的时候都会调用ContainerBase类的threadStart()方法,threadStart()方法如下:  protected void threadStart() { if (thread != null) return; ...

2012-07-11 11:18:43 210

原创 sleep和wait的比较

            1.调用sleep方法没有释放锁,并且一直占着cpu.               而调用wait方法释放了锁,并且让出cpu           2.wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在          任何地方使用           3.  sleep是Thread类的方法,wa...

2012-07-03 11:11:05 70

解析Tomcat处理请求的类Connector<三>

      这次主要解析采用apr方式处理请求.apr用C实现,通过JNI调用,主要提升对静态资源(如HTML、图片、CSS、JS等)的访问性能.在tomcat下配置apr步骤:   1.下载本地库tcnative-1.dll,放在%jdk%\bin目录下(见附件).   2.在server.xml里配置listener,这个配置server.xml默认是有的      &lt;...

2012-06-19 14:40:17 83

解析Tomcat处理请求的类Connector<二>

    这次主要解析采用IO方式处理请求.在Server.xml的配置如下: &lt;Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /&gt;       在tomcat启动的时候,会调...

2012-06-18 13:59:10 90

解析Tomcat处理请求的类Connector<一>

       Connector类的相关配置在Tomcat的安装目录conf下的Server.xml文件里,我这次主要解析采用NIO方式处理请求的情况.在Server.xml的配置如下:  &lt;Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" c...

2012-06-15 15:22:14 117

Hbase的基本概念及交互过程

 Hbas是一个在HDFS上实现的面向列的分布式数据库,非常适合实时地随机读/写超大规模数据集 行,列族,列,主键      Hbase中的行类似于数据库中的行,表中的行根据行的键值(也就是表的主键)进行排序,排序根据字节序进行,所有对表的访问都要通过表的主键 行中的列分成”列族”,所有的列族成员有相同的前缀.如company:name,company:address都是列...

2012-05-06 11:02:22 140

zookeeper中几个相关实体和它们之间的交互

      zookeeper是一个开源的分布式协调服务,其独特的"leader-follower"集群模式,"过半成功"的写策略,很好的解决了分布式单点问题.zookeeper包含leader,follower,znode三个重要实体. leader:      zookeeper集群中所有机器通过一个选择过程来选定一台被称为"leader"的机器,leader提供读,写,选举操作  f...

2012-04-30 21:48:17 111

Eclipse远程调试Web应用

        最近需要在原来的一个项目增加新的功能,把项目下下来后,发现项目超大,在Eclipse启动要不内存溢出,要不解析请求非常慢,无赖之下想到Eclipse远程调试.所谓Eclipse远程调试,就是源代码在Eclipse下,而应用程序通过本机和远程机器启动,Eclipse通过socket与应用进行通信,从而达到和本地一样效果的调试的目的.当然这种调试只适用于远程和Eclipse下的源代码相...

2012-04-29 21:21:39 78

window上查找端口被哪个应用占用

在windows命令行窗口下执行:运行--cmdC:\&gt;netstat -aon|findstr "8080" TCP     127.0.0.1:80       0.0.0.0:0             LISTENING    2448端口被进程号为2448的进程占用,继续执行下面命令:C:\&gt;tasklist|findstr "2448" thread.exe        ...

2012-04-28 13:48:00 78

MapReduce的输入输出机制

       MapReduce确保每个reducer的输入都按键排序.将map的输出作为输入传给reducer的过程称为shuffle,学习shuffle是如何工作的有助于我们更好的理解MapReduce       每个Map任务都有一个内存缓冲区,用于存储任务的输出,默认情况下缓冲区的大小为100MB,一旦缓冲区内容达到阙值(默认0.8),一个后台线程便会把内容写到磁盘.在写磁盘的过程中...

2012-04-07 15:47:53 410

原创 找bug记(转)

上周在线上系统发现了两个bug,值得记录下查找的过程和原因。以后如果还有查找bug比较有价值的经历,我也会继续分享。    第一个bug的起始,是在线上日志发现一个频繁打印的异常——java.lang.ArrayIndexOutOfBoundsException。但是却没有堆栈,只有一行一行的ArrayIndexOutOfBoundsException。没有堆栈,不知道异常是从什么地方抛出来的,也...

2012-03-28 13:49:42 139

原创 实现自己的类加载器

      有时候,根据自己项目的需求,需要重新实现属于自己的类加载器,以满足项目的灵活性和扩展性,下面我们就来实现自己的类加载器.   实现自己的类加载器必须首先继承一个父类加载器.   编写一个类加载器会涉及到以下几个方法:     1. findClass(String name)   根据类的路径查找类,必须重写的方法     2.defineClass(String name, ...

2012-03-25 14:35:28 51

原创 MapReduce的执行机制

      当我们只用几行代码就可以运行一个MapReduce作业时,我们是否知道其实里面隐藏着大量的执行细节.本文就是来揭示一个Hadoop运行作业的执行细节. 运行MapReduce作业的过程将包含以下四个实体      1. 客户端.提交hadoop作业      2.  分布式文件系统(一般为HDFS),      3.  JobTracker.协调作业的运行      4.  TaskT...

2012-03-17 15:24:09 63

WEB网站常见受攻击方式及解决办法

      一个网站建立以后,如果不注意安全方面的问题,很容易被人攻击,下面就讨论一下几种漏洞情况和防止攻击的办法.一.跨站脚本攻击(XSS)    跨站脚本攻击(XSS,Cross-site scripting)是最常见和基本的攻击WEB网站的方法。攻击者在网页上发布包含攻击性代码的数据。当浏览者看到此网页时,特定的脚本就会以浏览者用户的身份和权限来执行。通过XSS可以比较容易地修改...

2012-02-26 11:32:59 1035

CopyOnWriteArrayList与ConcurrentHashMap的特点

1.CopyOnWriteArrayList在每次需要修改时,会创建一个新的容器拷贝,以此来实现可变性.这种"写入时复制"的特性能够保证迭代器在迭代时实现容器的修改.适合在读多更新少的场合 2.ConcurrentHashMap采用分离锁,这种机制允许任意数量的读线程和有线数量的写线程并发访问map.ConcurrentHashMap返回的迭代器具有弱一致性,允许迭代的时候并发的修改map...

2012-02-10 16:58:29 208

Timer和ScheduledExecutorService区别

1.Timer对调度的支持是基于绝对时间的,对系统时钟的改变是敏感的.ScheduledExecutorService只支持相对时间 2.TimerTask抛出的未检查的异常会终止timer线程,此后已经被安排但尚未执行的TimerTask永远不会再执行了,新的任务也不能被调度了 3.创建Timer的时候会创建TimerThread做为执行线程,所以一个Timer对应一个线程,如果...

2012-02-08 16:24:05 158

原创 FileReader读取文件,由于不确定源文件的编码格式不同,导致读出的文件乱码的问题(转)...

读取一个UTF-8编码格式的文件,代码中起初用FileReader读取到一个字符串,然后转换字符集,结果就出问题了:文件读入时是按OS的默认字符集即GBK解码的,我先用默认字符集GBK编码str.getBytes(“GBK”),此时应该还原为文件中的字节序列了,然后再按UTF-8解码,生成的字符串按理说应该就应该是正确的。为什么结果中还是有部分乱码呢?问题出在FileReader读...

2011-12-15 12:30:12 278

NIO的陷阱(一)

SocketChannel.open(new InetSocketAddress(hostIp, hostListenningPort))与SocketChannel.open(),socketChannel.connect(new InetSocketAddress(hostIp, hostListenningPort))的比较 相同点:这两种写法实现的功能一样,都是打开通道并连上服务端...

2011-12-15 11:52:43 71

用JMeter进行性能测试

简介:  JMeter 可以用于测试静态或者动态资源的性能(文件、 Servlets 、 Perl 脚本、 java 对象、数据库和查询、 ftp 服务器或者其他的资源)。 JMeter 用于模拟在服务器、网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的总性能情况。你可 以用 JMeter 提供的图形化界面分析性能指标或者在高负载情况下测试服务器 ...

2011-12-05 09:26:43 202

Spring MVC入门级实例-基于注解

基于注解的 Spring MVC与基于xml的配置(参考Spring MVC入门级实例-基于xml的配置)大部分都一样,下面来比较一下 1.web.xml 与基于xml的配置一样 2.springMVC-servlet.xml与基于xml的配置一样 3.applicationContext.xml配置如下 &lt;!-- 启动注解驱动的Spring MVC功能,注...

2011-11-20 14:37:06 96

Spring MVC入门级实例-基于xml的配置

最近在学习spring MVC,为了留作以后参考,同时也让初学者能很快的入门,特意作了如下教程,闲话少说,上代码我采用的是spring3.1.0.M2版本 1.web.xml配置 &lt;context-param&gt; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; ...

2011-11-20 14:14:51 145

原创 Struts2源码解析(1)

   一. Struts2的整体架构图       二.StrutsPrepareAndExecuteFilter类 的源码解析 public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {...

2011-11-14 13:38:53 84

memcached初探

      一般的web应用,我们直接从数据库取数据.但是随着数据的增多,访问量的增大,数据库的响应变慢,网站延迟等现象就会出现.此刻是memcached大显身手的时候了,memcached是高性能的分布式内存缓存服务器。通过它把数据缓存起来,从而减少对数据库的访问次数,以提高Web应用的响应速度、提高可扩展性。    这次主要对memcached的基本特性加以了解,以便在以后的项目中更好...

2011-10-29 21:12:27 83

在Tomcat6中实现https双向安全验证

https双向安全验证保证了客户端和服务端都是可信的 具体步骤如下:  1.生成服务器端证书   C:\&gt; keytool -genkey -keyalg RSA -dname "cn=localhost,ou=java,o=software,l=hangzhou,st=zhejiang,c=cn" -alias server -keypass password -key...

2011-10-19 15:05:24 68

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除