Java SpringBoot SpringCloud
文章平均质量分 59
java 微服务 分布式
努力学习,努力爱你!
这个作者很懒,什么都没留下…
展开
-
认证授权auth
认证授权包含 认证和授权两部分。用户身份认证即当用户访问系统资源时,系统要求验证用户的身份信息,身份合法方可继续访问常见的用户身份认证表现形式有用户名密码登录微信扫码登录等用户认证通过后去访问系统的资源,系统会判断用户是否拥有访问资源的权限,只允许访问有权限的系统资源,没有权限的资源将无法访问,这个过程叫用户授权。例如用户去发布课程,系统首先进行用户身份认证,认证通过后继续判断用户是否有发布课程的权限如果没有权限,则拒绝继续访问系统如果有权限,则继续发布课程统一认证。原创 2024-07-07 18:48:22 · 239 阅读 · 0 评论 -
实现不同的数据库之间的同步方式
第一种 实时同步针对实时性要求比较高的场景可以使用canal中间件实现,我们内部的大数据项目中也有用dataX的。canal 的主要用途是基于mysql数据库增量日志解析,并能提供新增量数据订阅和消费,从而实现数据同步。其主要是基于mysql 的binlog 技术实现的数据同步。主要工作原理如下:1、 canal模拟Mysql slave的交互协议,伪装为Mysql slave 发送dump 协议2、Mysql master接收到dump请求,推送binanry log 给slave3、 ca原创 2024-07-07 12:12:35 · 155 阅读 · 0 评论 -
熔断降级处理
当微服务运行不正常,会导致无法正常调用微服务,此时会出现异常,如果这种异常不去处理,可能会导致雪崩效应微服务的雪崩效应表现在服务与服务之间调用,当其中一个服务无法提供服务时,可能导致其他服务也挂掉。例如服务C调用服务B,服务B调用服务A,由于服务A异常导致服务B响应缓慢,最终导致服务A和服务B都不可用,而服务B不可用又导致服务C也不可用。像这样由一个服务所引起的一连串的服务都无法提供服务,就是微服务的雪崩效应。原创 2024-07-06 18:38:49 · 431 阅读 · 0 评论 -
xxl-job 分布式任务调度 基本使用
任务中的高级配置 原理和线程池类似,路由策略和nginx,springcloud gateway等类似,不过多了一个分片广播,意思就是将所有的任务都广播到每一个执行器,需要自己在执行器手动进行判断哪些分片该哪些执行器执行。工作原理类似于nacos 执行器注册到调度中心 调度中心分配任务 执行器执行任务。是一个分布式任务调度平台,使用非常方便。原创 2024-06-26 00:55:51 · 238 阅读 · 0 评论 -
文件传输 断点续传
什么是断点续传简单来说断点续传指的是文件在上传或下载的过程中,由于网络差断开了,那么下次上传或下载时应该从断点处开始。怎么实现前端对文件进行分块前端使用多线程一块一块上传,上传前给服务端发一个消息检验该分块是否上传,如果已上传则不再上传。等所有分块上传完毕,服务端合并所有分块,校验文件的完整性。(因为分块全部上传到了服务器,服务器将所有分块按顺序进行合并,就是写每个分块文件内容按顺序依次写入一个文件中。)前端给服务传一个md5值,服务端合并文件后计算合并后的文件的md5是否一样,一样说明完整原创 2024-06-24 00:22:17 · 306 阅读 · 0 评论 -
nacos配置文件优先级
名称为 ${spring.application.name}- ${spring.profiles.active}.yaml 其中yaml为配置方式。项目应用名配置文件 ——优先于》扩展配置文件——优先于》共享配置文件——优先于》本地配置文件。由于我将文件保存到mysql中所以需要提前安装mysql。那么在本地修改端口后启动端口仍然为63040。如果要本地优先 则需要进行以下配置。如有问题,欢迎指正!原创 2024-06-16 23:24:04 · 361 阅读 · 0 评论 -
实现多级树形结构查询 比如分类(父分类、子分类)
实现多级树形结构查询 比如分类(父分类、子分类)数据库表结构CREATE TABLE `course_category` ( `id` varchar(20) NOT NULL COMMENT '主键', `name` varchar(32) NOT NULL COMMENT '分类名称', `label` varchar(32) DEFAULT NULL COMMENT '分类标签默认和名称一样', `parentid` varchar(20) NOT NULL DEFAULT '0'原创 2024-05-22 22:42:44 · 336 阅读 · 0 评论 -
异常机制为什么耗时
我们可以重写fillInStackTrace方法实现高效的异常类或者将writableStackTrace 设置为false,这样也不抓取堆栈信息,但是会增加排查问题的成本。异常是非常耗时的,因为他要取爬堆栈信息,所以非常耗时。原创 2024-03-16 21:05:23 · 160 阅读 · 0 评论 -
jconsole与jvisualvm
jmap -clstats pid打印 Java 类加载器的智能统计信息,对于每个类加载器而言,对于每个类加载器而言,它的名称,活跃度,地址,父类加载器,它所加载的类的数量和大小都会被打印。jmap -heap pid打印 heap 的概要信息,GC 使用的算法,heap 的配置和使用情况,可以用此来判断内存目前的使用情况以及垃圾回收情况。jstat 工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程 id,和所选参数。打印结果:-无此参数,+有。原创 2023-12-18 17:11:18 · 972 阅读 · 0 评论 -
压力测试详解
压力测试是看当前软硬件环境下系统所能承受的最大负荷,找出系统瓶颈。为了在线上的处理能力和稳定性维持在一个标准范围内,做到心中有数。windows 提供TCP/ip 连接的端口为1024-5000 并且要四分钟才来循环回收,就会导致在短时间内大量请求将端口占满了。在压力测试,我们希望找到其他测试方法(单元测试)更难发现的错误,比如内存泄漏,并发与同步问题。有效的压力测试将应用重复、并发、量级、随机变化的关键条件。3、 给线程组添加测试行为 取样器。汇总报告可以查看指标 吞吐量。4、查看结果需要添加监听器。原创 2023-12-18 14:26:44 · 1625 阅读 · 0 评论 -
阿里云部署k8s with kubesphere
如果想同时部署kubeshpere 加上 --with-kubeshpere v3.2.0 即可。容器镜像服务 个人即可 创建仓库和命名空间 从一个仓库的基本信息中找到仓库地址。vpc 隔离环境域 不同的vpc下 即使相同的子网也不互通。在安装后 开启一些组件 crud 中 配置项改为true。如果想直接创建一个带kubesphere 的配置文件。拉取镜像 由于我们使用阿里云的 所以需要使用阿里云。如果想开启其他配置可以去查看api 开启配置。同时在项目的配置中心 密钥处配置。找到命名空间 例如 jhj。原创 2023-12-14 15:22:09 · 1478 阅读 · 2 评论 -
性能测试入门
当用户打开一个网站的时候,最关注的是什么?当然是网站响应速度的快慢。比如我们点击了淘宝的主页,淘宝需要多久将首页的内容呈现在我的面前,我点击了提交订单按钮需要多久返回结果等等。所以,用户在体验我们系统的时候往往根据你的响应速度的快慢来评判你的网站的性能。原创 2023-12-10 16:15:58 · 841 阅读 · 0 评论 -
冗余设计思想
冗余设计是保证系统和数据高可用的最常的手段。对于服务来说,冗余的思想就是相同的服务部署多份,如果正在使用的服务突然挂掉的话,系统可以很快切换到备份服务上,大大减少系统的不可用时间,提高系统的可用性。对于数据来说,冗余的思想就是相同的数据备份多份,这样就可以很简单地提高数据的安全性。实际上,日常生活中就有非常多的冗余思想的应用。拿我自己来说,我对于重要文件的保存方法就是冗余思想的应用。原创 2023-12-10 16:06:13 · 484 阅读 · 0 评论 -
高可用系统
高可用描述的是一个系统在大部分时间都是可用的,可以为我们提供服务的。高可用代表系统即使在发生硬件故障或者系统升级的时候,服务仍然是可用的。一般情况下,我们使用多少个 9 来评判一个系统的可用性,比如 99.9999% 就是代表该系统在所有的运行时间中只有 0.0001% 的时间是不可用的,这样的系统就是非常非常高可用的了!当然,也会有系统如果可用性不太好的话,可能连 9 都上不了。原创 2023-12-10 16:00:54 · 806 阅读 · 0 评论 -
CDN 内容分发网络
全称是 Content Delivery Network/Content Distribution Network,翻译过的意思是。所以,简单来说,类似于京东建立的庞大的仓储运输体系,京东物流在全国拥有非常多的仓库,仓储网络几乎覆盖全国所有区县。这样的话,用户下单的第一时间,商品就从距离用户最近的仓库,直接发往对应的配送站,再由京东小哥送到你家。你可以将 CDN 看作是服务上一层的特殊缓存服务,分布在全国各地,主要用来处理静态资源的请求。我们经常拿全站加速和内容分发网络做对比,不要把两者搞混了!原创 2023-12-10 15:54:18 · 955 阅读 · 0 评论 -
Dubbo
分布式或者说 SOA 分布式重要的就是面向服务,说简单的分布式就是我们把整个系统拆分成不同的服务然后将这些服务放在不同的服务器上减轻单体服务的压力提高并发量和性能。比如电商系统可以简单地拆分成订单系统、商品系统、登录系统等等,拆分之后的每个服务可以部署在不同的机器上,如果某一个服务的访问量比较大的话也可以将这个服务同时部署在多台机器上。先来看一下稍微官方点的解释。下面这段话摘自维基百科对负载均衡的定义:负载均衡改善了跨多个计算资源(例如计算机,计算机集群,网络链接,中央处理单元或磁盘驱动)的工作负载分布。原创 2023-12-10 15:31:02 · 1137 阅读 · 0 评论 -
RPC基础
即远程过程调用,通过名字我们就能看出 RPC 关注的是远程调用而非本地调用。因为,两个不同的服务器上的服务提供的方法不在一个内存空间,所以,需要通过网络编程才能传递方法调用所需要的参数。并且,方法调用的结果也需要通过网络编程来接收。但是,如果我们自己手动网络编程来实现这个调用过程的话工作量是非常大的,因为,我们需要考虑底层传输方式(TCP 还是 UDP)、序列化方式等等方面。简单来说,通过 RPC 可以帮助我们调用远程计算机上某个服务的方法,这个过程就像调用本地方法一样简单。并且!原创 2023-12-05 21:43:02 · 1222 阅读 · 0 评论 -
分布式锁介绍
在多线程环境中,如果多个线程同时访问共享资源(例如商品库存、外卖订单),会发生数据竞争,可能会导致出现脏数据或者系统问题,威胁到程序的正常运行。举个例子,假设现在有 100 个用户参与某个限时秒杀活动,每位用户限购 1 件商品,且商品的数量只有 3 个。为了保证共享资源被安全地访问,我们需要使用互斥操作对共享资源进行保护,即同一时刻只允许一个线程访问共享资源,其他线程需要等待当前线程释放后才能访问。这样可以避免数据竞争和脏数据问题,保证程序的正确性和稳定性。原创 2023-12-05 19:15:31 · 363 阅读 · 0 评论 -
分布式 ID
日常开发中,我们需要对系统中的各种数据使用 ID 唯一表示,比如用户 ID 对应且仅对应一个人,商品 ID 对应且仅对应一件商品,订单 ID 对应且仅对应一个订单。我们现实生活中也有各种 ID,比如身份证 ID 对应且仅对应一个人、地址 ID 对应且仅对应简单来说,ID 就是数据的唯一标识。分布式 ID 是分布式系统下的 ID。分布式 ID 不存在与现实生活中,属于计算机系统中的一个概念。我简单举一个分库分表的例子。我司的一个项目,使用的是单机 MySQL。原创 2023-12-05 18:38:08 · 959 阅读 · 0 评论 -
Spring Cloud Gateway常见问题
在 SpringBoot 项目中,我们捕获全局异常只需要在项目中配置和就可以了。不过,这种方式在 Spring Cloud Gateway 下不适用。Spring Cloud Gateway 提供了多种全局处理的方式,比较常用的一种是实现并重写其中的handle方法。原创 2023-12-05 16:56:48 · 1392 阅读 · 0 评论 -
api 网关
微服务背景下,一个系统被拆分为多个服务,但是像安全认证,流量控制,日志,监控等功能是每个服务都需要的,没有网关的话,我们就需要在每个服务中单独实现,这使得我们做了很多重复的事情并且没有一个全局的视图来统一管理这些功能。一般情况下,网关可以为我们提供请求转发、安全认证(身份/权限认证)、流量控制、负载均衡、降级熔断、日志、监控、参数校验、协议转换等功能。。由于引入网关之后,会多一步网络转发,因此性能会有一点影响(几乎可以忽略不计,尤其是内网访问的情况下)。原创 2023-12-05 16:10:30 · 1361 阅读 · 0 评论 -
Gossip 协议
Gossip 协议也叫 Epidemic 协议(流行病协议)或者 Epidemic propagation 算法(疫情传播算法),别名很多。不过,这些名字的特点都具有随机传播特性(联想一下病毒传播、癌细胞扩散等生活中常见的情景),这也正是 Gossip 协议最主要的特点。当时提出的主要应用是在分布式数据库系统中各个副本节点同步数据。正如 Gossip 协议其名一样,这是一种随机且带有传染性的方式将信息传播到整个网络中,并在一定时间内,使得系统内的所有节点数据一致。原创 2023-12-03 17:00:00 · 973 阅读 · 0 评论 -
Raft 算法
当今的数据中心和应用程序在高度动态的环境中运行,为了应对高度动态的环境,它们通过额外的服务器进行横向扩展,并且根据需求进行扩展和收缩。同时,服务器和网络故障也很常见。因此,系统必须在正常操作期间处理服务器的上下线。它们必须对变故做出反应并在几秒钟内自动适应;对客户来说的话,明显的中断通常是不可接受的。幸运的是,分布式共识可以帮助应对这些挑战。原创 2023-12-03 00:18:10 · 1189 阅读 · 0 评论 -
Paxos 算法
Paxos 算法是第一个被证明完备的分布式系统共识算法。共识算法的作用是让分布式系统中的多个节点之间对某个提案(Proposal)达成一致的看法。提案的含义在分布式系统中十分宽泛,像哪一个节点是 Leader 节点、多个事件发生的顺序等等都可以是一个提案。由于 Paxos 算法在国际上被公认的非常难以理解和实现,因此不断有人尝试简化这一算法。原创 2023-12-02 23:01:05 · 428 阅读 · 0 评论 -
CAP & BASE理论
BASE是Basically Available(基本可用)Soft-state(软状态)和Eventually Consistent(最终一致性)三个短语的缩写。BASE 理论是对 CAP 中一致性 C 和可用性 A 权衡的结果,其来源于对大规模互联网系统分布式实践的总结,是基于 CAP 定理逐步演化而来的,它大大降低了我们对系统的要求。原创 2023-12-02 22:51:02 · 532 阅读 · 0 评论 -
Web 实时消息推送
MQTT (Message Queue Telemetry Transport)是一种基于发布/订阅(publish/subscribe)模式的轻量级通讯协议,通过订阅相应的主题来获取消息,是物联网(Internet of Thing)中的一个标准传输协议。该协议将消息的发布者(publisher)与订阅者(subscriber)进行分离,因此可以在不可靠的网络环境中,为远程连接的设备提供可靠的消息服务,使用方式与传统的 MQ 有点类似。原创 2023-12-01 21:58:08 · 1025 阅读 · 0 评论 -
数据脱敏方案
数据脱敏百度百科中是这样定义的:数据脱敏,指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。这样就可以在开发、测试和其它非生产环境以及外包环境中安全地使用脱敏后的真实数据集。在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。是数据库安全技术之一。总的来说,数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。原创 2023-11-28 16:55:10 · 751 阅读 · 0 评论 -
敏感词过滤方案
敏感词过滤用的使用比较多的和。原创 2023-11-28 15:20:11 · 564 阅读 · 0 评论 -
常见加密算法
加密算法是一种用数学方法对数据进行变换的技术,目的是保护数据的安全,防止被未经授权的人读取或修改。加密算法可以分为三大类:对称加密算法、非对称加密算法和哈希算法(也叫摘要算法)。原创 2023-11-28 15:09:15 · 585 阅读 · 0 评论 -
MyBatis常见面试题总结
虽然 MyBatis 解析 xml 映射文件是按照顺序解析的,但是,被引用的 B 标签依然可以定义在任何地方,MyBatis 都可以正确识别。原理是,MyBatis 解析 A 标签,发现 A 标签引用了 B 标签,但是 B 标签尚未解析到,尚不存在,此时,MyBatis 会将 A 标签标记为未解析状态,然后继续解析余下的标签,包含 B 标签,待所有标签解析完毕,MyBatis 会重新解析那些被标记为未解析的标签,此时再解析 A 标签时,B 标签已经存在,A 标签也就可以正常解析完成了。原创 2023-11-25 00:03:18 · 917 阅读 · 0 评论 -
sleuth-zipkin springcloud
yaml 配置文件配置。如有问题,欢迎指正!原创 2023-02-24 15:34:54 · 84 阅读 · 1 评论 -
docker-compose 部署ELK
logback.xml 日志文件中引入。如有问题,欢迎指正!原创 2023-02-23 18:16:51 · 332 阅读 · 0 评论 -
SEATAdocker-compose部署
如有问题,欢迎指正!原创 2023-02-22 22:34:50 · 395 阅读 · 0 评论 -
深拷贝与浅拷贝
深拷贝是将类的属性类也进行拷贝,而浅拷贝对于类的属性类进行公用操作。即深拷贝改变属性类的值拷贝对象不会随其变化,而浅拷贝会变化。原创 2023-02-19 23:37:42 · 68 阅读 · 0 评论 -
spring.factories
spring.factories的作用是 当外界使用该jar时不用再写配置 会自动加入其中已经配置好的配置。原创 2022-08-30 21:57:08 · 768 阅读 · 0 评论 -
java自定义注解
开发者自己定义的注解,包括框架中提供的 @Autowired等等//作用在方法上 @Target(ElementType . METHOD) //运行时 @Retention(RetentionPolicy . RUNTIME) public @interface JhjLog {//描述方法 String value() default "JhjLog注解";}原创 2022-08-30 20:29:12 · 188 阅读 · 0 评论 -
从 .env 文件加载环境变量
如有问题,欢迎指正!原创 2022-08-29 17:45:15 · 347 阅读 · 0 评论 -
springboot集成kafka
如有问题,欢迎指正!原创 2022-08-27 20:26:49 · 665 阅读 · 2 评论 -
docker安装mysql
拉取镜像docker pull mysql:5.7启动docker run -p 3306:3306 --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7修改配置文件因为使用了容器挂载,所以只需要在其映射文件中修改 主要修改字符集原创 2022-05-13 14:06:42 · 252 阅读 · 0 评论 -
SpringBoot整合mybatis-plus
导入依赖在项目pom文件导入依赖#在项目pom文件导入依赖<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.1</version></dependency>配置数据源在项目pom文件导入数据库依赖#在项目pom文件导入数原创 2022-05-14 17:05:05 · 2497 阅读 · 0 评论