自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

请叫我大师兄

看文章记得点个赞哟

  • 博客(617)
  • 资源 (5)
  • 收藏
  • 关注

原创 No tests found for given includes: [com.xxx.smm.kafka.KafkaTopicCountMonitorTest.test](filter.inc

idea 在 springboot + Gradle test时报错:No tests found for given includes解决图Gradle:IntelliJ IDEA使用Gradle作为默认测试运行器。结果,在持续集成(CI)服务器上获得相同的测试结果。此外,在命令行中运行的测试将始终在IDE中运行。 IntelliJ IDEA:选择此选项可将测试过程委派给IntelliJ IDEA。在这种情况下,IntelliJ IDEA使用 JUnit 测试运行器,并且由于增量编译,测试运

2020-09-16 13:54:56 2756 1

原创 Java Elastic search 常用查询

java Elastic 客户端基本使用引入jar compile 'org.elasticsearch:elasticsearch:5.5.0' compile 'org.elasticsearch.client:transport:5.5.0client基本使用得到clientSettings settings = Settings.builder().put("cluster.name", "lw-6-test").build();TransportClient

2020-09-15 16:55:43 6960

原创 Java Storm Hello World 入门起手例子

1,Storm程序再Storm集群中运行的示例图如下:2,Storm的几个核心概念名词Nimbus:即Storm的Master,负责资源分配和任务调度。一个Storm集群只有一个Nimbus。 Supervisor:即Storm的Slave,负责接收Nimbus分配的任务,管理所有Worker,一个Supervisor节点中包含多个Worker进程。 Worker:工作进程,每个工作进程中都有多个Task。 Task:任务,在 Storm 集群中每个 Spout 和 Bolt 都由若干个任

2020-09-14 17:38:13 526

原创 Spring cloud alibaba nacos config 配置中心例子

Spring cloud 集成 nacos config配置中心的例子,自定义 dataId groupId namespace

2020-09-08 15:47:08 5580 1

原创 Spring boot nacos config 配置中心的例子,自定义dataId groupId namespace

使用nacos作为配置中心,在非spring项目,直接使用nacos的 Java sdk也还是简单的。nacos Java SDK 1.3.1 来实现配置管理要是套上Spring的情况下。这个例子就是Spring boot + nacos来实现配置中心。好多例子都是只一个dataId,带上dataId groupId namespace的设置。 <properties> <nacos-config-spring-boot.version>0.2.1

2020-09-08 14:54:41 7762

原创 sm2 sm3 sm4 加密解密 Java实现

SM4.0(原名SMS4.0)是中华人民共和国政府采用的一种分组密码标准,由国家密码管理局于2012年3月21日发布。相关标准为“GM/T 0002-2012《SM4分组密码算法》(原SMS4分组密码算法)”。Java实例代码,参见下面的github连接,下载下来,引入jar包,直接run可以的。国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位使用的依赖 // https://mvnrepository.com/artifact

2020-09-04 17:20:06 8014 1

原创 treemap 和 hashmap的效率比较

区别:1,hashmap是无序的,treemap是有序的,整个key是按照自然顺序来的。2,hashmap可以put一个null当key ,treemap却不支持。3,底层结构不一样,一个是数组➕红黑树,一个直接就是红黑树。但是hashmap是最最最常用的map集合,不考虑顺序的时候,他是首选,假如你希望有点顺序的话,想使用一下treemap,但是整个treemap和整个hashmap的效率到底差别多少,不太确定,万一整个treemap效率很低,那就影响程序性能了,那就不好了。测试一下,有个底。简单

2020-09-02 16:39:56 3525

原创 什么是RPC Remote Procedure Call 翻译成中文就是远程过程调用

如何科学的解释RPC说起RPC,就不能不提到分布式,这个促使RPC诞生的领域。假设你有一个计算器接口,Calculator,以及它的实现类CalculatorImpl,那么在系统还是单体应用时,你要调用Calculator的add方法来执行一个加运算,直接new一个CalculatorImpl,然后调用add方法就行了,这其实就是非常普通的本地函数调用,因为在同一个地址空间,或者说在同一块内存,所以通过方法栈和参数栈就可以实现。现在,基于高性能和高可靠等因素的考虑,你决定将系统改造为分布式应

2020-08-25 18:10:31 678 1

原创 一个假的单例模式,虽然有双重加锁的代码,但还是假的单例。

单例模式这东西简单,也是平时写代码最常用的一个模式了。虽然你知道单例模式的要点。1.私有(private)静态(static)的单例对象(object)2.构造函数(struct)私有化-----可在构造方法初始化单例对象3.提供对外(public),静态方法获得单例对象你也知道最常见的就是使用双重旋锁来判断对象是否已经初始化了,来控制有且只有一个单利会被初始化。但是,下面这个代码的单例模式有问题,看看能看出来哪有问题不?看不出问题的,还请继续往下看吧。public class Sender

2020-08-24 17:15:00 816 1

原创 fastjson com.alibaba.fastjson.JSONException: unclosed string : 十

使用fastjson在转换的时候,com.alibaba.fastjson.JSONException: unclosed string : 十 at com.alibaba.fastjson.parser.JSONLexerBase.scanString(JSONLexerBase.java:1001) at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:485) ...

