Mysql基础语句
一、 MySQL语句
在熟悉安装及访问 MySQL 数据库以后, 接下来将学习使用 MySQL 数据库的基本操作,这也是在服务器运维工作中不可或缺的知识。 本节中的所有数据库语句均在“MySQL>”操作环境中执行
MySQL 是一套数据库管理系统,在每台 MySQL 服务器中,均支持运行多个数据库,每个数据库存放着许多表, 如图所示。
(一) MySQL数据库的操作
1、 查看数据库
查看数据库有3种方式
(1) 第一种直接进入数据库查看
MySQL> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| MySQL |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
1:information_schema这个数据库保存了MySQL服务器所有数据库的信息。如数据库名,数据库的表,表栏的数据类型,访问权限等。 [ˈskimə]
2:performance_schema 这是MySQL5.5新增的一个性能优化的引擎:命名PERFORMANCE_SCHEMA,主要用于收集数据库服务器性能参数。MySQL用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表,
3:MySQL库是系统库,里面保存有账户信息,权限信息等。
4:MySQL5.7后增加了sys 系统数据库,sys数据库里面包含了一系列的存储过程、自定义函数以及视图来帮助我们快速的了解系统的元数据信息,元数据是关于数据信息的数据,如数据库名或表名,列的数据类型,或访问权限等。
(2) 以行的方式显示
MySQL> show databases \G #以行的方式显示
*************************** 1. row ***************************
Database: information_schema
*************************** 2. row ***************************
Database: MySQL
*************************** 3. row ***************************
Database: performance_schema
*************************** 4. row ***************************
Database: sys
4 rows in set (0.00 sec)
(3) 在shell中查看
MySQL -e后面直接跟sql语句,这种方式一般是在shell脚本中用到
[root@localhost ~]# MySQL -e 'show databases' -uroot -pAbcd1234
MySQL: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database |
+--------------------+
| information_schema |
| MySQL |
| performance_schema |
| sys |
+--------------------+
2、创建数据库
(1) 语法
create database 数据库名;
(2)创建数据库注意事项
1、在文件系统中,MySQL的数据存储区以目录方式表示MySQL数据库。因此,上面命令中的数据库名字必须与操作系统的约束的目录名字一致。例如不允许文件和目录名中有\,/,:,*,?,”,<,>,|这些特殊符号,在MySQL数据库名字中这些字母会被自动删除。
[root@localhost ~]# ls /data/MySQL/data/
auto.cnf ib_buffer_pool ibdata1 ib_logfile0 ib_logfile1 ibtmp1 MySQL performance_schema sys
2、数据库的名字不能超过64个字符,包含特殊字符的名字或者是全部由数字或保留字组成的名字必须用反引号``括起来。
3、数据库不能重名
(3)创建一个数据库
MySQL> create database HA;
Query OK, 1 row affected (0.00 sec)
MySQL> create database `HA-test`;
Query OK, 1 row affected (0.00 sec)
(4) 查看数据库
MySQL> show databases;
(5) 查看数据库目录
我们可以去数据目录下查看新创建的数据库目录
[root@localhost ~]# ls /data/MySQL/data/
注:建议数据名不要包含特殊符号或是纯数字的。
3、选择要操作的数据库
我们需要使用哪个数据库,就用use进行选择,后面的操作默认都是在被选择的数据库中进行操作。
MySQL> use HA-test;
Database changed
4、 查看自己在所处的位置
MySQL> select database();
5、 在命令行选择默认的数据库
我们也可以在命令行直接选择我们需要进入的数据库
[root@localhost ~]# MySQL -uroot -pAbcd1234 HA-test
MySQL> select now(),user(),database();
6、删除数据库
(1)命令
MySQL> drop database `HA-test`;
Query OK, 0 rows affected (0.01 sec)
(2)使用IF EXISTS 子句以避免删除不存在的数据库时出现的MySQL错误信息 exists [ɪɡˈzɪst]
MySQL> drop database if exists `HA-test`; #如果存在则删除
Query OK, 0 rows affected, 1 warning (0.00 sec)
也可以在创建数据库时使用
MySQL> create database if not exists HA; #if not exists 如果不存在则创建
Query OK, 1 row affected (0.00 sec)
(二) 关于表的操作
1、创建表create:
语法:create table 表名 (字段名 类型, 字段名 类型, 字段名 类型);
MySQL> use HA;
Database changed
MySQL> create table student(id int(20),name char(40),age int);
Query OK, 0 rows affected (0.02 sec)
其中id字段(列)定义为整数类型,也就是说id字段的值为整数,name字段定义为字符类型,也就是说name字段的值只能输入字符型数据。
2、 查看表相关信息
MySQL> use HA;
Database changed
MySQL> show tables;
3、 查看表结构
使用desc 命令来查看表的结构
MySQL> desc student;
4、查看创建表执行的命令
MySQL> show create table student \G;
5、指定默认存储引擎和字符集
新建一个表,指定默认的存储引擎为InnoDB,编码为utf8
MySQL> create table student2(id int(20),name char(40),age int) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.02 sec)
MySQL> show create table student2 \G
6、 删除表
MySQL> drop table student2;
Query OK, 0 rows affected (0.01 sec)
7、 禁止预读表信息
没有禁止前转换数据库会有提示信息
MySQL> use MySQL;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with –A
解决这个问题可以在登陆MySQL的时候添加参数-A
[root@localhost ~]# MySQL -uroot -pAbcd1234 -A
MySQL> use MySQL;
Database changed #发现没有提示信息了
8、MySQL数据类型
数据类型的作用:用来约束将来录入数据的格式。
MySQL的常用数据类型包括整数类型,浮点数类型,日期和时间类型,字符串类型,ENUM枚举类型等。
数值类型:
日期和时间类型:
字符串类型:
char和varchar区别
char类型:
CHAR(M)定义的列的长度为固定的,M取值可以为0~255之间
当保存CHAR值时,一次性分配指定长度的存储空间,使用空格字符填充剩余空间。当检索到CHAR值时,尾部的空格被删除掉。
优点:
char定长字符存储,效率较高,比如手机号11位很适合
缺点:
定长长度的字符串比较浪费空间的
Varchar类型:
VARCHAR(M)定义的列的长度为可变长字符串,M取值可以为0~65535之间。
VARCHAR存储变长数据,保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则使用两个字节)。
如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么"+1"呢?这一个字节用于保存实际使用了多大的长度。
优点:
varchar相对char来讲更省空间
缺点:
在存数据时,效率低点
总结:从空间上考虑,用varchar合适;从效率上考虑,用char合适。
枚举类型:
枚举类型字段的值,必须从预先定义好的字符串集合中选取。
ENUM(value1, value2,value3,...)
ENUM(枚举):只能取一个,用于互斥。例如性别字段只能是男人或女人。
下面我们创建一个学生信息表,包括学号、姓名、性别、年龄、电话号码和住址字段,每个字段要有注释描述。
MySQL> create database db01;
MySQL> use db01
MySQL> create table stu_info(id int comment '学号', name varchar(20) comment '姓名', age tinyint comment '年龄', ', sex enum('男','女') comment '性别', phone_number char(11) comment '电话号码', address varchar(255) comment '住址') engine=innodb default charset=utf8;
MySQL> desc stu_info;
9、修改表名称 alter
语法:alter table 表名 rename 新表名;
修改db01库中stu_info表名为student_info
MySQL> alter table stu_info rename student_info;
Query OK, 0 rows affected (0.02 sec)
MySQL> show tables;
10、 修改表中的字段类型
语法:alter table 表名 modify 要修改的字段名要修改的类型;
查看student_info表结构
MySQL> desc student_info;
修改字段name 的varchar(20)字段类型为varchar(30)
MySQL> MySQL> alter table student_info modify name varchar(30);
查看修改完的student_info表结构
MySQL> desc student_info;
11、 修改表中的字段类型和字段名称
语法:alter table 表名 change 原字段名 新字段名 新字段类型;
MySQL> alter table student_info change age birthday datetime comment '出生日期';
MySQL> desc student_info;
注:CHANGE 和MODIFY的区别:
CHANGE 对列进行重命名和更改列的类型,需给定旧的列名称和新的列名称、数据类型。 MODIFY 可以改变列的类型,此时不需要重命名(不需给定新的列名称)
12、 在表中添加字段:
语法:alter table 表名 add字段名 字段类型;
enum #枚举类型,比如血型,只能在a、b、o、ab中选择。
MySQL> alter table student_info add blood_type enum('o','a', 'b', 'ab');
MySQL> desc student_info;
13、 在表中指定位置添加字段
(1) 在第一列添加一个字段
MySQL> alter table student_info add uid int first;
MySQL> desc student_info;
(2)在phone_number后面添加一个class字段
MySQL> alter table student_info add class char(40) after phone_number;
14、删除表中字段
语法:alter table 表名 drop 字段名 ;
MySQL> alter table student_info drop uid;
MySQL> desc student_info;
发现表中uid字段不见了
(三) 关于表中记录的操作
1、 插入记录——INSERT
INSERT INTO 语句用于向表中插入新的行。
语法:insert into 表名values (字段值1,字段值2, 字段值3);
插入记录时values所指定的值要和表中字段的个数、顺序以及类型要一一对应。
在student_info表中插入数据
MySQL> insert into student_info values(1,'tom','2005-11-11','男','13311111111','c100','北京市昌平区沙河镇','ab');
Query OK, 1 row affected (0.01 sec)
insert执行成功后,可以使用select查询表中的数据,select语句在后面会详细讲解。这里只要会用就可以。
MySQL> select * from student_info;
2、 同时插入多条记录
MySQL> insert into student_info values(2,'kim','2007-9-11','男','13522222222','c100','北京市朝阳区团结湖','o')); ,(3,'mary','2006-4-22','女','13522222222','c100','北京市昌平区政府街','b');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
查看插入的数据行
MySQL> select * from student_info;
3、 分开插入表记录
我们也可以指定所要插入数据的字段:
语法:
INSERT INTO table_name (字段1, 字段2,...) VALUES (字段值1, 字段值2,....)
例如:向students表中的id,name字段插入数据
MySQL> insert into student_info(id,name,sex,blood_type) values(4,'alice','女','ab');
Query OK, 1 row affected (0.00 sec)
查看插入的数据行
MySQL> select * from student_info;
4、 将一个表的查询结果插入另一个表中
创建t1表,将student_info表的查询结果插入到t1表
MySQL> create table t1(name varchar(30),sex enum('男','女'),class char(40));
MySQL> desc t1;
MySQL> insert into t1 (name,sex,class) select name,sex,class from student_info;
MySQL> select * from t1;
5、 查询表中记录——select
SELECT 语句用于从数据库表中读取数据。
语法:
select * from 表名; # *号表示表中所有的字段
(1) 查询student表中所有记录
事先创建students表,然后执行insert插入几行数据。
MySQL> select * from students;
(2) 当表中记录比较多时可以使用\G查看
MySQL> select * from student\G
(3)只查询表中某个字段或某些字段的内容
MySQL> select name from students;
MySQL> select id,name from students;
(4)查看别的数据库的表或者不在本数据库上进行查看
语法:SELECT 字段 FROM 数据库名.表名;
效果等同于先使用use数据库,然后再看看表内容
MySQL> select * from HA.students;
6、删除表中记录——delete
DELETE语句用于删除表中的记录。
语法:
DELETE FROM table_name WHERE some_column=some_value;
请注意 SQL语句中的 WHERE 条件子句!
WHERE 子句规定哪条记录或者哪些记录需要删除。如果您省略了 WHERE 子句,所有的记录都将被删除!
(1)删除students表中id为3的行
MySQL> delete from students where id=3;
Query OK, 1 row affected (0.00 sec)
MySQL> select * from students; #发现表中id为3的记录不见了
+------+--------+------+
| id | name | age |
+------+--------+------+
| 1 | zhangs | 21 |
| 2 | lis | 24 |
| 4 | hangl | NULL |
+------+--------+------+
3 rows in set (0.00 sec)
(2) 删除age为空的行
MySQL> delete from students where age is null;
Query OK, 1 row affected (0.00 sec)
MySQL> select * from students;
+------+--------+------+
| id | name | age |
+------+--------+------+
| 1 | zhangs | 21 |
| 2 | lis | 24 |
+------+--------+------+
2 rows in set (0.00 sec)
7、 更新记录——update
update 语句用于修改表中的数据。
语法:
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
请注意 SQL UPDATE 语句中的 WHERE 子句!
WHERE 子句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE 子句,所有的记录都将被更新!
(1) 把表中id为2的记录age更新为25
MySQL> update students set age=25 where id=2;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
MySQL> select * from students;
+------+--------+------+
| id | name | age |
+------+--------+------+
| 1 | zhangs | 21 |
| 2 | lis | 25 |
+------+--------+------+
2 rows in set (0.01 sec)
(2)把表中所有的id都更新为2
MySQL> update students set id=2;
Query OK, 1 row affected (0.01 sec)
Rows matched: 2 Changed: 1 Warnings: 0
MySQL> select * from students;
(3)同时更新多个字段的值,请使用逗号隔开
MySQL> update students set id=1,name='zhangsan' where age=21;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
MySQL> select * from students;
3、 SQL条件查询语句
首先往表中插入一些数据
MySQL> insert into students values(2,'lisi',23),(3,'wange',26),(4,'libin',28),(5,'tom',30),(6,'sorry',24);
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0
(1) 查询STUDENTS表中的NAME,AGE
MySQL> select name,age from students;
可以看到表中有重复的数据lisi
(2)去重复查询distinct
MySQL> select distinct name,age from students; #可以看见重复的行不在了
4、 使用AND和OR进行多条件查询
(1)查询表中id>3和age>25的记录
MySQL> select id,name,age from students where id>3 and age>25;
(2) 查询表中id>3 或者 age>25的记录
MySQL> select id,name,age from students where id>3 or age>25;
5、MySQL区分大小写查询binary
MySQL默认查询是不区分大小写的
BINARY是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写。
插入大写记录
MySQL> insert into students values(7,'KILL',32),(8,'kill',32);
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
MySQL> select name from students where name='kill';
区分大小写查询
MySQL> select * from students where binary name='kill';
MySQL> select * from students where binary name='KILL';
6、 MySQL查询排序
语法:select字段1,字段2 from 表名order by 字段名;
(1) 默认为升序asc
MySQL> select id from students order by id asc;
(2)降序desc
MySQL> select id from students order by id desc;
6、关于MySQL命令帮助
help会告诉我们很多使用方法和信息
MySQL> help show;
MySQL> help select;
相关文章:

