Re:Mysql数据库基础篇(一):CentOS/Linux 环境下的完整安装/运行/登录Mysql流程与首次登录异常处理

作者:小此方日期:2026/6/7

◆ 博主名称: 小此方-CSDN博客

大家好,欢迎来到小此方的博客。

⭐️Linux系列个人专栏: 【主题曲】Mysql

⭐️此方的GitHub: github_此方

⭐️Re系列专栏:我们思考 (Rethink) · 我们重建 (Rebuild) · 我们记录 (Record)


文章目录

  • 概要&序論
  • 一、下载准备工作
    • 1.1 查看和卸载你的机器上原有的Mysql
      • 1.1.1 检查旧版本运行状态
        • 1.1.2 关闭正在运行的旧服务
        • 1.1.3 查看并卸载已有安装包
        • 1.1.4 检查配置文件及数据残留
    • 1.2 下载 yum 源
      • 1.2.1 定位官方软件仓库与版本筛选
        • 1.2.2 上传至 Linux 服务器
        • 1.2.3 部署官方 YUM 源文件
        • 1.2.4 验证安装后的源状态
  • 二、安装与登录Mysql
    • 2.1一键安装
      • 2.1.1解决密钥过期问题
        • 2.1.2 检查 MySQL 的状态
    • 2.2 首次登录与配置调整
      • 2.2.1登录引发权限问题
        • 2.2.2方法一:获取临时密码
        • 2.2.3方法二:直接登录尝试
        • 2.2.4方法三:绕过权限认证
  • 三、边缘问题解答
      • 问题 1:当你把配置文件里面的端口号改了以后,为什么以前的网络远程客户端无法访问了,而为什么在同一台机器上的客户端却可以正常访问?
    • 问题2:如何设置开机启动?
    • 问题3:如何退出

概要&序論

本文详细介绍在 Linux 系统上完整部署、配置与调试 MySQL 数据库的全流程。

  • 详解旧版本 MySQL 的运行状态检查、服务关闭与残留配置文件卸载方法;
  • 演示 MySQL 一键安装包部署及密钥过期问题的解决方案;
  • 剖析首次登录引发的权限问题,并提供临时密码、直接登录及绕过权限认证三种核心调整方法;
  • 解答修改配置文件端口号失败与设置开机自启等边缘运维问题。

好的,我们开始吧。

一、下载准备工作

1.1 查看和卸载你的机器上原有的Mysql

在在 Linux 系统上安装全新的 MySQL 之前,首先需要彻底检查系统中是否已经存在正在运行的 MySQL 或其开源分支 MariaDB 进程。 如果存在旧的版本或者残余的安装包,必须先将其安全关闭并进行彻底卸载,以防止后续安装新版本时发生端口冲突、依赖冲突或配置覆盖等问题。

1.1.1 检查旧版本运行状态

1. 检查 MySQL 进程:
使用 ps axj | grep mysql 命令可以筛选出所有与 MySQL 相关的进程。

1[root@VM-0-9-opencloudos ~]# ps axj | grep mysql
21371073 1371358 1371357 1371073 pts/0    1371357 S+        0   0:00 grep --color=auto mysql
3

结果分析: 输出中仅有一条包含 grep --color=auto mysql 的记录,这说明当前系统上并没有真正运行的 MySQL 服务的后台进程。

2. 检查 MariaDB 进程:
MariaDB 是 MySQL 的一个开源分支,在许多主流 Linux 发行版中常被作为默认数据库内置安装。因此也需要专门对其进行检查:

1[root@VM-0-9-opencloudos ~]# ps axj | grep mariadb
21371073 1371525 1371524 1371073 pts/0    1371524 S+        0   0:00 grep --color=auto mariadb
3

结果分析: 同样,输出仅显示了 grep 过滤命令自身,表明系统中也没有正在运行的 MariaDB 进程。

1.1.2 关闭正在运行的旧服务

