Go:interface原理详解-接口由使用者定义,而不是由实现者定义。

Go:interface原理详解-接口由使用者定义,而不是由实现者定义。

接口设计模式的常见疑惑

Golang接口由使用者定义,而不是由实现者定义。开发常见的疑惑:“如果接口是使用者定义的,那使用者怎么知道实现者有没有那个方法?会不会猜错?是不是反而更难用了?”

这个问题是很多人的困惑,而且触及了 Go 接口设计哲学中最容易让人困惑的核心矛盾:

“如果接口是使用者定义的,那使用者怎么知道实现者有没有那个方法?会不会猜错?是不是反而更难用了?”

我们来一层层拆解这个疑问,你会发现:Go 的设计其实不是“让使用者去猜”,而是“让能力自然暴露”

Read more
Efficiency optimization practice of oh-my-zsh (omz) configuration parameters(macOS下oh-my-zsh omz配置参数效率优化实践,对开发人员用户高频使用zsh场景建议)

Efficiency optimization practice of oh-my-zsh (omz) configuration parameters(macOS下oh-my-zsh omz配置参数效率优化实践,对开发人员用户高频使用zsh场景建议)

⚠️以下 oh-my-zsh 终端配置优化(仅针对macOS环境开发人员用户高频使用zsh终端配置建议,小白用户不建议尝试!)

oh-my-zsh版本信息:
  • OMZ版本:master (f1934d2)
  • 更新时间:2025-10-20
  • 配置默认: ~/.zshrc

目录大纲:

  • oh-my-zsh 终端配置基础优化(仅建议,可避免配置文件和数据散落用户目录)
  • ZSH 历史记录设置(omz:高性能模式)
Read more
轻量级Kubernetes实战:基于k3s搭建Go Web应用部署环境(无需外部Docker仓库)

轻量级Kubernetes实战:基于k3s搭建Go Web应用部署环境(无需外部Docker仓库)

基于搜索结果,我为你提供一个在Linux上实现最精简k3s部署环境使用本地构建镜像部署Go web应用的完整方案。k3s 是最轻量级的Kubernetes发行版,特别适合资源有限的环境。

第一步:Linux系统环境说明

选择一个轻量级Linux发行版(如Ubuntu、Debian Server等),确保满足基本要求:

  • 64位Linux系统
  • 至少512MB内存
  • root或sudo权限

服务器系统版本:Debian 6.1.129-1 (2025-03-06) x86_64 GNU/Linux

Read more
从零开始:使用三台服务器搭建最简 Kubernetes 集群并集成 Gitea + Harbor 示例
对比主流云原生KubeSphere、KubeVela、Rancher、Sealos和Rainbond五者之间的区别

对比主流云原生KubeSphere、KubeVela、Rancher、Sealos和Rainbond五者之间的区别

KubeSphere、KubeVela、Rancher、Sealos和Rainbond五者之间的区别:

这个表格简要概述了KubeSphere、KubeVela、Rancher、Sealos和Rainbond五者之间的主要区别。每个项目都有其独特的特点和优势,适用于不同的场景和用户群体。在选择时,建议根据实际需求、技术栈和团队经验来权衡各个选项。

Read more
macOS Ghostty Terminal Ddefault binding keyboard shortcut key list(Ghostty.org Ghostty 终端默认快捷键列表)

macOS Ghostty Terminal Ddefault binding keyboard shortcut key list(Ghostty.org Ghostty 终端默认快捷键列表)

macOS Ghostty 终端默认快捷键列表

  • 基本常用快捷键
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
command + t:                新建标签页
command + n: 新建窗口
command + w: 关闭当前终端界面(标签页或分割窗口)
command + shift + w: 关闭当前窗口
command + shift + enter: 切换分割窗口缩放
command + alt + shift + w: 关闭所有窗口
command + page_up: 向上滚动页面
command + page_down: 向下滚动页面
command + home: 滚动到顶部
command + end: 滚动到底部
command + q: 退出 Ghostty
command + enter: 切换全屏模式
command + ctrl + f: 切换全屏模式
command + c: 复制到剪贴板
command + v: 从剪贴板粘贴
command + a: 全选
command + k: 清空屏幕
command + comma: 打开配置文件
command + alt + i: 切换检查器
Read more
Deep Practice of Domain-Driven Design (DDD): Principles of Architecture, Cost Trade-Offs(领域驱动设计(DDD)深度实践:架构原理、成本权衡与实战)

Deep Practice of Domain-Driven Design (DDD): Principles of Architecture, Cost Trade-Offs(领域驱动设计(DDD)深度实践:架构原理、成本权衡与实战)

DDD定义

领域驱动设计(英文:Domain-Driven Design,缩写DDD)是一种模型驱动设计的方法,通过领域模型捕捉领域知识,使用领域模型构造更易维护的软件。
最早由埃里克・埃文斯在2003年著作《领域驱动设计》提出的软件开发方法论,通过将软件实现与持续进化的领域模型结合来处理复杂业务需求。该方法聚焦核心领域逻辑,强调业务与技术专家协作建立统一语言,利用分层架构分离业务与技术复杂度。

模型在领域驱动设计的三个重要用途
  • 实现映射:模型作为软件架构的蓝图,直接驱动代码实现,确保技术结构与业务概念一致。
  • 语言统一:模型奠定团队通用语言(Ubiquitous Language)的基础,消除沟通歧义,促进跨职能协作。
  • 知识沉淀:模型封装领域精华知识,成为可复用、可传递的知识载体,支持持续演进和传承。
Read more
人是怎样废掉的?

人是怎样废掉的?

  • 一、懒
  • 二、谗
  • 三、拖延
  • 四、爱熬夜!:继续睡觉做梦;
  • 五、自控力差
  • 六、整天精神内耗
  • 七、停止思考不学习
  • 八、假装努力,持续幻想
  • 九、言语上的巨人,行动上的矮子
Read more
Rocky Linux系统初始化常用基础命令和工具包的便捷安装脚本(ljq@GitHub)

Rocky Linux系统初始化常用基础命令和工具包的便捷安装脚本(ljq@GitHub)

Description: A script to check system version and installed tools on Rocky Linux.(脚本描述:一个用于检查系统版本和Rocky Linux系统初始化工具的便捷脚本,安装系统常用命令和工具包。)

Author: Jacoliu (ljq@GitHub)
Usage: ./rocky-linux-init.sh
Version: 1.0
Date: 2023-07-04
License: MIT
Page Site: https://github.com/ljq

release-version/rocky-linux/rocky-linux-init.sh

Rocky Linux 发行版本默认检查安装基础工具包含:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Define tools list in lowercase
tools=(
"vim" # 0
"ping" # 1
"net-tools" # 2
"firewalld" # 3
"tar" # 4
"gzip" # 5
"bzip2" # 6
"wget" # 7
"curl" # 8
"python 3" # 9
"git" # 10
"ncurses" # 11
)
Read more
MySQL 8.0为什么使用utf8mb4_0900_ai_ci默认校对规则,而不使用utf8mb4_general_ci?

MySQL 8.0为什么使用utf8mb4_0900_ai_ci默认校对规则,而不使用utf8mb4_general_ci?

MySQL 8.0 选择 utf8mb4_0900_ai_ci作为默认校对规则原因

  • 主要的考虑主要基于对全球化支持的增强,基于Unicode 9.0规范,utf8mb4_0900_ai_ci在未来可以更容易地适应新的Unicode规范和扩展字符集。
  • 更精确的字符处理以及适应现代应用需求等方面。

两者差异对比要点:

  • 全球化支持的增强

    • 更广泛的字符集支持:utf8mb4_0900_ai_ci支持Unicode 9.0标准,这意味着它可以存储和处理更多的字符,包括许多特殊的emoji表情和其他少见字符。这对于现代应用程序尤为重要,因为它们常常需要处理这些扩展字符集。
    • 多语言环境的适用性:随着全球化的发展,应用程序需要支持多种语言和字符集。utf8mb4_0900_ai_ci不仅支持更多的语言和字符,还能更准确地处理这些语言中的特定字符问题。
    • 国际化应用的优选:在涉及多语言和国际化处理的应用中,utf8mb4_0900_ai_ci能够提供更全面的支持,确保数据的准确性和一致性。
  • 更精确的字符处理

    • 不区分重音和大小写:与utf8mb4_general_ci相比,utf8mb4_0900_ai_ci在比较和排序字符时不区分重音和大小写。例如,‘é’和‘e’被认为是相同的字符,‘A’和‘a’也被认为是相同的字符。这种规则对于处理语言如西班牙语和法语等重音丰富的语言尤为重要。
    • 基于Unicode 9.0的排序和比较规则:通过实现Unicode 9.0的排序和比较规则,utf8mb4_0900_ai_ci提供了更精确、更现代的Unicode支持。这确保了在数据库中对字符进行排序和比较时能够按照最新的国际化标准进行。
    • 提升搜索和排序的准确性:由于其先进的排序规则,utf8mb4_0900_ai_ci能够更准确地处理涉及重音符号的字符排序,这在许多语言中是必需的。
Read more