自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (11)
  • 收藏
  • 关注

原创 Java代理

其实每个模式名称就表明了该模式的作用,代理模式就是多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候回去找中介,为什么呢?因为你对该 地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做,此处的代理就是这个意思。再如我们有的时候打官司,我们需要请律师,因为律师在法律方面有 专长,可以替我们进行操作,表达我们的想法。先来看看关系图: 代理模式的应用场景:...

2017-07-10 10:56:23 224

原创 垃圾收集器

垃圾收集器引用计数器:从gc日志可以看出是回收了,java虚假没有选用引用计数器算法管理内存可达性分析算法?线程池中线程是维持一个数量还是,用已经有的线程?回收方法区垃圾收集器垃圾收集器根据应用场景和内存回收范围来选择。根据新生代、老年代,高性能服务器、客户端,计算密集场景、高响应场景。选择不同的收集器。单线程收集器单线程收集器,...

2017-07-10 10:56:19 265

原创 java堆溢出

 在Eclipse 配置运行参数或者在命令行中加上参数  eclipse 安装 MAT插件,使用。  虚拟机栈内存溢出: 创建很多线程导致内存溢出,可以减少最大堆和减少栈容量。方法区和运行时常量池溢出  方法区溢出 大量产生java类的应用,类被不同类加载器多次加载。都可能产出方法区溢出。本机...

2017-07-10 10:56:16 444

原创 Jvm垃圾收集算法

标记-清除标记-清除算法是现代垃圾回收算法的思想基础。标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段。一种可行的实现是,在标记阶段,首先通过根节点,标记所有从根节点开始的可达对象。因此,未被标记的对象就是未被引用的垃圾对象。然后,在清除阶段,清除所有未被标记的对象   标记-整理 根据老年代的特点提出标记-整理算法。它在标记-清除算法的基础上做了一些优化。和标记-

2017-07-10 10:56:14 265

原创 内存模型

如果了解java虚拟机更系统的操作。请阅读 Charlie Hunt , Binu John著《java性能优化权威指南》,James Gosling,Java之父、Steve Wilson,Oracle公司工程副总裁写序。Java虚拟机运行时数据区: PC寄存器(program counter):程序计数器线程私有的较小的内存空间,保存当前线程所执行的字节码指令地址。在虚拟机...

2017-07-10 10:56:11 265

原创 对象回收

回收 对象回收对象在不可达的情况下,如果对象覆盖finalize()方法,而且finalize()没有被调用过。这些对象会放置在F-Queue队列中,由Finalizer线程执行。由于是单线程,线程异常的情况导致线程不能执行下去也是可能的。 finalize()方法类似析构函数,在对象结束的时候会被调用。但这并不是推荐的使用方法。客观上,没有什么操作非得在这个时候执行。子类覆盖finaliz

2017-07-10 10:56:05 260

原创 对象引用分析

对象的三种状态:可达的 从根节点可以触及到这个对象可复活的 一旦所有引用被释放,就是可复活状态因为在finalize()中可能复活该对象不可达的 在finalize()后,可能会进入不可触及状态不可达的对象不可能复活可以回收引用标记Java虚拟机提供自动内存管理机制。在GC中,没用的对象,内存是要回收的。如何高效判断对象存活是个重要的问题。引用...

2017-07-10 10:56:03 313

原创 对象内存布局与访问

对象内存布局 在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。对象头 HotSpot虚拟机的对象头包括两部分信息:运行时数据和类型指针。运行时数据 用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。

2017-07-10 10:56:00 181

原创 对象的创建

一个简单的创建对象语句Clazz instance = new Clazz();包含的主要过程包括了类加载检查、对象分配内存、并发处理、内存空间初始化、对象设置、执行init方法等。主要流程如下: 1. 类加载检查 JVM遇到一条new指令时,首先检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必...

2017-07-10 10:55:57 260

原创 JVM对象

对象Java虚拟机采用自动的内存管理和自适应的优化策略。但了解java虚拟机的运行机制和优化策略,写出适合java虚拟机管理的程序对性能提升是有意义的。逃逸分析:对象的作用范围只在本线程范围,如方法(包括静态方法)中new 对象,这个对象是不可能被其它线程共享。可以直接在栈上分配内存。栈上数据在出栈后会释放内存,不需要GC回收。大对象:虚拟机栈容量有限,大的对象会直接在堆上分配。堆内存回收频

2017-07-10 10:55:55 225

