7 carl-zhao

我要认证

I never grew up, bu i never stop growing.

等级
TA的排名 5k+

Spring Boot 集成 Mybatis Plus

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。1、为什么需要 Mybatis Plus现在主流的开源 ORM 框架主要是 Mybatis 和 JPA 这两个开源框架,下面我们就来分别看一下这两个开源框架的优势。1.1 Mybatis 的优势SQL 语句可以自由控制,更灵活,性能较高SQL 与代码分离,更于阅读和维护提供 XML 标签,支持编写动态 SQL 语句1.2 JPA 的优势JPA

2020-06-21 23:59:55

Spring Cloud Gateway 15 分钟极速入门

Spring cloud gateway 是 spring 官方基于 Spring 5.0、Spring Boot2.0 和 Project Reactor 等技术开发的网关,Spring Cloud Gateway 旨在为微服务架构提供简单、有效和统一的API路由管理方式,Spring Cloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Netflix Zuul,其不仅提供统一的路由方式,并且还基于Filer链的方式提供了网关基本的功能,例如:安全、监控/埋点、限流等

2020-05-31 22:48:09

Apache Tomcat 类加载机制

Java 在刚刚诞生的时候就提出了一个非常著名的宣传口号:“一次编写,到处运行。”它体现了 Java 语言的平台无关性,主流的操作系统都支持 Java 的运行,比如:Windows、Linux 以及 Mac OS 系统。不同的操作系统都有其对应的虚拟机。这些虚拟机和所有平台都统一使用同一种存储格式 -- 字节码。

2020-05-31 00:39:56

Spring Boot + Elastic Job 定时比对数据使用钉钉报警

最近的工作中心是容易扩容,刚刚把其它一个业务使用 sharding jdbc 把容量规划完成。因为系统采用的数据方案是:**单写老库 -> 双写老库分片库 -> 单写分片库**,使用 apollo 配置中心来切换数据写入规则。当有异常时可以进行方案回滚这种平滑的数据过渡方案,在上线过程中不可避免的会有中心状态,**双写老库和分片库**。

2020-05-30 09:40:49

系统日志中敏感字段掩码处理

做为金融业务开发,很多接口都需要使用到用户信息,而在用户信息当中难免会有一些敏感字段,比如:用户姓名,银行卡号等等。所以在用户敏感信息保存以及日志打印的时候就不能把这些敏感信息明文的保存起来。对于数据库保存用户敏感信息的时候,一般系统中会有一个加/解密的系统。当需要保存用户敏感信息的时候会把用户信息进行加密,然后保存到数据库当中。

2020-05-28 08:24:00

分库分表后,测试人员如何面对多库多表中数据

最近工作的重心是容量规划,当系统数据量上来之后。对系统就需要使用分库分表了,分库分表选型的是 apache sharding jdbc,他是通过客户端来对数据源进行分库分表的。1、遇到问题但是在分库分表之后,不管是开发还是测试,当遇到问题需要查询数据库的时候面对多个库多个表那就比较痛苦了。如何透明化分库分表所带来的影响,让使用方尽量像使用一个数据库一样使用水平分片之后的数据库集群。我们需要解决这个问题。我们在开发的时候使用了 ShardingSphere 的客户端中间件,sharding-jdbc

2020-05-25 00:05:34

Spring Boot 通过 ThreadLocal、HandlerInterceptor、RequestBodyAdvice 优雅解决项目公共参数问题

因为公司是做境外第三方支付,所以涉及到国际化问题。页面不变的值可以由前端进行处理,对于后端如果遇到异常信息需要产品经理提供对应的显示信息。这个显示信息可以根据不同的异常定义不同的异常码,然异常信息显示国际化信息保存到数据库。根据用户不同的国家请求动态的去数据库获取这个值。

2020-04-26 23:45:52

Spring Boots 集成 Sharding Jdbc 使用复合分片

随着业务的逐渐增大,原有保存在单表的数据量也日益增强。数据库数据会随着业务的发展而不断增多,因此数据操作,如增删改查的开销也会越来越大。再加上物理服务器的资源有限(CPU、磁盘、内存、IO 等)。最终数据库所能承载的数据量、数据处理能力都将遭遇瓶颈。换句话说需要合理的数据库架构来存放不断增长的数据,这个就是分库分表的设计初衷。目的就是为了缓解数据库的压力,大限度提高数据操作的效率。

2020-04-25 13:13:17

Apache Tomcat 请求处理

通过之前的 Apache Tomcat 可以把得到如下的 Tomcat 的架构图:1、请求处理核心组件以下是 Tomcat 处理请求时涉及到的核心组件:组件名称说明EndPointEndpoint 可以理解成通信端点,用于 Socket 通信处理 TCP/IP 协议。监听 Socket 暴露的端口,当有请求进来的时候 EndPoint 进行处理。支持 BIO、NIO、...

2020-04-25 09:56:51

RabbitMQ 延迟队列实现订单自动关闭

1、延迟队列延迟队列存储的对象肯定是对应的延时消息,所谓”延时消息”是指当消息被发送以后,并不想让消费者立即拿到消息,而是等待指定时间后,消费者才拿到这个消息进行消费。在电商系统中,当用户提交订单超过 30 分钟未支付就是自动取消。一般的解决方案是使用定时任务来轮训数据库,然后找到过期的订单来修改订单状态。当系统的数据量小的时候下没有什么问题。但是如果数据量一大这种方式就会特别消耗资源。并且这...

