当前位置: 首页 > news >正文

MySQL运维实战(3.3) 管理数据库(database)

作者:俊达

引言

数据库的创建和管理是构建可靠数据的关键,关系到所存储数据的安全与稳定。在 MySQL 这个强大的关系型数据库系统中,数据库的创建与管理需要精准的步骤和妥善的配置。下面,将深入探讨如何使用MySQL 来管理数据库,我们不仅关注了基础的语法操作,还涉及了一些潜在的问题及实践,从创建数据库、授予权限到处理数据库名称大小写问题,再到配置数据库的属性等,带你走进数据库管理的正式通道。

1 创建数据库

使用create database语句创建数据库,用户拥有create权限才能创建数据库。

-- 例子:创建dba用户,拥有创建数据库名称为db_x的权限
mysql> create user 'dba'@'%' identified by 'dba';
Query OK, 0 rows affected (0.00 sec)mysql>  grant create on `db\__`.* to 'dba'@'%';
Query OK, 0 rows affected (0.00 sec)

授权时可指定授权的数据库名称,使用*表示所有数据库,使用_匹配一个字符,使用%匹配任意数量的字符。使用反斜杠()对_和%进行转意。
使用刚刚创建的账号创建数据库

[root@box3 ~]# mysql -udba -pdba -h172.16.20.51
Welcome to the MySQL monitor.  Commands end with ; or \g.mysql> create database biz_db;
ERROR 1044 (42000): Access denied for user 'dba'@'%' to database 'biz_db'mysql> create database db02;
ERROR 1044 (42000): Access denied for user 'dba'@'%' to database 'db02'mysql> create database db_x;
Query OK, 1 row affected (0.00 sec)mysql> create database db_y;
Query OK, 1 row affected (0.00 sec)mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db_x               |
| db_y               |
+--------------------+mysql> show grants;
+----------------------------------------+
| Grants for dba@%                       |
+----------------------------------------+
| GRANT USAGE ON *.* TO 'dba'@'%'        |
| GRANT CREATE ON `db\__`.* TO 'dba'@'%' |
+----------------------------------------+

创建数据库之后,会在datadir指定的路径创建数据库同名目录

mysql> show variables where variable_name in ('datadir');
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |[root@box1 mysql]# ls -ld /var/lib/mysql/db_*
drwxr-x---. 2 mysql mysql 20 4月   6 22:53 /var/lib/mysql/db_x
drwxr-x---. 2 mysql mysql 20 4月   6 22:58 /var/lib/mysql/db_y

2 数据库名称的大小写问题

数据库名称是否区分大小写?这跟文件系统文件名是否区分大小写有关。
linux系统下(ext系统文件系统、xfs),文件名称区分大小写,默认lower_case_tables_names设置为0,mysql数据库名称区分大小写。

mysql> show variables like '%lower_case%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 0     |
+------------------------+-------+mysql> create database biz_db;
Query OK, 1 row affected (0.00 sec)mysql> create database Biz_db;
Query OK, 1 row affected (0.00 sec)mysql> show databases like '%iz%';
+-----------------+
| Database (%iz%) |
+-----------------+
| Biz_db          |
| biz_db          |
+-----------------+mysql> use BIZ_DB
ERROR 1049 (42000): Unknown database 'BIZ_DB'mysql> use Biz_db
Database changed[root@box1 mysql]# ls -ld /var/lib/mysql/*iz_db
drwxr-x---. 2 mysql mysql 20 4月   6 23:03 /var/lib/mysql/biz_db
drwxr-x---. 2 mysql mysql 20 4月   6 23:03 /var/lib/mysql/Biz_db

lower_case_file_system是一个只读参数。会根据mysql所在文件系统的特性设置相应的值。

mysql> set global lower_case_file_system=ON;
ERROR 1238 (HY000): Variable 'lower_case_file_system' is a read only variable

如果把lower_case_file_system配置到配置文件,实例会无法启动

[root@box1 mysql]# service mysqld restart
Redirecting to /bin/systemctl restart mysqld.service
Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.2021-04-07T03:14:52.203804Z 0 [ERROR] unknown variable 'lower_case_file_system=ON'
2021-04-07T03:16:09.587798Z 0 [ERROR] unknown option '--lower_case_file_system'
2021-04-07T03:18:06.738497Z 0 [ERROR] unknown option '--lower-case-file-system'

如果参数lower_case_table_names设置为1,则数据库名称和表名不区分大小写。

mysql> show variables like '%lower_case%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 1     |
+------------------------+-------+
2 rows in set (0.03 sec)mysql> create database USER_DB;
Query OK, 1 row affected (0.01 sec)mysql> create database user_db;
ERROR 1007 (HY000): Cant create database 'user_db'; database exists[root@box1 mysql]# ls -ld /var/lib/mysql/*db
drwxr-x---. 2 mysql mysql 20 4月   7 01:35 /var/lib/mysql/user_db

注意事项

对已有的数据库实例修改lower_case_table_names参数,可能会出现问题。

1、lower_case_table_names从0改到1
将参数从0改成1,如果原来的数据库中存在大写的数据库名或表名,修改参数后将无法访问这些数据库和表。

mysql> show variables like '%lower%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 1     |
+------------------------+-------+mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| ORDER_DB           |mysql> use ORDER_DB;
ERROR 1049 (42000): Unknown database 'order_db'

2、lower_case_table_names从1改到0
将参数从1改成0,则原先的库、表都是以小写方式存在。如果SQL语句中使用大写的方式访问这些库表,会报错。

mysql> show variables like '%lower%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 0     |
+------------------------+-------+
2 rows in set (0.00 sec)mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| tab           |
+---------------+
1 row in set (0.00 sec)mysql> select * from Tab;
ERROR 1146 (42S02): Table 'db1.Tab' doesnt existmysql> select * from tab;
+------+------+
| col  | COL2 |
+------+------+
| tab  | tab  |
+------+------+
1 row in set (0.00 sec)

3、将数据库迁移到不同的环境时,如果新老环境的lower_case_table_names参数不一样,则有可能会发生问题。
比如windows和linux环境下,lower_case_table_names参数的默认值不一样,换操作系统时,可能会遇到问题。
4、建议将所有环境的lower_case_table_names参数都设置成1。 数据库名称、表的名称只使用小写字符。

关于windows

在windows系统中,文件名不区分大小写,默认lower_case_table_names也为1,对应的数据库也不区分大小写。

mysql> show variables like '%lower%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | ON    |
| lower_case_table_names | 1     |
+------------------------+-------+
2 rows in set, 1 warning (0.00 sec)mysql> create database biz_db;
Query OK, 1 row affected (0.00 sec)mysql> create database Biz_db;
ERROR 1007 (HY000): Cant create database 'biz_db'; database existsmysql> create database ORDER_DB;
Query OK, 1 row affected (0.00 sec)mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| biz_db             |
| mysql              |
| order_db           |
| performance_schema |
| sys                |
+--------------------+

3 数据库的属性

创建数据库时,可以指定数据库的默认字符集和排序规则。

mysql> create database db_0;
Query OK, 1 row affected (0.00 sec)mysql> create database db_1 default charset utf8;
Query OK, 1 row affected (0.00 sec)mysql> create database db_2 default charset utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)mysql> show create database db_0;
+----------+-----------------------------------------------------------------+
| Database | Create Database                                                 |
+----------+-----------------------------------------------------------------+
| db_0     | CREATE DATABASE `db_0` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+-----------------------------------------------------------------+
1 row in set (0.00 sec)mysql> show create database db_1;
+----------+---------------------------------------------------------------+
| Database | Create Database                                               |
+----------+---------------------------------------------------------------+
| db_1     | CREATE DATABASE `db_1` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+---------------------------------------------------------------+
1 row in set (0.00 sec)mysql> show create database db_2;
+----------+--------------------------------------------------------------------------------+
| Database | Create Database                                                                |
+----------+--------------------------------------------------------------------------------+
| db_2     | CREATE DATABASE `db_2` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */ |
+----------+--------------------------------------------------------------------------------+

数据库的字符集和collate属性保存在数据库目录下的db.opt文件中(8.0版本的机制有所变化,不再有db.opt文件,元数据存储在系统表中,系统表的存储引擎为innodb)

[root@box1 mysql]# ls -l /var/lib/mysql/db_?/db.opt
-rw-r-----. 1 mysql mysql 65 4月   7 02:07 /var/lib/mysql/db_0/db.opt
-rw-r-----. 1 mysql mysql 61 4月   7 02:07 /var/lib/mysql/db_1/db.opt
-rw-r-----. 1 mysql mysql 54 4月   7 02:07 /var/lib/mysql/db_2/db.opt[root@box1 mysql]# more /var/lib/mysql/db_?/db.opt
::::::::::::::
/var/lib/mysql/db_0/db.opt
::::::::::::::
default-character-set=latin1
default-collation=latin1_swedish_ci
::::::::::::::
/var/lib/mysql/db_1/db.opt
::::::::::::::
default-character-set=utf8
default-collation=utf8_general_ci
::::::::::::::
/var/lib/mysql/db_2/db.opt
::::::::::::::
default-character-set=utf8
default-collation=utf8_bin

