跳至主要內容
hero image

Cactus's Blog

cactus-vue-pro
单体-基于 Java 的一流的快速开发平台
cactus-cloud
微服务-基于 Java 的一流的快速开发平台
api-gateway-all
API 网关项目
db-router-spring-boot-starter
自研的分库分表组件
cactus-clottery
微信小程序和pc抽奖项目
JVM 基础之JVM 内存结构

本文主要对JVM 内存结构进行讲解,注意不要和Java内存模型混淆了。原先这里放了一篇我自己整理的文章,最近看到海星的javakeeper公众号整理的文章,整理的很好。所以替换为他的文章,以方便你构筑JVM内存结构的知识体系。

img
img

Cactus li...大约 52 分钟JavaJavaJVM
使用 OAuth2.0 的几种方式

RFC 6749

OAuth 2.0 的标准是 RFC 6749 文件。该文件先解释了 OAuth 是什么。

OAuth 引入了一个授权层,用来分离两种不同的角色:客户端和资源所有者。......资源所有者同意以后,资源服务器可以向客户端颁发令牌。客户端通过令牌,去请求数据。

这段话的意思就是,**OAuth 的核心就是向第三方应用颁发令牌。**然后,RFC 6749 接着写道:


Cactus li...大约 7 分钟OAuth2.0OAuth2.0
理解 OAuth2.0 是什么

OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。

本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为RFC 6749


Cactus li...大约 12 分钟OAuth2.0OAuth2.0
DDD 工程 Dubbo 使用教程及原理分析

一、Dubbo 能干什么?

随着互联网场景的扩展,面对的用户规模和体量不断增加,系统也需进行相应的拆分设计和实施。原本单一的系统现已演变为多个微服务。例如,电商系统过去可能只需在一个工程中开发,而现在则需要将用户、支付、商品、配送、活动和风控等模块分离出来。那么,这些模块拆分后,应如何实现高效的通信呢?

image-20240422161208873
image-20240422161208873

Cactus li...大约 11 分钟DDD 技术体系DDD 技术体系
DDD 工程 Mybatis

一、案例背景

为了清晰明了地展示MyBatis的常用功能,我们设定了一个公司雇员薪酬管理的开发场景。

image-20240418180519158
image-20240418180519158
  • 首先,雇员员工和对应的薪资待遇,是一个1v1的关系。
  • 之后,薪资表与调薪表,是一个1vn的关系。每次晋升、普调,都会有一条对应的调薪记录。
  • 最后,有了这样3个表,我们就可以很好的完成,员工的插入、批量插入,和事务操作调薪。

Cactus li...大约 11 分钟DDD 技术体系DDD 技术体系
DDD 工程 RocketMQ 使用教程和模型结构

一、应用背景

MQ(消息队列)的主要作用是用于解耦复杂的业务流程和应对流量高峰时的消峰。例如,在用户完成下单支付后,系统可以通过MQ发送一个支付成功的消息,这个消息会触发后续的发货流程。这样,支付和发货两个环节就通过消息队列解耦,提高了系统的灵活性和可维护性。

另一个例子是在使用《MyBatis 使用教程》中的案例场景时,当对雇员进行级别提升和薪资调整后,系统也可以发送一条MQ消息。这条消息用于触发发送邮件通知给用户的流程。通过这种方式,业务流程中的各个环节可以独立运作,互不影响,同时也能有效地处理突发的高流量,避免系统过载。

image-20240423150157167
image-20240423150157167

Cactus li...大约 10 分钟DDD 技术体系DDD 技术体系
DDD 工程脚手架 【Maven 仓库版】

我把DDD脚手架,发布到了Maven仓库,所有人都能使用!

一、操作步骤

1.访问官网查看文档

https://central.sonatype.com/publishing (opens new window)首页有一个 Help 帮助文档,https://central.sonatype.org/register/central-portal/#producers (opens new window)这里有非常详细的操作说明。接下来我讲一些核心的步骤,如果操作有失败,可以参考官网资料。


Cactus li...大约 3 分钟DDD 技术体系DDD 技术体系
DDD 工程脚手架 【Maven 本地版】

DDD 工程脚手架 【Maven 本地版】+ 一键式配置分布式环境

一、工程效果

1.工程框架

2.环境展示

3.Redis 管理

4.Mysql 管理

5.MQ 管理

6.JOB 管理


Cactus li...小于 1 分钟DDD 技术体系DDD 技术体系
DDD 技术体系— 理论

DDD 是什么?

DDD 是领域驱动设计(Domain-Driven Design)的缩写,这是一种主要软件开发方法,由 Eric Evans 在他的书《领域驱动设计:软件核心复杂性应对之道》(Domain-Driven Design: Tackling Complexity in the Heart of Software)中首次提出。DDD 主要关注于创建与业务领域紧密相关的软件模型,以确保软件能够准确地解决实际问题。

DDD 的核心理念包括以下几个方面:

  1. 领域模型(Domain Model)

    领域模型是对特定业务领域知识的精确表述,它包括业务中的实体(Entities)、值对象(Value Objects)、服务(Services)、聚合(Aggregates)、聚合根(Aggregate Roots)等概念。领域模型是DDD的核心,它反映了业务专家的语言和决策。

  2. 统一语言(Ubiquitous Language)

    统一语言是开发团队与业务专家共同使用的语言,它在整个项目中保持一致。统一语言确保所有人都对业务概念有着相同的理解,减少沟通成本和误解。

  3. 限界上下文(Bounded Context)

    限界上下文是明确界定的系统边界,在这个边界内部有一套统一的模型和语言。不同的限界上下文之间可能有不同的模型,它们通过上下文映射(Context Mapping)来进行交互和集成。

  4. 聚合(Aggregate)

    聚合是一组相关对象的集合,它们被视为数据修改的单元。每个聚合都有一个聚合根,它是外部对象与聚合内部对象交互的唯一入口。

  5. 领域服务(Domain Services)

    当某些行为不自然属于任何实体或值对象时,这些行为可以被定义为领域服务。领域服务通常表示领域中的一些操作或业务逻辑。

  6. 应用服务(Application Services)

    应用服务是软件的一部分,它们协调领域对象来执行任务。它们负责应用程序的工作流程,但不包含业务规则或知识。

  7. 基础设施(Infrastructure)

    基础设施包括为领域模型提供持久化机制(如数据库)、消息传递、应用程序的配置等技术组件。

  8. 领域事件(Domain Events)

    领域事件是领域中发生的有意义的业务事件,它们可以触发其他子系统的反应或流程。


Cactus li...大约 42 分钟DDD 技术体系DDD 技术体系