自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(245)
  • 收藏
  • 关注

原创 对象的内存布局

p49在HptSpot虚拟机中,对象在内存中存储的布局可以分为三个区域,对象头,实例数据和对齐填充。对象头:包含两部分信息,第一部分用于存储对象自身的运行时数据,例如哈希码,GC分代年龄,锁状态标识,线程所持有的锁等,这部分的数据的长度在32位和64位的虚拟机中分别为32位和64位,官方称其为“Mark Word”。对象头的另一部分是类型指针,即对象指向它的类元数据的指针,虚拟机通过这

2014-11-27 14:24:25 584

对象的内存布局

p49在HptSpot虚拟机中,对象在内存中存储的布局可以分为三个区域,对象头,实例数据和对齐填充。对象头:包含两部分信息,第一部分用于存储对象自身的运行时数据,例如哈希码,GC分代年龄,锁状态标识,线程所持有的锁等,这部分的数据的长度在32位和64位的虚拟机中分别为32位和64位,官方称其为“Mark Word”。对象头的另一部分是类型指针,即对象指向它的类元数据的指针,虚拟机通过这...

2014-11-27 14:24:00 159

原创 Hotspot虚拟机对象探秘

对象的创建虚拟机在遇到一条new指令时,首先去检查这条指令的参数能否在常量池中定位到一个类的符号引用,并检查该类是否被加载过。如果没有,先执行类加载的过程。类加载检查完成之后,接下来虚拟机为新生对象分配内存。对象所需要的内存大小在类加载完成之后就可以完全确定,为对象分配内存的任务等同于把一块大小确定的内存从Java堆中划分出来。假设Java堆中内存是绝对规整的,所有用过的内存都放在一边,空

2014-11-27 13:47:04 588

Hotspot虚拟机对象探秘

对象的创建虚拟机在遇到一条new指令时,首先去检查这条指令的参数能否在常量池中定位到一个类的符号引用,并检查该类是否被加载过。如果没有,先执行类加载的过程。类加载检查完成之后,接下来虚拟机为新生对象分配内存。对象所需要的内存大小在类加载完成之后就可以完全确定,为对象分配内存的任务等同于把一块大小确定的内存从Java堆中划分出来。假设Java堆中内存是绝对规整的,所有用过的内存都放在一边,空...

2014-11-27 13:47:00 106

转载 JAVA wait(), notify(),sleep详解

在CSDN开了博客后,一直也没在上面发布过文章,直到前一段时间与一位前辈的对话,才发现技术博客的重要,立志要把CSDN的博客建好。但一直没有找到好的开篇的主题,今天再看JAVA线程互斥、同步的时候又有了新的体会,就以他作为开篇吧。    在JAVA中,是没有类似于PV操作、进程互斥等相关的方法的。JAVA的进程同步是通过synchronized()来实现的,需要说明的是,JAVA的sync

2014-11-17 14:17:10 508

JAVA wait(), notify(),sleep详解

在CSDN开了博客后,一直也没在上面发布过文章,直到前一段时间与一位前辈的对话,才发现技术博客的重要,立志要把CSDN的博客建好。但一直没有找到好的开篇的主题,今天再看JAVA线程互斥、同步的时候又有了新的体会,就以他作为开篇吧。 在JAVA中,是没有类似于PV操作、进程互斥等相关的方法的。JAVA的进程同步是通过synchronized()来实现的,需要说明的是,JAVA的synch...

2014-11-17 14:17:00 81

原创 关于Enum枚举类没有values()方法却可以在枚举类中使用的问题

在java.lang.Enum类中,所有的方法如下所示:

2014-06-24 10:03:20 1949

关于Enum枚举类没有values()方法却可以在枚举类中使用的问题

在java.lang.Enum类中,所有的方法如下所示:里面并没有values()静态方法,而在我们使用enum类时,例如:enum classA{RED,GREEN}可以通过java编译器的提示得到values()静态方法,这是为什么呢?这是由于java编译器在对enum关键字进行处理时,实际上是将enum转换成为了java.lang.Enum类的一个子类来完成,而这...

2014-06-24 10:03:00 548

原创 求数组中第k大的数组元素的各种方法总结

一、快排后取yi第k个元素即可二、

2014-05-26 16:39:07 705

求数组中第k大的数组元素的各种方法总结

