知识积累
卡卡罗西
纸上得来终觉浅,绝知此事要躬行.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
GC如何判断对象可以被回收
GC如何判断对象可以被回收在堆里面存放着Java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象中那血还“存活”着,哪些已经"“死去”"(“死去”即不可能再被任何途径使用的对象)了。对象已死?引用计数法每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收。可达性分析算法从GC Roots开始向下搜索,搜索所走过的路径成为引用链。当一个对象到GC Root没有任何引用链相连时,则证明此对象是不可用的,那么虚拟机就判断是原创 2021-03-01 00:42:36 · 430 阅读 · 0 评论 -
GC如何判断对象可以被回收
在堆里面存放着Java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象中那血还“存活”着,哪些已经"“死去”"(“死去”即不可能再被任何途径使用的对象)了。对象已死?引用计数法每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收。可达性分析算法从GC Roots开始向下搜索,搜索所走过的路径成为引用链。当一个对象到GC Root没有任何引用链相连时,则证明此对象是不可用的,那么虚拟机就判断是可回收对象。引用计数原创 2021-03-01 00:40:39 · 404 阅读 · 0 评论 -
JVM调优工具详解
JVM调优工具详解Jmap此命令可以用来查看内存信息。实例个数以及内存占用大小。jmap -histo 13988 > ./log.txt打开log.txt,文件内容如下:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3BpP4v9Z-1602129562758)(https://i.loli.net/2020/10/08/qiDTrW7mUd1FlG5.png)]num:序号instances:实例数量byte:占用空间大小class name:原创 2020-10-08 12:00:18 · 596 阅读 · 0 评论 -
JVM垃圾收集器G1
G1将java堆划分为多个大小相等的区域(Region),JVM最多可以有2048个Region。一般Region的大小等于堆大小除以2048,比如堆大小为4096M,则Region的大小为2M,当然也可以用参数“-XX:G1HeapRegionSize”手动指定Region大小,但是推荐默认的计算方式。G1保留了年轻代和老年代的概念,但不再是物理隔阂了,它们都是(可以不连续的)Region的集合。默认年轻代堆堆内存的占比是5%,如果堆内存的大小为4096M,那么年轻代占据200M左右的内存,对应大.原创 2020-10-04 00:44:07 · 672 阅读 · 0 评论 -
第三方jar包放入本地仓库或私服
mvn install:install-file -DgroupId=com.aspose -DartifactId=aspose-cells-third -Dversion=18.11.0 -Dfile=aspose-cells-java-18.11.jar -Dpackaging=jarmvn deploy:deploy-file -DgroupId=com.aspose -Dartif...原创 2020-04-05 21:38:46 · 711 阅读 · 0 评论 -
使用Dockerfile制作JDK+Tomcat镜像
记录下使用Dockerfile制作JDK+Tomcat镜像的过程笔记,希望对大家有所帮助。一、新建DockerfileFROM centos:7MAINTAINER messi# 把tomcat添加到容器中ADD apache-tomcat-8.5.47.tar.gz /usr/local#安装linux命令RUN yum -y install vimRUN yum -y ...原创 2019-10-29 16:02:18 · 249 阅读 · 0 评论 -
idea使用技巧
1.重构代码1.1抽取公共方法public class ExtractMethord { public void main(String[] args) { System.out.println("Hello World!"); System.out.println("function start......"); Sys...原创 2018-12-20 10:34:30 · 1375 阅读 · 0 评论 -
MyBatis Criteria示例类使用说明
Simple Queries此示例显示如何使用生成的示例类生成简单的WHERE子句: TestTableExample example = new TestTableExample(); example.createCriteria().andField1EqualTo(5);或者,以下语法也适用: TestTableExample example = new Test...原创 2018-12-27 22:27:38 · 1769 阅读 · 0 评论 -
责任链模式妙用
一说到「设计模式」,可能很多人都有听过。但是如果真的要你说说应用场景,可能会有点「难以描述」。除了应用场景比较多的单例模式你能够信手拈来,其他的可能会觉得有点难以掌握。也许压根都没用过。今天,通过本篇文章,让你对责任链模式也能够信手拈来。本篇文章通过实际项目中的例子来让你认识何为责任链模式。定义百度百科的介绍:责任链模式是一种设计模式。在责任链模式里,很多对象由每一个对象对...转载 2019-01-02 20:52:56 · 176 阅读 · 0 评论 -
[网络整理] springboot @async 无效
2018年05月28日 17:01:02 ffiing 阅读数:4242版权声明:本文为博主原创文章 , 转载请注明出处 https://blog.youkuaiyun.com/qq_34545192/article/details/80484780最开始使用Springboot ,发现加上注解@Async后没有效果, 然后度了一下 ,才知道需要三步配置.在@SpringBootApplica...转载 2019-01-03 09:39:13 · 182 阅读 · 0 评论 -
SpringBoot使用@Async注解失效分析(@Transactional事务注解失效分析)
有时候在使用的过程中@Async注解会失效(原因和@Transactional注解有时候会失效的原因一样)。下面定义一个Service:两个异步执行的方法test03()和test02()用来模拟项目中可能出现的耗时的操作,然后test()方法调用这两个耗时的方法:定义Controller:执行方法,返回结果:方法执行结果明显与我们的预期不符,方法的输出顺序表示了t...转载 2019-01-03 09:40:23 · 3807 阅读 · 2 评论 -
XSS攻击原理分析与防御技术
跨站脚本攻击(Cross Site Scripting),缩写为XSS。恶意攻击者往Web页面里插入恶意javaScript代码,当用户浏览该页之时,嵌入其中Web里面的javaScript代码会被执行,从而达到恶意攻击用户的目的。代码:async function(ctx, next){ ctx.set('X-XSS-Protection',0); ctx.rend...转载 2019-01-25 17:57:34 · 661 阅读 · 0 评论 -
线程池原理
如果当前线程池中的线程数小于corePoolSize,则每来一个任务,就会创建一个线程去执行这个任务; 如果当前线程池中的线程数目>=corePoolSize,则每来一个任务,会尝试将其添加到任务缓存队列当中,若添加成功,则该任务会等待空闲线程将其取出去执行;若添加失败(一般来说是任务缓存队列已满),则会尝试创建新的线程去执行这个任务; 如果队列已经满了,则在总线程数...原创 2019-02-15 14:41:05 · 186 阅读 · 0 评论 -
缓存架构设计,从此不再发愁
原创: 58沈剑 架构师之路 架构师之路年终总结(五)-缓存篇 缓存是互联网系统架构中必不可少的一环,之前花大精力系统性的写了10篇,缓存架构设计相关的文章,欢迎回顾。1.《进程内缓存究竟怎么玩?》缓存,可以分为:进程内缓存,缓存服务。文章介绍了:(1)什么是进程内缓存(2)进程内缓存的优缺点(3)进程内缓存保存一致性的3种方案(4)到底什么时候用进程内缓存文章也说明,...转载 2019-02-11 10:47:03 · 269 阅读 · 0 评论 -
JavaBean的boolean isXXX反序列化问题
JavaBean的boolean isXXX反序列化问题JavaBean规范中规定boolean的getter/setter 为isXXX/setXXX,包装类Boolean的getter/setter 为getXXX/setXXX,其中XXX为变量名(IDE生成代码默认就是这种格式)。当编写代码出现不规范命名,将boolean 变量声明为isXXX时,为了保证序列化与反序列化,需将isX...转载 2019-01-31 10:27:39 · 737 阅读 · 0 评论 -
为什么阿里巴巴禁止开发人员使用isSuccess作为变量名(修订版)
在日常开发中,我们会经常要在类中定义布尔类型的变量,比如在给外部系统提供一个RPC接口的时候,我们一般会定义一个字段表示本次请求是否成功的。关于这个”本次请求是否成功”的字段的定义,其实是有很多种讲究和坑的,稍有不慎就会掉入坑里,作者在很久之前就遇到过类似的问题,本文就来围绕这个简单分析一下。到底该如何定一个布尔类型的成员变量。一般情况下,我们可以有以下四种方式来定义一个布尔类型的成员变量...转载 2019-02-11 16:28:53 · 207 阅读 · 0 评论 -
mybatis 批量插入以及merge into用法
一、mybiats foreach标签<insert id="insertBatch" parameterType="List">INSERT INTO TStudent(name,age)<foreach collection="list" item="item" index="index" open="("close=")&原创 2019-03-06 12:16:10 · 15070 阅读 · 6 评论 -
为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作
摘要:在阿里巴巴Java开发手册中,有这样一条规定:  但是手册中并没有给出具体原因,本文就来深入分析一下该规定背后的思考。 foreach循环 Foreach循环(Foreach loop)是计算机编程语言中的一种控制流程语句,通常用来循环遍历数组或集合中的元素。GitHub 1.7k Star 的Java工程师成神之路,不来了解一下吗?GitHub 1.7k Star 的Java...转载 2019-04-02 09:13:20 · 136 阅读 · 0 评论 -
JConsole连接java程序
Jconsole程序在%JAVA_HOME%/bin目录下-Djava.rmi.server.hostname=127.0.0.1-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port=8888-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun....原创 2019-04-08 09:54:04 · 263 阅读 · 0 评论 -
CopyOnWriteArrayList源码分析
CopyOnWtiteArrayList的读操作性能优越,但是基于CopyOnWtiteArrayList的写操作性能却不尽人意。以下是CopyOnWriteArrayList的add()方法实现。 public E set(int index, E element) { final ReentrantLock lock = this.lock; lock...原创 2019-04-18 09:38:29 · 143 阅读 · 0 评论 -
服务器CPU负载过高,如何定位问题
CPU负载过高解决问题过程:1,根据top命令,发现PID为12433的Java进程占用CPU高达300%,出现故障。2,找到该进程后,如何定位具体线程或代码呢,首先显示线程列表,并按照CPU占用高的线程排序:[root@localhost logs]# ps -mp 12433 -o THREAD,tid,time | sort -rn显示结果如下:USER %CPU P...转载 2019-05-21 17:43:18 · 3499 阅读 · 0 评论 -
JVM垃圾回收之引用计数法
1.引用计数法 引用计数法是历史最悠久的一种算法,最早George E.Collins 在1960的时候首次提出,50年后的今天,该算法依然被很多编程语言使用。1.1原理 假设有一个对象A,任何一个对象对A的引用,那么对象A的引用计数器+1,当引用失败时,对象A的引用计数器就-1,如果对象A的计数器的值为0,那说明对象A没有引用了,可以被回收。1.2 优缺点优点:...原创 2019-06-14 09:53:24 · 876 阅读 · 0 评论 -
JVM垃圾回收之标记压缩算法
标记压缩算法是在标记清除算法的基础之上,做了优化改进的算法。和标记清除算法一样,也是从根节点开始,对对象的引用进行标记,在清理阶段,并不是简单的清理未标记的对象,而是将存活的对象压缩到内存的一端,然后清理边界以外的垃圾,从而解决了碎片化的问题。原理优缺点优缺点同标记清除算法,解决了标记清除算法的碎片化的问题,标记压缩算法多了一步,对象移动内存位置的步骤,其效率也有一定的影响。...原创 2019-06-18 22:38:45 · 506 阅读 · 0 评论 -
JVM垃圾回收之复制算法
复制算法的核心就是,将原有的内存空间一分为二,每次只用其中的一块,在垃圾回收时,将正在使用的对象复制到另外一个内存空间中,然后将该内存空间清空,交换两个内存的角色,完成垃圾回收。如果内存中的垃圾对象较多,需要复制的对象就较少,这种情况下适合使用该方式并且效率比较高,反之,则不适合。...原创 2019-06-19 09:22:54 · 4220 阅读 · 0 评论 -
JVM垃圾回收的常见算法
JVM垃圾回收之引用计数法 JVM垃圾回收之标记清除法 JVM垃圾回收之标记压缩算法 JVM垃圾回收之复制算法 JVM垃圾回收之分代算法原创 2019-06-15 13:07:00 · 325 阅读 · 0 评论 -
JVM垃圾回收之标记清除法
标记清除法标记清除算法,是将垃圾回收分为2个阶段,分别是标记和清除标记:从根节点开始标记引用的对象。 清除:未被标记引用的对象就是垃圾对象,可以被清理。原理这张图代表的是程序运行期间所有对象的状态,他们的标志位全部是0(也就是未标记,以下默认0就是未标记,1为已标记),假设这会儿有效内存空间耗尽了,JVM将会停止应用程序的运行并开启GC线程,然后开始进行标记工作,按照根搜索算法,...原创 2019-06-15 14:55:50 · 1044 阅读 · 0 评论 -
JVM垃圾回收之分代算法
分代回收算法其实是这样的,根据对象的特点进行选择,在jvm中,年轻代适合使用复制算法,老年代适合使用标记清除或者标记压缩算法。这种算法的主要思想就是将内存 划分为不同的几块 然后根据各个年到的特点采用最适当的收集算法。在新生代 每次垃圾回收时 都有大批量的对象死去,只有少量存活那就采用–复制算法。而老年代因为存活率较高 采用标记清除 或者标记整理算法来分配空间。分代收集算法,并不是...原创 2019-06-19 22:32:41 · 1123 阅读 · 1 评论 -
Arthas实践
Arthas实践:是哪个Controller处理了请求?转载 2019-06-11 20:50:14 · 222 阅读 · 0 评论 -
Apache Jmete进行测试
Apache Jmeter是开源的压力测试工具,我们借助于此工具进行测试,将测试出tomcat的吞吐量等信息。下载安装下载地址:http://jmeter.apache.org/download_jmeter.cgi安装:直接将下载好的zip压缩包进行解压即可。进入bin目录,找到jmeter.bat文件,双击打开即可启动。第一步 保存测试用例第二步 :...原创 2019-06-23 12:06:11 · 176 阅读 · 0 评论 -
垃圾收集器以及内存分配
目录串行垃圾收集器并行垃圾收集器ParallelGC垃圾收集器CMS垃圾收集器G1垃圾收集器在jvm中实现了多种垃圾收集器,包括:串行垃圾收集器、并行垃圾收集器、CMS(并发)垃圾收集器、G1垃圾收集器,接下来,我们一个一个的了解学习。 串行垃圾收集器 串行垃圾收集器,是指使用单线程进行垃圾回收,垃圾回收时,只有一个线程在工作,并且java应用中的所有线程都...原创 2019-06-25 09:51:54 · 217 阅读 · 0 评论 -
通俗易懂的双亲委派机制
你得先知道在介绍双亲委派机制的时候,不得不提ClassLoader。说ClassLoader之前,我们得先了解下Java的基本知识。 Java是运行在Java的虚拟机(JVM)中的,但是它是怎么就运行在JVM中了呢?我们在IDE中编写的Java源代码被编译器编译成.class的字节码文件。然后由我们得ClassLoader负责将这些class问价加载到JVM中去执行。 JVM中提...转载 2019-07-24 22:35:07 · 271 阅读 · 0 评论 -
linux命令
1、查看当前系统是什么版本root@Web-cwP02:/data/server# cat /proc/versionLinux version 4.4.0-62-generic (buildd@lcy01-30) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #83-Ubuntu SMP Wed Jan 18 ...原创 2019-09-19 14:32:58 · 243 阅读 · 1 评论
分享