7 谜一样的Coder

已隐藏 软件工程师

慢节奏城市的Coder

等级
TA的排名 4w+

JVM(八)——一些工具的总结

前言之前参照一些书籍对JDK自带的一些工具进行了一些总结,但是非常凌乱,这一篇博客同样也是总结这些工具。原博客地址——JDK自带的命令工具JVM参数标准参数标准参数不会随着JDK版本的变化而变化,万年都存在且万年不变。-version-help-server-cp如以上四个即为标准参数-X参数即为非标准参数,会随着JDK的版本变动而变化。-Xint 切换成解释执行的模式-...

2020-01-05 20:11:06

JVM(七)——垃圾收集器的补充说明

前言之前总结过各种垃圾收集器,但是没有针对如何选择垃圾收集器,并没有做一个合适的介绍,这篇博客会在之前博客的基础上,先总结所有垃圾收集器,然后再总结一下垃圾收集器的选择策略,之前博客的链接地址——JVM——垃圾收集器GC Root之前已经总结过一些垃圾回收算法,但是哪些对象能做为GC Root对象之前只是在博客中简单总结了一笔,但是没探讨原因,前两篇博客的总结,其实是顺便将JVM的各个内存模...

2020-01-05 16:37:28

JVM(六)——各个内存划分详细总结

前言前面一篇小结博客,简单总结了JVM最终的划分结果,并根据官网的描述看到了JVM为何如此描述,这一篇博客就在那上面进一步总结一下各个区域的作用和结构。Java虚拟机栈和栈帧上一篇博客中关于方法调用,为何有虚拟机栈,以及虚拟机栈中每一个方法调用的操作是如何完成的,我们附上了这样一张图。但是,一个方法包含什么,或者说这个虚拟机栈中的栈帧包含什么,这个是我们需要进一步深入学习和探索的。这就是...

2020-01-01 22:10:48

JVM(五)——一个小结

前言前面洋洋洒洒写了4篇关于JVM的博客,但总是感觉有些零散,这里专门开一篇博客对前面的内容进行总结,主要依旧从JVM入门层面进行一个总结。依旧以JDK8为准。从官网入手:JVM的官网说明(JDK8)什么是JVM官网中我们能看到这样一张图,这个图详细标明了JDK是什么,JRE是什么,JVM又是什么。JDK is a super set,JDK是一个超级的集合,可以理解为JDK中有JRE,JR...

2019-12-28 21:03:48

spring boot(九)——定时任务

