isTrueLoveColour
码龄4年
关注
提问 私信
  • 博客:127,424
    社区:1
    127,425
    总访问量
  • 141
    原创
  • 22,335
    排名
  • 276
    粉丝
  • 0
    铁粉
  • 学习成就
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:浙江省
  • 加入CSDN时间: 2020-11-14
博客简介:

persistence_PSH的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    4
    当前总分
    858
    当月
    4
个人成就
  • 获得399次点赞
  • 内容获得28次评论
  • 获得467次收藏
  • 代码片获得982次分享
创作历程
  • 15篇
    2024年
  • 28篇
    2023年
  • 28篇
    2022年
  • 67篇
    2021年
  • 3篇
    2020年
成就勋章
TA的专栏
  • 设计模式
    4篇
  • spring
    11篇
  • JUC
    7篇
  • redis
    7篇
  • mysql
    18篇
  • dubbo
    2篇
  • clickHouse
    2篇
  • zookeeper
    2篇
  • kafka
    2篇
  • jvm
    11篇
  • linux操作系统的简史即安装
    3篇
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

183人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

java设计模式--行为型模式

行为型模式:模板方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、状态模式、策略模式、职责链模式、备忘录模式、解释器模式。
原创
发布博客 2024.10.20 ·
1111 阅读 ·
29 点赞 ·
0 评论 ·
25 收藏

设计模式的七大原则

设计模式概述使用设计模式的目的设计原则的核心思想设计模式的七大原则单一职责原则接口隔离原则依赖倒转原则里氏替换原则开闭原则(ocp)迪米特法则合成复用原则。
原创
发布博客 2024.08.22 ·
605 阅读 ·
5 点赞 ·
0 评论 ·
14 收藏

java设计模式--结构型模式

结构性模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
原创
发布博客 2024.08.22 ·
1222 阅读 ·
25 点赞 ·
0 评论 ·
14 收藏

java设计模式--创建型设计模式

创建型模式可分为:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式。
原创
发布博客 2024.08.22 ·
929 阅读 ·
19 点赞 ·
0 评论 ·
24 收藏

Spring Security 授权

在 loadUserByUsername 方法,在查询数据库用户信息的时候,同时查询出用户的权限,这里以角色名代指权限。在 loadUserByUsername 方法,在查询数据库用户信息的时候,同时查询出用户的权限,这里以角色名代指权限。在 loadUserByUsername 方法,在查询数据库用户信息的时候,同时查询出用户的权限,这里以角色名代指权限。通过 RBAC 获取到用户的具体权限后,再通过 Security 的 用户-权限-资源 来进行权限控制。HttpSecurity 权限配置。
原创
发布博客 2024.07.14 ·
1004 阅读 ·
20 点赞 ·
1 评论 ·
10 收藏

springsecurity 身份认证

自定义认证接口的作用是做用户认证成功后执行的操作处理器接口的作用是做用户认证失败后执行的操作处理器接口的作用是做用户登场后执行的操作请求未认证处理逻辑可以控制一个账号的最大登录数量自定义和@Slf4j/*** 认证成功*/@Overridelog.info("返回成功-------------->");res.put("message", "登录成功");// 用户身份信息// 用户凭证信息// 用户的权限信息/*** 认证失败*/@Override。
原创
发布博客 2024.07.14 ·
768 阅读 ·
21 点赞 ·
0 评论 ·
22 收藏

springboot3 web

以适配yaml为例:导入依赖:
原创
发布博客 2024.07.14 ·
1157 阅读 ·
18 点赞 ·
0 评论 ·
11 收藏

Spring Boot日志

trace:微量,少许的意思,级别最低,一般记录了框架底层的日志,很少使用。fatal:致命的,因为代码异常导致程序退出执行的事件,例如jvm系统崩溃。warn:警告,不影响使用,但需要注意的问题,例如类的版本过时了。error:错误信息,级别较高的错误日志信息;debug:需要开发调试时候的关键信息打印;info:普通的打印信息(默认日志级别);SpringBoot预定义两个组。日志门面(日志的抽象层)all :打印所有的日志。off :关闭所有的日志。日志文件归档与滚动切割。
原创
发布博客 2024.07.14 ·
1073 阅读 ·
19 点赞 ·
2 评论 ·
16 收藏

springBoot 核心原理

自定义stater步骤创建自定义starter项目,引入基础依赖编写模块功能,引入模块所有需要的依赖。编写自动配置类,帮其他项目导入这个模块需要的所有组件编写配置文件指定启动需要加载的自动配置其他项目引入即可使用自定义配置可以在配置文件中有提示。
原创
发布博客 2024.07.14 ·
1176 阅读 ·
29 点赞 ·
1 评论 ·
18 收藏

spring boot 基础特性

Springboot四大组件spring boot的依赖管理profiles 提供了环境隔离能力,可以快速切换开发、测试、生产环境Profile 配置文件{profile}yaml文件。
原创
发布博客 2024.07.14 ·
1200 阅读 ·
17 点赞 ·
1 评论 ·
9 收藏

AQS 抽象队列同步器

