自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (3)
  • 收藏
  • 关注

原创 什么时候对象进入老年代?什么时候触发Full GC?如何减少长时间的 GC 停顿?

1. Minor GC 和 Full GC 的含义及区别?Minor GC(新生代GC):指发生在新生代的垃圾收集动作,新生代中的对象朝生夕死,所以 Minor GC 非常频繁,回收速度也比较快。Full GC(老年代GC):指发生在老年代的GC,速度一般比 Minor GC 慢十倍以上。如果有Full,说明这次GC发生了Stop-The-World。2. 什么时候对象进入老年代?大对象直接进入老年代。 虚拟机提供了一个阈值参数,令大于这个设置值的对象直接在老年代中分配。如果大对象进入新生代,

2021-04-13 15:24:00 3003

原创 GC如何判断对象可以被回收

GC如何判断对象可以被回收在堆里面存放着Java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象中那血还“存活”着,哪些已经"“死去”"(“死去”即不可能再被任何途径使用的对象)了。对象已死?引用计数法每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收。可达性分析算法从GC Roots开始向下搜索,搜索所走过的路径成为引用链。当一个对象到GC Root没有任何引用链相连时,则证明此对象是不可用的,那么虚拟机就判断是

2021-03-01 00:42:36 335

原创 GC如何判断对象可以被回收

在堆里面存放着Java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象中那血还“存活”着,哪些已经"“死去”"(“死去”即不可能再被任何途径使用的对象)了。对象已死?引用计数法每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收。可达性分析算法从GC Roots开始向下搜索,搜索所走过的路径成为引用链。当一个对象到GC Root没有任何引用链相连时,则证明此对象是不可用的,那么虚拟机就判断是可回收对象。引用计数

2021-03-01 00:40:39 301

原创 oracle配置使用PL/SQL