前言在实际中,我们往往需要一些定时任务,比如在每日的晚些时候有些跑批的账务操作,月末报表生成等。这就需要用到定时任务1、准备一个线程池准备一个线程池并交给spring托管@Configurationpublic class ScheduleConfig { @Bean("taskExecutor") public Executor taskExecutor()...

2019-12-28 15:32:40

spring boot(八)——数据验证

前言在默认情况下springboot会引入Hibernate Validator机制来支持JSR-303验证规范,另外一个方面我们偶尔也会自定义验证规则。1、加上验证这个操作比较简单,只需要在目标对象上加入注解即可,如下所示:package com.learn.springauthserver.dto;import lombok.Data;import org.hibern...

2019-12-28 12:59:32

spring boot(七)——拦截器的使用

前言拦截器在工作中依旧还是很常见的,token的认证,权限的认证,部分请求的拦截,都会用到拦截器。前些天公司中需要挂一个拦截的功能上去,突然一下忘了怎么操作的了,各种查资料百度才搞定,这里总结一下。大体上就分为两步,第一步构建一个拦截器,第二步交给springboot进行托管即可。1、构建一个拦截器往简单点说就是构建一个类实现HandlerInteceptor接口。但是其中拦截器实际的...

2019-12-28 12:01:40

JVM(四)——JDK的性能监测工具

前言上一篇博客总结了一下各种垃圾收集器,这一篇博客总结一下JDK中的一些性能监测工具,为后面的调优实际操作做准备jps——查看Java进程这个命令的作用类似于Linux系统下的ps,不同的是jps只是列出java的进程,而且通过jps可以非常方便的查看java的启动类、传入参数和虚拟机参数等信息准备一个简单的代码//-XX:+UseSerialGC -XX:+PrintGCD...

2019-12-08 23:14:34

JVM(三)——垃圾收集器简介

前言上一篇博客的最后部分总结了垃圾收集的几种策略,其实我们有必要回头思考几个问题,为什么需要垃圾收集器,垃圾收集器如何收集“垃圾”对象?针对第一个问题其实比较好回答,因为Java本身不需要程序员显示的回收没有使用的对象,这也是Java风靡全世界的原因。针对第二个问题,我们可以从HotSpot实现垃圾回收算法的机制中得到答案。最后我们会简单总结一下目前JVM中常见的几种垃圾收集器。HotSp...

2019-11-30 14:42:50

JVM(二)——对象与垃圾回收策略

前言上一篇博客只是对内存区域做了一个简单的描述,如果想要更深入的理解,其实还远远不够,只需要明确堆与栈的区别即可。这一篇博客就从对象出发,总结对象在堆上分配的几个原则,同时总结一下JVM的垃圾回收策略,对于具体的垃圾回收器在后续中进行总结。对象在堆上的表现通过总结对象在堆上的表现,正好可以复习一下堆的各个组成区间,并引入一些垃圾回收算法。访问对象是常有的事情,即使是最简单的对象访问也会...

2019-11-25 21:10:56

JVM(一)——运行时数据区

前言什么是JVM,这个问题似乎到现在都没有一个确定的概念,问了很多工作多年的老司机,几乎每一个人有每一个人的理解,有的说是操作字节码的玩意,有的说是位于程序和操作系统之前的一层,有的说如果需要调优就要用到这玩意。但是从我个人来说,工作中似乎很少直接和它打交道,但是我们写的每一行代码,如果想要找到优化空间,似乎都避不开这个玩意,如果想对Java有一个更深刻的理解,JVM开始依旧是无法回避的一个坎...

2019-11-19 19:40:45

Spring boot 使用idea热部署功能

前言springboot在工作中用了N多,由于公司TC机性能原因,一直没有开启热部署,前几天自己想尝试热部署的时候,突然忘了怎么弄了,想着还是得来个总结写下这个热部署的操作。1、引入devtools先新建一个springboot项目,然后引入devtools的依赖包,这个就不说了,idea的常规操作,异常简单,附上依赖包如下: <!-- 引入热部署jar包 -...

2019-11-21 17:22:59

MySql(四)——MVCC以及一些配置参数简介

前言前三篇博客从索引到事务控制均作出了一些总结,这一篇是mysql系列的最后一篇,用于总结MVCC机制如何保证数据一致性作出的工作。一个问题直接看实例吧,上一篇博客的结尾,提出了一个问题,动图如下:事务A在执行update语句的事务的时候,是会给指定的数据加上一个X锁的,意味着其他事务无法再获取这个数据的任何锁,无法读取数据,但是我们在另一个事务B中却能正常的查询数据。这个似乎与X...

2019-11-17 12:00:08

MySql(三)——事务和锁

前言前两篇已经针对索引和常见的查询执行步骤做了一个简单的总结,这一篇博客开始总结锁和事务,这个是MySQL最重要的部分。主要针对InnoDB存储引擎进行详细的实例操作。事务事务的概念提到事务,都会想到经典的转账实例,这里依旧还是以转账实例来说明事务的ACID属性,其实有些属性有时候解释的异常官方,理解起来似乎并没有太深刻,这次尽量用通俗的语句来解释ACID。-- id为3的用...

2019-11-15 20:27:40

MySql(二)——查询执行步骤

前言上一篇博客直接介绍了MySQL中的索引,这篇博客进一步总结MySQL中的查询机制。MySQL体系结构简介MySQL整体逻辑结构图如下:(这张图片来自:https://www.cnblogs.com/zhoubaojian/articles/7866292.html)基本模块如下:(1) Connectors指的是不同语言中与SQL的交互(2)Management ...

2019-11-10 17:02:39

MySql(一)——索引

前言这里不会总结SQL的语法,不会总结SQL的实例,只是总结MySQL在实际工作中的性能优化部分。提到MySQL查询优化部分,开门首先要面对的就是索引的知识和概念。之前零零散散看了一些,但是都没有总结成笔记,这里就开始对MySQL更高级的应用进行梳理,就从索引开始。索引是什么如果说每次提到索引,我们只能说出这个就是书籍中的目录,这个理解似乎依旧很浮浅,这种只是说对索引的作用很了解,但是...

2019-11-10 13:48:38

Netty(三)——Reactor模式(单Reactor)

前言上一篇Netty的博客,说明了BIO与NIO,这两者最大的差别提现在多路IO复用上。什么是reactor模式reactor模式是一种典型的事件驱动模式,同时在之前的BIO实例,详细解读了BIO的阻塞问题。如果想要通过文字理解Reactor模式,确实很困难。如果通过代码在理解了NIO的基础上,再来看Reactor模式就相对容易一些。所以在理解Reactor模式之前最好需要理解NIO的...

2019-10-20 14:15:14

RabbitMQ(七)——spring boot集成延时队列

前言上一篇博客已经总结了消费延时队列的两种方式,同时也根据实例说明了spring boot 消费消息的两种配置方式。这一篇博客在上一篇博客的基础上总结延时队列(其实就是常说的死信队列,但是不太喜欢这个名字,所以我这里称为延时队列)什么是延时队列简单点理解,就是在一定时长之后,消息不能在该队列中存在了。这个队列就称为延时队列,在实际中常见的订单在指定时间之后失效,背后就有延时队列的影子。...

2019-11-01 20:00:53

RabbitMQ(六)——Spring boot中消费消息的两种方式

前言上一篇博客中,我们只是简单总结了Spring boot中整合RabbitMQ的操作,针对消息消费的两种方式只是简单给了一个实例,这篇博客,我们进一步总结关于Spring boot消息消费的相关功能。其实简单来看,spring boot中有两种方式,第一种是@RabbitListener注解,第二种是实现ChannelAwareMessageListener接口。准备工作上篇博客为了...

2019-10-30 16:09:32

RabbitMQ(五)——Spring boot集成RabbitMQ

前言前面几篇RabbitMQ的模式几乎介绍清楚了RabbitMQ的基础架构,以及消息确认机制,这里打算将RabbitMQ集成到springboot中,便于日后工作查找1、项目搭建在idea中构建一个springboot项目,同时引入web和RabbitMQ模块。2、引入配置application.properties文件中加入如下配置,一部分是连接配置,另一部分是excha...

2019-10-27 15:19:01

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获取
  • 技术圈认证
    技术圈认证
    用户完成年度认证,即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。