关于性别字段的存储数据类型选用

-- 性别字段
create table actor2 (id int not null auto_increment primary key,name char(32) not null,
gender char(32) default '男' check (gender in ('女','男')),
ac_id int,constraint actor_school foreign key (ac_id) references school (id) ); -- 一般我们的性别字段都是这样设置,使用bit数据类型存储
alter table student modify gender bit default 1; -- 这就完成了只能输入两个值的设定,只能输入两个值,0,1否则都不生效

创建表的时候用原生sql写外键关联

create table school (id int primary key ,name char(32) not null,sc_id int not null ,-- 这里的sc-id就是我们的这个表所关联的外键的字段名
-- 在这里设置好,然后在下面这句话里面对这个字段进行关联约束,跟哪个表的哪个字段进行绑定,都在这句话里体现出来
constraint school_class FOREIGN KEY (sc_id) REFERENCES class(id));
-- alter table 表名 add constraint 约束名称 约束类型 (列名) references 被引用的表名称 (列名)
desc school;

egon笔记:

1 数值类型
整型:年龄,id,电话号
浮点型:薪资,身高,体重
float
double
decimal 2 字符类型:名字,性别,爱好
create table t10(x char(5),y varchar(5));
insert into t10 values('a','a');
mysql> select char_length(x),char_length(y) from t10;
+----------------+----------------+
| char_length(x) | char_length(y) |
+----------------+----------------+
| 1 | 1 |
+----------------+----------------+
1 row in set (0.02 sec) char
'a '
varchar
'a' alex |egon |wxx |
4alex|4egon|3wxx| 3 时间类型
datetime/timestamp(注册时间):2017-11-11 11:11:11
date(出生日期):2017-11-11
time(上课时间):11:11:11
year:2017 create table student(reg_time datetime,brith date,class_time time,born_year year);
insert into student values(now(),now(),now(),now())
insert into student values(20170301111111,'2017-03-01',111111,1999); 4 枚举与集合
enum(性别,红绿灯):多选一
set(爱好):多选多

一些常用数据类型:

#. 数字:
整型:tinyinit int bigint
小数:
float :在位数比较短的情况下不精准
double :在位数比较长的情况下不精准
0.000001230123123123
存成:0.000001230000 decimal:(如果用小数,则用推荐使用decimal)
精准
内部原理是以字符串形式去存 #. 字符串:
char():简单粗暴,浪费空间,存取速度快
root存成root000000
varchar:精准,节省空间,存取速度慢 sql优化:创建表时,定长的类型往前放,变长的往后放
比如性别 比如地址或描述信息 >255个字符,超了就把文件路径存放到数据库中。
比如图片,视频等找一个文件服务器,数据库中只存路径或url。 #. 时间类型:
最常用:datetime #. 枚举类型与集合类型

整数类型:

