设计模式--单例模式


设计模式--单例模式 单例模式在各个框架中设计或者实际开发经常遇到,主要是保证一个类只有一个示例,减少常用类频繁创建带来的性能损失。 常见的场景有: Spring中的Bean 项目中全局的属性 数据库连接池 Static关键字 一个简单的解决方式是使用static关键字,类加载过程在可以保证没有示例

JAVA并发编程


JAVA并发编程 反射和代理 反射和动态代理使用场景非常广。 动态代理:动态代理是Java的一种机制,可以在运行时创建一个代理对象,而不需要在编译时就确定代理类。 反射是指在运行时检查类的信息(如方法、属性、构造函数等)并操作它们的能力。 场景场景有: AOP切面 懒加载 权限控制 日志记录 远程代

HashMap从零分析源码


HashMap全解 1. HashCode为什么选择31作为乘数 HashCode是32位的有符号数 public int hashCode() { int h = hash; if (h == 0 && value.length > 0) { char val[]

ArrayList源码分析


ArrayList源码分析和队列(数组为基础的数据结构) 数组是一个经常使用的数组结构,存储形式一般分为顺序存储和链式存储,区别在于顺序存储占用一块连续内存空间,而链表是由一个个点组成。 这里我们详细分析一下ArrayList,及List的一个实现类,也是实际过程中使用较多。 ArrayList采用

大营销分布式系统--从零开始实现数据库分库分表组件


大营销分布式系统--从零开始实现数据库分库分表组件 随着业务的发展,营销系统的数据量和访问量会不断增加。单个数据库和表会成为系统的瓶颈,导致查询速度变慢、系统响应延迟增加,甚至可能引发数据库的崩溃。所以如何提高数据库的读写性能和扩展能力来处理不断增加的数据库请求和数据量成为一个问题。单个数据库和表物

大营销分布式系统--用户奖品记录列表优化


大营销分布式系统--用户奖品记录列表优化 作为大营销系统的用户奖品记录表,主要由两个场景会被使用,第一个场景即用户在抽奖结束之后查询自己获得的奖品,第二个场景即任务扫描机制对用户奖品表中还未发放的奖品进行定期发放(系统端、全表扫描)。 本文主要讨论在用户查询奖品的性能优化。 用户奖品表:(Id, U

Leetcode421周赛 (Mod处理)

算法 

Leetcode421周赛 (Mod处理) 第一题思路没错,但做太久了。第二题做完快没时间了,选了第二题类似的第四做(结果最后几个样例过不了, 第三题结束之后发现更加简单一点。本周很多题都是涉及到MoD处理。 第一题 3334. 数组的最大因子得分 简单来说就是分别求lcm和gcd的前缀和,后缀和,

Leetcode第420周赛

算法 

Leetcode第420周赛 第一题 3324. 出现在屏幕上的字符串序列 认真读题发现就是对于字符串的每一个字符依次从'a'增加到相同为止 class Solution { public List<String> stringSequence(String target) {

Leetcode第419周赛 溢出导致第三题GG

算法 

Leetcode第419周赛 溢出导致第三题GG 第一题 计算子数组的 x-sum I 老规矩,第一题直接暴力,截取每一个子数组,然后对子数组的字符存储,然后排序,只能过第一题。本质上这题应该是和滑动窗口有关。 class Solution { public int[] findXSum(i

Leetcode第418周赛

算法 

Leetcode第418周赛 第一题 连接二进制表示可形成的最大数值 因为数组的个数有限,直接将数字转为二进制字符串,通过数组的自定义排序方法进行排序(根据题意是拼接而不是二进制相加),最后将排序后的结果依次拼接,转为10进制。 class Solution { public int max