精选文章
从 Cloudflare 11.18 全局崩溃事件深度剖析:分布式系统中的容错哲学与配置管理实践
Vibe Coding 实战指南:与 AI 共创、保持流畅、持续成长
Docker 入门:从安装到实战的完整指南
Docker 是目前最主流的容器化工具,它将应用及其依赖打包成一个轻量级、可移植的容器,解决"在我机器上能跑"的经典问题。相比传统虚拟机,Docker 容器共享宿主机内核,启动速度从分钟级降到秒级,资源占用也大幅降低。
核心概念
在使用 Docker 之前,需要理解三个核心概念:
| 概念 | 说明 | 类比 |
|---|---|---|
| 镜像(Image) | 只读的应用模板,包含代码、运行时、依赖 | Java 的 .class 文件 |
| 容器(Container) | 镜像的运行实例,可读写 | JVM 中运行的进程 |
| 仓库(Registry) | 存储和分发镜像的服务 | Maven Central |
它们的关系:从仓库拉取镜像,用镜像创建容器运行。
Javascript 宏任务和微任务
宏任务
由宿主发起的任务称为宏观任务。
例如setTimeout函数创建的就是宏任务,当前的脚本执行也是宏任务。
setTimeout(() => {
console.log("Hello");
}, 100);微任务
由 JavaScript 引擎发起的任务称为微任务。
微任务的主要来源是Promise。
在 JavaScript 的事件循环中,当期宏任务执行完或者如果调用栈为空的时候,会检查微任务队列,如果队列不为空,会执行微任务队列中的任务。
Vim 实用技巧速查
Vim 的学习曲线陡峭,但一旦掌握常用技巧,编辑效率会远超普通编辑器。本文整理日常高频使用的 Vim 操作,按场景分类方便速查。
模式与基础操作
Vim 有四种主要模式:
| 模式 | 进入方式 | 用途 |
|---|---|---|
| Normal | Esc |
移动光标、删除、复制等操作 |
| Insert | i / a / o |
输入文本 |
| Visual | v / V / Ctrl+v |
选择文本 |
| Command | : |
执行命令(保存、替换等) |
常用移动
| 按键 | 作用 |
|---|---|
h j k l |
左下上右 |
w / b |
下一个/上一个单词开头 |
0 / $ |
行首/行尾 |
gg / G |
文件开头/末尾 |
Ctrl+d / Ctrl+u |
向下/向上翻半页 |
% |
跳转到匹配的括号 |
f{char} |
跳转到当前行下一个 {char} |
; |
重复上次 f 查找 |
常用编辑
| 按键 | 作用 |
|---|---|
dd |
删除当前行 |
D |
删除到行尾 |
dw |
删除一个单词 |
yy |
复制当前行 |
yw |
复制一个单词 |
p |
粘贴 |
u |
撤销 |
Ctrl+r |
重做 |
. |
重复上次操作 |
文本对象
Vim 的文本对象让操作更精确,格式为 操作 + 范围 + 对象:
Percona XtraBackup
介绍
Persona Xtrabackup 是 MySQL 中的一个免费的热备份工具。它针对 InnoDB 和 XtraDB 提供了无锁的热备份。它有如下几个特点:
- 可靠的快速备份。
- 备份时不中断事务处理。
- 节省硬盘空间和网络带宽。
- 自动的备份校验。
- 快速的数据恢复。
- 支持 InnoDB no-blocking 热备份。
- 支持增量备份。
- 支持压缩流式备份到另一台服务器
- 在不同的服务器中在线迁移表。
前提
需要账号和密码连接服务器
xtrabackup --user=user --password=password --backup --target-dir=/data/backup
除此之外,--port可以指定端口,--socket指定使用 localhost 本地连接的 socket 文件的位置,--host指定 tcp/ip 链接的时候的地址。
MySQL备份方案
备份前准备
创建单独用于备份的用户,并授予相应的权限
create user db_backup@'localhost' identified by 'backup123';
grant select,lock tables,show view,trigger,event on backup_database.* to db_backup@'localhost';
grant reload,Replication client on *.* to db_backup@'localhost';方案 1:全量逻辑备份(使用 mysqldump,方案 1)
备份
#!/bin/bash
backup_file_name=db_backup_`date '+%Y-%m-%d'`.sql.gz
mysqldump -udb_backup -pbackup123 --single-transaction --flush-logs --master-data=2 backup_database | gzip > $backup_file_name
if [ -e $backup_file_name ] ;then
echo "Start to copy files"
# scp $backup_file_name lihu@ubuntu-vm-02:/home/lihu
else
echo "No file to copy"
fi额外的参数
--skip-add-drop-table:生成的备份文件中不要有 drop table 的语句,默认是有的。--no-data:不导出数据,仅导出表结构--no-create-info:不导出建表语句,仅导出数据
Powershell配置
Windows10 Powershell 设置
首先 Powershell 的用户配置在用户目录的Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1文件中。
美化需要安装一些插件,在 windows 平台上脚本的执行策略必须是
RemoteSigned或者Unrestricted,可以使用Get-ExecutePolicy检查 powershell 脚本的执行策略。如果在安装的过程中出现脚本执行策略的问题,可以用Set-ExecutionPolicy设置脚本执行策略,例如 ,可以用如下命令Set-ExecutionPolicy Unrestricted -Scope CurrentUser将当前用户的脚本执行策略设置为Unrestricted。
百度搜索引擎指令
双引号
双引号表示精确搜索,例如,在百度中搜索 java 技术关键字,可以发现 java和技术这两个词被分开处理了,即包含 java 和 技术这两个关键字的结果都会返回。

如果我们给这两个词加上双引号,就会发现只有这两个词在一起的页面才会被返回,这个就是关键词的精确搜索。

site
用来搜索某个域名之下的内容,例如 site:apple.com ipadOS。
记录一次在SpringBoot项目中使用log42.yml作为配置文件遇到的问题
首先在 SpringBoot 中集成log4j2还是比较容易的,只需要在 maven 的 pom 文件中修改一下 logging 的依赖然后在resources中添加log4j2相关的配置文件就可以了。
我当时使用的是log4j2.yml格式的配置文件,所以就在maven的pom.xml文件中做了如下的修改:
<dependencies>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--添加log4j2依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<!-- 使用log4j2.yml文件格式来配置,需要引入如下的包 -->
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
</dependency>
...
</dependencies>这个在我当时的项目中是正确运行的。
我后来又创建了一个新的项目,也想用log4j2,就直接复制了上一个项目中配置了,但是在运行的时候发现怎么也加载不了log4j2的配置文件,总是提示ERROR StatusLogger No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically provided ...,但是log4j2的配置文件的确是存在的。
在这样的情况下,日志是无论如何都不会打印出来的,没办法只能加上log4j2.debug属性进行调试,在控制台的日志中我发现了这样一条日志WARN StatusLogger Found configuration file log4j2.yml for inactive ConfigurationFactory org.apache.logging.log4j.core.config.yaml.YamlConfigurationFactory,大体就是YamlConfigurationFactory不是激活状态,就试着全局搜索这句话,找到了如下的代码,