========================================
tinyint[(m)] [unsigned] [zerofill] 小整数,数据类型用于保存一些范围的整数数值范围:
有符号:
- ~
无符号:
~ PS: MySQL中无布尔值,使用tinyint()构造。 ========================================
int[(m)][unsigned][zerofill] 整数,数据类型用于保存一些范围的整数数值范围:
有符号:
- ~
无符号:
~ ========================================
bigint[(m)][unsigned][zerofill]
大整数,数据类型用于保存一些范围的整数数值范围:
有符号:
- ~
无符号:
=========有符号和无符号tinyint==========
#tinyint默认为有符号
MariaDB [db1]> create table t1(x tinyint); #默认为有符号,即数字前有正负号
MariaDB [db1]> desc t1;
MariaDB [db1]> insert into t1 values
-> (-),
-> (-),
-> (),
-> ();
MariaDB [db1]> select * from t1;
+------+
| x |
+------+
| - | #-129存成了-
| - | #有符号,最小值为-
| | #有符号,最大值127
| | #128存成了127
+------+ #设置无符号tinyint
MariaDB [db1]> create table t2(x tinyint unsigned);
MariaDB [db1]> insert into t2 values
-> (-),
-> (),
-> (),
-> ();
MariaDB [db1]> select * from t2;
+------+
| x |
+------+
| | -1存成了0
| | #无符号,最小值为0
| | #无符号,最大值为255
| | #256存成了255
+------+ ============有符号和无符号int=============
#int默认为有符号
MariaDB [db1]> create table t3(x int); #默认为有符号整数
MariaDB [db1]> insert into t3 values
-> (-),
-> (-),
-> (),
-> ();
MariaDB [db1]> select * from t3;
+-------------+
| x |
+-------------+
| - | #-2147483649存成了-
| - | #有符号,最小值为-
| | #有符号,最大值为2147483647
| | #2147483648存成了2147483647
+-------------+ #设置无符号int
MariaDB [db1]> create table t4(x int unsigned);
MariaDB [db1]> insert into t4 values
-> (-),
-> (),
-> (),
-> ();
MariaDB [db1]> select * from t4;
+------------+
| x |
+------------+
| | #-1存成了0
| | #无符号,最小值为0
| | #无符号,最大值为4294967295
| | #4294967296存成了4294967295
+------------+ ==============有符号和无符号bigint=============
MariaDB [db1]> create table t6(x bigint);
MariaDB [db1]> insert into t5 values
-> (-),
-> (-),
-> (),
-> (); MariaDB [db1]> select * from t5;
+----------------------+
| x |
+----------------------+
| - |
| - |
| |
| |
+----------------------+ MariaDB [db1]> create table t6(x bigint unsigned);
MariaDB [db1]> insert into t6 values
-> (-),
-> (),
-> (),
-> (); MariaDB [db1]> select * from t6;
+----------------------+
| x |
+----------------------+
| |
| |
| |
| |
+----------------------+ ======用zerofill测试整数类型的显示宽度=============
MariaDB [db1]> create table t7(x int() zerofill);
MariaDB [db1]> insert into t7 values
-> (),
-> (),
-> (),
-> ();
MariaDB [db1]> select * from t7;
+------+
| x |
+------+
| |
| |
| |
| | #超过宽度限制仍然可以存
+------+ 验证

[这里我们要补充一点,关于int整数类型的问题,一般的数据类型后面会加上长度,这里的int也可以加上长度,但是没有意义,如果有长度的话,它的意思并不是该数据所占用的内存的大小,而是在显示屏上面显示的数据大小,但是也不全是这样,如果你的sql语句写出来执行后结果会大于它锁设定的大小,那么int你所设定的大小是无法约束它的,它会把结果统统显示出来,如果小于所设定的大小,你也看不出来什么效果,除非在该字段后面加上zerofill,意为如果显示屏输出的结果小于所设定的int大小则用0来填充空余的部分,所以这里的设定是很鸡肋的功能,可以弃之不用了,没有意义]除了int类型之外,其他的数据类型所设定的大小则真的是该数据类型所占用的内存空间的大小.

小数类型:

======================================
#FLOAT[(M,D)] [UNSIGNED] [ZEROFILL] 定义:
单精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。m最大值为255,d最大值为30 有符号:
-3.402823466E+38 to -1.175494351E-38,
1.175494351E-38 to 3.402823466E+38
无符号:
1.175494351E-38 to 3.402823466E+38 精确度:
**** 随着小数的增多,精度变得不准确 **** ======================================
#DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] 定义:
双精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。m最大值为255,d最大值为30 有符号:
-1.7976931348623157E+308 to -2.2250738585072014E-308
2.2250738585072014E-308 to 1.7976931348623157E+308 无符号:
2.2250738585072014E-308 to 1.7976931348623157E+308 精确度:
****随着小数的增多,精度比float要高,但也会变得不准确 **** ======================================
decimal[(m[,d])] [unsigned] [zerofill] 定义:
准确的小数值,m是数字总个数(负号不算),d是小数点后个数。 m最大值为65,d最大值为30。 精确度:
**** 随着小数的增多,精度始终准确 ****
对于精确数值计算时需要用此类型
decaimal能够存储精确值的原因在于其内部按照字符串存储。

View Cod

float所存储的数据范围是(整数部分255,小数部分是30)到不了30位的小数它就会丢失精确度

double范围是(整数部分255,小数部分是30)同上,它也会丢失精确度,但是比上面的float精确度还是稍微高一点

decimal范围是(整数部分是65,小数部分是30)它是绝对精准的,

一般情况下float已经足够我们日常用了,有特殊要求的情况就用double和deci比特币mal

