自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

哀&RT

Your Biggest Enemy is You.

  • 博客(46)
  • 收藏
  • 关注

转载 外篇:JVM机器指令集

1. Java虚拟机对运行时虚拟机栈(JVM Stack)的组织    Java虚拟机在运行时会为每一个线程在内存中分配了一个虚拟机栈,来表示线程的运行状态和信息,虚拟机栈中的元素称之为栈帧(JVM stack frame),每一个栈帧表示这对一个方法的调用信息。如下所示:上述的描述可能会有点抽象,为了给读者一个直观的感受,我们定义一个简单的Java类,然后执行这个运行这个类,逐步分析整个Java...

2018-06-27 18:14:06 359

转载 外篇:JVM类加载器机制与类加载过程

一、为什么说Java语言是跨平台的?Java语言之所以说它是跨平台的、可以在当前绝大部分的操作系统平台下运行,是因为Java语言的运行环境是在Java虚拟机中。 Java虚拟机消除了各个平台之间的差异,只要操作系统平台下安装了Java虚拟机,那么使用Java开发的东西都能在其上面运行。如下图所示:         Java虚拟机对各个平台而言,实质上是各个平台上的一个可执行程序。例如在window...

2018-06-27 18:06:00 276

原创 深入理解JAVA虚拟机读书笔记(16)

这一节内容是对深入理解Java虚拟机的第7章和部分第6张总结。Class字节码内容 JVM运行时数据区内容PC、虚拟机栈、本地方法栈、堆、方法区 PC: 即程序计数器,是一块很小的内存空间,存储了下一条西药执行的字节码指令的地址。每个线程的PC记录了当前线程要执行的指令,每个线程都有自己的PC,如果执行的是本地方法,则PC为空。 虚拟机栈: ...

2018-06-27 16:22:46 214

转载 深入理解JAVA虚拟机读书笔记(15)

这一大节主要讲的是方法表——转载自:https://blog.csdn.net/luanlouis/article/details/411136951.概述      方法表集合是指由若干个方法表(method_info)组成的集合。对于在类中定义的若干个,经过JVM编译成class文件后,会将相应的method方法信息组织到一个叫做方法表集合的结构中,字段表集合是一个类数组结构,如下图所示:2....

2018-06-14 11:16:23 349

转载 深入理解JAVA虚拟机读书笔记(14)

0.前言         了解JVM虚拟机原理是每一个Java程序员修炼的必经之路。但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描述,很难给人以形象化的认知,看完之后感觉还是稀里糊涂的。         感于以上的种种,我打算把我在学习JVM虚拟机的过程中学到的东西,结合自己的理解,总结成《Java虚拟机原理图解》...

2018-06-05 13:39:47 240

转载 深入理解JAVA虚拟机读书笔记(13)

 讲完了class文件中的常量池,我们就相当于克服了class文件中最麻烦的模块了。现在,我们来看一下class文件中紧接着常量池后面的几个东西:访问标志、类索引、父类索引、接口索引集合。1. 访问标志、类索引、父类索引、接口索引集合 在class文件中的位置         好,让我们来一一击破它们,看看它们到底是什么东西。2. 访问标志(access_flags)能够表示什么?    访问标志...

2018-06-04 21:00:00 190

转载 深入理解JAVA虚拟机读书笔记(12)

NO9.类中引用到的field字段在常量池中是怎样描述的?(CONSTANT_Fieldref_info, CONSTANT_Name_Type_info)     一般而言,我们在定义类的过程中会定义一些 field 字段,然后会在这个类的其他地方(如方法中)使用到它。有可能我们在类的方法中只使用field字段一次,也有可能我们会在类定义的方法中使用它很多很多次。     举一个简单的例子,我们...

2018-06-04 20:58:18 132

转载 深入理解JAVA虚拟机读书笔记(11)

    这一篇讲的是常量池内容,直接开始干货吧。NO1.常量池在class文件的什么位置?       看一下之前class的文件结构,在class文件中的魔数、副版本号、主版本之后,紧接着就是常量池的数据区域了,如下图用红线包括的位置:       知道了常量池的位置后,然后让我们来揭秘常量池里究竟有什么东西吧~     NO2.常量池的里面是怎么组织的?      常量池的组织很简单,前端的两...

