Skip to content

Instantly share code, notes, and snippets.

View duqicauc's full-sized avatar
🎯
Focusing

阿杜 duqicauc

🎯
Focusing
View GitHub Profile
@duqicauc
duqicauc / PermTool.java
Created September 1, 2018 16:50
利用SA打印jvm中加载的类
import sun.jvm.hotspot.oops.*;
import sun.jvm.hotspot.runtime.*;
import sun.jvm.hotspot.tools.Tool;
/**
* @author duqi
* @createTime 2018/9/1 下午11:55
**/
public class PermTool extends Tool {
@Override
@duqicauc
duqicauc / List2Map.java
Created August 16, 2018 06:58
List转换成Map,以List里元素的某个字段未key
public class List2MapExample {
public static void main(String[] args) {
List<ClassRecordDTO> list = new ArrayList<>();
list.add(new ClassRecordDTO(1, 2, "xxx", 0.0, 0.0));
list.add(new ClassRecordDTO(1, 2, "yyy", 0.0, 0.0));
list.add(new ClassRecordDTO(2, 3, "zzz", 0.0, 0.0));
Map<String, ClassRecordDTO> result = list.stream().collect(Collectors.toMap(ClassRecordDTO::getClassName, classRecordDTO -> classRecordDTO));
@duqicauc
duqicauc / ClassNameUtil.java
Created August 15, 2018 07:42
将类的JVM规范名称转换为SimpleName
import com.google.common.collect.ImmutableMap;
import java.util.Map;
/**
* @author duqi
* @createTime 2018/8/14 下午3:18
**/
public class ClassNameUtil {
@duqicauc
duqicauc / WatcherMonitorExample.java
Created July 25, 2018 03:41
使用WatcherMonitor监控某个目录下文件的创建
public static void main(String[] args) {
WatchMonitor watchMonitor = WatchMonitor.create("/Users/duqi/", WatchMonitor.ENTRY_CREATE, WatchMonitor.ENTRY_DELETE);
watchMonitor.setWatcher(new Watcher() {
@Override
public void onCreate(WatchEvent<?> event, Path currentPath) {
System.out.println("create1 current time:" + System.currentTimeMillis());
System.out.println("文件创建:" + currentPath);
System.out.println("create2 current time:" + System.currentTimeMillis());
}
@duqicauc
duqicauc / AsyncHttpClientFactoryBean.java
Created July 14, 2018 16:08
异步http客户端构建工厂
/**
* Created by IntelliJ IDEA.
* User: duqi
* Date: 2017/2/9
* Time: 15:06
*/
public class AsyncHttpClientFactoryBean implements FactoryBean<CloseableHttpAsyncClient> {
private static final int DEFAULT_MAX_TOTAL = 512;
private static final int DEFAULT_MAX_PER_ROUTE = 64;
@duqicauc
duqicauc / HttpClientFactoryBean.java
Created July 14, 2018 16:08
http客户端构建工厂
/**
* Created by IntelliJ IDEA.
* User: duqi
* Date: 2017/2/9
* Time: 13:54
*/
public class HttpClientFactoryBean implements FactoryBean<HttpClient> {
// 知识点1:路由(MAX_PER_ROUTE)是对最大连接数(MAX_TOTAL)的细分,整个连接池的限制数量实际使用DefaultMaxPerRoute并非MaxTotal。
// 设置过小无法支持大并发(ConnectionPoolTimeoutException: Timeout waiting for connection from pool),
@duqicauc
duqicauc / AsyncThreadExecutor.java
Created July 14, 2018 16:03
自定义的异步线程池组件
public class AsyncThreadExecutor implements AutoCloseable {
private static final int DEFAULT_QUEUE_SIZE = 1000;
private static final int DEFAULT_POOL_SIZE = 10;
@Setter
private int queueSize = DEFAULT_QUEUE_SIZE;
@Setter