验证:

mysql> create table t1(x float(,));
ERROR (): Too big scale specified for column 'x'. Maximum is .
mysql> create table t1(x float(,));
ERROR (): Display width out of range for column 'x' (max = )
mysql> create table t1(x float(,)); #建表成功
Query OK, rows affected (0.02 sec) mysql> create table t2(x double(,)); #建表成功
Query OK, rows affected (0.02 sec) mysql> create table t3(x decimal(,));
ERROR (): Too big scale specified for column 'x'. Maximum is .
mysql> create table t3(x decimal(,));
ERROR (): Too-big precision specified for 'x'. Maximum is .
mysql> create table t3(x decimal(,)); #建表成功
Query OK, rows affected (0.02 sec) mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| t1 |
| t2 |
| t3 |
+---------------+
rows in set (0.00 sec) mysql> insert into t1 values(1.1111111111111111111111111111111); #小数点后31个1
Query OK, row affected (0.01 sec) mysql> insert into t2 values(1.1111111111111111111111111111111);
Query OK, row affected (0.00 sec) mysql> insert into t3 values(1.1111111111111111111111111111111);
Query OK, row affected, warning (0.01 sec) mysql> select * from t1; #随着小数的增多,精度开始不准确
+----------------------------------+
| x |
+----------------------------------+
| 1.111111164093017600000000000000 |
+----------------------------------+
row in set (0.00 sec) mysql> select * from t2; #精度比float要准确点,但随着小数的增多,同样变得不准确
+----------------------------------+
| x |
+----------------------------------+
| 1.111111111111111200000000000000 |
+----------------------------------+
row in set (0.00 sec) mysql> select * from t3; #精度始终准确,d为30,于是只留了30位小数
+----------------------------------+
| x |
+----------------------------------+
| 1.111111111111111111111111111111 |
+----------------------------------+
row in set (0.00 sec) 验证

日期类型:

日期类型里面存储的格式是很灵活的,我们在表格里面insert  values的时候,可以在datetime对应的值里面直接写20010101102030---这是2001,1,1,10:20:30,的意思.同样的在date对应的值里面需要加上'20101030'---意为2010,10,30,time------10-10-10(10:10:10),year(1998),

DATE TIME DATETIME TIMESTAMP YEAR

YEAR
YYYY(/) DATE
YYYY-MM-DD(--/--) TIME
HH:MM:SS('-838:59:59'/'838:59:59') DATETIME YYYY-MM-DD HH:MM:SS(-- ::/-- :: Y) TIMESTAMP YYYYMMDD HHMMSS(-- ::/ 年某时)

字符串类型:

字符串一般就是char和varchar,char是固定长度的字符串,而varchar则是可变长度的字符串

举例说明,我们在存储一个数据'a'时,使用char类型,然后设定为3,那么它存入系统里面所占用的内存大小就是3,因为'a'只是一个字符,不够达到我们要求的固定的长度,那么此时系统就会补充两个空格来填充,已达到要求的固定长度,存是这样存入的,那么我们取出数据的时候也是这样的,固定长度是3我们就不管三七二十一直接取出3个字符长度的数据出来.这就是char的特点,简单粗暴,便捷高效.唯一的缺陷就是比较占用内存空间.

varchar,我们也是存'a'这个数据,然后给varchar设定长度为3,那么我们在存入数据的时候,是存入的2个字符长度的数据,之所以这样是因为,我们的varchar主要的功能是节省内存空间,既然这样的话,我们就需要知道所存入的数据的具体长度,系统会先计算具体长度,然后把计算出来的具体长度的数字(这里就类似于网络编程里面的tcp协议的报头的概念)存入,然后再后面紧跟着真是的数据,然后取出数据的时候,我们的varchar是先把报头取出来,然后再取出真实的数据,所以过程上会比char慢一些.

所以varchar在存入的时候会比真实数据的长度多出来一位,用于存储报头,这种情况下的话,如果我们的数据刚好是所规定的长度那么就会比所规定的长度要多出一位,而且加上了计算报头的时间在里面,这样算下来的话,所占用的内存要比char多一位,同时速度还要慢一些,工作效率就远不如char了,再取出数据的时候也是这样的,先取出报头,再取出真实的数据,所以我们一般情况下还是会用char,尽量减少使用varchar,除非所存储的内容基本上不会取出来.

