心安

【置顶】常见问题汇总

字数统计: 1.2k阅读时长: 4 min
2019/05/14 Share

一、Java 框架使用相关问题汇总

Spring Boot 框架相关问题

- 嵌套表单内层表单校验不生效

例子:

服务端:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@PostMapping("/test")
public ResultJson test(@RequestBody @Valid SampleForm form){}

@Data
public class SampleForm {
@NotEmpty
private String abc;

@NotNull
// @Valid
private FixMe fixMe;
}

@Data
public class FixMe {
@NotEmpty
private String str;
}

客户端:

1
2
3
4
5
6
{
"abc": "test",
"fixMe": {
// 如果没有加 @Valid 注解,这里不传递 str 参数,是可以通过参数校验的
}
}

可以看到,客户端传递的fixMe对象里面没有str参数,客户端限制了这个参数是必须的,如果只在最外层对象上面加@Valid注解,不在fixMe字段上面加@Valid注解,内层校验无效。

二、工具类问题汇总

git 相关问题

- git 设置代理

即使使用了 vpn,但是从 github 克隆项目还是很慢,这是因为 git 没有走代理,具体原理我不懂,只提供解决方案,进行如下设置:

1
2
3
4
5
6
7
8
9
# 全局代理,设置之后不管仓库在哪个域,都走代理
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'

# 只对 github 进行代理,设置之后只有克隆 github 的项目才会走代理
git config --global http.https://github.com.proxy socks5://127.0.0.1:1080

# 取消代理
git config --global --unset http.https://github.com.proxy

如果不生效,请检查 ss 监听的本地端口。参考:

Git 设置和取消代理

git 设置和取消代理

Idea 相关问题

- idea debug

https://www.cnblogs.com/chiangchou/p/idea-debug.html

三、Linux

Linux 相关问题

- SSH 远程登录

使用用户名密码登录远程服务器每次都需要输入密码,很麻烦而且安全性难以得到保证,最好的方式是 SSH 的方式来登录。

假设本地当前用户为local,远程用户为remote,服务器 ip 为\,则本地连接远程用户的过程分为以下四步:

  1. 在本地生成密钥

    这一步会在当前用户目录下生成公钥和私钥,注意私钥很重要,不能暴露,公钥无所谓。在本地命令行执行以下命令:

    1
    ssh-keygen -t rsa

    所有的配置使用默认的就可以,直接一路回车。完成后会发现用户目录(用户目录可以用~代替)下多了一个.ssh文件夹,里面有两个文件,分别是id_rsaid_rsa.pub文件,前者为私钥,后者为公钥。

  2. 上传公钥到服务器

    执行以下命令,~代表用户目录:

    1
    scp ~/.ssh/id_rsa.pub remote@<ip>:~/.ssh
  3. 把公钥加入到服务器的验证文件中

    执行以下命令:

    1
    cat ~/.ssh/id_rsa.pub >> authorized_keys
  1. 使用 SSH 免密登录

    都这里就配置好了,直接使用以下命令就可以直接登录远程服务器:

    1
    ssh remote@<ip>

    这样登录会出现以下警告:

    1
    2
    3
    4
    5
    The authenticity of host 'ip' can't be established.
    ECDSA key fingerprint is SHA256:EsqTfeCJ34DnGV66REuRRPhoFwaLe5wxFgEAZ8b9k.
    Are you sure you want to continue connecting (yes/no)?
    Host key verification failed.
    lost connection

    连接的时候增加一个参数消除警告,以后连接就不需要这个参数了:

    1
    ssh -o StrictHostKeyChecking=no sample2@<ip>

如果觉得每次输入的东西还是太多了,比如每次都要输用户名,每次都要输入 ip,还是很麻烦,可以配置快捷登录:

.ssh目录下新建config文件,并增加以下内容:

1
2
3
4
5
6
7
vi ~/.ssh/config
# 输入以下内容
Host <sample>
HostName <远程服务器域名或ip>
User <登录的用户名>
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa

其中sample自定义,HostName填写 ip 或者域名都可以,这样我们可以通过别名来登录:

1
ssh sample

- nohup 的使用

在 linux 系统下运行命名,结果会直接显示在控制台上,使用 nohup可以将日志追加到文件中。基本使用:末尾的&表示让命令后台运行。

1
nohup [command] &

从尾部查看 nohup.out:

1
tail -f 50 nohup.out

- 获取脚本所在的路径

运行一个脚本的时候,通常需要获取这个脚本所在的目录位置,可以通过以下命令得到。

1
work_path=$(dirname $(readlink -f $0))

- 使用lsof命令查看端口占用情况

查看端口占用的命令有很多,不过 lsof应该算是最好用的一个。通常情况下,启动了一个进程,这个进程监听了某个端口,想要结束这个进程可以用下面的命令:

1
lsof -i :[port]

这个命令的结果会显示端口占用的进程号,使用 kill 命令杀死这个进程就行了。

1
kill -9 [pid]

- 使用 ps命令查看进程

ps 是查看所有进程的命令,可以通过和 grep 命令进行筛选,如下:

1
ps -ef | grep java

上面的命令可以查找到 “java” 相关的进程,同样的使用上面的命令杀死进程即可。

原文作者:XinAnzzZ

原文链接:https://www.yuhangma.com/2019/2019-05-14-常见问题汇总/

发表日期:May 14th 2019, 12:00:00 am

更新日期:September 26th 2019, 10:46:42 am

版权声明:(转载本站文章请注明作者和出处 心 安 – XinAnzzZ ,请勿用于任何商业用途)

CATALOG
  1. 1. 一、Java 框架使用相关问题汇总
    1. 1.1. Spring Boot 框架相关问题
      1. 1.1.1. - 嵌套表单内层表单校验不生效
  2. 2. 二、工具类问题汇总
    1. 2.1. git 相关问题
      1. 2.1.1. - git 设置代理
    2. 2.2. Idea 相关问题
      1. 2.2.1. - idea debug
  3. 3. 三、Linux
    1. 3.1. Linux 相关问题
      1. 3.1.1. - SSH 远程登录
      2. 3.1.2. - nohup 的使用
      3. 3.1.3. - 获取脚本所在的路径
      4. 3.1.4. - 使用lsof命令查看端口占用情况
      5. 3.1.5. - 使用 ps命令查看进程