自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 sentinel动态数据源接入

动态数据源接入apollosentinel的配置规则通过map的数据结构存储的内存中,当服务器重启后,规则就会失效。所以需要将规则进行持久化存储。部门中使用的配置中心是apollo,并且apollo具有监听配置变化事件的功能。改造sentinel-dashboard创建修改规则推送到apollo实现DynamicRulePublisher,通过apollo的openapi接口实现配置项的操作。核心代码如下:// 创建或者更新配置项String flowDataId = Apoll

2022-04-23 20:31:35 629

原创 表结构修改后,canal解析binlog日志报错

问题描述修改表结构后,新增一个字段后,canal解析binlog日志报错:Caused by: com.alibaba.otter.canal.parse.exception.CanalParseException: parse row data failed.Caused by: com.alibaba.otter.canal.parse.exception.CanalParseException: column size is not match for table原因查阅官网文档:http

2022-04-23 20:24:26 735

原创 api接口404

问题描述api接口一直报404,查看接口地址确认接口地址无误。原因通过打断点,发现接口在方法org.springframework.web.servlet.DispatcherServlet#getHandler时,拿到的是ResourceHttpRequestHandler。接口成了获取静态资源的地址,由于没有该路径的静态资源,所以接口一直报404。通过链路发现,没有找到对应controller层的接口。原因是对应的Controller没有被spring容器管理。原因如下:对应的Cont

2022-04-23 20:05:58 9536

原创 sentinel源码分析