mysql建表时如果不指定字符集和collate,会使用所在数据库的默认字符集和collate。
建议创建数据库的时候 就指定数据库的字符集和collate。

4 数据库其他相关操作

1.切换当前数据库

在mysql client中,使用use命令切换当前数据库。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| db_0               |
| db_1               |
| db_2               |mysql> use db_0;
Database changed

2.查看当前数据库

使用函数database()或schema()查看会话当前所在数据库

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 -ADatabase changedmysql> select schema();
+----------+
| schema() |
+----------+
| mysql    |
+----------+
1 row in set (0.00 sec)mysql> select database();
+------------+
| database() |
+------------+
| mysql      |
+------------+
1 row in set (0.00 sec)

3.修改数据库默认属性

mysql> alter database db_0 default charset utf8;
Query OK, 1 row affected (0.00 sec)mysql> show create database db_0;
+----------+---------------------------------------------------------------+
| Database | Create Database                                               |
+----------+---------------------------------------------------------------+
| db_0     | CREATE DATABASE `db_0` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+---------------------------------------------------------------+
1 row in set (0.00 sec)mysql> alter database db_0 default collate utf8_bin;
Query OK, 1 row affected (0.00 sec)mysql> show create database db_0;
+----------+--------------------------------------------------------------------------------+
| Database | Create Database                                                                |
+----------+--------------------------------------------------------------------------------+
| db_0     | CREATE DATABASE `db_0` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */ |
+----------+--------------------------------------------------------------------------------+
1 row in set (0.00 sec)mysql> alter database db_0 default collate latin1_bin;
Query OK, 1 row affected (0.00 sec)mysql> show create database db_0;
+----------+------------------------------------------------------------------------------------+
| Database | Create Database                                                                    |
+----------+------------------------------------------------------------------------------------+
| db_0     | CREATE DATABASE `db_0` /*!40100 DEFAULT CHARACTER SET latin1 COLLATE latin1_bin */ |
+----------+------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

4.删除数据库

使用drop命令删除数据库。删除需要drop权限。经过测试,5.7.32版本,需要drop on *.*的权限才能成功执行drop database命令。

grant drop on *.* to 'dba'@'%';[root@box3 ~]# mysql -udba -pdba -h172.16.20.51
mysql> drop database db_0;
Query OK, 0 rows affected (0.00 sec)

账号有db_2的drop权限,但无法删除该数据库:

mysql> show grants;
+----------------------------------------------+
| Grants for dba@%                             |
+----------------------------------------------+
| GRANT USAGE ON *.* TO 'dba'@'%'              |
| GRANT DELETE, DROP ON `mysql`.* TO 'dba'@'%' |
| GRANT CREATE ON `db\__`.* TO 'dba'@'%'       |
| GRANT DROP ON `db_1`.* TO 'dba'@'%'          |
| GRANT DROP ON `db_x`.* TO 'dba'@'%'          |
| GRANT DROP ON `db_2`.* TO 'dba'@'%'          |
+----------------------------------------------+
6 rows in set (0.00 sec)mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db_2               |
| mysql              |
+--------------------+
3 rows in set (0.00 sec)mysql> drop database db_2;
ERROR 1044 (42000): Access denied for user 'dba'@'%' to database 'db_2'

删除数据库是一项高危操作,生产环境下需要严格规范删除数据库的操作流程,以下是一些关键点需要注意:
1、权限控制:严格控制drop database的权限,确保只有授权人员能够执行这一操作。
2、递归删除:drop database会递归删除数据库内的所有对象,包括表、视图等。执行前需确认清楚删除的对象。
3、性能影响:在数据库内有大量表或表占用大量空间时,drop database可能对数据库实例性能产生负面影响,影响正常业务访问。需在低峰期执行,或者考虑分阶段删除。
4、误删除恢复:误删除后的恢复比较耗时,因此在执行drop database前,应该经过仔细确认和备份,以减少误操作的可能性。
5、备份策略:始终确保有可靠的数据库备份。如果没有备份,误删除可能导致数据无法恢复。

