Java
文章平均质量分 84
中国一动
这个作者很懒,什么都没留下…
展开
-
CompletableFuture基本使用
CompletableFuture是什么CompletableFuture是Java8中提供的Future的扩展功能,帮助我们简化异步编程的复杂性,引入函数式编程,通过回调的方式处理计算结果,也提供了转换和组合的方法。 它可能代表一个明确完成的Future,也有可能代表一个完成阶段( CompletionStage ),它支持在计算完成以后触发一些函数或执行某些动作。 它实现了Future和CompletionStage接口 借助CompletionStage的方法可以实现链式调用 一个Comp原创 2022-04-02 11:05:30 · 3723 阅读 · 0 评论 -
Prometheus 相关配置及命令(个人记录)
PrometheusPrometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本官网下载地址:https://prometheus.io/download/注:darwin-amd64.tar.gz 为Mac解压版本1、配置监控节点修改解压目录下prometheus.yml 文件metrics_path: '/prometheus' 监控服务,springboot.原创 2020-09-27 18:39:04 · 3371 阅读 · 3 评论 -
Spring AOP支持的AspectJ切入点指示符
Spring AOP支持的AspectJ切入点指示符如下:指示符 含义 execution 用于匹配方法执行的连接点; within 用于匹配指定类型内的方法执行; this 用于匹配当前AOP代理对象类型的执行方法;注意是AOP代理对象的类型匹配,这样就可能包括引入接口也类型匹配; target 用于匹配当前目标对象类型的执行方法;注意是 目标对象的类型匹配,这样就不包括引入接口也类型匹配; args 用于匹配当前执行的方法传入的参数为指定类型的原创 2020-08-27 11:59:38 · 279 阅读 · 0 评论 -
Java快速开发脚手架
Java快速开发脚手架目录1、RuoYi 若依2.renren 人人3.eladmin4.Jeecg-boot5、vue-manage-system6、Guns7、pig8、iBase4J9、SpringBlade (2.6k star)10、COLA (2.1k star)11、SpringBoot_v21、RuoYi 若依RuoYi 基于SpringBoot的权限管理系统 易读易懂、界面简洁美观。 核心技术采用Spring、MyBatis、Shi原创 2020-08-12 09:34:42 · 4696 阅读 · 0 评论 -
HttpClient 4.5.X 实现https请求绕过SSL/TLS连接
HttpClient升级部分类和方法过时,故整理新版处理方式注:本博文适用httpclient 4.5.X httpclient版本:4.5.11<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.11</version></dep原创 2020-05-22 22:04:45 · 1430 阅读 · 0 评论 -
Java中慎用e.printStackTrace()
Java使用框架集成的log4j、logback等统一打印日志,尽量不使用catch的e.printStackTrace()1、占用太多内存,造成锁死e.printStackTrace()要打印字符串输出到控制台上,需要字符串常量池所在的内存块有足够的空间。由于e.printStackTrace() 语句要产生的字符串记录的是堆栈信息,太长太多,内存被填满了!大量线程产出字符串等待有内存被释放,会造成相互等待内存(字符串池所属的那么点非堆内存空间),导致整个应用挂掉了。2、日志交错混合,不易读原创 2020-05-11 22:50:11 · 2508 阅读 · 0 评论 -
JDK1.8 HashMap原理及源码分析
概述JDK1.8对HashMap底层的实现进行了优化,引入红黑树的数据结构和扩容的优化等。 HashMap源码分析HashMap的put方法执行过程:putVal()源码分析:final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node<K, V>...原创 2018-09-21 17:52:15 · 680 阅读 · 2 评论 -
ConcurrentHashMap JDK1.8中结构原理及源码分析
注:本文根据网络和部分书籍整理基于JDK1.8书写,如有雷同敬请谅解 欢迎指正文中的错误之处。数据结构 ConcurrentHashMap 1.8 抛弃了Segment分段锁机制,采用Node + CAS + Synchronized来保证并发安全进行实现,采用table数组+链表+红黑树的存储结构。以table数组元素作为锁,利用CAS+Synchronized来保证并发更新...原创 2018-09-17 14:58:36 · 1411 阅读 · 0 评论 -
ConcurrentHashMap JDK1.7中结构原理及源码分析
注:本文根据网络和部分书籍整理基于JDK1.7书写,如有雷同敬请谅解 欢迎指正文中的错误之处。数据结构 ConcurrentHashMap是HashMap的一个线程安全的、支持高效并发的版本。在多线程并发场景下HashTable和由同步包装器包装的HashMap,都是通过使用一个全局的锁来同步不同线程间的并发访问,会带来不可忽视的性能问题。 Concurrent...原创 2018-09-17 14:42:25 · 589 阅读 · 0 评论 -
JDK1.7 HashMap原理及源码分析
注:本文根据网络和部分书籍整理基于JDK1.7书写与1.8版本对比介绍HashMap基本原理,文中源码为JDK 1.7 本文内容如有雷同敬请谅解,欢迎指正文中的错误之处。哈希表 哈希就是把任意长度的输入,通过散列算法,变成固定长度的输出,该输出就是散列值。哈希法又称散列法、杂凑法以及关键字地址计算法等,相应的表成为哈希表。哈希表是一种根据关键码去寻找值的数据映射结...原创 2018-09-17 13:59:41 · 286 阅读 · 0 评论 -
ArrayList 遍历方式及性能对比
List的几种遍历方式int num = 1000000;List<Integer> list = new ArrayList<>();for (int i = 0; i < num; i++) { list.add(i);}(1) for each循环// for eachfor (Integer v : list) {}或...原创 2017-12-01 11:20:54 · 664 阅读 · 0 评论 -
HashMap 遍历方式及其性能对比
HashMap的几种遍历方式int num = 10000;HashMap<Integer, String> map = new HashMap<Integer, String>();for (int i = 0; i < num; i++) { map.put(i, "第" + i + "个");} (1) for each entrySet()...原创 2017-12-01 11:15:19 · 341 阅读 · 0 评论 -
HashSet,TreeSet和LinkedHashSet的区别
HashSet,TreeSet和LinkedHashSet的区别Set接口Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false。Set判断两个对象相同不是使用==运算符,而是根据equals方法。也就是说,只要两个对象用equals方法比较返回true,Set就不 会接受这两个对象。HashSetHashSet有以下特点转载 2016-12-21 15:14:19 · 398 阅读 · 0 评论 -
Log4J日志配置详解
Log4J日志配置详解一、Log4j简介Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。1、LoggersLoggers组件在此系统中被转载 2016-12-21 12:29:10 · 400 阅读 · 1 评论