自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Netty 初学者笔记

本文非常适合小白,不适合大神。如果你不了解netty是什么东西,或者是想简单跑一下,请继续阅读。Netty 是一个,用于快速开发基于 TCP、UDP 和 WebSocket 等协议的网络服务。它是一个开源项目,主要用来构建高可扩展性和高并发的服务器和客户端应用。Netty 的核心目标是简化网络编程,同时提供灵活性和强大的性能优化。它屏蔽了底层复杂的网络通信细节(如 Socket 的读写操作、线程管理等),开发者只需关注业务逻辑。桥豆麻袋!这些概念似乎太生硬了吧?比如什么叫异步和事件驱动?

2024-12-25 13:15:25 812

原创 类加载机制:源码+自定义类加载器(jdk21学习笔记)

1. 继承classloader,2. 重写findClass方法像java 基本的String类可以通过这种方式加载吗?不能,会触发security check,防止核心API被篡改。/*** 重写类加载方法,实现自己的加载逻辑,不委派给双亲加载* @return*/Class<?//非自定义的类还是走双亲委派加载return c;try {//尝试用自己改写类加载机制去加载自己写的java.lang.String.class// Class<?

2024-11-26 15:08:44 1193

原创 力扣困难题:135 分发糖果

再根据candy数组的结果(注意一定要根据candy数组的结果),遍历出俩数组没用----,把左边比右边大的也覆盖掉。但是如果candy本身比右边+1 还要大,就取candy本身。然后就发现不管怎么遍历,似乎都无法兼顾..... 后面的影响前面的,越往后遍历前面的也会随之改变。拿到这个题一开始感觉很懵,既要考虑左边又要考虑右边,还要一个最优解。先从前往后遍历,把右边比左边大的情况解决清楚,放在candy数组里。看了下题目分类在贪心里面,贪心的概念是先找到局部解,然后以小搏大。也许从前往后遍历一次是不够的。

2024-11-15 14:12:09 275

原创 Mq的死信队列,广播和私信(学习笔记)

死信队列(Dead Letter Queue, DLQ)是一种消息队列,专门用来接收和处理被其他队列无法处理或拒绝的“死信”消息。在消息队列系统中,消息会被传递和处理,但在某些情况下,消息可能会因为错误、超时或无法被消费而失败,这些失败的消息就会被标记为“死信”。

2024-11-07 21:15:40 554

原创 线程池(学习笔记)

作为一名java选手,对线程池简直再熟悉不过了。提到线程,就想到并发,线程池的配置,线程和进程等等问题。首先,线程池的好处是什么呢?

2024-11-07 20:51:24 924

原创 面试官:讲讲红黑树

例子:8, 18, 5, 15, 17, 25插入8:因为根节点必须是黑色原则,所以⬇️插入18:鉴于不是根节点,Parent节点 也不是红色。又因为平衡二叉树,比8大插入右边,所以⬇️插入5:同样,不是根节点,Parent节点 也不是红色,插入左边。插入15:鉴于这一次的Parent节点是红色,需要重新着色。那么根据重新着色的原则,看一下parent的sibling,也就是5,也是红色。

2024-11-07 15:18:27 409

原创 面试官:讲讲redis的zset原理

在 Redis 中,zset(有序集合)是一种既能保存元素的,又能通过的数据结构。zset(skiplist)和(hash table),这两者结合实现了高效的数据存储和快速的排名操作。

2024-11-07 11:41:37 698

原创 面试官:讲讲Concurrent HashMap