重要提示: 卸载原有的 MySQL 或 MariaDB 之前,必须先手动关闭它,且该操作对权限要求较高,需要切换至 root 用户或使用 sudo 提升权限。

如果你的系统在第一步中查出了正在运行的数据库进程,请执行以下命令停止服务:

1[root@VM-0-9-opencloudos ~]# systemctl stop mysqld
2Failed to stop mysqld.service: Unit mysqld.service not loaded.
3

结果分析: 系统提示 Unit mysqld.service not loaded(服务未加载),再次印证了当前系统此前并未安装或未启动 mysqld 服务。

1.1.3 查看并卸载已有安装包

即使服务没有运行,系统里也可能残留有通过包管理器安装的静态安装包。 我们需要通过 RPM 机制将其检索并一并清除。

1. 检索系统内已安装的 MySQL 关联包:

1[root@VM-0-9-opencloudos ~]# rpm -qa | grep mysql
2

结果分析: 命令执行后没有任何回显,说明当前系统没有通过 rpm 安装任何带有 “mysql” 关键字的软件包。

标准环境下的卸载补充说明:
如果在您的机器上运行 rpm -qa | grep mysql 后列出了具体的安装包,则需要将其送入后面的卸载程序。
推荐使用以下高效的一键式卸载组合命令(该命令会利用 xargs 将查找到的每一个安装包名称作为参数传给卸载程序,且 yum -y remove 会在卸载过程中不再询问确认):
rpm -qa | grep mysql | xargs yum -y remove

1.1.4 检查配置文件及数据残留

为了确保“干净”的全新安装环境,除了卸载软件包外,还要重点检查历史遗留的全局配置文件以及数据存放目录。

1. 检查全局配置文件路径 /etc/my.cnf
通常,MySQL 的核心配置都保存在该文件中。

1[root@VM-0-9-opencloudos ~]# ls /etc/my.cnf
2ls: cannot access '/etc/my.cnf': No such file or directory
3

2. 检查数据存储目录 /var/lib/mysql/
该目录用来存放数据库的表结构、数据文件以及服务证书等。

1[root@VM-0-9-opencloudos ~]# ls  /var/lib/mysql/
2ls: cannot access '/var/lib/mysql/': No such file or directory
3

结论: 经过全面的排查,本机器当前无任何运行中的 MySQL/MariaDB 进程,无相关的 rpm 安装包,且无历史配置与数据残留。这表明当前的系统环境非常纯净,符合直接下载和部署新源的准备要求。

(注意:若在实际机器中发现 /var/lib/mysql/ 存在残留数据文件且确实不再需要,可以使用重命名备份的方式进行处理,如 mv /var/lib/mysql /var/lib/mysql.bak,以此确保新环境不会受历史脏数据影响)

1.2 下载 yum 源

1.2.1 定位官方软件仓库与版本筛选

下载版本必须与操作系统匹配。查看我们下系统版本:

我们可以通过浏览器访问 MySQL 官方的源下载入口:http://repo.mysql.com/。由于网页显示限制,建议查看网页源代码。
锁定你的系统版本;我们通过 hostnamectl 已经查明当前运行的系统为 OpenCloudOS 9.4,因此,我们需要在列表中找到 mysql80-community-release-el9-1.noarch.rpm 这一行并点击下载至本地 Windows 电脑中。

1.2.2 上传至 Linux 服务器

在本地成功获取到对应的 .rpm 源安装包后,我们需要将其传递到 Linux 环境下的专属文件夹内。首先,在 root 用户家目录下为本次安装创建独立的目录。

1[root@VM-0-9-opencloudos ~]# mkdir Mysql
2[root@VM-0-9-opencloudos ~]# tree
3.
4└── Mysql
5
61 directory, 0 files
7[root@VM-0-9-opencloudos ~]# cd Mysql
8

进入新建的 Mysql 文件夹后,利用传输工具把刚才下载到 Windows 本地的安装包拖拽上传:

1[root@VM-0-9-opencloudos Mysql]# rz
2


