业务

SQL卡住了怎么办

1
SELECT * FROM information_schema.innodb_trx;

查看运行中的事务(重点关注长时间运行的事务)

然后KILL 线程id(trx_mysql_thread_id)即可

新建SQL

拥抱 docker desktop 的gui

(MySQL 5.7+ 引入的 X Protocol (X Plugin),提供了一个33060的端口,采用protobuf标准)

  • 去images下一个MySQL
  • 配置端口,采用3306,33060相同对应MySQL的端口,本地也没有占用这两个
  • 然后持久化,挂载目录,如果删除容器后数据不需要了也无所谓,但是如果数据有转移到其它容易的打算的话还是挂载一下。Host path是自己的电脑目录,Container path是/var/lib/mysql(默认存储位置,可以通过*–datadir*来更改)
  • 然后MySQL必须要有一个初始密码才行,通过在下面的环境变量设置MYSQL_ROOT_PASSWORD即可。

下面使用DBeaver,一个开源的Java数据库管理软件来进行操作。

添加管理员用户

1
2
3
4
5
6
7
8
-- 先创建用户(% 表示允许任意主机登录)
CREATE USER 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD';

-- 再授予权限(WITH GRANT OPTION 用于允许它授予别人权限可选)
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' (WITH GRANT OPTION);

-- 刷新权限
FLUSH PRIVILEGES;
1
2
3
会发现提示
'FLUSH PRIVILEGES' is deprecated and will be removed in a future release.
MySQL 8.0+ 创建用户、授权  不需要 FLUSH PRIVILEGES

然后创建一个数据库

1
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

字符集,和字符串比较规则。

vo getter

原本以为没什么用,结果序列化的时候是用getter来序列化的,悲

outdated

用于与先进生产力不符的落后面试的刷题知识点。(其实是离开ide补全java一长串谁能背下来)

获取原始数组的长度(不是cpp的size)

1
2
3
4
int [] nums;
int n = nums.length;
str.length(); // 字符串
list.size(); // 集合 (List/Map/Set)

遍历字符串

1
2
for (char c : str.toCharArray()) {
}

字符串访问

1
str.charAt(i)

对数组哈希

1
Arrays.hashCode(array);

排序

1
2
3
Arrays.sort(nums);
Arrays.sort(nums, (a, b) -> b - a);
Collections.sort(list);

map经典操作

1
2
3
4
5
map.computeIfAbsent(key, value);
mp.merge(key, 1, Integer::sum); // 如果 key 不存在,存入 1;如果存在,将旧值与 1 相加。
mp.getOrDefault(c, 0);
mp.put(c, 1);
mp.containsKey(key);

大小

1
2
Math.max(a, b);
Math.min(a, b);

自定义类的大小,compareTo 负数为小于,零是等于,正数是大于

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
class P implements Comparable<P> {
    Integer val;
    Integer idx;

    P (Integer a, Integer b) {
        this.val = a;
        this.idx = b;
    }

    @Override
    public int compareTo(P b) {
        if (val == b. val) return b.idx - idx;
        return  b.val - val;
    }

集合的增删改查:add, remove, set, get, indexOf

队列特殊:

入队: offer(e) (常用) / add(e)

出队: poll() (常用,空时返回 null) / remove()

看队首: peek() (常用) / element()