一、快排后取已经排好序的第k个元素即可二、使用快速排序的划分,Partion(seq,start,end) = p, 如果p=k 则ok。如果p >k,则在start, p -1的区间里找第K大的数,Partion(seq,start,p-1)否则partion(seq,p+1,end)。算法的平均时间复杂度为O(N),最坏情况为N^2,即每次划分把数组变...

2014-05-26 16:39:00 220

原创 【jdk源码解析四】java.uti.HashSet源码解析

HashSet与ArrayList的最主要区别在于,在HashSet中的元素不会出现重复的,因此m

2014-05-04 15:56:51 553

【jdk源码解析四】java.uti.HashSet源码解析

HashSet与ArrayList的最主要区别在于,在HashSet中的元素不会出现重复的。其内部实现机制如下:为了保证在HashSet中出现重复元素,实际上,HashSet是通过一个内部的HashMap来实现元素唯一性。 private transient HashMap<E,Object> map; // Dummy value to associate wit...

2014-05-04 15:56:00 89

转载 详细分析Java中断机制

1. 引言当我们点击某个杀毒软件的取消按钮来停止查杀病毒时,当我们在控制台敲入quit命令以结束某个后台服务时……都需要通过一个线程去取消另一个线程正在执行的任务。Java没有提供一种安全直接的方法来停止某个线程,但是Java提供了中断机制。如果对Java中断没有一个全面的了解,可能会误以为被中断的线程将立马退出运行,但事实并非如此。中断机制是如何工作的?捕获或检测到中断后,是抛出

2014-04-03 14:57:54 507

详细分析Java中断机制

1. 引言当我们点击某个杀毒软件的取消按钮来停止查杀病毒时,当我们在控制台敲入quit命令以结束某个后台服务时……都需要通过一个线程去取消另一个线程正在执行的任务。Java没有提供一种安全直接的方法来停止某个线程,但是Java提供了中断机制。如果对Java中断没有一个全面的了解,可能会误以为被中断的线程将立马退出运行,但事实并非如此。中断机制是如何工作的?捕获或检测到中断后,是...

2014-04-03 14:57:00 90

原创 Tomcat中的设计模式一

最近在看《深入剖析Tomcat》一书,同时,正在按照这本书内容开发一个自己的servlet容器。阅读过程中,发现的Tomcat的设计模式有:1.单例模式。Tomcat的容器分为Wrapper,Conetxt,Host,Engine四种。其中,Wrapper对应每一个Servlet的容器,Context则对应于应用程序的容器。因此,每一个Wrapper只能与一个Servlet相关联。因此,W

2014-03-20 15:29:09 663

Tomcat中的设计模式一

最近在看《深入剖析Tomcat》一书,同时,正在按照这本书内容开发一个自己的servlet容器。阅读过程中,发现的Tomcat的设计模式有:1.单例模式。Tomcat的容器分为Wrapper,Conetxt,Host,Engine四种。其中,Wrapper对应每一个Servlet的容器,Context则对应于应用程序的容器。因此,每一个Wrapper只能与一个Servlet相关联。因此,W...

2014-03-20 15:29:00 171

转载 关于GC,Full GC以及新生代,老年代,永久代

1. Java堆中各代分布:图1:Java堆中各代分布Young:主要是用来存放新生的对象。Old:主要存放应用程序中生命周期长的内存对象。Permanent:是指内存的永久保存区域,主要存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域. 它和和存放Instance的Heap区域不同,GC(Garbage Collection)

2014-02-28 16:55:50 4436

关于GC,Full GC以及新生代,老年代,永久代

