精选文章
从 Cloudflare 11.18 全局崩溃事件深度剖析:分布式系统中的容错哲学与配置管理实践
Vibe Coding 实战指南:与 AI 共创、保持流畅、持续成长
Maven的依赖范围
maven 有以下几种依赖范围:
-
compile:编译依赖范围。这个是默认的依赖范围,使用这个依赖范围的依赖,对于编译、测试、运行三种 classpath 都有效。 -
test:测试依赖范围。这个只对测试 classpath 有效,在编译和项目运行的时候是无法使用此类依赖的,例如 JUnit 依赖。<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> -
provided:已经提供的依赖。这种依赖只对编译和测试的时候有效,运行的时候不会使用这类依赖,例如 servlet-api,在编译和测试项目的时候,都需要使用到这个依赖,在项目运行的时候,容器会提供这个依赖。
Git重写历史
使用git commit --amend修改最后一次提交
如果仅仅是修改最后一次提交的信息,可以直接输入git commit --amend,之后会自动打开一个文本编辑器,直接修改这一条信息就可以了。

git rebase -i 使用
修改多个提交信息
Git 中不包含修改历史的工具,可以通过git rebase来间接地实现更改。
例如我想修改最近三次提交历史,可以输入git rebase -i HEAD~3,-i表示以交互模式打开进行git rebase,之后会自动打开一个文本编辑器,效果如下图所示:
我们可以看到前面三行就是最近三次的提交历史(注意这里的显示是按照提交时间正序显示的,我们使用 git log 命令展示的是按照时间倒着显示的),如果我们要修改第一行,就是修改倒数第三次提交,将第一行的**pick修改为edit**,然后保存。
然后再执行git commit --amend,会进入和图 1 类似的文本编辑器中,修改信息后保存并关闭文件。这个时候,我们可以使用git status命令查看当前工作区中的状态:
。我们很容易发现 rebase 还没有完全结束。在这里,我们还需要运行git rebase --continue继续进行 rebase 操作。
下面我们来简单总结一下修改对个提交历史的步骤:
一些比较有用的网站
一个免费的图床网站
路过图床是一个可以提供高速稳定的图片上传和外链服务,目前是免费的,并且也没有流量限制。
网站地址:https://imgchr.com/

