自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(385)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

转载 三种思维,让我脱胎换骨

1、闭环思维闭环思维简而言之就是,如果别人发起一件事,你不管做的如何,最后都要闭环到这个发起者。我曾经就经历过这样的事:我让一个实习生写一个问卷。两个小时过去了,没有反馈,三个小时过去了还是没有反馈,直到中午吃饭的时候,我碰到了他。我问他,写完了吗?他说写完了。我说,那你怎么没发给我看,他说,写完直接发出去了。你会对这个人怎么评价?不靠谱。有闭环思维的人是怎么做呢?第一,如果他完成了,那么就要及时反馈,并且说一下当时的情景。第二,如果他没完成,也要及时反馈,是哪里遇到困难了,需不需要帮助

2020-12-06 23:04:47 824 1

原创 apache dubbo 源码分析系列汇总

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

2020-03-27 23:06:03 2033

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

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

2020-03-19 08:42:04 636 4

原创 史上最简单的 Spring 源码导读

做为Java开源世界的第一框架,Spring已经成为事实上的Java EE开发标准Spring框架最根本的使命是简化Java开发,因此学习、研究、掌握Spring框架成为每一位Java开发人员的必修课。而阅读源码则是学习Spring的最好方式之一。Spring 里面最重要的特性就是 Ioc,可能你还会说 aop。其实 aop 的实现也是基于 ioc。Ioc (Inversion of Cont...

2018-04-19 08:06:30 2775

转载 一些设计上的基本常识

这篇文章是转载的dubbo设计者,关于谈谈扩充式扩展与增量式扩展 。一共十个点。相信对于大家架构方面有一些启发。

2016-11-03 20:31:08 933

原创 Spring Boot 缓存教程示例

最后需要注意的是,今天我们已经看到了 spring 框架在特定于应用程序缓存的缓存领域提供了什么。我们还看到了 spring 中支持该功能的注释。我希望本教程对你有用。在这篇文章中,我们使用了回退缓存提供程序,即后台的。下一步是配置其他支持的缓存引擎,如 Redis, Ehcache 等。

2022-10-31 22:38:32 716 1

原创 Spring Boot 项目启动指定 HTTP 端口的几种方式

Spring 项目当中,可以通过来获取到WebServer.Tomcat 的实现类是。在这个对象里面,可以通过属性它是一个。可以指定容器启动暴露的端口。自定义 TomcatConnectorCustomizer}不仅仅实现了,同时他也实现了。而且 Spring Boot 来提供了这个接口来定制化,同时也是实现了的子接口。这个接口是可以对 WebServer 进行配置化,包括 Web 容器的端口。自定义 WebServerFactoryCustomizer} };}其实自定义它的起始类是通过。

2022-09-22 18:17:59 6768

原创 Idea常用插件推荐

Idea 常用插件推荐

2022-08-24 22:42:25 539

转载 微服务链路追踪原理

在微服务横行的时代,服务化思维逐渐成为了程序员的基本思维模式,但是,由于绝大部分项目只是一味地增加服务,并没有对其妥善管理,当接口出现问题时,很难从错综复杂的服务调用网络中找到问题根源,从而错失了止损的黄金时机。而链路追踪的出现正是为了解决这种问题,它可以在复杂的服务调用中定位问题,还可以在新人加入后台团队之后,让其清楚地知道自己所负责的服务在哪一环。除此之外,如果某个接口突然耗时增加,也不必再逐个服务查询耗时情况,我们可以直观地分析出服务的性能瓶颈,方便在流量激增的情况下精准合理地扩容。......

2022-08-17 10:39:55 331

原创 Spring Webflux 后端处理前端请求的 4 种方式

Spring Webflux 是一个无响应系统。它具有某些特性,使其成为低延迟、高吞吐量工作负载的理想选择。Project Reactor 和 Spring 组合一起工作,使开发人员能够构建响应性、弹性、弹性和消息驱动的企业级反应系统。............

2022-07-31 18:40:26 1742 1

原创 Spring Webflux 构建响应式 Restful Web 服务

