
架构
文章平均质量分 78
LailaiMonkey
这个作者很懒,什么都没留下…
展开
-
手写RPC框架Feign
手写RPC框架feign原创 2022-09-17 15:12:23 · 2780 阅读 · 1 评论 -
Sentinel使用Nacos持久化并动态更新配置
Sentinel使用Nacos持久化并动态更新配置Sentinel单机限流Nacos存储Sentinel配置启动Sentinel Dashboard控制台Nacos与Sentinel Dashboard动态更新配置新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FL原创 2021-04-12 10:47:51 · 3427 阅读 · 4 评论 -
SpringBoot统一返回值及异常包装
欢迎使用Markdown编辑器写博客在项目开发过程中,我们希望所有接口返回值都包含四个元素。a、code:请求接口的返回码,成功或者异常等返回编码,例如定义请求成功,code = “0000”,code = “1111”;b、message:请求接口的描述,也就是对返回编码的描述,“0000”:表示请求结果为成功,“1111”:表示请求结果为失败,可以根据业务返回异常信息;c、success:true表示接口请求成功,false表示接口请求失败。d、data:请求接口成功,返回的结果。自定义返原创 2021-01-29 12:18:42 · 1172 阅读 · 0 评论 -
SpringBoot API版本控制
欢迎使用Markdown编辑器写博客后端开发人员经常遇到接口升级、优化接口甚至重新定义一模一样新接口而且还得兼容旧版本接口。这样我们得维护两个一模一样接口,版本管理越来越重要。基于自定义注解获得请求头Header中apiVersion参数,版本大的转发不同接口上。RequestMappingHandlerMapping请求详情自定义版本注解/** * @Author: LailaiMonkey * @Description: * @Date:Created in 2020-10-14 1原创 2021-01-29 10:21:18 · 881 阅读 · 0 评论 -
基于Redis接口限流策略
滑动窗口滑动窗口算法是在给定窗口大小情况下计算结果操作。基于redis滑动窗口限流我们可以用zset数组,当每一次请求进来的时候,我们可以给指定key值 生成一个value和score。value保持唯一,可以用UUID生成。score可以用当前时间戳表示。因为zset数据结构也提供了range方法可以让我们统计2个时间间隔中有多少个请求。自定义注解加AOP方式通过方法或类上注解拦截请求方法是否需要限流(方法注解优先类上注解),如果有规定时间内大于配置请求数量就抛出异常。因为我们机器是集群状态,所原创 2021-01-28 17:55:12 · 689 阅读 · 1 评论 -
SpringBoot集成Sharding——JDBC分库分表
Sharding——JDBC它定位为轻量级Java框架,在Java的JDBC层提供的额外服务。它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。对比图:开发人员只需正常写查询、mapper即可、无感知。分库分表概念随着业务的不断增长,数据也飞速增长,访问也随之变慢,添加从库、新建索引等很多操作仍严重下降,分库分表需求迫在眉睫。方案一:通过提升服务性能来提升数据处理能力,例如:扩容、CPU等,但成本很高。方案二原创 2021-01-11 10:48:02 · 891 阅读 · 0 评论 -
MySql自动同步主库数据(Canal)
欢迎使用Markdown编辑器写博客上篇文章介绍了MongoDB数据库模拟从库实现主从复制效果,不会影响线上数据,本文介绍MySql模拟从库实现主从复制。Find Action Ctrl+Shift+A,在此对话框中输入想操作的英文立即出现想的操作System.out.println输入sout即可for循环N输入N.for即可return n;输入n.return即可离线写博客导入导出Markdown文件丰富的快捷键MySql主从复制原理MySq原创 2021-01-06 14:16:53 · 578 阅读 · 0 评论 -
Spring-Cloud-Gateway跨域
Gateway跨域定义全局配置类CorsConfig/** * @Author: LailaiMonkey * @Description: * @Date:Created in 2020-08-28 13:45 * @Modified By: */@Configurationpublic class CorsConfig implements GlobalFilter, Ordered { @Override public int getOrder() {原创 2020-12-17 17:33:06 · 184 阅读 · 0 评论 -
分布式事务解决方案
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Find Action Ctrl+Shift+A,在此对话框中输入想操作的英文立即出现想的操作System.out.println输入sout即可for循环N输入N.for即可return n;输入n.return即可离线写博客导入导出Markdown文件丰富的快捷键CAP在当前的软件架构模式下,有状态服务部署(分布式部署模式原创 2020-12-12 16:41:27 · 170 阅读 · 0 评论 -
Spring Cloud之——SpringBootAdmin监控程序
简介Spring Boot Admin是一个开源社区项目,用于管理和监控SpringBoot应用程序。 应用程序作为Spring Boot Admin Client向为Spring Boot Admin Server注册(通过HTTP)或使用SpringCloud注册中心(例如Eureka,Consul)发现。 UI是的AngularJs应用程序,展示Spring Boot Admin Client的Actuator端点上的一些监控。常见的功能或者监控如下:显示健康状况显示详细信息,例如JVM和内原创 2020-11-09 15:39:41 · 519 阅读 · 1 评论 -
Elasticsearch原理分析
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Find Action Ctrl+Shift+A,在此对话框中输入想操作的英文立即出现想的操作System.out.println输入sout即可for循环N输入N.for即可return n;输入n.return即可离线写博客导入导出Markdown文件丰富的快捷键IK分词器底层数据结构及原理原理:数据结构 - 把词语进行树原创 2020-11-07 09:00:03 · 871 阅读 · 0 评论 -
SpringCloud服务网关Gateway
欢迎使用Markdown编辑器写博客pring cloud gateway是spring官方基于Spring 5.0、Spring Boot2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供简单、有效和统一的API路由管理方式,Spring Cloud Gateway作为Spring Cloud生态系统中的网关,目标是替代Netflix Zuul,其不仅提供统一的路由方式,并且还基于Filer链的方式提供了网关基本的功能,例如:安全、监控/原创 2020-08-25 11:55:47 · 496 阅读 · 0 评论 -
Consul-template+Nginx实现Consul集群高可用
Consul-template+Nginx实现Consul集群高可用描述安装Consul集群安装并配置NginxConsul-Template简介Consul-Template安装编写ctmpl模板(待验证)Consul-Template模版语法创建启动命令脚本高可用集群验证功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTe原创 2020-08-21 16:12:22 · 577 阅读 · 0 评论 -
自定义校验注解框架
自定义校验注解框架经过上一篇文章的学习大家对校验注解有了初步认识,如果没有了解上一篇文章或对注解了解不深的小朋友请认真学习!!!本框架基于Spring容器之上写的,利用AOP和反射原理实现注解验证。注意:属性set方法上注解优先于属性名上的注解!!!引用相关依赖 <!-- 自定义注解 --> <dependency> <groupId...原创 2020-04-18 16:27:39 · 459 阅读 · 0 评论 -
Javax Validation校验架构详解
欢迎使用Markdown编辑器写博客你还在用if…else…校验前端传来的参数吗?还在用代码校验参数吗?如果是的话那么你们项目校验这块不是很完美。小编这里分享通过注解校验参数,告别if…else…的时代来了!!!本篇主要讲解Spring ValidationI注解校验架构,简单、方便、入门快,方便扩展且扩展简单,适合第一次使用注解校验的小伙伴。这是注解包里面元素:Find Acti...原创 2020-04-17 15:39:18 · 3026 阅读 · 3 评论 -
Java 垃圾收集器核心原理
欢迎使用Markdown编辑器写博客垃圾回收(Garbage Collection,GC),顾名思义就是释放垃圾占用的空间,防止内存泄露。有效的使用可以使用的内存,对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收。四大垃圾回收算法思想引用记数引用计数算法(Reachability Counting)是通过在对象头中分配一个空间来保存该对象被引用的次数(Reference Co...原创 2020-04-15 22:16:03 · 311 阅读 · 0 评论 -
Consul原理及配置
Consul简介Consul是基于GO语言开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务发现和配置管理的功能。Consul的功能都很实用,其中包括:服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等特性。Consul本身只是一个二进制的可执行文件,所以安装和部署都非常简单,只需要从官网下载后,在执行对应的启动脚本即可。Consul特性服务注册...原创 2020-03-05 16:40:49 · 855 阅读 · 0 评论 -
SpringBoot Scheduled定时器
欢迎使用Markdown编辑器写博客如果是分布式定时器的可以用xxl-job还有图形界面,如果是单机的定时任务可以用Scheduled定时任务,所有定时任务都是基于Scheduled进行完善的,如果是分布系统可以自己写分布式算法完成。SpringBoot中使用两个注解:@EnableScheduling、@Scheduled来简单实现定时任务。@Scheduled参数详解通过看源码得知Sc...原创 2019-11-10 16:26:19 · 285 阅读 · 0 评论 -
Spring Cloud之—— Zuul(网关)
简介路由是微服务架构的组成部分。 例如,/可以映射到您的Web应用程序,/ api/users映射到用户服务,/api/shop映射到商店服务。 Zuul是Netflix基于JVM的路由器和服务器端负载均衡器。Netflix使用Zuul进行以下操作:认证洞察压力测试金丝雀测试动态路由服务迁移负载脱落安全静态响应处理主动/主动流量管理Zuul的规则引擎允许任何JVM语言编写...原创 2019-08-17 21:37:21 · 219 阅读 · 1 评论 -
Spring Cloud之—— OpenFeign(服务间调用)
简介OpenFeign 声明性REST客户端:OpenFeign 创建用JAX-RS或Spring MVC注释修饰的接口的动态实现,OpenFeign 是Netflix的一个声明性HTTP客户端,它简化了我们与其他服务交互的方式。OpenFeign 是通过Eureka调用的组件并做为Eureka的Client端一起使用,所以提前启动Eureka 服务,请看上一篇博客构建项目跟我们之前构...原创 2019-08-16 17:08:34 · 1535 阅读 · 1 评论 -
Spring Cloud之——Eureka(服务注册与发现)
这里写自定义目录标题简介构建项目Eureka Server的配置运行测试简介Eureka服务注册中心是netflix开源组织提供的一个服务高可用的解决方案,在前端时间一直在疯传的2.0开源流产的问题,其实并不影响我们的使用,netflix只不过是不再维护2.0分支的开源代码,所以做出了免责声明,不过对于我们使用者来说确实比较担心这一点,还有不少人更换服务注册中心,比如:zookeeper、co...原创 2019-08-15 21:25:00 · 270 阅读 · 0 评论 -
Spring Cloud之——Config(配置中心)
Spring Cloud Config(配置中心)Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,您可以为所有环境中的应用程序管理其外部属性。它非常适合spring应用,也可以使用在其他语言的应用上。随着应用程序通过从开发到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切。服务器存储后...原创 2019-07-15 22:19:40 · 267 阅读 · 1 评论 -
SpringBoot、SpringMVC集成logback日志
日志主要分为:trace<debug<info<warn<error五种,级别为由低到高trace:主要为程序的追踪,判断程序执行到哪步debug:调试使用的日志输出info:输出一些信息帮助了解程序运行状态warn:程序发出一些警告信息error:程序出错时发出的信息常用的日志主要分为两种:logback和log4j,都是基于sl4j开发演变而来的,log...原创 2019-06-11 09:51:39 · 1471 阅读 · 6 评论 -
Spring AOP 的实现方式(以日志管理为例)
Spring AOP 的实现方式(以日志管理为例)本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦:Find Action Ctrl+Shift+A,在此对话框中输入想操作的英文立即出现想的操作System.out.println输入sout即可for循环N输入N.for即可return n;输入n.return即可...原创 2019-05-24 16:04:00 · 260 阅读 · 5 评论 -
SpringMVC、SpringBoot整合RabbitMQ
RabbitMQ介绍RabbitMQ 是实现 AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 RabbitMQ 主要是为了实现系统之间的双向解耦而实现的。当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层。保存这个数据。AMQP,即 Advanced Message Queuing Pr...原创 2019-05-12 10:46:47 · 690 阅读 · 4 评论 -
SpringMVC集成RedisTemplate
欢迎使用Markdown编辑器写博客redis.xml<!---redis单机版配置--> <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"> <constructo...原创 2019-05-10 08:48:20 · 3863 阅读 · 7 评论 -
工作流activiti 6.0与SpringBoot2.0集成
工作流activiti 6.0与SpringBoot2.0集成不论是SpringBoot还是SpringMVC集成activiti工作流时候发现集成报错,我们可以找到activiti6.0源码看下就知道,activiti引用的是SpringBoot版本是1.2.6,而我们现在的SpringBoot版本都是2.0.0以上的版本。所以我们需要修改源码让它兼容我们。大致分为三步:升级Spring...原创 2019-04-27 16:07:03 · 2685 阅读 · 6 评论 -
Druid配置详解,新手必须读
什么是DruidDruid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。Druid也是配置最简单使用最方便的一种连接池。Druid是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和SQL解析器组成。该项目主要是为了扩展JDBC的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服务请求凭证、统计SQL信息、SQL性能收集、SQL注入检查、SQL...原创 2019-04-27 14:50:55 · 30036 阅读 · 6 评论 -
springboot、springMVC整合dubbo服务
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Find Action Ctrl+Shift+A,在此对话框中输入想操作的英文立即出现想的操作System.out.println输入sout即可for循环N输入N.for即可return n;输入n.return即可离线写博客导入...原创 2019-04-19 17:22:08 · 475 阅读 · 4 评论 -
springmvc+redis实现session共享
Session 共享的简单原理用户第一次访问应用时,应用会创建一个新的 Session,并且会将 Session 的 ID 作为 Cookie 缓存在浏览器,下一次访问时请求的头部中带着该 Cookie,应用通过获取的 Session ID 进行查找,如果该 Session 存在且有效,则继续该请求,如果 Cookie 无效或者 Session 无效,则会重新生成一个新的 Session在普通...原创 2019-03-15 19:38:36 · 2388 阅读 · 2 评论 -
Spring读取资源文件
读取资源文件方法有很多种,这里只说最简单、最实用、最方便的用法,通过spring注解@Value读取属性值:srpingMVCSpring配置文件(第一种)&amp;lt;bean id=&quot;propertyConfigurer&quot; class=&quot;org.springframework.beans.factory.config.PropertyPlaceholderConfigurer&quot;原创 2019-03-13 09:37:22 · 1844 阅读 · 2 评论 -
spring、srpingBoot、springMVC结合swagger
springBoot、springMVC结合swagger在网上看了很多例子,没有一个符合要求Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API与接口方法,参数等保存同步,大大减少了接口开发人员的工作量.这个例子是我本地...原创 2019-03-09 11:39:21 · 186 阅读 · 2 评论 -
jdbc连接数据库:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time
Mysql连接数据库错误:错误一java.sql.SQLException: The server time zone value ‘Öйú±ê׼ʱ¼ä’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via th...原创 2019-03-05 08:54:04 · 354 阅读 · 3 评论 -
springMVC 返回中文字符串时乱码
springMVC 返回中文字符串时乱码SpringMVC的@ResponseBody注解可以将方法返回对象直接转换成JSON对象,但是当返回值是String的时候,中文会乱码,是因为其中字符串转换和对象转换用的是两个转换器,而String的转换器中固定了转换编码为&quot;ISO-8859-1&quot;。在@RequestMapping中添加produces = &quot;text/html;charset=UT...原创 2019-03-01 19:36:23 · 286 阅读 · 3 评论 -
Java 线程池ThreadPoolExecutor基本使用方法
为什么用线程池系统需要处理非常多的执行时间很短的请求,如果每一个请求都开启一个新线程的话,系统就要不断的进行线程的创建和销毁,有时花在创建和销毁线程上的时间会比线程真正执行的时间还长。通过重用线程池中的线程,来减少每个线程创建和销毁的性能开销。对线程进行一些维护和管理,比如定时开始,周期执行,并发数控制。ThreadPoolExecutor解析ThreadPoolExecutor是线...原创 2019-02-19 09:43:33 · 321 阅读 · 2 评论 -
配置p6spy打印完整sql语句
在项目中我们经常遇到控制台输出sql语句带有“?”例如:INSERT INTO tb_user ( name ) VALUES ( ? )这种情况非常影响我们调试程序,做为程序猿的我们是绝对不允许的。引用p6spy解决这个问题。首先去maven下载p6spy的Jar包 &amp;amp;lt;dependency&amp;amp;gt; &amp;amp;lt;groupId&amp;amp;原创 2018-12-17 16:28:13 · 3168 阅读 · 10 评论 -
com/mchange/v2/c3p0/impl/NewProxyPreparedStatement.isClosed()Z is abstract Mybatis整合出错
fdsafdsafads原创 2018-12-09 21:58:08 · 678 阅读 · 3 评论 -
@RequestParam、@RequestBody和@ModelAttribute区别
@RequestParamGET和POST请求传递参数会自动转换赋值到@RequestParam 所注解的变量上@RequestParam(org.springframework.web.bind.annotation.RequestParam)用于将指定的请求参数赋值给方法中的形参。get请求:url:http://localhost:8080/urlTest?tagId=1&...原创 2018-11-30 16:07:15 · 301 阅读 · 3 评论