原创 并发控制

并发控制CyclicBarrier CountDownLatch//模拟程序任务场景一测试程序  场景二 Semaphore Semaphore为并发包中提供用于控制某资源同时可以被几个线程访问的类  主要方法: void acquire() 从信号量获取一个许可,如果无可用许可前 将一直...

2017-07-10 10:55:49 368

原创 JDK线程池的实现

线程池接口Executor该接口只有一个方法,JDK解释如下执行已提交的Runnable 任务的对象。此接口提供一种将任务提交与每个任务将如何运行的机制(包括线程使用的细节、调度等)分离开来的方法。不过,Executor 接口并没有严格地要求执行是异步的。在最简单的情况下,执行程序可以在调用者的线程中立即运行已提交的任务:更常见的是,任务是在某个不是调用者线程的线程中执行的...

2017-07-10 10:55:47 201

原创 队列(Queue)

队列(Queue) Queue: 先入先出(FIFO)的数据结构。 offer,add区别: 一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝。 这时新的 offer 方法就可以起作用了。它不是对调用 add() 方法抛出 一个 unchecked 异常,而只是得到由 offer() 返回的 false。 poll,remove区别: remove() 和 p

2017-07-10 10:55:44 449

原创 并发任务

并发类库在关注并发前,我们需要了解一些相关概念。线程与进程运行在系统上的每个程序都是一个进程。一个进程可包含多个线程。进程和线程都表示一个逻辑控制流,即一种计算过程。进程独立占用管理物理资源,线程共享同一个进程中的物理资源和数据。可以采用多进程来实现程序的并发。CPU资源是固定的,CPU通过多线程的切换实现并发。即线程轮流执行一个时间片,实现多个任务同时执行。多线程使用要考虑用户交...

2017-07-10 10:55:41 407

原创 J.U.C重入锁

ReentrantLock重入锁ReentrantLock是Java并发包中互斥锁,它有公平锁和非公平锁两种实现方式, 重入的意思就是,如果已经获得了锁,如果执行期间还需要获得这个锁的话,会直接获得所,不会被阻塞,获得锁的次数加1;每执行一次unlock,持有锁的次数减1,当为0时释放锁。这点,Synchronized 具有同样语义。 Sync在ReentrantLock中...

2017-07-10 10:55:39 258

原创 AbstractQueuedSynchronizer

一般并发包类用内部类Sync来继承并实现互斥语义。为实现依赖于先进先出 (FIFO) 等待队列的阻塞锁和相关同步器(信号量、事件,等等)提供一个框架。此类的设计目标是成为依靠单个原子 int 值来表示状态的大多数同步器的一个有用基础。子类必须定义重写此状态的受保护方法,并定义哪种状态对于此对象意味着被获取或被释放。假定这些条件之后,此类中的其他方法就可以实现所有排队和阻塞机制。子类可以维护其他状态...

2017-07-10 10:55:36 234

原创 Atomic

Atomic原子(atomic)本意是"不能被进一步分割的最小粒子",而原子操作(atomic operation)意为"不可被中断的一个或一系列操作"。在多处理器上实现原子操作就变得有点复杂。让我们一起来聊一聊在Intel处理器和Java里是如何实现原子操作的。术语定义在了解原子操作的实现原理前,先要了解一下相关的术语,如表2-7所示。表2-7    CPU术语定义 ...

2017-07-10 10:55:33 294

原创 Synchronized

SynchronizedSynchronized关键字简洁、清晰、语义明确,因此即使有了Lock接口,使用的还是非常广泛。在HotSpot JVM实现中,锁有个专门的名字:对象监视器。先来看下利用synchronized实现同步的基础:Java中的每一个非null对象都可以作为锁。具体表现为以下3种形式。 对于普通同步方法,锁是当前实例对象。 对于静态同步方法,锁是当前类...

2017-07-10 10:55:30 216

原创 Volatile

Volatile在多线程并发编程中synchronized和volatile都扮演着重要的角色,volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的"可见性",即当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。如果volatile变量修饰符使用恰当的话,它比synchronized的使用和执行成本更低,因为它不会引起线程上下文的切换和调度。本文将...

2017-07-10 10:55:28 998

原创 Java互斥语义的实现

锁对象头(Object Header)HotSpot 虚拟机的对象头包括两部分信息:Mark Word(标记字段)和 Klass Pointer(类型指针)  Mark Word 用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程 ID、偏向时间戳等等。JVM 对象头一般占用两个机器码,在 32-bit JVM 上占用 6...