更多技术信息请查看云掣官网https://yunche.pro/?t=yrgw

相关文章:

MySQL运维实战(3.3) 管理数据库(database)

作者:俊达 引言 数据库的创建和管理是构建可靠数据的关键,关系到所存储数据的安全与稳定。在 MySQL 这个强大的关系型数据库系统中,数据库的创建与管理需要精准的步骤和妥善的配置。下面,将深入探讨如何使用MySQL 来管理数据库&…...

Web3去中心化存储:重新定义云服务

随着Web3技术的崭露头角,去中心化存储正在成为数字时代云服务的全新范式。传统的云服务依赖于中心化的数据存储架构,而Web3的去中心化存储则为用户带来了更安全、更隐私、更可靠的数据管理方式,重新定义了云服务的未来。 1.摒弃中心化的弊端 …...

纸尿裤行业调研:预计到2024年提高至68.1%

母婴大消费是指围绕孕产妇和0-14岁婴幼童人群,贯穿孕产妇孕产及产后护理周期、婴幼童成长周期的满足其衣、食、住、行、用、玩、教等需求的消费品的总和。 不同产品消费频次各异,纸尿裤是母婴大消费中的最为高频且刚需的易耗品。当前,消费升…...

目标检测数据集 - 行人检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍:行人检测数据集,真实场景高质量图片数据,涉及场景丰富,比如校园行人、街景行人、道路行人、遮挡行人、严重遮挡行人数据;适用实际项目应用:公共场所监控场景下行人检测项目,以及作为…...

重磅!巨匠纺品鉴正式签约“体坛冠军程晨”为品牌形象代言人

2024年,巨匠纺品鉴打响品牌营销开年第一战,携手全国啦啦操冠军程晨,强势开启“冠军品牌、冠军优选、冠军品质”中国年,实现品牌战略全面升级,全力传递"冠军品质"的品牌精神,拓展品牌影响力的深度和广度,为品…...

亚信安慧AntDB超融合框架——数智化时代数据库管理的新里程碑

在信息科技飞速发展的时代,亚信科技AntDB团队提出了一项颠覆性的“超融合”理念,旨在满足企业日益增长的复杂混合负载和多样化数据类型的业务需求。这一创新性框架的核心思想在于融合多引擎和多能力,充分发挥分布式数据库引擎的架构优势&…...

设计模式之命令模式【行为型模式】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档> 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某…...

肯尼斯·里科《C和指针》第6章 指针(4)实例

肯尼斯里科《C和指针》第6章 指针&#xff08;1&#xff09;-CSDN博客 肯尼斯里科《C和指针》第6章 指针&#xff08;2&#xff09;-CSDN博客 肯尼斯里科《C和指针》第6章 指针&#xff08;3&#xff09;-CSDN博客 6.12 实例 /* ** 计算一个字符串的长度。 */ #include <…...

diffusers flask streamlit 简洁可视化文生图页面

参考: https://python-bloggers.com/2022/12/stable-diffusion-application-with-streamlit/ https://github.com/LowinLi/stable-diffusion-streamlit 项目结构 本项目很简洁,暂时每次只能返回一张图片;gpu资源T4 16g;测试下来基本也只能支持同时一个人使用 flask:作为…...

ubuntu 使用VNC链接树莓派

ubuntu PC端安装remina sudo apt-add-repository ppa:remmina-ppa-team/remmina-next 然后&#xff0c;运行以下命令来安装 Remmina 软件包&#xff1a; sudo apt update sudo apt install remmina remmina-plugin-rdp remmina-plugin-secret flatpak run -- pkill remmina p…...

水利部:加大北斗、无人机等安全监测新技术的应用推广

水利部&#xff1a;加大北斗、无人机等安全监测新技术的应用推广 近日&#xff0c;水利部召开2023年水库安全管理情况新闻发布会。会上&#xff0c;副部长刘伟平介绍有关情况&#xff0c;并与水利工程建设司、运行管理司、水旱灾害防御司负责人回答记者提问。   为了高质量…...

如何定位和优化程序CPU、内存等性能之巅

摘要 性能优化指在不影响系统运行正确性的前提下&#xff0c;使之运行得更快&#xff0c;完成特定功能所需的时间更短&#xff0c;或拥有更强大的服务能力。本文将介绍性能优化的基本概念以及如何定位和优化程序中的CPU、内存和IO瓶颈。 引言 随着计算机系统的日益复杂和应用…...