为什么需要sentinel微服务架构,但服务之间存在很强的依赖,如何避免下层服务挂掉后,不影响上层服务呢?如何防止雪崩呢?秒杀场景,服务器的性能都是有上线的,如何避免大流量,高并发的请求不拖垮服务,并返回给用户友好的界面反馈呢?示例客户端代码,使用了限流的get请求,并抛出异常@RestController@RequestMapping("/sentinel")public class SentinelController { static { // 初始化规则

2022-04-23 17:31:43 1684

原创 canal部署和配置

参考地址https://github.com/alibaba/canal/wiki/AdminGuide概念canal-admin:控制台,可配置server和instance。canal-server:代表一个canal运行实例,对应于一个jvm;内部包含多个instance,每个instance都会伪装成一个mysql实例的slaveinstance:对应于一个数据队列架构instance模块:eventParser (数据源接入,模拟slave协议和master进行交互,协议解析)

2022-04-17 14:40:36 4934

原创 seata高可用集群部署

版本:seata1.2.0参考官方文档:https://github.com/seata/seata-samples/tree/master/ha注意:在store mode是file的模式下,是不支持集群部署db模式在1.3及以上的版本中支持redis的模式来实现集群部署数据可配置创建seata_server数据库及表结构,sql如下:-- 创建数据库create database seata_server;-- the table to store GlobalSession dat

2022-04-13 23:09:11 3742

原创 网关进行jwt鉴权

前端接口都进过网关,然后通过网关进行分发。所以在网关中鉴权,就可以把没有需要登录的请求在网关层进行拦截。redis进行存储token和jwt实现token两种方案的对比去中心化的JWT实现oken优点:去中心化,便于分布式系统使用基本信息可以直接放在token中。 username,nickname,role功能权限信息可以直接放在token中。用bit位表示用户所具有的功能权限缺点:服务端无法主动让token失效中心化的 redis token / memory session

2022-04-12 22:11:08 2766

原创 日志打印skywalking的traceId

项目中已经通过skywalking进行链路追踪,为了方便查看日志排查问题,需要在日志中打印traceId,skywalking的一个工具jar,可以在日志中记录traceId

2022-04-12 21:59:46 2815 1

原创 简记-码出高效

计算机基础源码,反码,补码,移码:原码 :二进制(开头第一个表示符号0正1负)反码 :在原码的基础上,符号位不动,其他位取反 —注意,任何正数的源码=反码=补码,而负数都是通过补码表示的。补码 :在反码的基础上,运算+1 —注意,任何正数的源码=反码=补码,而负数都是通过补码表示的。公式:两数补码的和==两数和的补码。移码 :在补码的基础上,符号位取反101011(二进制)–> 原码 00101011 --> 反码 01010100 --> 补码 01010101–>

2020-07-18 15:32:55 133

原创 简记 - java 开发手册 精简版

抽象类命名使用Abstract或Base开头,异常类命名使用Exception结尾,测试类命名以它要测试的类名开始,以Test结尾在一个方法中,在不同代码块中的局部变量的命名不要相同子类和父类的成员变量名称不能相同接口类中的方法和属性不要加任何修饰符(public也不要加)讲常量按功能放到不同的常量类中,比如缓存常量放到CacheConsts,系统配置常量放到ConfigConsts类中。注释的// 与注释的内容之间有且仅有一个空格单个方法的行数不...

2020-07-18 15:26:31 163

原创 简单的sentinel 限流例子

api接口的限流可以只引入阿里的sentinel jar包导入sentinel 的jar<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-core</artifactId> <version>X.X.X</version></dependency>资源实现针对api接口的限流,可以将接口

2020-07-18 15:20:02 885

原创 MyBatis-缓存

一级缓存MyBatis一级缓存的生命周期和SqlSession一致。MyBatis一级缓存内部设计简单,只是一个没有容量限定的HashMap,在缓存的功能性上有所欠缺。MyBatis的一级缓存最大范围是SqlSession内部,有多个SqlSession或者分布式的环境下,数据库写操作会引起脏数据,建议设定缓存级别为Statement。当用户发起查询时,MyBatis根据当前执行的语句生成MappedStatement,在Local Cache进行查询,如果缓存命中的话,直接返回结果给用户,如

2020-07-18 15:18:43 93

原创 HandlerExceptionResolve异常处理

通过实现HandlerExceptionResolver接口来捕获异常 该接口只有一个方法resolveException。在方法resolveException实现中 返回null可以让后续的拦截器进行处理 :org.springframework.web.servlet.DispatcherServlet#processHandlerException方法中循环所以的HandlerExceptionResolver实现 当resolveException返回不为null后 直接break如果Han

2020-07-18 14:54:51 2271

原创 创建线程池

核心重点 ThreadPoolExecutor线程创建的规则在没有空闲线程的前提下:线程数小于corePoolSize 创建核心线程数线程数大于等于corePoolSize 但是workQueue未满 则将任务放入队列中等待workQueue满 但是线程数大于corePoolSize且小于maximumPoolSize,创建非核心线程数线程数大于maximumPoolSize 则使用拒绝策略 比如AbortPolicy直接抛出异常当线程空闲时间超过 keepAliveTime 后,进行

2020-07-18 14:54:29 94

原创 网关-zuul

啥是api网关api网关是一个服务器,是系统的唯一入口。所有客户端和消费端都是通过统一的网关接入微服务,在网关层处理所有的非业务功能。Api网关作用统一对外接口。减少对外暴露服务增加系统安全性,调用方就不能知道后端服务的结构。统一鉴权。不需要每个服务应用对调用方接口的入参进行鉴权,只需要在网关这一层上进行鉴权,保证后端应用服务专注业务的功能。服务注册与授权。可以控制调用方可以使用和不能使用的服务服务限流。通过网关可以对调用方每个接口的每日调用及总调用次数进行限制全链路跟踪。通过网关提供的唯一

2020-07-18 14:54:18 89

原创 gc日志分析

jvm参数jvm运行时内存数据区内存参数jvm垃圾收集器参数jvm参数设置打印gc日志 XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:/home/module-medical-web/gc.log -XX:+PrintHeapAtGC(只要设置-XX:+PrintGCDetails 就会自动带上-verbose:gc和-XX:+Pr...

2020-07-18 14:52:55 156

原创 springmvc+spring+mybatis框架搭建

项目框架结构图如下:1.导入相关的jar包aopalliance-1.0.jarasm-1.5.3.jaraspectjrt-1.6.2.jaraspectjweaver-1.6.2.jarcglib-2.1.3.jarcommons-fileupload-1.2.2.jarcommons-io-2.0.1.jarcommons-logging-1.0.4...

2020-07-18 14:51:34 231

原创 spring+myibatis+servlet实现登录和注册

项目的框架结构如下:下面开始框架的搭建:1.首先建立一个web工程,导入使用的jar包2.model层中建立用户实体类package com.springMybatis.model;public class UserInfo { private String name; private String password; private String tel;...

2020-07-18 14:51:17 506

原创 Listener之实现ServletContextListener接口

在java 项目启动时,web.xml启动时,自行运行Listener监听对应的类,运行定时器。1.web.xml中配置信息<listener> <listener-class> com.test.demo.ListenerDemo </listener-class></listener...

2020-07-18 14:50:27 1115

空空如也

空空如也

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

TA关注的人

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