1.、查看mysql当前使用的字符集。

登录mysql 在mysql 里输入 show variables like 'character_set%'

mysql> show variables like 'character_set%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /application/mysql-5.5.32/share/charsets/ |
+--------------------------+-------------------------------------------+
8 rows in set (0.00 sec)

说明:show variables 是查看mysql的变量 like 是模糊查询  后面的%号是指任意字符 相当于linux里的*,以上语句表示查看mysql 里的以character_set开头变量的值。从上面的表中我们可以看到mysql 客户端是用的latin1 mysql连接也是latin1 还有mysql返回也是latin1。接下来我们看下我们要测试的库和表的字符集。

mysql> show create database qiuhom;
+----------+-----------------------------------------------------------------+
| Database | Create Database |
+----------+-----------------------------------------------------------------+
| qiuhom | CREATE DATABASE `qiuhom` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-----------------------------------------------------------------+
1 row in set (0.00 sec)

说明:以上语句可以看出我们qiuhom库是用的utf8字符集

mysql> use qiuhom
Database changed
mysql> show tables;
+------------------+
| Tables_in_qiuhom |
+------------------+
| test |
+------------------+
1 row in set (0.00 sec) mysql> show create table test;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
| test | CREATE TABLE `test` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`name` char(8) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

说明:以上语句可以看出我们test表用的是utf8字符集。

现在我们往test里面插入数据看看是什么情况呢

mysql> insert into test values(1,'a1'),(2,'a2');
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from test;
+----+------+
| id | name |
+----+------+
| 1 | a1 |
| 2 | a2 |
+----+------+
2 rows in set (0.00 sec)

  可以看出 当我们用latin1的字符集往utf8的库表插入非中文字符数可以正常显示的。

那我们现在来插入中文字符来看看会是什么结果呢

mysql> insert into test values(3,"小明"),(4,"小红");
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from test;
+----+--------+
| id | name |
+----+--------+
| 1 | a1 |
| 2 | a2 |
| 3 | 小明 |
| 4 | 小红 |
+----+--------+
4 rows in set (0.00 sec)

  恩?怎么中文也可以显示呢,我们这样退出mysql重新进入查看数呢?

mysql> select * from test;
+----+--------+
| id | name |
+----+--------+
| 1 | a1 |
| 2 | a2 |
| 3 | 小明 |
| 4 | 小红 |
+----+--------+
4 rows in set (0.00 sec)  

为什么我们退出了mysql重新登录后就乱码了呢?

我们在来看看系统的字符集

mysql> show variables like 'character_set%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /application/mysql-5.5.32/share/charsets/ |
+--------------------------+-------------------------------------------+
8 rows in set (0.00 sec)

  可以看出现在系统的字符集变成了utf8,以上例子说明了一点就是,当库表的字符集和你当前数据库的字符集不同时 我们插入数据(特别是中文)时一定要调整字符集,一般是调整当前字符集和库表一致,否则会导致乱码。

2、说说设置字符集的方法

2.1临时设置方法 set names +字符集

mysql> show variables like 'character_set%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /application/mysql-5.5.32/share/charsets/ |
+--------------------------+-------------------------------------------+
8 rows in set (0.00 sec) mysql> set names latin1;
Query OK, 0 rows affected (0.00 sec) mysql> show variables like 'character_set%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /application/mysql-5.5.32/share/charsets/ |
+--------------------------+-------------------------------------------+
8 rows in set (0.00 sec)

  set names 是临时生效的方式设置,当我们退出mysql后重新登录字符集又会变成设置前的字符集。当然临时设置的方式有很多,但是不管以怎么的方式 最后都是以执行set names +字符集生效的

比如 我们可以在导入数据的时候指定字符集 mysql -uroot -padmin --default-character-set=utf8 < /work/backup.sql

我们首先我们用mysqldump把qiuhom库给逻辑备份出来,并指定字符集

