业务
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
|
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()