DDD概述领域驱动设计(Domain-Driven Design, DDD)是一种软件开发方法论,它强调以领域模型为中心的设计思想。本文将结合SpringBoot框架,探讨DDD在实际项目中的应用。
DDD核心概念1. 战略设计
限界上下文(Bounded Context)
上下文映射(Context Mapping)
通用语言(Ubiquitous Language)
领域(Domain)与子域(Subdomain)
2. 战术设计
实体(Entity)
值对象(Value Object)
聚合(Aggregate)
领域服务(Domain Service)
领域事件(Domain Event)
仓储(Repository)
工厂(Factory)
项目结构示例123456789101112131415161718com.example.ddd├── application // 应用层│ ├── dto // 数据传输对象│ ├── assembler // DTO转换器│ └── service // ...
Java技术栈概述Java作为一门成熟的编程语言,以其”一次编写,到处运行”的特性闻名于世。这种跨平台特性主要归功于Java虚拟机(JVM)。本文将从以下几个方面深入探讨Java技术栈:
JVM架构与原理
内存管理与垃圾回收
性能调优方法
常用诊断工具
JVM架构与原理1. JVM内存结构JVM内存主要分为以下几个区域:
堆区(Heap)
新生代(Young Generation)
Eden区
Survivor区(S0/S1)
老年代(Old Generation)
方法区(Method Area)
程序计数器(Program Counter Register)
虚拟机栈(VM Stack)
本地方法栈(Native Method Stack)
2. 类加载机制类加载过程包括:
加载(Loading)
验证(Verification)
准备(Preparation)
解析(Resolution)
初始化(Initialization)
3. 垃圾回收机制垃圾回收算法
标记-清除(Mark-Sweep)
复制(Copying)
标记-整理(Mark-Comp ...
背景在将EMQX部署到EKS集群时,我们使用AWS Network Load Balancer(NLB)作为入口负载均衡器。为了优化性能,我们选择将SSL/TLS终止放在NLB层面而不是EMQX层面。这种架构可以减轻EMQX的计算负担,但也带来了一些意想不到的问题。
问题描述在实际运行中,我们发现连接到MQTT服务器的IoT设备的电池消耗比预期要高。经过排查,发现这与AWS NLB的TLS监听器的一个特性有关。
根据AWS官方文档,当TLS监听器从客户端或目标接收TCP keepalive包时,负载均衡器会生成TCP keepalive包,并每20秒将它们发送到前端和后端连接。这个行为是固定的,无法修改。
1客户端 <-- TCP Keepalive(每20秒) --> NLB <-- TCP Keepalive(每20秒) --> EMQX
影响分析1. 设备耗电增加对于IoT设备来说,频繁的网络通信会显著增加电池消耗。每20秒一次的keepalive通信意味着:
设备无法进入深度休眠状态
无线模块需要频繁唤醒
增加了不必要的数据传输
2. 网 ...
背景在日常开发中,我们经常需要处理分页查询的场景。比如从数据库分页查询数据,或者调用第三方API进行分页查询。这些分页查询的逻辑往往比较类似:
设定页码(pageIndex)和每页大小(pageSize)
循环查询直到没有更多数据
处理每一页的数据
为了避免重复编写这些模板代码,我设计了一个通用的分页工具类PaginationHelper。
核心实现PaginationHelper的核心是一个静态方法paginateAndProcess,它接收三个参数:
fetchPageFunction: 分页查询函数,传入页码和每页大小,返回分页结果
pageSize: 每页大小
processDataFunction: 处理每页数据的函数
代码实现如下:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546@Slf4jpublic class PaginationHelper { /** * 通用分页遍历方法 * * @param fe ...
背景在分发 Apple 快捷指令时,为了确保用户下载的快捷指令未被篡改,我们需要一个可靠的校验方案。本文将介绍如何基于 plist 文件实现快捷指令的完整性校验。
校验流程1. 解析 UUID首先需要从 iCloud 快捷指令分享链接中提取 UUID。这个 UUID 是快捷指令的唯一标识符。
2. 请求快捷指令记录通过 API 获取快捷指令的详细信息:https://www.icloud.com/shortcuts/api/records/${uuid}
API 返回的数据中包含了多个重要字段,其中最关键的是 fields.shortcut.value.downloadURL,这个 URL 指向快捷指令的 plist 源代码文件。
以下为响应示例:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667{ "modified": { ...
MQTT协议简介MQTT(Message Queuing Telemetry Transport)是一个基于发布/订阅模式的轻量级消息传输协议,特别适用于物联网(IoT)场景。它具有以下特点:
轻量级: 协议简单,报文小,占用资源少
可靠性: 支持QoS(Quality of Service)服务质量保证
实时性: 采用发布/订阅模式,消息实时推送
双向通信: 支持客户端和服务器之间的双向通信
安全性: 支持TLS/SSL加密和用户名密码认证
MQTT核心概念1. 发布/订阅模式MQTT采用发布/订阅模式进行消息传递:
Publisher(发布者): 负责发送消息
Subscriber(订阅者): 接收特定主题的消息
Broker(代理服务器): 负责消息的转发和分发
2. Topic(主题)Topic是消息的路由通道,采用层级结构:
123home/living_room/temperaturehome/living_room/humidityhome/bedroom/temperature
支持通配符:
+: 单层通配符 ...
手搓个软件
未读北京出入境可预约时间段查询12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788import requestsimport time# 预定义的区域列表regions = [ {"code": "110000", "node": "出入境管理总队"}, {"code": "110105", "node": "朝阳区"}, {"code": "110101", "node": "东城区"}, & ...
什么是 CursorCursor 是一款革命性的代码编辑器,它将人工智能(AI)技术与传统的集成开发环境(IDE)完美结合。简单来说,它就像是一个懂编程的智能助手,可以帮助程序员更轻松地写代码。无论你是经验丰富的开发者还是编程新手,Cursor 都能大大提升你的开发效率。
为什么选择 Cursor1. 开发效率提升
通过 AI 辅助,减少重复性工作
快速生成代码模板和常用功能
智能代码补全,减少打字量
自动识别代码错误并提供修复建议
2. 学习助手
可以询问任何编程相关问题
解释代码含义和运行原理
提供最佳实践建议
推荐相关学习资源
3. 免费使用
基础功能完全免费
无需信用卡
可选择付费升级获取更多功能
Cursor 的主要特性1. AI 智能助手自然语言交互
直接用中文描述你想实现的功能
AI 能理解你的意图并生成相应代码
支持追问和优化建议
代码生成与补全
自动补全变量名和函数名
生成完整的函数实现
提供多个代码方案供选择
支持各种主流编程语言
代码解释
详细解释代码的功能和原理
指出潜在的问题和优化空间
提供相关的文档链接
2. .cursorrules 配置什么是 ...
awesome-macOS让我来告诉你,你的 Mac 需要什么
:bulb: 如何订阅本项目的更新通知本项目若发生更新会通过两种途经发送通知。
TG 群组
要加入 TG 群组请联系xiajiayi0506@gmail.com
GitHub Watch
要订阅通知,请 Watch 本项目(使用All Activity或Custom-Pull requests)或 Subscribe 此 PR 的 Notifications。同时请启用 GitHub 通知设定 的Customize email updates-Pull Request pushes(默认情况下应该是启用的)。 订阅通知后,一旦本项目发生更改,GitHub 系统将自动发送邮件通知至 GitHub 通知设定 的Default notifications email(如无自定义通知邮件路由)。
homebrew(Mac 必备的软件)来源:官网
介绍:使用 Homebrew 安装 Apple(或您的 Linux 系统)没有预装但 你需要的东西。例如:MySQL,Maven,Git
安装:
官网一键命令安装 ho ...