自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

heihei

carryall

  • 博客(21)
  • 资源 (3)
  • 收藏
  • 关注

原创 Java多线程之线程封闭(三)

线程封闭的概念访问共享变量时,通常要使用同步,所以避免使用同步的方法就是减少共享数据的使用,这种技术就是线程封闭。实现线程封闭的方法1:ad-hoc线程封闭这是完全靠实现者控制的线程封闭,他的线程封闭完全靠实现者实现。也是最糟糕的一种线程封闭。所以我们直接把他忽略掉吧。2:栈封闭栈封闭是我们编程当中遇到的最多的线程封闭。什么是栈封闭呢?简单的说就是局部变量。多个线程访问一个方法,此方法中的 局部变

2017-11-29 09:28:20 543

原创 Java多线程之线程的可见性(二)

1.Java的内存模型Java Memory Model (JAVA 内存模型)描述线程之间如何通过内存(memory)来进行交互。 具体说来, JVM中存在一个主存区(Main Memory或Java Heap Memory),对于所有线程进行共享,而每个线程又有自己的工作内存(Working Memory),工作内存中保存的是主存中某些变量的拷贝,线程对所有变量的操作并非发生在主存区,而是发生在

2017-11-28 17:14:18 1620

原创 java多线程之线程的安全性(一)

对象的状态:对象的状态是指存储在状态变量(实例或静态域)中的数据。对象的状态还可能包括其他依赖对象的域。例如,HashMap的状态不仅储存在对象本身,还储存在Map.Entry对象中。多线程安全的概念:当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么这个类就是线程安全的。多线程安全的核心:编

2017-11-25 16:35:10 459

原创 Spring之SpringMVC(四)

1.Spring MVC概述Spring MVC基于MVC模式实现,能够构建一个像Spring一样的灵活和松耦合的web应用程序。2.Spring的工作流程 上面是一个请求的流程:1.请求的第一站是DispatcherServlet,所以Spring容器首先必须先在配置中加载DispatcherServlet的bean。DispatcherServlet就是前端控制器。2.Dispatcher

2017-11-24 20:41:11 3274

原创 Spring之面向切面编程AOP(三)

上两节提到Spring的装配bean还有高级装配,这一节就是Spring的另一个核心内容-AOP AOP的基本概念AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等通用的辅助模块,在系统的很多模块都要添加。日志,事务,权限等就是切面,使用这种面向切面编程时,我们仍然可以在一个地方声明通用功能(切面),然后声明这个功能在何时通过何种方式使用,而无需修改应用这个

2017-11-23 22:44:13 8525

原创 Spring之高级装配(二)

上一节提到Spring之装配bean(一),我们已经了解到了装配的基础知识,这部分是更为高级的bean装配技术。高级装配内容:spring profile有条件的bean处理自动装配的歧义性bean的作用域1.spring profile应用程序从一个环境迁移到另一个环境。开发阶段,某些环境相关做法可能并不适合迁移到生产环境中,甚至几遍迁移过去也无法正常工作,所以在不同的环境中使用的bea

2017-11-22 16:24:30 14857

原创 Spring之装配Bean(一)

Spring中装配bean的三种主要方式1.隐式的bean发现机制和自动化装配 组件扫描( component scanning) : Spring会自动发现应用上下文中所创建的bean。 自动装配( autowiring) : Spring自动满足bean之间的依赖。 通过@Component注入beanimport org.springframework.stereotype.Compone

2017-11-21 23:00:28 14769

原创 对象的访问方式

对象访问方式        虽然定义的reference类型数据来作为对象内存数据的引用,但JVM规范没有定义这个引用应该通过何种方式定位、访问堆上的对象,也没有不强制规定对象的内部结构应当如何表示;            这些都取决于JVM的实现,目前主流的对象访问方式有两种:(A)、使用句柄       Java堆划分一块内存作为句柄池,reference中存储就是对象的句柄地址;

2017-11-15 20:21:11 14978

原创 Java的编译方式

Java主流编译体系采用了前端编译+JIT编译的方式:1、前端编译把Java源码文件(.java)编译成Class文件(.class)的过程;也即把满足Java语言规范的程序转化为满足JVM规范所要求格式的功能;优点:许多Java语法新特性(”语法糖”:泛型、内部类等等),是靠前端编译器实现的,而不是依赖虚拟机;编译成的Class文件可以直接给JVM解释器解释执行,省去编译时间,加快启动速度;缺

2017-11-15 17:27:02 15528

原创 Java的io类的使用场景

先附上io图: InputStream类ByteArrayInputStream – 把内存中的一个缓冲区作为 InputStream 使用,CPU从缓存区读取数据比从存储介质的速率快10倍以上。StringBufferInputStream – 把一个 String 对象作为。InputStream。不建议使用,在转换字符的问题上有缺陷。FileInputStream – 把一个文件作为

