- 博客(85)
- 资源 (6)
- 收藏
- 关注
原创 Leetcode热题100道
给定一个整数数组 和一个整数目标值 ,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:示例 2:示例 3:字母异位词分组_49给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。示例 1:示例 2:示例 3:将每串字符串的字符进行排序后作为key,然后放到对应的v
2024-03-04 00:36:55
1960
原创 JVM内存分配机制详解
遇到一条new指令先执行类加载过程划分内存的方法内存是规整一个指针隔开内存是不规整的内存都是交错的更新列表的记录注意对象头的布局问题执行构造方法。
2024-02-29 00:54:15
1087
原创 JVM类加载机制
双亲委派机制就是加载某个类时先委托父加载器去寻找目标类,找不到再委托上层父加载器,如果所有父加载器都没有自己类路径下找到目标类,那么就会交给最开始的类加载器去加载该目标类代码思路继承java.lang.ClassLoader类重写ClassLoader.findClass()方法,此方法通过IO读取自定类文件路径重写ClassLoader.loadClass()方法,加载类。
2024-02-29 00:53:45
1319
原创 Alibaba分布式事务组件Seata实战
对于操作单一数据库的场景下的事务,ACIO特性是数据库直接支持的。在分布式情况下,需要的操作资源分布在多个资源服务上,而应用需要保证对于多个资源服务器的数据操作要么全部成功要么全部失败,本质上是为了保证不同服务的数据一致性
2024-02-26 02:22:15
527
原创 Redis缓存异常场景
缓存击穿:单个key过期,恰好大量请求访问这个key,然后穿过缓存落到了数据库设置热点数据永不过期使用互斥锁排队缓存雪崩:大量key同时失效,或者其他原因导致缓存不可用了,大量请求落到数据库缓存过期时间设置随机一般并发量不多时,使用互斥锁排队给缓存加标记,如果失效及时更新缓存穿透:缓存和数据库中都没有数据,穿过缓存全部落到数据库缓存空对象布隆过滤器网关校验拦截缓存预热:系统上线后,将相关缓存数据直接加载到缓存系统,这样可以避免用户直接先请求数据库,然后再将数据传给缓存的操作。
2024-02-25 21:42:13
1027
原创 Redis高并发分布锁实战
Redis分布式锁自己去实现可能会出现几个问题没有在finally显示释放锁,当客户端挂掉了,锁没有被及时删除,这样会导致死锁问题,它这个是需要我们显示的释放锁假如此时我们设置过期时间,但是我们用的是同一个key,就可能出现下一个线程删除上一个线程的锁,但是上一个线程还没有执行完,它这个需要key是不能重复的假如我们既设置了过期时间也指定了不同的key,此时可能因为网络延迟出现上一个线程删除下一个线程的锁,也就是说业务执行的时间超过了锁过期的时间,它这个需要一个锁续命的功能。
2024-02-25 21:12:02
1563
原创 Redis主从、哨兵、Redis Cluster集群架构
问题: 哨兵模式的缺陷哨兵模式不适合线上高并发场景,主从切换会导致访问瞬断,以及只是监控master节点,并不做转发,最终还是单节点master提供访问,性能并没有提升多少高可用集群模式不仅很好的弥补了哨兵模式的缺点,而且还具备了哨兵模式的选举机制,所以推荐在生产环境使用问题: Redis集群的数据是怎么存储的Redis集群的所有数据被划分到16384个槽位中,并且每个节点管理一部分的槽位,而到客户端连接集群的时候会去缓存一份槽位信息方便定位到目标节点,但是缓存的槽位信息可能会存在数据不一致的问题。
2024-02-25 21:11:20
1204
原创 Redis持久化
RDB是某一时刻把数据全部从内存写入二进制文件中,是一个同步操作,即写RDB会阻塞其他的对内存的写操作,因而此模式比较耗时,如果在写的过程中发生宕机,会导致数据丢失AOF是将每一条修改的指令写入aof文件,然后每隔一段时间刷入磁盘,而AOF有三种模式一种是每执行一条修改指令立即写入磁盘一种是每秒执行一次就写入磁盘一种是把执行时机交给操作系统来控制还可以通过配置控制aof重写,配置文件达到指定的容量或者达到原本容量的多少百分比再执行,而Redis4之后默认采用AOF模式。
2024-02-25 21:10:35
831
原创 Redis核心数据结构
hyperlogloggeospatial常用结构单值缓存 key value key value key … key value对象缓存分布式锁计数器常用结构 key field value user userid:name linc userid:balance 999 userid:name userid:balance优点缺点常用结构 key value [value …]将一个或多个value插入到key列表的最左边 key value [value …] key key key key key
2024-02-25 21:09:56
1051
原创 Netty使用和常用组件辨析
Netty使用和常用组件辨析Netty的线程模型Netty通过Reactor模型基于多路复用器接收并处理用户请求,内部主要实现了两个线程池boss线程池负责处理请求的接收工作,当收到请求时,会把对应的socket封装成一个NioSocketChannel,并交给work线程池处理work线程池负责处理请求的读写操作,然后交给对应的Handler处理Reactor模型有三种单线程模式一个线程负责多个事件处理,当连接数过多时会造成性能瓶颈,适用于连接数较少、复杂度较低的
2024-02-25 20:03:04
438
原创 负载均衡Ribbon
负载均衡Ribbon什么是Ribbon目前主流的负载均衡分为两种:集中式负载均衡在消费者和服务提供方中间使用独立的代理方式进行负载,比如硬件有F5,软件如nginx客户端根据自己的请求情况做负载均衡,Ribbon 就属于客户端自己做负载均衡Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端的负载均衡工具,Ribbon客户端组件提供一系列的完善的配置,比如超时、重试等通过Load Balancer获取到服务提供的所有机器实例,Ribbon会自动基于
2022-04-28 14:06:23
623
原创 SpringBoot自定义Starter
SpringBoot自定义Starter如何实现自定义Starter先创建一个父工程我们会把自定义starter放到这个父工程里面,然后建立一个子工程去引入那个自定义starter自定义Starter的命名规范官方命名空间前缀:spring-boot-starter-模式:spring-boot-starter-模块名举例:spring-boot-starter-web、spring-boot-starter-jdbc自定义命名空间后缀:-spring-b
2022-04-26 00:38:35
687
原创 SpringBoot自动装配原理
SpringBoot自动装配原理SpringBoot详细链接: https://www.processon.com/view/link/6266a769e0b34d4baed922b9SpringBoot自动配置流程详细链接: https://www.processon.com/view/link/6266ae065653bb498e3004adBeanDefinition的注册顺序先@ComponentScan的: @Component、@Serivce、@Controller@Imp
2022-04-25 22:58:31
234
大数据人工智能
2019-04-24
[游戏开发] Unity3D游戏开发 [MP4]
2019-04-23
C#反编译工具
2018-11-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人