一体机旅游景区污水处理设备工艺说明

一体机旅游景区污水处理设备工艺说明 原水浓度&#xff1a;COD≤500mg/L&#xff0c;BOD≤300mg/L&#xff0c;NH3-N≤40mg/L&#xff0c;超过以上浓度需另行设计。 出水标准&#xff1a;COD≤60mg/L&#xff0c;BOD≤20mg/L&#xff0c;NH3-N≤15mg/L&#xff0c;出水要求如更…...

java返回文件时为图片或pdf等设置在线预览或下载

设置Content-Disposition响应头类型 "inline"查看预览 &#xff1b; "attachment"下载&#xff1b; inline&#xff1a;表示回复中的消息体会以页面的一部分或者整个页面的形式展示 attchment&#xff1a;以附件形式被下载到本地&#xff1b;/*** 文件或图…...

微信公众号对接--客服消息

当你关注公众号&#xff0c;然后在公众号里面发送消息&#xff0c;会收到回复&#xff0c;这个就是客服消息 参考文档:接收普通消息 接收事件推送 客服接口-发消息 想要对接客服消息&#xff0c;首先要获取access_token,这个可以参考我之前的文章:对接微信公众号-CSDN博客 回…...

花几分钟整点jmeter花活,轻松超越90%软件测试

jmeter 可以做性能测试&#xff0c;这个很多人都知道&#xff0c;那你知道&#xff0c;jmeter 可以在启动运行时&#xff0c;指定线程数和运行时间&#xff0c;自定义性能场景吗&#xff1f; jmeter 性能测试&#xff0c;动态设定性能场景 平时&#xff0c;我们使用 jmeter 进…...

类脑研究之脑组成及神经系统相关理论!大脑是什么?大脑和脑有什么区别?大脑皮层和脑膜什么关系?人的神经系统有哪些?

目录 1 引言2 神经系统3 脑组成3.1 大脑成分3.2 大脑外部&#xff1a;脑膜3.3 大脑中部&#xff1a;大脑皮层3.4 大脑内部3.5 脑干3.6 小脑 1 引言 为了深入研究类脑&#xff0c;必须了解大脑的结构和机制。从神经系统分级和脑组成两个角度出发&#xff0c;详细介绍了大脑的生…...

【Vue按键修饰符详细介绍】

Vue按键修饰符详细介绍 1. 按键修饰符2. 实现原理3. 使用方法4. 常用的按键修饰符5. 自定义按键修饰符6. 系统修饰键7. 事件修饰符的链式使用8. .exact 修饰符 1. 按键修饰符 Vue.js 中的按键修饰符使得键盘事件处理变得十分简单&#xff0c;它们通常与 v-on 指令&#xff08;…...

url 地址中的敏感信息脱敏处理

url 跳转时&#xff0c;系统自动加密解密处理&#xff0c;适用于调用方不适合加密处理的情况 // 定义一个名为encodeURIUrlParams的函数 encodeURIUrlParams() { // 创建一个URLSearchParams对象&#xff0c;该对象用于处理URL的查询字符串部分 const urlParams new URLS…...

慢速 HTTP 攻击 Slow HTTP Attack

漏洞名称 &#xff1a;Slow Http attack、慢速攻击 漏洞描述&#xff1a;慢速攻击基于HTTP协议&#xff0c;通过精心的设计和构造&#xff0c;这种特殊的请求包会造成服务器延时&#xff0c;而当服务器负载能力消耗过大即会导致拒绝服务。HTTP协议规定&#xff0c;HTTP Reques…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

c# 局部函数 定义、功能与示例

C# 局部函数&#xff1a;定义、功能与示例 1. 定义与功能 局部函数&#xff08;Local Function&#xff09;是嵌套在另一个方法内部的私有方法&#xff0c;仅在包含它的方法内可见。 • 作用&#xff1a;封装仅用于当前方法的逻辑&#xff0c;避免污染类作用域&#xff0c;提升…...

32单片机——基本定时器

STM32F103有众多的定时器&#xff0c;其中包括2个基本定时器&#xff08;TIM6和TIM7&#xff09;、4个通用定时器&#xff08;TIM2~TIM5&#xff09;、2个高级控制定时器&#xff08;TIM1和TIM8&#xff09;&#xff0c;这些定时器彼此完全独立&#xff0c;不共享任何资源 1、定…...

车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...