2017-07-10 10:55:25 210

原创 Java一致性的实现

目录一致性CAS(Compare And Swap)Final不可变Synchronized同步Volatile并发包概述一致性Happen Before程序次序规则:在一个单独的线程中,按照程序代码的执行流顺序,(时间上)先执行的操作happen—before(时间上)后执行的操作。 管理锁定规则:一个unlock操作happen—before后面(时间上的...

2017-07-10 10:55:22 1359

原创 Java中String的设计

String应用简介前言String字符串在Java应用中使用非常频繁,理解了它在虚拟机中的实现机制能更好的使用它,本文使用的JDK版本为1.8.0_111。 常量池 Java代码被编译成class文件时,会生成一个常量池(Constant pool)的数据结构,用以保存字面常量和符号引用(类名、方法名、接口名和字段名等)。 很简单的一段代码,通过命令 javap -ver...

2017-07-10 10:55:20 370

原创 内省

内省(Introspector)是Java 语言对Bean类属性、事件的一种缺省处理方法。JDK提供了对JavaBean进行操作的API,这套API就称为内省。 Java的内省是指在不知道Bean对象的属性的情况下,通过Introspector和属性描述器(PropertyDescriptor)来获取属性的getter/setter方法。 Java内省机制的一般做法是通过类

2017-07-10 10:55:17 292

原创 Java反射

每个Java class在jvm中都有一个对应对象描述。每个Java对象都有一个指向class的指针。反射的实质获取对象指向Class元数据描述的信息,详见java.lang.class类。反射通过class对类的描述可以获取类field、method、包括匿名类和内部类等所有类定义的信息。下面详细介绍反射的实现: 1.先检查 AccessibleObject的override属性是否为tru...

2017-07-10 10:55:14 755

原创 Java注解

注解 运行 Sun JDK字节码生成分为三个阶段:解析和填充符号表过程,生成语法树 插入式注解处理器的注解处理过程,可以操作语法树。 这个操作语法树的特性,可以让注解生成代码或者填充默认值 Google的AutoValue值类型生成类库 分析与字节码生成。作用阶段:枚举类型 java.lang.annotation.RetentionPolicy ...

2017-07-10 10:55:11 160

原创 类加载器

类加载器前提:通过一个类的全限定名来获取描述此类的二进制字节流,实现这个动作的代码模块称为类加载器。这里并没有规定读取方式,可以从Class文件、网络、数据库、内存等。比较两个类是否相等,需要两个类来源于同一个Class文件,被同一个类加载器加载。Java有两种类加载器。Java虚拟机用c++语言实现的启动类加载器(Bootstrap ClassLoader)。Java语言的其它类加载器如...

2017-07-10 10:55:08 147

原创 序列化

一个序列化例子 Test.java包括一个无参构造器,一个序列化的属性和不被序列化的属性。 定义序列化的工具方法 序列化 反序列化 测试(反序列化的本质是对象的深克隆,不会走构造方法)

2017-07-10 10:55:06 138

原创 代理

其实每个模式名称就表明了该模式的作用,代理模式就是多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候回去找中介,为什么呢?因为你对该 地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做,此处的代理就是这个意思。再如我们有的时候打官司,我们需要请律师,因为律师在法律方面有 专长,可以替我们进行操作,表达我们的想法。先来看看关系图: 代理模式的应用场景:

2017-07-10 10:55:03 165

原创 Java语法糖设计

语法糖    Java语法糖系列,所以首先讲讲什么是语法糖。语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的字节码或者特定的方式对这些语法做一些处理,开发者就可以直接方便地使用了。这些语法糖虽然不会提供实质性的功能改进,但是它们或能提高性能、或能提升语法的严谨性、或能减少编码出错的机会。Java提供给了用户大量的语法糖,...

2017-07-10 10:55:00 509

原创 排序与查找

排序与查找 大多数程序设计的入门经典:排序与查找。排序和查找的经典算法已经固定,作为不同场景设计的调优基础。这些算法的提出和优化过程还是很有趣的。有兴趣可以参看Donald E. Knuth的《计算机程序设计艺术(第3卷)》排序与查找,非常有趣,值得业余一看。还有一篇关于算法的讨论。  排序 内排序与外排序根据在排序过程中待排序的记录是否全部被放置在内存中,排序分为:内排序和外排序。内

2017-07-10 10:54:56 801

原创 几种面向对象语言的设计

 面向对象Java是支持面向对象编程的语言,java设计思想参考java之父James Gosling的一次谈话 http://www.artima.com/intv/gosling1P.html。设计简单,易于理解,多用于开发Internet应用软件。90年代的许多软件开发思想得益于Smalltalk语言。本文试图从多继承、封装、多态、闭包的实现来说明几种语言面向对象编程的特点。...

2017-07-10 10:54:53 986

原创 Java对于面向对象编程的设计

多态重载与重写输出是Object。在这个例子中,重载的3个get方法,Object包含另外两种参数类型。这种设计会带来问题:String... 本可以是null,单String,String[];int数组也有可能在运行时当做Object类型。  接口与抽象类接口定义了必须实现的规范,接口也可以保持对非可见类的引用。面向接口让扩展变得很容易。抽象类定义一...

2017-07-07 18:45:12 278

原创 Java基本类型与引用类型

基本类型(primitive type) boolean 不同于C语言Java在JVM实现中用整形0 1表示。JVM对整形指令做了优化。 "位"用0和1来表示 ,true的值在内存中就表示1,false在内存中就是表示0。 不同于int的0和1,一个int型的变量,占用的内存空间是4个字节,4*8 位char前256个表

2017-07-07 18:23:12 488

原创 Java语法基础

运算符与语法 修改:根据乔俊龙同学意见,做整体修改。  编程语言,计算数据并得到预期的结果。首先要有保存中间数据的容器。用于数据读取、中间量暂存、结果数据在被获取之前。 下面的例子是一个java的数据模型。我们称为Java bean。其中会说明上述的java语法规范。 Java数据模型是一种将数据与其行为集成在一起的模式。 使用JavaBean时,我们需要在应用程序中加

2017-07-07 18:19:39 244

原创 Jdk类库注解

Java类库常用注解 这里解释注解的用法和含义,自定义注解在后面提到。 元注解是指注解的注解。包括 @Retention @Target @Document @Inherited四种。   注释类型 Inherited  @Documented@Retention(value=RUNTIME)@Target(value=ANNOTATION_T

2017-07-07 18:13:25 388

原创 Class文件格式

Java字节码可以以非文件的其它方式存在:理解java字节码文件重要的几个属性: 字节码文件信息(ClassFile结构) 描述符(descriptor) 类常量池(Constant pool) 访问标志(flags) Code属性 ConstantValue LineNumberTables Exception ta...

2017-07-07 17:56:27 238

原创 JVM指令

字节码助记符指令含义0x00nop什么都不做0x01aconst_null将null推送至栈顶0x092iconst_m1将int型-1推送至栈顶0x03iconst_0将int型0推送至栈顶0x04iconst_1将int型1推送至栈顶0x05iconst_2将int型2推送至栈顶0x06iconst_3将int型3推送至栈顶0x07iconst_4将int型4推送至栈顶0x08iconst_5

2017-07-07 17:42:58 307

sun.misc.UnSafe.java

sun.misc.UnSafe.java

2017-04-12

java 8 帮助文档

JDK帮助文档1.8

2017-01-05

anltr sql的解析器

anltr sql的解析器

2016-11-16

Java写hdfs需要的jar包

Java操作hdfs需要的jar包,2.20版本

2016-04-12

mongodb-src-r3.0.6

mongodb-src-r3.0.6,win7版本

2015-09-19

Windows6.1-KB2731284-v3-x64.msu

mongodb win7安装补丁Windows6.1-KB2731284-v3-x64.msu

2015-09-19

MySQL5.6 Linux版本

MySQL-5.6.tar.gz包方便好用不贵,别人都2积分下载我这就1分

2015-09-01

tomcat8 apache-tomcat-8.0.26.tar.gz

apache-tomcat-8.0.26.tar.gz,方便大家下载使用

2015-09-01

nginx4Linux&windows

Linux 和Windows安装包都有,nginx 的安装包,方便大家使用

2015-09-01

企业人事管理系统

企业人事管理系统,岗位设置,用户管理,权限设置,部门管理模块 sql文件 任务书 源码 任务分配

2015-02-10

javaWeb源码学生公寓管理系统struts2

javaWeb源码学生公寓管理系统struts2 基于Java的学生公寓管理系统,利用Struts2框架,适合所有公寓管理系统

2015-02-10

空空如也

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

TA关注的人

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