1. Java堆中各代分布:图1:Java堆中各代分布Young:主要是用来存放新生的对象。Old:主要存放应用程序中生命周期长的内存对象。Permanent:是指内存的永久保存区域,主要存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域. 它和和存放Instance的Heap区域不同,GC(Garbage Coll...

2014-02-28 16:55:00 129

原创 Java内存区域与内存溢出异常

一、运行时数据区域线程隔离的数据区:虚拟机栈、本地方法栈、程序计数器。所有线程共享的数据区:方法区、堆。二、2.1程序计数器程序计数器是一块较小的内存空间,用来指示当前线程执行的字节码的行号,完成分支,循环,跳转的功能。为什么会需要程序计数器作为线程隔离的内存区域而不是所有线程共用?因为Java虚拟机的多线程是通过切换时间片的方式来实现的,因此,在一个确定的时刻,一个处理器

2014-02-20 20:03:05 511

Java内存区域与内存溢出异常

一、运行时数据区域线程隔离的数据区:虚拟机栈、本地方法栈、程序计数器。所有线程共享的数据区:方法区、堆。二、2.1程序计数器程序计数器是一块较小的内存空间,用来指示当前线程执行的字节码的行号,完成分支,循环,跳转的功能。为什么会需要程序计数器作为线程隔离的内存区域而不是所有线程共用?因为Java虚拟机的多线程是通过切换时间片的方式来实现的,因此,在一个确定的时刻,一个处理器...

2014-02-20 20:03:00 76

转载 我们的项目中为socket通信服务的“心跳包”

我们的项目中为socket通信服务的“心跳包”在我们的考试系统中用到客户端和服务器之间的通信,服务器要时刻知道客户端的网络连接状态,当时我遇到这个问题的时候就没有在网上找到传说中的“心跳包”。只是凭自己心思随想写出了一个解决时下问题的算法。下面是客户端心跳包核心代码:  #region ++++++++++++++++++++客户端的感觉系统        //启动记时器

2014-02-01 18:15:04 573

我们的项目中为socket通信服务的“心跳包”

我们的项目中为socket通信服务的“心跳包”在我们的考试系统中用到客户端和服务器之间的通信,服务器要时刻知道客户端的网络连接状态,当时我遇到这个问题的时候就没有在网上找到传说中的“心跳包”。只是凭自己心思随想写出了一个解决时下问题的算法。下面是客户端心跳包核心代码: #region ++++++++++++++++++++客户端的感觉系统 //启动记时器 public voi...

2014-02-01 18:15:00 100

转载 hibernate里inverse和cascade的理解

首先,来看inverse和cacade的取值有哪些..1. cascade 有五个选项 分别是: all ,delete ,none,save-update,delete-orphan ;2. inverse 有两个值 true ,false这几个值各是什么呢?cascade的五个值:        all:所有情况下均进行关联操作,即save-update + delete.

2014-01-26 17:22:19 530

hibernate里inverse和cascade的理解

首先,来看inverse和cacade的取值有哪些..1. cascade 有五个选项 分别是: all ,delete ,none,save-update,delete-orphan ;2. inverse 有两个值 true ,false这几个值各是什么呢?cascade的五个值:all:所有情况下均进行关联操作,即save-update + delete.none...

2014-01-26 17:22:00 74

原创 Hibernate中inverse属性的应用

inverse为true时表示将主控权交给关联类来执行,在为false时表示由自己来行驶主控权。inverse属性默认为false,也就是说关系的两端都维护关系。在一对多映射中,inverse属性多设置为true,也就是说,一对多映射的映射关系最好由多的一方来维护。如下所示,为建立的Boy与Girl的关系一对多模型,一个Boy对应多个Girl。Boy.javapacka

2014-01-26 17:16:37 559

Hibernate中inverse属性的应用

inverse为true时表示将主控权交给关联类来执行,在为false时表示由自己来行驶主控权。inverse属性默认为false,也就是说关系的两端都维护关系。在一对多映射中,inverse属性多设置为true,也就是说,一对多映射的映射关系最好由多的一方来维护。如下所示,为建立的Boy与Girl的关系一对多模型,一个Boy对应多个Girl。Boy.javapackag...

2014-01-26 17:16:00 78

原创 【jdk源码解析三】java.util.Hashtable

HashMap是Hashtable的非线程安全版。非常明显由源码可以看出,Hashtable与HashMap并不出于同一个人之手,代码风格有很大差别。首先,Hashtable继承自Dictionary接口而不是Map接口,为什么呢?Dictionary接口其实与Map接口差不多,但是已经被废弃,被Map接口所取代。与HashMap相同,Hashtable也实现了java.lang.Clonea

2014-01-13 15:32:18 1046 1

【jdk源码解析三】java.util.Hashtable

HashMap是Hashtable的非线程安全版。非常明显由源码可以看出,Hashtable与HashMap并不出于同一个人之手,代码风格有很大差别。首先,Hashtable继承自Dictionary接口而不是Map接口,为什么呢?Dictionary接口其实与Map接口差不多,但是已经被废弃,被Map接口所取代。与HashMap相同,Hashtable也实现了java.lang.Clonea...

2014-01-13 15:32:00 95

原创 关于HashMap的拷贝问题

今天在看hashtable源码时看到clone()函数,官方文档说hashtable实现的是浅拷贝,但是,粗看之下,其的确对每一个Entry都调用了clone函数,怎么会是浅拷贝呢?如下:public synchronized Object clone() { try { Hashtable t = (Hashtable) super.clone(); t.table

2014-01-13 10:50:15 1540

关于HashMap的拷贝问题

今天在看hashtable源码时看到clone()函数,官方文档说hashtable实现的是浅拷贝,但是,粗看之下,其的确对每一个Entry都调用了clone函数,怎么会是浅拷贝呢?如下:public synchronized Object clone() { try { Hashtable<K,V> t = (Hashtable<K,V>) supe...

2014-01-13 10:50:00 202

原创 【jdk源码解析二】java.uti.HashMap源码解析

HashMap是我们常用的容器类之一,阅读了HashMap类的源码之后,来分析一下其源码。1.HashMap的类组织结构HashMap继承自AbstractMap抽象类,AbstractMap抽象类则是对Map接口的简单实现,AbstractMap实际上已经实现了大部分Map接口的方法,并提供了两个Entry内部类SimpleEntry以及SimpleImmutableEntry,后者相对

2014-01-11 17:08:08 713

【jdk源码解析二】java.uti.HashMap源码解析

HashMap是我们常用的容器类之一,阅读了HashMap类的源码之后,来分析一下其源码。1.HashMap的类组织结构HashMap继承自AbstractMap抽象类,AbstractMap抽象类则是对Map接口的简单实现,AbstractMap实际上已经实现了大部分Map接口的方法,并提供了两个Entry内部类SimpleEntry以及SimpleImmutableEntry,后者相对...

2014-01-11 17:08:00 73

原创 【ajax跨域攻击实例】腾讯微博跨域漏洞--by wqisen

由于ajax技术禁止跨域访问,因此,受到同源策略影响,不同域名不能进行ajax请求。但是,开发人员有时候又需要这样做,于是,出于方便的需要,他们很有可能通过document.domain="a.com"将网站的域设置后,这样,该网站的子域名就可以跨域请求,但是,这样,造成的安全漏洞提供了跨域攻击的可能。      根据窗口引用的同源策略,可以做出跨域脚本注入的实验如下:     在自己的腾

2014-01-09 13:45:04 1080

【ajax跨域攻击实例】腾讯微博跨域漏洞--by wqisen

由于ajax技术禁止跨域访问,因此,受到同源策略影响,不同域名不能进行ajax请求。但是,开发人员有时候又需要这样做,于是,出于方便的需要,他们很有可能通过document.domain="a.com"将网站的域设置后,这样,该网站的子域名就可以跨域请求,但是,这样,造成的安全漏洞提供了跨域攻击的可能。 根据窗口引用的同源策略,可以做出跨域脚本注入的实验如下: 在自己的腾讯微博发出一条连...

2014-01-09 13:45:00 92

转载 JDBC数据源(DataSource)的简单实现

JDBC数据源(DataSource)的简单实现2010-01-13 21:51:44标签:DataSource JDBC 休闲 职场原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lavasoft.blog.51cto.com/62575/265073JDBC数据源(DataSource)的简单

2014-01-05 16:32:11 657

JDBC数据源(DataSource)的简单实现

JDBC数据源(DataSource)的简单实现2010-01-13 21:51:44标签:DataSourceJDBC休闲职场原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。http://lavasoft.blog.51cto.com/62575/265073JDBC数据源(DataSource...

2014-01-05 16:32:00 63

原创 【jdk源码解析一】java.util.Observer与java.util.Observable

观察者模式大家应该十分熟悉,贴一张别人的图如下:上图十分清晰的展示了观察者模式是什么样的。在java的util包里,实际上有内置的对观察者模式的实现,java.uti.Observable类就是这里的主题,而Observer接口对应的就是Observer观察者接口。但是,实际上,虽然java对Observable的实现不是使用接口来实现,因此,实际上并不是很符合设计模式的多用组合,

2014-01-04 16:11:30 1107

【jdk源码解析一】java.util.Observer与java.util.Observable

观察者模式大家应该十分熟悉,贴一张别人的图如下:上图十分清晰的展示了观察者模式是什么样的。在java的util包里,实际上有内置的对观察者模式的实现,java.uti.Observable类就是这里的主题,而Observer接口对应的就是Observer观察者接口。但是,实际上,虽然java对Observable的实现不是使用接口来实现,因此,实际上并不是很符合设计模式的多用组合,少用...

2014-01-04 16:11:00 128

转载 异步消息的传递-回调机制

软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。回调和异步

2013-12-29 10:53:36 587

异步消息的传递-回调机制

软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接...

2013-12-29 10:53:00 57

空空如也

空空如也

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

TA关注的人

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