https://avatars.githubusercontent.com/u/18242685

lihuu's blog

macOS Tahoe 26 Linux 容器初探

苹果在 macOS Tahoe 26 中引入了一项令人瞩目的新功能:原生 Linux 容器支持。这个名为 container 的工具让我们可以在 Mac 上直接运行 Linux 容器,而无需依赖 Docker Desktop 这样的第三方解决方案。

与传统的容器运行方式不同,苹果采用了"一容器一虚拟机"的独特架构,为每个容器提供独立的轻量级虚拟机环境。这种设计在安全性、隐私保护和性能方面都有显著优势。

Git Submodule 简明使用指南

Git Submodule(子模块)是一个强大的功能,它允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。简单来说,就是将子仓库的特定版本嵌入到父仓库中,同时保持子仓库独立的版本控制。

这项功能在以下场景中特别有用:

  • 项目依赖:当你的项目依赖于一个外部库或框架,而这个库本身也是一个 Git 仓库时
  • 代码复用:当你有多个项目需要共享同一份代码(例如 UI 组件库)时
  • 大型项目管理:将一个大型项目拆分成多个可独立维护的组件时

1. 添加子模块

使用 git submodule add 命令来添加子模块。你需要提供子模块的 Git 仓库 URL 和你希望在父仓库中存放它的路径。

Hugo 模板系统概述

Hugo 是一个以速度著称的静态网站生成器,其强大的主题(Theme)**系统是其核心魅力之一。一个好的主题不仅能让网站拥有美观的界面,更能通过其合理的**文件结构查找机制,为开发者提供极大的灵活性和可维护性。本文将深入探讨 Hugo 主题的内部结构,并揭示其文件查找的奥秘。

Hugo 主题的“骨架”:约定优于配置

Hugo 主题的核心在于其遵循**约定优于配置(Convention over Configuration)**的原则。这意味着,虽然你不需要在配置文件中显式声明每个文件的用途,但将文件放置在特定的目录并赋予它们特定的名称,Hugo 就能自动识别并加载它们。这种机制大大简化了开发流程,同时保证了主题的规范性和可扩展性。

ETCD安全高可用集群部署测试

以下是个人搭建etcd集群中的记录,首先使用这篇文章中介绍的脚本创建三个虚拟机,ubuntu-01、

ubuntu-02、ubuntu-03,在三台虚拟机中分别安装 etcd

sudo apt install etcd

安装完成之后打开 /lib/systemd/system/etcd.service 这个service文件

[Unit]
Description=etcd - highly-available key value store
Documentation=https://etcd.io/docs
Documentation=man:etcd
After=network.target
Wants=network-online.target

[Service]
Environment=DAEMON_ARGS=
Environment=ETCD_NAME=%H
Environment=ETCD_DATA_DIR=/var/lib/etcd/default
EnvironmentFile=-/etc/default/%p
Type=notify
User=etcd
PermissionsStartOnly=true
#ExecStart=/bin/sh -c "GOMAXPROCS=$(nproc) /usr/bin/etcd $DAEMON_ARGS"
ExecStart=/usr/bin/etcd $DAEMON_ARGS
Restart=on-abnormal
#RestartSec=10s
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
Alias=etcd2.service

这个是etcd的service文件,可以看到etcd的配置文件在/etc/defalut/目录中,名称应该是etcd,这个和传统的不一致,我们需要在/etc/etcd/目录中存放配置文件,有两种选择,修改这里的EnvironmentFile,或者把/etc/etcd目录中文件链接到 /etc/default 中,我这里选择第二种方式。

在Windows上快速创建虚拟机

上一篇文章,我们实现了在 Linux 中快速创建虚拟机,就是使用 cloud init 初始化虚拟机设置,然后使用脚本快速创建,上面的创建过程在 windows wsl2 中也是完全可行的,毕竟 wsl2 其实本质上也是运行了一台虚拟机,在虚拟机中,再创建虚拟机完全可行的,今天我们来探索一下在 windows 平台上自带的 hyper-v 上创建虚拟机,创建的过程和上一篇文章中的类似,也是使用 cloud init 搭配 脚本。

在Linux上快速创建虚拟机

今天我们来聊一聊,怎么在 KVM 上快速创建虚拟机,首先什么是 KVM 呢?

KVM 的全称是 Kernel-based Virtual Machine,即基于内核的虚拟机。它是一种内建于 Linux 内核的开源虚拟化技术。不过 KVM 只是一个内核模块,单独的 KVM 不能看作一个完整的虚拟机软件。好在 Linux 中还有另一个强大的工具 QEMU。QEMU 提供了完整的虚拟化能力,但原始的 QEMU 只提供软件模拟,性能不是很高。而当我们在 QEMU 中集成 KVM 后,就能获得接近裸机的性能,这正是我们想要的。

Redis8.0 新特性深度解析

1. 摘要

Redis 8.0 的发布标志着其发展历程中的一个重要里程碑,不仅带来了显著的性能提升和功能扩展,更体现了平台战略层面的重新定位。此版本最引人注目的变化包括:将先前独立的 Redis Stack 功能(如 JSON、时间序列、概率数据结构及查询引擎)整合进核心,统一命名为 Redis Open Source;引入全新的 Vector Set 数据结构(目前处于 Beta 阶段),显著增强了其在人工智能(AI)和机器学习(ML)领域,特别是向量相似性搜索方面的能力 ;实施了超过 30 项性能优化,涵盖命令延迟、吞吐量、复制效率和查询处理能力等多个维度 ;以及在许可模式上做出的重大调整,在保留原有 RSALv2 和 SSPLv1 的基础上,增加了 OSI 批准的 AGPLv3 选项 。

Server-Sent Events: 实现高效的实时Web通信

Server-Sent Events 概述

Server-Sent Events(SSE)是一种基于 HTTP 协议的服务器推送技术,它允许服务器以流的方式向客户端实时推送数据。与 WebSocket 等双向通信技术不同,SSE 专注于单向通信(从服务器到客户端),特别适合需要服务器主动推送数据的场景,如:

  • 社交媒体的实时通知(评论、点赞、关注提醒)
  • 股票价格、体育比分的实时更新
  • 日志和事件流的实时监控
  • 聊天应用中的消息提醒

SSE 与 WebSocket 的对比

特性 Server-Sent Events WebSocket
通信方向 单向(服务器到客户端) 双向
协议 标准 HTTP WebSocket 协议(基于 HTTP 握手)
实现复杂度 低,使用现有的 HTTP 基础设施 相对较高,需要特殊的服务器支持
重连机制 内置自动重连 需要手动实现
浏览器支持 所有现代浏览器(IE 需要 polyfill) 所有现代浏览器
数据格式 文本(通常是 JSON) 文本或二进制
适用场景 服务器频繁更新客户端 需要频繁双向数据交换

SSE 工作原理

SSE 的实现原理非常简单。客户端通过 JavaScript 的 EventSource 接口发起请求,服务器保持连接打开并定期发送事件。这种连接具有以下特点: