All posts by 龙生
SpringBoot的AOP(@aspect注解)的简单使用
filter、interceptor、AOP的区别
filter作用于servlet
(通常指spring的)interceptor,拦截的对象是URL
AOP作用的对象可以是任何一个方法
SpringBoot中使用Aspect实现切面,超详细
Spring中的切面Aspect,这是Spring的一大优势。面向切面编程往往让我们的开发更加低耦合,也大大减少了代码量,同时呢让我们更专注于业务模块的开发,把那些与业务无关的东西提取出去,便于后期的维护和迭代。
View DetailsCompilation error after upgrading to JDK 21 – “NoSuchFieldError: JCImport does not have member field
与JDK 21兼容的最小Lombok版本是1.18.30
View Details单例模式的七种写法
什么意思呢?就是当前进程确保一个类全局只有一个实例。
那单例模式有什么好处呢?[1]
单例模式在内存中只有一个实例,减少了内存开支
单例模式只生成一个实例,所以减少了系统的性能开销
单例模式可以避免对资源的多重占用
单例模式可以在系统设置全局的访问点
那单例模式是银弹吗?它有没有什么缺点?
单例模式一般没有接口,扩展很困难
单例模式不利于测试
单例模式与单一职责原则有冲突
那什么情况下要用单例模式呢?
要求生成唯一序列号的环境
在整个项目中需要一个共享访问点或共享数据
创建一个对象需要消耗的资源过多
需要定义大量的静态常量和静态方法(如工具类)的环境
Java volatile关键字最全总结:原理剖析与实例讲解(简单易懂)
volatile是Java提供的一种轻量级的同步机制。Java 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量,相比于synchronized(synchronized通常称为重量级锁),volatile更轻量级,因为它不会引起线程上下文的切换和调度。但是volatile 变量的同步性较差(有时它更简单并且开销更低),而且其使用也更容易出错。
View Details十分钟彻底掌握缓存击穿、缓存穿透、缓存雪崩
缓存击穿: 一个并发访问量比较大的key在某个时间过期,导致所有的请求直接打在DB上。
缓存穿透:缓存穿透指的查询缓存和数据库中都不存在的数据,这样每次请求直接打到数据库,就好像缓存不存在一样。
缓存雪崩: 当某⼀时刻发⽣⼤规模的缓存失效的情况,例如缓存服务宕机、大量key在同一时间过期,这样的后果就是⼤量的请求进来直接打到DB上,可能导致整个系统的崩溃,称为雪崩。
设计模式的6大原则
单一职责原则(Single Responsibility Principle, SRP) 一个类应该只有一个引起它变化的原因。 这意味着一个类应该只负责一项功能,而不是多种功能混杂在一起。 开闭原则(Open Closed Principle, OCP) 软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。 这意味着在不修改现有代码的情况下,可以添加新的功能,使系统具有良好的可扩展性。 里氏替换原则(Liskov Substitution Principle, LSP) 所有出现的地方,子类必须能够替换父类。 任何派生类对基类的替换都不能改变程序的行为,以确保程序的正确性。 接口隔离原则(Interface Segregation Principle, ISP) 客户端不应该被迫依赖它不使用的方法。 即不应该有一个大的接口,而是应该有许多小的接口,让客户端只依赖于它们真正需要的接口。 依赖倒置原则(Dependence Inversion Principle, DIP) 高层模块不应该依赖于低层模块,二者都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象。 通过抽象和接口来降低模块间的耦合度。 迪米特法则(Law of Demeter, LoD) 又称“最少知道原则”。 一个对象应该对其他对象有尽可能少的了解,并且只与它的直接朋友进行交互,而不是与间接的朋友。
View DetailsApache License 2.0 关键点总结
1. 授权范围 免费、永久、全球性的授权。 允许使用、修改、复制、分发源代码和二进制形式。 可以用于商业、闭源软件,不强制开源。 2. 主要条件 保留版权声明:必须在源码或分发包中保留原作者的版权、许可声明和 NOTICE 文件。 修改说明:如果修改了源代码,需要明确说明已修改。 专利授权:贡献者自动授予用户相关的专利使用权。 无担保:软件“按现状”提供,不保证适用性或无缺陷。 3. 再分发要求 如果分发源码 → 必须附带原始许可证、版权声明、NOTICE 文件。 如果分发二进制包 → 也要提供许可证和版权声明,并在文档中包含 NOTICE 文件。 4. 与其他协议的关系 兼容性好:可与 GPLv3 兼容(但不能和 GPLv2-only 兼容)。 与 MIT、BSD 等宽松协议类似,但 Apache 2.0 额外强调 专利授权。 5. 适用场景 适合企业和个人开源项目,允许代码被商业化使用。 常见于大型项目(如 Hadoop、Spark、Android 部分组件)。 ✅ 一句话总结: Apache License 2.0 是一种 宽松开源协议,允许商业使用和闭源分发,关键要求是 保留版权和声明,同时提供了 专利授权,比 MIT/BSD 更全面。 📊 开源协议对比表 特点 Apache 2.0 MIT GPL v3 使用/修改/分发 ✅ 允许 ✅ 允许 ✅ 允许 是否必须开源衍生作品 ❌ 不要求 ❌ 不要求 ✅ 必须开源(传染性) 是否可商用/闭源 ✅ 可以 ✅ 可以 ❌ 不允许闭源 版权声明要求 ✅ 必须保留 LICENSE […]
View Details一的法则
核心思想 一的法则:宇宙中只有一个根本的法则——一体性。所有存在都是同一个源头(造物者)的不同显现,没有真正的分离。 自由意志:造物者允许无限的自由意志,使每个存在以不同方式探索与体验“一”。 爱的法则:爱是造物的驱动力,是自由意志的第一次扭曲。 光/智慧的法则:光或智慧是爱的进一步显化,用于创造和体验。 宇宙与灵性结构 密度(Densities) 宇宙的生命进化分为七个主要层级(类似振动频率): 第一密度:元素、矿物。 第二密度:植物、动物。 第三密度:人类,自我意识的觉醒(重点在自由意志与道德选择)。 第四密度:爱与理解。 第五密度:智慧与真理。 第六密度:爱与智慧的统一。 第七密度:归于源头前的准备阶段。 服务的道路 服务他人(Service to Others):与一体相符的道路,强调爱与合作。 服务自我(Service to Self):强调自我中心、控制与支配。 两者在第三密度都会出现,灵魂会选择哪条路继续进化。 人类与地球 地球正处于 第三密度向第四密度的转变期,因此会经历动荡、觉醒与选择。 每个人通过生活中的选择(自私/利他)来决定未来走向。 收割(Harvest):周期性灵性进阶的过程,符合条件的灵魂会进入更高密度。 实修与启示 自我认识与平衡:通过认识、接纳、平衡自我各方面,提升意识频率。 冥想与沉思:是接触“一”与内在智慧的主要方法。 尊重自由意志:不强迫他人改变,尊重差异与选择。 ✨一句话总结:《一的法则》告诉我们:万物同源同体,人生的意义在于通过爱与自由意志的选择来提升意识,最终回归唯一的造物者。
View Details