自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (2)
  • 收藏
  • 关注

转载 spring事务不生效的15种场景

事务不生效的原因:spring事务方法addTianLuo的访问权限不是public,所以事务就不生效啦,因为Spring事务是由AOP机制实现的,AOP机制的本质就是动态代理,而代理的事务方法不是public的话,computeTransactionAttribute()就会返回null,也就是这时事务属性不存在了。事务不生效的原因: 事务是通过Spring AOP代理来实现的,而在同一个类中,一个方法调用另一个方法时,调用方法直接调用目标方法的代码,而不是通过代理类进行调用。否则,创建一个新事务。

2023-04-13 12:00:02 940 2

原创 ArrayList为什么不是线程安全的,如何保证线程安全?

CopyOnWriteArrayList的写操作与Vector的遍历操作性能消耗尤其严重,不推荐使用。CopyOnWriteArrayList适用于读操作远远多于写操作的场景。Vector读写性能可以和Collections.synchronizedList比肩,但Collections.synchronizedList不仅可以包装ArrayList,也可以包装其他List,扩展性和兼容性更好。

2023-03-22 15:22:25 2794

原创 G1中的技术细节

一般来说,卡页大小 都是以 2 的 N 次幂的字节数,假设使用的卡页是 2 的 10 次幂,即 1M,内存区域的起始地址是 0x0000 的话,数组 CARD_TABLE 的第 0、1、2 号元素,分别 对应了地址范围为 0x0000~0x03FF、0x0400 ~ 0x07FF、0x0800~0x011FF 的卡页内存。由于新生代的垃圾收集通常很频繁,如果老年代对象引用了新生代的对象,那么回收新生代的话,需要跟踪从老 年代到新生代的所有引用,所以要避免每次 YGC 时扫描整个老年代,减少开销。

2023-02-28 17:03:01 168

转载 JVM垃圾收集之三色标记算法详解

在可达性分析的初始阶段,所有对象都是白色,一旦访问了这个对象,那么就变成灰色,一旦这个对象所有直接引用的对象都访问过(或者没有引用其它对象),那么就变成黑色 初始标记之后,GC Root节点变为黑色(GC Root不会是垃圾),GC Root直接引用的对象变为灰色 正常情况下,一个对象如果是黑色,那么其直接引用的对象要么是黑色,要么是灰色,不可能是白色(如果出现了黑色对象直接引用白色对象的情况,就说明漏标了,就会导致对象误删,后面会介绍如何解决),这个特性也可以说是三色标记算法正确性保障的前提条件。

2023-02-28 12:17:27 466

原创 Spring源码下载流程(Mac OS)

环境准备OS:MacOS一、下载Spring源码1 方式1-Github官方主意选择release版本下载,网速太慢,不建议是使用该方法下载。2 方式2-Gitee二.修改配置文件在解压完后的目录下,有几个配置文件我们需要提前修改:第一步:搜索repositories,添加阿里云maven镜像仓库第二步:搜索,将其注释掉因为使用gradlew(gradle-wrapper命令) 先编译的操作,可能会导致进度条卡在0%很长时间,编译过程相当缓慢!第一行。

2023-02-24 12:16:53 1348

转载 RocketMQ 的存储模型

假如有一个 consumerGroup 消费者,订阅主题 my-mac-topic ,因为 commitlog 包含所有的消息数据,查询该主题下的消息数据,需要遍历数据文件 commitlog , 这样的效率是极其低下的。因为这两个消息的 key 的 hash 值相同,它们对应的哈希槽(深黄色)也会相同,哈希槽会保存的最新的消息 B 的索引条目序号 , 序号值是 4 ,也就是第二个深绿色条目。一对多通信:基于独立身份的设计,同一个主题内的消息可以被多个订阅组处理,每个订阅组都可以拿到全量消息。

2023-02-21 11:12:26 94

转载 线程池的基本原理

线程池

2022-12-23 16:22:18 52

原创 分布式事务解决方案

分布式事务

2022-12-21 15:19:30 82 1

转载 分布式延时任务方案解析

分布式延时任务方案解析一级目录方案分析(1)数据库轮询(2)JDK的延迟队列(3)时间轮算法(4)redis缓存(5)使用消息队列补充一级目录在开发中,往往会遇到一些关于延时任务的需求。例如生成订单30分钟未支付,则自动取消生成订单60秒后,给用户发短信对上述的任务,我们给一个专业的名字来形容,那就是延时任务。那么这里就会产生一个问题,这个延时任务和定时任务的区别究竟在哪里呢?一共有如下几点区别定时任务有明确的触发时间,延时任务没有定时任务有执行周期,而延时任务在某事件触发后一

2021-01-28 15:22:46 929

转载 浅谈数据库优化

浅谈数据库优化浅谈数据库优化MySQL 架构解析优化策略数据类型优化索引优化索引结构与算法索引注意点特定语句优化Count化group by优化Limit优化Union优化性能分析工具开启慢查询日志使用profile语句使用explain语句总结浅谈数据库优化在面试的时候经常会被问到数据库如何优化的?面试的时候最担心遇到这种宽泛的问题。如果你直接说:“建索引” 类似这样简单的回答,个人感觉这种回答很不专业,面试官也不会喜欢这样的回答。虽然我们不需要像DBA一样对数据库有非常深入的研究,但是至少应该对这种

