Java
lyb269
这个作者很懒,什么都没留下…
展开
-
Java命令:常见命令及Java Dump介绍
转发自:https://www.jianshu.com/p/8171d9934471Java命令: 常见命令及Java Dump介绍1、常用命令:在JDK的bin目彔下,包含了java命令及其他实用工具。jps:查看本机的Java中进程信息。jstack:打印线程的栈信息,制作线程Dump。jmap:打印内存映射,制作堆Dump。jstat:性能监控工具。jhat:内存...转载 2020-03-04 11:42:54 · 235 阅读 · 0 评论 -
ThreadPoolExcutor线程池
Java通过Executors提供四种线程池: 1. newCachedThreadPool() 创建一个可缓存线程池,可灵活回收空闲线程,若无可回收,则新建线程。 2. newFixedThreadPool() 创建一个定长的线程池,超出的线程会在队列中等待. 3.newSingleThreadExecutor() 创建一个单线...原创 2020-03-03 21:47:34 · 309 阅读 · 0 评论 -
模拟GC触发并且监测GC变化
打印详细的GC信息命令:-XX:+PrintGCDetails;监测工具:VisualVM模拟大对象,触发GC -XX:+PrintGCDetails 打印GC信息 VisualVM启动package com.lyb269.jvm.gc;import org.junit.Test;import java.text.SimpleDateFormat;import ja...原创 2020-03-01 23:03:21 · 301 阅读 · 0 评论 -
Java垃圾回收机制
Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:给对象分配内存以及回收分配给对象的内存,而且这两个问题针对的内存区域就是Java内存模型中的 堆区。 那些内存需要回收?(对象是否可以被回收的两种经典算法: 引用计数法 和 可达性分析算法) 什么时候回收?(堆的新生代、老年代、永久代的垃圾回收时机,MinorGC 和 Fu...原创 2020-02-29 23:21:13 · 118 阅读 · 0 评论 -
并发之Condition
查看Condition源代码,@since 1.5,Condition是JDK1.5中才出现的,相比使用传统Object的wait(),notify(),使用Condition的await()、signal()这种方式实现线程间协作更加安全和高效。 Condition类能实现synchronized和wait、notify搭配的功能,另外比后者更灵活,Condition...原创 2020-02-26 17:06:49 · 174 阅读 · 0 评论 -
同步: synchronized和ReentrantLock
开头给自己得渣渣发音备注下: synchronized读法:['sɪŋkrənaɪzd] ReentrantLock和synchronized都是加锁式同步,当一个线程获取了对象锁后,其它要进入同步块的线程就必须阻塞在同步块外等待。线程的阻塞和唤醒需要操作系统在用户态和内核态之间切换,所以,ReentrantLock和synchronized都是代价比较高的。关于用户态...原创 2020-02-25 15:37:53 · 469 阅读 · 0 评论 -
Thread线程状态变化过程
关于线程的定义(摘自百度百科): 线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。JVM中定义的线程状态:NEW :Thread state for a thread which has not yet...原创 2020-02-24 15:32:55 · 356 阅读 · 0 评论 -
使用Guava的RateLimiter限流
Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/O 等等。...原创 2020-02-19 14:53:55 · 204 阅读 · 1 评论 -
Java反射注解妙用(获取所有接口说明)
前言最近在做项目权限,使用shiro实现restful接口权限管理,对整个项目都进行了重构。而权限管理需要用到所有的接口配置,包括接口url地址,接口唯一编码等。想要收集所有的接口信息,如果工程接口很多,工作量可想而知。这里用了反射,来获取所有接口的信息,接口再多,也不过几秒钟的事。使用Auth.java接口信息对象主要包括授权地址...转载 2019-09-05 11:38:59 · 538 阅读 · 0 评论 -
Spring WebClient 与 RestTemplate 比较
1. 导读在这篇教程中,我们将对比两种 Spring Web 客户端实现,RestTemplate 和新的 Spring 5 Reactive WebClient。2. 阻塞式客户端 vs 非阻塞客户端在 Web 应用程序中,向其他服务发起 HTTP 调用是常见需求。因此,需要一个 Web 客户端工具。2.1. RestTemplate 阻塞式客户端...转载 2019-08-26 13:40:07 · 4044 阅读 · 0 评论 -
Java虚拟机
JVM总体架构 JVM 是 java虚拟机,是用来执行java文件的 Java的跨平台及原理 跨平台:由Java编写的程序可以在不同的操作系统上运行:一次编写,多处运行 原理:编译之后的字节码文件和平台无关,需要在不同的操作系统上安装一个对应版本的虚拟机(JVM) JVM的分类 ...原创 2019-07-22 20:26:41 · 106 阅读 · 0 评论 -
java实现--自动调用QQ聊天窗口
package test;import java.awt.AWTException;import java.awt.Robot;import java.awt.Toolkit;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.StringSelection;import java.awt.datat...原创 2020-07-13 14:45:13 · 1247 阅读 · 2 评论 -
JVM之类加载
JVM虚拟机中类加载的过程:加载、连接(验证、准备、解析)、初始化三个步骤.盗用网上的图: 加载 加载是类装载的第一步,首先通过class文件的路径读取到二进制流,并解析二进制流将里面的元数据(类型、常量等)载入到方法区,在java堆中生成对应的java...原创 2019-08-08 16:34:55 · 108 阅读 · 0 评论 -
【多线程】Thread和Runnable区别
线程是进程中独立运行的子任务,比如我们运行的QQMuic.exe的时候,然后就会有很多的子任务,而且不同的子任务可以共同工作,这时候每一个子任务就是一个线程,多个子任务共同工作,就是多线程。使用多线程,很大程度上缩短了用户等待时间,而且使CPU的利用率大幅度的降低。实现方式 多线程的编程方式有两种:一是集成Thread类,另一种是实现Runnable接口;Thread类是实现了Run...转载 2019-07-16 15:46:47 · 148 阅读 · 0 评论