自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(126)
  • 收藏
  • 关注

原创 JVM垃圾回收算法和回收器总结

垃圾回收算法可以分为4类:复制收集算法,标记清除算法,标记整理算法,引用计数算法.jdk1.8默认--Parallel Scavenge(新生代)+Parallel Old(老年代).新生代/老年代回收都会导致全程stw. --younggc/oldgc/fullgc 都会全程stw.gc线程的工作内存--标记存活线程,清除非存活线程.新生代的收集器-- 新生代都是 复制收集算法 serial--单线程收集...

2022-01-21 15:13:58 383

原创 spring事务失效之动态代理

Spring提供了数据库事务管理,只需要在含有数据库层操作的方法或类上使用注解@Transactional,Spring会自动帮我们管理数据库事务。比如当数据库操作逻辑执行发生异常后,Spring会将当前的事务回滚。当我们在使用@Transactiona完成Spring 事务管理的时候,有时会出现由于某些细节没有掌握、使用不当,从而导致Spring没有实现事务管理功能。导致Spring事务失效的场景有很多,今天我们只是从动态代理的角度去探究导致Spring事务失效的原因。Spring使用注解@Tra

2021-09-02 13:31:12 845 1

原创 Stream流基础玩法.

Stream流在Java 8中,得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类库既有的弊端。引言传统集合的多步遍历代码几乎所有的集合(如Collection接口或Map接口等)都支持直接或间接的遍历操作。而当我们需要对集合中的元素进行操作的时候,除了必需的添加、删除、获取外,最典型的就是集合遍历。例如:public class Demo10ForEach { public static void main(String[] args)

2021-01-25 11:29:07 308

原创 java判断对象存活问题

1.为什么要判断对象是否存活?判断方式有哪些?jvm堆中,只有判断对象死亡才会进行回收.(除了大对象),一般有两种方式,引用计数法和引用链法(可达性分析法).2.引用计数法是什么?给Java对象添加一个引用计数器,每当有一个地方引用它时,计数器 +1;引用失效则 -1;3.引用链法(可达性分析法)是什么?当一个对象到GC Roots没有任何引用链相连时,则判断该对象不可达.1.可达性分析2.第一次标记 & 筛选3.第二次标记 & 筛选可达性分析,不可达不足以判断...

2020-12-30 11:29:51 162 1

原创 多种hash方式记录

System.out.println("a".hashCode());System.out.println(Objects.hashCode("a"));System.out.println(Objects.hash("a"));输出结果:97 97 128注意:hash值归根上不是内存地址,但是可以认为hash值不同内存地址也不同,hash值相同,内存地址相同....

2020-12-18 10:44:32 116

原创 CMS和G1的区别

CMS收集器和G1收集器的区别:CMS收集器只能充当老年代的收集器.G1收集器收可以充当新生代和老年代的收集器.CMS收集器是使用“标记-清除”算法进行的垃圾回收,容易产生内存碎片G1收集器使用的是“标记-整理”算法,进行了空间整合,降低了内存空间碎片。CMS导致给大对象分配内存时因内存碎片过多而导致fullgc.增加了fullgc频繁次数.G1可以充分利用多核cpu的硬件优势,使用多核cpu来缩短STW的停顿时间.总结:G1支持新生代和老年代,利用多核cpu优势,缩短STW停顿时间,整理内

2020-12-18 10:25:03 1328 2

原创 解决分布式事务中强一致性和最终一致性的思想

1.A和B微服务,如果A成功,B失败,此时A回滚为之前的状态,即A和B都失败,此时满足强一致性.lcn框架来解决强一致性.本地事务执行前会先创建txManage事务组对象.里面存放事务组信息,当B事务执行失败时,本地事务会根据这个事务组信息来判定成功还是失败,失败的话会回滚.2.A和B微服务,如果A成功,B失败,此时通过RocketMQ重试,xxl-job等方式进行让B最终也成功,此时满足事务的最终一致性.RocketMQ的半消息,消息回查,重试机制,以及xxl-job捞失败的核心参数走相应逻辑,

2020-12-17 18:20:00 1000

原创 mysql主键自增和uuid的区别?

自增主键:新增数据时,位置相对固定(B+树中的右下角)增加数据插入效率,减少插入的磁盘IO消耗,每页的空间在填满的情况下再去申请下一个空间,底层物理连续性更好.UUID:由于UUID是随机生成的 插入时位置具有一定的不确定性,无序插入,会存在许多内存碎片,内存空间的占用量也会比自增主键大....

2020-12-17 18:15:28 469

原创 mysql的快照读和当前读的区别和联系?

mysql快照读是什么?通过mvcc多版本并发控制来进行快照读,但是读取的是历史数据.因为mysql默认的是可重复读,可重复读不能防止幻读.此时我们要通过mysql的间隙所来实现当前读来防止幻读.当前读怎么实现?通过next-key lock.next-key lock是由行锁和间隙锁来实现的.间隙锁-锁加在不存在的空闲空间.锁住的是一个范围.select * from user where user_id > 100 for update;...

2020-12-17 18:05:02 936 1

原创 docker和k8s的关系

什么是docker?Docker是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化。什么是k8s?k8s是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。总结:我们用k8s来管理docker集群.(docker是被k8s管理的玩意)...

2020-12-17 18:02:00 352

原创 基础排序总结

冒泡排序思路:俩俩交换,大的放在后面,第一次排序后最大值已在数组末尾。因为俩俩交换,需要n-1趟排序(比如10个数,需要9趟排序)代码实现要点:两个for循环,外层循环控制排序的趟数,内层循环控制比较的次数。每趟过后,比较的次数都应该要减1选择排序思路:找到数组中最大的元素,与数组最后一位元素交换。当只有一个数时,则不需要选择了,因此需要n-1趟排序代码实现要点:两个for...

2020-03-16 09:59:29 189

原创 压测工具JMeter使用总结

压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使我们能根据其做出一些应对措施。所以压力测试是一个非常重要的步骤,下面我带大家来使用一款压力测试工具JMeter。 JMeter官网https://jmeter.apache.org/ 这里我选用了 4.0 ...

2020-03-13 16:00:25 288

原创 2019 idea 插件刷新不出来的解决方案!

Settings--HTTP Proxy--勾选Auto-dectect proxy settings--输入http://127.0.0.1:1080.备注:输入的http://127.0.0.1:1080 前后都没有空格,否则无效.

2020-02-10 15:33:54 3621 1

转载 RocketMq的分布式事务总结-转载.

转载:https://www.cnblogs.com/qdhxhz/p/11191399.html写的非常好,看着流口水,感谢博主让小弟转载.

2019-12-19 15:43:52 149

原创 数据库之分库分表

一.什么是分库分表.分库分为垂直分库和水平分库.1.垂直分库.(大系统拆成小系统)根据不同的业务.比如订单,库存.2.水平分库.根据id最后一位数/库的数量(2),余0,就是db1,余1就是db2.分表分为垂直分表和水平分表.3.垂直分表.(大表拆成小表)表之间字段不一样有共同的字段,例id,可以根据并集能查出所有数据.4.水平分表.如果只有分表,完全可以根据id最后一...

2019-12-18 16:33:46 312

转载 IDEA热部署设置

转载链接:https://blog.csdn.net/nihao12323432/article/details/82664601亲测可用,感谢上面博主同意转载.

2019-12-04 09:21:39 123

原创 redis分布式锁相关总结.

1.为什么会存在分布式锁的概念以及分布式锁解决了什么问题? 两个系统A和B同时使用redis,如果A系统set的key为key1,那么B系统可以删除key1么?如果可以的话显然是不对的.此时分布式锁的概念就出来了,解决的问题是多个系统共用一个redis时,保证key的互斥性以及安全性.2.分布式锁怎么实现?set(key, value, "NX", "EX", expire...

2019-11-05 13:31:11 197

原创 IDEA运行报Command line is too long解法

报错内容:Error running 'ServiceStarter': Command line is too long. Shorten command line for ServiceStarter or also for Application default configuration.解法:修改项目下 .idea\workspace.xml找到标签<compon...

2019-10-28 14:02:42 129

原创 Use try-with-resources or close this "Workbook" in a "finally" clause

今天写完代码,用sonar跑了一下,发现报Use try-with-resources or close this "workbook" in a "finally" clause.问题分析try catch之后没有 关闭workbook解决办法在catch后加上关闭代码finally{ if(null != workbook) { ...

2019-09-16 17:35:53 9437 3

原创 使用乐观锁和悲观锁的经验总结

乐观锁和悲观锁的应用场景A修改张三为李四,B修改张三为王五,同时修改的数据,都显示修改成功,那最终展示数据应该展示谁的?乐观锁顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,具体操作:在操作表上加上一个字段,放上版本号或者时间戳.悲观锁顾名思义,就是很悲观,每次去拿数据的时候都认为别人...

2019-09-06 09:19:33 129 1

原创 分布式事务解决方案GTS与TCC,实战对比

GTS--分布式事务解决方案GTS是一款分布式事务中间件,由阿里巴巴中间件部门研发,可以为微服务架构中的分布式事务提供一站式解决方案。TCC方案TCC方案在电商、金融领域落地较多。TCC方案其实是两阶段提交的一种改进。其将整个业务逻辑的每个分支显式的分成了Try、Confirm、Cancel三个操作。Try部分完成业务的准备工作,confirm部分完成业务的提交,cancel部分完成事...

2019-09-05 16:13:17 785

原创 浏览器关闭session是否消失?

正常来说一个session的存活时间是30分钟,也就是在不操作这个session的情况下,30分钟自动清除。每个session可以理解为有一个自己唯一的sessionId,关闭浏览器,再打开,有附带创建一个新的sessionId,这个sessionId是空的,导致误认为session失效,其实本质上讲是sessionId没找到. 当然如果浏览器关闭的话cookie是会自动...

2019-08-21 16:55:12 694

转载 Dubbo+zokeeper基础讲解

声明:原文出处已在文末标出,本人出于学习,对其做了整理,收集干货,不作商业用途!一、dubbo是什么?1)本质:一个Jar包,一个分布式框架,,一个远程服务调用的分布式框架。既然是新手教学,肯定很多同学不明白什么是分布式和远程服务调用,为什么要分布式,为什么要远程调用。我简单画个对比图说明(图1看到图2。画板画的,勿喷)。你想一下,以前什么的都在一个服务器上,调用方法直接就自...

2019-08-06 11:43:05 183

转载 IDEA中Git的使用

工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下:假设小组中有两个人,组长小张,组员小袁场景一:小张创建项目并提交到远程Git仓库场景二:小袁从远程Git仓库上获取项目源码场景三:小袁修改了部分源码,提交到远程仓库场景四:小张从远程仓库获取小袁的提交场景五:小袁接受了一个新功能的任务,创建了一个分支并在分支上开发场景六:小袁把分支提交到远程Git仓库场景七...

2019-07-30 15:01:29 109

转载 【mysql】Date和String的互相转换(DATE_FORMAT & STR_TO_DATE)

1.Date ——> String 使用的函数:DATE_FORMAT(date,format) date:需要转换的日期 format:格式化的样式 format样式整理: 年:%Y 显示四位 : 2015 %y 只显示后两位 :15 月:%M月份的英文显示:Octobe...

2019-07-29 09:47:30 168

转载 idea,多个model下有同名的class,debug进错了,切换方法

file-->settings-->build,execution,deployment-->debugger把show alternative source switcher 勾上;

2019-07-17 14:10:00 505 1

转载 SQL语句执行顺序

1.查询中用到的关键词主要包含六个,并且他们的顺序依次为select--from--where--group by--having--order by其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序与sql语句的书写顺序并不是一样的,而是按照下面的顺序来执行from--where--group by--having--select--or...

2019-07-11 10:25:56 164

原创 mysql中的where和having的区别

下面以一个例子来具体的讲解:1. where和having都可以使用的场景1)select addtime,name from dw_users where addtime> 15000000002)select addtime,name from dw_users having addtime> 1500000000解释:上面的having可以用的前提是我已经筛选出了...

2019-07-11 08:52:34 120

原创 springboot获取application.yml配置文件属性值

1、application.yml配置文件内容如下:sms: smsIp: shmtn.b2m.cn2、示例:获取 sms下的 smsIp属性值:在controller中:@Value("${sms.smsIp}") private String smsIp;

2019-06-03 13:29:55 12791

原创 mybatis中Illegal mix of collations for operation 'like' 错误解决方法

a.create_date LIKE binary concat('%',#{keyword},'%') --日期必须加上 binary 不然模糊搜索搜汉字会报错!!!

2019-05-14 11:23:47 252

原创 FastDFS--清晰简介(大出血分享!!!)

fastdfs 清晰简介 有用是什么? FastDFS是一个轻量级分布式文件系统。能干嘛? 对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等。在Linux上的安装连接 《FastDFS在Linux上的安装》相关概念 一、网络拓扑图 对上...

2019-05-13 10:33:39 271

转载 for,foreach,iterator的用法和区别

相同点: 三个都可以用来遍历数组和集合不同点:1.形式差别for的形式是for(int i=0;i<arr.size();i++){...}foreach的形式是for(int i:arr){...}i...

2019-05-09 17:11:13 344

转载 java中new一个对象和对象=null有什么区别

今天在写代码时,遇到一个问题,特此进行记录。for (ProfileDto profileDto : profile) { // Profile resProfile=null; Profile resProfile=new Profile(); // 将profileDto对象的...

2019-05-09 09:16:50 1673

原创 mybatis invalid comparison: java.sql.Timestamp and java.lang.String

错误代码:<if test="updateDate != null&&updateDate!=''"> AND a.update_date = #{updateDate}</if>修改后:<if test="updateDate != null"> AND a.update_date = #{updateDate}</...

2019-05-06 19:01:30 702

原创 解决idea使用SVN提交时performing vcs refresh卡住的问题

选择 File --> Invalidate Caches / Restart -->Invalidate and Restart,idea重启之后就好了

2019-05-06 14:30:07 4577 5

原创 StringUtils.isEmpty和StringUtils.isBlank用法和区别

判断集合list!=null&&list.size()>0判断数组array!=null&&array.length>0isBlank判断的空字符是包括了isEmpty的。换句话说,isEmpty判断的范围更小,只是在没有字符的情况下。下面他们的具体用法:1. public static boolean isEmpty(String str)...

2019-04-24 20:01:14 92

原创 5分钟了解IDEA的dubug使用相关.

0|1一、基本介绍本篇文章是基于IntelliJ IDEA2018.1.6版本,最新的版本2018.2已经出来了,支持Java11,Debug模式的图标设计虽有微调改动,但是功能大体相通.IDEA用的时间不长,浏览各种博客对debug进行总结,如下:>>>先来看下最左侧的各个按键,自上而下:1.重启项目,快捷键Ctrl + F5,一般在你的代码有改动后可执行这...

2019-04-03 16:55:31 355

原创 String...和String[]区别

类型后面三个点(String…),是从Java 5开始,Java语言对方法参数支持一种新写法,叫可变长度参数列表,其语法就是类型后跟…,表示此处接受的参数为0到多个Object类型的对象,或者是一个Object[]。 例如我们有一个方法叫做test(String…strings),那么你还可以写方法test(),但你不能写test(String[] strings),这样会出编译错误,系统提示出现...

2019-04-01 15:20:25 351

原创 idea中springboot项目程序入口右键不显示run as!!!

今天在idea中导入了springboot的项目,但是在程序的入口处右键单击没有出现run as 的程序启动方式,主要原因在于idea中右面的maven projects中没加载项目,需要点击“+“号,添加项目,然后进行项目的编译打包,这时程序启动的入口注解应该显示的是黄色,按住control键点击进去可以直接看到这个注解的源码,这个时候你在点击右键,就应该可以看到run as的按钮。如下图:...

2019-03-29 10:59:21 4393

原创 Intellij idea 错误提示信息不能复制的问题!!!

点开错误信息,按住Alt,鼠标选择错误信息.--复制成功!!!

2019-03-28 14:39:13 1072 1

空空如也

空空如也

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

TA关注的人

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