Clay 的技术空间

用进废退 | 艺不压身

前言

本文主要介绍如何使用 Docker 在本地快速搭建 SpringBoot 3 的开发环境(单机),其中包括 Redis,ZooKeeper,Kafka,Kafka-UI,Prometheus,Grafana 服务的安装。

版本说明

软件版本说明
Docker24.0.7
CentOS7.9 宿主机操作系统
阅读全文 »

前言

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

环境说明

软件版本
Debian11
MySQL5.7.42

准备工作

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

漏桶限流算法

漏桶限流算法的介绍

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

大纲

开发环境要求

环境 & 工具版本
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 功能。它设计简单,易于集成,并且具有高性能和可扩展性。

阅读全文 »

注册账号

DockerHub 官网注册账号,该账号是免费注册的。

创建个人仓库

登录 DockerHub 的官网,创建新的镜像仓库。

阅读全文 »

大纲

前言

在开发或学习时,有时候想编写一个数据库操作的小 Demo,但又不想利用 MySQL、Oracle 等数据库进行建库建表操作,因为只想写个小案例,感觉没必要弄个很大很麻烦的数据库。而且这个案例中的数据用完之后就不再需要了,所以也不需要进行数据的持久化操作。那有没有什么方案可以满足这个需求呢?答案是肯定的,H2 是一款内存数据库,适合在学习阶段、开发阶段调试代码使用,并不适用于生产阶段,可以满足学习与调试代码的需求。

阅读全文 »

前言

初始化数据库

在 MySQL 执行 XXL-JOB GitHub 仓库中的 SQL 初始化脚本,初始化完成后一共有 8 张表

表名称描述
xxl_job_group 执行器信息表,用于维护任务执行器的信息
xxl_job_info 调度扩展信息表,用于存储调度任务的扩展信息,比如任务分组、任务名、机器的地址等
xxl_job_lock 任务调度锁表
xxl_job_log 日志表,用于存储任务调度的历史信息,例如调度结果、执行结果、调度入参等
xxl_job_log_report 日志报表,用于存储任务调度的日志报表,会在调度中心里的报表功能里使用到
xxl_job_logglue 任务的 GLUE 日志,用于存储 GLUE 日志的更新历史变化,支持 GLUE 版本的回溯功能
xxl_job_registry 执行器的注册表,用在维护在线的执行器与调度中心的地址信息
xxl_job_user 系统的用户表,可以用表中默认的用户名与密码进行登录
阅读全文 »