![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
文章平均质量分 57
java相关
luzaichun
这个作者很懒,什么都没留下…
展开
-
arthas的vmtool
arthas工具vmtool命令使用原创 2021-12-06 11:04:48 · 3912 阅读 · 0 评论 -
ReentrantLock的lock流程
tips:阅读本文章之前请先对AQS有一个大概了解,知道state,知道他的等待队列CLH本文以其中一条非公平锁得线说起,说之前先请出AQS原理的这张图1. lock方法调用首先,sync是ReentrantLock在初始化得时候设置得,根据用户传入得参数,决定是公平锁得实现还是非公平锁得实现(true为公平锁)。 public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new Nonfair.原创 2021-07-03 16:46:17 · 337 阅读 · 1 评论 -
多线程写入百万级数据到mysql测试
数据量100W经测试这种方式不是最快的,最快的是通过jdbc的batch操作可以尝试多线程+batch(没测试过)表结构:create table mall_order( id int auto_increment comment '订单id' primary key, order_no bigint null comment '订单号', user_id varchar(64) null comment '用户id', shipping_id int null comment..原创 2021-05-05 21:56:07 · 1337 阅读 · 0 评论 -
CompletableFuture使用一些示例
aaaaaaaaaaaaaaaaaa原创 2021-05-02 18:21:58 · 2017 阅读 · 0 评论 -
并发的一些知识点总结
今天肝了一下午还没肝完,后面继续补全。最后附上xmind地址,csdn不能直接插入附件有点恶心Xmind地址原创 2021-02-06 23:48:23 · 111 阅读 · 0 评论 -
类的加载
类的生命周期类在jvm中的生命周期:加载、验证、准备、解析、初始化、使用、卸载类加载的:加载、验证、准备、解析、初始化加载:加载class文件的二进制字节流验证:也可以叫校验,校验class文件的合法性,是否符合jvm的要求。校验class的语义,版本号等准备:创建静态字段,并将其初始化为标准默认值(例如null或0值),并分配方法变量表,即在方法区中分配这些变量使用的内存空间(常量池在方法区中),准备阶段还未执行任何java代码。例如:public static int原创 2021-01-17 15:14:55 · 115 阅读 · 0 评论 -
二分搜索树的前中后序遍历
public class TreeNode { int data; TreeNode leftChild; TreeNode rightChild; TreeNode(int data){ this.data = data; }}对下面这棵树进行遍历// 5// / \// 3 6// / \ \// 2 4 8前序原创 2020-07-30 20:43:58 · 219 阅读 · 0 评论 -
Arthas的thread、trace命令
thread命令主要查看当前线程信息,查看线程的堆栈。thread命令1.查看所有线程的信息:thread我们可以看到线程的id、名称、状态、占用cpu这些信息。以及一个汇总信息。tips:在线程很多的情况下,我们可以通过thread --state 线程状态命令进行过滤,只展示某种状态的线程2.查看某个id线程堆栈:thread id下面这个例子比较简单,查看主线程的堆栈信息。3.找出当前阻塞的线程thread -b此命令类似于我们使用jdk的...原创 2020-07-10 11:32:59 · 18492 阅读 · 0 评论 -
Arthas的watch命令
Arthas:阿里的一款java诊断工具,可以在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。Arthas中的watch命令可以让我们能方便的观察到指定方法的调用情况。可以观察到返回值,入参,以及变量等。有个服务,有一个类MathGame,类路径:demo.MathGame,main方法中有个死循环,持续调用run方法,模拟线上请求。...原创 2020-07-07 21:00:55 · 12431 阅读 · 0 评论 -
Java时间戳、String时间格式和LocalDateTime转换
1.从默认时区中的系统时钟获取当前日期时间 LocalDateTime now = LocalDateTime.now(); System.out.println(now);//2020-03-16T09:31:18.0182.LocalDateTime转时间戳 LocalDateTime now = LocalDateTime.now(); long t...原创 2020-03-16 09:37:53 · 2000 阅读 · 0 评论 -
springboot多Profile如何优雅打包?
转载:https://blog.csdn.net/goldenfish1919/article/details/100525998一般项目的结构都是类似下面这种,有多个profile:其中,我们需要在application.yml中设置一个active的profile,如下:spring: profiles: active: dev这种方式,只需要在运行项目的时候设置–sp...转载 2020-01-18 19:40:24 · 392 阅读 · 0 评论 -
jps、jinfo、jmap、jstack、jstat
1.jsp 查看java进程pidpid是后面几个命令使用都需要的参数,所以这个命令最好掌握。(如果发现命令执行报错,就是java环境变量相关没配好,网上找下资料解决)2.jinfo 查看jvm运行参数我一般习惯命令:jinfo -flags pid查看某一个参数:jinfo -flag 参数名 pid3.jmap查看当前堆信息:jmap -heap piddump...原创 2020-01-12 17:14:46 · 387 阅读 · 1 评论 -
JVM架构-运行时数据区
一个class文件–》Class Loader(类加载器)–》Runtime Data Area(运行时数据区)–》Execution Engine(执行引擎)或Native Interface(本地方法接口)–》本地依赖库Class Loader:依据特定格式,加载class文件到内存(详细信息可查看,类加载相关信息)Execution Engine:对命令进行解析Native Inte...原创 2020-01-12 16:37:17 · 146 阅读 · 0 评论 -
垃圾回收之常见垃圾回收器
Stop-the-WorldJVM由于要执行GC而停止了应用程序的执行任何一种GC算法中都会发生多数GC优化通过减少Stop-the-World发生的时间来提高程序性能Safepoint在可达性分析算法中,分析过程中对象引用关系不会发生变化的点产生Safepoint的地方:方法调用;循环跳转;异常跳转等安全点数量得适中jvm得运行模式Server 启动慢,稳定后比C...原创 2020-01-12 15:43:19 · 236 阅读 · 0 评论 -
java中的强引用、软引用、弱引用、虚引用
强引用最普遍的引用:User user = new User();jvm宁可抛出OutOfMemoryErrorr终止程序,也不会回收具有强引用的对象。(这句话很重要,请记住,对后面垃圾回收理那些对象解有帮助)可以通过将对象设置为null来弱化引用,使其回收软引用当内存空间不足时候,GC才会回收该引用对象的内存可以用来实现高速缓存弱引用1.GC时候会被回收,不管内存空间是...原创 2020-01-12 15:29:26 · 150 阅读 · 0 评论 -
垃圾回收之标记算法
判定对象是否为垃圾的算法(标记为垃圾)1.引用计数算法2.可达性分析算法1.引用计数算法通过判断对象的引用数量来决定对象是否可以被回收每个对象实例都有一个引用计数器,被引用则+1,完成引用则-1任何引用计数为0的对象实例可以被当作垃圾收集优点:执行效率高,程序执行受影响小缺点:无法检测出循环引用情况,导致内存泄漏2.可达性分析算法通过判断对象的引用链是否可达来决定对象是否可以被...原创 2020-01-12 14:55:42 · 237 阅读 · 0 评论 -
curl测试websocket链接
有时候我们需要在linux环境下测试websocket接口连同性,包括nginx反向代理配置是否真确,websocket服务端是否正常等。这个时候我们可以通过以下命令测试。curl --no-buffer -H 'Connection: keep-alive, Upgrade' -H 'Upgrade: websocket' -v -H 'Sec-WebSocket-Version: 13' -...原创 2019-12-27 17:12:22 · 24075 阅读 · 2 评论 -
java8遍历map.forEach
1.java8之前我们的遍历方式@Slf4jpublic class TestMain { public static void main(String[] args) { //一个map,key是姓名,value是年龄 Map<String, Integer> map = new HashMap<>(); map...原创 2019-12-22 12:52:37 · 2543 阅读 · 0 评论 -
优雅的记录代码执行时间
本次推荐使用guava的工具类优雅的记录代码执行时间。package com.netinfo.demo.lang3;import com.google.common.base.Stopwatch;import java.util.concurrent.TimeUnit;/** * @author:luzaichun * @Date:2019/12/4 * @Time:23:45...原创 2019-12-04 23:53:01 · 722 阅读 · 0 评论 -
java线程池拒绝策略
我们先一起来看下juc包下的线程池的核心构造方法。corePoolSize:线程池核心线程大小maximumPoolSize:线程池最大线程数量keepAliveTime:非核心线程最大空闲时间,空闲时间达到这个数值,线程会被销毁unit:空闲时间单位worrkQueue:线程池的等待队列threadFactory:创建线程的工厂 handler:拒绝策略Executors工具......原创 2019-12-01 19:18:43 · 757 阅读 · 0 评论 -
try-with-resource例子
try-with-resource可以帮我们管理资源如关闭IO流,Socket。在try-catch语句块中不用我们手写冗长的finally代码。1.写在try()中的外部资源句柄必须实现了AutoCloseable接口。 在try()里的语句不能是任意一个赋值语句,new出来或者其他方式初始化的对象必须实现AutoCloseable接口, 我们经常需要try-catch-finally的I...原创 2019-11-26 14:54:26 · 212 阅读 · 0 评论 -
NoClassDefFoundError 和 ClassNotFoundException 有什么区别
原文作者:Duke2016 原文出处:https://www.cnblogs.com/duke2016/p/9153241.htmlClassNotFoundExceptionClassNotFoundException是一个运行时异常。从类继承层次上来看,ClassNotFoundException是从Exception继承的,所以ClassNotFoundException是一个检查...转载 2019-11-26 11:19:18 · 163 阅读 · 0 评论 -
@DeleteMapping和@PostMapping和@GetMapping和Content-Type使用记录
上个代码例子,有注释大家可以自己试一下@RestController@RequestMapping(value = "demo")public class TestController { //Content-Type:application/x-www-form-urlencoded;表单提交form-data @PostMapping("/demo1") pub...原创 2019-11-08 09:08:47 · 9984 阅读 · 0 评论 -
lambda使用的一些实例
今天再给出一些代码示例供大家学习lambda学习package com.vivo.demo.lambda;import com.vivo.demo.entity.Person;import com.vivo.demo.entity.User;import java.util.ArrayList;import java.util.List;import java.util.Option...原创 2019-10-31 21:26:36 · 257 阅读 · 0 评论 -
flatmap()用法示例
List<Integer> list1 = new ArrayList<>(); List<String> list2 = new ArrayList<>(); List<String> list3 = new ArrayList<>(); List<User> l...原创 2019-10-28 23:53:34 · 9300 阅读 · 0 评论 -
InStream和Stream
先上代码: //1.数组创建 int[] nums = {1,-1,3,2,5}; IntStream intStream = Arrays.stream(nums); Stream<Integer> stream = Arrays.stream(nums).boxed();//boxed可以将IntStream包装称Stream。注意...原创 2019-10-28 22:35:25 · 2066 阅读 · 0 评论 -
lambda流的中间操作map()filter()
//2.从集合创建 List<Object> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); List<Integer&g...原创 2019-10-28 21:58:39 · 1293 阅读 · 0 评论 -
lambda随机流生成
不罗嗦,直接上代码和结果。//4.随机流 new Random().ints(5).forEach(i -> System.out.print(i + ","));//直接通过streamSize参数控制返回个数 System.out.println(); new Random().ints().limit(5).forEach(i->...原创 2019-10-28 18:51:56 · 722 阅读 · 0 评论 -
IntStream.range()和IntStream.rangeClosed区别
其实区别就是开区间和闭区间的区别如:[1,20)和[1,20]的区别例子://3.创建数字流 IntStream.of(1, 2, 3);//返回一个intStream IntStream.range(1,20).forEach(i-> System.out.print(i+","));//返回一个1-19的数字流 System.out....原创 2019-10-28 18:32:29 · 14690 阅读 · 1 评论 -
lambda使用基础使用例子
1.获取数组最小值 @Slf4jpublic class Demo1 { public static void main(String[] args) { int[] arr = {99,-99,10,5,6,20,-20}; int num = Arrays.stream(arr).min().getAsInt(); log.info(...原创 2019-10-20 22:54:56 · 151 阅读 · 0 评论 -
ReentranLock配置Condition实现更细粒度控制
package com.netinfo.demo.thread.condition;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;/** * @author:luzaichun * @Date:2019/10/20 * @Time:15:54...原创 2019-10-20 17:17:15 · 483 阅读 · 0 评论