跳至主要內容
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 技术体系— 理论

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 技术体系
Docker 部署 cactus-vue-pro

Docker 部署

本小节,讲解如何将前端 + 后端项目,使用 Docker 容器,部署到 dev 开发环境下的一台 Linux 服务器上。如下图所示:

image-20240403160900773
image-20240403160900773

Cactus li...大约 9 分钟cactus-vue-procactus-vue-pro
自建内网穿透服务

自建内网穿透服务 EasyTier

一个简单、安全、去中心化的内网穿透 VPN 组网方案,使用 Rust 语言和 Tokio 框架实现。

安装

  1. 下载预编译的二进制文件

    访问 GitHub Release 页面 下载适用于您操作系统的二进制文件。Release 压缩包中同时包含命令行程序和图形界面程序。

  2. 通过 crates.io 安装

    cargo install easytier
    
  3. 通过源码安装

    cargo install --git https://github.com/KKRainbow/EasyTier.git
    

Cactus li...大约 4 分钟easyTiereasyTier
Idea 部署服务的使用

IntelliJ IDEA Deployment 教程

简介

在本教程中,我们将讨论如何使用IntelliJ IDEA的Deployment模块来简化部署过程。Deployment模块允许您将本地开发的应用程序代码部署到远程服务器上。

前提条件

  • 安装了IntelliJ IDEA
  • 基本的IDEA使用知识
  • 访问权限到远程服务器(FTP/SFTP/FTPS等)

配置Deployment模块

1. 打开Deployment设置


Cactus li...大约 3 分钟devopsdevops