文件传输完毕后,执行 ls -l 检查文件的大小与完整性:

1[root@VM-0-9-opencloudos Mysql]# ls -l
2total 12
3-rw-r--r-- 1 root root 10534 Jun  3 11:18 mysql80-community-release-el9-1.noarch.rpm
4

1.2.3 部署官方 YUM 源文件

在正式部署之前,我们可以先观察一下系统当前处于“未安装前”的初始源状态。查看系统存放源配置的全局目录 /etc/yum.repos.d/

1[root@VM-0-9-opencloudos Mysql]# ls /etc/yum.repos.d/ -al
2total 40
3drwxr-xr-x  2 root root   115 May  5 10:57 .
4drwxr-xr-x 94 root root  8192 May 27 13:32 ..
5-rw-r--r--  1 root root 15822 May  5 10:57 acb56602e5db580ace217147a335f5bb.jpg
6-rw-r--r--  1 root root   869 Jun 19  2025 epol.repo
7-rw-r--r--  1 root root  1101 Nov 21  2025 epol.repo.rpmnew
8-rw-r--r--  1 root root  2897 Jun 19  2025 OpenCloudOS.repo
9

接下来,通过 rpm -ivh 命令正式把这个“官方商店”安装进系统:

1[root@VM-0-9-opencloudos Mysql]# rpm -ivh mysql80-community-release-el9-1.noarch.rpm
2warning: mysql80-community-release-el9-1.noarch.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY
3Verifying...                                ################################# [100%]
4Preparing...                                ################################# [100%]
5Updating / installing...
6   1:mysql80-community-release-el9-1  ################################# [100%]
7

(注:安装过程中出现的 NOKEY 警告是由于尚未导入 MySQL 官方的 GPG 密钥文件,不影响软件源的正常写入,属于正常现象。)

1.2.4 验证安装后的源状态

安装完成后,我们再次使用 ls /etc/yum.repos.d/ -al 命令查看源目录的变化:

1[root@VM-0-9-opencloudos Mysql]# ls /etc/yum.repos.d/ -al
2total 52
3drwxr-xr-x  2 root root   216 Jun  3 11:24 .
4drwxr-xr-x 94 root root  8192 May 27 13:32 ..
5-rw-r--r--  1 root root 15822 May  5 10:57 acb56602e5db580ace217147a335f5bb.jpg
6-rw-r--r--  1 root root   869 Jun 19  2025 epol.repo
7-rw-r--r--  1 root root  1101 Nov 21  2025 epol.repo.rpmnew
8-rw-r--r--  1 root root   951 Jul  6  2022 mysql-community-debuginfo.repo
9-rw-r--r--  1 root root   827 Jul  6  2022 mysql-community.repo
10-rw-r--r--  1 root root   871 Jul  6  2022 mysql-community-source.repo
11-rw-r--r--  1 root root  2897 Jun 19  2025 OpenCloudOS.repo
12

此时多了 3 个以 mysql-community 开头的全新 .repo 配置文件第一个:支持直接安装Mysql,第二个:支持安装Mysql周边内容

二、安装与登录Mysql

2.1一键安装

yum install -y mysql-community-server

2.1.1解决密钥过期问题

1Import of key(s) didn't help, wrong key(s)?
2Public key for mysql-community-client-8.0.46-1.el9.x86_64.rpm is not installed. Failing package is: mysql-community-client-8.0.46-1.el9.x86_64
3 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
4Public key for mysql-community-client-plugins-8.0.46-1.el9.x86_64.rpm is not installed. Failing package is: mysql-community-client-plugins-8.0.46-1.el9.x86_64
5 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
6Public key for mysql-community-common-8.0.46-1.el9.x86_64.rpm is not installed. Failing package is: mysql-community-common-8.0.46-1.el9.x86_64
7 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
8Public key for mysql-community-icu-data-files-8.0.46-1.el9.x86_64.rpm is not installed. Failing package is: mysql-community-icu-data-files-8.0.46-1.el9.x86_64
9 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
10Public key for mysql-community-libs-8.0.46-1.el9.x86_64.rpm is not installed. Failing package is: mysql-community-libs-8.0.46-1.el9.x86_64
11 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
12Public key for mysql-community-server-8.0.46-1.el9.x86_64.rpm is not installed. Failing package is: mysql-community-server-8.0.46-1.el9.x86_64
13 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
14The downloaded packages were saved in cache until the next successful transaction.
15You can remove cached packages by executing 'yum clean packages'.
16Error: GPG check FAILED
17