2021-01-27 10:21:49 118

转载 Redis高并发和快速的原因

Redis高并发和快速的原因一.Redis的高并发和快速原因二.为什么Redis是单线程的三.Redis单线程的优劣势四.Redis高并发快总结一.Redis的高并发和快速原因1.redis是基于内存的,内存的读写速度非常快;2.redis是单线程的,省去了很多上下文切换线程的时间;3.redis使用多路复用技术,可以处理并发的连接。非阻塞IO 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在

2021-01-26 16:15:48 78

转载 常用4种限流算法介绍及比较

1、计数器(固定窗口)算法计数器算法是使用计数器在周期内累加访问次数,当达到设定的限流值时,触发限流策略。下一个周期开始时,进行清零,重新计数。此算法在单机还是分布式环境下实现都非常简单,使用redis的incr原子自增性和线程安全即可轻松实现。这个算法通常用于QPS限流和统计总访问量,对于秒级以上的时间周期来说,会存在一个非常严重的问题,那就是临界问题,如下图:假设1min内服务器的负载能力为100,因此一个周期的访问量限制在100,然而在第一个周期的最后5秒和下一个周期的开始5秒时间段

2021-01-26 15:42:15 162

原创 Effective Java 总结笔记

Effective Java 总结笔记第二章创建和销毁对象第三章对于所有的对象都有通用的方法第四章类和接口第五章C语言结构的代替第六章方法第7章通用程序设计第8章异常第9章线程第10章序列化第二章创建和销毁对象大数操作可以使用BigInteger操作大整数可以使用BigDecimal指定小数的保留位数现在我们来看一道华为的机试题:写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )package huawei.job;import java.io.Buf

2021-01-26 13:06:09 280

原创 HashMap底层执行原理

HashMap底层执行原理HashMap结构Hash算法Hash冲突扩容红黑树HashMap结构HashMap结构:数组+链表+红黑树(JDK1.8)特点:快速存储;快速查找(复杂度O(1));可伸缩Hash算法Hash算法:所有对象都有HashCode(使用key)Hash计算:(hashCode)^(hashCode>>>16)数组下标计算:数组默认大小16数组下标:hash&(16-1) = hash%16Hash冲突Hash冲突:不同对象计算出来的下标相

2021-01-26 12:56:22 77 1

转载 100个高质量Java开发者博客

本文的主要目的是收集全球范围内100个高质量Java开发者博客。其中会有一些博客并不是由纯粹的Java开发者撰写的,但是Java开发者们能够从中发现一些有用的或者有趣的东西。阅读这些博客将会非常有趣,有时会给你带来一些新鲜的想法。Google的排名算法中,大型网站的排位会比较高。这对一些小型的高质量博客来说并不公平。有些站点的流量非常大,但是质量并不高。我对高质量的定义是:文章具有可读性并且是原创...

2021-01-26 12:38:14 73

转载 高质量Java开发者博客

本文的主要目的是收集全球范围内100个高质量Java开发者博客。其中会有一些博客并不是由纯粹的Java开发者撰写的,但是Java开发者们能够从中发现一些有用的或者有趣的东西。阅读这些博客将会非常有趣,有时会给你带来一些新鲜的想法。Google的排名算法中,大型网站的排位会比较高。这对一些小型的高质量博客来说并不公平。有些站点的流量非常大,但是质量并不高。我对高质量的定义是:文章具有可读性并且是原创...

2018-05-02 09:57:11 101

原创 Effective Java 总结笔记

第二章创建和销毁对象大数操作可以使用BigInteger操作大整数可以使用BigDecimal指定小数的保留位数现在我们来看一道华为的机试题:        写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )package huawei.job;import java.io.BufferedReader;import java.io.IOException;i...

2018-04-04 16:49:09 628

转载 Java中的锁

公平锁和非公平锁点击打开链接公平锁是指多个线程在等待同一个锁时,必须按照申请锁的先后顺序来一次获得锁。公平锁的好处是等待锁的线程不会饿死,但是整体效率相对低一些;非公平锁的好处是整体效率相对高一些,但是有些线程可能会饿死或者说很早就在等待锁,但要等很久才会获得锁。其中的原因是公平锁是严格按照请求所的顺序来排队获得锁的,而非公平锁时可以抢占的,即如果在某个时刻有线程需要获取锁,而这个时候刚好锁可用,...

2018-04-04 11:33:40 91

深入Java虚拟机(原书第2版).pdf

本书作者曾因本书荣获专业技术杂志《Java Report》评选的优秀作者奖,细心的读者可以从网上找到许多对本书第1版的赞誉。作者以易于理解的方式深入揭示了Java虚拟机的内部工作原理,深入理解这些内容,将对读者更快速地编写更高效的程序大有裨益! 本书共分20章,第1-4章解释了Java虚拟机的体系结构,包括Java栈、堆、方法区、执行引擎等;第5-20章深入描述了Java技术的内部细节,包括垃圾收集、Java安全模型、Java的连接模型和动态扩展机制、class文件、运算及流程控制等等,其中第6章和附录A-C安全可以作为class文件和指令集的参考手册。本书还附带光盘,光盘中包含用以辅助说明正文内容的交互式例示applet及示例源代码。

2015-08-12

GitHubSetup

一个很实用的管理代码工具,希望大家能够多了解

2015-08-03

空空如也

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

TA关注的人

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