自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ThreadLocal 详解(源码解析)

这可能是你看过最详细的 ThreadLocal 源码解析

2025-02-06 16:08:34 997

原创 ConcurrentHashMap 扩容机制(源码解析)

ConcurrentHashMap 扩容机制解析,炒鸡详细

2024-12-08 01:18:36 1400

原创 ConcurrentHashMap 存储机制(源码解析)

ConcurrentHashMap 存储机制的源码解析,炒鸡详细

2024-10-18 21:57:55 939

原创 利用 Redission 实现延迟队列

利用 Redission 实现延迟队列,以及问题的处理

2024-09-07 00:22:55 3532 2

原创 实现一个简易动态线程池

实现一个简易的动态线程池

2024-06-20 21:09:57 2131 2

原创 【自研网关系列】数字签名和url动态加密

通过AES对称加密和RSA非对称加密,实现url动态加解密功能

2024-05-10 15:00:47 935 2

原创 【自研网关系列】过滤器链 -- 限流过滤器

实现过滤器链中的限流过滤器

2024-05-02 12:59:58 170

原创 什么是限流?常见的限流算法

介绍常见的限流算法

2024-05-01 15:22:08 3900 3

原创 【自研网关系列】过滤器链 -- 灰度发布过滤器

实现灰度发布过滤器

2024-04-30 21:31:29 741

原创 【自研网关系列】过滤器链 -- 鉴权过滤器

在自研网关这个项目中,主要是使用 Jwt 来实现简易的鉴权功能

2024-04-30 18:39:20 1006

原创 【自研网关系列】过滤器链 -- 路由转发过滤器 (失败重试,熔断降级)

实现了路由转发、请求重试、熔断降级功能

2024-04-21 17:37:07 1078

原创 【自研网关系列】过滤器链 -- 实现负载均衡过滤器

自研网关实现负载均衡过滤器

2024-04-15 11:31:31 1173

原创 【自研网关系列】请求服务模块和客户端模块实现

请求服务模块和客户端模块实现

2024-04-14 20:43:43 1227

原创 【自研网关】过滤器链设计

在我们的微服务架构中,构建了一个关键组件——网关服务,它作为系统的入口,负责对所有进、出流量进行统一管理和控制。为了实现这一功能,前面文章已成功将其注册至注册中心,并从配置中心获取了相关配置。接下来,我们将深入探讨如何构建网关服务的核心部分——过滤器链。过滤器链,顾名思义,是由一系列有序排列的过滤器构成的执行链条。每个过滤器承载特定的业务逻辑,对经过的请求和响应进行特定处理。当一个过滤器完成其预设的过滤流程后,会遵循链条顺序,将请求传递给下一个过滤器继续执行。

2024-04-14 00:01:52 1239

原创 【自研网关系列】整合 Nacos 配置拉取与配置变更信息的订阅

实现整合 Nacos 配置拉取与配置变更信息的订阅

2024-04-13 20:26:08 1168 1

原创 【自研网关系列】整合 Nacos 服务注册与服务订阅的实现

实现 Nacos 服务注册与服务订阅

2024-04-10 17:47:50 1045 1

原创 【自研网关系列】Netty 搭建

本文主要就是介绍Netty,以及搭建Netty架构

2024-04-10 11:09:06 1022 1

原创 使用 JDK 的 SPI 时出现 ServiceLoader.load() 无法加载类问题

在resource下,创建多级目录或创建同级目录,应在每个目录之间用"/"隔开。META-INF 和 services 是层级关系 别写成一个文件夹了。在创建文件夹的时候不能像普通的 java 下这样创包。这样创建代码运行时容易会出现一些目录寻找不到的问题。

2024-04-09 23:44:43 506

原创 【自研网关系列】自研网关的架构设计

构建网关项目骨架,包括Client、Common、ConfigCenter、RegisterCenter、Core、HttpServer、UserServer及Dubbo模块。

2024-04-06 22:26:49 1055 1

原创 【自研网关系列】网关的技术选型以及架构设计

设计网关项目时,通过市场调研与竞品分析,聚焦于性能、安全、可观测性、路由、扩展性、多协议支持和高可用性。技术方案概要:性能:利用Netty、Caffeine、Redis优化速度与缓存。安全:集成JWT认证,暂无TLS/SSL。监控:采用Prometheus+Grafana组合。路由:基于Zuul或自定义过滤器,结合Consul/Eureka/Nacos服务发现。扩展:采用Java SPI实现插件化架构。协议:支持gRPC、Dubbo RPC与WebSocket。高可用:借助Nacos进行配置

2024-04-05 21:21:23 2373 1

原创 【自研网关系列】什么是网关,为什么需要自研网关

Yu-Gateway 自研网关。基于 Netty 与原生 Java 实现,使用 Nacos 作为注册与配置中心。项目实现多种过滤器,包含路由、负载均衡、鉴权、灰度发布等过滤器。项目代码地址:https://github.com/YYYUUU42/YuGateway-master如果对你有帮助,可以点个 star 喔

2024-04-05 19:34:48 1430 1

原创 如何在 spring boot 发邮件(qq邮箱为例)

依赖。

2024-03-21 21:18:00 16682 2

原创 hashCode() 是如何实现的