一个可以下载无损音乐的网站
超高无损音乐,这个网站可以下载一些无损格式的音乐,音乐的来源是百度网盘别人分享的。
一个可以生成漂亮的代码的图片的网站
Carbon,这个网站可以帮助我们生成一些漂亮的代码图片。
Maven使用
初始化一个 maven 项目
在命令行中运行如下的命令mvn archetype:generate使用交互式的方式生成项目。
也可以使用单行的命令mvn archetype:generate -DgourpId = your groupId -DartifactId=your artifactId -Dversion=your version -Dpackage=your package
Maven 依赖出现的冲突
可以使用如下的命令,如下的命令可以显示详细的依赖信息,包括冲突的和重复的依赖,内容是以一颗依赖树的形式展示的,如果出现冲突,生效的是离树根近的,那个包,远的依赖包将会被忽略。
常用的正则表达式
匹配特定数字
- 整数
:^-?[1-9]d*$ - 正整数:
^[1-9]d*$ - 负整数:
^-[1-9]d*$ - 非负整数:
^[1-9]d*|0$ - 非正整数:
^-[1-9]d*|0$ - 正浮点数 :
^[1-9]d*.d*|0.d*[1-9]d*$ - 负浮点数:
^-([1-9]d*.d*|0.d*[1-9]d*)$ - 浮点数:
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ - 非负浮点数:
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ - 非正浮点数:
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$
匹配特定字符串:
- 26 个英文字母组成的字符串
^[A-Za-z]+$ - 26 个英文字母的大写组成的字符串
^[A-Z]+$ - 26 个英文字母的小写组成的字符串
^[a-z]+$ - 数字和 26 个英文字母组成的字符串
^[A-Za-z0-9]+$ - 数字、26 个英文字母或者下划线组成的字符串
^w+$ - 在使用 RegularExpressionValidator 验证控件时的验证功能及其验证表达式介绍如下:
- 只能输入数字:
^[0-9]*$ - 只能输入 n 位的数字:
^d{n}$ - 只能输入至少 n 位数字:
^d{n,}$ - 只能输入 m-n 位的数字:
^d{m,n}$ - 只能输入零和非零开头的数字:
^(0|[1-9][0-9]*)$ - 只能输入有两位小数的正实数:
^[0-9]+(.[0-9]{2})?$ - 只能输入有 1-3 位小数的正实数:
^[0-9]+(.[0-9]{1,3})?$ - 只能输入非零的正整数:
^+?[1-9][0-9]*$ - 只能输入非零的负整数:
^-[1-9][0-9]*$ - 只能输入长度为 3 的字符:
^.{3}$ - 只能输入由 26 个英文字母组成的字符串:
^[A-Za-z]+$ - 只能输入由 26 个大写英文字母组成的字符串:
^[A-Z]+$ - 只能输入由 26 个小写英文字母组成的字符串:
^[a-z]+$ - 只能输入由数字和 26 个英文字母组成的字符串:
^[A-Za-z0-9]+$ - 只能输入由数字、26 个英文字母或者下划线组成的字符串:
^w+$ - 验证用户密码:
^[a-zA-Z]w{5,17}$正确格式为:以字母开头,长度在 6-18 之间, - 只能包含字符、数字和下划线.
- 验证是否含有
^%&’,;=?$等字符:[^%&’,;=?$x22]+ - 只能输入汉字:
^[u4e00-u9fa5],{0,}$ - 验证 Email 地址:
^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$ - 验证 InternetURL:
^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$ - 验证电话号码:
^((d{3,4})|d{3,4}-)?d{7,8}$
正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX, *XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。 - 验证身份证号(15 位或 18 位数字):
^d{15}|d{}18$ - 验证一年的 12 个月:
^(0?[1-9]|1[0-2])$正确格式为:01-09 和 112 - 验证一个月的 31 天:
^((0?[1-9])|((1|2)[0-9])|30|31)$ - 正确格式为:0109 和 131。
- 中文字符的正则表达式:
[u4e00-u9fa5] - 双字节字符(包括汉字在内):
[^x00-xff] - 空行的正则表达式:
n[s| ]*r - HTML 标记的正则表达式:
/< (.*)>.*|< (.*) />/ - 首尾空格的正则表达式:
(^s*)|(s*$) - Email 地址的正则表达式:
w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* - 网址 URL 的正则表达式:
http://([w-]+.)+[w-]+(/[w- ./?%&=]*)? - 非英文单词之间的空格**
(?<![a-zA-Z])(\\s*|\t|\r|\n)(?![a-zA-Z])**
Window软件搜集
-
Sysinternals -
install4JJava 安装包制作工具 -
FastStone Capture 6.9 name:bluman serial/序列号/注册码:VPISCJULXUFGDDXYAUYF
-
Git Extensions -
Scoop: powershell 中的包管理器,安装过程https://github.com/lukesampson/scoop 安装步骤:Set-ExecutionPolicy RemoteSigned -scope CurrentUser设置脚本安装的权限iex (new-object net.webclient).downloadstring('https://get.scoop.sh')下载安装 scoopscoop install <software>安装软件scoop install sudoscoop install colortoolscoop install hugo
-
microsoft/terminal微软家的新的命令行 (https://github.com/microsoft/Terminal.git)
Linux软件搜集
timeshift
这个是一个 Ubuntu 下的系统备份软件,这个软件基于 rsync 命令
sudo apt-add-repository -y ppa:teejee2008/ppa
sudo apt update
sudo apt install timeshiftvariety
这个是一个 Ubuntu 下的自动更换壁纸的软件
sudo add-apt-repository ppa:peterlevi/ppa
sudo apt-get update
sudo apt-get install variety variety-slideshowPsensor 温度监控软件
sudo apt install psensorvirt-manager KVM 的图形化管理界面
Lutris
Linux 中的游戏库管理。
Java类加载机制
类的生命周期

加载
在加载阶段,虚拟机主要完成以下三件事
- 通过一个类的全限定名获取定义此类的二进制字节流。
- 将二进制字节流代表的静态存储结构转换为方法区(hotspot 是把 class 对象存放在方法区中的)的运行时数据结构。
- 生成这个类的
java.lang.Class的对象。
验证
确保 Class 文件中的字节流中办函的信息符合当前虚拟机的要求,并且不会危害虚拟机自身的安全。这个阶段大致会验证以下 4 个部分。
