动态规划
- 343整数拆分
class Solution {
public int integerBreak(int n) {
int dp [] = new int [n + 1];
//dp[i]:正整数i拆分后的最大乘积
dp[2] = 1;
for(int i = 2;i <= n ;i ++){
for(int j = 1;j < i;j ++){
dp[i] = Math.max(dp[i],Math.max(j * (i - j),j * dp[i - j]));
}
}
return dp[n];
}
}
- 96. 不同的二叉搜索树 - 力扣(LeetCode)
class Solution {
public int numTrees(int n) {
int dp [] = new int [n + 1];
//dp[i] : i个节点组成的二叉搜索树种类。
//规律: 当n = 1 sub = 1种 单独一个
// n = 2 sub = 2种 左斜 + 右斜
// n = 3 sub = 5种 1开头:dp[0] (1种) * dp[2] (2种) 2
// 2开头:dp[1] (1种) * dp[1] (1种) 1
// 3开头:dp[2] (2种) * dp[0] (1种) 2
dp[0] = 1;
dp[1] = 1;
for(int i = 2; i <= n;i ++){
for(int j = 1; j <= i; j ++){
dp[i] += dp[i - j] * dp[j - 1];
}
}
return dp[n];
}
}
MySQL
整理重点章节
第二章:MySQL的数据目录
MySQL8的主要目录结构
使用命令:find / -name mysql 来查看目录结构。
-
数据库文件的存放路径
/var/lib/mysql/
-
相关命令目录
/usr/bin**(mysqladmin、mysqlbinlog、mysqldump等命令)和/usr/sbin。
-
配置文件目录
/usr/share/mysql-8.0(命令及配置文件),/etc/mysql(如my.cnf)
数据库和文件系统的关系
-
四个系统自带数据库
mysql、information_schema、performance_schema、sys
-
数据库在文件系统中的表示
-
表在文件系统中的表示(InnoDB存储引擎模式)
.frm 描述表结构,字段长度等信息。
.ibd 文件就用来存储表中的数据和索引。
-
MySQL5.7 中会在data/a的目录下生成 db.opt 文件用于保存数据库的相关配置。比如:字符集、比较规则。而MySQL8.0不再提供db.opt文件。
-
MySQL8.0中不再单独提供b.frm,而是合并在b.ibd文件中。
第三章:用户与权限管理
用户管理
-
登录MySQL服务器
mysql –h hostname|hostIP –P port –u username –p DatabaseName –e "SQL语句"
举例:
mysql -uroot -p -hlocalhost -P3306 mysql -e "select host,user from user"
-
创建/修改/删除用户
创建用户:
CREATE USER 用户名 [IDENTIFIED BY '密码'][,用户名 [IDENTIFIED BY '密码']];
修改用户:
UPDATE mysql.user SET USER='li4' WHERE USER='wang5'; FLUSH PRIVILEGES;
删除用户:
DROP USER user[,user]…;
-
设置/修改密码
设置密码:
ALTER USER USER() IDENTIFIED BY 'new_password';
修改密码:
ALTER USER user [IDENTIFIED BY '新密码'] [,user[IDENTIFIED BY '新密码']]…;
权限管理
- 查看权限:
show privileges;
(1) CREATE和DROP权限 ,可以创建新的数据库和表,或删除(移掉)已有的数据库和表。如果将MySQL数据库中的DROP权限授予某用户,用户就可以删除MySQL访问权限保存的数据库。
(2)SELECT、INSERT、UPDATE和DELETE权限 允许在一个数据库现有的表上实施操作。
(3) SELECT权限只有在它们真正从一个表中检索行时才被用到。
(4) INDEX权限 允许创建或删除索引,INDEX适用于已有的表。如果具有某个表的CREATE权限,就可以在CREATE TABLE语句中包括索引定义。
略…
-
授予权限
GRANT 权限1,权限2,…权限n ON 数据库名称.表名称 TO 用户名@用户地址 [IDENTIFIED BY ‘密码口令’];
权限表
-
user表
user表是MySQL中最重要的一个权限表, 记录用户账号和权限信息 ,有49个字段。
-
db表
查看表结构:
DESCRIBE mysql.db;
有用户列和权限列,权限列字段决定用户是否具有创建和修改存储过程的权限。
-
tables_priv表和columns_priv表
tables_priv表用来 对表设置操作权限 ,columns_priv表用来对表的 某一列设置权限 。
-
procs_priv表
procs_priv表可以对 存储过程和存储函数设置操作权限
角色管理
引入角色的目的是 方便管理拥有相同权限的用户 。恰当的权限设定,可以确保数据的安全性,这是至关重要的。
- 创建角色/赋予权限/查看权限/回收权限/删除角色等操作见开发文档。
Linux
学习Linux命令