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

lihuu's blog

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既可以回退版本,也可以把暂存区的修改回退到工作区。

Eslint 使用

ESLint

ESLint 是一种静态代码分析工具,用于识别 JavaScript 代码中存在的有问题的模式,可以帮助我们写出语法正确,风格统一的代码。

安装以及使用 ESLint

  1. 我们可以使用 npm 来安装 ESLint,运行npm install eslint --save-dev命令安装 ESlint。
  2. 在项目根目录运行./node_modules/.bin/eslint --init命令进行初始化操作,初始化的时候根据命令的提示输入一些基本的设置,确认后会在项目的根目录下面生成一个名字为.eslintrc.*(这个在初始化的时候可以选择不同的文件格式,json 或者 yaml 都是可以的)的配置文件。如下图所示
    /img/1566699279433.png
  3. 安装配置完成之后就可以直接使用了,可以在任何的文件目录或者文件上运行 ./node_modules/.bin/eslint yourfile.js

上述的使用只是在本地安装了 eslint,当然我们完全可以把这货安装成全局的,使用npm install -g eslint,但是呢,全局安装的 eslit 在执行的时候,使用的插件和配置文件还是优先读取本地的,如果在~/目录中存在配置文件,只有在 eslint 没有读取到任何的配置文件的时候才会去读取这里的文件。

搜狗输入法 for Linux

安装搜狗输入法

以 manjaro 系统为例

  1. 添加科大的软件源 sudo vim /etc/pacman.conf在文件中添加如下的内容
[archlinuxcn]
SigLevel = Optional TrustedOnly
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch

执行sudo pacman -Syy && sudo pacman -S archlinuxcn-keyring导入 GPG key。 2. 执行如下的命令安装搜狗输入法

  sudo pacman -S fcitx-im
  sudo pacman -S fcitx-configtool
  sudo pacman -S fcitx-sogoupinyin
  1. ~/.xprofile文件添加如下的内容
 export GTK_IM_MODULE=fcitx
 export QT_IM_MODULE=fcitx
 export XMODIFIERS="@im=fcitx"

Linux 搜狗输入发异常

  1. 关掉状态不正常的输入法框架相关的进程。
    killall fcitx
    killall sogou-qimpanel
    关掉状态不正常的搜狗拼音输入法相关的进程。
  2. 重启 fcitx 进程。
    fcitx &
  3. 重启 搜狗拼音输入法 进程。
    sogou-qimpanel &

简单的shell脚本

1.第一个 shell 脚本

#!/bin/bash
#This is my first shell script
date
who

这是我们的第一个 shell 脚本,它的功能是打印系统的当前时间和当前用户,我们使用#号来表示注释。但是 shell 脚本的第一行是一个例外,#!告诉 shell 用哪个 shell 来运行脚本,此处我们是使用 bash shell

2.编写一个脚本来获取当前用户环境变量

#!/bin/bash
#dispaay user information from the system
echo "User info for userid: $USER"
echo UID :$UID
echo HOME:$HOME

3. 编写一个脚本来使用用户变量

#!/bin/bash
#testing varibles
days=10
guest="Katie"
echo "$guest checked in $days days ago"

4.脚本中的反引号的使用

反引号中的内容表示命令本身,反引号允许你将 shell 命令的输出复制给变量。