实际应用的基本上都是通过数学公式产生的伪随机数。严格意义上讲,伪随机数不是完全随机的,但是真随机生成比较困难,所以只要能通过一定的随机数统计检测,就可以当作真随机数来使用。所以与地址相关的生成策略有两条,在hashCode等于1或4的时候。简单来说,看起来就是一个移位寄存器,每次移入的位由寄存器中若干位取异或生成。每次新生成的位看起来是随机的。Marsaglia的xor-shift策略,支持多线程执行的状态,这可能是最好的整体实现 ,这种方式。其实就是JVM启动的一个参数,每一个分支对应一个生成策略。

2024-03-21 12:48:35 763 1

原创 利用 docker-compose 部署微服务,如何查看相关日志

首先介绍下,我们为什么要去查看日志,在微服务中,我们所开发的项目 ,每个模块都是一个微服务,这是对微服务最基本的理解, 当我们的程序在运行过程中报错时,我们不光可以在前台页面对你的代码进行调试,更直观的方法就是去你的微服务下查看日志 分析报错原因 并迅速找到解决办法,提高开发效率 ,接下来我要介绍的就是 怎么通过命令 去查看所对应的微服务日志。2. 通过命令查找到对应的服务名 (我们的服务名往往会很长,但我们只要记住开头几个字母,便可以通过模糊查询搜索到对应的服务)

2024-03-20 21:27:08 486 1

原创 自定义 Mybatis 拦截器实现权限功能

将信息存储到 TreadLocalhost 中,方便后续修改sql的时候可以读取到需要修改的字段。- method:对应接口中的哪类方法(因为可能存在重载方法);Signature来指定咱们需要拦截那个类对象的哪个方法。- type:上述四种类型中的一种;- args:对应哪一个方法的入参;切面(AuthAspect)在所在接口上添加注解。

2024-03-20 21:13:17 805 1

原创 Java 实现ip属地功能

ip2region: Ip2region (2.0 - xdb) 是一个离线 IP 数据管理框架和定位库,支持亿级别的数据段,10微秒级别的查询性能,提供了许多主流编程语言的 xdb 数据管理引擎的实现。ip2region - 是一个离线IP地址定位库和IP定位数据管理框架,10微秒级别的查询效率,提供了众多主流编程语言的 xdb 数据生成和查询客户端实现。可以访问 github 或 gitee 地址详细了解。

2024-01-18 10:56:19 713 1

原创 什么是红黑树

也是一种自平衡的二叉搜索树(BST),之前叫做平衡二叉B树。

2023-12-18 19:30:13 416

原创 MySQL事务

事务是一组操作的集合,这些操作必须作为⼀个不可分割的单元执⾏,即要么全部执⾏成功,要么全部失败回滚。事务通常涉及到对数据库中的数据进⾏读写操作。原⼦性(Atomicity)、⼀致性(Consistency)、隔离性(Isolation)和持久性(Durability)。A 向 B 转账 500,转账成功,A 扣除500块,B增加了500块,InnoDB 引擎通过什么技术来保证事务的这四个特性的呢?

2023-12-18 19:24:11 524

原创 什么是线程池

在项目中,使用 ThreadPoolExecutor 实现灵活的定义线程池,并通过ArrayBlockingQueue 存放任务。针对不同的业务定义不同的线程池,让它们互不影响。来调整线程池的参数。

2023-12-15 14:09:02 514

原创 Redis持久化机制

因为 AOF 日志记录的是操作命令,不是实际的数据,所以用 AOF 方法做故障恢复时,需要全量把日志都执行一遍,一旦 AOF 日志非常多,势必会造成 Redis 的恢复操作缓慢。Redis 在执行完一条写操作命令后,就会把该命令以追加的方式写入到一个文件里,然后 Redis 重启时,会读取该文件记录的命令,然后逐一执行命令的方式来进行数据恢复。所以,RDB 快照就是记录某一个瞬间的内存数据,记录的是实际数据,而 AOF 文件记录的是命令操作的日志,而不是实际的数据。Redis 的快照是。

2023-12-14 15:18:37 1660 1

原创 类的生命周期

加载、连接、初始化、使用、和卸载。其中的连接又分为验证、准备和解析三个步骤。启动Java程序一定会启动加载(从磁盘加载到内存),验证(进行类的合法性校验),准备(为类的静态变量分配内存,并设为jvm默认的初值),解析(把常量池中的符号引用转换为直接引用)这几步,用到类的时候才会执行初始化(调用到静态变量或方法,对象的创建),然后就可以正常使用这个类了,使用完后,如果没有被引用之后,就会被JAM的垃圾回收器给回收掉。卸载完后再使用就继续执行初始化、使用、卸载这三个步骤。

2023-12-13 22:04:37 915

原创 数据库索引是什么?适用场景以及优缺点

主要讲了什么是索引,索引的使用场景以及优缺点

2023-12-13 21:40:08 1534

原创 Redis常见知识点

Redis是一个基于内存的键值型(key-value)的NoSQL数据库(非关系型数据库)。key一般是String类型,而value支持丰富的数据类型,包括String、Hash、List、Set、SortedSet五种基本的类型,此外还有GEO、BitMap、HyperLogLog等其他类型。

2023-11-24 16:41:18 1043 2

原创 Java 集合框架(含源码)

Java集合常见面试题总结

2023-10-26 21:19:41 114 1

空空如也

空空如也

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

TA关注的人

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