- 博客(224)
- 收藏
- 关注
原创 认证授权auth
认证授权包含 认证和授权两部分。用户身份认证即当用户访问系统资源时,系统要求验证用户的身份信息,身份合法方可继续访问常见的用户身份认证表现形式有用户名密码登录微信扫码登录等用户认证通过后去访问系统的资源,系统会判断用户是否拥有访问资源的权限,只允许访问有权限的系统资源,没有权限的资源将无法访问,这个过程叫用户授权。例如用户去发布课程,系统首先进行用户身份认证,认证通过后继续判断用户是否有发布课程的权限如果没有权限,则拒绝继续访问系统如果有权限,则继续发布课程统一认证。
2024-07-07 18:48:22
324
原创 实现不同的数据库之间的同步方式
第一种 实时同步针对实时性要求比较高的场景可以使用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
394
原创 熔断降级处理
当微服务运行不正常,会导致无法正常调用微服务,此时会出现异常,如果这种异常不去处理,可能会导致雪崩效应微服务的雪崩效应表现在服务与服务之间调用,当其中一个服务无法提供服务时,可能导致其他服务也挂掉。例如服务C调用服务B,服务B调用服务A,由于服务A异常导致服务B响应缓慢,最终导致服务A和服务B都不可用,而服务B不可用又导致服务C也不可用。像这样由一个服务所引起的一连串的服务都无法提供服务,就是微服务的雪崩效应。
2024-07-06 18:38:49
522
原创 分布式事务实现技术及考虑点
平时我们在程序中通过Spring去控制事务是利用数据库本身的事务特性来实现的,因此叫数据库事务,由于应用主要靠关系数据库来控制事务,而数据库通常和应用在同一个服务器,所以基于关系型数据库的事务又被称为本地事务本地事务具有ACID四大特性原子性(Atomicity):事务是一个不可分割的工作单位,事务中的操作要么全部成功,要么全部失败。一致性(Consistency):事务在执行前后必须保持数据的一致性,即满足业务逻辑和约束条件。
2024-07-03 00:13:43
918
原创 xxl-job使用二
此外使用synchronized 无法保证同步,因为synchronized 只能保证同一个虚拟机中多个线程去争抢锁,ReentrantLock 一样。从理论上讲 前面已经保证了任务不被重复执行,但是如果机器发生故障或者弹性扩容,那么调度中心检测不到该任务已经被分配过了,就会在两个机器之间造成重复执行。该锁不被虚拟机所有,单独分布式部署,由多个虚拟机所共享,这种锁称为分布式锁。指的是 该任务还没有执行完成,调度中心再次推向执行器,重复执行。来保证 但是并不能完全解决 还需要保证任务的幂等性。
2024-06-30 00:28:39
542
原创 xxl-job 分布式任务调度 基本使用
任务中的高级配置 原理和线程池类似,路由策略和nginx,springcloud gateway等类似,不过多了一个分片广播,意思就是将所有的任务都广播到每一个执行器,需要自己在执行器手动进行判断哪些分片该哪些执行器执行。工作原理类似于nacos 执行器注册到调度中心 调度中心分配任务 执行器执行任务。是一个分布式任务调度平台,使用非常方便。
2024-06-26 00:55:51
379
原创 文件传输 断点续传
什么是断点续传简单来说断点续传指的是文件在上传或下载的过程中,由于网络差断开了,那么下次上传或下载时应该从断点处开始。怎么实现前端对文件进行分块前端使用多线程一块一块上传,上传前给服务端发一个消息检验该分块是否上传,如果已上传则不再上传。等所有分块上传完毕,服务端合并所有分块,校验文件的完整性。(因为分块全部上传到了服务器,服务器将所有分块按顺序进行合并,就是写每个分块文件内容按顺序依次写入一个文件中。)前端给服务传一个md5值,服务端合并文件后计算合并后的文件的md5是否一样,一样说明完整
2024-06-24 00:22:17
484
原创 Spring 事务失效
代理对象调用方法上添加Transcation 注解 采用声明式事务1)方法中捕获异常没有抛出spring控制事务式基于AOP环绕通知实现的,如果方法抛出了异常就会回滚,如果没有抛出就不会生效2)非事务方法调用事务方法在内部调用由于不是代理对象,因此失效3)事务方法调用事务方法可以被控制 但要选对事务传播行为 只要不是通过代理对象去掉 那么开启一个新事务是不可能的4)transaction 如果标记的不是public 方法也不可以。
2024-06-22 12:35:59
526
原创 nacos配置文件优先级
名称为 ${spring.application.name}- ${spring.profiles.active}.yaml 其中yaml为配置方式。项目应用名配置文件 ——优先于》扩展配置文件——优先于》共享配置文件——优先于》本地配置文件。由于我将文件保存到mysql中所以需要提前安装mysql。那么在本地修改端口后启动端口仍然为63040。如果要本地优先 则需要进行以下配置。如有问题,欢迎指正!
2024-06-16 23:24:04
1233
原创 实现多级树形结构查询 比如分类(父分类、子分类)
实现多级树形结构查询 比如分类(父分类、子分类)数据库表结构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
590
原创 docker安装mysql chown: changing ownership of ‘/var/lib/mysql/‘: Permission denied
发现错误 chown: changing ownership of ‘’/var/lib/mysql/‘’: Permission denied’centos7 第一次安装docker-compose后,使用进行安装mysql 一直在重启,利用 docker logs -f 查看日志。如果是使用docker 命令启动 则 --privileged=true 赋予和宿主机一样的权限即可。
2024-05-14 00:04:55
1093
原创 异常机制为什么耗时
我们可以重写fillInStackTrace方法实现高效的异常类或者将writableStackTrace 设置为false,这样也不抓取堆栈信息,但是会增加排查问题的成本。异常是非常耗时的,因为他要取爬堆栈信息,所以非常耗时。
2024-03-16 21:05:23
220
原创 新站上线了
由于本人自身的向往,以及粉丝朋友的广大呼吁。我终于抽出时间给我的新站上线了。欢迎大家前来踩站~。今后会同时维护优快云与jhj-coding哦!期待新站可以给大家带来更好的体验哦。
2024-03-15 18:32:12
298
原创 jconsole与jvisualvm
jmap -clstats pid打印 Java 类加载器的智能统计信息,对于每个类加载器而言,对于每个类加载器而言,它的名称,活跃度,地址,父类加载器,它所加载的类的数量和大小都会被打印。jmap -heap pid打印 heap 的概要信息,GC 使用的算法,heap 的配置和使用情况,可以用此来判断内存目前的使用情况以及垃圾回收情况。jstat 工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程 id,和所选参数。打印结果:-无此参数,+有。
2023-12-18 17:11:18
1046
原创 压力测试详解
压力测试是看当前软硬件环境下系统所能承受的最大负荷,找出系统瓶颈。为了在线上的处理能力和稳定性维持在一个标准范围内,做到心中有数。windows 提供TCP/ip 连接的端口为1024-5000 并且要四分钟才来循环回收,就会导致在短时间内大量请求将端口占满了。在压力测试,我们希望找到其他测试方法(单元测试)更难发现的错误,比如内存泄漏,并发与同步问题。有效的压力测试将应用重复、并发、量级、随机变化的关键条件。3、 给线程组添加测试行为 取样器。汇总报告可以查看指标 吞吐量。4、查看结果需要添加监听器。
2023-12-18 14:26:44
1736
原创 k8s实操
出现这个问题有可能是没有删除之前失败的集群 以及ip 配置不正确 配置文件中均为内网ip 即可。test.yaml 配置文件的对应节点密码修改即可 仍可使用。需要安全组放行icmp。如有问题,欢迎指正!
2023-12-17 17:39:08
648
原创 阿里云部署k8s with kubesphere
如果想同时部署kubeshpere 加上 --with-kubeshpere v3.2.0 即可。容器镜像服务 个人即可 创建仓库和命名空间 从一个仓库的基本信息中找到仓库地址。vpc 隔离环境域 不同的vpc下 即使相同的子网也不互通。在安装后 开启一些组件 crud 中 配置项改为true。如果想直接创建一个带kubesphere 的配置文件。拉取镜像 由于我们使用阿里云的 所以需要使用阿里云。如果想开启其他配置可以去查看api 开启配置。同时在项目的配置中心 密钥处配置。找到命名空间 例如 jhj。
2023-12-14 15:22:09
1706
2
原创 性能测试入门
当用户打开一个网站的时候,最关注的是什么?当然是网站响应速度的快慢。比如我们点击了淘宝的主页,淘宝需要多久将首页的内容呈现在我的面前,我点击了提交订单按钮需要多久返回结果等等。所以,用户在体验我们系统的时候往往根据你的响应速度的快慢来评判你的网站的性能。
2023-12-10 16:15:58
889
原创 冗余设计思想
冗余设计是保证系统和数据高可用的最常的手段。对于服务来说,冗余的思想就是相同的服务部署多份,如果正在使用的服务突然挂掉的话,系统可以很快切换到备份服务上,大大减少系统的不可用时间,提高系统的可用性。对于数据来说,冗余的思想就是相同的数据备份多份,这样就可以很简单地提高数据的安全性。实际上,日常生活中就有非常多的冗余思想的应用。拿我自己来说,我对于重要文件的保存方法就是冗余思想的应用。
2023-12-10 16:06:13
674
原创 高可用系统
高可用描述的是一个系统在大部分时间都是可用的,可以为我们提供服务的。高可用代表系统即使在发生硬件故障或者系统升级的时候,服务仍然是可用的。一般情况下,我们使用多少个 9 来评判一个系统的可用性,比如 99.9999% 就是代表该系统在所有的运行时间中只有 0.0001% 的时间是不可用的,这样的系统就是非常非常高可用的了!当然,也会有系统如果可用性不太好的话,可能连 9 都上不了。
2023-12-10 16:00:54
845
原创 CDN 内容分发网络
全称是 Content Delivery Network/Content Distribution Network,翻译过的意思是。所以,简单来说,类似于京东建立的庞大的仓储运输体系,京东物流在全国拥有非常多的仓库,仓储网络几乎覆盖全国所有区县。这样的话,用户下单的第一时间,商品就从距离用户最近的仓库,直接发往对应的配送站,再由京东小哥送到你家。你可以将 CDN 看作是服务上一层的特殊缓存服务,分布在全国各地,主要用来处理静态资源的请求。我们经常拿全站加速和内容分发网络做对比,不要把两者搞混了!
2023-12-10 15:54:18
1081
原创 Dubbo
分布式或者说 SOA 分布式重要的就是面向服务,说简单的分布式就是我们把整个系统拆分成不同的服务然后将这些服务放在不同的服务器上减轻单体服务的压力提高并发量和性能。比如电商系统可以简单地拆分成订单系统、商品系统、登录系统等等,拆分之后的每个服务可以部署在不同的机器上,如果某一个服务的访问量比较大的话也可以将这个服务同时部署在多台机器上。先来看一下稍微官方点的解释。下面这段话摘自维基百科对负载均衡的定义:负载均衡改善了跨多个计算资源(例如计算机,计算机集群,网络链接,中央处理单元或磁盘驱动)的工作负载分布。
2023-12-10 15:31:02
1181
原创 分布式锁常见实现方案
不论是本地锁还是分布式锁,核心都在于“互斥”。在 Redis 中,SETNX命令是可以帮助我们实现互斥。SETNX即ifot eists (对应 Java 中的方法),如果 key 不存在的话,才会设置 key 的值。如果 key 已经存在,SETNX啥也不做。释放锁的话,直接通过DEL命令删除对应的 key 即可。为了防止误删到其他的锁,这里我们建议使用 Lua 脚本通过 key 对应的 value(唯一值)来判断。选用 Lua 脚本是为了保证解锁操作的原子性。
2023-12-06 18:00:00
1127
原创 RPC基础
即远程过程调用,通过名字我们就能看出 RPC 关注的是远程调用而非本地调用。因为,两个不同的服务器上的服务提供的方法不在一个内存空间,所以,需要通过网络编程才能传递方法调用所需要的参数。并且,方法调用的结果也需要通过网络编程来接收。但是,如果我们自己手动网络编程来实现这个调用过程的话工作量是非常大的,因为,我们需要考虑底层传输方式(TCP 还是 UDP)、序列化方式等等方面。简单来说,通过 RPC 可以帮助我们调用远程计算机上某个服务的方法,这个过程就像调用本地方法一样简单。并且!
2023-12-05 21:43:02
1268
原创 分布式锁介绍
在多线程环境中,如果多个线程同时访问共享资源(例如商品库存、外卖订单),会发生数据竞争,可能会导致出现脏数据或者系统问题,威胁到程序的正常运行。举个例子,假设现在有 100 个用户参与某个限时秒杀活动,每位用户限购 1 件商品,且商品的数量只有 3 个。为了保证共享资源被安全地访问,我们需要使用互斥操作对共享资源进行保护,即同一时刻只允许一个线程访问共享资源,其他线程需要等待当前线程释放后才能访问。这样可以避免数据竞争和脏数据问题,保证程序的正确性和稳定性。
2023-12-05 19:15:31
391
原创 分布式 ID
日常开发中,我们需要对系统中的各种数据使用 ID 唯一表示,比如用户 ID 对应且仅对应一个人,商品 ID 对应且仅对应一件商品,订单 ID 对应且仅对应一个订单。我们现实生活中也有各种 ID,比如身份证 ID 对应且仅对应一个人、地址 ID 对应且仅对应简单来说,ID 就是数据的唯一标识。分布式 ID 是分布式系统下的 ID。分布式 ID 不存在与现实生活中,属于计算机系统中的一个概念。我简单举一个分库分表的例子。我司的一个项目,使用的是单机 MySQL。
2023-12-05 18:38:08
1031
原创 Spring Cloud Gateway常见问题
在 SpringBoot 项目中,我们捕获全局异常只需要在项目中配置和就可以了。不过,这种方式在 Spring Cloud Gateway 下不适用。Spring Cloud Gateway 提供了多种全局处理的方式,比较常用的一种是实现并重写其中的handle方法。
2023-12-05 16:56:48
1512
原创 api 网关
微服务背景下,一个系统被拆分为多个服务,但是像安全认证,流量控制,日志,监控等功能是每个服务都需要的,没有网关的话,我们就需要在每个服务中单独实现,这使得我们做了很多重复的事情并且没有一个全局的视图来统一管理这些功能。一般情况下,网关可以为我们提供请求转发、安全认证(身份/权限认证)、流量控制、负载均衡、降级熔断、日志、监控、参数校验、协议转换等功能。。由于引入网关之后,会多一步网络转发,因此性能会有一点影响(几乎可以忽略不计,尤其是内网访问的情况下)。
2023-12-05 16:10:30
1459
原创 Gossip 协议
Gossip 协议也叫 Epidemic 协议(流行病协议)或者 Epidemic propagation 算法(疫情传播算法),别名很多。不过,这些名字的特点都具有随机传播特性(联想一下病毒传播、癌细胞扩散等生活中常见的情景),这也正是 Gossip 协议最主要的特点。当时提出的主要应用是在分布式数据库系统中各个副本节点同步数据。正如 Gossip 协议其名一样,这是一种随机且带有传染性的方式将信息传播到整个网络中,并在一定时间内,使得系统内的所有节点数据一致。
2023-12-03 17:00:00
1029
原创 Raft 算法
当今的数据中心和应用程序在高度动态的环境中运行,为了应对高度动态的环境,它们通过额外的服务器进行横向扩展,并且根据需求进行扩展和收缩。同时,服务器和网络故障也很常见。因此,系统必须在正常操作期间处理服务器的上下线。它们必须对变故做出反应并在几秒钟内自动适应;对客户来说的话,明显的中断通常是不可接受的。幸运的是,分布式共识可以帮助应对这些挑战。
2023-12-03 00:18:10
1237
原创 Paxos 算法
Paxos 算法是第一个被证明完备的分布式系统共识算法。共识算法的作用是让分布式系统中的多个节点之间对某个提案(Proposal)达成一致的看法。提案的含义在分布式系统中十分宽泛,像哪一个节点是 Leader 节点、多个事件发生的顺序等等都可以是一个提案。由于 Paxos 算法在国际上被公认的非常难以理解和实现,因此不断有人尝试简化这一算法。
2023-12-02 23:01:05
471
原创 CAP & BASE理论
BASE是Basically Available(基本可用)Soft-state(软状态)和Eventually Consistent(最终一致性)三个短语的缩写。BASE 理论是对 CAP 中一致性 C 和可用性 A 权衡的结果,其来源于对大规模互联网系统分布式实践的总结,是基于 CAP 定理逐步演化而来的,它大大降低了我们对系统的要求。
2023-12-02 22:51:02
564
原创 Web 实时消息推送
MQTT (Message Queue Telemetry Transport)是一种基于发布/订阅(publish/subscribe)模式的轻量级通讯协议,通过订阅相应的主题来获取消息,是物联网(Internet of Thing)中的一个标准传输协议。该协议将消息的发布者(publisher)与订阅者(subscriber)进行分离,因此可以在不可靠的网络环境中,为远程连接的设备提供可靠的消息服务,使用方式与传统的 MQ 有点类似。
2023-12-01 21:58:08
1078
原创 Java 定时任务
这些场景往往都要求我们在某个特定的时间去做某个事情,也就是定时或者延时去做某个事情。尽管二者的适用场景有所区别,但它们的核心思想都是将任务的执行时间安排在未来的某个点上,以达到预期的调度效果。
2023-12-01 18:54:50
1531
原创 数据脱敏方案
数据脱敏百度百科中是这样定义的:数据脱敏,指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。这样就可以在开发、测试和其它非生产环境以及外包环境中安全地使用脱敏后的真实数据集。在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。是数据库安全技术之一。总的来说,数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。
2023-11-28 16:55:10
1207
原创 常见加密算法
加密算法是一种用数学方法对数据进行变换的技术,目的是保护数据的安全,防止被未经授权的人读取或修改。加密算法可以分为三大类:对称加密算法、非对称加密算法和哈希算法(也叫摘要算法)。
2023-11-28 15:09:15
1118
原创 认证授权常见方式
Cookie和Session都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。维基百科是这样定义CookieCookies是某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密)。简单来说:Cookie存放在客户端,一般用来保存用户信息。OAuth 是一个行业的标准授权协议,主要用来授权第三方应用获取有限的权限。而 OAuth 2.0 是对 OAuth 1.0 的完全重新设计,OAuth 2.0 更快,更容易实现,OAuth 1.0 已经被废弃。
2023-11-28 14:14:39
1167
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人