本指南将引导您完成创建“Hello, Spring!”使用Spring WebFlux的rest式web服务(Spring Boot 2.0的新版本),然后使用WebClient使用该服务(Spring Boot 2.0的新版本)。

2022-07-30 20:03:34 894

原创 Spring 集成嵌入式数据库方便单元测试

``org.springframework.jdbc.datasource.embedded `` 包提供了对嵌入式 Java 数据库引擎的支持。本机提供了对HSQL、H2 和 Derby 的支持。还可以使用可扩展API插入新的嵌入式数据库类型和 DataSource 实现。嵌入式数据库在项目的开发阶段非常有用,因为它具有轻量级的特性。优点包括易于配置、快速启动时间、可测试性以及在开发期间快速演变SQL的能力。...

2022-07-30 10:23:30 672

原创 Spring 自定义 bean 的生命周期

要与容器对bean生命周期的管理交互,您可以实现 Spring ``InitializingBean`` 和 ``DisposableBean`` 接口。容器对前者调用 ``afterPropertiesSet()``,对后者调用 ``destroy()``,以允许bean在初始化和销毁 bean 时执行某些操作。......

2022-07-28 23:01:08 374

原创 解决 @RefreshScope 导致定时任务注解 @Scheduled 失效

之前在一个技术微信群看到一个伙伴提了一个问题。那就是 Spring Cloud 项目在标注了 @RefreshScope 与 @Configuration 类中 @Scheduled 的方法。当配置中心修改了配置时,这个定时调度会失效。下面我们来看一下案方现场。...

2022-07-26 13:11:53 4027 1

原创 4、Nacos 配置中心源码解析之 服务端启动

上一篇文章中我们使用 ``-Dnacos.standalone=true``本地启动了 Nacos 服务器,并且可以在 ``http://localhost:8848/nacos`` 通过 ``nacos/nacos`` 用户名密码就可以访问 nacos 控制页面。下面我们就来大体看一下 Nacos 在启动的时候干了哪些核心的事。...

2022-07-22 08:26:49 1360

转载 支付系统 - 对账系统

在支付系统中,资金对账在对账中心进行,将系统保存的账务流水与银行返回的清算流水和清算文件进行对账,核对系统账务数据与银行清算数据的一致性,保证支付机构各备付金银行账户每日的预计发生额与实际发生额一致。...

2022-07-19 23:18:59 1103

原创 3、Nacos 配置中心源码解析之 项目结构

Nacos 的 github 地址为:https://github.com/alibaba/nacos/。以下分析基于: Nacos 版本号:。Nacos 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos提供四个主要功能。服务发现和服务运行状况检查Nacos简化了服务注册和通过DNS或HTTP接口发现其他服务的过程。Nacos还提供服务的实时运行状况检查,以防止向不健康的主机或服务实例发送请求。动态配置管理Dynamic Configuration Service允许您跨所

2022-07-13 23:41:23 553

原创 1、Nacos 配置中心源码解析之 Hello World

在单体架构的时候我们可以将配置写在配置文件中,但有⼀个缺点就是每次修改配置都需要重启服务才能生效。当应用程序实例比较少的时候还可以维护。如果转向微服务架构有成百上千个实例,每修改⼀次配置要将全部实例重启,不仅增加了系统的不稳定性,也提高了维护的成本。.........

2022-07-13 00:06:31 565

原创 Spring Cloud Config 解决单例 Bean 依赖非单例 Bean

在大多数应用程序场景中,容器中的大多数 bean 都是单例的。当一个单例 bean 需要与另一个单例 bean 协作,或者一个非单例 bean 需要与另一个非单例 bean 协作时,您通常通过将一个bean 定义为另一个 bean 的属性来处理依赖关系。当 bean 的生命周期不同时,问题就出现了。假设单例 bean A 需要使用非单例(原型) bean B,可能是在 A 上的每个方法调用上。容器只创建一次单例 bean A,因此只有一次机会设置属性。容器不能在每次需要 bean B 的新实例时为 bean