oh,很不幸,出错了,什么问题?密钥过期了。解决方案: 导入最新密钥。

1# 导入 2023  2025 的密钥
2rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
3rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2025
4

2.1.2 检查 MySQL 的状态

在成功解决密钥过期问题并完成一键安装后,我们需要检查 MySQL 服务是否正确安装,并确认其可执行文件及配置文件的分布情况。

1. 验证配置文件与可执行程序:
首先,我们可以通过 ls /etc/my.cnf 确认全局配置文件是否已经生成:

1[root@bite-alicloud MySQL]# ls /etc/my.cnf
2/etc/my.cnf
3

接着,使用 which 命令查找 MySQL 服务端核心程序 mysqld 的安装路径:

1[root@bite-alicloud MySQL]# which mysqld
2/sbin/mysqld
3

2. 服务端与用户端的区别:
为了更深入地理解 MySQL 的程序结构,我们可以分别查看服务端 mysqld 与客户端 mysql 程序的所在路径:

1[root@bite-alicloud MySQL]# which mysqld
2/sbin/mysqld
3[root@bite-alicloud MySQL]# which mysql
4/bin/mysql
5
  • 服务端 (/sbin/mysqld):位于 sbin(Superuser Binaries)目录下,这意味着它是超级管理员专属的可执行程序,通常只有超级管理员(root)权限才能够直接启动和管理该系统服务。
  • 用户端 (/bin/mysql):位于 bin 目录下,属于通用用户端工具,系统中任何普通用户都可以运行该程序来连接和访问数据库。

3. 启动并查看服务进程:
使用 systemctl start mysqld 命令正式启动 MySQL 守护进程。启动后,利用 ps axj | grep mysqld 检查其在后台的运行状态:

1[root@bite-alicloud MySQL]# systemctl start mysqld
2[root@bite-alicloud MySQL]# ps axj | grep mysqld
3    1  3468  3467  3467 ?           -1 Sl     27   0:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
4 2728  3497  3496  2660 pts/0     3496 R+        0   0:00 grep --color=auto mysqld
5

结果分析: 此时可以清晰地看到 /usr/sbin/mysqld 已经作为守护进程成功在后台异步启动,且关联的进程 ID(PID)为 3468

4. 查看服务端默认网络端口号:
在确认进程启动后,我们需要进一步验证它是否正常监听了网络端口。使用 netstat -nltp 命令过滤网络状态:

1[root@bite-alicloud MySQL]# ll
2total 0
3[root@bite-alicloud MySQL]# netstat -nltp
4Active Internet connections (only servers)
5Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
6tcp        0      0 0.0.0.0:80              0.0.0.0:* LISTEN      824/httpd
7tcp        0      0 0.0.0.0:22              0.0.0.0:* LISTEN      1038/sshd
8tcp6       0      0 :::3306                 :::* LISTEN      3468/mysqld
9

结果分析: 最后一行的网络监听信息显示,MySQL 服务端进程(PID 3468)正处于 LISTEN 状态,其默认的服务端口号为 3306

2.2 首次登录与配置调整

2.2.1登录引发权限问题

在完成上述步骤后,MySQL 已经开始正常对外服务。然而,当我们直接尝试使用管理员身份进行登录时,会遇到权限拦截:

1[root@bite-alicloud MySQL]# mysql -u root -p
2Enter password: 
3ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
4

问题分析: 由于 MySQL 8.0 及高版本引入了更严格的安全策略,默认情况下无法直接通过无密码或不正确的密码安全登入。

接下来的方法一、二、三跟着我的步骤来,如果前者不行就用后者,再不行就再后者。

接下来的方法一、二、三跟着我的步骤来,如果前者不行就用后者,再不行就再后者。

2.2.2方法一:获取临时密码

获取临时root密码

1sudo grep 'temporary password' /var/log/mysqld.log
2

执行后如果能看到类似下方的日志记录,其中 root@localhost: 后面的字符串就是生成的临时密码:

12021-04-12T03:23:46.153263Z 1 [Note] A temporary password is generated for root@localhost: yLMaLT:v+5l*
2

使用临时密码登录

1mysql -uroot -p
2

在提示 Enter password: 后,输入(或复制鼠标右键粘贴)上面获取到的临时密码并回车即可。

2.2.3方法二:直接登录尝试

如果你安装的是最新的 mysql,没有所谓的临时密码,root 默认没有密码。试着直接 client 登陆一下:

1mysql 
2

在提示输入密码时直接敲回车,看看能否直接进入 MySQL 命令行。

2.2.4方法三:绕过权限认证

对全局配置文件进行临时调整。使用vim打开 /etc/my.cnf

1[root@bite-alicloud MySQL]# vim /etc/my.cnf
2

在配置文件的 [mysqld] 模块下方,我们需要添加一条绕过权限认证的指令,同时规范服务端的编码格式和默认存储引擎。在核心配置区域追加或修改如下内容:

1[mysqld]
2# 核心路径与日志配置
3datadir=/var/lib/mysql               # MySQL 在未来建表建库时的真实数据存放路径
4socket=/var/lib/mysql/mysql.sock
5log-error=/var/log/mysqld.log        # 错误日志存放路径
6pid-file=/var/run/mysqld/mysqld.pid  # pid文件路径
7
8# 权限规避与核心运行配置
9skip-grant-tables                    # 跳过密码权限认证表(临时用于免密登录)
10port=3333                            # 在企业环境中,为了保证数据安全通常会修改默认端口号(此处示例修改为3333)
11character-set-server=utf8            # 设置服务端的默认编码格式
12default-storage-engine=innodb        # 设置后台的默认存储引擎为 InnoDB
13

注意: 在配置文件的 [mysql] 客户端模块中,可能会看到 #default-character-set=utf8 的相关注释。由于某些特定版本的 mysql 客户端存在汉字不回显的 Bug,此处我们暂不设置该项,保持默认即可。

修改完配置文件后,必须将服务重新启动才能使这些配置生效。我们可以使用 stop 配合 start,或者直接使用 restart 命令来快速重启服务:

1[root@bite-alicloud MySQL]# systemctl stop mysqld
2[root@bite-alicloud MySQL]# systemctl start mysqld
3# 或者直接:systemctl restart mysqld
4

重启成功后,再次通过 netstat -nltp 验证端口状态:

1[root@bite-alicloud MySQL]# netstat -nltp
2Active Internet connections (only servers)
3Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
4tcp        0      0 0.0.0.0:80              0.0.0.0:* LISTEN      824/httpd
5tcp        0      0 0.0.0.0:22              0.0.0.0:* LISTEN      1038/sshd
6tcp6       0      0 :::3333                 :::* LISTEN      3646/mysqld
7

结果分析: 端口已由旧的 3306 变为 3333,这表明端口更新成功。此时,在 skip-grant-tables 的作用下,再次执行 mysql -u root -p 并在要求输入密码时直接敲击回车,即可成功免密切入 MySQL 内部。
登录成功后,可以使用 show databases; 命令查看系统当前存在的数据库:

1mysql> show databases;
2+--------------------+
3| Database           |
4+--------------------+
5| information_schema |
6| 102_db             |
7| bit_index          |
8| myisam_db          |
9| mysql              |
10| oj                 |
11| performance_schema |
12| scott              |
13+--------------------+
148 rows in set (0.01 sec)
15