[root@qiuhom ~]# mysqldump -uroot -padmin --default-character-set=latin1 -B qiuhom > /work/backup.sql 

  如果执行以上命令没有报错就表示备份成功,简单说下mysqldump命令吧,它作用就是把mysql里面的数据以sql语句的形式给备份出来,备份出来的不是实际的数据文件,而是一堆sql语句,其中-B的作用是指定要备份的数据库,可以同时备份多个库。

以上语句我们指定以latin1的字符集导出数据是防止我们到处的数据是乱码。我们可以vim 查看导出的SQL语句

[root@qiuhom ~]# vim /work/backup.sql
1 -- MySQL dump 10.13 Distrib 5.5.32, for Linux (x86_64)
2 --
3 -- Host: localhost Database: qiuhom
4 -- ------------------------------------------------------
5 -- Server version 5.5.32-log
6
7 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
8 /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
9 /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
10 /*!40101 SET NAMES latin1 */;
11 /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
12 /*!40103 SET TIME_ZONE='+00:00' */;
13 /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
14 /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
15 /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
16 /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
17
18 --
19 -- Current Database: `qiuhom`
20 --
21
23
24 USE `qiuhom`;
25
26 --
27 -- Table structure for table `test`
28 --
29
30 DROP TABLE IF EXISTS `test`;
31 /*!40101 SET @saved_cs_client = @@character_set_client */;
32 /*!40101 SET character_set_client = utf8 */;
33 CREATE TABLE `test` (
34 `id` int(4) NOT NULL AUTO_INCREMENT,
35 `name` char(8) DEFAULT NULL,
36 PRIMARY KEY (`id`)
37 ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
38 /*!40101 SET character_set_client = @saved_cs_client */;
39
40 --
41 -- Dumping data for table `test`
42 --
43
44 LOCK TABLES `test` WRITE;
45 /*!40000 ALTER TABLE `test` DISABLE KEYS */;
46 INSERT INTO `test` VALUES (1,'a1'),(2,'a2'),(3,'小明'),(4,'小红');
47 /*!40000 ALTER TABLE `test` ENABLE KEYS */;
48 UNLOCK TABLES;
49 /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
50
51 /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
52 /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
53 /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
54 /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
55 /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
56 /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
57 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
58
59 -- Dump completed on 2018-10-05 11:05:28

  可以看出我们导出的sql语句插入语句的数据是不乱码的。如果我们不指定字符集,导出来就是乱码的,它默认以库表的字符集导出数据。

然后我们把qiuhom库给drop掉。然后在通过备份还原。

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| oldboy |
| performance_schema |
| qiuhom |
+--------------------+
5 rows in set (0.00 sec) mysql> drop database qiuhom;
Query OK, 1 row affected (0.01 sec) mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| oldboy |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

  可以看出现在qiuhom库已经给删除掉了。接下来我们用刚才备份的sql文件,以指定的字符集导入数据。

指定字符集latin1导入数据

[root@qiuhom ~]# mysql -uroot -padmin --default-character-set=latin1 < /work/backup.sql
[root@qiuhom ~]# mysql -uroot -padmin -e "use qiuhom;select * from test;"
+----+--------------+
| id | name |
+----+--------------+
| 1 | a1 |
| 2 | a2 |
| 3 | 小明 |
| 4 | 小红 |
+----+--------------+

  查看数据还是乱码,这个乱码的原因上面已经解释过了,是因为插入数据以latin1的字符集插入,而系统本身是utf8的字符集,所以乱码,我们可以指定字符集查看

[root@qiuhom ~]# mysql -uroot -padmin --default-character-set=latin1 -e "use qiuhom;select * from test;"
+----+--------+
| id | name |
+----+--------+
| 1 | a1 |
| 2 | a2 |
| 3 | 小明 |
| 4 | 小红 |
+----+--------+
[root@qiuhom ~]# mysql -uroot -padmin -e "show variables like 'character_set%';"
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /application/mysql-5.5.32/share/charsets/ |
+--------------------------+-------------------------------------------+

  这时就不乱码,是因为我们指定了临时的字符集为latin1,系统本身还是utf8。所以 --default-character-set 是指定临时字符集的方式之一。

说明:我们这里容易产生一个误区就是说,字符集和库表的字符相同后,库表里的内容就不乱码了,不是这样的。库表里的内容乱不乱码在于你插入数据时指定的字符集和你查看数据是指定的字符集是否一样,所以不管你以什么样的方式导入和导出 我们要查看数据是指定插入数据时的字符集就不乱码,否则怎么都乱码。所以在往别人的库表里插入数据时一定要注意看库表的默认字符集是否和系统默认字符集是否一致,不一致用set names 调成一致在插入数据,这样就不乱码,比如库表的字符集是latin1 而我们系统默认字符集是utf8 那么我们先把系统字符用set names latin1 临时更换成latin1,然后在插入数据,这样插入的数据字符集才是和库表字符集一致。

以上用set names 的方式和 --default-character-set 的方式都是临时生效,当我们退出mysql登录时,在进就失效了,反反复复很麻烦有没有什么办法搞成永久的呢?答案是肯定有,我们在mysql的配置文件更改字符集这样我们每次登录进入mysql就是配置文件的字符集了

[client]
default-character-set=latin1
port = 3306
socket = /application/mysql-5.5.32/tmp/mysql.sock

  我们在/etc/my.cnf里找到[client] 在[client]下加入default-character-set=latin1,表示mysql客户端的字符集为latin1

[mysqld]
character-set-server=latin1

  找到[mysqld] 在其下面加入character-set-server=latin1 ,表示mysql服务端的字符集为latin1。

说明:以上就是永久更改字符集配置文件需要修改的地方,值得注意的是修改client 不需要重启服务,退出数据库重新进入字符集就发生了变化,但是服务端必须要重启服务,还有就是mysql5.1之前在服务端更字符集应该写成default-character-set=latin1,本人是用的mysql5.5 。

修改好配置文件 重新启动mysql服务 我们查看字符集

[root@qiuhom ~]# mysql -uroot -padmin  -e "show variables like 'character_set%';"
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /application/mysql-5.5.32/share/charsets/ |
+--------------------------+-------------------------------------------+

  这样我们以后每次登录进mysql就都是latin1的字符集了。

3、建库建表指定字符集

3.1建库指定字符集。

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| qiuhom |
+--------------------+
4 rows in set (0.00 sec) mysql> create database qiuhom_gbk default character set gbk collate gbk_chinese_ci;
Query OK, 1 row affected (0.00 sec) mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| qiuhom |
| qiuhom_gbk |
+--------------------+
5 rows in set (0.00 sec) mysql> show create database qiuhom_gbk;
+------------+--------------------------------------------------------------------+
| Database | Create Database |
+------------+--------------------------------------------------------------------+
| qiuhom_gbk | CREATE DATABASE `qiuhom_gbk` /*!40100 DEFAULT CHARACTER SET gbk */ |
+------------+--------------------------------------------------------------------+
1 row in set (0.00 sec)

  提示:查看校对规则 可以用show character set;语句在mysql里查字符集对应校对规则。

3.2建表指定字符集

mysql> create table test(
-> id int not null,
-> name char not null,
-> primary key(id)
-> )engine=innodb default charset=latin1;
Query OK, 0 rows affected (0.00 sec) mysql> show tables;
+----------------------+
| Tables_in_qiuhom_gbk |
+----------------------+
| test |
+----------------------+
1 row in set (0.00 sec) mysql> show create table test;
+-------+---------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+---------------------------------------------------------------------------------------------------------------------------------------+
| test | CREATE TABLE `test` (
`id` int(11) NOT NULL,
`name` char(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+---------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

  提示:创建表的后面可以不用写engine=innodb,因为mysql5.5是默认引擎是innodb

4、总结

关于mysql字符集的问题 我们要有一个思想就是要统一字符集思想,怎么统一字符集呢,如果有中英字符混杂的环境建议用utf8字符集。统一字符集我们从linux系统 到mysql 系统 再到应用程序。具体设置方式如下:

1.调整linux服务端系统字符集

[root@qiuhom ~]# cat /etc/sysconfig/i18n
LANG=en_US.UTF-8
SYSFONT=latarcyrheb-sun16
[root@qiuhom ~]# echo $LANG
en_US.UTF-8

  如果是echo $LANG返回的是我们设置的字符集,说明linux服务端的字符集设置好了

2.调整linux客户端字符集,所谓Linux客户端就是我们用的xshell和SecureCRT远程连接软件。

2.1SecureCRT设置方法和位置

2.2xshell设置位置

3.调整mysql客户端的字符集

3.1临时设置方式

方法一:

mysql> set names latin1;
Query OK, 0 rows affected (0.00 sec) mysql> show variables like 'character_set%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /application/mysql-5.5.32/share/charsets/ |
+--------------------------+-------------------------------------------+
8 rows in set (0.00 sec)

方法二:

[root@qiuhom ~]# mysql -uroot -padmin --default-character-set=latin1
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.5.32-log Source distribution Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show variables like 'character_set%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /application/mysql-5.5.32/share/charsets/ |
+--------------------------+-------------------------------------------+
8 rows in set (0.00 sec)

3.2永久设置编辑/etc/my.cnf找到[client]

[client]
default-character-set=latin1

  然后再进mysql字符集就变成latin1了

4.设置mysql服务端字符集

4.1临时设置

mysql> show variables like 'character_set%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /application/mysql-5.5.32/share/charsets/ |
+--------------------------+-------------------------------------------+
8 rows in set (0.00 sec) mysql> set character_set_server=latin1;
Query OK, 0 rows affected (0.00 sec) mysql> show variables like 'character_set%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /application/mysql-5.5.32/share/charsets/ |
+--------------------------+-------------------------------------------+
8 rows in set (0.00 sec)

4.2永久设置,在my.cnf里找到[mysqld]

[mysqld]
character-set-server=latin1

  说明:mysql5.1之前 是 default-character-set=latin1

5.创建库设置字符集

mysql> create database qiuhom_gbk default character set gbk collate gbk_chinese_ci;
Query OK, 1 row affected (0.00 sec) mysql> show create database qiuhom_gbk;
+------------+--------------------------------------------------------------------+
| Database | Create Database |
+------------+--------------------------------------------------------------------+
| qiuhom_gbk | CREATE DATABASE `qiuhom_gbk` /*!40100 DEFAULT CHARACTER SET gbk */ |
+------------+--------------------------------------------------------------------+
1 row in set (0.00 sec)  

6.创建表设置字符集

mysql> create table test(
-> id int not null,
-> name char not null,
-> primary key(id)
-> )engine=innodb default charset=latin1;
Query OK, 0 rows affected (0.00 sec) mysql> show create table test;
+-------+---------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+---------------------------------------------------------------------------------------------------------------------------------------+
| test | CREATE TABLE `test` (
`id` int(11) NOT NULL,
`name` char(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+---------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

统一以上6步的字符集就不会出现乱码。

mysql字符集那些事的更多相关文章

  1. [MySQL] 字符集的选择

    1. Mysql支持的字符集 MySQL服务器可以支持多种字符集,不同的字段都可以使用不同的字符集. 查看所有可用字符集: show character set; select * from info ...

  2. 如何修改MySQL字符集

    首先,MySQL的字符集问题主要是两个概念,一个是Character Sets,一个是Collations,前者是字符内容及编码,后者是对前者进行比较操作的一些规则.这两个参数集可以在数据库实例.单个 ...

  3. Mysql字符集设置

    转 基本概念 • 字符(Character)是指人类语言中最小的表义符号.例如’A'.’B'等:• 给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数值就是字符的编码(Encodi ...

  4. MySQL字符集

    字符集的选择 1.如果数据库只需要支持中文,数据量很大,性能要求也很高,应该选择双字节定长编码的中文字符集(如GBK).因为相对于UTF-8而言,GBK"较小",每个汉字只占2个字 ...

  5. mysql5.5字符集设置的一点变化(对于中文乱码问题,需要设置mysql字符集)

    工作中因为字符集问题没少头疼,还犯过一次错误,还好拯救及时,没有发生重大事故,唉,弄清楚点还是非常有必要的: 例如我的工作环境为CTR+redhat5+mysql5.5 在导入sql语句的时候必须要注 ...

  6. Mysql字符集知识总结

    字符集&字符编码方式 字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,这里的字符可以是英文字符,汉字字符,或者其他国家语言字符. 常见字符集 ...

  7. MySQL字符集的修改和查看

    1.关于MySQL字符集 MySQL的字符集支持(Character Set Support)有两个方面: 字符集(Character set)和排序方式(Collation). MySQL对于字符集 ...

  8. MySQL字符集转换引发插入乱码问题

    根据http://www.cnblogs.com/cchust/p/4601536.html进行验证测试 问题背景 在mysql上面执行一条普通的insert语句,结果报错: Incorrect st ...

  9. MySQL 字符集设置

    /*************************************************************************** * MySQL 字符集设置 * 说明: * 数 ...

随机推荐

  1. 编译 lame for iOS

    网上找了许多编译lame的教程,结果都是编译失败,多次尝试后发现是编译脚本放错路径了,记录下编译的过程,把编译脚本放到源码文件夹中和修改编译脚本中的目录是关键: 一.首先去Lame官网 http:// ...

  2. MySQL学习(二)索引原理及其背后的数据结构

    首先区分几个概念: 聚集索引 主索引和辅助索引(即二级索引) innodb中每个表都有一个聚簇索引(clustered index ),除此之外的表上的每个非聚簇索引都是二级索引,又叫辅助索引(sec ...

  3. luogu P3380 【模板】二逼平衡树(分块实现)

    题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 查询 \(k\) 在区间内的排名 查询区间内排名为 \(k\) 的值 修改某一位值上的数值 查询 \(k\ ...

  4. mysqldump导出 timestamp类型数据 时区偏差8小时

    1 出现原因 1.1 查看机器时区和MySQL的时区 #查看linux的机器时区: [root@mysql-150 ~]# date -R Wed, 23 Oct 2019 14:10:04 +080 ...

  5. 从Go语言编码角度解释实现简易区块链——实现交易

    在公链基础上实现区块链交易 区块链的目的,是能够安全可靠的存储交易,比如我们常见的比特币的交易,这里我们会以比特币为例实现区块链上的通用交易.上一节用简单的数据结构完成了区块链的公链,本节在此基础上对 ...

  6. zepto源码分析·event模块

    准备知识 事件的本质就是发布/订阅模式,dom事件也不例外:先简单说明下发布/订阅模式,dom事件api和兼容性 发布/订阅模式 所谓发布/订阅模式,用一个形象的比喻就是买房的人订阅楼房消息,售楼处发 ...

  7. Core3.0的 安装与坑坑坑!!!

    Core3的 SDK下载地址是:https://dotnet.microsoft.com/download/dotnet-core/3.0  ! 不要下载preview8!!!,请先下载 previe ...

  8. django-URL重定向(八)

    HttpResponseRedirect()不常用 redirect(to,permanent=False,*args,**kwargs) to:指重定向的位置,可以是视图,也可以是url地址,也可以 ...

  9. JavaScript随机生成布尔值

    //方法一 var rand = Boolean(Math.round(Math.random())); conosole.log(rand) // 方法二: var arr = [true,fals ...

  10. WinDag基础1

    建立调试会话 用户层调试会话的建立 直接创建进程并调试 附加到已经打开的进程 侵入式附加:接管正在运行的进程,可以进行调试 非侵入式附加:只能读取进程信息,不能接收目标进程的调试事件 通常情况下一个程 ...