具体来说,冲突较少时会使用链表存储,当链表长度超过一定阈值时(默认是 8),链表会自动转为红黑树,以加速查找。这样,Java 8 的。我:它是线程安全的,是支持并发的hashmap,而且相比Hashtable来说效率更高。实现相较于 Java 7 更加高效,尤其是在高并发的环境下表现更好。,每个段都有自己的锁,因此同一时间只有一个线程可以操作某个特定的。这样可以实现更高的并发度,因为多个线程可以同时操作不同的。数组结合链表和红黑树,替代了 Java 7 中的。的实现进行了改进,放弃了。结构,改为直接在桶(

2024-11-06 15:31:19 365

原创 JAVA 面试官:==和equal有什么区别?

上面的代码对于java来说,先在内存中创建对象,然后a指向它。由于==比较的是内存地址,所以结果就是不相同。这涉及到字符串常量池——通俗来说,就是如果hello已经在常量池中存在,直接将引用指向。都换成null对比一下就会发现,直接的equal方法会报错,然而,面经往往概括的很笼统,几句话,简直云里雾里。量,其本质比较的都是值,只是引用类型变量存的值是对象的地址。== 仅限于primitive 类型,比较的是值,不是引用。来说,不管是比较基本数据类型,还是引用数据类型的变。这两个对象,使用的默认是。

2024-11-05 21:48:41 488

原创 面试官:讲讲JVM吧

最近面试,发现面试官真的很喜欢问JVM。我只知道类加载和垃圾回收,这简直太jj了。

2024-10-14 11:08:48 1060

原创 如何建立索引?

写这篇的起因是面试官问我,Select * from 表A where a and b and c group by d order by e这个语句如何建立索引?我一时间有点懵,只知道个explain和最左匹配原则,这时候我才发现对索引和慢sql优化简直一无所知啊!赶紧恶补一下。

2024-09-06 18:24:59 1834

原创 关于分布式服务的监控系统(学习笔记)

做过分布式服务的都知道,想完成一个业务可能需要多个服务的配合。随着业务越来越多,代码之间的关系也越来越复杂。那么如何监控和及时发现问题?如何及时报警,做一些紧急熔断措施?

2024-09-02 16:50:57 1330

原创 GOLANG 分布式锁(redsync)

(上文中提到的random value),并且client有一个timeout时间,远远小于过期时间。3. client会计算拿取锁的时间(和第一步的时间戳相减),只有当大部分都能拿到锁(比如N=5的话就是三个),并且拿取到这些锁的总共时间小于expire time,才认为是有效的。这样的实现方式,对于一个非分布式的,单例实现的系统是安全的。背景:由于setnx存在的单点问题,调研了一下golang语言的分布式锁的成熟的三方包。4. 如果拿到了锁,它的有效期就会变成一开始的有效期减去拿取锁的时间。

2024-08-30 15:20:40 1107 1

原创 代码随想录day16: 104,111,222

终止条件:root==null 或者左右子树高度相等(也就是满二叉树)本题目采用后序遍历,拿到左右的最大深度进行比较,取max值然后加一。递归逻辑:拿到左右的最大深度进行比较,取max值然后加一。递归逻辑: 递归拿到左子树的最小深度和右子树的最小深度。求深度就相当于求高度,因为最大深度和最大高度是一样的。终止条件:root==null, return 0;终止条件:root==null, return 0;注意这个题目求最小深度的时候说的是叶子结点。都不空,min(左,右)+1;右空左不空:拿左边的+1;

2023-01-13 19:24:21 143

原创 代码随想录十天 232 225

225 用队列实现栈。

2023-01-09 16:59:07 163

原创 代码随想录刷题第八天344 541 151

其实在遍历字符串的过程中,只要让 i += (2 * k),i 每次移动 2 * k 就可以了,然后判断是否需要有反转的区间。对于字符串,我们定义两个指针(也可以说是索引下标),一个从字符串前面,一个从字符串后面,两个指针同时向中间移动,并交换元素。因为要找的也就是每2 * k 区间的起点,这样写,程序会高效很多。剑指Offer 05.替换空格。第一道题 344 反转字符串。541 反转字符串II。

2023-01-05 11:26:21 148

原创 代码随想录第三天203,707,206

看了视频讲解后写出代码不难,有一个要注意的点是return的是dummyhead.next 不能直接return head。707 设计链表没有思路。

2023-01-05 11:25:46 137

原创 代码随想录第二天977,209,59

如果sum 比target大了,那么i往前走,直到找到最短的窗口。然后j继续往前走,重复一样的流程,更新最小窗口长度。实际上的做法应该是:选出最大的,放入新数组,移动指针。新的数和之前没选中的数做比较,大的进入新数组,以此类推。min不能设置为length,因为可能遇到整个一组都不如target大的情况,此时应返回0而不是length。这个j是表示的窗口的终止位置不是起始位置。第一是这是一个有序数组。也就是说,最左或者最右一定有一个最大的。第二是,不要陷入思维误区,以为最左和最右一定是最大和第二大。

2022-12-30 15:14:36 139

原创 代码随想录刷题第一天704二分查找27移除元素

后来用了while(left < right) 分清楚left和right的移动,并且分清楚要+1,防止死循环,题目就可以了。一开始没有找到思路,用的for循环,也没有引入left和right的概念,解答的比较糟糕。定义的第二种写法left right是左闭右开的区间,这种解法处理的区间会不同。看了代码随想录后发现这是提供的第一种写法,还有第二种写法;我用的方法和想向双指针法比较像,但是没有题解写的简单。第一题:704 二分查找。第二题:27 移除元素。

2022-12-28 16:20:22 248 1

空空如也

空空如也

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

TA关注的人

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