2018-06-04 20:56:47 168

转载 深入理解JAVA虚拟机读书笔记(10)

    因为刚换公司不久,需要赶紧适应公司,导致有一段时间没写了,6月份开始要继续JVM学习之路了。之前看完了JVM内存结构的一些知识,那接下来这篇本打算自己写写Class文件结构和分析,但发现了一篇大神的博客之后,LZ觉得已经写得非常好了,只能膜拜了。好的东西当然要多转发多分享。之前有朋友老说不知道怎么学,其实网上说的方式很多很多,只要找到一条自己觉得适合的,提升快的,就是好得学习方法。就LZ来...

2018-06-04 20:47:43 197

转载 ActiveMQ集群配置

ActiveMQ集群配置LZ看了这篇文章觉得很好,可以参考参考。转载自https://www.cnblogs.com/gossip/p/5977489.html一、本文目的        介绍如何在同一台虚拟机上搭建高可用的Activemq服务,集群数量包含3个Activemq,当Activemq可用数>=2时,整个集群可用。        本文Activemq的集群数量为3个,分别命名为m...

2018-04-20 10:23:52 490

原创 ActiveMQ学习记录(三)

    继续学习ActiveMQ,这节就讲讲ActiveMQ和spring的结合了,直接开始吧。    第一步:创建Maven工程,然后在pom中引入相关的配置(主要是dependencies):<dependencies> <dependency> <groupId>org.springframework</groupId> ...

2018-04-18 15:05:15 238

原创 ActiveMQ学习记录(二)

    经过上一篇简单了解ActiveMQ后,我们继续了解ActiveMQ,再次说明,本系列主要参考一些好的博客后进行整理,自己尝试后编写的。好了,那我们开始继续学习ActiveMQ。    消息的顺序消费    在上一篇文章中,我们已经明确知道了ActiveMQ并不能保证消费的顺序性,即便我们使用了消息优先级。而在实际开发中,有些场景又是需要对消息进行顺序消费的,比如:用户从下单、到支付、再到发...

2018-04-17 17:02:02 1385

原创 ActiveMQ学习记录(一)

    对应ActiveMQ这系列的文章,LZ大多是学习一些大神的博客,然后将这些东西汇聚起来。那么我们话不多说,开始学习ActiveMQ吧。    首先介绍下一些概念性的东西:    JMS    首先来说较早以前,也就是没有JMS的那个时候,很多应用系统存在一些缺陷:    1.通信的同步性        client端发起调用后,必须等待server处理完成并返回结果后才能继续执行    2...

2018-04-12 17:58:31 455

原创 深入理解JAVA虚拟机读书笔记(9)

    上节主要介绍JDK bin下的一些虚拟机性能监控与故障处理的工具,本节将介绍JDK的可视化工具JConsole。除了JConsole以外还有可视化工具Visual VM,这里就不在介绍了,可以参考书本。    JConsole(Java监视与管理的工具):直接执行bin下jconsole.exe后会自动搜索本级运行的所有虚拟机进行,不需要jps来查询。界面具体如下所示           ...

2018-04-08 15:43:10 236

原创 深入理解JAVA虚拟机读书笔记(8)

    这节主要介绍JDK bin下的一些虚拟机性能监控与故障处理的工具,接下来直接进入主题。    在bin中比较常见的工具有一下几种:    1.jps:JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程    2.jstat:JVM Statistics Monitoring Tool,用于收集HotSpot虚拟机各方面的运行数据    3.jinf...

2018-03-29 16:56:38 311

原创 深入理解JAVA虚拟机读书笔记(7)

    这节简单聊一聊对象内存分配。    之前讲过Java堆中可以细分为:新生代和老年代;再细致一点的有Eden空间、 From Survivor空间、 To Survivor空间等。而对象内存分配大方向上就是在堆上分配。对象主要分配在新生代的Eden区,少数也可能直接分配到老年代中。    首先了解下Minor GC和Full GC。    新生代GC(Minor GC):指发生在新生代的垃圾...

