四、客户机和工具
命令行客户机程序
1.这几个客户机都必须运行mysqld服务器程序,客户机才能访问数据库;
2.mysql是通用的命令行客户机,用于向服务器发送SQL语句,其中包括用于管理的SQL语句;
3.mysqladmin是可帮助管理服务器的管理命令行客户机;
4.mysqlimport为LOAD DATA INFILE语句提供了命令行界面;使用该客户机可以将数据文件装入表中,而无需手动发出LOAD DATA INFILE语句;之后讲导入导出数据时会具体再讲;
5.mysqldump是用于转储数据库和表中内容的命令行客户机;使用它可备份数据库或将其复制到其他计算机;
调用命令行客户机
两种常见的选项语法格式:
1.长选项(–):双横线选项后面加等号和参数;
2.短选项(-):单横线选项后加空格和参数; mysql -V;
连接参数选项
1.-h:后跟给定主机的主机名或IP地址,用于连接到服务器(默认为localhost);
2.-C:压缩客户机和服务器之间发送的所有信息(如果两者都支持压缩);
3.–protocol:后跟用于连接到服务器的连接协议:{TCP|SOCKET|PIPE|MEMORY};
4.-P:后跟端口号,用于代替默认值(3306);
5.-S:用于设置UNIX套接字文件或在Windows上使用的命名管道的名称;
6.–shared-memory-base-name:(仅Windows)通过共享内存连接到本地服务器时所使用的共享内存的名称;此选项仅在服务器支持共享内存连接时适用;
调用mysql客户机
1.在命令行中提供凭证:
-u选项后面可带或不带空格;-p选项后面不带空格,如果对该选项使用空值,则系统会提示您输入口令;使用此登录路径(通过mysql_config_editor创建)的凭证;3.执行语句:mysql –login-path=admin -e “SELECT VERSION()”;- 可以使用[ > | < ]重定向流,用来运行脚本或者批处理文件;- 文件必须为纯文本格式,其中每个语句都有语句终结符;- 文件必须位于运行 mysql 客户机的主机上;mysql 客户机:安全更新
1.可能会不小心发出一些会修改表中多个行的语句或者会返回特别大的结果集的语句,使用–safe-updates选项可帮助防止这些问题;(可以启动时设置,也可以在选项文件中设置)1).UPDATE和DELETE仅在包含WHERE子句(该子句通过键值明确标识了要更新或删除的记录)或LIMIT子句时才允许使用;2).将单表SELECT语句中的输出限制为不超过1K行,但语句包含LIMIT子句时除外;3).仅当MySQL为处理查询所检查的行不超过100W时,才允许使用多表SELECT语句;mysql> UPDATE t1 SET id = id + 1;# mysql -uroot -p –safe-updatemysql> UPDATE t1 SET id = id + 1;ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY columnmysql 客户机:输出格式
默认情况下,无论是以交互模式还是以批处理模式使用mysql,都会生成输出:1.交互式:当以交互模式调用mysql时,会以表格格式显示查询输出,其中使用长条和短划线显示在方框列中列出的值;–table(或 -t):生成表格输出格式,即使在以批处理模式运行时也是如此,这是交互模式的默认格式;2.批处理:在通过使用文件作为命令行中的输入源来调用mysql时,mysql会以批处理模式运行,并且在显示的查询输出中使用制表符来分隔数据值;–batch(或 -B):生成批处理模式(用制表符分隔的)输出(即使在以交互模式运行时也是如此),且不使用历史文件,这是批处理模式的默认格式;在批处理模式下,使用–raw或-r选项可禁止字符转换(例如,将换行符和回车符转换为\n或\r等转义序列),在原始模式下,将按字面值输出字符;3.使用以下选项可选择不同于以上任一默认格式的输出格式:–html(或 -H):生成 HTML 格式的输出;mysql 客户机:MySQL客户机命令
一.列出所有的 MySQL 客户机级别命令:mysql> HELP;2.clear:清除当前输入的语句,在错误的语句后面输入\c即可;3.connect:重新连接服务器,可以指定主机名和服务器,输入connect dbname host或或者\r dbname host即可;4.delimiter:语句分隔符,设置执行语句的符号,执行delimiter $$即可;5.edit:调用vi修改sql语句,在要修改的语句后面输入\e即可;7.pager:查询内容太多,分页显示,设置:>pager less,禁止:>nopager;8.tee:把查询结果输入到一个文件中:>tee /tmp/rst.txt,禁止notee,主要用于数据库的备份脚本输出;9.prompt:改变提示符,如:prompt royalwzy>;则每次输入命令是提示符变为royalwzy>字符串(可以在配置文件中定义,prompt=xxx);10.quit/exit:都是退出客户端,输入quit,exit和\q都行;11.source:执行一个sql脚本文件,文件名为参数,source /tmp/sql.txt;12.system:执行操作系统的命令,用法:system ls -l /tmp 或者\! ls -l /tmp;13.status:查看服务器信息的状态,输入status或者\s即可;14.use:改变使用的数据库,后面跟数据库的名称,eg:use mysql;15.charset:修改字符集,可以通过status查看当前使用的字符集,eg:charset latin1;16.warnings:开启警告信息,当输入的sql语句出错时,可以通过show warning或者show errors来打印警告或者错误信息,设置:warning或者\W,关闭:nowarning或者\w;1).在服务器的配置文件中[mysql]节点下,默认使用no-auto-rehash选项;2).注释no-auto-rehash选项,添加auto-rehash选项,reboot;Using outfile:就是使用tee命令指定的值,把当前所有的操作和输出都重定向到一个文本;三.日志会话查询及其输出:tee my_tee_file.txt;mysql 客户机:SQL语句
一.数据定义语言(Data Definition Language, DDL)1.CREATE DATABASE/TABLE:用于创建具有给定名称的数据库或表;2.ALTER DATABASE/TABLE:可更改数据库或表的整体特性;3.DROP DATABASE/TABLE:用于删除数据库中的所有表并删除该数据库,或者用于删除特定的表;二.数据操纵语言(Data Manipulation Language, DML)1.SELECT:用于从一个或多个表中检索所选的行;4.UPDATE:用于使用新值更新指定表中现有行的列;5.JOIN:组合使用多个表以用于SELECT,多表DELETE和UPDATE语句;mysql 客户机:有关SQL语句的帮助
2.获得管理操作的命令:>help administration;3.获得数据类型:>help data types;4.获得show命令的帮助:help show; ? show;5.show variables:打印系统变量,类似oracle中的show parameter;查询包含某一关键字的变量:show variables like ‘%buffer%’;设置变量的值用set命令:set global|session key=value;6.show variables和show status的区别show variables:当服务器运行之后如果没有人工干预所有的参数不会发生改变;show status:显示服务器运行过程中的动态信息,值会动态改变;7.不必逐步浏览目录列表中所列出的项来获取有关特定主题的帮助,只需给出主题作为关键字即可获得一些提示:HELP STATUS;mysql 客户机:SQL语句终结符
1.[;]和[\g]:常见的终结符,二者等效,可互换使用;2.\G:用于终止查询并以垂直方式显示查询结果,其中显示的每个输出行的每个列值均位于单独的行中;此终结符在查询生成的输出行非常宽的情况下十分有用(因为竖直格式可使结果更易阅读);3.\c:如果决定放弃正在编写的语句,则可取消该语句并返回到新的mysql>提示符下;mysql 客户机:特殊语句终结符
1.可以更改默认提示符,将当前信息放入提示符中,例如用户(\u),主机(\h)和数据库(\d);2.PROMPT关键字之后第一个空格后面的所有内容都将成为提示符字符串的一部分,包括其他空格;该字符串可包含特殊序列;1.3.要将提示符恢复为默认值,请指定不包含参数的PROMPT或\R;mysql 客户机:使用脚本文件
1.脚本文件应该为纯文本文件,其中所包含语句的格式要与以交互模式输入的语句的格式相同;具体来说,每个语句都必须以 终结符结束;mysqladmin客户机
1.create databasename:创建数据库;3.drop databasename:删除数据库;4.extended-status:列出服务器的附加信息;10.flush-privileges:重新加载授权表,相当于reload;11.kill id,id,…:杀掉mysql的进程;12.password [new-password]:以当前格式修改密码;13.old-password [new-password]:以旧的格式修改密码;15.processlist:列出所有活动的进程;17.refresh:刷新所有的表,并重新打开日志文件;MySQL工具
1.MySQL Workbench:一个可视化的下一代数据库设计应用程序,可用于高效设计,管理和记录数据库结构;它有开源和商业两种版本;2.MySQL Proxy:一个位于客户机与MySQL服务器之间的简单程序,可监视,分析或传输客户机与服务器之间的通信;MySQL Proxy 的灵活性使其具有多种用途,包括负载平衡/故障转移/查询分析/查询过滤和修改以及其他操作;该工具当前尚不可用于生产;3.MySQL Enterprise Monitor:MySQL的可视化企业监视系统,可用于检测MySQL服务器,通知潜在问题并就如何修复这些问题提供建议;4.MySQL Enterprise Backup:使用该工具可以执行联机非阻塞“热”备份,从完整备份恢复数据,还支持创建压缩的备份文件;5.MySQL Cluster Manager:通过自动执行常见的管理任务来简化MySQL Cluster Carrier Grade Edition数据库的创建和管理;TIPS:345工具仅在MySQL商业版本中提供;MySQL Enterprise Monitor
1.Enterprise Monitor可帮助管理多节点(可水平伸缩)环境中的多台MySQL服务器,调整当前MySQL服务器,发现MySQL数据库应用程序中存在的问题,并在这些问题变成严重问题或代价高昂的故障之前将其修复;2.此Web GUI应用程序可主动监视企业数据库环境,并就MySQL如何增强MySQL所推动系统的安全性,优化其性能和减少其停机 时间提供专家建议;3.Enterprise Monitor可监视各种类型的配置,从单个MySQL服务器直到支持繁忙Web站点的大型MySQL服务器群;— MySQL Enterprise Monitor:系统信息显示板;— MySQL Enterprise Monitor:访问;MySQL Workbench针对三种主要功能为DBA和开发者提供了基于GUI的跨平台集成工具环境:执行增强型实体关系 (enhanced entity relationship, EER)建模;3.服务器管理(取代了MySQL Administrator)有助于进行以下任务:MySQL Proxy
1.MySQL Proxy使用MySQL网络协议连接到网络,并提供一台或多台服务器与一台或多台MySQL客户机之间的通信;在最基本的MySQL Proxy配置中,可以执行以下操作:仅将查询从客户机传递到MySQL服务器,然后返回;对使用该协议的任何与MySQL兼容的客户机,可不经修改地使用MySQL Proxy;这包括mysql命令行客户机,任何使用MySQL客户机库的客户机以及任何支持MySQL网络协议的连接器;使用查询拦截添加分析,插入其他查询并删除其他结果;交换信息的拦截可脚本化;2.使用该代理可以对查询执行额外的监视,过滤或处理,而无需对客户机做出任何修改,客户机甚至不会知道正在与其通信的根本不是真正的MySQL服务器;3.MySQL Proxy仍在开发中,尚未作为GA软件发行;可以了解OneProxy;1.大多数第三方API均基于C客户机库,并针对其他某种语言提供绑定;2.虽然MySQL开发团队的成员经常与这些产品的开发者密切合作,但是这些API尚未得到Oracle的正式支持;1.在MySQL中,可用的数据类型分为四个主要类别:2.在每个类别中,存在多种特定的数据类型,这些数据类型使用的内存大小和磁盘空间各不相同,因此会对性能产生不同的影响;3.对于单个记录,为列选择最佳数据类型所产生的性能影响相对较小,但随着数据库的增大,这些较小的影响可能会汇聚成大的影响;应在设计过程中事先考虑这些影响,以免造成性能问题;4.MySQL还支持“空间扩展”存储引擎功能;通过空间扩展,能够以字符和二进制格式生成,存储和分析地理特征;(1)Appropriate(适当):需要以最适合数据所代表的项的类型来表示数据;(2)Brief(简洁):选择所用存储空间最少的数据类型。这可节省资源并提高性能;(3)Complete(完整):选择的数据类型应分配有可存储特定项的最大可能值的充足空间;(1)整数:整数没有小数部分;即,没有小数位的单个整数值;(2)浮点数(FLOAT/DOUBLE):表示包含整数部分,小数部分或同时包括二者的近似值数值;此类数据类型使用服务器主机的CPU所用的本机二进制浮点格式(IEEE 754)来表示值;该数据类型用于存储和计算会很高效,但值会存在舍入误差;如果列可为空,则默认值为NULL;如果列不可为空,则默认值为0(数值零);(3)定点数(DECIMAL):包含整数部分,小数部分或同时包括二者;DECIMAL列中的所有值均包含相同的小数位数,并且完全按给定方式进行存储;DECIMAL值存储起来不如浮点数值高效,但DECIMAL值没有舍入误差,因此更加精确;通常用于存储货币值(其中每个值的精度比其存储大小更加重要);
(4)BIT:BIT列规范规定了一个宽度,指明每个值的位数(1至64位);2.“精度”和“范围”是适用于浮点值和定点值(这两种类型可以同时包含整数部分和小数部分)的术语:TIPS:可以使用=号跟浮点值进行比较;但由于可能会出现舍入误差,因此结果可能并不总是与预期一样;2.为存储字符串数据,MySQL提供了以下数值数据类型存储类:(1)文本:用于表示真实的字符串数据类型;可以使用此类型存储非结构化且格式自由的字符串(如果其长度符合已定义的空间量);(2)整数(枚举/集合):用于表示结构化字符串类型;称为“结构化”的原因是,存储在这些类型的列中的值必须通过您所提供的值列表构建,从而定义数据类型;(2)多字节字符集中的每个字符所需的字节数可能是固定的,也可能是可变的;(5)排序将验证字符的大写版本和小写版本是否等效;(6)排序将决定同一个字符的不同重音标记是否等效;(7)排序可以为二进制,其中基于数值字符值进行比较;2.MySQL具有一个包含大量可供选择的字符集和排序的列表;选择正确与否会对性能有很大的影响;要查看可用的字符集:SHOW CHARACTER SET;3.使用排序选择可以为相同的字符集选择不同的排序顺序;例如,显示所有latin1字符集:SHOW COLLATION LIKE ‘latin1%’;1.与字符串不同,组成此类二进制字符串值的字节不代表字符;因此,二进制字符串没有附加的字符语义,而且缺少字符串类所表示的字符集和整理信息;2.在MySQL中,BLOB与TEXT类型非常相似,没有附加的字符集和排序;1.YYYY,MM,DD,hh,mm,ss和uuuuuu分别表示“年”,“月”,“日”,“小时”,“分钟”,“秒”和可选的“秒的小数位”;2.通过为该类型提供一个参数,可声明秒的小数位(可选);例如,TIME(3)是TIME类型,其中秒的小数位部分最多可达三位;3.TIMESTAMP值采用UTC进行存储(将根据需要转换为当地时间或从当地时间进行转换),其范围为从1970-01-01 00:00:00.000000至2038-01-19 03:14:07.999999;4.可以定义DATETIME和TIMESTAMP以自动记录当前日期和时间,而不管对行执行INSERT或UPDATE操作的时间为何时;(1)TIMESTAMP列值的范围比DATETIME列值的范围小,因此存储每个值所需的字节数更少;(2)通过为不允许出现NULL的TIMESTAMP指定NULL值,可以将其设置为当前日期和时间;CREATE TABLE t_time
(
id INT NOT NULL,
t1 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
t2 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
t3 TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP
);
mysql> INSERT INTO t_time(id) VALUES(1);
mysql> COMMIT;
mysql> SELECT * FROM t_time;
+—-+———————+———————+———————+
| id | t1 | t2 | t3 |
+—-+———————+———————+———————+
| 1 | 2015-08-19 14:00:42 | 2015-08-19 14:00:42 | 0000-00-00 00:00:00 |
+—-+———————+———————+———————+
mysql> UPDATE t_time SET t1 = ‘2000-01-01 00:00:00’ WHERE id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> COMMIT;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM t_time;
+—-+———————+———————+———————+
| id | t1 | t2 | t3 |
+—-+———————+———————+———————+
| 1 | 2000-01-01 00:00:00 | 2015-08-19 14:00:42 | 2015-08-19 14:01:43 |
+—-+———————+———————+———————+
1 row in set (0.00 sec)MySQL实现了由开放地理空间协会(Open Geospatial Consortium, OGC)提出的“包含几何类型的SQL”环境的子集:(1)GEOMETRY:层次结构的根类,任何类型的值;(4)LINESTRING:点之间具有线性内插的曲线;(3)MULTILINESTRING:LineString元素;(4)MULTISURFACE:Surface元素;(5)MULTIPOLYGON:Polygon元素;(6)GEOMETRYCOLLECTION:任意类型的几何体;1.在SQL中,对表达式求值的结果可以为null;null值是一个特殊的值,表示值无法进行计算或未知;2.何时使用NULL:在数据库设计的开始阶段,当列出要包含在内的数据时,发现某些数据可能不适用于所有列;3.何时不应使用NULL:在某些情况下,不应允许列中使用null值;(2)另一个例子是:当列必须包含值时,数据库设计才有意义;
数据库是数据的结构化集合,元数据是“有关数据的数据”;(1)INFORMATION_SCHEMA:MySQL服务器包含一个被实现为名为INFORMATION_SCHEMA的数据库(模式)的数据字典,其中包含许多显示为表的对象;(2)SHOW语句:用于获取服务器统计信息,模式和模式对象的相关数据的专用语法;- SHOW DATABASES和SHOW TABLES:返回包含数据库和表名的列表;- SHOW COLUMNS:生成表中列的定义;SHOW COLUMNS FROM table等于DESC table;(3)DESCRIBE:可用于检查表结构和列属性的SQL语句快捷方式;(4)mysqlshow:用作指向一些SHOW语句的命令行前端的客户机程序;• FILES:存储 MySQL NDB 磁盘数据表的文件• COLUMN_PRIVILEGES:MySQL 用户帐户所拥有的列特权• SCHEMA_PRIVILEGES:MySQL 用户帐户所拥有的数据库特权• TABLE_PRIVILEGES:MySQL 用户帐户所拥有的表特权• USER_PRIVILEGES:MySQL 用户帐户所拥有的全局特权• COLLATION_CHARACTER_SET_APPLICABILITY:适用于特定字符集的排序• KEY_COLUMN_USAGE:关键列的约束• REFERENTIAL_CONSTRAINTS:外键• GLOBAL_STATUS:所有 MySQL 连接的状态值• GLOBAL_VARIABLES:用于新的 MySQL 连接的值• SESSION_STATUS:当前 MySQL 连接的状态值• SESSION_VARIABLES:当前 MySQL 连接的生效值• PARAMETERS:存储过程和功能参数以及存储函数• INNODB_CMP 和 INNODB_CMP_RESET:对压缩的 InnoDB 表的相关操作的状态• INNODB_CMPMEM 和 INNODB_CMPMEM_RESET:InnoDB 缓冲池中压缩页面的状态• INNODB_LOCKS:InnoDB 事务所请求和持有的每个锁• INNODB_LOCK_WAITS:每个阻塞的 InnoDB 事务的一个或多个行锁• INNODB_TRX:当前正在 InnoDB 内部执行的所有事务对INFORMATION_SCHEMA使用SELECT;5.INFORMATION_SCHEMA表是只读的,无法用INSERT/DELETE/UPDATE之类的语句进行修改;如果执行这些类型的语句以尝试更改INFORMATION_SCHEMA表中的数据,服务器将生成错误;使用INFORMATION_SCHEMA表创建Shell命令;1.SQL语句将生成一条输出,仅导出world_innodb数据库中那些以单词“Country”开始的的表;2.输出将生成可以在shell命令行上正确执行的shell脚本;下一步是将此输出存储在一个可在shell命令行中执行的批处理文件中,这通过添加子句INTO OUTFILE来完成: SELECT CONCAT(“mysqldump -uroot -pmysql “, TABLE_SCHEMA, ” “, TABLE_NAME, ” >> “,TABLE_SCHEMA, “.sql”) FROM TABLES WHERE TABLE_NAME LIKE ‘Country%’ INTO OUTFILE ‘\tmp\Country_Dump.sh’3.然后可以在命令行中执行此文件,命令行将运行本幻灯片中所示的两个mysqldump命令:shell> \tmp\Country_Dump.shshell> \tmp\mysqldump -uroot -pmysql world_innodb Country >> world_innodb.sqlshell> \tmp\mysqldump -uroot -pmysql world_innodb Country_Language >> world_innodb.sql使用INFORMATION_SCHEMA表创建SQL语句;1.本幻灯片中的示例使用mysql命令执行了一个语句,以制作world_innodb数据库中所有表的精确副本;(2)–skip-column-names命令删除输出中的格式(使输出类似于表的格式);(3)这两个命令用来确保对命令自身的解释是正确的,没有任何干扰执行的外部格式或标题行问题;2.添加管道符号[|]并随之执行mysql命令会将这些SQL语句发送到MySQL服务器以便执行:shell> mysql -uroot -pmysql –silent –skip-column-names -e “SELECT CONCAT(‘CREATE TABLE ‘, TABLE_SCHEMA, ‘.’, TABLE_NAME, ‘_backup LIKE ‘, TABLE_SCHEMA, ‘.’, TABLE_NAME, ‘;’) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = ‘world_innodb’;” | mysql -uroot -pmysql1.除了INFORMATION_SCHEMA表之外,MySQL还支持SHOW和DESCRIBE语句,作为访问元数据的备选方式;2.SHOW和DESCRIBE语法不如使用INFORMATION_SCHEMA查询灵活,但是对于大多数用途,SHOW和DESCRIBE语法就足够了;在这些情况下,使用MySQL特定语法通常会更快速,简单;- SHOW DATABASES:列出可用数据库的名称- SHOW TABLES FROM <database_name>:列出指定数据库中的表- SHOW COLUMNS FROM <table_name>:显示表的列结构- SHOW INDEX FROM <table_name>:显示表中有关索引和索引列的信息- SHOW CHARACTER SET:显示可用的字符集及其默认排序- SHOW COLLATION:显示每个字符集的排序mysql> SHOW DATABASES;
mysql> SHOW TABLES;
mysql> SHOW TABLES FROM mysql;
mysql> SHOW TABLES FROM INFORMATION_SCHEMA;
mysql> SHOW COLUMNS FROM CountryLanguage;
mysql> SHOW FULL COLUMNS FROM CountryLanguage\G1.DESC table_name等效于SHOW COLUMNS FROM table_name;但是,SHOW COLUMNS支持可选的LIKE和WHERE子句,而DESCRIBE不支持;2.当指定表名称作为参数时,EXPLAIN等效于DESCRIBE:mysql> EXPLAIN table_name;1.mysqlshow客户机为各种格式的SHOW语句提供了一个命令行界面,这些语句用于列出数据库的名称,数据库中的表或有关表列或索引的信息;2.mysqlshow客户机的选项部分可包含任一标准连接参数选项,例如–host或–user;如果默认连接参数不适合,则必须提供选项;mysqlshow也接受特定于其自身运行的选项;3.使用–help选项调用mysqlshow可查看其选项的完整列表;4.mysqlshow所执行的操作取决于已提供的非选项参数的数量;1.在没有参数的情况下,mysqlshow将显示类似于SHOW DATABASES的结果;2.在使用单个参数的情况下,mysqlshow将该参数解释为数据库名称,并针对该数据库显示类似于SHOW TABLES的结果;3.在有两个参数的情况下,mysqlshow将参数解释为数据库和表名称,并针对该表显示类似于SHOW FULL COLUMNS的结果;4.在有三个参数的情况下,其输出与两个参数的情况相同,不同之处在于:mysqlshow将第三个参数当做列名称,且仅针对该列显示SHOW FULL COLUMNS输出;5.如果命令行中最后的参数包含特殊字符,mysqlshow会将该参数解释为模式,且仅显示与该模式匹配的名称;特殊字符包括:%或*(匹配任一字符序列),以及_或?(匹配任一单个字符);本示例中的命令仅显示那些名称始于w的数据库欢迎关注社区 "数据库"技术主题 ,将会不断更新优质资料、文章。地址:
http://www.talkwithtrend.com/Topic/597
下载 twt 社区客户端 APP
与更多同行在一起
高手随时解答你的疑难问题
轻松订阅各领域技术主题
浏览下载最新文章资料
长按识别二维码即可下载
或到应用商店搜索“twt”
*本公众号所发布内容仅代表作者观点,不代表社区立场