自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 我决定远离c死d嗯

开始学习开发也有几年了,从最开始的特别喜欢在c死d嗯找技术博客,到逐渐和同学吐槽c死d嗯,最后到难以忍受,我思考了很久,最终决定将战略中心转移。无论如何,我都感激那些无私分享资料的前辈,让我模糊的感受到开源的魅力。

2024-07-07 23:55:40 142

原创 group by 效率高还是distinct效率高?你得先看什么数据库。

其实取消这种操作也好,众多数据库中也就mysql有这种排序操作,而且只排序第一个group by 子句中的字段,对于不需要排序的查询需求,无疑是增加不必要的执行负担。可是group by在不同的数据库中语法是区别很大的:比如mysql中比较灵活,group by子句中的字段和select子句中字段关联不大,group by中的字段可以出现在select 中,也可以不出现。而mysql的排序还是仅限于对紧跟group by的第一个字段进行排序,多字段分组的情况下,除了第一个字段,其他的并不做排序。

2024-06-21 17:29:18 794

原创 需求:用户自定义字段展示,怎么设计?利用JAVA反射机制解决

反射在Java中使用的是比较频繁的,很多设计都会使用到,值得注意的是有些私有属性getFields()是无法获取的,必须要使用 getDeclaredFields() 方法获取全部属性。如果要操作某些属性,比如spring中的自动装配,给私有属性赋值,则需要设置field.setAccessible(true)。更多资源分享,请关注我的公众号:搜索或扫码 砥砺code。

2024-06-07 13:17:12 509

原创 面试官问:数据库如果不是SERIALIZABLE隔离级别,读和写操作可以并行(同时)执行,为什么分摊数据库压力要读写分离,不能简单的负载均衡吗?

读操作可以从从库获取数据,减少主库的压力,从而提高整体数据库性能。2、节省技术成本:将读写分离,可以降低数据库的技术成本,更多的集中精力在主库的性能优化和开发工作上。3、数据安全:将读写分离,可以显著降低主库的注入风险,保障数据库系统的安全性。4、更好的事务控制:将读写分离,可以更好的控制事务,保障数据库的完整性和一致性。5、增加可用性:将读写分离,可以有效避免主库出现故障而影响系统的可用性。(某种意义上也起到了灾备的作用)

2024-05-31 23:23:20 947

原创 定时任务线程池源码解读(读这一篇就够了)

在《并发编程的艺术》一书中对ScheduledThreadPoolExecutor的介绍还是基于jdk1.6版本,而在jdk1.7之后ScheduledThreadPoolExecutor发生了较大的变化,其使用的阻塞队列由之前的DelayQueue变成了DelayedWorkQueue。DelayedWorkQueue是DelayQueue(take进行delay判断)和PriorityQueue(堆结构)的结合。

2024-05-06 22:58:47 1063 1

原创 ConcurrentHashMap的线程安全处理真的能应对所有的线程安全,数据一致性的需求场景吗?如果ConcurrentHashMap解决不了的并发业务场景,就要用Hashtable来实现吗?

因为可能同一个业务中的另一个方法共用此Map,但是只需要put方法做互斥,防止扩容出现线程不安全等,后面会重点复现该场景)。所以很多人一提到ConcurrentHashMap就说它是线程安全的Map集合,虽然也没毛病,因为大部分的先获取再修改的逻辑,也有线程安全的computeIfAbsent,putIfAbsent来实现,但其实还是太了解它的设计目的,因为它的线程安全范围真的太小了,想要依靠JDK自带的一个集合就可以解决实际应用中复杂多变并发的线程安全和高吞吐量的需求,是很不现实的。

2024-03-11 18:54:50 1875

原创 并发限流算法的实践

保护高并发系统的三把利器是缓存、降级、限流。缓存之前讲过了,内存读取,提升相应速率,对高并发请求做暂存缓冲。熔断降级暂时也不做过多讲述,本篇主要讲限流。前面聊过网关流量控制(限流),熔断降级功能。那么限流是如何实现控制的呢?限流分瞬时流量控制和时间窗口流量;被限流的端口仍然可以提交任务,只是任务被阻塞,缓存在内存,会有OOM的风险;是对下游服务的一种保护;限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务或进行流量整形。