#官网:https://dev.mysql.com/doc/refman/5.7/en/char.html
#注意:char和varchar括号内的参数指的都是字符的长度 #char类型:定长,简单粗暴,浪费空间,存取速度快
字符长度范围:-(一个中文是一个字符,是utf8编码的3个字节)
存储:
存储char类型的值时,会往右填充空格来满足长度
例如:指定长度为10,存>10个字符则报错,存<10个字符则用空格填充直到凑够10个字符存储 检索:
在检索或者说查询时,查出的结果会自动删除尾部的空格,除非我们打开pad_char_to_full_length SQL模式(SET sql_mode = 'PAD_CHAR_TO_FULL_LENGTH';) #varchar类型:变长,精准,节省空间,存取速度慢
字符长度范围:-(如果大于21845会提示用其他类型 。mysql行最大限制为65535字节,字符编码为utf-:https://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html)
存储:
varchar类型存储数据的真实内容,不会用空格填充,如果'ab ',尾部的空格也会被存起来
强调:varchar类型会在真实数据前加1-2Bytes的前缀,该前缀用来表示真实数据的bytes字节数(-2Bytes最大表示65535个数字,正好符合mysql对row的最大字节限制,即已经足够使用)
如果真实的数据<255bytes则需要1Bytes的前缀(1Bytes=8bit **8最大表示的数字为255)
如果真实的数据>255bytes则需要2Bytes的前缀(2Bytes=16bit **16最大表示的数字为65535) 检索:
尾部有空格会保存下来,在检索或者说查询时,也会正常显示包含空格在内的内容
length:查看字节数
char_length:查看字符数
1. char填充空格来满足固定长度,但是在查询时却会很不要脸地删除尾部的空格(装作自己好像没有浪费过空间一样),然后修改sql_mode让其现出原形
mysql> create table t1(x char(),y varchar());
Query OK, rows affected (0.26 sec) #char存5个字符,而varchar存4个字符
mysql> insert into t1 values('你瞅啥 ','你瞅啥 ');
Query OK, row affected (0.05 sec) mysql> SET sql_mode='';
Query OK, rows affected, warning (0.00 sec) #在检索时char很不要脸地将自己浪费的2个字符给删掉了,装的好像自己没浪费过空间一样,而varchar很老实,存了多少,就显示多少
mysql> select x,char_length(x),y,char_length(y) from t1;
+-----------+----------------+------------+----------------+
| x | char_length(x) | y | char_length(y) |
+-----------+----------------+------------+----------------+
| 你瞅啥 | | 你瞅啥 | |
+-----------+----------------+------------+----------------+
row in set (0.00 sec) #略施小计,让char现出原形
mysql> SET sql_mode = 'PAD_CHAR_TO_FULL_LENGTH';
Query OK, rows affected (0.00 sec) #这下子char原形毕露了......
mysql> select x,char_length(x),y,char_length(y) from t1;
+-------------+----------------+------------+----------------+
| x | char_length(x) | y | char_length(y) |
+-------------+----------------+------------+----------------+
| 你瞅啥 | | 你瞅啥 | |
+-------------+----------------+------------+----------------+
row in set (0.00 sec) #char类型:3个中文字符+2个空格=11Bytes
#varchar类型:3个中文字符+1个空格=10Bytes
mysql> select x,length(x),y,length(y) from t1;
+-------------+-----------+------------+-----------+
| x | length(x) | y | length(y) |
+-------------+-----------+------------+-----------+
| 你瞅啥 | | 你瞅啥 | |
+-------------+-----------+------------+-----------+
row in set (0.00 sec)
mysql> select concat('数据: ',x,'长度: ',char_length(x)),concat(y,char_length(y)
) from t1;
+------------------------------------------------+--------------------------+
| concat('数据: ',x,'长度: ',char_length(x)) | concat(y,char_length(y)) |
+------------------------------------------------+--------------------------+
| 数据: 你瞅啥 长度: | 你瞅啥 |
+------------------------------------------------+--------------------------+
row in set (0.00 sec) 了解concat

2. 虽然 CHAR 和 VARCHAR 的存储方式不太相同,但是对于两个字符串的比较,都只比 较其值,忽略 CHAR 值存在的右填充,即使将 SQL _MODE 设置为 PAD_CHAR_TO_FULL_ LENGTH 也一样,,但这不适用于like

#常用字符串系列:char与varchar
注:虽然varchar使用起来较为灵活,但是从整个系统的性能角度来说,char数据类型的处理速度更快,有时甚至可以超出varchar处理速度的50%。因此,用户在设计数据库时应当综合考虑各方面的因素,以求达到最佳的平衡 #其他字符串系列(效率:char>varchar>text)
TEXT系列 TINYTEXT TEXT MEDIUMTEXT LONGTEXT
BLOB 系列 TINYBLOB BLOB MEDIUMBLOB LONGBLOB
BINARY系列 BINARY VARBINARY text:text数据类型用于保存变长的大字符串,可以组多到65535 (** − )个字符。
mediumtext:A TEXT column with a maximum length of ,, (** − ) characters.
longtext:A TEXT column with a maximum length of ,,, or 4GB (** − ) characters.

五 枚举类型与集合类型

字段的值只能在给定范围中选择,如单选框,多选框
enum 单选 只能在给定的范围内选一个值,如性别 sex 男male/女female
set 多选 在给定的范围内可以选择一个或一个以上的值(爱好1,爱好2,爱好3...)

枚举类型(enum)
An ENUM column can have a maximum of , distinct elements. (The practical limit is less than .)
示例:
CREATE TABLE shirts (
name VARCHAR(),
size ENUM('x-small', 'small', 'medium', 'large', 'x-large')
);
INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'),('polo shirt','small'); 集合类型(set)
A SET column can have a maximum of distinct members.
示例:
CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));
INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');
MariaDB [db1]> create table consumer(
-> name varchar(),
-> sex enum('male','female'),
-> level enum('vip1','vip2','vip3','vip4','vip5'), #在指定范围内,多选一
-> hobby set('play','music','read','study') #在指定范围内,多选多
-> ); MariaDB [db1]> insert into consumer values
-> ('egon','male','vip5','read,study'),
-> ('alex','female','vip1','girl'); MariaDB [db1]> select * from consumer;
+------+--------+-------+------------+
| name | sex | level | hobby |
+------+--------+-------+------------+
| egon | male | vip5 | read,study |
| alex | female | vip1 | |
+------+--------+-------+------------+ 验证

