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

MySQL8.0.40编译安装

近期MySQL发布了8.0.40版本,与之前的版本相比,部分依赖包发生了变化,因此重新编译一版,也便于大家参考。

1.  下载源码

选择对应的版本、选择源码、操作系统

8874702349cd1552f7851a537270c5ea.png

如果没有登录或者没有MySQL官网账号,可以选择只下载

dbc3aa163cec3a42c4e232274e15a443.png

2.  进行编译

上传至机器,解压源码

 
tar -zxvf  mysql-boost-8.0.40.tar.gz

17ad8132e9e24e9f02b95e065e47a687.png

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!

b0b69dc563cfb98302d8092602bc5f58.png缺少ncurses-devel依赖包所致,按照提示进行安装

 
yum install -y  ncurses-devel*

再次编译出现新错误

341476a7c7d1dfbb9558cc1b707e1a6b.png

缺少依赖,继续补充

 
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

badecc8265957f7dadee03f4ea9a8a88.png效果确实有效,继续进行编译,出现新问题:

 
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完成

80be87a39733796434eb6ad5d24f4d7d.png

2.3  进行编译及安装

开始make进行编译,为了加快点速度,我启用2个核心进行编译

 
make -j 2

6090c793f178c2b0110d95484c3e9fe0.png编译过程中出现新问题

 
/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

eb94f1292ec02ed9e0a286af0db7ff82.png主要是前面的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

e4509d9efbe1a7c24dabce93dfb47132.png继续复制依赖文件

cp  -rp /usr/local/mysql-8.0.40/extra/tirpc/libtirpc-1.3.5/tirpc/netconfig.h /usr/include/

ea6373e60a24645b569be9095345ebb5.png完成后顺利进行编译。出现如下信息:

2455d44e6ad75491dadf82aa6650369f.png

继续进行make  install

 
make  install

完成后结果如下

d4b62b01b2771af75a6dfb8103817da9.png

编译后MySQL内容如下

b6ab99f9458f8e71faba57db223d20e3.png

5bfcc6c424321a1fa6929330b6787f01.png

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账号密码

登录数据库并修改密码

6fad27732f949973859d1901df29de57.png

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版本

4bdd36d4178ccf47a0df06fae47d0852.png

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版本&#xff0c;与之前的版本相比&#xff0c;部分依赖包发生了变化&#xff0c;因此重新编译一版&#xff0c;也便于大家参考。 1. 下载源码 选择对应的版本、选择源码、操作系统 如果没有登录或者没有MySQL官网账号&#xff0c;可以选择只下载 2. 进…...

JavaScript 第23章:WebSocket 与实时通讯

在JavaScript中使用WebSocket进行实时通信是一个非常实用且强大的功能。下面我们将详细介绍WebSocket协议的基础知识、如何使用WebSocket对象以及如何构建一个简单的实时通信应用。 WebSocket 协议 WebSocket是一个在单个TCP连接上进行全双工通信的协议。WebSocket使得数据可…...

简单汇编教程10 数组

目录 实践&#xff1a;相加连续的数 数组是在内存中连续的一串变量。我这样说&#xff0c;可能你已经想到的大致的定义了&#xff1a; NUMBERS DW 34, 45, 56, 67, 75, 89 现在我们就定义了一个Number数组&#xff0c;里面存放的连续的六个数字&#xff1a;34, 45, 56, …...

Jsoup在Java中:解析京东网站数据

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

SQL 干货 | SQL 反连接

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

JSON 反对序列化 public final class LocalDateTime 日期格式错误

错误日志为&#xff1a; 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. 集合框架概述 集合框架&#xff08;Collection Framework&#xff09; 是 Java 中为处理一组对象而设计的一套标准化 API&#xff0c;它包括一组通用的接口、实现类和算法。这些接口和类为各种数据结构和操作方法提供了统一的实现方式&#xff0c;使得开发者可以轻松地对数…...

爬虫日常实战

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

复写零--双指针

一&#xff1a;题目描述 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 二&#xff1a;算法原理分析 三&#xff1a;代码编写 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 报错&#xff1a;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项目&#xff0c;则默认disable打包 编辑模式就是你没点运行看游戏效果&#xff0c;在狼狈敲码创对象写逻辑的那个状态&#xff0c; 运行模式从点了|>之后&#xff0c;就一直…...

Redis提供了专门的命令来实现自增操作

Redis中的自增操作并不是直接通过CAS&#xff08;Compare and Set&#xff09;操作实现的。Redis提供了专门的命令来实现自增操作&#xff0c;这些命令能够确保操作的原子性&#xff0c;而不需要显式地使用CAS机制。 Redis中的自增操作 Redis中的自增操作主要依赖于以下几个命…...

uniapp修改input中placeholder样式

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

GenerativeU:生成式开放目标检测

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

element plus e-table表格中使用多选,当翻页时已选中的数据丢失

摘要&#xff1a; 点击第一页选中两个&#xff0c;再选择第二页&#xff0c;选中&#xff0c;回到第一页&#xff0c;之前选中的要保留&#xff01; element ui table 解决办法&#xff1a; :row-key“getRowKeys” &#xff08;写在el-table中&#xff09; methods中声明 ge…...

CentOS 7 网络连接显示“以太网(ens33)不可用”

1.创建linux虚拟机&#xff0c;配置网络和主机名显示" 以太网&#xff08;ens33&#xff0c;被拔出&#xff09;" 2.桌面右键此电脑&#xff0c;管理&#xff0c;找到“服务和应用程序”&#xff0c;点击“服务”&#xff0c;找到下图两个服务&#xff0c;点击圈起来…...

qt QNetworkProxy详解

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

推荐IDE中实用AI编程插件,目前无限次使用

插件介绍 一款字节跳动推出的“基于豆包大模型的智能开发工具” 以vscode介绍【pycharm等都可以啊】&#xff0c;这个插件提供智能补全、智能预测、智能问答等能力&#xff0c;节省开发时间 直接在IDE中使用&#xff0c;就不用在网页中来回切换了 感觉还可以&#xff0c;响应速…...

【华为HCIP实战课程十五】OSPF的环路避免及虚链路,网络工程师

一、避免域间路由环路 1、区域内部的防环:区域内同步了LSA,SPF就决定了区域内部没有环路 2、区间的防环机制:非正常的ABR不更新3类LSA 为防止区域间的环路OSPF定义了骨干区域和非骨干区域和三类LSA的传递规则 1)、OSPF划分了骨干区域和非骨干区域,所有非骨干区域均直接…...

【编程语言】正则表达式:POSIX 与 PCRE 的全面比较及应用

目录 正则表达式&#xff1a;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&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...