2018-03-28 10:06:05 174

转载 深入理解JAVA虚拟机读书笔记(6)

    这节主要整理垃圾回收器的一些参数说明    垃圾搜集器选择参数:        UseSerialGC:开启此参数使用serial & serial old搜集器(client模式默认值)。        UseParNewGC:开启此参数使用ParNew & serial old搜集器(不推荐)。        UseConcMarkSweepGC:开启此参数使用ParN...

2018-03-27 11:42:18 167

原创 深入理解JAVA虚拟机读书笔记(5)

    上一节介绍的是垃圾回收算法,这一节介绍垃圾搜集器。何为垃圾收集器,其实就是讲之前的垃圾回收算法通过编程语言实现出来。    在介绍下面的回收器之前,先来接收两个概念,并发、并行、吞吐量:    并行:指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态。    并发:指用户线程与垃圾收集线程同时执行(但不一定是并行的,可能会交替执行),用户程序在继续运行,而垃圾收集程序运行于另一个C...

2018-03-27 09:48:45 240 1

原创 深入理解JAVA虚拟机读书笔记(4)

    之前提到的了根搜索算法,它可以解决我们应该回收哪些对象的问题,但是它显然还不能承担垃圾搜集的重任,因为我们在程序(程序也就是指我们运行在JVM上的JAVA程序)运行期间如果想进行垃圾回收,就必须让GC线程与程序当中的线程互相配合,才能在不影响程序运行的前提下,顺利的将垃圾进行回收。    为了达到这个目的,标记/清除算法就应运而生了。它的做法是当堆中的有效内存空间(available me...

2018-03-23 14:04:25 150

原创 深入理解JAVA虚拟机读书笔记(3)

    在上篇文章介绍了即使在可达性分析算法中不可达的对象,也并非是非死不可的。事实上,第一次不可达的时候是被判处缓刑,真正要宣告一个对象死亡,至少要经过两次标记的过程。如果对象在进行可达性分析后发现没有与GC Roots相连接的引用链,那它将会被第一次标记并且进行一次筛选,筛选的条件是此对象是否有必要执行finalize()方法。 当对象没有覆盖finalize()方法,或者finalize()...

2018-03-20 16:49:53 273

原创 深入理解JAVA虚拟机读书笔记(2)

    对于垃圾收集(GC)来说,主要思考一下三个问题:        1.哪些内存需要回收?        2.什么时候回收?        3.如何回收?    这节这里大致介绍下第一个问题,另外两个问题在以后的博客中会给出。    那么哪些内存需要回收呢?这里我们了解一个算法:引用计数算法。    引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时...

2018-03-20 16:24:27 190

原创 深入理解JAVA虚拟机读书笔记(1)

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。        下面介绍下内存中各个数据区:    PC寄存器/程序计数器(线程私有):        程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器    JAVA虚拟机栈(线程私有):        生命周期与线程相同,即创建线程的同时创建的,用于存放栈帧。栈帧是一个方法在执行...

2018-03-20 15:11:09 368

原创 Web Service之CXF(四)

 CXF是在xfire的基础上实现的,所以我们学习它会比较简单点。如果需要在现有的java程序(包括web应用)中增加webservice支持,应该使用CXF。如果希望以一种一致的方式实现webservice,特别是有跨语言的需求时,应该使用Axis2。下面我们看看实例。  一:首先还是有关包的问题,创建一个Maven项目,在pom.xml中加入依赖包,根据Apache CXF说明(http://...

2018-03-20 11:37:55 204

原创 Web Service之XFire(三)

首先是使用WSDL协议实现:这里使用XFire,XFire一个免费、开源的SOAP框架,它构建了POJO和SOA之间的桥梁,主要特性就是支持将POJO通过非常简单的方式发布成Web服务,其原理是以接口反射机制自动取得远程方法的什么是wsdl?  参考: http://blog.csdn.net/sunchaohuang/archive/2008/10/14/3076375.aspx下面开始介绍如何...

2018-03-20 11:37:38 546

原创 Web Service之Axis(二)

AXIS和AXIS2很类似,只是一些文件名和配置不一样,在客户端调用基本一样。WebService一共有四种,在抉择上: 1、如果应用程序需要多语言的支持,Axis2 应当是首选了; 2、如果应用程序是遵循 Spring 哲学路线的话,Apache CXF 是一种更好的选择,特别对嵌入式的 Web    Services 来说; 3、如果应用程序没有新的特性需要的话,就仍是用原来项目所用的框架,比...

2018-03-20 11:37:27 315

原创 Web Service之Axis2(一)

 注:目前LZ写的WerService都是比较简单的原理和使用,以后等LZ有能力了,就会写些深入的内容。  Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。  是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。      ...

2018-03-20 11:37:14 240

原创 RabbitMQ(五)

 之前将的创建方法和调用方法都是在本地服务上的,而实际情况肯定是在不同服务器上的,这种模式通常被称为远程过程调用或者RPC。  远程方法调用的注意事项:     RPC在软件开发中非常常见,也经常被批评。当一个程序员对代码不熟悉的时候,跟踪RPC的性能问题是出在本地还是远程服务器就非常麻烦,对于RPC的使用,有几点需要特别说明:使用远程调用时的本地函数最好独立出来保证代码组件之间的依赖关系清晰明了...

2018-03-20 11:37:04 164

原创 RabbitMQ(四)

准备:  这节主要讲解Rabbit的发布/订阅。前面我们所讲的是生产者将消息直接放到队列,然后消费者再从队列中获取消息。但实际上,RabbitMQ中消息传递模型的核心思想是:生产者不直接发送消息到队列。实际的运行环境中,生产者是不知道消息会发送到那个队列上,它只会将消息发送到一个交换器,交换器也像一个生产线,一边接收生产者发来的消息,另外一边则根据交换规则,将消息放到队列中。交换器必须知道它所接收...

2018-03-19 10:38:12 176

原创 RabbitMQ(三)

 这节我们主要讲RabbitMQ的分发,由生产者发布一个任务,多个接受者去获取任务来进行加工处理。下面介绍任务分发    一个队列的优点就是很容易处理并行化的工作能力,但是如果我们积累了大量的工作,我们就需要更多的工作者来处理,这里就要采用分布机制了。  我们创建一个新的生产者NewTaskpackage com.mq;import java.io.IOException;import ja...

2018-03-19 10:38:04 142

原创 RabbitMQ(二)

 在学习RabbitMQ之前,我们先简单了解几个概念。  RabbitMQ是什么:    RabbitMQ 是一个消息代理。主要的原理就是通过接受和转发消息。      RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,消息中间件主要用于组件之间的解耦。服务器端用Erlang语言编写,    支持多种客户端,如:Python、Ruby、.NET、Java、C、PHP、Actio...

2018-03-19 10:37:45 227

原创 RabbitMQ(一)

前言:RabbitMQ系列LZ是参照http://www.cnblogs.com/LipeiNet/p/5977028.html来学习的,这系列是记录LZ的学习笔记,方便LZ以后回过来复习复习。因为LZ对RabbitMQ来说,还是小白级别,所以会介绍的比较繁琐,如果有基础的,建议直接阅读LZ参照的博客。目前LZ写的RabbitMQ都是比较简单的原理和使用,以后等LZ有能力了,就会写些深入的内容。 ...

2018-03-19 10:37:37 161

原创 设计模式:总结

 首先这里先讲下复合模式的定义,复合模式结合两个或以上的模式,组成一个解决方案,解决一再发生的一般性问题。具体场景和例子这里就不介绍了。  好了,现在让我们看下什么是模式。    模式:是在某情境下,针对某问题的某种解决方案。           情境就是应用某个模式的情况下,这应该是会不断出现的情况。           问题就是你想在某情境下达到的目标,但也可以是某情境下的约束        ...

2018-03-19 10:37:24 145

原创 设计模式:代理模式

 代理模式:为另一个对象提供一个替身或占位符以访问这个对象。  在我们学习代理模式之前,我们先了解下代理模式中的三个角色。             抽象角色:声明真实对象和代理对象的共同接口。     代理角色:代理对象角色内部含有真实对象的引用,从而可以操作真实对象。 同时代理对象提供与真实对象相同的接口,以便任何时刻都能替代真实对象。并且代理对象可以在执行真实对象操作时,附加自己的操作。   ...

2018-03-19 10:37:15 181

原创 设计模式:状态模式

 状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。  策略模式和状态模式时双胞胎,策略模式时围绕可以互换的算法来创建成功业务的。状态模式时通过改变对象内部的状态来帮助对象控制自己的行为。  下面我们看看状态模式的场景    场景1:有一个扭糖果机器,在投入1元硬币后,扭动曲柄,然后机器掉出一颗糖果。  先来看看场景,既然是状态模式,顾名思义,就是根据状态来划分,在这个过...

2018-03-19 10:37:04 152

原创 设计模式:组合模式

 组合模式:允许你讲对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。  在上一节我们讲述了迭代器模式,这节我们讲述的是组合模式,通常组合模式和迭代器模式共用才会达到比较好的效果,接下来我们还是拿上一节讲述的场景,在上个场景中,如果晚餐店的菜单中有甜点这个子餐单,旗下有自己的子菜单项,那么迭代器模式的作用就不怎么明显了,融合后的菜单就是树形结构的样子...

2018-03-19 10:36:54 175

原创 设计模式:迭代器模式

迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示。把游走的任务放在迭代器上,而不是聚合上,这样就简化了聚合的接口,也让责任各得其所。  场景:有一家早餐店和一家晚餐店合并成一家餐厅,现对两个餐厅的菜单进行合并,两家菜单都一样,有name,decription,price,vegetarian属性,而早餐店的菜单是存放在List集合中,晚餐店的菜单存放在数组中,并且对...

2018-03-19 10:36:43 157

原创 设计模式:模板方法

模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。  场景,对于咖啡来说,我们需要把水煮沸,然后用沸水冲泡咖啡,再把咖啡倒入杯子中,最后加入糖和牛奶,对于茶而言,也是先把水煮沸,用沸水去浸泡茶叶,在把茶倒入杯子中,最后加上柠檬。我们可以看这两种方法其实都采用了相同算法,1:把水煮沸 2:用沸水泡咖啡或茶 ...

2018-03-19 10:36:30 171

原创 设计模式:外观模式

 外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。  场景:有一个家庭影院,里面有爆米花机,投影,DVD机,音响等,然后等我们要开始享观赏电影的时候,我们不得不执行打开爆米花机,开始爆米,关闭爆米花机,关闭灯,放在投影....等等一系列操作,然后观赏完电影,还有在关闭这些东西,这多累人啊。这时候,我们就可以利用外观模式,提供一个合理的接口的外...

2018-03-16 17:24:28 191

原创 设计模式:适配器模式

 适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不见人的类可以合作无间。  在生活中,一个二插转换器就是一个适配器,本来不能将二插的插头插入三插插口,利用了这个转换器就可以实现,这个二插转换器在中间起到了一端连接插座,一端连接插头的作用。  场景:之前我们看过鸭子Duck类,现在我们有个火鸡,让我们通过适配器把它伪装成鸭子。  首先创建鸭子和火鸡接口//鸭子接口publ...

2018-03-16 17:24:02 206

原创 设计模式:命令模式

 命令模式:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。  下面我们利用一个场景来进行理解理解  场景:有一个遥控器,可以控制电灯、音响的开关,遥控器发出一个打开或关闭电灯或音响的请求,这个请求被我们封装成了命令对象。然后将命令对象传给接受者(即电灯或音响),接受者就可以执行命令了。   下面我们就来看看代码的实现。首先我们先创建几个装置类对...

2018-03-16 17:23:39 154

空空如也

空空如也

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

TA关注的人

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