- 博客(85)
- 资源 (1)
- 问答 (3)
- 收藏
- 关注
原创 一文讲清DDD
严格分层架构:某层只能与直接位于的下层发生耦合。松散分层架构:允许上层与任意下层发生耦合。在领域驱动设计(DDD)中采用的是松散分层架构,层间关系不那么严格。每层都可能使用它下面所有层的服务,而不仅仅是下一层的服务。每层都可能是半透明的,这意味着有些服务只对上一层可见,而有些服务对上面的所有层都可见。有很多人把DDD当成一种技术架构,甚至是微服务拆分的理念,两者的核心差异在于:MVC 是技术分层(解决代码组织问题),DDD 是业务分层(解决复杂业务建模问题)。
2025-03-15 17:44:28
579
原创 表分区应用场景
在MySQL中,**哈希分区(HASH)、键分区(KEY)和列表分区(LIST)**各有其适用的业务场景,具体选择需结合数据分布特点、查询模式和管理需求。
2025-03-05 10:00:08
341
原创 使用 OAuth 2.0 实现单点登录二
通过上述流程,子应用 A 和子应用 B 在同一浏览器中可以共享登录状态,实现无缝的单点登录体验。这种模式是 OAuth 2.0 最常用的实现方式之一,结合 OpenID Connect 的用户身份验证扩展效果更佳。
2025-01-09 13:52:40
914
原创 使用 OAuth 2.0 实现单点登录(SSO)
使用 OAuth 2.0 实现单点登录(SSO)时,多个子应用共享同一登录状态,可以通过以下方式实现。
2025-01-09 13:48:13
990
原创 Helm 是什么
Helm 是 Kubernetes 的包管理工具,被称为 Kubernetes 的 “Yum” 或 “APT”。通过 Helm,可以以一种声明式的方式定义和部署复杂的 Kubernetes 应用,同时便于升级和回滚。Helm 是一个功能强大且灵活的 Kubernetes 包管理工具,可以大幅提高部署效率和管理能力。无论是快速部署基础设施,还是构建和管理复杂的微服务架构,Helm 都是不可或缺的工具之一。下的模板文件,设置应用的默认参数和模板逻辑。
2025-01-09 12:01:57
762
原创 Helm 是什么
Helm 是 Kubernetes 的包管理工具,被称为 Kubernetes 的 “Yum” 或 “APT”。通过 Helm,可以以一种声明式的方式定义和部署复杂的 Kubernetes 应用,同时便于升级和回滚。Helm 是一个功能强大且灵活的 Kubernetes 包管理工具,可以大幅提高部署效率和管理能力。无论是快速部署基础设施,还是构建和管理复杂的微服务架构,Helm 都是不可或缺的工具之一。下的模板文件,设置应用的默认参数和模板逻辑。
2025-01-01 16:16:28
729
原创 Dubbo 3.x 对比 Dubbo 2.x
特性Dubbo 2.7Dubbo 3.x协议支持Dubbo 协议Triple 协议 + Dubbo 协议 + gRPC云原生支持部分适配 Kubernetes原生支持 Kubernetes 和 Service Mesh异步和响应式编程异步支持不够完善全面支持 CompletableFuture 和响应式跨语言互操作性依赖 Dubbo 协议Triple 协议实现更好跨语言支持性能优化GC 和协议性能有局限性HTTP/2、多路复用、大幅提升性能服务治理基础功能动态路由、分级流量治理更强可观测性。
2024-12-16 15:48:55
931
原创 maven-compiler-plugin 3.10.1 与 3.8.1
特性支持的 JDK 版本JDK 8 到 JDK 12JDK 8 到 JDK 21release参数支持基础支持,高版本需手动配置完全支持,自动适配高版本新语言特性支持不支持records支持所有现代 Java 特性模块化项目支持(JPMS)部分支持完全支持性能优化普通性能更高的编译性能,适合大项目兼容性更适合旧版本的 JDK 和工具链更适合现代化工具链和开发环境Bug 修复和改进较少修复包含了多个 Bug 修复如果你的项目需要使用现代化的 JDK(如 JDK 17 或 21),推荐使用。
2024-12-16 15:47:33
1428
原创 布隆过滤器
布隆过滤器(Bloom Filter)是一种概率型数据结构,用于判断某个元素是否存在于一个集合中。如果布隆过滤器判断元素不存在,那么这个元素一定不存在。如果布隆过滤器判断元素存在,可能存在误判的情况(即误判为存在,但实际上不存在)。布隆过滤器在Spring Boot中的使用主要依赖于其快速判断能力,可以有效解决缓存穿透和其他判定问题。对于本地使用,Google Guava足够简单高效;对于分布式场景,Redis Bloom是更优的选择。
2024-12-11 10:58:38
538
原创 位(bit)、字节(byte) 和 字符(character)
*位(bit)**是数据的最小单位,表示0或1。**字节(byte)**是由8位组成的存储单位,用于存储数据。**字符(character)**是数据的语义表示,与编码方式相关,不同编码方式占用的字节大小不同。了解位、字节和字符的区别与联系有助于理解数据存储和传输的底层机制。
2024-12-11 10:57:20
961
原创 基于springboot使用Caffeine
Caffeine 是一个高性能的本地缓存库,具有灵活的配置和优秀的性能表现,非常适合需要高效缓存的 Java 应用场景。如果你需要一个轻量级、高效的缓存解决方案,Caffeine 是一个绝佳的选择。开发,受 Google Guava 缓存库的启发,但具有更好的性能和更多的功能。是一个基于 Java 的高性能、现代化的缓存库。
2024-12-10 16:54:20
855
原创 Springfox迁移到 Springdoc OpenAPI 3
时,主要的工作是将原先使用的 Springfox 注解替换为 Springdoc OpenAPI 3 中的对应注解。虽然 Springdoc OpenAPI 3 基于 OpenAPI 3 规范,并且有一些不同的命名方式和设计理念,但大部分注解的功能是类似的。迁移时,主要是将 Springfox 中的注解替换为 Springdoc 中对应的注解,并根据 OpenAPI 3 的规范调整 API 文档描述。在 Springfox 和 Springdoc 中的功能是相同的,用来描述接口的多个响应状态和返回类型。
2024-11-29 16:59:02
971
原创 Springfox、Swagger 和 Springdoc
对于新项目,推荐使用 Springdoc;对于维护中的老项目,可以逐步迁移到 Springdoc,以便享受最新功能和更好的兼容性。
2024-11-28 16:47:54
1145
原创 Spring Boot 与 Spring Cloud Alibaba 版本兼容对照
版本选择要点Spring Boot 3.x 与 Spring Cloud Alibaba 2022.0.xSpring Boot 3.x 基于 Jakarta EE,javax.* 更换为 jakarta.*。需要使用 SpringCloud 2022.0.x 和 Spring Cloud Alibaba 2022.0.x。Alibaba 2022.0.x 对Spring Boot 3.x 的支持在其发行说明中明确。Spring Boot 2.7.x 与 Spring Cloud。
2024-11-26 10:53:59
1198
原创 java启动命令原理
java -jar命令是 Java 命令行工具的一部分,用于执行包含主类(即包含方法的类)的 JAR 文件。要理解java -jar。
2024-11-24 17:15:38
266
原创 Java 技术规范
Java 技术规范是由 Java 社区过程 (Java Community Process, JCP) 维护的一系列文档,它们定义了 Java 平台的各种方面,包括语言特性、API、工具等。: 定义了 Java SE 平台提供的所有标准 API,包括核心库、GUI 工具包(如 Swing 和 JavaFX)、网络、数据库连接(JDBC)等。: 定义了一组用于企业级应用的标准,如 Servlets、JSP、EJB、JPA、JSF 等。: 定义了 Java 应用程序访问命名和目录服务的方式,如 LDAP。
2024-11-24 17:11:25
370
原创 微服务透传日志traceId
在微服务架构中,一次业务执行完可能需要跨多个服务,这个时候,我们想看到业务完整的日志信息,就要从各个服务中获取,即便是使用了ELK把日志收集到一起,但如果不做处理,也是无法完整把一次业务请求的日志完整链路串联起来。有人说,可以在日志中加入某个业务参数,比如订单id等,但是不可能所有业务都是有这样的参数给你用的。
2024-11-04 16:26:05
1082
原创 Spring Boot 集成 Elasticsearch入门教学
Elasticsearch 是一个分布式搜索引擎,用来处理大规模数据的存储、搜索和分析。它是基于 Apache Lucene 构建的,具备高效的全文搜索功能。ES 可以在海量数据中快速找到匹配的内容,并且支持复杂的查询逻辑,非常适合用于日志分析、商品搜索、数据可视化等场景。
2024-10-11 18:01:59
879
1
原创 语义化版本
版本格式:主版本号.次版本号.修订号,版本号递增规则如下:主版本号:当你做了不兼容的 API 修改,次版本号:当你做了向下兼容的功能性新增,修订号:当你做了向下兼容的问题修正。先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸
2024-08-05 10:00:02
891
原创 ABAC模型
ABAC模型通过属性和策略的灵活组合,实现了比传统RBAC更细粒度和动态的访问控制。在复杂和动态变化的环境中,ABAC可以提供更强的灵活性和安全性。通过结合RBAC和ABAC,可以设计出更加健壮和适应性强的权限管理系统。ABAC模型提供了比传统RBAC更灵活和精细的访问控制方式,适用于复杂、多变的权限需求场景。通过引入多种属性并动态评估权限,ABAC能够实现更强大和细粒度的访问控制策略。
2024-07-05 10:23:45
1319
原创 Spring Boot、Nacos配置文件properties、yml、yaml的优先级
yaml跟yml具有相同的作用,但是优先级也有区别,yaml比yml先加载,所以,yml会覆盖yaml。properties(最高)> yml > yaml(最低)
2024-03-05 10:59:48
1810
原创 基于git flow规范的代码版本管理
基于git flow规范Master分支是仓库的主分支,这个分支包含最近发布到生产环境的代码,最近发布的Release, 这个分支只能从其他分支合并,不能在这个分支直接修改master这个分支是我们的主开发分支,包含所有要发布到下一个Release的代码,这个主要合并与其他分支,比如Feature分支develop:用于集成所有功能开发。
2024-02-27 11:39:13
743
1
原创 Sentinel spring的全局异常处理器,导致熔断规则(异常数规则)失效解决方案
在使用sentinel过程中,还需要将规则持久化才能投入生产,持久化的方案有好几种,推荐使用nacos,但是直接在nacos里手写配置的话也是不够友好的
2023-06-20 11:20:40
1529
5
原创 IDEA 常用插件跟配置提升开发效率
只要输入apr ,就能自动提示,并且生成Autowired 语句了。可以根据自己的代码习惯,自定义一些代码模板,帮助我们快速写代码。
2023-02-02 14:28:38
1489
原创 软件架构的23个基本原则
软件体系架构基于一组适用于各种软件系统的基本原则,有经验的架构师知道这些原则,并且能够在软件产品的正确位置实现特定的原则。下面我们快速浏览一下架构师日常遵循的基本原则。这一原则表明依赖的方向应该是抽象的,而不是具体实现。如果编译时依赖在运行时执行的方向上流动,就形成了直接依赖。通过依赖倒置,可以反转依赖控制的方向。下面的文章更深入的讨论了这一原则:https://medium.com/p/de6abf20e423这一原则指出,软件系统应该按照所做的工作类型来划分。比方说可以按照业务逻辑、基础设施或用户界面
2022-12-06 09:46:43
652
原创 idea 中使用git合并分支
使用idea工具编写代码的时候,在团队协作开发的过程中需要建立分支(有时候可能是多个),一个分支用于正式系统的部署使用,修改微小的bug,而另一个分支可用于开发新功能代码使用,在开发完成之后,经过反复的测试,此时需要整合到主分支上去,此时需要分之合并。⑧:此时合并完成只是在自己电脑本地,还没有提交到远程服务器,最后将合并好的代码推送到远程即可。①:先将远程的分支检出到本地,如下图,点击后下角的Git状态栏,选择Remote Branches下的你要检出的分支点击,然后点击Checkout As…
2022-09-05 09:47:38
6620
原创 Springboot2.5.x+过滤器异常捕获
之前用的2.2.x版本的,代码有所变化,废话不多说,直接上干货.package com.mine.common.auth.exception;import cn.dev33.satoken.exception.NotLoginException;import com.mine.common.core.enums.BaseCode;import com.mine.common.core.web.domain.AjaxResult;import com.mine.common.core.web.do
2022-04-14 17:49:22
370
原创 Java异常架构与异常关键字
文章目录Java异常简介Java异常架构1.Throwable2.Error(错误)3.Exception(异常)运行时异常4.受检异常与非受检异常受检异常非受检异常Java异常关键字Java异常简介Java异常是Java提供的一种识别及响应错误的一致性机制。Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。在有效使用异常的情况下,异常能清晰的回答 what, where, why这3个问题:异常类型回答了“什 么”被抛出,异常堆栈跟踪回答了“在哪”
2022-02-18 10:13:26
177
原创 java函数式编程,stream
函数式介绍:简单来说:函数式编程就是把我们的函数(方法)作为参数传递、调用等例子:自定义函数式接口import java.io.Serializable;/** * 可序列化的Functional * * @author <achao1441470436@gmail.com> * @since 2021/6/13 16:42 */@FunctionalInterfacepublic interface Func<T, R> extends Serializab
2021-10-15 16:16:45
173
原创 钉钉第三方企业应用开发快速入门
文章目录钉钉第三方企业应用开发快速入门1、创建小程序1.1. 登录开发者后台1.2. 填写基础信息1.3. 查看应用信息2、设置安全域名3、设置接口权限4、开发管理(创建回调)5、下载源码6、设置与修改源码6.1. 服务器端6.1.1. 配置代码6.2. 前端下载6.2.1. 修改前端配置7、添加体验组织并开通应用8、推送Ticket9、项目关联钉钉应用钉钉第三方企业应用开发快速入门1、创建小程序1.1. 登录开发者后台登录钉钉开发者后台,选择应用开发-第三方企业应用-小程序,点击创建应用。1.
2021-10-11 15:39:00
6281
原创 Kubernetes
文章目录1. Kubernetes介绍1.1 应用部署方式演变1.2 kubernetes简介1.3 kubernetes组件1.4 kubernetes概念2. kubernetes集群环境搭建2.1 前置知识点2.2 kubeadm 部署方式介绍2.3 安装要求2.4 最终目标2.5 准备环境2.6 系统初始化2.6.1 设置系统主机名以及 Host 文件的相互解析2.6.2 安装依赖文件(所有节点都要操作)2.6.3 设置防火墙为 Iptables 并设置空规则(所有节点都要操作)2.6.4 关闭 S
2021-08-02 17:37:13
431
原创 阿里巴巴seata分布式事务终极解决方案
关于seata就不做过多介绍了,网上一大片,请自行翻阅环境配置mysql: 5.7nacos: 1.2.1spring-cloud-alibaba: 2.2.0seata: 1.2.0正文第一步下载seata服务第二步创建Seata高可用的db,以及AT模式所需的undo_log表1.在你的参与全局事务的数据库中加入undo_log这张表-- for AT mode you must to init this sql for you business database. the se
2021-05-12 18:35:58
1324
3
nginx配置https,javaweb前后分离项目
2018-10-04
ajax回调问题ajax回调问题ajax回调问题ajax回调问题ajax回调问题
2017-12-16
关于js调用ocx控件的问题,代码如下,哪位大牛大爷帮小弟讲解下,都是什么意思,万分感激
2017-11-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人