![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 92
指尖上的舞动
这个作者很懒,什么都没留下…
展开
-
利用Java实现反向代理
利用Java实现反向代理 最近有个需求要做一个反向代理,在GitHub上找到了一个已实现好了的项目,记录一下,传送门:https://github.com/mitre/HTTP-Proxy-Servlet 引入依赖 <dependency> <groupId>org.mitre.dsmiley.httpproxy</groupId> <artifactId>smiley-http-proxy-servlet</artifactId>原创 2020-11-17 11:28:12 · 5704 阅读 · 5 评论 -
文件压缩下载
由于经常需要从文件存储服务器取出文件,并提供压缩并下载这个功能,简单记录一下 建立一个临时文件夹 String tempDirPath = FilenameUtils.concat(FileUtils.getTempDirectory().getPath(), UUID.randomUUID().toString()); File dir = new File(tempDirPath); if (!dir.exists()) { dir.mkdir(); } 从服务器下载文件并存储在文件夹中 tr原创 2020-11-11 10:32:16 · 200 阅读 · 0 评论 -
基础故障处理工具
jps:虚拟机进程状况工具 功能类似Linux的ps jps 命令格式:jps [ options ] [ hostid ] jstat: 虚拟机统计信息监视工具 jstat(JVM Statistics Monitoring Tool)是用于监视虚拟机各种运行状态信息的命令行工具 jstat命令格式为:jstat [ option vmid [interval[s|ms] [count]] ]...原创 2020-04-08 18:28:19 · 212 阅读 · 0 评论 -
垃圾收集器常用参数总结及日志打印命令
垃圾收集器参数总结 虚拟机及垃圾收集器日志 查看GC基本信息,在JDK 9之前使用-XX:+PrintGC,JDK 9后使用-Xlog:gc 查看GC详细信息,在JDK 9之前使用-XX:+PrintGCDetails,在JDK 9之后使用-X-log:gc* 查看GC前后的堆、方法区可用容量变化,在JDK 9之前使用-XX:+PrintHeapAtGC,JDK 9之后使用-Xlog:gc+...原创 2020-04-07 14:48:43 · 420 阅读 · 0 评论 -
经典垃圾收集器
Serial 收集器 这个收集器是一个单线程工作的收集器,但它的“单线程”的意义并不仅仅是说明它只会使用一个处理器或一条收集线程去完成垃圾收集工作,更重要的是强调在它进行垃圾收集时,必须暂停其他所有工作线程,直到它收集结束 它是HotSpot虚拟机运行在客户端模式下的默认新生代收集器,有着优于其他收集器的地方,那就是简单而高效(与其他收集器的单线程相比),对于内存资源受限的环境,它是所有收集器...原创 2020-04-07 14:25:42 · 227 阅读 · 0 评论 -
垃圾收集算法
标记-清除算法 算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后,统一回收掉所有被标记的对象,也可以反过来,标记存活的对象,统一回收所有未被标记的对象 缺点: 执行效率不稳定,如果Java堆中包含大量对象,而且其中大部分是需要被回收的,这时必须进行大量标记和清除的动作,导致标记和清除两个过程的执行效率都随对象数量增长而降低 内存空间的碎片化问题,标记、清除之后会产生...原创 2020-04-03 14:17:36 · 98 阅读 · 0 评论 -
Java 判断对象是否生存
最近在阅读《深入理解Java虚拟机》,简单做点笔记 引用计数法算法 在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的 缺点:循环引用回收不了 可达性分析算法 通过一系列称为“GC Roots”的根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,搜索过程所走过的路径称为“引用链”(Referen...原创 2020-04-03 11:04:11 · 176 阅读 · 0 评论 -
线程池的拒绝策略
今天在工作的时候,遇见了一个线程阻塞的问题,然后定位代码,找出了问题的所在: 这是我们线程池的初始化代码: RejectedExecutionHandler handler = new ThreadPoolExecutor.DiscardPolicy(); executor = new ThreadPoolExecutor(5, 20, 60, TimeUnit.SECONDS, new ...原创 2020-04-02 13:49:11 · 154 阅读 · 0 评论