2024-02-29 21:50:22 605

原创 你知道线程池的线程是如何复用的吗?线程池的源码解读

线程数的设计因为不太好复现CPU的时间,所以一般都是预估;比较忌讳队列容量比较小,最大线程数又比较大,这样会造成大量的线程上下文切换,栈内存也有可能会被爆掉;也比较忌讳将阻塞队列设置成无界,会有OOM的风险不说,还会造成饥饿(虽然饥饿可以多做几个线程池解决,但是OOM肯定是无法规避)。

2024-02-03 22:43:05 840

原创 鉴权 OAuth 2.0的实现(Spring_Security_Oauth2)

可以理解为客户端和服务器之间的一次私密谈话,在一次对话中可能会有多个请求和响应;同时要具有鉴别多个请求是来自同一个客户端的一次对话的功能;用户认证通过后,为了避免用户的每次操作都进行认证,可将用户的信息保证在会话中。会话就是系统为了保持当前用户的登录状态所提供的机制,常见的有基于session方式、基于token方式等。

2024-01-28 03:23:45 2867 1

原创 用synchronized实现的就一定是非公平锁吗?ReentrantLock(true)得到的“公平锁”真的公平吗?

如果调用了Object中的wait方法,那么节点会转移到waitSet队列中,只有再次调用notify方法 才能将waitSet队列中的头节点放入entryList或者cxq,notifyAll 全部节点加入到cxq中(EntryList头结点线程叫做 OnDeck Thread,notifyAll不管cxq中是否为空,都会将待唤醒的线程节点都放到cxq中),然后在由线程释放锁之后进行唤醒On Deck线程。而我们平时所用的传参obj,其实不是锁对象,而是被锁的对象,也叫参照对象。也不是绝对的公平的机制。

2024-01-02 22:54:36 1746

原创 redisson实现的MultiLock、RedLock分布式锁使用场景和可能存在的问题。

Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它是一个基于Redis实现的高级分布式锁客户端。同时Redisson是Redis官网指定的RedlLock使用Java语言的实现。网络上沿着Redisson的官方文档的介绍已经很多,公平锁、读写锁、信号量、闭锁的用法和源码解析。我这里就不做赘述。本篇博文主要讲使用联锁MultiLock和红锁RedLock的必要场景,以及可能出现的问题。

2023-11-01 00:34:18 2067

原创 redis 6.0之后已经开启了IO多线程,真的就可以说它是多线程了吗?事务、Lua脚本的支持有什么区别?

之前跟某某居公司的高级开发有交流过Redis现在是多线程还是单线程,其实我觉得聊这种八股文问题没啥意思,毕竟他又没有说明,他问题前提是问的主线程是否为单线程。因为Redis 在 2.6 版本,会启动 2 个后台线程,分别处理关闭文件、AOF 刷盘这两个任务;所以这时候起redis就不是单线程了,不过我知道他的意思还是想问主线程是怎么回事。那么我给出我的答案,主线程到现在仍然是单线程。然后这位兄弟就着急了,redis 6.0版本之后处理业务线程也变成多线程了。

2023-10-29 02:16:32 143

原创 Springboot集成Klock简单实现分布式锁

同一个方法,不同参数,来修改一个hash结构缓存的不同field,可以将field作为二级key,那么不同的field就有不同的lockKey,不会互相影响的业务,就可以不用阻塞了。但是如果是订单中,同一个订单中有不同的品名ID的商品,这些品名对应不同的key,在下单的时候,防止超卖,每个品命的库存都需要被保护的,即使其他的业务方法,想修改多个key中的其中的一个key,都不行,那么@Klock的注解实现方式就不可行。lockType:锁的类型,目前支持(可重入锁,公平锁,读写锁)。

2023-10-27 21:10:42 606

原创 synchronized(obj) 中的waitSet称为“等待队列”,那么这个队列是FIFO机制吗?或者是当调用obj.notify()方法后,是最先进入waitSet中的一个线程被唤醒吗?

本篇探究jdk Monitor机制在Java中的实现,MESA模型中,等待唤醒的机制是如何实现的。

2023-08-03 18:42:11 242 1

空空如也

空空如也

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

TA关注的人

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