Netty 进阶
Netty 进阶1. 粘包与半包1.1 粘包现象服务端代码 12345678910111213141516171819202122232425262728293031323334353637383940414243444546public class HelloWorldServer { static final Logger log = LoggerFactory.getLogger(HelloWorldServer.class); void start() { NioEventLoopGroup boss = new NioEventLoopGroup(1); NioEventLoopGroup worker = new NioEventLoopGroup(); try { ServerBootstrap serverBootstrap = new ServerBootstrap(); serverBootstrap.channel(NioServe...
MySQL 函数和 SQL 记录(长期)
摘自小骨格子屋的 mysql中的instr()函数的用法 想要在字符串中查找某字符串可以使用instr()函数 instr()返回子字符串在字符串中首次出现的位置;如果没有找到,则返回0 用法:123str:从哪个字符串中搜索substr:要搜索的子字符串instr()函数不区分大小写 mysql instr()函数示例:1如图,在abcd字符串中查找是否含有字符串b,返回的字符串位置是2. 说明instr()函数返回的位置是从1开始的,如果找不到则返回0 查找字符串中包含“民”的记录 instr()函数与like运算符 在没有索引的情况下,instr()函数与like运算符的速度是一样的;在具有前缀搜索的LIKE运算符下,使用like运算符速度会更快一些 SUBSTRING(s,n,len) MySQL 中获取子串函数 SUBSTRING(s,n,len) 带有 len 参数的格式,从字符串 s 返回一个长度同 len 字符相同的子字符串,起始于位置 n。 也可能对 n 使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的第 n 个字符,即倒数第 n 个字符,...
MySQL 中 EXPLAIN 结果的参数详解
MySQL中EXPLAIN结果的参数详解 explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。 EXPLAIN 列的解释: select_type SIMPLE:简单的 SELECT,不使用 UNION 或者子查询。 PRIMARY:最外层 SELECT。 UNION:第二层,在 SELECT 之后使用了 UNION。 DEPENDENT UNION:UNION 语句中的第二个 SELECT,依赖于外部子查询。 UNION RESULT:UNION 的结果。 SUBQUERY:子查询中的第一个 SELECT。 DEPENDENT SUBQUERY:子查询中的第一个 SELECT,取决于外面的查询。 DERIVED:导出表的 SELECT(FROM 子句的子查询) table显示这一行的数据是关于哪张表的。 type这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型:const、eq_ref、ref、range、index 和 ALL。 Type:告诉我们对表使用的访问方式,主要包含如下几种类型: ...
MySQL EXPLAIN 之 UsingTemporary 和 UsingFilesort 解决案例
首先查看explain执行计划,让主要查询语句使用索引,索引type级别最好达到ref | ref_eq级别 其次将extra一栏的Using temporary(临时表)、Using filesort(文件排序)拖出去砍了 第一条语句 123explain select * from tb_wm_shop where is_delete != 1 and is_authentication = 1 ORDER BY create_time DESC 大家应该知道使用order by的 字段要使用索引,这条语句中create_time已经创建了索引,但是计划中并没有使用该索引,导致出现了Using filesort文件排序,使其查询变慢 解决方法如下: 从where条件开始,依照顺序创建一个组合索引,就可以砍掉Using filesort这个令人讨厌的头颅了 注意:必须依照顺序,在创建组合索引时,where条件的字段在orderBy的字段之前,如果orderBy是多字段,则必须依照顺序创建 详情可参考链接:https://blog.csdn.net/dingxingmei...
MySQL 数据备份与恢复
备份 - 从数据库导出数据:格式:mysqldump -h链接ip -P(大写)端口 -u用户名 -p密码数据库名 > d:XX.sql(路径) 示例:mysqldump -h132.72.192.432 -P3307 -uroot -p8888 htgl > bak.sql 备份导出示例:1、导出数据和表结构——将特定数据库特定表中的数据和表格结构和数据全部返回 1mysqldump --u b_user -h 101.3.20.33 -p'H_password' -P3306 database_di up_subjects > 0101_0630_up_subjects.sql 2、导出表结构却不导出表数据——只返回特定数据库特定表格的表格结构,不返回数据,添加“-d”命令参数 1mysqldump --u b_user -h 101.3.20.33 -p'H_password' -P3306 -d database_di up_subjects > 0101_0630_up_subjects.sql ...
MySQL 5.7 安装
MySQL5.7docker安装mysql docker pull mysql:5.7 123456docker run -p 3306:3306 --name mysql \-v /mydata/mysql/log:/var/log/mysql \-v /mydata/mysql/data:/var/lib/mysal \-v /mydata/mysql/conf:/etc/mysql \-e MYSQL_ROOT_PASSWORD=root \-d mysql:5.7 vi /mydata/mysql/conf/my.cnf 1234567891011[client]default-character-set=utf8[mysql] default-character-set=utf8[mysqld]init_connect='SET collation_connection=utf8_unicode_ci'init_connect='SET NAMES utf8'characte...
MySQL 命令行各个参数解释
http://blog.51yip.com/mysql/1056.html mysql命令行各个参数解释123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081Usage: mysql [OPTIONS] [database] //命令方式 -?, --help //显示帮助信息并退出 -I, --help //显示帮助信息并退出 --auto-rehash //自动补全功能,就像linux里面,按Tab键出提示差不多,下面有例子 -A, --no-auto-rehash //默认状态是没有自动补全功能的。-A就是不要自动补全功能 -B, --batch //ysql不使用历史文件,禁用交互 (Enables --silent) --c...
MySQL 导入导出
导入导出csv文件 常用参数 12345常用参数(导入和导出的常用参数一致):FIELDS TERMINATED BY ',':指定字段分隔符OPTIONALLY ENCLOSED BY '"':认为双引号中的是一个独立的字段。Excel 转 CSV 时,有特殊字符(逗号、顿号等)的字段,会自动用双引号引起来LINES TERMINATED BY '\n':指定行分隔符,默认'\n'。注意,在 Windows 平台上创建的文件,分隔符是 '\r\n' 先检查是否开启允许导入 1show variables like '%secure%'; 导入12345678LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE db2.my_table;LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE db2.my_table FIELDS TER...
利用 Python 脚本进行 MySQL 数据库(表)传输
Usage Example: 1234567Copy 整个 database:python mysql_transfer.py --src-host=127.0.0.1 --src-user=root --src-password=123 --src-db=源db \ --tgt-host=127.0.0.1 --tgt-user=root --tgt-password=456 --tgt-db=目标dbCopy 指定 tables:python mysql_transfer.py --src-host=127.0.0.1 --src-user=root --src-password=123 --src-db=源db \ --tgt-host=127.0.0.1 --tgt-user=root --tgt-password=456 --tgt-db=目标db --tables source_table1:target_table1 source_table2:target_table2 Python Script(mysql_transfer.py): 12345678...
MySQL 数据库设计规范
数据库设计基本规范数据库 采用InnoDB引擎,禁用其他类型引擎 采用utf8mb4字符集 只允许访问所属数据库,禁止跨库访问 禁止临时任务表长期存在于数据库中 创建数据库/表的时候,还要对排序规则进行审查: 需要区分特殊字符:默认的general_ci 更快,但是unicode_ci 更准确,utf8mb4_general_ci中S=ß,而utf8mb4_unicode_ci中ss=ß ,这种情况unicode_ci能准确判断(参考:http://mysql.rjweb.org/utf8mb4_collations.html) 大小写敏感:默认的general_ci大小写不敏感,utf8mb4_unicode_ci大小写不敏感,但utf8mb4_bin 大小写敏感 表/列/索引命名 全部采用英文单词小写,单词间下划线分割,禁用拼音 表明中包含的单词采用单数,禁用复数 表名以**业务名称_**开头, 列名以表名**业务名称_xxx的xxx**开头,(除了逻辑删除列、创建时间、更新时间和关联其他表的列之外所有属于本表的基本字段...