2020-04-22 23:33:45

Apache Tomcat 初始化

在上一篇文章中我们分析了 Tomcat 中的整体架构。下面我们就来分析一下 Tomcat 源码实现。在 Tomcat 中有两个比较核心的过程:Tomcat 启动:初始化 Tomcat 中的核心组件处理请求:接收客户端请求,处理并响应给客户端这篇文章主要分析一下 Tomcat 容器的启动过程。1、 Tomcat 核心概念要明白 Tomcat 启动流程,首先我们先来回顾一下 Tomcat...

2020-04-18 23:10:03

Apache Tomcat 架构演进

Tomcat 作为一款知名的轻量级应用服务器,它的架构设计可以值得我们借鉴。因为 Tomcat 作为开源以久的 Web 服务器,它的架构还是挺复杂的。这篇博客主要是介绍 Tomcat 的总体架构,通过由浅到深的方案介绍 Tomcat 的架构演进。

2020-04-18 12:22:15

Apache Tomcat Shell 启动文件分析

当我们进行 web 企业开发完成的时候,正式项目都是在 Linux 上进行发布。首先会把开发好的项目打包成 xxx.war 文件,然后把这个 war 包放在 tomcat 中的 webapps 目录中。最后通过 ${TOMCAT_HOME}/bin/startup.sh 文件启动项目,接着就可以在浏览器中访问开发好的项目了。下面我们就来简单分析一下 startup.sh 文件。startup....

2020-04-16 22:14:08

Apache Tomcat 源码分析环境搭建

Apache Tomcat®软件是Java Servlet、JavaServer页面、Java 语言表达式和 Java WebSocket 技术的开源实现。Java Servlet、JavaServer页面、Java 表达式语言和 Java WebSocket 规范都是在 Java 社区进程下开发的。Apache Tomcat 软件是在开放和参与的环境中开发的,并在 Apache 许可版本 2 ...

2020-04-15 22:12:39

google guice hello world

Guice是一个轻量级的Java依赖注入(DI)框架。使用依赖注入有很多优点,但是手动操作常常会导致编写大量样板代码。Guice是一个框架,用于编写使用依赖注入的代码,而不需要编写大量样板代码,有关动机的更多细节,请参阅本页面。简单地说,Guice减少了对工厂的需求和Java代码中new的使用。把Guice的@Inject看作是新的。在某些情况下,您仍然需要编写工厂,但是您的代码不会直接依赖于...

2020-04-14 23:06:34

模仿 Spring 注解事务写出优雅多数据源切换代码

随着公司业务的不断扩大,核心业务的数据量也是爆炸性增长。因为数据库选用和大多数据互联网公司一样使用的是 Mysql 很多表的数据量都超过了 1 kw,所以决定对大表进行数据扩容。并且在容量扩容的时候决定使用双写方案。在调研的时候,有三个方案可以选择:Sharding-jdbc:模仿分片处理,继承 AbstractShardingPreparedStatementAdapter 重写 jdbc...

2020-03-29 12:56:18

apache dubbo 源码分析系列汇总

Dubbo(读音[ˈdʌbəʊ])是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。后面捐献给了知名的开源社区 apache。Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。1、dubbo 架构以下是 du...

2020-03-27 23:06:03

最佳实践 -- Dubbo 服务化进程的一点思考

最近主要负责公司的 dubbo 服务改造。在改造过程中,涉及到很多核心系统的编码。改造的系统涉及到核心系统,并且改造的系统一多,难免会产生一点胡思乱想。下面我就分享一下我在项目改造过程中的一点胡乱的想法。需要对大家有帮助:1、统一的打包方式对于之前项目中使用 restful 进行交互,项目的发布就没有版本这个概念。但在使用 dubbo 服务化就依赖版本这个概念。在项目中我们打包的方式和项目的版...

2020-03-19 08:42:04

Spring Boot 接入 Dubbo 指导文档

当前系统是使用 spring boot + spring cloud feign 作为系统间的调用。使用 amazon 的 aws 的负载均衡调用。不能够做到服务调用的治理以及监控。基于以上缺点所以决定引用 dubbo 来做服务间的调用。1、Why Dubbo比较流行的有 spring cloud 和 dubbo,为什么选择 dubbo。功能特性Spring Cloud Netfi...

2020-03-18 00:01:12

基于 Java Agent 实现零倾入监控

本文主要由如何保证服务的可用性也就是系统监控问题逐步引出 Java 语言的高级特性,也就是 Java Agent 的使用。系统代码可以零倾入就能够引入监控服务。本文的主要讨论的有以下几个议题:为什么系统需要监控Java 语言如何实现监控Java Agent 简单示例开源项目使用 Java Agent1、为什么系统需要监控随着分布式服务框架的流行,特别是微服务等设计理念在系统中应用,...

2020-03-16 00:25:14

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 领英
    领英
    绑定领英第三方账户获取
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获得
  • 签到王者
    签到王者
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证(专家版)
    技术圈认证(专家版)
    博客专家完成年度认证,即可获得
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv3
    阅读者勋章Lv3
    授予在CSDN APP累计阅读博文达到30天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 原力探索
    原力探索
    参与《原力计划【第二季】——打卡挑战》的文章入选【每日精选】的博主将会获得此勋章。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。