结果分析: 可以清楚地看到系统内部保留的所有数据库。即使后续进行了服务升级或重启,存放在 datadir(如 /var/lib/mysql)下的历史数据库与表数据也不会被删除或丢失

三、边缘问题解答

问题 1:当你把配置文件里面的端口号改了以后,为什么以前的网络远程客户端无法访问了,而为什么在同一台机器上的客户端却可以正常访问?

这是因为客户端在连接 MySQL 服务端时,存在两条截然不同的访问路径

连接路径类型第一条路:走网络(TCP/IP 协议)第二条路:走内部秘密通道(Unix Socket)
适用场景远程访问(如 Windows 连 Linux),或者本机通过 -h 127.0.0.1 强行指定走网络。客户端和服务器在同一台 Linux 机器上,且你直接输入 mysql 登录而不指定 IP。
通信媒介必须通过“IP + 端口号”。端口一旦修改,旧客户端必须同步修改,否则无法通信。不看端口号,它看的是一个特殊的本地文件(通常叫 mysql.sock)。

问题2:如何设置开机启动?

1#开启开机启动
2systemctl enable mysqld
3systemctl daemon-reload
4

问题3:如何退出

1ctrl + d
2

好的本期内容就到这里,如果对你有帮助,还不要忘记点赞三联支持。我是此方,我们下期再见。bye!


Re:Mysql数据库基础篇(一):CentOS/Linux 环境下的完整安装/运行/登录Mysql流程与首次登录异常处理》 是转载文章,点击查看原文


相关推荐


金融系统数据一致性之战:联机交易与批量作业的冲突处理完全指南
无心水2026/6/1

金融系统数据一致性之战:联机交易与批量作业的冲突处理完全指南 关键词:金融系统 数据一致性 联机交易 批量作业 乐观锁 悲观锁 热点账户 分布式事务 死锁避免 阅读建议:本文约12000字,配有7张Mermaid流程图和2张对比表格,建议先收藏再阅读。 📑 目录 引言:一个夜间批量引发的血案冲突根源分析:联机与批量的“三座大山”六大核心策略详解 3.1 乐观锁:轻量级的“版本裁判”3.2 悲观锁:霸道的“行级门禁”3.3 物理/逻辑隔离:错峰与状态控制3.4 串行化处


本地4B开源模型,把任何App当Skil用!告 别token焦虑,私密性强~
AI袋鼠帝2026/5/10

​ 大家好,我是袋鼠帝。 上次给大家分享了一个CUA的开源项目,能让AI Agent直接操控电脑界面,相当于把任何App都变成Agent的Skill。反响还不错。 开源Turix,你可以把任何App当Agent Skill用!比如微信... 但评论区有两个比较多的反馈: 太耗token了。 截图上去,安全吗? 说实话,这两个问题,我自己用下来也发现了,GUI操作确实耗token。 模型要持续截屏、理解界面、定位元素、执行操作,每一步都在烧token。 特别是在全自动编程流程里,有数据表明,GU


Flutter for OpenHarmony 跨平台开发:记事本功能实战指南
liulian09162026/5/1

Flutter for OpenHarmony 跨平台开发:记事本功能实战指南 欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net 一、引言 记事本是移动设备中最基础且常用的应用之一,其开发涉及数据存储、列表展示、搜索过滤、状态管理等多个技术领域。随着鸿蒙生态的快速发展,如何高效地实现跨平台记事本应用,成为开发者关注的技术要点。 Flutter作为Google推出的开源UI框架,凭借其跨平台能力和丰富的组件生态,为记事本功能的实现提供


linux之进程优先与切换调度
feng_you_ying_li2026/4/22