Mysql基础语句
一、 MySQL语句 在熟悉安装及访问 MySQL 数据库以后, 接下来将学习使用 MySQL 数据库的基本操作,这也是在服务器运维工作中不可或缺的知识。 本节中的所有数据库语句均在“MySQL>”操作环境中执行 MySQL 是一套数据库管理系统,在每台 MySQ…...

连接池Java导包
目录 一、Java导包 二、 数据库连接池 1. 概述 2. 常见参数 3. 常见连接池 4. Druid连接池(重点) 核心功能: 使用方法: 导入依赖 配置连接池: 代码配置: 配置文件: 获取连接&#…...
一些耳朵起茧子的名词解释
1 web应用 1.1 web应用的概念 Web应用(Web Application) 是一种通过浏览器访问的软件程序,它运行在服务器上,用户通过网络(如互联网或内网)与它进行交互。与传统网站(主要提供静态内容&#x…...
HBuilderX中,VUE生成随机数字,vue调用随机数函数
Vue 中可以使用JavaScript的Math.random() 函数生成随机数,它会返回 0 到 1 之间的浮点数, 如果需要0到1000之前的随机数,可以对生成的随机数乘以1000,再用js的向下取整函数Math.floor() 。 let randNum Math.random(); // 生成…...
C#发送邮件
基础调用类: public class EmailHelper{/// <summary>/// 发件人名称/// </summary>public string MailName { get; set; }/// <summary>/// 收件人/// </summary>public string MailTo { get; set; }/// <summary>/// 密送/// <…...
2025-2-19学习笔记 : this关键字,constructor结构体,class类
1、This关键字 在 JavaScript 中,this 是一个关键字,其指向取决于函数的调用方式。理解 this 的指向对于编写正确的代码至关重要。以下是 this 在不同情况下的指向规则: 1. 全局函数调用 当函数在全局作用域中被调用时,this 指向…...

避坑:过早的文件结束符(EOF):解决“git clone龙蜥OS源码失败”的失败过程
避坑:过早的文件结束符(EOF):解决“git clone龙蜥OS源码失败”的失败过程 安装Anolis OS 8.9 下载AnolisOS-8.9-x86_64-dvd.iso并安装。 使用uname -a查看内核版本为5.10.134-18.an8.x86_64。 [rootlocalhost cloud-kernel]# c…...

【Quest开发】全身跟踪
软件:Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72 硬件:Meta Quest3 最终效果:能像meta的操作室沉浸场景一样根据头盔移动来推断用户姿势,实现走路、蹲下、手势匹配等功能 需要借助UnityMovement这个包 GitHub …...

通过BingAPI爬取Bing半个月内壁纸
通过BingAPI爬取Bing半个月内壁纸 一、前言二、爬虫代码三、代码说明 一、前言 爬取Bing搜索网站首页壁纸的方式主要有两种,第一种为间接爬取,即并不直接对Bing网站发起请求,而是对那些收集汇总了Bing壁纸的网站发起请求,爬取图片…...
Linux升级Anacodna并配置jupyterLab
在使用 Anaconda 的过程中,随着项目和需求的发展,可能需要升级 Anaconda 的 Base 环境中的 Python 版本。本文将详细介绍如何安全地进行升级,包括步骤、代码示例与最终流程图。 升级 Python 一、环境准备 在进行任何升级之前,建…...

ctfshow web入门 web11-web24
web11 web12 进来浏览网站,底部有一串数字,根据提示可能有用,访问robots.txt,发现禁止访问/admin/,进去看看发现需要输入用户名和密码,刚想爆破就猜对了,用户名是admin,密码是页面下…...
Windows 环境下配置多个不同版本的 Maven
在实际开发中,不同的项目可能需要使用不同版本的 Maven。例如,老项目可能依赖于 Maven 3.3,而新项目可能需要 Maven 3.8+ 才能正常运行。因此,在 Windows 下配置多个 Maven 版本并能方便地切换是非常必要的 1. 下载并安装多个 Maven 版本 1.1 下载 Maven 访问 Apache Mav…...

web入侵实战分析-常见web攻击类应急处置实验1
场景说明: 某天运维人员发现在/opt/tomcat8/webapps/test/目录下,多出了一个index_bak.jsp这个文件, 并告诉你如下信息 操作系统:ubuntu-16.04业务:测试站点中间件:tomcat开放端口:22&#x…...

适配器模式 Adapter Pattern
https://en.wikipedia.org/wiki/Adapter_pattern https://www.baeldung.com/java-adapter-pattern 适配器模式(也称为包装器「wrapper」,与装饰器模式「decorator pattern」共享的另一种命名),它允许将现有类的接口用作另一个接…...

Android 动态加入Activity 时 manifest 注册报错解决。使用manifestPlaceholders 占位
需求如下: 项目 测试demo 有多个渠道,部分渠道包含支付功能,在主测试代码外,需要一个单独 Activity 调用测试代码。 MainActivityPayActivity渠道A包含不包含渠道B包含包含 因为支付功能需要引入对应的 moudule,因此…...
芝加哥学派(Chicago School):金融与经济学的创新力量(中英双语)
芝加哥学派:金融与经济学的创新力量 在经济学和金融学的历史上,有一个学派的影响力不容忽视,那就是芝加哥学派(Chicago School)。芝加哥学派不仅在学术界广受推崇,也深刻影响了全球的经济政策和金融市场。…...

3分钟了解内外网文件传输:常见方法、注意事项有哪些?
内外网文件传输不仅是企业日常运营的基础设施,更是支持业务增长、创新和合规的关键工具。通过高效、安全的文件传输,企业能够更好地应对全球化协作、远程办公和数据安全等挑战,从而在竞争激烈的市场中保持领先地位。 一、内外网文件传输的常…...
Python学习心得常用的内置函数
常用的内置函数: 1.数据类型转换函数: 描述说明 描述说明 bool(obj) 获取指定对象 obj 的布尔值 str(obj) 将指定对象 obj 转成字符串类型 int(x) 将 x 转成 int 类型 float(x) 将 x 转成 float 类型 list(sequence) 将序列转成列表类型 tu…...

VMware Workstation16安装Centos7以及静态IP设置
配置虚拟机操作系统 1.创建新的虚拟机 -> 自定义配置,下一步 2. 选择虚拟机硬件兼容性 -> 默认,下一步 3.安装客户机操作系统 -> 稍后安装操作系统,下一步 4.选择客户机操作系统 -> LinuxCentOS7 64 位,下一步 5.命名…...
【核心算法篇十九】《 DeepSeek因果推断:双重差分模型如何破解政策评估的「时空难题」》
一、当AB实验不可行时,我们该相信什么?(因果推断困局解析) 假设某城市推出「夜间地铁免费」政策,市长想知道这个政策是否真的提升了夜间经济。这时候你会发现: 1️⃣ 无法克隆城市:不能同时存在一个「实施政策」和「不实施政策」的平行宇宙 2️⃣ 数据混杂严重:疫情反…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...