2020-08-20 14:12:45 16844

转载 学习一下秒杀系统的设计,以及需要考虑的问题

学习一下秒杀系统的设计,以及需要考虑的问题,学习一下模块化正文首先设计一个系统之前,我们需要先确认我们的业务场景是怎么样子的,我就带着大家一起假设一个场景好吧。我们现场要卖100件婴儿纸尿裤,然后我们根据以往这样秒杀活动的数据经验来看,目测来抢这100件纸尿裤的人足足有10万人。任何系统我们开始设计之前我们都应该去思考会出现哪些问题?这里我罗列了几个非常经典的问题:问题高并发:是的高并发这个是我们想都不用想的一个点,一瞬间这么多人进来这不是高并发什么时候是呢?是吧,秒杀的特点

2020-08-18 14:35:59 1926 3

原创 当Java jvm 一个线程OOM的时候,其它线程还能运行不?这个进程会gg不?

当一个Java程序报OOM的异常的时候,程序会gg吗?是只有一个线程gg呢,还是整个进程gg呢?/** * JVM 堆内存溢出后,其他线程是否可继续工作 * * @author LiXuekai on 2020/7/27 */public class WhenOom { public static void main(String[] args) { new Thread(() -> { List<byte[]> list

2020-07-27 16:40:18 933

原创 Java 一个进程支持多少个线程同时运行的测试 Java max running thread count test

测试一下一个Java程序能同时造多少个线程,一起运行。直到 java.lang.OutOfMemoryError: unable to create new native thread看其它文章说 -Xms -Xmx设置heap的大小以及 -Xss 设置单个stack的大小对这个数有影响,我在 -Xms 10m,1g,6g -Xss170k, 10m,100m,都是在4075左右就OOM拉。测试环境,jdk1.8 ,mac os

2020-07-27 15:46:25 742

原创 Java 解析xml 使用SAXReader获取所有标签的key和value的代码实例

Java中使用SAXReader获取xml信息中所有标签的key和value,若是有二级或者继续嵌套,也可以递归获取的代码实例。

2020-07-26 17:52:44 3005

原创 java kafka 生产者和消费者的代码实例

生产者import com.google.common.collect.Lists;import org.apache.kafka.clients.producer.KafkaProducer;import org.apache.kafka.clients.producer.ProducerRecord;import org.junit.Test;import java.util.List;import java.util.Properties;import static org.a

2020-07-26 17:35:28 2368

转载 Kafka消费者-从Kafka读取数据

(1)Customer和Customer Group(1)两种常用的消息模型队列模型(queuing)和发布-订阅模型(publish-subscribe)。队列的处理方式是一组消费者从服务器读取消息,一条消息只由其中的一个消费者来处理。发布-订阅模型中,消息被广播给所有的消费者,接收到消息的消费者都可以处理此消息。(2)Kafka的消费者和消费者组Kafka为这两种模型提供了单一的消费者抽象模型:消费者组 (consumer group)。 消费者用一个消费者组名标记自己。 一个.

2020-07-26 17:24:55 3598 1

转载 Java kafka producer 发送数据

(1)生产者概览(1)不同的应用场景对消息有不同的需求,即是否允许消息丢失、重复、延迟以及吞吐量的要求。不同场景对Kafka生产者的API使用和配置会有直接的影响。例子1:信用卡事务处理系统,不允许消息的重复和丢失,延迟最大500ms,对吞吐量要求较高。例子2:保存网站的点击信息,允许少量的消息丢失和重复,延迟可以稍高(用户点击链接可以马上加载出页面即可),吞吐量取决于用户使用网站的频度。(2)Kafka发送消息的主要步骤消息格式:每个消息是一个ProducerRecord对象,必须指定

2020-07-26 17:16:29 4265

原创 Runtime.getRuntime().addShutdownHook()

解决 the application appears to have started a thread ... but failed to stop it,this is very likely to create a memory leak.这个警告RunTime.getRunTime().addShutdownHook的作用就是在JVM销毁前执行的一个线程.当然这个线程依然要自己写.有时候我们用到的程序不一定总是在JVM里面驻守,可能调用完就不用了,释放资源.利用这个性质,如果我们之前定义.

2020-07-16 13:51:17 1211

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

问题: a,b,c三个变量,其中c是volatile的,a,b是普通变量, a = 1, b = 2, c = 3, c写入之后,a,b的值也会被刷入缓存吗,还是c写入之前所有在cpu缓存的数据都会被刷入内存,还是只刷入和c在同一个缓存行的数据?答: 要按happens before来考虑这种问题,不要想着(cache),Java的修正过的内存模型其实基本点很简单,同一线程内的副作用按程序顺序发生,所以a、b、c的赋值如果是在同一线程内按这个顺序写的,实际执行就要按照这个...

2020-07-08 15:49:04 473

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

关键描述 G1是一种服务器端的垃圾收集器,应用在多处理器和大内存环境中,在实现高吞吐量的同时,尽可能的满足垃圾收集暂停时间的要求,全堆操作(例如全局标记)与应用程序线程并行执行。这样可以防止与堆或活动数据大小成比例的中断。 G1收集器的设计目标是取代CMS收集器,它同CMS相比,在以下方面表现的更出色:* G1是一个有整理内存过程的垃圾收集器,在回收垃圾的时候会压缩存活对象。不会产生很多内存碎片。* G1的Stop The World(STW)更可控,G1在停顿时间上添加...

2020-07-02 10:13:41 2276

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

在看g1gc文章的时候,把concurrent and parallel phases翻译成并发和并行阶段,感觉这2个词不是一个意思吗?为啥他原始文档要强调这2个词呢。深究一下,果然不是一个意思。总体概念:在单CPU系统中,系统调度在某一时刻只能让一个线程运行,虽然这种调用机制有多种形式(大多数是时间片轮巡为主),但无论如何,要通过不断切换需要运行的线程让其运行的方式就叫并发(concurrent)。而在多CPU系统中,可以让两个以上的线程同时运行,这种可以同时让两个以上线程同时运行的方式叫做并行(p

2020-06-28 17:16:30 1230

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

G1 GC是Java HotSpot虚拟机的低暂停,服务器风格的分代垃圾收集器。G1 GC使用并发(concurrent)和并行(parallel)阶段来实现其目标暂停时间并保持良好的吞吐量。当G1 GC确定需要进行垃圾收集时,它将首先收集存活数据最少的区域(垃圾优先处理)。垃圾收集器(GC)是一种内存管理工具。G1 GC通过以下操作实现自动内存管理:在年轻一代分配对象,并将老化的对象提升为老一代。 在并发(并行)标记阶段,在老一代中查找存活对象。当Java堆总占用量超过默认阈值时,Java H.

2020-06-27 15:37:56 3060

翻译 G1 GC 全称 Garbage-First Garbage Collector

介绍Oracle JDK 7.4或更高版本完全支持Garbage-First(G1)垃圾收集器。G1收集器是server-style的垃圾收集器,适用于具有大内存的多处理器计算机。它极有可能满足垃圾回收(GC)暂停时间目标,同时实现高吞吐量。全堆操作(例如全局标记)与应用程序线程并行执行。这样可以防止与堆或活动数据大小成比例的中断。技术说明G1收集器通过多种技术实现了高性能和暂停时间目标。堆被划分为一组大小相等的堆区域,每个堆区域都有一个连续的虚拟内存范围。G1执行并发全局标记阶段,以确定整

2020-06-27 14:39:09 619

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

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

2020-06-18 15:29:18 5236

原创 gradle git 版本号--自定义打jar包的name

以前这个gradle都是给Android使用的,万万没想到,Java的其它项目也能使用,甚至能替代maven或者说maven和gradle项目是可以互相转换的。还有就是在使用svn来管理项目的时候,每个svn版本都对应一个数字,但是换了git之后,每个提交记录就不是简单的生成个int数字,还是递增的数字了,对应的是个hash值,类似Java对象的hashcode,这个时候就希望,每次项目打包之后,产生出来的jar包带上这个git版本号,虽然不似svn那样一个简单的int数字就能说明版本,但是git的hash

2020-06-17 17:09:41 1660

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

要是没有实践过别人书本上的理论的话,就还是会说常量池在方法区里面,要是知道方法区已经随jdk升级,被逐步干掉的话,就会看到有的文章说移动到heap堆里面了,还有极少的说移动到Metaspace里面了,产生了分歧。这个时候就需要实践出真知了。/** * 测试 常量池在分区的位置 * * @author LiXuekai on 2020/6/9 */public class StringConstantPoolTest { public static void main(String[]

2020-06-15 17:59:33 11971 18

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

了解到什么是ccs区,一般都是实际执行了jstat -gc 之后,看Java堆的gc相关的几个分区的gc信息,前面的s0,s1,e区,o区,还好猜,研究过分区的,不难猜出来这个分区是啥意思,M区虽然不知道是Metaspace元空间,但是错把这个M区当成Method area 方法区,也说的过去。这个ccsc就不好说了。之前的看的文章都没人说这个区是啥。Java之jstat的用法:Java虚拟机 统计信息查看 工具不了解这几个简写单词是啥意思的,可以参考一下之前的这个jstat的文章,里面对每一列

2020-06-15 15:47:50 11359 7

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

在稍微了解Java内存分区的时候,大多数文章都是出自深入理解jvm这本书,上来就是给你分了 程序计数器,Java虚拟机栈,本地方法栈,堆,方法区,还有个直接内存,还说方法区里面有个常量池。在写这本书的时候,jdk还在1.6,但是现在2020年jdk都已经jdk14了,虽然还没普及jdk14,但是估计以后都会使用的吧,就像现在基本最低都要使用jdk1.8一样。1.7是在2011年发布的,1.8是14年发布的,时至今日,内存分区已经有了些许变化。虽然理论还是大差不差的。永久代主要存放以下数据:JVM i

2020-06-15 11:50:42 3611

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

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

2020-06-15 10:02:13 172811 153

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

前面看了jdk的几个查看jvm信息的命令,然后只看不动手,不用回头就忘记的干干净净了。还是实际使用一下,然后顺便结合着jvm的内存分区,再深层次的记录一下几个分区的名称、大小、gc器、等等。首先,查看一个进程,筛选一个进程,就可以使用jps -mvl ,m让他带上方法参数,v带上设置的jvm参数,l显示完整的运行main方法名称。完了之后,就可以看到这个pid的好多信息了。但是这个看到的不全,还是有些虚拟机默认的参数是看不到的,这个时候已经拿到了pid,再使用jinfo -flags pid,就会显

2020-06-13 17:33:56 2680 1

原创 Java内存中指令重排序导致的线程问题,以及 volatile 作用之禁止内存指令重排序的代码实例

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

2020-06-12 12:33:06 990

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

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

2020-06-11 16:35:38 793

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

jmap [option] <pid>关于 option 的选项,有下面这么几个1,jmap -dump:[live,] format=b, file=filename pidjmap -F -dump:format=b,file=tomcat.txt 113089以hprof二进制格式转储Java堆到指定filename tomcat.txt 的文件中。live子选项是可选的。如果指定了live子选项,堆中只有活动的对象会被转储。想要浏览heap dump,你可以使用j..

2020-06-11 10:52:36 6127

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

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

2020-06-10 17:08:17 635

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

实时查看和跳转jvm的各项参数。使用jps -v 可以查看虚拟机启动时,显示指定的参数列表,但是未指定的系统默认的参数就看不到了。就可以使用jinfo -flag 进行查看。 jinfo [ option ] pid jinfo [ option ] executable core jinfo [ option ] [ servier-id ] remote-hostname-or-IP主要有下面几个: 1,no-option ...

2020-06-04 18:32:19 1011

原创 jstat各种用法以及结果中每一列的详细含义描述

1, -class 监视类装载、卸载数量,总空间、类装载所耗费时间2,-compiler 输出jit编译器编译过的方法耗时等信息3,-printcompilation 输出已经被jit编译的方法4,-gc 监视Java堆状况,eden,2个s区,old,方法区等容量,gc时间等情况5,-gccapacity 6,-gcutil 已使用空间占此空间的百分比7,-gccause 输出导致上次gc的原因8,-gcnew 统计新生代的gc情况9, -gcnewcapacity 各个最大和最新

2020-06-04 11:24:45 3978

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

一般现场出问题,服务器上不会有JProfile之类的工具给你分析问题,有的只是jdk自带的东西,所以,很有必要学习一下jdl自带的命令行工具。一开始,老看别人使用这个jps,还以为是Linux自带的呢,类似cd ls之类的。后来才发现这个是jdk的东西,搞Java的竟然不知道这个,哎,真水。JavaVirtual Machine Process Status Tool命令格式:jps [options ] [ hostid ][options] 参数选项:jps 的参数和对应说明 -q.

2020-05-29 11:39:02 848

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

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

2020-05-18 17:39:05 1272

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

1.操作系统需要两种CPU状态:内核态(Kernel Mode):运行操作系统程序用户态(User Mode):运行用户程序2.指令划分:特权指令:只能由操作系统使用、用户程序不能使用的指令。 举例:启动I/O 内存清零 修改程序状态字 设置时钟 允许/禁止终端 停机非特权指令:用户程序可以使用的指令。 举例:控制转移 算数运算 取数指令 访管指令(使用户程序从用户态陷入内核态)3.特权级别:特权环:R0、R1、R2和R3R0相当于内...

2020-05-14 17:17:06 2022

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

锁的内存语义synchronized的底层是使用操作系统的mutex lock实现的。内存可见性:同步快的可见性是由“如果对一个变量执行lock操作,将会清空工作内存中此变量的值,在执行引擎使用这个变量前需要重新执行load或assign操作初始化变量的值”、“对一个变量执行unlock操作之前,必须先把此变量同步回主内存中(执行store和write操作)”这两条规则获得的。 操作原子性:持有同一个锁的两个同步块只能串行地进入锁的内存语义:当线程释放锁时,JMM会把该线程对应的本地内存中的

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

SyslogWatcher

SyslogWatcher

2017-05-03

Java开发手册(阿里巴巴-公开版)

阿里巴巴 JAVA 开发手册 阿里巴巴 JAVA 开发手册 编程规约 异常日志 MYSQL 规约 工程规约 安全规约

2017-01-13

guava-19.0.jar

guava-19.0.jar包

2016-10-26

大众点评sdk例子

大众点评sdk例子,里面还有个中平台的例子,我用的是安卓平台的,经测试可行。里面还有个oAuthu授权的例子,也是可以用的,在adt上可以运行。需要自己申请app key和 app secret

2015-08-03

全国省市区sqlite数据库

全国省市区sqlite数据库,数据全,体积小。好的话,给好瓶。

2015-07-08

空空如也

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

TA关注的人

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