/images/avatar.jpg

雨临Lewis的博客

Windows下完全卸载node.js并安装node.js的多版本管理工具nvm-windows

前言

由于高版本的node.js导致gulp执行build命令失败,我需要在Windows下卸载掉已有的node.js并安装一个多版本管理工具nvm-windows,方便切换不同版本的node.js。

nvm是Linux下常用的一个node.js多版本管理工具,但是nvm不能在Windows下使用,在GitHub上有个项目叫nvm-windows,可以让我们在Windows下对node.js进行多版本管理。

执行gulp build报错

问题与分析

在执行gulp build报错如下:

1
2
3
4
5
6
D:\coding\Resume\Resumes>gulp build
gulp build[5628]: src\node_contextify.cc:628: Assertion `args[1]->IsString()' failed.

D:\coding\Resume\Resumes>gulp -v
[22:00:13] CLI version 2.0.1
[22:00:13] Local version 3.9.1

Eclipse问题汇总

常用的快捷键

ctrl + shift + r 查找工作空间内的文件,不包括Jar包内的文件

ctrl + shift + t 查找工作空间内的文件,包括Jar包内的文件

ctrl + o 查看当前类的所有方法

ctrl + e 快速切换编辑器,在打开了非常多的文件时会很便利

ctrl + / 单行注释或多行注释或取消注释

Windows下MySQL8.0.13解压版安装教程

下载

MySQL8.0.13-64位下载地址

在下载页面的底部,有三种安装包,第一种是MySQL的安装程序,下载完点击安装即可。 第二种是普通的压缩版,体积较小。 第三种是自带debug和测试的压缩版,体积较大。这种压缩包在网上暂时没有找到对应的安装文档说明,所以建议下载第二种压缩包,也就是普通版本的MySQL压缩包。

Git问题汇总

初次配置用户名和邮箱

Git在push时需要使用到user.name和user.email,一般通过命令来进行配置或修改。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
//查看user.name
git config user.name

//查看user.email
git config user.email

//配置user.name
git config --global user.name "your user name"

//配置user.email
git config --global user.email "your user email"

Log4j2 - 动态生成Appender

功能需求

项目里将User分成了各个区域(domain),这些domain有个标志domainId,现在要求在打印日志的时候,不仅将所有User的日志都打印到日志文件logs/CNTCore.log中,还需要另外再打印到对应domain的日志文件logs/{domainId}/CNTCore.log

比如User A的domainId是RD2,那么除了logs/CNTCore.log外,还需要将该User A的日志额外打印到logs/RD2/CNTCore.log中。

实现思路

将所有User的日志都打印到日志文件logs/CNTCore.log中,这个可以直接使用配置文件log4j2.xml来解决,一个简单的配置如下:

升级Log4j到Log4j2报错:cannot access org.apache.http.annotation.NotThreadSafe

问题与分析

今天把项目的log4j的依赖改成了log4j2的依赖后,发现使用Maven打包时报错如下:

1
2
3
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project cbx-core: Compilation failure
[ERROR] cannot access org.apache.http.annotation.NotThreadSafe
[ERROR] class file for org.apache.http.annotation.NotThreadSafe not found

Log4j和Log4j2怎么动态加载配置文件

应用场景与问题

当项目在运行时,我们如果需要修改log4j 1.X或者log4j2的配置文件,一般来说我们是不能直接将项目停止运行再来修改文件重新部署的。于是就有这样一个问题:如何在不停止当前项目的运行的情况下,让系统能够自动地监控配置文件的修改状况,从而实现动态加载配置文件的功能?而log4j 1.X和log4j2的差别略大,各自应该怎么实现这个功能?

Log4j2中LevelRangeFilter的注意点

LevelRangeFilter的注意点

在log4j2中,LevelRangeFilter的minLevel,maxLevel的配置是和log4j 1.x相反的;minLevel需要配置的是高级别,maxLevel配置的是低级别,如下:

1
<LevelRangeFilter minLevel="fatal" maxLevel="info" onMatch="ACCEPT" onMismatch="DENY"/>

如上边的配置,是打印info到fatal级别的log,如果配置反过来,则不会输出任何log。

如果不配置minLevel、maxLevel、onMatch和onMismatch的值,则会为其设置默认值,在LevelRangeFilter中的源码实现如下: