自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

请叫我大师兄

看文章记得点个赞哟

原创 IntelliJ IDEA使用教程 (总目录篇)

IntelliJ IDEA使用教程 (总目录篇)

2020-06-15 10:02:13 81548 120

原创 Java 代码 各种不规范示范,希望引以为戒,望看到的大哥们 都能把代码写的规范点,方便你我他。

前言: 总结,开发过程中的各种好习惯,不仅仅是写代码的时候,还有各种其他情况。都可以做的好一点。 一,代码各种规范优化 案例1(你猜) 这段代码暂时有如下三个问题: 1,代码注释不规范:类注释,变量注释,属性注释的格式都是有要求的。 2,//这个注释,还是仅挨着代码比较好 3,...

2019-07-16 23:53:51 1444 7

原创 听说有些老铁,要感谢下大师兄?里边请,聊一聊人生。

老铁,既然都点进来啦,那先别着急着走。 来啊,看茶!!! 少年,我看你骨骼精奇,是万中无一的武学奇才,如果有一天,让你打通任督二脉,那还不飞龙上天哪!!! 正所谓:我不入地狱,谁入地狱,警恶惩奸,维护世界和平这个任务就交给你了,好吗? 这本《如来神掌》是无价之宝。 (看法宝......二维码....

2017-11-09 17:49:40 12068 63

原创 volatile关键字是否真的理解了,就看怎么回答这个问题。

问题: a,b,c三个变量,其中c是volatile的,a,b是普通变量, a = 1, b = 2, c = 3, c写入之后,a,b的值也会被刷入缓存吗,还是c写入之前所有在cpu缓存的数据都会被刷入内存,还是只刷入和c在同一个缓存行的数据? 答: 要按happens bef...

2020-07-08 15:49:04 104 0

原创 G1 GC 全称Garbage-First Garbage Collector 的全面全方位总结
原力计划

关键描述 G1是一种服务器端的垃圾收集器,应用在多处理器和大内存环境中,在实现高吞吐量的同时,尽可能的满足垃圾收集暂停时间的要求,全堆操作(例如全局标记)与应用程序线程并行执行。这样可以防止与堆或活动数据大小成比例的中断。 G1收集器的设计目标是取代CMS收集器,它同CMS相比,在以...

2020-07-02 10:13:41 207 0

原创 concurrent 和 parallel; 并发和并行的区别

在看g1gc文章的时候,把concurrent and parallel phases翻译成并发和并行阶段,感觉这2个词不是一个意思吗?为啥他原始文档要强调这2个词呢。深究一下,果然不是一个意思。 总体概念: 在单CPU系统中,系统调度在某一时刻只能让一个线程运行,虽然这种调用机制有多种形式(大...

2020-06-28 17:16:30 88 0

翻译 G1 GC 调优学习 了解有关如何调整和调整G1 GC以进行评估,分析和性能的信息。

G1 GC是Java HotSpot虚拟机的低暂停,服务器风格的分代垃圾收集器。G1 GC使用并发(concurrent)和并行(parallel)阶段来实现其目标暂停时间并保持良好的吞吐量。当G1 GC确定需要进行垃圾收集时,它将首先收集存活数据最少的区域(垃圾优先处理)。 垃圾收集器(GC)...

2020-06-27 15:37:56 238 0

翻译 G1 GC 全称 Garbage-First Garbage Collector

介绍 Oracle JDK 7.4或更高版本完全支持Garbage-First(G1)垃圾收集器。G1收集器是server-style的垃圾收集器,适用于具有大内存的多处理器计算机。它极有可能满足垃圾回收(GC)暂停时间目标,同时实现高吞吐量。全堆操作(例如全局标记)与应用程序线程并行执行。这样...

2020-06-27 14:39:09 95 0

原创 elastic search 查询2个字段值的差 大于某个值,再带点查询条件的语句

带了个查询条件:字段 a的值等于 xxxx,然后 字段a 的值减去 字段 b字段的值的差,大于10的结果

2020-06-24 17:44:17 294 0

原创 maven 项目pom.xml中获取git 信息--git-commit-id-plugin 插件

使用maven项目+git来管理项目,现在想在发版的时候,知道包实际使用的git记录的版本号。 <plugin> <groupId>pl.project13.maven</groupId> &l...

2020-06-18 15:29:18 207 0

原创 build.gradle 获取 git 版本号 获取当前时间 自定义jar的名字

以前这个gradle都是给Android使用的,万万没想到,Java的其它项目也能使用,甚至能替代maven或者说maven和gradle项目是可以互相转换的。还有就是在使用svn来管理项目的时候,每个svn版本都对应一个数字,但是换了git之后,每个提交记录就不是简单的生成个int数字,还是递增...

2020-06-17 17:09:41 129 0

原创 Java 字符串常量池到底是在PermGen方法区、是在heap堆里面、还是在Metaspace 元空间里面呢?

要是没有实践过别人书本上的理论的话,就还是会说常量池在方法区里面,要是知道方法区已经随jdk升级,被逐步干掉的话,就会看到有的文章说移动到heap堆里面了,还有极少的说移动到Metaspace里面了,产生了分歧。这个时候就需要实践出真知了。 /** * 测试 常量池在分区的位置 * * ...

2020-06-15 17:59:33 255 0

原创 Java 内存分区之什么是 CCS区 Compressed Class Space 类压缩空间

了解到什么是ccs区,一般都是实际执行了jstat -gc 之后,看Java堆的gc相关的几个分区的gc信息,前面的s0,s1,e区,o区,还好猜,研究过分区的,不难猜出来这个分区是啥意思,M区虽然不知道是Metaspace元空间,但是错把这个M区当成Method area 方法区,也说的过去。这...

2020-06-15 15:47:50 167 0

原创 Java 内存分区之 堆外内存 Metaspace 元空间 取永久代PermGen 而代之

在稍微了解Java内存分区的时候,大多数文章都是出自深入理解jvm这本书,上来就是给你分了 程序计数器,Java虚拟机栈,本地方法栈,堆,方法区,还有个直接内存,还说方法区里面有个常量池。在写这本书的时候,jdk还在1.6,但是现在2020年jdk都已经jdk14了,虽然还没普及jdk14,但是估...

2020-06-15 11:50:42 207 0

原创 -xms和-xmx设置完之后,堆的大小就真的是设置的大小吗?

前面看了jdk的几个查看jvm信息的命令,然后只看不动手,不用回头就忘记的干干净净了。还是实际使用一下,然后顺便结合着jvm的内存分区,再深层次的记录一下几个分区的名称、大小、gc器、等等。 首先,查看一个进程,筛选一个进程,就可以使用jps -mvl ,m让他带上方法参数,v带上设置的jvm参...

2020-06-13 17:33:56 231 0

原创 Java 并发之内存模型的重排序的Java代码实例分析

一般在看JMM(Java内存模型)的时候,里面有代码会因为种种原因优化,导致指令重排。也没实际见过。也没法验证这个说法。 说是volatile这个关键词可以1,禁止指令重排,2,内存可见。这都是理论,回头就忘记了。 下面用实际例子,切身体会一下他这个重排序。 这个Java代码例子充分的见识了指...

2020-06-12 12:33:06 128 0

原创 Java 之 jstack的使用:Java栈追踪工具

jstack命令打印指定Java进程、核心文件或远程调试服务器的Java线程的Java 栈跟踪。对于每个Java框架,将打印完整的类名、方法名、字节码索引(BCI)和行号(如果可用)。使用-m选项,jstack命令使用程序计数器(PC)打印所有线程的Java和本机帧。对于每个本机帧,打印距离PC最...

2020-06-11 16:35:38 127 0

原创 Java之jmap的用法:Java 内存映像工具 jmap -heap pid

jmap [option] <pid> 关于 option 的选项,有下面这么几个 1,jmap -dump:[live,] format=b, file=filename pid jmap -F -dump:format=b,file=tomcat.txt 113089 ...

2020-06-11 10:52:36 143 0

原创 Java jvm 之各种参数及表达的意思

内存相关设置 -Xms:初始堆(Heap)大小,默认3670k。当空闲堆内存小于40%时,JVM 就会增大堆内存直到-Xmx 所设置的最大值,可以通过-XX:MinHeapFreeRatio=n 设置其比例。 -Xmx:最大堆(Heap)大小,默认64m。当空闲堆内存大于70%时,JVM 会减少堆...

2020-06-10 17:08:17 122 0

原创 Java之jinfo的用法:Java配置信息查看工具

实时查看和跳转jvm的各项参数。 使用jps -v 可以查看虚拟机启动时,显示指定的参数列表,但是未指定的系统默认的参数就看不到了。 就可以使用jinfo -flag 进行查看。 jinfo [ option ] pid jinfo [ option ] executable ...

2020-06-04 18:32:19 112 0

原创 Java之jstat的用法:Java虚拟机 统计信息查看 工具
原力计划

1, -class 监视类装载、卸载数量,总空间、类装载所耗费时间 2,-compiler 输出jit编译器编译过的方法耗时等信息 3,-printcompilation 输出已经被jit编译的方法 4,-gc 监视Java堆状况,eden,2个s区,old,方法区等容量,gc时间等情况 5,...

2020-06-04 11:24:45 144 0

原创 Java 之 jps的用法:Java虚拟机进程状况工具

一般现场出问题,服务器上不会有JProfile之类的工具给你分析问题,有的只是jdk自带的东西,所以,很有必要学习一下jdl自带的命令行工具。一开始,老看别人使用这个jps,还以为是Linux自带的呢,类似cd ls之类的。后来才发现这个是jdk的东西,搞Java的竟然不知道这个,哎,真水。 J...

2020-05-29 11:39:02 214 0

原创 Java 并发框架中的线程池 thread pool 为啥不是直接创建 maximumPoolSize 个线程之后,再把任务丢到队列中?
原力计划

在开发过程中,合理使用线程池,可以有以下好处。 1,降低资源消耗;提高线程到重发利用率,降低创建和销毁线程的消耗。 2,提高响应速度;任务来了,直接有线程可用可执行,而不是先创建线程,再执行。 3,提高线程的可管理性;线程是稀缺资源,使用线程池可以统一分配调优监控。 在使用Java的线程池...

2020-05-18 17:39:05 158 0

转载 用户态和核心态的区别

1.操作系统需要两种CPU状态: 内核态(Kernel Mode):运行操作系统程序 用户态(User Mode):运行用户程序 2.指令划分: 特权指令:只能由操作系统使用、用户程序不能使用的指令。 举例:启动I/O 内存清零 修改程序状态字 设置时钟 允许/禁止终端 停机 非特权...

2020-05-14 17:17:06 108 0

转载 Java synchronized 原理总结 详细阐述 无锁to偏向锁to轻量级锁to重量级锁的转变过程,不虚此行。

锁的内存语义 synchronized的底层是使用操作系统的mutex lock实现的。 内存可见性:同步快的可见性是由“如果对一个变量执行lock操作,将会清空工作内存中此变量的值,在执行引擎使用这个变量前需要重新执行load或assign操作初始化变量的值”、“对一个变量执行unlock操...

2020-05-14 16:23:25 148 2

转载 Java 内存模型 (JMM)总结

Java内存模型(JMM) 我们常说的JVM内存模式指的是JVM的内存分区;而Java内存模式是一种虚拟机规范。 Java虚拟机规范中定义了Java内存模型(Java Memory Model,JMM),用于屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的...

2020-05-13 15:27:42 156 0

原创 IntelliJ IDEA 中 Git 修改服务器地址的方法

git服务器换地址之后,本地代码不动,改改git的地址,就把服务器由a换到b了 修改项目的服务器地址,之后就和新的git服务器地址关联了。 再更新的时候,需要再次验证一下账号密码,就OK了。 ...

2020-05-09 14:57:26 246 0

原创 Java 多线程 interrupt - 线程的中断

正如中断二字所表达的意义,在线程运行(run方法)中间打断它,在Java中,提供了以下3个有关线程中断的方法 //中断线程(实例方法) public void Thread.interrupt(); //判断线程是否被中断(实例方法) public boolean Thread.isInte...

2020-05-08 18:28:04 90 0

转载 Java中各种锁的详细解读

在没有实际接触和详细了解Java的各种锁之前,可能觉得Java 中的各种锁,会很多很复杂,不是的,看一遍不行,再看一遍,就差不多了,还是比较好理解的。虽然距离实际使用还是有点距离,但是,要跨出第一步,了解之后,再考虑如何使用和高级使用。 这个图画的也很好 1. 乐观锁 VS 悲观锁 乐观...

2020-05-08 16:58:36 188 0

转载 Java 多线程-synchronized用法和实现原理

造成线程安全问题的主要诱因有两点,一是存在共享数据(也称临界资源),二是存在多条线程共同操作共享数据。 当存在多个线程操作共享数据时,需要保证同一时刻有且只有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再进行,这种方式有个高尚的名称叫互斥锁,即能达到互斥访问目的的锁,也就是说当一个共...

2020-05-07 15:52:14 118 0

转载 ls 按时间排序

在linux系统中,使用ls命令按时间排序文件,其实很简单,如下: ls-altr 即可按时间排序当前目录下的文件。 附,ls命令的参数中文详解:-a 列出目录下的所有文件,包括以 . 开头的隐含文件。 -b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出。 -c 输...

2020-05-07 11:23:42 189 0

原创 xxxx index created, but the operation timed out while waiting for enough shards to be started.

shard未分配问题的解决 es在head页面,看整个es集群的状态的时候,有个索引的状态是红色的,一直不见好转,shard未分配问题的解决 看es日志有如下一句话 xxxx 索引 index created, but the operation timed out while waitin...

2020-04-26 14:52:35 104 0

原创 Java 8 Lambod 表达式的代码实际操作例子

本文主要是把jdk8里面的lambda常用的例子摆一摆,忘记了看一看就知道怎么使用,方便回忆。 0,使用的循环体字段的代码,也就是操作对象,数据结构之类的,这里是简单的 list 数据。 private final List<BigDecimal> prices = Ar...

2020-04-22 14:10:46 228 0

原创 Java 线程池 的几个状态 详解

Java提供的几个线程池,最终都是使用ThreadPoolExecutor 这个类来实现的。 先看点基础的。 暂时不一上来就看怎么创建线程池,以及各个参数的作用等,先基本的走起。 private final AtomicInteger ctl = new AtomicInteger...

2020-04-14 17:58:55 158 0

原创 Java 线程池之 四个拒绝策略

jdk中关于线程池的拒绝策略的接口的实现,暂时就四个,如下: AbortPolicy -- 当任务添加到线程池中被拒绝时,它将抛出 RejectedExecutionException 异常。 CallerRunsPolicy -- 当任务添加到线程池中被拒绝时,会在线程池当前正在运行...

2020-04-01 16:33:25 214 0

原创 Java IPv6 转 long 数组的实现

IP6是128位的长度,一个long是64位的长度,2个long正好够一个IP6的长度位数。 代码如下: /** * 将 IPv6 地址转为 long 数组,只支持冒分十六进制表示法 */ public static long[] ip2Longs(Str...

2020-03-26 10:07:56 131 0

原创 flume报java.io.IOException: Not a data file的ERROR

opening file 的文件明明是一个数据文件,非要说不是数据文件。 结果在package org.apache.avro.file中的 DataFileStream 类的initialize(InputStreamin)方法中发现了异常的出处,代码如下: void initialize...

2020-03-24 10:54:29 178 0

转载 Linux top 命令

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供...

2020-03-23 11:20:03 138 0

转载 通俗易懂的Kafka入门

众所周知,消息队列的产品有好几种,这里我选择学习Kafka的原因,无他,公司在用。 我司使用的是Kafka和自研的消息队列(Kafka和RocketMQ)改版,于是我就想学学Kafka这款消息队列啦。本篇文章对Kafka入门,希望对大家有所帮助。 这篇文章花了我很长时间画图,目的是希望...

2020-01-15 16:47:34 316 0

转载 什么是ZooKeeper?

上次写了一篇什么是消息队列?以后,本来想入门一下Kafka的(装一下环境、看看Kafka一些概念啥的)。后来发现Kafka用到了ZooKeeper,而我又对ZooKeeper不了解,所以想先来学学什么是ZooKeeper,再去看看什么是Kafka。 ZooKeeper相信大家已经听过这个词了,不...

2020-01-15 16:34:45 303 1

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