非公平锁的tryAcquire 方法会先判断锁的状态state是否为0,为0说明没有被其他线程占用,就立即使用cas操作变更state为1,变更成功就把持有锁的线程设置为自己,变更失败就表示加锁失败。AQS的tryRelease方法,同样没有做实现,需要子类自己去实现,下面是ReentrantLock的实现。AQS类的tryAcquire方法只是做了规范,方法内直接抛出异常,所以这个方法需要由子类去实现。如果锁的状态为1,说明锁已经被占用,在比较当前线程和持有锁的线程是否一致,不一致就加锁失败。
原创
发布博客 2024.01.07 ·
879 阅读 ·
23 点赞 ·
1 评论 ·
21 收藏

java CAS

示例:不通过 synchronized 和 lock ,就实现了锁的功能,自己实现自旋锁。想要解决ABA问题,需要加上版本号或者时间戳。循环时间太长的话,开销会很大。
原创
发布博客 2024.01.07 ·
924 阅读 ·
18 点赞 ·
0 评论 ·
20 收藏

JMM内存模型

变量的写操作和读操作之间是可以被中断的,也就是在读取或者修改 volatile 变量的过程中,其他线程可能会对这个变量进行修改,但是 volatile 修饰的变量,只是保证了从主内存加载到工作内存的值是最新的,并不能保证对变量的操作是原子性的。如果不加volatile,因为初始化一个对象分为:分配内存空间,初始化对象,将对象指向分配的内存空间这三步,不加volatile ,对变量的修改,其他线程不可见,下面代码不加volatile 会卡死,加上才能正常执行。读屏障:在读取 volatile 变量时。
原创
发布博客 2024.01.07 ·
1057 阅读 ·
22 点赞 ·
0 评论 ·
24 收藏

synchronized锁

所以只需要锁在第一次被拥有的时候,记录下线程的id,这样偏向线程会一直持有锁,这个线程后续进入和退出听不代码块的时候,不需要再次加锁和释放锁,而是去检查 mark word 中的偏向线程id是不是自己。偏向锁会偏向于第一个访问到锁的线程,且只有偏向锁被其他线程竞争,持有偏向锁的线程才会释放锁,否则线程是不会主动释放锁的,而对于持有偏向锁的线程也就不需要触发同步,就能在没有资源竞争的情况下消除了同步语句。当线程自旋达到一定次数,仍然没有获得锁,也就是有大量线程在竞争锁,那么就会升级锁为重量级锁。
原创
发布博客 2024.01.03 ·
1137 阅读 ·
26 点赞 ·
0 评论 ·
18 收藏

JUC原子操作类

对象的属性修改原子类,可以用线程安全的方式操作非线程安全对象内的某些字段,例如:某个对象有多个属性,但是只有少量字段需要频繁更新,加锁虽然可以保证线程安全,但是有可能会锁住整个对象,所以可以用原子更新代替加锁。getProbe()方法,获取线程的hash值,如果返回0,会重新计算一个hash值,重新计算后,认为线程本次操作没有竞争关系,把竞争标志改为 true ,也就是不存在冲突。如果数组的长度 n大于当前cpu的核数,就不可扩容,然后重置当前线程的hash值,让线程重新循环参与竞争。
原创
发布博客 2024.01.03 ·
900 阅读 ·
22 点赞 ·
0 评论 ·
21 收藏

JUC AQS ReentrantLock源码分析

非公平锁的tryAcquire 方法会先判断锁的状态state是否为0,为0说明没有被其他线程占用,就立即使用cas操作变更state为1,变更成功就把持有锁的线程设置为自己,变更失败就表示加锁失败。AQS类的tryAcquire方法只是做了规范,方法内直接抛出异常,所以这个方法需要由子类去实现。调用lock方法加锁,除非是非公平锁能直接拿到锁,其他情况下都是在调用acquire 方法。如果锁的状态为1,说明锁已经被占用,在比较当前线程和持有锁的线程是否一致,不一致就加锁失败。取消正在进行的获取尝试。
原创
发布博客 2023.12.23 ·
858 阅读 ·
18 点赞 ·
0 评论 ·
14 收藏

volatile 无法保证原子性 案例展示

变量的写操作和读操作之间是可以被中断的,也就是在读取或者修改 volatile 变量的过程中,其他线程可能会对这个变量进行修改,但是 volatile 修饰的变量,只是保证了从主内存加载到工作内存的值是最新的,并不能保证对变量的操作是原子性的。所以在多线程环境下,对线程的操作结果可能会丢失,想要在多线程情况下修改主内存的共享变量必须加锁来保持同步。在 Java 中,原子性是指一个操作是不可中断的,要么都执行要么都不执行。例如:下面的代码不管加不加 volatile ,执行结果都会出错。
原创
发布博客 2023.11.19 ·
167 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

redis分布式锁

- 加锁的目的是为了防止代码的重复执行,在单机情况下,可以使用 jvm的锁:lock和synchronized进行加锁- 但是在分布式系统下,每个jvm是相互隔离的,JVM锁没有互斥性,所以需要引入第三方进行加锁
原创
发布博客 2023.11.05 ·
339 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

java8 Lambda表达式以及Stream 流

方法引用是对Lambda的进一步简化,本质上就是Lambda表达式,而 Lambda 是函数式接口的实例,所以方法引用也是函数式接口的实例。
原创
发布博客 2023.10.25 ·
288 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

redis 布隆过滤器理论及代码实现

Guava 的使用和自己实现的布隆过滤器没有什么区别。这里使用mybatis-plus和mysql。判断布隆过滤器是否存在数据的工具类。Guava布隆过滤器。
原创
发布博客 2023.07.23 ·
379 阅读 ·
1 点赞 ·
2 评论 ·
1 收藏
加载更多