- 博客(218)
- 收藏
- 关注
原创 GitHub 开源项目 eval-tx 分布式事务解决方案
eval-tx基于 redis 的分布式事务框架2PC 两阶段提交,60s 超时机制,原理简单易懂附简单 Demo如果还没碰到过分布式事务问题,也可通过本文进行了解和学习。项目地址: https://github.com/huajiexiewenfeng/eval-tx特点侵入性低自动装配@Enable注解激活,开箱即用基于 Spring 事务进行二次封装,学习成本低原理&设计原图地址:https://www.processon.com/view/5f1
2020-07-31 12:30:40 602
原创 JVM 常见面试题汇总(Java8)
JVM 常见面试题汇总(Java8)文章目录JVM 常见面试题汇总(Java8)前言1.JVM 有哪些内存区域?(JVM 的内存布局是什么?)2.Java 的内存模型是什么?(JMM 是什么?)3.JVM 垃圾回收时如何确定垃圾?什么是 GC Roots?4.能够找到 Reference Chain 的对象,就一定会存活么?5.强引用、软引用、弱引用、虚引用是什么?6.你说你做过 JVM 参数调优和参数配置,请问如何查看 JVM 系统默认值7.你平时工作中用过的 JVM 常用基本配置参数有哪些?8.请你谈
2020-07-10 16:54:44 2045 1
原创 夯实Spring系列|总览介绍
文章目录系列文章1.文章说明2.整理目的3.Spring 核心特性4.数据存储(Data Access)5.Web 技术6.技术整合7.测试(Testing)8.Java 版本依赖于支持9.面试题9.1 Spring Framework 有哪些核心模块?系列文章夯实Spring系列|总览介绍夯实Spring系列|夯实Spring系列|第一章:IoC到底什么是?1.文章说明本系列文...
2020-04-17 09:38:49 707 1
原创 github开源项目 eval-echarts 对echarts3.x前后端封装
文章目录1.项目简介2.特点3.项目背景4.开源地址5.环境6.代码7.项目截图1.项目简介对echarts前端js对象option进行封装,前端只需要传接口url和div的id后台提供对应的java数据结构,每种图形对应自己的抽象模板类,整个数据对象拼接的过程都已经封装好极大的方便了开发人员,只需关注业务代码和sql语句的实现即可2.特点1.使用多种设计模式保证代码的扩展性和解...
2019-05-30 20:05:01 2076 1
原创 Got permission denied while trying to connect to the Docker daemon socket at unix 问题解决方案
docker push 权限问题解决方案
2024-07-17 16:54:39 396 1
原创 Redis 多数据源自定义配置 Spring Boot 升级版
本文为大家提供一个 redis 配置多数据源的实现方案;为上一篇文章【Redis 多数据源 Spring Boot 实现】的升级版本支持自定义配置无需写任何其他配置 Java 类application.properties 配置完,直接就可以使用请注意 spring boot 的相关依赖版本。//...此处省略N行代码@Override// 获取 application.properties 对应的 java 类对象= null;
2024-07-05 17:13:24 1088
原创 Redis 多数据源 Spring Boot 实现
本文为大家提供一个 redis 配置多数据源的实现方案,在实际项目中遇到,分享给大家。后续如果有时间会写一个升级版本,升级方向在第5点。
2024-07-05 14:23:08 1656 2
原创 设置 kafka offset 消费者位移
Specified-Offset 策略直接指定 --to-offset。Duration 策略,我们直接指定 --by-duration。Shift-By-N 策略直接指定 --shift-by N。Earliest 策略直接指定 --to-earliest。DateTime 策略直接指定 --to-datetime。Current 策略直接指定 --to-current。Latest 策略直接指定 --to-latest。不同的版本,下面的路径可能不一样。= 9+1,即跳过一条记录。
2024-05-07 16:52:06 685 2
原创 SOFAJRaft 注册中心-心跳检测实现
在上篇文章基于 SOFAJRaft 实现注册中心_不懂的浪漫的博客-CSDN博客学习之后,我们了解了如何基于 JRaft 来实现一个注册中心,了解了 JRaft 的编程模式。按照官网的步骤和示例,一步一步完善代码即可。本文主要是完善注册中心的心跳功能。ps:对之前的文章中的一些代码缺陷也进行了修正。
2023-10-12 17:54:48 335
原创 基于 SOFAJRaft 实现注册中心
通过本文的学习可以帮助大家了解 SOFAJRaft 的使用方式和集成步骤;参考本文的实现步骤,可以来完成自己工作中相关产品的一致性协议 raft 集成,从而实现应用的高可用。学习本文的前提需要了解 Raft 一致性协议对 SOFAJRaft 框架有一定的了解可以参考:SOFAJRaft 日志复制共识算法本文主要讨论的内容如下注册中心的实现如何集成 Raft 协议来实现注册中心高可用。
2023-10-11 18:04:35 636
原创 SOFAJRaft 日志复制共识算法
Raft 分组中的一个节点,连接封装底层的所有服务,用户看到的主要服务接口,特别是 apply(task) 用于向 raft group 组成的复制状态机集群提交新任务应用到业务状态机。StateMachine: 用户核心逻辑的实现,核心是 onApply(Iterator) 方法,应用通过 Node#apply(task) 提交的日志到业务状态机。FSMCaller: (Finite State Machine),封装对业务 StateMachine 的状态转换的调用以及日志的写入等,一个有限状态机的实
2023-10-11 17:59:59 660
原创 Spring @Scheduled单线程单实例的坑
在项目中经常会用@Scheduled来实现一些定时任务的场景,有必要了解一些它使用时的问题和内部实现机制。本文是偶然间发现的一个问题,刷新了我的认知,分享给大家。Spring @Scheduled 多线程配置。
2023-08-03 13:59:38 844
原创 实际项目集成分布式一致性协议 Raft
只要理解了共识算法,其实集成 raft 很简单,由于共识算法优秀文章已经很多了,本章就不做过多赘述了;这里我们重点是讨论如何在我们的实际工程中集成 raft 协议,来实现分布式一致性;前面我们只会简单的介绍分布式共识算法以及学习 Nacos 如何来集成分布式算法,重点在第4小节;看完本章,大家可以根据自己项目的实际情况来决定是否需要集成 raft 协议来实现分布式一致性。
2023-04-19 11:07:32 826 1
原创 Spring事务7种传播机制(代码示例)
Spring事务7种传播机制(代码示例)文章目录Spring事务7种传播机制(代码示例)前言1.项目环境2.相关资料2.1 Spring 源码2.2 官网地址3.示例代码3.1 无事务示例3.1.1 正常示例3.1.2 异常示例3.2 REQUIRED(默认)3.2.1 代码示例3.2.2 结果分析3.3 REQUIRES_NEW3.3.1 代码示例3.3.2 结果分析3.4 SUPPORTS3.4.1 代码示例3.4.2 结果分析3.5 MANDATORY3.5.1 代码示例3.5.2 结果分析3.6
2021-12-30 15:08:04 1232
原创 Spring 缓存 AOP 实现
Spring 缓存 AOP 实现文章目录Spring 缓存 AOP 实现前言1.项目环境2.Spring @Cacheable 示例3.实现猜想4.实现源码核心API5.Spring AOP API 示例6.源码分析6.1 @EnableCaching6.2 ProxyCachingConfiguration6.2.1 Advisor 实现6.2.2 Pointcut 实现6.2.3 Interceptor 实现6.2.4 CacheOperationSource 实现6.2.5 小结6.3 AutoPr
2021-07-19 16:36:49 841 1
原创 什么是 MongoDB 复制集
什么是 MongoDB 复制集文章目录什么是 MongoDB 复制集1.什么是复制集2.复制集的作用3.典型复制集结构4.数据如何复制的?5.故障恢复6.影响选举的因素7.常见选项8.复制集注意事项9.参考1.什么是复制集Mongodb复制集由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点,Mongodb Driver(客户端)的所有数据都写入Primary,Secondary从Primary同步写入的数据,以保持复制集内所有成员存储相同的数据集,提供数据的高
2021-03-10 18:27:30 500
原创 MongoDB Aggregation 聚合框架
MongoDB Aggregation 聚合框架文章目录MongoDB Aggregation 聚合框架前言1.MongoDB 聚合框架是什么2.管道(Pipeline)和步骤(Stage)3.聚合运算的基本格式4.步骤5.步骤中的运算符5.1 $match5.2 $project5.3 $group6.MQL & SQL 对比6.1 例16.2 例27.特殊步骤7.1 $unwind7.2 $bucket7.3 $facet8.MongoDB Compass(推荐工具)8.1 基本使用8.2 导
2021-03-09 10:42:13 1435
原创 MongoDB 基本操作
MongoDB 基本操作文章目录MongoDB 基本操作1.insert 插入2.remove 删除3.update 更新3.1 update 操作3.2 注意点4.find 查找4.1 关于 find4.2 find 示例4.3 查询条件对照表4.4 查询逻辑对照表4.5 查询逻辑运算符4.6 find 子文档搜索4.7 find 数组搜索4.8 find 数组中的多个字段4.9 控制 find 返回的字段5.drop 删除集合6.dropDatabase 删除数据库7.参考1.insert 插入操
2021-02-23 09:47:22 320
原创 Elasticsearch 基础操作(含批量操作)
Elasticsearch 基础操作文章目录Elasticsearch 基础操作1.文档的基本 CRUD1.1 Create1.2 Get1.3 Index1.4 Update1.5 Delete2.批量操作2.1 批量操作 bulk2.2 批量读取 mget2.3 批量查询 msearch3.常见错误返回4.参考1.文档的基本 CRUD操作示例IndexPUT my_index/_doc/1{“user”:“mike”,“comment”:“hello,world”}Cr
2021-02-08 16:53:38 254
原创 Spring @Scheduled 多线程配置
Spring @Scheduled 多线程配置环境SpringBoot 2.0.2.RELEASEJDK8两种方式实现1.@Scheduled+@Async测试代码:@SpringBootApplication@EnableScheduling@EnableAsyncpublic class ScheduleBootstrap { public static void main(String[] args) { SpringApplication.run(Schedul
2020-12-16 15:17:21 2844
原创 Java 8 函数式设计,更优雅的使用 Lambda
Java 8 函数式设计,更优雅的使用 Lambda文章目录Java 8 函数式设计,更优雅的使用 Lambda项目环境1.前言2.什么是函数式接口 @FunctionalInterface3.函数式接口类型4.举例说明4.1 Supplier4.1.1 Supplier 接口定义4.1.2 Supplier 接口源码4.1.3 示例4.1.4 设计4.1.6 Spring 5.0+4.2 Consumer4.2.1 Consumer 接口定义4.2.2 Consumer 接口源码4.2.3 Spring
2020-11-09 20:54:00 435
原创 夯实Spring系列|第二十四章:Spring Environment 抽象
夯实Spring系列|第二十四章:Spring Environment 抽象文章目录夯实Spring系列|第二十四章:Spring Environment 抽象前言1.项目环境2.理解 Spring Environment 抽象3.Spring Environment 接口使用场景4.Environment 占位符处理5.理解条件配置 Spring Profiles6.Spring 4 重构 @Profile7.依赖注入 Environment8.依赖查找 Environment8.1 示例8.2 源码分
2020-10-24 21:30:17 361 1
原创 夯实Spring系列|第二十一章:Spring 泛型处理(Generic Resolution)
夯实Spring系列|第二十一章:Spring 泛型处理(Generic Resolution)文章目录夯实Spring系列|第二十一章:Spring 泛型处理(Generic Resolution)本章说明1.项目环境2.Java 泛型基础2.1 举例说明2.2 代码示例3.Java 5 类型接口4.Spring 泛型类型辅助类5.Spring 泛型集合类型辅助类6.Spring 方法参数封装 - MethodParameter7.Spring 4.2 泛型优化实现 - ResolvableType8.
2020-09-29 23:41:42 740
原创 夯实Spring系列|第二十三章:Spring 注解(Annotations)
夯实Spring系列|第二十三章:Spring 注解(Annotations)文章目录夯实Spring系列|第二十三章:Spring 注解(Annotations)前言1.项目环境2.Spring 注解驱动编程发展历程3.Spring 核心注解场景分类4.Spring 注解编程模型4.1 Spring 元注解(Meta-Annotations)4.2 Spring 模式注解(Stereotype Annotations)4.2.1 @ComponentScan 如何进行扫描?4.2.2 派生性示例4.3
2020-09-25 00:11:31 282
原创 Git 简版教程(一文搞懂,建议收藏)
Git 简版教程(一文搞懂,建议收藏)文章目录Git 简版教程(一文搞懂,建议收藏)前言1.Git 简介2.Git 下载安装3.Git 初体验4.Git log 和版本切换5.工作区 暂存区 提交区6.分支管理 branch7.分支合并 merge8.冲突解决9.Git config & 配置别名9.1 配置基本操作9.2 配置别名10.打标签 tag11.忽略文件12.本地仓库&远程仓库13.操作远程和本地仓库13.1 创建远程仓库13.2 设置 SSH Keys13.3 push 推送
2020-09-21 23:28:05 398
原创 API 网关服务-Zuul 基础篇
API 网关服务-Zuul 基础篇文章目录API 网关服务-Zuul 基础篇前言项目环境1.什么是 Zuul?2.为什么需要 Zuul?3.应用场景3.1 动态路由3.2 请求监控3.3 认证鉴权3.4 压力测试3.5 灰度发布4.Zuul 路由5.Zuul & Eureka 使用6.Zuul 过滤器(Filter Types)7.请求生命周期(Zuul Request Lifecycle)8.自定义过滤器9.Zuul 容错与回退10.Zuul Debug11.Zuul 控制路由实例选择12.参考
2020-09-13 22:12:52 437 1
原创 服务容错保护-Hystrix 基础篇
服务容错保护-Hystrix 基础篇文章目录服务容错保护-Hystrix 基础篇前言项目环境1.什么是 Hystrix?2.什么是服务雪崩?3.如何解决服务雪崩?4.Hystrix 设计原则5.Hystrix 的工作机制6.Hystrix 使用6.1 在 RestTemplate 和 Ribbon 上使用熔断器6.2 Feign 中使用熔断器6.3 Zuul 中使用熔断器7.Hystrix 配置8.Hystrix 监控9.Hystrix 使用小经验10.参考前言本章主要介绍 Hystrix 的相关概念
2020-08-24 14:48:59 564
原创 声明式服务调用-Feign 源码分析
声明式服务调用-Feign 源码分析文章目录声明式服务调用-Feign 源码分析前言项目环境1.Feign 主要组件3.Feign 执行过程4.Feign & Hystrix 集成4.1 FeignClient 配置类 FeignClientsConfiguration4.2 自动装配 FeignAutoConfiguration5.Feign & Ribbon 集成6.@FeignClient 工作原理6.1 @FeignClient 处理过程6.2 代理类如何处理?7.Spring M
2020-08-24 11:38:38 297
原创 声明式服务调用-Feign 基础篇
声明式服务调用-Feign 基础篇文章目录声明式服务调用-Feign 基础篇前言项目环境1.什么是 Feign?2.原生 Feign API3.Spring Cloud OpenFeign4.Feign 整合 Hystrix5.Feign 的配置5.1 Feign 的配置-代码方式5.2 Feign 的配置-配置文件方式6.Feign 的使用技巧6.1 继承特性6.2 拦截器6.3 请求对象类型参数传递6.4 日志配置6.5 异常解码器7.参考前言本篇主要是介绍什么是 Feign, Feign 的基本
2020-08-24 11:05:24 575
原创 Hystrix DashBoard 监控配置方式以及 Hystrix.stream 404 问题
Hystrix DashBoard 监控配置方式以及 Hystrix.stream 404 问题文章目录Hystrix DashBoard 监控配置方式以及 Hystrix.stream 404 问题配置 Hystrix DashBoard解决方案配置 Hystrix DashBoardSpring Cloud 版本:Spring Cloud Finchley三个依赖:spring-cloud-starter-netflix-hystrixspring-boot-starter-actuato
2020-08-21 17:12:36 2131 3
原创 客户端负载均衡-Ribbon 源码分析
客户端负载均衡-Ribbon 源码分析文章目录客户端负载均衡-Ribbon 源码分析前言项目环境1.Ribbon 主要组件2.组件作用和联系3.静态配置 ServerList 示例4.@LoadBalanced 原理分析5.Serverlist 如何获取&更新5.1 获取 Serverlist5.2 更新 Serverlist5.1 ServerListFiter5.2 ServerListUpdater5.3 IPing6.负载均衡策略7.自定义负载均衡策略8.负载均衡算法的使用场景8.1 定制
2020-08-18 19:36:10 516
原创 客户端负载均衡-Ribbon 基础篇
客户端负载均衡-Ribbon 基础篇文章目录客户端负载均衡-Ribbon 基础篇前言项目环境1.负载均衡简介1.1 集中式负载均衡1.2 客户端负载均衡2.什么是 Ribbon?3.RestTemplate 简介4.原生 Ribbon 示例5.RestTemplate & Ribbon 示例6.参考前言本章主要介绍 Ribbon 、RestTemplate 的一些相关的基本概念和用法,以及 RestTemplate 和 Ribbon 如何结合使用,对 Ribbon 有一个基本的印象,下一章我
2020-08-17 19:32:15 847
原创 注册中心-Eureka 源码分析
注册中心-Eureka 源码分析文章目录注册中心-Eureka 源码分析前言项目环境1.Eureka 基本概念1.1 Register - 服务注册1.2 Renew - 服务续约1.3 Fetch Registries - 获取服务注册列表信息1.4 Cancel - 服务下线1.5 Eviction - 服务剔除2.Eureka 高可用架构分析3.Eureka 注册表4.Eureka 核心操作4.1 注册 register4.2 续约 renew4.3 下线 cancel4.4 剔除 evict5.E
2020-08-16 17:36:48 669
原创 注册中心-Eureka 基础篇
注册中心-Eureka 基础篇文章目录注册中心-Eureka 基础篇前言项目环境1.什么是注册中心?1.1 服务注册1.2 服务发现1.3 整体流程图2.什么是 Eureka?3.部署 Eureka Server 服务端依赖引导类application.yaml 配置文件4.部署 Eureka Client 客户端依赖引导类application.yaml 配置文件启动效果5.集群部署6.总结前言注册中心的内容分为上下两章进行发布上篇,基础部分,介绍注册中心的基本概念和含义,以及 Eureka 的
2020-08-16 09:27:40 2847
原创 Spring @Bean 的处理流程是怎样的?
Spring @Bean 的处理流程是怎样的?文章目录Spring @Bean 的处理流程是怎样的?项目环境1.@Bean 用法2.框架提前注册处理类3.解析类封装 @Bean 方法元信息4.将元信息转化为 BeanDefinition5.总结6.参考项目环境jdk 1.8spring 5.2.2.RELEASEgithub 地址:https://github.com/huajiexiewenfeng/thinking-in-spring本章模块:questions1.@Bean 用
2020-08-09 18:10:00 815
原创 Spring 如何处理循环依赖?
Spring 如何处理循环依赖?文章目录Spring 如何处理循环依赖?项目环境1.什么是循环依赖?2.Spring 如何来处理循环依赖?2.1 allowCircularReferences 参数分析2.2 doCreateBean 方法分析2.3 依赖注入阶段3.总结4.两个问题补充5.参考项目环境jdk 1.8spring 5.2.2.RELEASEgithub 地址:https://github.com/huajiexiewenfeng/thinking-in-spring本章模块:
2020-08-08 23:41:41 1012
原创 JDK Proxy 和 CGLib 有什么区别?
JDK Proxy 和 CGLib 有什么区别?文章目录JDK Proxy 和 CGLib 有什么区别?前言1.主要区别2.JDK Proxy 动态代理3.CGLib 的实现4.Lombok5.总结6.参考前言JDK 动态代理的实现方式是反射。反射机制 是指程序在运行期间可以访问、检测和修改其本身状态或行为的一种能力,使用反射我们可以调用任意一个类对象,以及类对象中包含的属性及方法。CGLib 实现动态代理是基于 ASM(一个 Java 字节码操作框架)而非反射实现的。动态代理是一种行为方式
2020-07-24 10:00:33 4240
原创 Leetcode 旋转数组的最小数字
Leetcode 旋转数组的最小数字文章目录Leetcode 旋转数组的最小数字题目题解第一种暴力解法,时间复杂度 O(n)第二种二分查找,时间复杂度 O(logn)题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0来源:力
2020-07-22 16:20:23 445
原创 TCP 为什么需要三次握手?TCP 和 UDP 有什么区别?
TCP 为什么需要三次握手?TCP 和 UDP 有什么区别?文章目录TCP 为什么需要三次握手?TCP 和 UDP 有什么区别?前言1.什么是TCP?1.1 面向连接1.2 可靠性1.3 面向字节流1.4 定义2.三次握手流程3.为什么 TCP 需要三次握手?3.1 原因一:防止重复连接3.2 原因二:同步初始化序列化4.什么是 UDP?5.TCP VS UDP6.TCP 和 UDP 的使用场景7.总结8.参考前言之前的文章 《TCP/IP远程通信协议》,有介绍过 TCP 的相关的分层模型,当然也有著
2020-07-22 08:30:00 1091
原创 数据结构与算法|第十六章:二叉树基础
数据结构与算法|第十六章:二叉树基础文章目录数据结构与算法|第十六章:二叉树基础项目环境1.树(Tree)2.二叉树(Binary Tree)2.1 二叉树定义2.2 链式存储法2.3 顺序存储法3.二叉树的遍历3.1 前序遍历3.2 中序遍历3.3 后序遍历4.小结5.参考项目环境jdk 1.8github 地址:https://github.com/huajiexiewenfeng/data-structure-algorithm本章模块:tree1.树(Tree)树是由节点和
2020-07-21 16:31:12 249
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人