AHdark

AHdark Blog

Senior high school student with a deep passion for coding. Driven by a love for problem-solving, I’m diving into algorithms while honing my skills in TypeScript, Rust, and Golang.
telegram
tg_channel
twitter
github
cover
cover

Web 后端应用程序的可观测性改进

相信日志,即 Logging,对于大多数开发人员是不陌生的。 日志是一种记录应用程序运行状态的重要手段,它可以帮助我们了解应用程序的运行情况,排查问题,甚至是监控应用程序的性能。在 Web 后端应用程序中,日志是不可或缺的一部分,它可以记录用户请求、应用程序的错误、警告等信息…
我如何从零开始学习一门编程语言
作为一门全栈开发,我理应掌握多门语言。截止 2024 年 9 月,我掌握了超过 30 门编程语言,可以使用它们构建简单的应用程序、为开源社区提交代码、为公司开发产品。我们不讨论对于“掌握”的定义,让我梳理思路,详细阐述我是怎么一步步掌握如此多的编程语言的。如果你也想学习一门新的编程语言,希望这篇文章能够帮助到你。
通过控制反转降低代码耦合
或许你在学习 Spring 的时候曾听过,Spring 提供的容器叫做 IoC 容器。 IoC 是 Inversion of Control 的缩写,中文翻译为控制反转。控制反转是一种设计原则,早在 2004 年 Martin Fowler 便提出依赖反转…
cover
cover

使用 Next.js 与 Hexo 重构博客系统

近期,我使用 Next.js 与 Hexo 重构了原本基于 WordPress 的博客系统。此次重构是经过我深思熟虑的,在重构的过程中我也遇到了很多问题,我将为大家分享这次重构的过程和经验。
Golang PIE 编译的测试
Golang 在 1.6 版本中引入了 PIE(Position Independent Executable)编译模式,它可以使得编译后的二进制文件在内存中的位置不固定,从而提高了二进制文件的安全性。 但相传 PIE 编译模式在性能和内存占用上都有一定的损耗,本文将对 PIE 编译模式进行测试,以验证这一说法。
cover
cover
cover
cover
cover
cover
cover
cover

1Password: 管理你的数字生活

1Password 是一款密码管理软件,它可以帮助我们管理各种账号密码,同时还可以帮助我们生成强密码、自动填充密码等。 我已经使用 1Password 一年多了,它为我的工作和生活带来了极大的便利,成为了我工作流中不可或缺的一部分。 因此,我将在本文中向大家介绍 1Password 的使用方法和优势,希望能够帮助到大家。
程序中的素性测试
由于近期忙于公司事务和新系统的架构设计工作,博客的文章已经停更了数月。近几个月对我个人来说产生了很大的变化,我很难讲清其中的具体,但这大概会在后续的博客文章更新中体现。 但我认为,停更并非好事,而是应当避免的,因此我也在有片刻闲暇的今日在已经停止更新五个月的博客的第一篇文章。 序…
cover
cover

使用 GitHub CI 自动推送镜像到 GAR

这篇博客将向您介绍如何使用 GitHub CI 自动将 Docker 镜像推送到 Google Artifact Registry(GAR)的自动构建仓库。 GitHub CI 的功能使得代码推送到 GitHub 仓库时,能够自动构建 Docker 镜像并推送到 GAR…
cover
cover
cover
cover

Kubernetes 部署 WordPress 的方法

主要使用工具的介绍 在本节中,我们将介绍 Kubernetes 和 Helm 的基本概念,这些知识是理解如何在 Kubernetes 集群上部署 WordPress 的基础。 Kubernetes 简介 Kubernetes 是一个开源的容器编排平台,用于自动化容器的部署…
浅谈 TypeScript 中的类型变化
TypeScript 是 JavaScript 的超集,其最显著特征是在 JavaScript 原有的语言模式上加入了类型强制,即静态类型系统。以此保证代码中变量处于类型安全状态,即只能赋同类型的值,而对象只能访问其自身所拥有的属性、方法。 类型安全 & 型变 类型安全是指同一段…
Nginx 动态反向代理实现
Source Global CDN 的海外中转链路往往需要对多个域名进行反向代理,之前的方案是给每个域名单独创建 vhost。但在链路增长、服务器增多的现实情况下,这一方案变得越来越难以维护。 我作为 Source Global CDN 的主要运维人员,自然而然地承担起了此任务。…
cover
cover

为什么我使用 Golang 撰写容器化应用程序

在当前互联网架构圈子,容器化、微服务,是被主要讨论的话题。 显然,对于互联网的发展趋势来看,项目正在变得愈加庞大。单一的巨大的项目是不利于维护和开发的,开发者的电脑几乎难以直接承载阿里云、Azure 这种巨大的项目,那我们就需要对其进行解耦。也就是说,应用的组件化、容器化…
cover
cover
cover
cover
cover
cover
cover

使用 Mailgun 用于邮件服务

在近期,我逐步将近乎所有的服务所使用的邮件服务都更换为 Mailgun,本文我将讲述我作出这一决定的原因和具体做法。 在确定使用 Mailgun 以前,我曾对 SMTP 邮件推送这一部分有过多种尝试。 曾用品 阿里 / 腾讯 企业邮箱(国内) 在我仍在职圆云的时候…
cover
cover
cover
cover
cover
cover

使用 acme.sh 自动为IP/域名配置证书

SSL 证书作为一个在市场上应用十几年的玩意,任何一个做 Web 相关技术的都不大可能不知道这是个啥。 常见的国内个人站长使用的 SSL 证书基本都是 Let's Encrypt、 TrustAsia、CloudFlare SSL 等,它们都提供免费的 DV SSL 域名证书…
cover
cover
cover
cover
cover

Golang 使用 Wire 进行依赖注入

前言 在参与 Star Horizon 的一个项目时,我得到团队内同学的启发,发现了 Wire 这个神奇的东西。 Wire 是 Google 研发并开源的一个 Golang 依赖注入解决方案,它通过解释原有文件生成新文件并用 Go Build Injector…
cover

Go Message Queue 的简易实现

消息队列,即 Message Queue,是我们在构建 Gin 等持久化 Golang 应用程序的常用组件。 消息队列在实际应用中包括如下四个场景:应用耦合、异步处理、限流削峰和消息驱动的系统。 本文将介绍如何基于 Channel 实现一个简易的内存消息队列组件。
cover
cover
cover
cover
cover

Linux 服务器的基本安全策略

序 撰写本文是在 2022 年 8 月 13 日决定的。本人 Q 群内群友经常有极其不规范的运维操作,令本人很是无语,为此写本文以避免诸位站长踩坑。 服务器选择 非网站运营者可跳过这部分,本段落不考虑服务无法使用 CDN 等反向代理服务的情况。 在如今的市场上…
cover
cover
cover
cover
cover
cover
cover

Linux 磁盘分区

在生产环境中,我们通常会将系统盘与数据盘分离,以此使得我们在更换系统环境、迁移数据、更换服务器型号的时候更为方便。 以云骏数据为例,我们将介绍如何在 CentOS 8 中对数据盘进行分区操作。
Ownership of this blog data is guaranteed by blockchain and smart contracts to the creator alone.