macOS Tahoe 26 Linux 容器初探
苹果在 macOS Tahoe 26 中引入了一项令人瞩目的新功能:原生 Linux 容器支持。这个名为 container 的工具让我们可以在 Mac 上直接运行 Linux 容器,而无需依赖 Docker Desktop 这样的第三方解决方案。
与传统的容器运行方式不同,苹果采用了"一容器一虚拟机"的独特架构,为每个容器提供独立的轻量级虚拟机环境。这种设计在安全性、隐私保护和性能方面都有显著优势。
苹果在 macOS Tahoe 26 中引入了一项令人瞩目的新功能:原生 Linux 容器支持。这个名为 container 的工具让我们可以在 Mac 上直接运行 Linux 容器,而无需依赖 Docker Desktop 这样的第三方解决方案。
与传统的容器运行方式不同,苹果采用了"一容器一虚拟机"的独特架构,为每个容器提供独立的轻量级虚拟机环境。这种设计在安全性、隐私保护和性能方面都有显著优势。
Git Submodule(子模块)是一个强大的功能,它允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。简单来说,就是将子仓库的特定版本嵌入到父仓库中,同时保持子仓库独立的版本控制。
这项功能在以下场景中特别有用:
使用 git submodule add 命令来添加子模块。你需要提供子模块的 Git 仓库 URL 和你希望在父仓库中存放它的路径。
Hugo 是一个以速度著称的静态网站生成器,其强大的主题(Theme)**系统是其核心魅力之一。一个好的主题不仅能让网站拥有美观的界面,更能通过其合理的**文件结构和查找机制,为开发者提供极大的灵活性和可维护性。本文将深入探讨 Hugo 主题的内部结构,并揭示其文件查找的奥秘。
Hugo 主题的核心在于其遵循**约定优于配置(Convention over Configuration)**的原则。这意味着,虽然你不需要在配置文件中显式声明每个文件的用途,但将文件放置在特定的目录并赋予它们特定的名称,Hugo 就能自动识别并加载它们。这种机制大大简化了开发流程,同时保证了主题的规范性和可扩展性。
以下是个人搭建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 中,我这里选择第二种方式。
上一篇文章,我们实现了在 Linux 中快速创建虚拟机,就是使用 cloud init 初始化虚拟机设置,然后使用脚本快速创建,上面的创建过程在 windows wsl2 中也是完全可行的,毕竟 wsl2 其实本质上也是运行了一台虚拟机,在虚拟机中,再创建虚拟机完全可行的,今天我们来探索一下在 windows 平台上自带的 hyper-v 上创建虚拟机,创建的过程和上一篇文章中的类似,也是使用 cloud init 搭配 脚本。
今天我们来聊一聊,怎么在 KVM 上快速创建虚拟机,首先什么是 KVM 呢?
KVM 的全称是 Kernel-based Virtual Machine,即基于内核的虚拟机。它是一种内建于 Linux 内核的开源虚拟化技术。不过 KVM 只是一个内核模块,单独的 KVM 不能看作一个完整的虚拟机软件。好在 Linux 中还有另一个强大的工具 QEMU。QEMU 提供了完整的虚拟化能力,但原始的 QEMU 只提供软件模拟,性能不是很高。而当我们在 QEMU 中集成 KVM 后,就能获得接近裸机的性能,这正是我们想要的。
Redis 8.0 的发布标志着其发展历程中的一个重要里程碑,不仅带来了显著的性能提升和功能扩展,更体现了平台战略层面的重新定位。此版本最引人注目的变化包括:将先前独立的 Redis Stack 功能(如 JSON、时间序列、概率数据结构及查询引擎)整合进核心,统一命名为 Redis Open Source;引入全新的 Vector Set 数据结构(目前处于 Beta 阶段),显著增强了其在人工智能(AI)和机器学习(ML)领域,特别是向量相似性搜索方面的能力 ;实施了超过 30 项性能优化,涵盖命令延迟、吞吐量、复制效率和查询处理能力等多个维度 ;以及在许可模式上做出的重大调整,在保留原有 RSALv2 和 SSPLv1 的基础上,增加了 OSI 批准的 AGPLv3 选项 。
Server-Sent Events(SSE)是一种基于 HTTP 协议的服务器推送技术,它允许服务器以流的方式向客户端实时推送数据。与 WebSocket 等双向通信技术不同,SSE 专注于单向通信(从服务器到客户端),特别适合需要服务器主动推送数据的场景,如:
| 特性 | Server-Sent Events | WebSocket |
|---|---|---|
| 通信方向 | 单向(服务器到客户端) | 双向 |
| 协议 | 标准 HTTP | WebSocket 协议(基于 HTTP 握手) |
| 实现复杂度 | 低,使用现有的 HTTP 基础设施 | 相对较高,需要特殊的服务器支持 |
| 重连机制 | 内置自动重连 | 需要手动实现 |
| 浏览器支持 | 所有现代浏览器(IE 需要 polyfill) | 所有现代浏览器 |
| 数据格式 | 文本(通常是 JSON) | 文本或二进制 |
| 适用场景 | 服务器频繁更新客户端 | 需要频繁双向数据交换 |
SSE 的实现原理非常简单。客户端通过 JavaScript 的 EventSource 接口发起请求,服务器保持连接打开并定期发送事件。这种连接具有以下特点: