自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

没头脑遇到不高兴

好好学习,天天向上!

  • 博客(68)
  • 资源 (4)
  • 论坛 (3)

原创 JVM垃圾收集器GC调优

本节将会介绍一下GC调优的目标,GC调优的准则,GC调优按照什么步骤进行,以及常用的Parallel GC、CMS GC、G1 GC的调优准则及调优案例。目录GC调优概述GC调优的目标:GC调优准则GC调优步骤Parallel收集器GC调优CMS收集器GC调优G1收集器GC调优GC调优概述对JVM垃圾收集器进行调优之前,一定要先了解JVM内存结构、各个垃圾...

2019-11-15 00:13:43 224

原创 GC日志可视化分析工具GCeasy和GCViewer

上节介绍了GC日志的打印及含义,但是GC日志看起来比较麻烦,本节将会介绍一下GC日志可视化分析工具GCeasy和GCviewer。通过GC日志可视化分析工具,我们可以很方便的看到JVM各个分代的内存使用情况、垃圾回收次数、垃圾回收的原因、垃圾回收占用的时间、吞吐量等,这些指标在我们进行JVM调优的时候是很有用的。GCeasy介绍官网地址:https://gceasy.io/,GCeasy是...

2019-10-30 17:59:44 6624 6

原创 GC日志介绍

本节将会介绍一下JVM常用的GC日志相关的参数,然后会对各个收集器的GC日志的各个部分做个详细的介绍。JVM的GC日志参数在我的前面的博客《JVM常用参数选项介绍》中,已经介绍了很多的GC日志相关的JVM参数,我们这里就用了下面几个参数,设置JVM参数的方式里面也有介绍,如果想了解更多可以看下那篇博客。-XX:+PrintGCDetails在发生垃圾回收时打印内存回收详细的日志,并在...

2019-10-30 16:34:13 367

原创 jvisualvm配合Visual GC插件监控Java应用程序

本节将会介绍一下jvisualvm的特性及作用、各个功能是如何使用的、最后会介绍jvisualvm的插件Visual GC的安装及使用。目录jvisualvm介绍jvisualvm使用介绍Visual GC插件安装及使用jvisualvm介绍VisualVM(All-in-One Java Troubleshooting Tool)是到目前为止随JDK发布的功能最强大的运行...

2019-10-16 11:22:35 531

原创 jstack配合top命令分析CPU飙高、程序死锁问题

jstack:Java堆栈跟踪工具jstack(Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者javacore文件)。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的常见原因。线程出现停顿...

2019-09-25 14:03:56 217

原创 使用jmap和MAT进行堆内存溢出分析

jmap:Java内存映像工具jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为heapdump或dump文件)。另外,还有几种方式获取dump文件:使用JVM参数选项-XX:+HeapDumpOnOutOfMemoryError参数,可以让虚拟机在OOM异常出现之后自动生成dump文件,通过-XX:HeapDumpPath=path 设置dump文件路径(有时...

2019-09-19 16:50:27 570

原创 JDK常用命令jps、jinfo、jstat的使用介绍

概述JDK的bin目录下提供了很多命令工具,比如java.exe,javap.exe,javac.exe。。。。。。这些命令由jdk/lib/tools.jar类库中提供的,是对tools.jar中的类的封装。我们主要介绍一下JVM中处理运行日志、异常堆栈、GC日志、线程快照(threaddump / javacore文件)、堆转储快照(heapdump/hprof文件)等信息的相关常用命令(...

2019-09-16 23:29:21 201

原创 JVM常用参数选项介绍

目录JVM参数选项类型介绍标准参数选项-X参数选项-XX参数选项JVM参数选项如何设置打印设置的XX选项及值堆、栈、方法区等内存大小设置OutofMemory相关的选项垃圾收集器相关选项GC日志相关选项其他参数通过Java代码获取JVM参数JVM参数选项类型介绍关于JDK8的选项参数可以参考官网:https://docs.oracle.co...

2019-09-13 22:58:50 243

原创 内存分配与回收策略及MinorGC、MajorGC、FullGC介绍

本节将会介绍一下:对象的内存分配与回收策略;对象何时进入新生代、老年代;MinorGC、MajorGC、FullGC的定义区别和触发条件;还有通过图示展示了GC的过程。目录对象内存分配与回收策略对象何时进入新生代、老年代三种GC介绍MinorGCMajor GC/Full GC:图示GC过程对象内存分配与回收策略对象的内存分配,往大方向讲,就是在堆上分配〔但也可...

2019-09-10 13:56:26 820

原创 常用垃圾收集器介绍

本节将会介绍一下HotSpot虚拟机中的常用垃圾收集器:Serial,ParNew,Parallel Scavenge,Serial Old,Parallel Old,CMS,G1,会对每个垃圾收集器的概念和常用参数做下介绍。目录概述Serial收集器ParNew收集器Parallel Scavenge收集器Serial Old收集器Parallel Old收集器...

2019-09-07 17:23:30 353

原创 判断对象是否可回收、垃圾回收算法

本节将会介绍下判断对象是否都能回收的两种方式:引用计数法、可达性分析,另外会介绍一下常用的垃圾回收算法:标记清除算法,复制算法,标记整理算法,分代回收算法。目录对象是否可回收引用计数算法可达性分析算法对象从生存到死亡回收方法区垃圾回收算法标记-清除算法复制算法标记-整理算法分代收集算法对象是否可回收我们谈论的垃圾收集(Garbage Collec...

2019-08-29 22:00:00 1518

原创 Java对象的创建、内存布局及访问定位

对象的创建虚拟机遇到new时先检查此指令的参数是否能在常量池中找到类的符号引用,并检查符号引用代表的类是否被加载、解析、初始化,若没有则先进行类加载。如果没有加载,需要先进行类加载。对象内存分配:类加载检查通过后,虚拟机为新生对象分配内存,对象所需内存大小在类加载完成后便可完全确定。分配内存的任务等同于从堆中分出一块确定大小的内存。根据Java堆是否规整,分配内存的方式分为如下两种:指...

2019-08-27 23:02:26 143

原创 深入理解Java虚拟机栈的栈帧

本节将会介绍一下Java虚拟机栈中的栈帧,会对栈帧的组成部分(局部变量表、操作数栈、动态链接、方法出口)分别进行介绍,最后还会通过javap命令反解析编译后的.class文件,进行分析方法执行时的局部变量表、操作数栈等。目录Java虚拟机栈概述局部变量表操作数栈动态连接方法的返回地址结合javap命令理解栈帧Java虚拟机栈概述Java虚拟机栈(Java Vir...

2019-08-25 00:05:48 2746 2

原创 JVM字节码指令集大全及其介绍

本节将会着重介绍一下JVM中的指令集、Java是如何跨平台的、JVM指令集参考手册等内容。目录Java是怎么跨平台的平台无关的基石JVM字节码指令介绍字节码与数据类型加载和存储指令算术指令类型转换指令对象创建与访问指令操作数栈管理指令控制转移指令方法调用和返回指令异常处理指令同步指令JVM指令集大全Java是怎么跨平台的我们上计算...

2019-08-22 23:39:48 2291 4

原创 设计模式之策略模式

策略模式概述策略模式(Strategy Pattern)定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。该模式中一个类的行为或其算法可以在运行时更改,属于行为型模式。比如在超市进行收银时,有时候会有活动例如:全部打八折、满100减10块,满300打九折。。。。。。在收银的时候收银员选择相应的结算方式进行计算最终结算金额,如果用if ...

2019-08-21 21:17:52 144

原创 JVM内存结构概述

本节将会介绍一下JVM的内存结构,JVM运行时数据区的各个组成部分:堆,方法区,程序计数器,Java虚拟机栈,本地方法栈,还会对Java堆的分代划分做个简单的介绍。目录前言JVM是什么JVM内存结构概览运行时数据区程序计数器Java虚拟机栈本地方法栈方法区运行时常量池Java堆直接内存前言JVM是Java中比较难理解和掌握的一部分,也是面试...

2019-08-20 23:32:58 1157

原创 死磕JDK1.8动态代理原理及源码分析

上一节《设计模式之代理模式》中我们已经对设计模式中的代理模式做了一个简单的介绍,这一节将会对Java的动态的代理原理、源码进行深入的分析(注意:这里分析的是JDK1.8中的动态代理的源码)。篇幅有点长,花了好几天的时间才写完,感觉身体被掏空。。。。。。一、概述上节介绍过,Java的动态代理是在运行时动态产生的,其底层是通过反射实现的。Java的动态代理要求目标类必须实现接口,否则无法被代理...

2019-08-13 21:57:20 247

转载 Java四种引用类型: 强引用、弱引用、软引用、虚引用

1、强引用(StrongReference)强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下:Object o=new Object(); // 强引用当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。如果不使用时,要通过如下方式来弱化引用,如下:...

2019-08-12 17:59:23 132

原创 设计模式之代理模式

代理模式概述代理模式(Proxy Pattern)属于结构型模式,为其他对象提供一种代理以控制对这个对象的访问。我们生活中也有很多事情符合代理的,比如:媒婆给小伙子、小姑娘介绍对象;我们通过火车票代售点购买火车票;租房找链家的中介;明星经纪人。。。。。。这里以自己租房找中介为例,自己属于被代理人,中介属于代理人,中介帮助我们找租房信息,我们通过中介找的信息挑选、租房子,最后我们付给中介一定...

2019-08-11 00:03:47 63

原创 设计模式之原型模式

原型模式概述原型模式(Prototype Pattern)属于创建型模式,主要用于创建重复的对象,我们通常创建重复对象的时候都是通过set方法一个一个copy属性值的,这样如果类中属性特别多的话非常不好用,而且效率也不高。Person p1=new Person(20,"张三","男"...);Person p2=new Person();p2.setAge(p1.getAge())...

2019-08-07 18:18:16 370

原创 Java的clone与深拷贝、浅拷贝

Java创建对象的四种方式java创建对象的方式有如下四种:new的方式 Object o=new Object(); 使用clone()方法 使用反射的方式 Hello o=(Hello)Class.forName("com.test.Hello").getConstructor().newInstance(); 要实现实现Serializable接口,将一个对象序列化到磁盘上,而...

2019-08-07 13:48:06 432

原创 设计模式之简单工厂、工厂方法、抽象工厂

目录工厂模式介绍好处常见的应用简单工厂(Simple Factory)适用场景角色分配:应用案例:优缺点:简单工厂实现:工厂方法(Factory Method)适用场景角色分配:应用案例:优缺点:工厂方法实现:抽象工厂(Abstract Factory)适用场景角色分配应用案例:优缺点:抽象工厂实现抽象工厂终...

2019-07-31 22:51:11 152

原创 SpringBoot配置CORS解决跨域时的坑

最近开发过程中遇到了一个问题,之前没有太注意,这里记录一下。我用的SpringBoot版本是2.0.5,在跟前端联调的时候,有个请求因为用户权限不够就被拦截器拦截了,拦截器拦截之后打印日志然后response了一个错误返回了,但是前端Vue.js一直报如下跨域的错误,但是我是配置了跨域的。has been blocked by CORS policy: No 'Access-Control-A...

2019-07-26 16:58:38 8880 10

原创 设计模式之单例

本节会介绍一下单例模式的定义,有哪几种创建方式,并会分别给出例子。单例模式是什么单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,这种类型的设计模式属于创建型模式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。有以下三点需要注意:1、单例类只...

2019-07-05 13:57:04 70

原创 UML类图详解

UML类图是什么类图在UML的9个图中占据了一个相当重要的地位。James Rumbaugh对类的定义是:类是具有相似结构、行为和关系的一组对象的描述符。类是面向对象系统中最重要的构造块。类图显示了一组类、接口、协作以及他们之间的关系。在UML中问题域最终要被逐步转化,通过类来建模,通过编程语言构建这些类从而实现系统。类加上他们之间的关系就构成了类图,类图中还可以包含接口、包等元素。什么要...

2019-06-28 12:59:47 321

原创 设计模式概述

目录设计模式简介什么是 GOF?设计模式有什么用?设计模式分类创建型模式结构型模式行为型模式设计模式原则本节将会介绍一下设计模式的分类及各个类别包含哪些设计模式,另外会介绍一下设计模式的六大原则。设计模式简介设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一...

2019-06-26 21:32:08 109

原创 (16)RabbitMQ与Spring、SpringBoot整合时的坑及注意点

一:消费者报错消费者出现ERROR日志:Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - unknown delivery tag 1, class-id=60, method-id=80)...

2019-05-06 13:59:37 2065 1

原创 (15)RabbitMQ与SpringBoot的整合使用

本节将会介绍一下RabbitMQ与SpringBoot的整合使用,而且会实现设置confirm和return回调确认,并且会对 "Only one ConfirmCallback is supported by each RabbitTemplate"和"Only one ReturnCallback is supported by each RabbitTemplate"出现的原因做出说明并给出...

2019-04-30 22:16:37 1586

原创 (1)Windows和Linux下Git安装配置

概述开发的小伙伴们一定都用过版本控制工具,比较常用的就是Svn和Git,不过目前Svn目前用的相对没有那么多了。不少人都会说Svn是集中式的,Git是分布式的,其实也没有必要太过于去纠结这个概念问题。下面是从网上找的关于Svn和Git的两张图:下面做个简单的对比:SVN:SVN本地只有本地代码库,其历史库存在于中央仓库,每次对比与提交代码都必须连接到中央仓库才能进行,比如你想...

2019-04-29 14:00:37 202

原创 (14)RabbitMQ与Spring的整合使用

本节将会介绍一下RabbitMQ与Spring的整合使用:spring-amqp和spring-rabbit,RabbitTemplate、MessageListener的使用介绍,如何发送消息,如何接收消息,如何设置消费者ack确认,如何添加confirm和return回调。。。。。。概述从事Java开发的小伙伴一般都离不了Spring框架吧,本节就介绍一下RabbitMQ与Spring...

2019-04-25 13:11:40 459 2

原创 (13)RabbitMQ实现延迟队列的两种方式

本节将会给大家介绍一下什么是延迟队列,延迟队列的使用场景,RabbitMQ实现延迟队列的两种方式:TTL+DLX(即消息有效期+死信交换机/队列),rabbitmq-delayed-message-exchange插件。什么是延迟队列/消息延迟队列是存储延迟消息的队列,延迟消息就是生产者发送了一条消息,但是不希望该消息不要被立即消费,而是设置一个延迟时间,等过了这个时间再消费消息。延迟...

2019-04-22 18:28:26 1492 1

原创 (12)RabbitMQ的TTL(消息有效期)和DLX(死信交换机/队列)

本节继续介绍RabbitMQ的高级特性:TTL(Time-To-Live消息有效期)和DLX(Dead-Letter-Exchange死信交换机、死信队列)RabbitMQ的TTL1、TTL概述RabbitMQ的TTL全称为Time-To-Live,表示的是消息的有效期。消息如果在队列中一直没有被消费并且存在时间超过了TTL,消息就会变成了"死信" (Dead Message),后续无...

2019-04-13 17:34:23 2219 2

原创 (11)RabbitMQ的mandatory、immediate和ReturnListener

上一节介绍了RabbitMQ的生产者确认机制,这节继续介绍RabbitMQ的生产者确认相关的高级特性:mandatory、immediate、ReturnListener。概述上节介绍了RabbitMQ的生产者确认机制,里面特别强调过:当消息发送到交换机后,如果该交换机没有绑定队列或者交换机上没有与发送消息的routing key相匹配的队列,那么消息也会丢失,并且生产者都会收到Rabbi...

2019-03-31 18:18:52 312

原创 (10)RabbitMQ生产者确认:事务与confirm机制

上节介绍了RabbitMQ的消息持久化、Ack和重回队列,本节会继续介绍RabbitMQ的高级特性,将会介绍一下RabbitMQ的生产者确认的两种模式:事务与confirm机制。概述我们上一节介绍了RabbitMQ的事务机制,在RabbitMQ broker因为某些原因崩溃、重启时,可以确保消息不会丢失。但是我们发送完消息之后,并不知道消息有没有真的发到了RabbitMQ服务器上并存储完毕...

2019-03-31 10:52:17 1292

原创 (9)RabbitMQ消息持久化、消费者Ack确认与重回队列

前面几节讲了RabbitMQ的入门以及几种常用交换机的使用方法,从本节开始将会介绍RabbitMQ的高级特性,这节就先介绍一下RabbitMQ的消息持久化、消费者Ack确认、消费者Nack拒绝与requeue重回队列。RabbitMQ消息持久化RabbitMQ持久化介绍之前的博客代码例子中发的消息都是非持久化的,就是只会存储到内存中,如果RabbitMQ服务器重启、关闭、意外挂掉的话,...

2019-03-23 21:48:46 2592

原创 (8)RabbitMQ之topic(主题)交换机

本节将会介绍RabbitMQ中的topic(主题)交换机,通过在上一篇博客的基础上,利用topic形式的exchange对程序进行改进,将会变得更加灵活。Topic exchange(主题交换机)发送到topic交换机的消息不能具有任意的 routing_key —— 它必须是由点分隔的单词列表。单词可以是任何内容,但通常它们指定与消息相关的一些功能。一些有效的路由键示例:“ stock...

2019-03-19 12:07:48 829 9

原创 (7)RabbitMQ之direct交换机——routing(路由)

本机将会介绍一个新的exchange:direct交换机,通过程序示例演示其消息routing(路由)的功能。概述本机我们将通过一个发送日志的程序来演示direct类型的exchange的routing功能。生产者发送日志,级别分别为info,warn,error等,消费者只会接收routing key 跟其队列的binding key完全匹配的消息。相关概念介绍1、Binding...

2019-03-12 20:13:53 370

原创 (6)RabbitMQ之fanout交换机——Publish/Subscribe(发布订阅)

上节我们介绍了RabbitMQ的工作队列,这一节先会对RabbitMQ的几种交换机做个大概的介绍,然后会介绍一下fanout(扇形)类型的exchange,并通过代码示例达到Publish/Subscribe(发布订阅)也就是广播的效果。概述我们之前的例子当中,将exchange的名字设为了空字符串,貌似都是将消息直接发送给了Queue,实际上也是发送给了交换机的,只不过这个exchang...

2019-03-05 23:21:57 591

原创 (5)RabbitMQ之Work Queues(工作队列)

上节中我们介绍了RabbitMQ的入门helloworld程序,本节会在上节的基础之上介绍Work Queues(工作队列):包括工作队列的使用方式、默认的分发方式及如何做到公平转发等。概述根据官网介绍,工作队列(又称:任务队列)背后的主要思想是避免立即执行资源密集型任务,并且必须等待它完成。相反,我们安排任务稍后完成。我们将任务封装为消息并将其发送到队列。在后台运行的工作进程将弹出任务...

2019-03-03 15:40:27 288

原创 (4)RabbitMQ入门Helloworld

本节将会通过一个RabbitMQ的入门helloWord程序,来介绍一下RabbitMQ的java客户端的简单使用、怎么创建连接声明队列、怎么发送消息、怎么接收消息等,这样可以对客户端的使用有个大概的了解,有助于后面的学习。概述前面介绍过RabbitMQ的官方文档非常丰富,当然会有对应的入门教程供大家参考,其地址为 http://www.rabbitmq.com/getstarted.ht...

2019-02-27 23:20:49 397 2

jstl-1.2.jar

jstl-1.2.jar

2014-05-31

计算机网络课后答案

计算机网络第四版课后答案

2013-12-24

dubbo面试题

dubbo常见的面试题,序列化,注册中心,原理,核心配置......

2018-09-27

java面试题合集

本文档是一个java面试题的合集,其中包括java的基础,javaweb部分,java多线程,框架部分(springMvc,Spring,mybatis...),数据库部分,源码解析,算法......

2018-09-27

发布文章没有加积分、持之以恒图标没点亮

发表于 2019-04-10 最后回复 2019-04-10

文章数量及积分都比实际偏少

发表于 2019-02-25 最后回复 2019-03-04

文章数量显示错误和博客排名异常

发表于 2019-02-22 最后回复 2019-02-22

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