3、位类型(了解)

BIT(M)可以用来存放多位二进制数,M范围从1~64,如果不写默认为1位。
注意:对于位字段需要使用函数读取
    bin()显示为二进制
    hex()显示为十六进制

位类型:

MariaDB [db1]> create table t9(id bit);
MariaDB [db1]> desc t9; #bit默认宽度为1
+-------+--------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+-------+
| id | bit() | YES | | NULL | |
+-------+--------+------+-----+---------+-------+ MariaDB [db1]> insert into t9 values();
MariaDB [db1]> select * from t9; #直接查看是无法显示二进制位的
+------+
| id |
+------+
| |
+------+
MariaDB [db1]> select bin(id),hex(id) from t9; #需要转换才能看到
+---------+---------+
| bin(id) | hex(id) |
+---------+---------+
| | |
+---------+---------+ MariaDB [db1]> alter table t9 modify id bit();
MariaDB [db1]> insert into t9 values();
MariaDB [db1]> select bin(id),hex(id) from t9;
+---------+---------+
| bin(id) | hex(id) |
+---------+---------+
| | |
| | |
+---------+---------+ 验证

day 42 mycql 数据类型的更多相关文章

  1. day 42 mysql 数据类型

    mysql 数据类型   数据类型 truncate t1 (删除表) # 无符号类型 alter table t1 modify id tinyint unsigned (表里有值,不能直接改) d ...

  2. day 42 mycql 查询操作,重点中的重点

    数据库的查询操作是重点中的重点,最核心的内容就是它! 在查询时关键字的定义顺序: select distinct(select-list) from (left-table) (type-join) ...

  3. TYPES、DATA、TYPE、LIKE、CONSTANTS、STATICS、TABLES

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. Redis自学笔记:4.4进阶-消息通知

    4.4消息通知 4.4.1任务队列 传递任务的队列.与任务队列进行交互的实体有两类,一类是生产者,一类是消费者. 生产者将需要处理的任务放入任务队列中,二消费者不断从任务队列中读入任务 信息并执行. ...

  5. WinDbg常用命令系列---检查符号X

    x (Examine Symbols) x命令在所有与指定模式匹配的上下文中显示符号. x [Options] Module!Symbol x [Options] * 参数: Options特定符号搜 ...

  6. 如果只有1小时学Python,看这篇就够了

    大家好,我是大鹏,城市数据团联合发起人,致力于Python数据分析.数据可视化的应用与教学. 和很多同学接触过程中,我发现自学Python数据分析的一个难点是资料繁多,过于复杂.大部分网上的资料总是从 ...

  7. Core Java 总结(数据类型,表达式问题)

    2016-10-18 整理 写一个程序判断整数的奇偶 public static boolean isOdd(int i){ return i % 2 == 1; } 百度百科定义:奇数(英文:odd ...

  8. 《Redis入门指南(第二版)》读书思考总结之Redis五大数据类型

    热身:系统级命令 1. 获得符合规则的键名列表 KEYS pattern 模式匹配 产品的缓存:product+"."+....;  => keys product* 订单的 ...

  9. Python 30分钟入门——数据类型 and 控制结构

    Python是一门脚本语言,我也久闻大名,但正真系统的接触学习是在去年(2013)年底到今年(2014)年初的时候.不得不说的是Python的官方文档相当齐全,如果你是在Windows上学习Pytho ...

随机推荐

  1. swift 学习- 13 -- 下标

    // 下标 可以定义在 类, 结构体, 和 枚举 中, 是访问集合, 列表或 序列中元素的快捷方式, 可以使用下标的索引, 设置 和 获取值, 而不需要再调用对应的存取方法, 举例来说, 用下标访问一 ...

  2. HSSFClientAnchor 参数说明

    pache POI  是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能. HSSFClient ...

  3. Linux超级守护进程——xinetd

    一 Linux守护进程 Linux 服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台的守护进程来执行的. ...

  4. day 28 面向对象 三种特性之一 多态 鸭子类型 反射(反省)

    多态是OOP的三大特征之一 字面意思:多种形态 多种状态 官方描述:不同的对象可以响应(调用)同一个方法 产生不同的结果(例如水的三相特征) 多态不是什么新技术 我们编写面向对象的程序时 其实就有多态 ...

  5. (不断更新)关于显著性检测的调研-Salient Object Detection: A Survey

    <Salient Object Detection: A Survey>作者:Ali Borji.Ming-Ming Cheng.Huaizu Jiang and Jia Li 基本按照文 ...

  6. 20165314 Linux安装及学习

    Linux的安装 安装虚拟机比我想象中要来的简单,虽然在这过程中出现了一些粗心大意导致的问题,但是重新再做一遍,问题就都解决了,比如: 未能加载虚拟光盘 在云班课的得到了同学的提示下我把虚拟机桌面的光 ...

  7. Chrome浏览器常用键盘快捷键介绍

    很多人喜欢使用键盘快捷键来操作电脑,因为在熟练的情况下,使用键盘会比使用鼠标点击更快.更高效.本文对Chrome浏览器常用的快捷键做个说明. 标签页和窗口快捷键 1.  Ctrl + n 打开新窗口 ...

  8. 什么是 TCP 拆、粘包?如何解决(Netty)

    前言 记得前段时间我们生产上的一个网关出现了故障. 这个网关逻辑非常简单,就是接收客户端的请求然后解析报文最后发送短信. 但这个请求并不是常见的 HTTP ,而是利用 Netty 自定义的协议. 有个 ...

  9. Android Studio 调用夜神模拟器

    操作系统:Windows 10 x64 IDE:Android Studio 3.3 夜神模拟器 首先,启动夜神模拟器.快捷键WIN + R打开运行窗口,输入cmd,启动cmd.exe. 使用cd命令 ...

  10. 部署MySQL5.7时的权限问题

    本周部署MySQL5.7的时候遇到这样的问题,在初始化的时候,总是失败,并且报错: 2019-01-09T09:47:13.957685Z 0 [ERROR] InnoDB: Operating sy ...