https://avatars.githubusercontent.com/u/18242685

lihuu's blog

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

  • install4J Java 安装包制作工具

  • FastStone Capture 6.9 name:bluman serial/序列号/注册码:VPISCJULXUFGDDXYAUYF

  • Git Extensions

  • Scoop : powershell 中的包管理器,安装过程https://github.com/lukesampson/scoop 安装步骤:

    1. Set-ExecutionPolicy RemoteSigned -scope CurrentUser设置脚本安装的权限
    2. iex (new-object net.webclient).downloadstring('https://get.scoop.sh') 下载安装 scoop
    3. scoop install <software>安装软件
      • scoop install sudo
      • scoop install colortool
      • scoop 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 timeshift

variety

这个是一个 Ubuntu 下的自动更换壁纸的软件

sudo add-apt-repository ppa:peterlevi/ppa
sudo apt-get update
sudo apt-get install variety variety-slideshow

Psensor 温度监控软件

sudo apt install psensor

virt-manager KVM 的图形化管理界面

Lutris

Linux 中的游戏库管理。

Java类加载机制

类的生命周期

/img/1574335938992.png

加载

在加载阶段,虚拟机主要完成以下三件事

  1. 通过一个类的全限定名获取定义此类的二进制字节流。
  2. 将二进制字节流代表的静态存储结构转换为方法区(hotspot 是把 class 对象存放在方法区中的)的运行时数据结构。
  3. 生成这个类的java.lang.Class的对象。

验证

确保 Class 文件中的字节流中办函的信息符合当前虚拟机的要求,并且不会危害虚拟机自身的安全。这个阶段大致会验证以下 4 个部分。

Electron实例代码

Electron 实例代码

以下是一些比较实用的Electron的代码。

为应用程序添加右键菜单

这段代码应该添加到 html 中的页面中

<script>
const { remote } = require('electron');
const { Menu, MenuItem } = remote;

const menu = new Menu();
menu.append(new MenuItem({ label: 'MenuItem1', click() { console.log('item 1 clicked') } }));
menu.append(new MenuItem({ type: 'separator' }));
menu.append(new MenuItem({ label: 'MenuItem2', type: 'checkbox', checked: true }));

window.addEventListener('contextmenu', (e) => {
  e.preventDefault();
  menu.popup({ window: remote.getCurrentWindow() });
}, false);
</script>

限制只能运行一个实例的代码

限制只能运行一个实例,需要用到 Electron 的 app.requestSingleInstanceLock()方法, 此方法的返回值表示我们的应用程序实例是否成功取得了锁。 如果它取得锁失败,则可以认为已经有一个实例获取了锁,并且正在运行,我们可以使用 app.quit() 方法立即结束当前实例的运行。 调用 app.requestSingleInstanceLock()方法,会触发前一个实例(如果存在前一个实例)的second-instance事件,我们可以在这个事件里面做点什么,例如激活前一个实例的窗口并获取焦点,示例代码如下

Spring boot 集成log4j2

关于日志的级别

log4j2 总共有 8 个级别, 按照从低到高为:ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF

 ThresholdFilter:
        level: info
        onMatch: ACCEPT #表示匹配该级别及其以上的级别
        onMismatch: DENY#表示不匹配该级别以下的级别

onMatch=“ACCEPT"匹配>=该级别; onMatch=“DENY"不匹配>=该级别;

git 使用

撤销工作区中的修改

git checkout -- file

这里表示的是将指定的文件在工作区的修改全部撤销,由于只是撤销工作区中的内容,暂存区中的内容是不受影响的。

  • 如果文件没有被添加到暂存区,则撤销修改就会回到和版本库一样的状态。
  • 如果文件已经添加到暂存区,撤销修改就会回到添加到暂存区后的状态。

撤销暂存区中的修改

git reset HEAD file

git reset既可以回退版本,也可以把暂存区的修改回退到工作区。