- 博客(49)
- 资源 (4)
- 收藏
- 关注
原创 tomcat6源码大致流程
1. Bootstrap:start()------初始化:设置catalinaHome,catalinaBase, 初始化classLoader(commonLoader,sharedLoader,catalinaLoader). 通过反射Catalina.class 调用其方法setParentClassLoader。2 ---------->Catalina.class
2012-05-29 16:48:18
480
翻译 Java并发基础
一.Java并发基础当一个对象或变量可以被多个线程共享的时候,就有可能使得程序的逻辑出现问题。在一个对象中有一个变量i=0,有两个线程A,B都想对i加1,这个时候便有问题显现出来,关键就是对i加1的这个过程不是原子操作。要想对i进行递增,第一步就是获取i的值,当A获取i的值为0,在A将新的值写入A之前,B也获取了A的值0,然后A写入,i变成1,然后B也写入i,i这个时候依然是1.当然j
2012-05-09 15:52:46
430
转载 Oracle用户、权限、角色管理
Oracle 权限设置一、权限分类:系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。 二、系统权限管理: 1、系统权限分类:DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。RESOURCE:拥有Resource权限的用户只可以创建实体,不可以
2012-05-09 11:26:10
406
转载 java.util.concurrent概述
java.util.concurrent 包含许多线程安全、测试良好、高性能的并发构建块。不客气地说,创建 java.util.concurrent 的目的就是要实现 Collection 框架对数据结构所执行的并发操作。通过提供一组可靠的、高性能并发构建块,开发人员可以提高并发类的线程安全、可伸缩性、性能、可读性和可靠性。如果一些类名看起来相似,可能是因为 java.util.concurr
2012-05-09 11:21:51
732
转载 java 动态代理 和 cglib代理
JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为
2012-04-28 16:59:52
453
翻译 探究gc
基本收集算法复制:将堆内分成两个相同空间,从根(ThreadLocal的对象,静态对象)开始访问每一个关联的活跃对象,将空间A的活跃对象全部复制到空间B,然后一次性回收整个空间A。因为只访问活跃对象,将所有活动对象复制走之后就清空整个空间,不用去访问死对象,所以遍历空间的成本较小,但需要巨大的复制成本和较多的内存。 标记清除(mark-sweep):收集器先从根开始访问所有活跃对象,标
2012-04-26 15:38:59
595
翻译 深究jvm类加载器
Jvm两种机制:1, 装载具有合适名称的类,---类装载子系统2, 负责执行一个负责执行包含在已装载的类和接口中的指令,---运行引擎每个jvm又包含方法区,栈区,堆区,程序计数器和本地方法类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK1.0 就出现了,最初
2012-04-26 15:25:03
475
翻译 线程总结
a,线程是进程中乱序执行的代码流程。对于一个进程中的多个线程来说,多个线程共享进程的内存块,当有新的线程的时候,共享原有的进程块的内存。线程间的通信很容易,速度很快。不同进程因为处于不同的内存块,因此进程之间的通信相对困难。(进程:一个内存中运行的应用程序,有自己独立的内存空间,一个进程中可以启动多个线程;线程:一个执行流程,一个进程可以运行多个线程,线程属于某个进程,进程中的多个
2012-03-02 16:20:45
392
转载 大数据量处理
第一部分、 1、海量日志数据,提取出某日访问百度次数最多的那个IP。 此题,在我之前的一篇文章算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。 再详细介绍下此方案:首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。 同样可以采用
2012-03-02 14:47:48
1275
原创 ConcurrentHashMap
ConcurrentHashMap的高并发性主要来自于三个方面:用分离锁实现多个线程间的更深层次的共享访问。用 HashEntry 对象的不变性来降低执行读操作的线程在遍历链表期间对加锁的需求。通过对同一个 Volatile 变量的写 / 读访问,协调不同线程间读 / 写操作的内存可见性。
2012-03-02 14:46:31
415
翻译 Concurrent应用
一般的服务器都需要线程池,比如Web、FTP等服务器,不过它们一般都自己实现了线程池, 比如以前介绍过的Tomcat、 Resin和Jetty等,现在有了JDK5,我们就没有必要重复造车轮了,直接使用就可以,何况使用也很方便,性能也非常高。package concurrent;import java.util.concurrent.ExecutorService;import java
2012-03-02 14:45:57
522
原创 NIO应用
NIO:1,为所有的原始类型提供buffer缓存支持。2,字符集编码解码解决方案。3,channel 一个新的IO对象。4,支持锁和内存映射文件的文件访问接口。5,提供多路非阻塞式的高伸缩性网络IOpackage thread;import java.io.IOException;import java.net.InetSocketAddress;impor
2012-03-02 14:43:46
335
原创 Spring 事务属性分析
Spring 事务属性分析事务管理对于企业应用而言至关重要。它保证了用户的每一次操作都是可靠的,即便出现了异常的访问情况,也不至于破坏后台数据的完整性。就像银行的自助取款机,通常都能正常为客户服务,但是也难免遇到操作过程中机器突然出故障的情况,此时,事务就必须确保出故障前对账户的操作不生 效,就像用户刚才完全没有使用过取款机一样,以保证用户和银行的利益都不受损失。在Spring 中,事务是
2012-02-10 15:27:50
440
原创 用rsync对网站进行镜像备份
用rsync对网站进行镜像备份对系统管理员来说,平时的工作重心应该集中在维护系统正常运转,能够正常提供服务上,这里往往牵涉到一个数据备份的问题,在我所了解的情况中,有80%的系统管理员不是太关心自己服务器的安全性,但往往对备分镜像的技术相当感兴趣,但由于商业产品的软硬件价格都相当高昂,因此往往会选择自由软件。这里准备介绍的rsync就是这样的软件,它可以满足绝大多数要求不是
2012-02-10 10:46:27
359
原创 LinkedHashMap的实现原理
深入Java集合学习系列:LinkedHashMap的实现原理文章分类:Java编程1. LinkedHashMap概述: LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 LinkedHashMap实现与HashMap的不
2012-02-09 17:53:13
1565
原创 LinkedHashSet的实现原理
深入Java集合学习系列:LinkedHashSet的实现原理文章分类:Java编程1. LinkedHashSet概述: LinkedHashSet是具有可预知迭代顺序的Set接口的哈希表和链接列表实现。此实现与HashSet的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可为插入顺序或是访问顺序。 注意,此实现不
2012-02-09 17:52:37
1222
原创 hashMap的实现原理
深入Java集合学习系列:HashMap的实现原理文章分类:Java编程1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2. HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个
2012-02-09 17:51:49
596
原创 HashSet的实现原理
深入Java集合学习系列:HashSet的实现原理文章分类:Java编程1. HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。 2. HashSet的实现: 对于HashSet而言,它是基于HashMap实现的,Ha
2012-02-09 17:51:10
2736
原创 java集合框架图
java集合框架图简化图:Java平台提供了一个全新的集合框架。“集合框架”主要由一组用来操作对象的接口组成。不同接口描述一组不同数据类型。 Java 2集合框架图 集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。 抽象类:5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。 实现类:8个实现类(实线表示),对接口的具
2012-02-09 16:03:54
8399
原创 ArrayList的实现原理
深入Java集合学习系列:ArrayList的实现原理1. ArrayList概述: ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等
2012-02-09 15:23:56
2519
原创 hibernate 总结
三、Hibernate核心API(理解) Configuration类: Configuration对象用于配置和启动Hibernate。Hibernate应用通过Configuration实例来指定对象-关系映射文 件的位置或者动态配置Hibernate的属性,然后创建SessionFactory实例。 SessionFactory接口:
2012-02-09 14:59:39
506
原创 hibernate 概要
4, hibernate基础 4.1 hibernate基础语义 Configuration Configuration config = new Configuration().configure(); File file = new File("c:\\sample\\myhibernate.xml");
2012-02-09 11:49:03
613
转载 关联
一、多对一进行关联(多个学生对应同一间宿舍)---学生是主体,宿舍是附体,关联关系在主体学生中设置,在学生类中设置宿舍类,由于宿舍类只有一个可以直接用类来设置,在映射学生类 (User)中包含宿舍这个类(Room),在映射配置文件(User.hbm.xml)中定义哪个是主体类就在哪个配置文件定义关联关系.cascade属性:表示关联对象的持久化,该属性也要设置在主体中,作用
2012-02-09 11:12:51
287
转载 JDK动态代理和CGLIB代理
JDK动态代理为什么必须针对接口?其与CGLIB的对比示例代码:public interface AopService { public void doService();}public class AopServiceImpl implements AopService { private String singal; public
2012-02-08 18:02:59
592
原创 快速排序
快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。最坏情况的时间复杂度为O(n^2),最好 情况时间复杂度为O(nlog2n)。另外 java没指针概念 可以认为是句柄 假设要排序的数组
2012-02-08 17:16:42
302
1
原创 shell排序 类似于插入排序
1, shell排序 类似于插入排序。h = 3*h+1 间隔序列中的数字互质。 public void shellSort(){ int inner,outer; long temp; int h = 1; while(h h = h*3 + 1;
2012-02-08 17:15:40
270
原创 递归
分治算法,两个对自身的递归只有一个真正执行 汉诺塔: class TowersApp{ static int nDisks = 3; public static void main(String[]args){ doTowers(nDisks,’A’,’B’,’C’)
2012-02-08 17:12:56
442
原创 冒泡排序,选择排序,插入排序
冒泡排序,选择排序,插入排序 小规模的文件以及基本有序的文件,插入排序的性能比快速排序的性能更为有效一些,实际上,插入排序通常也做快速排序实现的一部分。 1 冒泡排序: package datastrut; public class BubbleSort { /** * 冒泡排序 * @param args
2012-02-08 17:11:28
759
原创 linux下查看文件内容的几种命令
<br /><br />linux下查看文件内容的几种命令如下:<br />cat:由第一行开始显示文件所有内容;<br />tac:从最后一行开始显示文件的所有内容,注意 tac 与cat 写法正好相反;<br />cat [-n] 文件名<br />-n 显示时,连行号一起显示到屏幕<br /> tac 文件名<br />more:一页一页的显示文件内容,只能向后翻页;<br />less:也是一页一页显示文件内容,但是可以通过键盘上的【pagedown
2011-03-03 19:25:00
1769
原创 Linux文件分割与合并:split & cat
<br /><br />Linux下文件分割可以通过split命令来实现,可以指定按行数分割和安大小分割两种模式。Linux下文件合并可以通过cat命令来实现,非常简单。<br /> 在Linux下用split进行文件分割:<br /> 模式一:指定分割后文件行数<br /> 对与txt文本文件,可以通过指定分割后文件的行数来进行文件分割。<br /> 命令:split -l 300 large_file.txt new_file_prefix<br /> 模式二:指定分割
2011-03-03 19:24:00
761
翻译 代理模式
<br /><br />代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。<br />代理模式一般涉及到的角色有:<br />抽象角色:声明真实对象和代理对象的共同接口;<br />代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当
2011-03-03 19:23:00
340
翻译 一个关于Spring AOP很有意思的问题。
<br /><br />Java代码<br>public class UserDAOImpl{ <br><br> public void save() { <br> // TODO Auto-generated method stub <br> System.out.println("user saved"); <br> } <br>} <br>//相关配置,省略了一些不相关内容 <br><bean id="userDAO" class="UserDAO
2011-03-03 19:20:00
551
转载 火狐下Ajax的onreadystatechange无法调用函数的解决方法
<br /><br />1、问题症状:<br />var xmlHttp;<br />function savetodata(){<br />createXMLHttpRequest();<br />var rndcode = new Date().getTime();<br />var Url ="a.asp?cache="+rndcode<br />xmlHttp.onreadystatechange = function(){<br />.....<br /><br />}<br />
2011-03-03 19:19:00
1646
原创 allowedTypes文件类型
<br />tomcat中web.xml中: <br /><mime-mapping><br /> <extension>abs</extension><br /> <mime-type>audio/x-mpeg</mime-type><br /> </mime-mapping><br /> <mime-mapping><br /> <extension>ai</extension><br /> <mime-t
2011-02-22 17:06:00
567
原创 struts文件上传下载
<br /><br /><br />Struts2 多文件上传和下载<br /> <br /> Download.java:<br /> <br /> package com.cjg.action;<br /> <br />import java.io.InputStream;<br /> <br />import org.apache.struts2.ServletActionContext;<br /> <br />import com.opensymphony.xwork2.Actio
2011-02-22 17:03:00
525
原创 oracle用户表空间创建
<br /><br />SQL> create tablespace deeptest datafile'deeptest.dbf' size 5M<br /> --extent management local<br /> AUTOEXTEND ON NEXT 5M<br /> segment space management auto;<br /> <br /> <br /> <br />SQL> create temporary tables
2010-12-16 14:04:00
366
原创 滚屏弹出固定
<br /><br />//ie6 position fixed bug fix<br /> var vs=window.navigator.appVersion;<br /> if(vs.indexOf('MSIE 6')!=-1){ <br /> document.getElementById('pop').style.top=(document.documentElement.scr
2010-12-14 16:37:00
370
原创 ajax基本实现
<br /><br /> var xmlHttpRequest;<br /> function createXML(){<br /> if(window.ActiveXObject){<br /> xmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP");<br /> }else{<br />
2010-12-14 16:36:00
319
原创 tomcat配置
<br />安装Tomcat后,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的tomcat安装在c: /Tomcat):CATALINA_HOME: C: /TomcatCATALINA_BASE: C: /TomcatTOMCAT_HOME: C:/Tomcat然后修改环境变量中的classpath,把tomat安装目录下的common/lib下的servlet.jar追加到classpath中去,修改后的classpath如下:classpath=.;%JAVA_HOME
2010-12-14 16:35:00
340
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人