2022-07-07 21:34:37 569

原创 Spring Bean Scope

当你创建一个 bean 定义时,可以在这个 bean 定义当中设置你需要创建对象实例的 Class 来创建实例,这可以认为是一次。可以把 bean 定义当成一个食谱。把 bean 定义当是一个菜谱的想法很重要,因为这意味着使用同一个 Class 可以从一个菜谱创建许多对象实例。...

2022-06-30 22:22:12 325

原创 Mysql 由于 Java 日期 LocalDateTime 数据精度引发的线上问题

最近在公司开发的项目是对账系统,其中就包括每日(T+1)对账。每日对账就是对前一日期产生的数据对于核对。举个具体的例子就是:在第三方支付公司,里面会产生支付里面的支付订单与下载渠道(微信、支付或者其它第三方支付)的每日交易账户需要进行对比。关于微信支付的 下载交易账单 地址。支付宝或者其它的下载交易单内容类似,只是文件格式不一样。

2022-05-10 02:47:22 1322 1

原创 使用 Spring AnnotationUtils 解决代码获取类元数据信息

昨天有一个小伙伴遇到一个问题。他最开始是通过在类上面添加注解(这个类纳入了 Spring 容器的管理),然后再通过继承 Spring 容器的扩展类 ApplicationObjectSupport 找到 Spring 容器中所有标注了之前提到的注解。后面解析这个注解,然后把这个注解标注的唯一值和当前对象实例放到一个 MAP 当中。通过这样的方式就实现了策略模式,通过注解上面的标注唯一的值到 ApplicationObjectSupport 的继承类里面获取需要的实例。上面就是出现问题的前提,后面在策略类上

2022-05-06 23:06:01 2172

原创 8、RocketMQ 源码解析之消息发送

当我们启动了元数据管理 NameServer 以及 消息管理 Broker。下面我们就可以进行消息发送了。RocketMQ 支持三种消息发送方式:同步消息发送(sync):当 Producer 发送消息到 Broker 时会同步等待消息处理结果异步消息发送(async):当 Producer 发送消息到 Broker 时会指定一个消息发送成功的回调函数,调用消息发送后立即返回不会阻塞。消息发送成功或者失败会在一个新的线程中进行处理。单向消息发送(oneway):当 Producer 发送消息到 Br

2022-05-04 00:10:03 833

原创 Java Google Sheet API

完成本页其余部分描述的步骤,创建一个简单的Java命令行应用程序,向 Google Sheets API发出请求。

2022-04-20 17:17:12 2112 6

原创 7、RocketMQ 源码解析之 Broker 启动(下)

