0%

MySQL权限

mysql的权限存储在mysql库的user, db, tables_priv, columns_priv, procs_priv这几个系统表中

表结构

user表

存放用户账户信息以及全局级别(所有数据库)权限,决定了来自哪些主机的哪些用户可以访问数据库实例,如果有全局权限则意味着对所有数据库都有此权限

阅读全文 »

CPU飙升

常见原因

  • 频繁gc
  • 死循环、线程阻塞、io等待等

问题查找

  • 首先应该定位cpu占用最高的进程(找到pid)

    1
    top
  • 然后根据pid来找到使用cpu最高的线程

    1
    top -Hp pid

    或者使用

    1
    ps -mp pid -o THREAD,tid,time
  • 将线程id转为十六进制

    1
    printf '0x%x' tid
  • 找到该线程的堆栈信息

    1
    jstack pid | grep 十六进制tid -A 200

    根据堆栈信息找到业务代码所处的位置查看问题

Timer的使用

Timer是java中提供的定时任务调度,

在不使用第三方工具包的情况下可以使用Timer来实现定时器,不过Timer中提供的功能较少

Timer中的方法并不多

TimerTask

TimerTask实现Runnable接口

1
2
3
public abstract class TimerTask implements Runnable{

}

虽然TimerTask类实现了Runnable接口,但是该类并没有作为一个线程来使用,run方法只是作为一个普通的方法进行调用的

阅读全文 »

lombok常用注解

lombok依赖

1
2
3
4
5
6
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
阅读全文 »

linux下端口映射

1. 允许数据包转发

1
2
3
echo 1 >/proc/sys/net/ipv4/ip_forwardiptables -t nat -A POSTROUTING -j MASQUERADEiptables -A FORWARD -i [内网网卡名称] -j ACCEPTiptables -t nat -A POSTROUTING -s [内网网段] -o [外网网卡名称] -j MASQUERADE
# 例:
echo 1 >/proc/sys/net/ipv4/ip_forwardiptables -t nat -A POSTROUTING -j MASQUERADEiptables -A FORWARD -i ens33 -j ACCEPTiptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o ens37 -j MASQUERADE

2. 设置端口映射

1
2
3
iptables -t nat -A PREROUTING -p tcp -m tcp --dport [外网端口] -j DNAT --to-destination [内网地址]:[内网端口]
# 例:
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 6080 -j DNAT --to-destination 10.0.0.100:6090

如果需要永久配置,则将以上命令追加到/etc/rc.local文件