一般在使用plsql时,会结合oracle客户端来使用,这样方便把数据库连接信息添加到plsql中。不过oracle客户端软件有点庞大,安装起来不太方便,所以在网上找到一种不依赖oracle客户端来使用plsql的方法。1、虽然不用oracle客户端,但是也要用到一个工具包--instantclient,可以到oracle官网下载(https://www.oracle.com/technetwork/topics/winsoft-085727.html)2、具体操作步骤(1)把下载好的安装包in

2020-11-09 22:22:05 445

原创 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 522

原创 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 505

原创 第三方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 624

原创 declare 存储过程创建

一个简单地应用,日期循环初始化到表中。declare v_date date; begin for pnum in 1..5000 loop v_date:=sysdate+pnum; insert into t_sn values (to_char(v_date,'yyyyMMdd'),1);...

2019-12-31 14:48:16 798

原创 使用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 195

原创 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 172 1

转载 通俗易懂的双亲委派机制

你得先知道在介绍双亲委派机制的时候,不得不提ClassLoader。说ClassLoader之前,我们得先了解下Java的基本知识。 Java是运行在Java的虚拟机(JVM)中的,但是它是怎么就运行在JVM中了呢?我们在IDE中编写的Java源代码被编译器编译成.class的字节码文件。然后由我们得ClassLoader负责将这些class问价加载到JVM中去执行。 JVM中提...

2019-07-24 22:35:07 231

原创 PL/SQL Developer配置使用手册(整理)

1、记住登录密码步骤:【tools】->【Preferences】-> [左侧面板]【Oracle --> Logon History】,勾选上"Store withpassword" 选项即可,如下图所示:2、设置执行单条SQLNOTE:默认按F8执行的是该窗口的所有SQL语句,该配置主要实现只执行鼠标所在的那条SQL语句。步骤:【tools】-&...

2019-07-24 19:22:56 874

原创 垃圾收集器以及内存分配

目录串行垃圾收集器并行垃圾收集器ParallelGC垃圾收集器CMS垃圾收集器G1垃圾收集器在jvm中实现了多种垃圾收集器,包括:串行垃圾收集器、并行垃圾收集器、CMS(并发)垃圾收集器、G1垃圾收集器,接下来,我们一个一个的了解学习。 串行垃圾收集器 串行垃圾收集器,是指使用单线程进行垃圾回收,垃圾回收时,只有一个线程在工作,并且java应用中的所有线程都...

2019-06-25 09:51:54 152

原创 Apache Jmete进行测试

Apache Jmeter是开源的压力测试工具,我们借助于此工具进行测试,将测试出tomcat的吞吐量等信息。下载安装下载地址:http://jmeter.apache.org/download_jmeter.cgi安装:直接将下载好的zip压缩包进行解压即可。进入bin目录,找到jmeter.bat文件,双击打开即可启动。第一步 保存测试用例第二步 :...

2019-06-23 12:06:11 141

原创 JVM垃圾回收之分代算法

分代回收算法其实是这样的,根据对象的特点进行选择,在jvm中,年轻代适合使用复制算法,老年代适合使用标记清除或者标记压缩算法。这种算法的主要思想就是将内存 划分为不同的几块 然后根据各个年到的特点采用最适当的收集算法。在新生代 每次垃圾回收时 都有大批量的对象死去,只有少量存活那就采用–复制算法。而老年代因为存活率较高 采用标记清除 或者标记整理算法来分配空间。分代收集算法,并不是...

2019-06-19 22:32:41 1038 1

原创 JVM垃圾回收之复制算法

复制算法的核心就是,将原有的内存空间一分为二,每次只用其中的一块,在垃圾回收时,将正在使用的对象复制到另外一个内存空间中,然后将该内存空间清空,交换两个内存的角色,完成垃圾回收。如果内存中的垃圾对象较多,需要复制的对象就较少,这种情况下适合使用该方式并且效率比较高,反之,则不适合。...

2019-06-19 09:22:54 4106

原创 JVM垃圾回收之标记压缩算法

标记压缩算法是在标记清除算法的基础之上,做了优化改进的算法。和标记清除算法一样,也是从根节点开始,对对象的引用进行标记,在清理阶段,并不是简单的清理未标记的对象,而是将存活的对象压缩到内存的一端,然后清理边界以外的垃圾,从而解决了碎片化的问题。原理优缺点优缺点同标记清除算法,解决了标记清除算法的碎片化的问题,标记压缩算法多了一步,对象移动内存位置的步骤,其效率也有一定的影响。...

2019-06-18 22:38:45 425

原创 JVM垃圾回收之标记清除法

标记清除法标记清除算法,是将垃圾回收分为2个阶段,分别是标记和清除标记:从根节点开始标记引用的对象。 清除:未被标记引用的对象就是垃圾对象,可以被清理。原理这张图代表的是程序运行期间所有对象的状态,他们的标志位全部是0(也就是未标记,以下默认0就是未标记,1为已标记),假设这会儿有效内存空间耗尽了,JVM将会停止应用程序的运行并开启GC线程,然后开始进行标记工作,按照根搜索算法,...

2019-06-15 14:55:50 954

原创 JVM垃圾回收的常见算法

JVM垃圾回收之引用计数法 JVM垃圾回收之标记清除法 JVM垃圾回收之标记压缩算法 JVM垃圾回收之复制算法 JVM垃圾回收之分代算法

2019-06-15 13:07:00 279

原创 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 801

转载 Arthas实践

Arthas实践:是哪个Controller处理了请求?

2019-06-11 20:50:14 163

转载 服务器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 3423

原创 CopyOnWriteArrayList源码分析

CopyOnWtiteArrayList的读操作性能优越,但是基于CopyOnWtiteArrayList的写操作性能却不尽人意。以下是CopyOnWriteArrayList的add()方法实现。 public E set(int index, E element) { final ReentrantLock lock = this.lock; lock...

2019-04-18 09:38:29 113

原创 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 218

转载 springboot+redis分布式锁-模拟抢单

本篇内容主要讲解的是redis分布式锁,这个在各大厂面试几乎都是必备的,下面结合模拟抢单的场景来使用她;本篇不涉及到的redis环境搭建,快速搭建个人测试环境,这里建议使用docker;本篇内容节点如下:jedis的nx生成锁 如何删除锁 模拟抢单动作(10w个人开抢)jedis的nx生成锁对于java中想操作redis,好的方式是使用jedis,首先pom中引入依赖: ...

2019-04-02 09:37:33 134

转载 为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作

摘要:在阿里巴巴Java开发手册中,有这样一条规定:  但是手册中并没有给出具体原因,本文就来深入分析一下该规定背后的思考。 foreach循环 Foreach循环(Foreach loop)是计算机编程语言中的一种控制流程语句,通常用来循环遍历数组或集合中的元素。GitHub 1.7k Star 的Java工程师成神之路,不来了解一下吗?GitHub 1.7k Star 的Java...

2019-04-02 09:13:20 97

原创 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 14345 6

原创 好用的idea插件

1、.ignore使用.ignore插件忽略不必要提交的文件2、CamelCase CamelCasePlugin是一款可以快速进行格式转换的工具,较常用到的是大小写转换、驼峰式转换等。3、Free MyBatis plugin最近在使用MyBatis框架的时候,发现Mapper接口和XML文件之间跳转十分的麻烦,经常的操作是在Mapper接口中将接口名称复制一下,然后去查...

2019-02-27 14:15:54 251

原创 线程池原理

如果当前线程池中的线程数小于corePoolSize,则每来一个任务,就会创建一个线程去执行这个任务; 如果当前线程池中的线程数目>=corePoolSize,则每来一个任务,会尝试将其添加到任务缓存队列当中,若添加成功,则该任务会等待空闲线程将其取出去执行;若添加失败(一般来说是任务缓存队列已满),则会尝试创建新的线程去执行这个任务; 如果队列已经满了,则在总线程数...

2019-02-15 14:41:05 128

转载 为什么阿里巴巴禁止开发人员使用isSuccess作为变量名(修订版)

在日常开发中,我们会经常要在类中定义布尔类型的变量,比如在给外部系统提供一个RPC接口的时候,我们一般会定义一个字段表示本次请求是否成功的。关于这个”本次请求是否成功”的字段的定义,其实是有很多种讲究和坑的,稍有不慎就会掉入坑里,作者在很久之前就遇到过类似的问题,本文就来围绕这个简单分析一下。到底该如何定一个布尔类型的成员变量。一般情况下,我们可以有以下四种方式来定义一个布尔类型的成员变量...

2019-02-11 16:28:53 169

转载 缓存架构设计,从此不再发愁

原创: 58沈剑 架构师之路 架构师之路年终总结(五)-缓存篇 缓存是互联网系统架构中必不可少的一环,之前花大精力系统性的写了10篇,缓存架构设计相关的文章,欢迎回顾。1.《进程内缓存究竟怎么玩?》缓存,可以分为:进程内缓存,缓存服务。文章介绍了:(1)什么是进程内缓存(2)进程内缓存的优缺点(3)进程内缓存保存一致性的3种方案(4)到底什么时候用进程内缓存文章也说明,...

2019-02-11 10:47:03 228

转载 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 635

转载 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 518

转载 讓我們來談談 CSRF

讓我們來談談 CSRF Update:經過朋友指出文章中缺漏的地方,於 2/26 早上新增一段講 SameSite Cookie 的段落。感謝 shik 的提點。前言最近剛好碰到一些 CSRF 的案例,趁著這次機會好好研究了一下。深入研究之後才發現這個攻擊其實滿可怕的,因為很容易忽略它。但幸好現在有些 Framework 都有內建防禦 CSRF 的功能,可以很簡單的開啟。但儘...

2019-01-25 17:23:54 181

转载 SpringBoot使用@Async注解失效分析(@Transactional事务注解失效分析)

有时候在使用的过程中@Async注解会失效(原因和@Transactional注解有时候会失效的原因一样)。下面定义一个Service:两个异步执行的方法test03()和test02()用来模拟项目中可能出现的耗时的操作,然后test()方法调用这两个耗时的方法:定义Controller:执行方法,返回结果:方法执行结果明显与我们的预期不符,方法的输出顺序表示了t...

2019-01-03 09:40:23 3687 2

转载 [网络整理] springboot @async 无效

2018年05月28日 17:01:02 ffiing 阅读数:4242版权声明:本文为博主原创文章 , 转载请注明出处 https://blog.csdn.net/qq_34545192/article/details/80484780最开始使用Springboot ,发现加上注解@Async后没有效果, 然后度了一下 ,才知道需要三步配置.在@SpringBootApplica...

2019-01-03 09:39:13 147

转载 责任链模式妙用

一说到「设计模式」,可能很多人都有听过。但是如果真的要你说说应用场景,可能会有点「难以描述」。除了应用场景比较多的单例模式你能够信手拈来,其他的可能会觉得有点难以掌握。也许压根都没用过。今天,通过本篇文章,让你对责任链模式也能够信手拈来。本篇文章通过实际项目中的例子来让你认识何为责任链模式。定义百度百科的介绍:责任链模式是一种设计模式。在责任链模式里,很多对象由每一个对象对...

2019-01-02 20:52:56 134

原创 MyBatis Criteria示例类使用说明

Simple Queries此示例显示如何使用生成的示例类生成简单的WHERE子句: TestTableExample example = new TestTableExample(); example.createCriteria().andField1EqualTo(5);或者,以下语法也适用: TestTableExample example = new Test...

2018-12-27 22:27:38 1670

转载 Spring知识积累

1.Spring中的设计模式https://mp.weixin.qq.com/s/1d0w7wffe97fiDSWyKcBrA2.Spring boot面试题整理https://blog.csdn.net/yuzongtao/article/details/84295732

2018-12-21 11:58:45 119

原创 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 1184

java设计模式介绍

详细介绍java各种设计模式。设计模式之Factory,设计模式之Prototype(原型)等

2010-08-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除