在前面的一篇文章 -- [6、RocketMQ 源码解析之 Broker 启动(上),分析了一下 Broker 在启动的时候他自身做了哪些事,以及把 Broker 相关的信息注册到 NameServer 中去,下面我们就通过 Broker 把元信息注册到 NameServer 来了解一下 RocketMQ 是如何进行网络间通信的。

2022-04-03 20:48:48 777

原创 6、RocketMQ 源码解析之 Broker 启动(上)

上面一篇我们介绍了 RocketMQ 的元数据管理,它是通过自定义一个 KV 服务器。并且其它服务在 NameServer 注册服务信息的时候都是全量注册。如果 RocketMQ 的拓扑图当中有多台 NameServer 的时候,只要有一台存活的话 RocketMQ 集群就可以正常工作。当 RocketMQ 作为消息队列要向外提供服务的时候,除了需要第一步启动 NameServer 用来保存元数据,还需要启动 RocketMQ 的 Broker。这样才能 Producer 才能发现消息到 Broke

2022-04-02 14:06:34 2875

原创 Mybatis Plus 生成数据库访问模板代码

关于为什么使用 Mybatis Plus 以及使用 Spring Boot 如何集成 Mybatis Plus 这两个问题。如果不太清楚的小伙伴可以查看之前分享的博客 Spring Boot 集成 Mybatis Plus 简化数据库操作。今天主要和大家分享的是通过 Mybatis Plus generator 生成数据库访问的模板代码。注意:这里针对的主要是高版本的 Mybatis Plus。也就是 >= 3.5.01、数据库表这里我们简单的创建一个商品订单表,为了方便演示我们就只是列举了

2022-03-17 21:15:39 1576

原创 1、Google Grpc 框架源码解析 之 Hello World

由于最近换了一份工作,新公司使用 RPC 框架使用的是 Google 开源的 RPC 框架 grpc。对于 grpc 之前只是听说过,在真实的项目当中并没有使用过。为了能够更好的使用 grpc (当遇到问题,能够快速发现并解决问题),所以准备写一个系列来研究 grpc 。gRPC是一个现代的开源高性能远程过程调用(RPC)框架,可以在任何环境中运行。它可以有效地连接数据中心内和跨数据中心的服务,支持负载均衡、跟踪、健康检查和身份验证。它也适用于分布式计算的最后一英里,将设备、移动应用程序和浏览器连接到后端

2022-02-26 18:49:08 894 2

原创 5、RocketMQ 源码解析之 命名服务启动

在 RocketMQ 当中,消息发送方以及消息接收方都是配置命名服务(Name Server)的地址。通过命名服务解耦合了消息发送者以及消息接收方,不同于 Kafka 直接连接 Broker 地址。命名服务的主要功能包含:Broker 管理以及消息的路由管理。具有如下:Broker 管理,NameServer接受来自 Broker 集群的注册,并提供心跳机制来检查Broker是否活着路由管理,每个NameServer将保存关于Broker集群的整个路由信息和供客户端查询的 queue (队列) 信息。

2022-01-07 22:02:05 2096

原创 MySQL 根据某一个或者多个字段查找重复数据

之前上线了一个类似于微信或者支付宝账单的功能,其中有一张统计表。里面根据用户ID、年、月查询出来当月的订单数以及订单总金额。当时在创建索引的时候,是根据用户ID、年、月字段创建的联合索引。

2022-01-04 21:31:59 2659

原创 4、RocketMQ 源码解析之 网络通信 Netty

可以看到 RocketMQ 里面有消息发送方(Producer)、配置中心(NameServer)、消息存储中心(Broker) 以及消息消费方(Consumer)。而且它们之间也需要相互通信的,那么它们是怎么通信的呢?因为 RocketMQ 是通过 Java 语言编写的,对于网络通信它就选择了 Netty 并且通过自定义协议来完成各个角色之间的高效的网络通信。

2021-12-26 14:06:47 979

原创 嵌套模板设计模式优雅解决通用调用第三方服务方案

最近公司正在服务化,因为公司是建筑行业的产业互联网。所以对于工人进出场考勤或者核心链路上都是需要用户进行证明“我是我”这个问题。那么就涉及到调用 ``实名认证``、``人脸比对``、``人脸质量``、``身份证OCR`` 等第三方服务。

2021-12-24 23:50:27 1026

原创 3、RocketMQ 源码解析之 源代码环境搭建

在之前的文章中我们知道了 RocketMQ 里面的核心功能、架构和概念。并且也介绍了它的简单使用与 Spring Boot 的集成。下面开始我们对 RocketMQ 的源码探索,首先我们先在自己本地搭建 RocketMQ 的源代码环境。1、下载源代码首先我们可以在 rocketmq github 网站下载 Rocket MQ 的源代码,它是以 maven 进行项目管理的。接着把项目导入到自己的开发工具中,博主使用的是 Idea。导入 idea 如下图显示:下面我们来介绍一下项目中的各个 Modul

2021-12-22 21:37:14 658

原创 2、RocketMQ 源码解析之 与 Spring Boot 集成

上一篇文章分析了一下 RocketMQ 的基本架构、概念、安装以及使用方式。现在大多数项目都是基于 Spring Boot。因为它很方便的自动装配机制,所以现在构建项目都是基于 Spring Boot。下面我们来分析一下 RocketMQ 是如何集成 Spring Boot 的。RocketMQ主要由 Producer、Broker、Consumer 三部分组成,其中Producer 负责生产消息,Consumer 负责消费消息,Broker 负责存储消息。Broker 在实际部署过程中对应一台服务器

2021-12-21 22:29:54 568

原创 1、RocketMQ 源码解析之 Hello World

Apache RocketMQ是一个分布式消息传递和流媒体平台,具有低延迟、高性能和可靠性、万亿级容量和灵活的可伸缩性。

2021-12-20 21:18:53 417

原创 雪花算法(snowflake)容器化部署支持动态增加节点

先简单的介绍一下雪花算法,雪花算法生成的Id由:1bit 不用 + 41bit时间戳+10bit工作机器id+12bit序列号,如下图:不用:1bit,因为最高位是符号位,0表示正,1表示负,所以这里固定为0时间戳:41bit,服务上线的时间毫秒级的时间戳(为当前时间-服务第一次上线时间),这里为(2^41-1)/1000/60/60/24/365 = 49.7年工作机器id:10bit,表示工作机器id,用于处理分布式部署id不重复问题,可支持2^10 = 1024个节点序列号:12bit,用

2021-12-12 05:52:11 4434 6

原创 通过 MDC 让你方便的跟踪你的定时任务日志

当我们程序出现了 debug 的时候,我们一般的解决方法就是查看日志。在开发环境还好,我们本地启动服务一般只会有一个请求,查看日志或者本地 debug 都非常方便。但是如果我们是线上发生了问题,这个时候请求量就比较多。如果我们的调用链比较长的话,要把整个日志关联起来就不太方便。这个时候我们就需要使用到日志当中的 MDC 了。

2021-11-30 23:20:12 1235

原创 使用 fastjson 解决字段串对象空值返回空数组问题

我们系统当中地理信息使用高德的 城市编码表。项目的新需求就是输入地址能够返回找到对应的城市,其实高德开放 API 提供了一个 地理/逆地理编码 接口是满足这个需求的。但是它我们使用这个接口的时候遇到了一个问题。就是一个属性如果有值就会返回字符串,如果没有值就会返回空数据。比如:{ "status": "1", "info": "OK", "infocode": "10000", "count": "1", "geocodes": [ {

2021-08-08 10:39:26 2136 1

原创 Spring EL 表达式隔离不同环境的 RocketMQ

项目之前使用的是 RabbitMQ 作为消息中间件用来解耦服务之间的调用,现在需要对消息中间件进行升级决定采用 RocketMQ。RocketMQ 相比 RabbitMQ 更具有优势,当然大家可以在网上查找到相关资料。这里就不在赘述了。今天主要是讲如何使用 Spring EL 表达式来隔离不同环境的 RocketMQ 的。因为在非生产环境我们为了优化资源的效果,只部署了一套 RabbitMQ 环境。但是非生产环境有多套环境:dev(开发环境)、test(测试环境)、pre(预生产环境)。所以我们在使用 R

2021-08-06 00:45:02 1776 1

转载 你是否了解Spring中bean的生命周期呢?

请问Spring加载bean的时候构造函数什么时候调用、@PostConstruct什么时候调用、实现了BeanPostProcessor接口的bean中的postProcessAfterInitialization和postProcessBeforeInitialization什么时候调用?你是否清楚呢?如果清楚的话可以直接忽略该篇文章!!!最近来了几个新人,被问了一个和bean生命周期相关的一个知识点,解决新人的问题后自己再写了一个demo,目的是为了清晰的描述整个bean的生命周期。注意注意.

2021-07-20 20:47:31 198

ibatis资源包

iBatis是一款使用方便的数据访问工具,也可作为数据持久层的框架。和ORM框架(如Hibernate)将数据库表直接映射为Java对象相比,iBatis是将SQL语句映射为Java对象。相对于全自动SQL的Hibernate,iBatis允许你对SQL有完全控制权,可以视为半自动的数据访问工具。

2014-05-28

mysql连接数据库驱动

mySql的连接数据库的驱动Jar包。mysql-connector-java-5.1.7-bin.jar

2014-05-28

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

TA关注的人

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