Clay 的技术空间

用进废退 | 艺不压身

前言

本文主要介绍 Debian 如何安装 MySQL 5.7 数据库,适用于 Debian 10 、Debian 11。

环境说明

软件版本
Debian11
MySQL5.7.42

准备工作

  • 更新系统软件
1
sudo apt-get update
阅读全文 »

漏桶限流算法

漏桶限流算法的介绍

  • 漏桶限流算法
    • 原理:漏桶算法维护了一个固定容量的漏桶,请求以固定的速率流入漏桶。当请求到达时,如果漏桶未满,则允许请求通过,如果漏桶已满,则拒绝请求。漏桶以恒定的速率漏水,即使系统没有请求,漏桶也会持续漏水。
    • 使用场景:适用于需要固定的请求达到速率的场景,比如对网络流量进行限制,确保不会出现突发流量导致系统瘫痪。
    • 实现方式:在代码中维护一个固定容量的漏桶,请求以固定的速率流入漏桶,同时定期漏水,并在每次请求到达时检查漏桶的剩余容量是否足够。
阅读全文 »

大纲

前言

本文将介绍 @Async 注解和线程池的使用、注意事项和实现原理。

版本说明

组件版本
Spring Boot3.0.5

@Async 的概述

  • @Async 注解通常标注在方法上,用于实现方法的异步执行,即方法调用者调用方法后立即返回,待调用的方法会提交给 Spring 的线程池去异步执行。
  • @Async 也可以标注在类上,等价于在类中的所有方法上添加该注解。特别注意,@Async 注解只对 Spring IOC 容器管理的对象生效。
阅读全文 »

前言

本教程适用于 JetBrains 2026 系列的所有 IDE 产品,例如 IDEA、PyCharm、CLion、GoLand、RustRover 等。本文中的方法已在以下产品上完成实际验证,可顺利激活:

  • IDEA-2026.1.3
  • PyCharm-2026.2
  • CLion-2026.2.0.1
  • RustRover-2026.2

破解步骤

下载破解补丁

使用以下任意一种方式下载破解补丁压缩包,下载完成后解压到本地磁盘。请注意,解压后的目录路径中不能包含空格,例如可将其解压到 D:/idea-2026.1.3/jetbra

随后,找到 JetBrains IDE 在本地磁盘上的安装目录,打开 bin 目录下对应的 xxxx.exe.vmoptions 配置文件,例如 idea64.exe.vmoptions,然后在文件末尾追加一行配置:

1
2
# 请自行更改 ja-netfilter.jar 的文件路径,切勿直接拷贝并使用以下配置内容
-javaagent:D:/DevSoftwareInstall/idea-2026.1.3/jetbra/ja-netfilter.jar=jetbrains

特别注意

xxxx.exe.vmoptions 配置文件末尾添加的内容中,ja-netfilter.jar 的文件路径不能包含空格。建议使用 / 正斜杠作为路径分隔符,否则后续激活可能会失败。

在线获取激活码

在浏览器中打开 https://3.jetbra.in/,获取你所需激活的 IDE 产品对应的激活码,操作界面如下图所示:

激活 JetBrains

运行 JetBrains 的 IDE 产品后,通过菜单栏打开激活码输入窗口。通常有以下两种打开方式(不同类型的 IDE 产品界面可能会略有差异):

  • (1) Help --> Register,打开 Manage Licenses 窗口
  • (2) Help --> Manage Subscriptions,打开 Manage Subscriptions 窗口

最后,将获取到的激活码粘贴到输入框中,然后点击 Active 按钮即可完成激活。

激活验证

运行 JetBrains 的 IDE 产品后,依次进入菜单栏中的 Help --> About,即可查看当前激活的有效时间(通常为 2 到 3 个月):

参考资料

大纲

开发环境要求

环境 & 工具版本
SpringBoot3.0.5+
IDEA2021.2.1+
JDK17+
Maven3.5+
Tomcat10.0+
Servlet5.0+
GraalVM Community22.3+
Native Build Tools0.9.19+
阅读全文 »

什么是 Pjax

​Pjax​​​ 通过 Ajax 从服务器获取 HTML 内容,然后用加载到的 HTML 替换页面上容器元素的内容。Pjax 使用 pushState 更新浏览器中的当前 URL,即 ​​pjax = pushState + ajax​​ 。最早的时候,​​Pjax​​​ 是一个基于 ​​jQuery​​ 的插件,后来推出了完全独立的版本,适用更广泛的应用场景。值得一提的是,Pjax 最大的优势在于,可以在网站本身无刷新的情况下,局部刷新页面内容,同时在现代浏览器中支持前进和后退,由于局部加载的数据量极小,加载速度极快,因此可以最大程度地提升用户体验。Pjax 的天生劣势在于,默认配置对 ​​SEO​​ 并不友好,同时非常依赖页面布局的一致性,需要大量改造来优化。

Hexo 引入 Pjax

很多较早使用 ​​Pjax​​ 的 Hexo 主题,都使用了基于 jQuery 的版本。因此如果是新引入,可以使用最新独立版本的 ​​Pjax​​

1
<script src="https://cdn.jsdelivr.net/npm/pjax@VERSION/pjax.min.js"></script>
阅读全文 »

前言

前端项目发布新版本时,会经常遇到需要清理缓存的问题,以下是 Vue 项目禁用缓存的方法。

HTML 内容

在 HTML 页面(如 index.html)的 <head> 标签中添加 meta 配置。

1
2
3
<meta http-equiv="pragram" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="expires" content="0" />
阅读全文 »

常用的网络框架

  • Boost.Asio:Boost.Asio 是一个跨平台的 C++ 网络编程库,提供了异步 I/O 操作的抽象。它可以处理 TCP、UDP、SSL 等协议,并提供了丰富的异步操作和事件处理机制。

  • POCO C++ Libraries:POCO 是一个功能强大的 C++ 类库,其中包含了丰富的网络通信模块,包括 HTTP、SMTP、POP3、FTP 等协议的支持,以及 WebSocket、WebSocket Secure 等高级功能。

  • cpp-netlib:cpp-netlib 是一个轻量级的 C++ 网络编程库,提供了 HTTP、HTTP client、HTTP server 等模块。它设计简单,易于使用,并提供了现代 C++ 风格的 API。

  • Muduo:Muduo 是一个基于事件驱动的 C++ 网络库,用于构建高性能的服务器应用。它提供了事件循环、线程池、定时器、TCP/UDP 服务器等模块,可以处理大量的并发连接。

  • C++ REST SDK:C++ REST SDK 是由微软开发的一个 C++ 库,用于构建基于 HTTP 的服务和客户端。它提供了现代 C++ 风格的 API,并支持异步操作和并发处理。

  • Crow:Crow 是一个轻量级的 C++ 微型网络框架,用于构建 RESTful 风格的 Web 服务。它简单易用,适合快速开发小型的 Web 应用。

  • Beast:Beast 是 Boost 库的一部分,提供了现代 C++ 风格的 HTTP 和 WebSocket 功能。它设计简单,易于集成,并且具有高性能和可扩展性。

阅读全文 »