MySQL8.0.40编译安装
近期MySQL发布了8.0.40版本,与之前的版本相比,部分依赖包发生了变化,因此重新编译一版,也便于大家参考。
1. 下载源码
选择对应的版本、选择源码、操作系统
如果没有登录或者没有MySQL官网账号,可以选择只下载
2. 进行编译
上传至机器,解压源码
tar -zxvf mysql-boost-8.0.40.tar.gz
2.1 准备阶段
因为编译安装需要cmake、make等命令,因此需提前安装相关依赖包及命令
yum install cmake make gcc gcc-c++ autoconf bison automake \
openssl openssl-devel zlib* fiex* libxml* \
ncurses-devel libmcrypt* libtool-ltdl-devel* -y
yum install gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binu
tils gcc-toolset-12-annobin-annocheck gcc-toolset-12-annobin-plugin-gcc -y 由于MySQL从8.0.16版本开始,要求cmake的版本是cmake3以上,gcc版本为gcc 11.*以上版本,而且MySQL8.0.40的gcc需要12.*版本,因此如果使用Centos7等较低版本的操作系统,cmake及gcc g++版本较低,需要升级后才能编译。相关包升级附在文末
创建相关目录
mkdir /usr/local/mysql mkdir -p /data/mysql/mysql3306/{data,logs,tmp,etc}
2.2 编译检查阶段
开始编译
cmake -DINSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql/mysql3306/data \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql3306/tmp/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DWITH_INNODB_STORAGE_ENGINE=1 -DWITH_EXTRA_CHARSETS=all \
-DFORCE_INSPECT=1 \
-DCONNECT_WITH_SYSTEMD=OFF \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_unicode_ci \
-DWITH_BOOST=/usr/local/mysql-8.0.40/boost/boost_1_77_0 \
-DENABLE_DOWNLOADS=1
出现报错
-- Running cmake version 3.26.5
-- This is .el9. as found from 'rpm -qf /'
-- Looking for a devtoolset compiler
-- Using /opt/rh/gcc-toolset-12/root/usr/bin/gcc
-- Using /opt/rh/gcc-toolset-12/root/usr/bin/g++
-- CMAKE_MODULE_PATH is /usr/local/mysql-8.0.40/cmake
-- MySQL 8.0.40
-- The C compiler identification is GNU 12.2.1
-- The CXX compiler identification is GNU 12.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /opt/rh/gcc-toolset-12/root/usr/bin/gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /opt/rh/gcc-toolset-12/root/usr/bin/g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Source directory /usr/local/mysql-8.0.40
-- Binary directory /usr/local/mysql-8.0.40
CMake Error at CMakeLists.txt:642 (MESSAGE):Please do not build in-source. Out-of source builds are highlyrecommended: you can have multiple builds for the same source, and there isan easy way to do cleanup, simply remove the build directory (note that'make clean' or 'make distclean' does *not* work)You *can* force in-source build by invoking cmake with-DFORCE_INSOURCE_BUILD=1
因此加上 -DFORCE_INSOURCE_BUILD=1 再编译一次
cmake -DINSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql/mysql3306/data \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql3306/tmp/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DWITH_INNODB_STORAGE_ENGINE=1 -DWITH_EXTRA_CHARSETS=all \
-DFORCE_INSPECT=1 \
-DCONNECT_WITH_SYSTEMD=OFF \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_unicode_ci \
-DWITH_BOOST=/usr/local/mysql-8.0.40/boost/boost_1_77_0 \
-DENABLE_DOWNLOADS=1 \
-DFORCE_INSOURCE_BUILD=1
出现如下新报错信息
CMake Error at cmake/readline.cmake:93 (MESSAGE):Curses library not found. Please install appropriate package,remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
Call Stack (most recent call first):cmake/readline.cmake:127 (FIND_CURSES)cmake/readline.cmake:221 (MYSQL_USE_BUNDLED_EDITLINE)CMakeLists.txt:1929 (MYSQL_CHECK_EDITLINE)-- Configuring incomplete, errors occurred!
缺少ncurses-devel依赖包所致,按照提示进行安装
yum install -y ncurses-devel*
再次编译出现新错误
缺少依赖,继续补充
yum install libtirpc* -y
安装后依旧报错(因为我的操作系统yum安装时没有libtirpc-devel),因此我选择查询出源码里的rpc.h文件,直接软连接到 /usr/include/ ,不建议这么操作,如果可以下载对应的安装包,建议安装依赖包
find / -name rpc.h
/usr/local/mysql-8.0.40/extra/libevent/libevent-2.1.11-stable/include/event2/rpc.h
/usr/local/mysql-8.0.40/extra/tirpc/libtirpc-1.3.5/tirpc/rpc/rpc.h
/usr/local/mysql-8.0.40/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/windeps/sunrpc/rpc/rpc.h
ln -s /usr/local/mysql-8.0.40/extra/tirpc/libtirpc-1.3.5/tirpc/rpc/rpc.h /usr/include/rpc/rpc.h
效果确实有效,继续进行编译,出现新问题:
CMake Warning at cmake/rpc.cmake:30 (MESSAGE):Cannot find rpcgen executable. You need to install the required packages:Debian/Ubuntu: apt install rpcsvc-protoRedHat/Fedora/Oracle Linux: yum install rpcgenSuSE: zypper install glibc-develCall Stack (most recent call first):plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:113 (WARN_MISSING_RPCGEN_EXECUTABLE)plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)CMake Error at plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:114 (MESSAGE):Could not find rpcgen
Call Stack (most recent call first):plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)
继续安装依赖包
yum install glibc-devel rpcgen -y
直至build完成
2.3 进行编译及安装
开始make进行编译,为了加快点速度,我启用2个核心进行编译
make -j 2
编译过程中出现新问题
/usr/include/rpc/rpc.h:38:10: fatal error: rpc/types.h: No such file or directory38 | #include <rpc/types.h> /* some typedefs */| ^~~~~~~~~~~~~
compilation terminated.
make[2]: *** [plugin/group_replication/libmysqlgcs/CMakeFiles/mysqlgcs.dir/build.make:99: plugin/group_replication/libmysqlgcs/CMakeFiles/mysqlgcs.dir/src/bindings/xcom/xcom/pax_msg.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:14468: plugin/group_replication/libmysqlgcs/CMakeFiles/mysqlgcs.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 14%] Built target oci_common_objlib
make: *** [Makefile:166: all] Error 2
主要是前面的rpc依赖处理所致,因此将rpc目录下所有文件都拷贝进来
cp -rp /usr/local/mysql-8.0.40/extra/tirpc/libtirpc-1.3.5/tirpc/rpc /usr/include/rpc
In file included from /usr/include/rpc/rpc.h:38,from /usr/local/mysql-8.0.40/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/pax_msg.cc:28:
/usr/include/rpc/types.h:98:10: fatal error: netconfig.h: No such file or directory98 | #include <netconfig.h>| ^~~~~~~~~~~~~
compilation terminated.
make[2]: *** [plugin/group_replication/libmysqlgcs/CMakeFiles/mysqlgcs.dir/build.make:99: plugin/group_replication/libmysqlgcs/CMakeFiles/mysqlgcs.dir/src/bindings/xcom/xcom/pax_msg.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:14468: plugin/group_replication/libmysqlgcs/CMakeFiles/mysqlgcs.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 15%] Linking CXX static library librpl_channel_credentials_lib.a
[ 15%] Built target rpl_channel_credentials_lib
make: *** [Makefile:166: all] Error 2
继续复制依赖文件
cp -rp /usr/local/mysql-8.0.40/extra/tirpc/libtirpc-1.3.5/tirpc/netconfig.h /usr/include/
完成后顺利进行编译。出现如下信息:
继续进行make install
make install
完成后结果如下
编译后MySQL内容如下
3. 安装数据库
创建数据库相关目录及配置文件
mkdir -p /data/mysql/mysql3306/{data,logs,tmp,etc}
配置文件按需添加放在etc/my.cnf中
创建mysql用户并将数据库目录授权
useradd mysql
chown -R mysql:mysql /data/mysql/
初始化数据库
cd /usr/local/mysql
bin/mysqld --defaults-file=/data/mysql/mysql3306/etc/my.cnf --initialize --user=mysql
如果无异常,则在数据库日志中可以查看初始化的root@localhost账号密码
登录数据库并修改密码
4. 补充部分依赖安装问题
4.1 cmake3
centos7系统中cmake预装版本较低,而编译8.0.40时需要更cmake3版本,如果无法通过yum install安装时,需要自己下载安装包进行安装
例如我在Centos7系统上用的3.15.5版本,可以通过如下命令下载
wget https://down.24kplus.com/linux/cmake/cmake-3.15.5.tar.gz
再解压、编译、安装即可
wget https://down.24kplus.com/linux/cmake/cmake-3.15.5.tar.gztar -zxvf cmake-3.15.5.tar.gz cd cmake-3.15.5./bootstrap --prefix=/usr --datadir=share/cmake --docdir=doc/cmake && makemake install
完成后检查cmake版本
4.2 gcc
对于gcc版本,MySQL8.0.40之前gcc11即可,8.0.40版本开始需要gcc12,如果可以yum方式直接安装比较方便,如果不能则需要临时调整到高版本yum源进行安装或下载安装包进行安装。本次使用的调整yum源的方式,步骤如下:
yum install scl-utils
yum install centos-release-scl centos-release-scl-rh
修改配置文件
vim /etc/yum.repos.d/CentOS-SCLo-scl.repo
添加如下内容
[centos-sclo-sclo]
name=CentOS-7 - SCLo sclo
baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/sclo/$basearch/sclo/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo[centos-sclo-sclo-testing]
name=CentOS-7 - SCLo sclo Testing
baseurl=http://buildlogs.centos.org/centos/7/sclo/$basearch/sclo/
gpgcheck=0
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo[centos-sclo-sclo-source]
name=CentOS-7 - SCLo sclo Sources
baseurl=http://vault.centos.org/centos/7/sclo/Source/sclo/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo[centos-sclo-sclo-debuginfo]
name=CentOS-7 - SCLo sclo Debuginfo
baseurl=http://debuginfo.centos.org/centos/7/sclo/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
再添加repo文件
vim /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo
添加如下内容
# CentOS-SCLo-rh.repo
#
# Please see http://wiki.centos.org/SpecialInterestGroup/SCLo for more
# information[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/sclo/$basearch/rh/
# mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-rh
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo[centos-sclo-rh-testing]
name=CentOS-7 - SCLo rh Testing
baseurl=http://buildlogs.centos.org/centos/7/sclo/$basearch/rh/
gpgcheck=0
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo[centos-sclo-rh-source]
name=CentOS-7 - SCLo rh Sources
baseurl=http://vault.centos.org/centos/7/sclo/Source/rh/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo[centos-sclo-rh-debuginfo]
name=CentOS-7 - SCLo rh Debuginfo
baseurl=http://debuginfo.centos.org/centos/7/sclo/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
重建yum元数据缓存
yum clean all
yum makecache
安装gcc g++
yum install devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutils -y
4.3 libtirpc-devel
由于在Roky9上直接yum方式无libtirpc-devel包,因此手动下载安装包进行安装。需要用和libtirpc版本一致的,如果不一致,则缺少依赖。因此我直接将2个包都下载并安装
wget http://rpmfind.net/linux/centos-stream/9-stream/BaseOS/x86_64/os/Packages/libtirpc-1.3.3-9.el9.x86_64.rpm
wget https://mirrors.tuna.tsinghua.edu.cn/centos-stream/9-stream/CRB/x86_64/os/Packages/libtirpc-devel-1.3.3-6.el9.x86_64.rpm
再本地安装
yum localinstall libtirpc-1.3.3-9.el9.x86_64.rpm
yum localinstall -y libtirpc-devel-1.3.3-9.el9.x86_64.rpm
4.4 重新构建及编译
由于我在构建和编译过程中有的包不存在或版本不对应,因此进行过一次重编译,及cmake时添加fresh选项
cmake --fresh -DINSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql/mysql3306/data \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql3306/tmp/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DWITH_INNODB_STORAGE_ENGINE=1 -DWITH_EXTRA_CHARSETS=all \
-DFORCE_INSPECT=1 \
-DCONNECT_WITH_SYSTEMD=OFF \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_unicode_ci \
-DWITH_BOOST=/usr/local/mysql-8.0.40/boost/boost_1_77_0 \
-DENABLE_DOWNLOADS=1 \
-DFORCE_INSOURCE_BUILD=1
相关文章:

MySQL8.0.40编译安装
近期MySQL发布了8.0.40版本,与之前的版本相比,部分依赖包发生了变化,因此重新编译一版,也便于大家参考。 1. 下载源码 选择对应的版本、选择源码、操作系统 如果没有登录或者没有MySQL官网账号,可以选择只下载 2. 进…...
JavaScript 第23章:WebSocket 与实时通讯
在JavaScript中使用WebSocket进行实时通信是一个非常实用且强大的功能。下面我们将详细介绍WebSocket协议的基础知识、如何使用WebSocket对象以及如何构建一个简单的实时通信应用。 WebSocket 协议 WebSocket是一个在单个TCP连接上进行全双工通信的协议。WebSocket使得数据可…...
简单汇编教程10 数组
目录 实践:相加连续的数 数组是在内存中连续的一串变量。我这样说,可能你已经想到的大致的定义了: NUMBERS DW 34, 45, 56, 67, 75, 89 现在我们就定义了一个Number数组,里面存放的连续的六个数字:34, 45, 56, …...

Jsoup在Java中:解析京东网站数据
对于电商网站如京东来说,其页面上的数据包含了丰富的商业洞察。对于开发者而言,能够从这些网站中提取有价值的信息,进行分析和应用,无疑是一项重要的技能。本文将介绍如何使用Java中的Jsoup库来解析京东网站的数据。 Jsoup简介 …...

SQL 干货 | SQL 反连接
最强大的 SQL 功能之一是 JOIN 操作,它提供了一种优雅而简单的方法,将一个表中的每一条记录与另一个表中的每一条记录结合起来。不过,有时我们可能想从一个表中找到另一个表中没有的值。正如我们将在今天的博客文章中看到的,通过包…...

JSON 反对序列化 public final class LocalDateTime 日期格式错误
错误日志为: java.lang.RuntimeException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of java.time.LocalDateTime (no Creators, like default construct, exist): no String-argument constructor/factory meth…...
Java 集合
1. 集合框架概述 集合框架(Collection Framework) 是 Java 中为处理一组对象而设计的一套标准化 API,它包括一组通用的接口、实现类和算法。这些接口和类为各种数据结构和操作方法提供了统一的实现方式,使得开发者可以轻松地对数…...

爬虫日常实战
爬取美团新闻信息,此处采用两种方法实现: 注意点:因为此处的数据都是动态数据,所以一定要考虑好向下滑动数据包会更新的情况,不然就只能读取当前页即第一页数据,方法一通过更新ajax数据包网址页数…...

复写零--双指针
一:题目描述 题目链接:. - 力扣(LeetCode) 二:算法原理分析 三:代码编写 void duplicateZeros3(vector<int>& arr) {int dest -1, cur 0, n arr.size();//1.找到要复写的最后一个数字while …...

跟着小土堆学习pytorch(二)——TensorBoard和Transform
文章目录 一、TensorBoard1.1 add_scalar()1.1,1 报错:TypeError: MessageToJson() got an unexpected keyword argument including_default_value_fields1.1.2 图像重叠1.1.3 代码展示 1.2 add_image()1.2.1 代码 二、transform2.1 介绍——对图片进行一些变化2.2 …...

自由学习记录(10)
Sprite Packer ~Mode & 图集 packer Project Setting经常是金屋藏娇 创建的项目如果不是2d项目,则默认disable打包 编辑模式就是你没点运行看游戏效果,在狼狈敲码创对象写逻辑的那个状态, 运行模式从点了|>之后,就一直…...
Redis提供了专门的命令来实现自增操作
Redis中的自增操作并不是直接通过CAS(Compare and Set)操作实现的。Redis提供了专门的命令来实现自增操作,这些命令能够确保操作的原子性,而不需要显式地使用CAS机制。 Redis中的自增操作 Redis中的自增操作主要依赖于以下几个命…...

uniapp修改input中placeholder样式
Uniapp官方提供了两种修改的属性方法,但经过测试,只有 placeholder-class 属性能够生效 <input placeholder"请输入手机验证码" placeholder-class"input-placeholder"/><!-- css --> <style lang"scss" s…...

GenerativeU:生成式开放目标检测
论文:https://arxiv.org/abs/2403.10191 代码:https://github.com/FoundationVision/GenerateU 感想 目标检测任务已经逐渐从闭集场景专项开集场景,在LLM加持下,速读越来越快。该方法仍然依赖于预先定义的类别,这意味着…...

element plus e-table表格中使用多选,当翻页时已选中的数据丢失
摘要: 点击第一页选中两个,再选择第二页,选中,回到第一页,之前选中的要保留! element ui table 解决办法: :row-key“getRowKeys” (写在el-table中) methods中声明 ge…...

CentOS 7 网络连接显示“以太网(ens33)不可用”
1.创建linux虚拟机,配置网络和主机名显示" 以太网(ens33,被拔出)" 2.桌面右键此电脑,管理,找到“服务和应用程序”,点击“服务”,找到下图两个服务,点击圈起来…...

qt QNetworkProxy详解
一、概述 QNetworkProxy通过设置代理类型、主机、端口和认证信息,可以使应用程序的所有网络请求通过代理服务器进行。它支持为Qt网络类(如QAbstractSocket、QTcpSocket、QUdpSocket、QTcpServer、QNetworkAccessManager等)配置网络层代理支持…...

推荐IDE中实用AI编程插件,目前无限次使用
插件介绍 一款字节跳动推出的“基于豆包大模型的智能开发工具” 以vscode介绍【pycharm等都可以啊】,这个插件提供智能补全、智能预测、智能问答等能力,节省开发时间 直接在IDE中使用,就不用在网页中来回切换了 感觉还可以,响应速…...
【华为HCIP实战课程十五】OSPF的环路避免及虚链路,网络工程师
一、避免域间路由环路 1、区域内部的防环:区域内同步了LSA,SPF就决定了区域内部没有环路 2、区间的防环机制:非正常的ABR不更新3类LSA 为防止区域间的环路OSPF定义了骨干区域和非骨干区域和三类LSA的传递规则 1)、OSPF划分了骨干区域和非骨干区域,所有非骨干区域均直接…...

【编程语言】正则表达式:POSIX 与 PCRE 的全面比较及应用
目录 正则表达式:POSIX 与 PCRE 的全面比较及应用1. 正则表达式的基本概念1.1 基本元素1.2 正则表达式的历史 2. POSIX 正则表达式2.1 POSIX 正则表达式的语法2.1.1 基本正则表达式 (BRE)2.1.2 扩展正则表达式 (ERE) 2.2 POSIX 正则表达式的使用场景2.3 使用 POSIX …...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...