1.进程优先优先级 是进程得到CPU的先后顺序,由于CPU少但进程多,因此要通过优先级确定谁先谁后的问题。 (1)优先级VS权限 优先级:得到资源的前提下获取资源的先后问题。 权限:能否得到某种资源的资格。 优先级在struct_task中是一个整形,其的值越低表明优先级越高,反之越低。 (2)基于时间片的分时操作系统 每一个进程依次占用CPU的时间是有限的,即时间片的时间到了该进程就只能等下一轮了。 OS在分配顺序时要考虑公平性,即进程的优先级可能会发生变化,但变化的幅度不能太


【节点】[SquareRoot节点]原理解析与实际应用
SmalBox2026/4/13

【Unity Shader Graph 使用与特效实现】专栏-直达 SquareRoot节点核心功能与数学原理 SquareRoot节点是Unity ShaderGraph中用于执行平方根运算的基础数学工具,其核心功能为接收输入值(标量或向量)并返回各分量的平方根结果。数学表达式为:输出值 = √输入值。该运算在图形渲染中具有明确的物理意义,常用于距离衰减、光照强度调节等场景。 技术原理解析 ‌硬件加速‌:基于HLSL的sqrt函数实现,直接调用GPU硬件优化指令,相较于组合运算(如乘方再开


告别Vibe Coding:为什么SDD(Spec-Driven Development)才是AI项目开发的正确打开方式
码事漫谈2026/4/5

从Vibe Coding的混沌中醒来,拥抱确定性 一段似曾相识的对话 “帮我加个深色模式。” “好的,已添加深色模式。” ——半小时后,你发现深色模式把所有的图标都反色了,按钮不见了,而白色模式下的文字变成了灰色。 “不对,我说的是只改背景,不改图标和文字...” “明白了,已修复。” ——十分钟后,深色模式是好了,但白色模式下那个新加的按钮消失了。 “你把我白色模式的样式也改了?” “抱歉,我重新实现...” 这不是段子,这是无数开发者正在经历的日常。这就是所谓的 Vibe Coding—


构建无障碍组件之Tabs Pattern
anOnion2026/3/28

标签页(Tabs)是一种分层的内容展示组件,通过标签列表(Tab List)和对应的内容面板(Tab Panel)来组织和展示内容。本文基于 W3C WAI-ARIA Tabs Pattern 规范,详解如何构建无障碍的标签页组件。 一、Tabs 的定义与核心概念 1.1 什么是 Tabs Tabs 是一种将内容分层展示的界面模式: Tab List(标签列表):包含一组标签元素的容器 Tab(标签):作为对应内容面板的标签,激活后显示该面板 Tab Panel(标签面板):包含与标签关联的内


GitHub Copilot SDK 入门:五分钟构建你的第一个 AI Agent
乱世不浮生2026/3/20

TL;DR The core value of the GitHub Copilot SDK is not the convenience of "calling an LLM" (that's already been solved by the OpenAI SDK, LangChain, etc.), but rather providing a production-proven Agent runtime. The problems it actually solves are: O


【浏览器MCP组件】 chrome-devtools的快捷方式和MCP配置
伊玛目的门徒2026/3/11

创建Chrome调试快捷方式 右键点击桌面空白处,选择"新建"-"快捷方式"。在目标位置输入以下命令: C:\Users\luke\AppData\Local\ms-playwright\chromium-1208\chrome-win64\chrome.exe --remote-debugging-port=9222 --user-data-dir="%USERPROFILE%\ChromeDebugProfile" 为快捷方式命名,例如"Chrome调试模式"。双击此快捷方式将启动指定版


从零开始的Web3学习 10| Solidity 视图和纯函数 (View and Pure Functions)
庭前云落2026/3/3

在 Solidity 中,view 和 pure 是用于修饰函数的关键字,它们描述了函数对区块链状态的读写行为。正确使用这两个修饰符可以提高代码的可读性,并帮助编译器进行静态检查。 1. view 函数 承诺:不修改状态,但可以读取状态变量。允许的操作: 读取状态变量(如 uint public data)。调用其他 view 或 pure 函数。访问 address(this).balance 或 block.number 等区块链数据(这些不属于“状态修改”)。 禁止的操作:任何会改变状态的

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 聚合阅读