- 博客(37)
- 收藏
- 关注
原创 【Java并发编程】 AQS的实现类ReentrantLock的底层工作流程详细讲解
ReentrantLock 主要围绕着 state 变量和同步队列这两个核心元素来实现对锁的管理和线程间的同步协调。通过 state 来跟踪锁的状态变化,确保了锁的正确性和可重入性;而同步队列则保证了在高并发情况下多个线程能够有序地竞争锁资源,避免了死锁和资源争用问题。这种设计使得 ReentrantLock 不仅功能强大而且高效可靠,适用于各种需要精确控制并发访问的场景。
2025-02-27 16:51:44
653
原创 【Spring】 AOP(面向切面编程)
Spring AOP(面向切面编程)是Spring框架中的一个重要组成部分,它允许开发者将横切关注点(如日志记录、事务管理、安全性等)与业务逻辑分离。通过AOP,可以在不修改原有代码的情况下添加或修改行为,这使得代码更加清晰和易于维护。
2025-02-18 22:25:34
902
原创 【设计模式】 代理模式(静态代理、动态代理{JDK动态代理、JDK动态代理与CGLIB动态代理的区别})
代理模式是一种结构型设计模式,它提供了一种替代访问的方法,即通过代理对象来间接访问目标对象。代理模式可以在不改变原始类代码的情况下,增加额外的功能,如权限控制、日志记录等。
2025-02-18 16:55:05
629
原创 【Java】 反射(作用、常用API、框架中用到的反射、反射获取注解信息等)
Java反射是一种强大的工具,它允许程序在运行时检查或反射自身,并操作内部属性、构造器、方法和字段。通过反射,可以在运行时动态地创建对象,调用对象的方法,访问和修改对象的字段。
2025-02-17 17:45:37
958
原创 【设计模式】适配器模式和桥接模式
适配器模式是一种结构型设计模式,它将一个类的接口转换成客户端所期望的另一个接口。适配器使得原本由于接口不兼容而不能一起工作的那些类可以协同工作。桥接模式是一种结构型设计模式,它将抽象部分与它的实现部分分离,使它们都可以独立地变化。这样做的目的是为了防止在增加新的具体实现和抽象时导致类数量的急剧增加加粗样式。
2025-02-17 10:22:24
463
原创 【设计模式】 建造者模式和原型模式
建造者模式是一种创建型设计模式,它允许逐步构建复杂对象。通过将构造过程与表示分离,使得同样的构建过程可以创建不同的表示。这种模式非常适合用于创建那些具有很多属性的对象,尤其是当有些属性是可选的时候。原型模式是一种创建型设计模式,它允许通过复制现有对象来创建新对象,而不是通过实例化。这在需要创建对象的开销较大时非常有用,因为它可以通过简单的复制来避免高昂的初始化成本。
2025-02-14 23:22:24
457
原创 【设计模式】-工厂模式(简单工厂、工厂方法、抽象工厂)
抽象工厂模式提供了一组接口,用于创建相关或依赖对象的家族,而不需要明确指定具体的类。它是工厂方法模式的进一步扩展。优点:可以很容易地在一组相关的产品中切换实现(产品族缺点:当产品族中加入新产品时,所有工厂类都需要修改(在产品族数量长期稳定的时候建议使用。
2025-02-14 15:59:49
976
原创 【Redis】 - Redis的Bitmap实现用户签到
使用Redis的Bitmap数据结构来记录用户的每日签到状态是一种高效且节省空间的方法。通过将用户ID和日期结合生成动态Key,可以轻松管理不同用户在不同日期的签到情况。下面详细介绍如何设计这一方案。
2025-02-12 23:49:13
506
原创 构建现代微服务安全体系:Spring Security、JWT 与 Spring Cloud Gateway 实践
本文将基于提供的代码示例,详细介绍如何在一个Java微服务项目中使用Spring Security、JWT和Spring Cloud Gateway来构建一个高效且安全的微服务体系,并整合性能优化措施。
2025-02-12 23:41:40
1630
原创 【设计模式】 基本原则、设计模式分类
设计模式是软件工程中的一种通用术语,指的是针对特定问题的经过实践验证的解决方案。设计模式并不是最终的代码实现,而是描述了如何解决某一类问题的思路和方法。如果熟悉了设计模式,当遇到类似的场景,我们可以快速地参考设计模式实现代码。不仅可以加谏我们的编码速度,也提升了代码的与!SOLID原则是面向对象设计中的五个基本原则,旨在提高软件的可维护性和可扩展性。
2025-01-02 14:26:17
1001
原创 【Linux】 Linux下载RabbitMQ,并解决Github拒绝访问443的问题
Linux下载资源时,GitHub网站 443 拒绝访问,在Linux中无法访问Github(外网)资源的都可以采用以下类似的方式
2024-12-24 21:06:45
843
原创 【Linux】 Linux下载时出现的错误(配置阿里云镜像解决)
错误:Loading mirror speeds from cached hostfileCould not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误" One of the configured repos
2024-12-23 15:04:45
699
原创 MySQL - SQL优化(SQL优化和提示、分析慢查询、分库分表、MySQL超大分页优化)
SQL优化(SQL优化和提示、分析慢查询、分库分表、MySQL超大分页优化)
2024-12-22 23:40:02
901
原创 【MySQL】 MVCC(多版本并发控制)
MVCC(Multi-Version concurency Control,**多版本并发控制**)是一种并发控制机制,允许**多个事务同时读取和写入数据库**,而无需互相等待,从而提高数据库的并发性能。
2024-12-22 22:00:44
1205
原创 【MySQL】redo log 和 undo log
当一个事务进行增删改操作时,会在Buffer pool缓冲池中操作,如果缓存池中数据不存在,则读取磁盘中的数据(进行增删改操作则会出现脏页,要确保脏页成功刷新到磁盘中),将增删改的数据记录到redo log buffer中,redo log buffer记录数据页的物理变化,事务提交以后,会把redo log buffer刷新到到磁盘的redo log file(持久到磁盘)中。,比如我们删除一条数据的时候,就会在undo log日志文件中新增一条delete语句,如果发生回滚就执行逆操作;
2024-12-20 16:41:18
754
原创 【MySQL】 InnoDB引擎-- Buffer Pool 、Change Buffer 、Log Buffer、Doublewrite Buffer Files、Redo Log等
InnoDB引擎-- Buffer Pool 、Change Buffer 、Log Buffer、Doublewrite Buffer Files、Redo Log等
2024-12-20 16:38:23
854
原创 【Spring】 @Autowired 和 @Resource关键字的区别
@Autowired 和 @Resource的来源、注入方式、依赖注入的支持不同
2024-12-15 23:45:27
358
原创 【Java并发编程】 AQS是什么,以及AQS核心原理
AQS全称(AbstractQueuedSynchronizer)抽象队列同步器,是JUC包下的基础框架常见的实现类有ReentrantLock、CountDownLatch、Semaphore 等
2024-12-15 23:37:20
828
原创 【Java并发编程】 ConcurrentHashMap 的工作原理?ConcurrentHashMap 和 Hashtable 的区别?
ConcurrentHashMap原理
2024-12-04 10:07:41
341
原创 【Java集合】 HashMap底层原理 和 Hash冲突的解决方法
HashMap底层原理 、HashMap的扩容操作是怎么实现的、JDK1.8对红黑树进行的改动和 Hash冲突的解决方法
2024-12-04 09:52:13
1075
原创 【Java集合】ArrayList和Linkedlist的区别
ArrayList支持索引下标查询,随机访问速率较高,但是底层是动态数组实现的,在插入和删除元素时,适度较慢。工具进行计算集合内存占用,发信LinkedList占用的存储空间几乎是ArrayList 的两倍)扩容(原来的1.5倍)确保新增的数据有地方存储之后,则将新元素添加到位于size的位置上。ArrayList底层是数组实现的,内存空间连续,更节省空间(但可能会浪费内存)计算数组的容量,如果当前数组已使用长度+1后的大于当前的数组长度,则调用。ArrayList在进行扩容的时候是原来容量的。
2024-12-03 09:30:17
432
原创 【HTTP】JWT - 防止令牌被非法获取后用于非法操作 和 踢出未过期的用户
防止非法注入和提高安全性(两种主要措施):设置过期时间、使用刷新令牌。踢出尚未过期的用户:黑名单机制、刷新令牌撤销、Redis中存储token进行校验(类似黑名单)
2024-12-02 21:55:37
350
原创 【HTTP】一篇文章讲清楚Cookie、Session、JWT的作用以及区别
HTTP 协议是无状态的,主要是为了让 HTTP 协议尽可能简单,使得它能够处理大量事务,HTTP/1.1 引入 Cookie 来保存状态信息。Session是服务器保持状态的方法。
2024-12-02 21:41:50
798
原创 【HTTP】TCP协议的三次握手和四次挥手通俗描述
三次握手就好比打电话时保证了通话双方都能听到对方说话,保证了信息被正确接收。四次挥手,就是双方进行关闭和确认关闭的过程。
2024-10-15 10:33:09
313
原创 【HTTP】(HTTP请求的执行流程)输入URL敲下回车后会发生什么?
简单来说分为以下几步:URL解析DNS查询TCP连接HTTP请求响应请求页面渲染。
2024-10-15 10:25:16
111
原创 【HTTP】HTTP协议的优点
(底层是tcp协议,确保顺序内容的正确,确保没有丢包),因此即使数据来自地球的另一端,它也能够确保数据在传输的过程中不会被损坏或产生混乱。这样,用户在访问信息时就不用担心其完整性了,因此对用户来说,这是件好事。请求方法常用的有GET、HEADPUT、DELETE、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。对发送过的请求和响应都不做持久化 处理(即不做任何保存)。: http是一种不保存状态,即无状态协议。
2024-10-15 10:22:39
408
原创 【HTTP】GET和POST请求的区别
GET请求在URL中传送的参数是有长度限制的,而POST没有,对参数的数据类型,GET产生的URL地址可以被Bookmark,而POS不可以。GET请求只能进行url编码,而POST支持多种编码方式。GET在浏览器回退时是无害的,而POST会再次提交请求。,所以不能用来传递敏感信息GET参数通过URL传递,里,而POST中的参数不会被保留。,而POST没有限制。
2024-10-15 10:18:19
373
原创 【HTTP】HTTP常见状态码
状态码 描述 200 ok,成功 301、302 重定向,301永久移动、302临时移动 400 请求出错,服务器不理解请求的语法 401 未授权,需要登陆的网页需要身份认证 402 此代码尚无法使用 403 禁止,服务器拒绝请求 404 未找到,服务器找不到对应的网页 500 服务器内部错误,代码出错 501 尚未实施,找不到对应的请求功能(接口) 502 错误网关,服务器作为网关/代理,从上游服务器
2024-10-15 10:16:18
84
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人