2017-11-12 16:04:41 17915

原创 分派

2017-11-06 10:36:06 14647

原创 运行时栈帧结构

栈帧是用于虚拟机进行方法调用和方法执行的数据结构。每一个栈帧的如栈和出栈过程代表了一个方法执行和结束的过程。 每一个栈帧包括局部变量表,操作数栈,动态链接,返回地址等等信息。栈帧的所有信息在编译代码阶段就已经确定了,不会收到运行时数据的影响。    1.局部变量表每一个变量都会储存在Slot中,64位机器的Slot占64位,每个Slot都可以存储java数据类型和引用类型。局部变量表的第0

2017-11-05 19:16:09 15021

原创 类加载器

1.类和类加载器类加加载阶段 “通过一个类的全限定名来获取描述该类的二进制流” 过程在虚拟机外部实现,而实现这个动作的是类加载器。 类加载器的功能不止加载类,它和这个类本身能确认其在虚拟机的唯一性。比较两个类是否相同,必须类全限定名相同和类加载器相同。 2.类加载器种类对于java开发人员来讲,类加载器有三种启动类加载器 这类加载器将负责加载存放在$JAVA_HOME\lib中的,或者被-Xb

2017-11-05 14:46:30 14738

原创 类的加载过程

类从加载到虚拟机到卸载,它的整个生命周期包括:加载(Loading),验证(Validation),准备(Preparation),解析(Resolution),初始化(Initialization),使用(Using)和卸载(Unloading)。其中,验证、准备和解析部分被称为连接(Linking)。加载:        在加载阶段,虚拟机主要完成三件事:1.通过一个类的全限定名来获取定义

2017-11-05 00:11:46 14664

转载 类加载的时机

Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的加载机制。   类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括了:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用

2017-11-04 10:24:40 14467

原创 通过JConsole查看本地远程虚拟机

一、JConsole是什么    从Java 5开始 引入了 JConsole。JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行。您可以轻松地使用 JConsole(或者,它更高端的 “近亲” VisualVM )来监控 Java 应用程序性能和跟踪 Java 中的代码。二、如何启动JConsole如果是从命令行启动,使 JDK 在 PATH 上,运

2017-11-02 18:13:20 15131 1

转载 JavaJDK中的命令行工具

JavaJDK中的命令行工具 本文内容主要学习自《深入理解Java虚拟机》,超赞的一本书强烈推荐!一,常用JDK监控和故障处理工具 命令名称 全称 用途 jstat JVM Statistics Monitoring Tool 用于收集Hotspot虚拟机各方面的运行数据 jps JVM Process Status Tool 显示指定系统内所有的HotSpo

2017-11-02 12:20:05 14584

转载 GC日志分析

JVM的GC日志的主要参数包括如下几个:-XX:+PrintGC 输出GC日志-XX:+PrintGCDetails 输出GC的详细日志-XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)-XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)-XX:+PrintHeapAtGC 在进行

2017-11-01 23:57:37 14557

原创 垃圾收集算法与垃圾收集器

典型的垃圾收集算法1.Mark-Sweep(标记-清除)算法  这是最基础的垃圾回收算法,之所以说它是最基础的是因为它最容易实现,思想也是最简单的。标记-清除算法分为两个阶段:标记阶段和清除阶段。标记阶段的任务是标记出所有需要被回收的对象,清除阶段就是回收被标记的对象所占用的空间。具体过程如下图所示:  从图中可以很容易看出标记-清除算法实现起来比较容易,但是有一个比较严重的问题就是容易产生内存碎

2017-11-01 23:09:26 11654

原创 判断对象存活方法及回收方法

引用计数方法给对象添加一个引用计数器,当有对象引用它时,计数器的值就+1,引用实效时,计数器的值-1。 但是这个方法却解决不了相互引用循环的问题。 比如class Haha { public Object instant = null; public static void test(){ Haha A = new Haha(); Haha B =

2017-11-01 22:39:05 3703

原创 OutOfMemory (OOM)的类型与检测

Java堆溢出Java堆存的是对象的实例,所以无限添加对象实例很容易造成堆溢出public class OutOfMemoryError_Heap { static class OOMObject{} public static void main(String[] args) { List <OOMObject> list = new ArrayList<OOMOb

2017-11-01 15:28:14 733

jetty-distribution-9.4.11.v20180605

Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。

2018-11-30

activemq-all-5.15.0.jar

activemq-all-5.15.0.jar

2017-08-28

activitymq实战 源代码

activitymq实战 源代码

2017-08-28

空空如也

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

TA关注的人

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