From 747d95a05f229c6f9b7ec284a060f70873059740 Mon Sep 17 00:00:00 2001 From: wenyongda Date: Fri, 29 Mar 2024 16:34:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/_posts/Linux.md | 63 ++++++++++++++++++++++++---- source/_posts/MySQL.md | 17 +++++++- source/_posts/Oracle.md | 86 +++++++++++++++++++++++++++++++++++++++ source/_posts/RabbitMQ.md | 5 +++ source/_posts/Vue.md | 4 +- 5 files changed, 162 insertions(+), 13 deletions(-) create mode 100644 source/_posts/RabbitMQ.md diff --git a/source/_posts/Linux.md b/source/_posts/Linux.md index 8b5583a..0c96106 100644 --- a/source/_posts/Linux.md +++ b/source/_posts/Linux.md @@ -1413,10 +1413,20 @@ dnf update -y dnf install nodejs -y ``` +### 编译好的包安装(Prebuilt Binaries) +```shell +tar -xf node-v16.20.2-linux-x64.tar.xz +mv node-v16.20.2-linux-x64 /var/lib +ln -s /var/lib/node-v16.20.2-linux-x64/bin/node /usr/bin/node +ln -s /var/lib/node-v16.20.2-linux-x64/bin/npm /usr/bin/npm +ln -s /var/lib/node-v16.20.2-linux-x64/bin/npx /usr/bin/npx +``` ## 安装宝塔面板 + + ## 安装 Neofetch ```shell @@ -1425,8 +1435,6 @@ dnf install neofetch neofetch ``` - - ## 安装 Screenfetch ```shell @@ -1708,10 +1716,10 @@ read only = yes 安装 Java -Jenkins 需要 Java JRE v8 或 v11。 因此,使用以下命令安装 Java: +Jenkins 需要 Java JRE v11 或 v17。 因此,使用以下命令安装 Java: ```shell -sudo dnf install java-11-openjdk +sudo dnf install java-17-openjdk ``` 验证 Java 版本: @@ -1720,23 +1728,23 @@ sudo dnf install java-11-openjdk java -version ``` -现在我们将 Jenkins 存储库添加到您的 AlmaLinux/Rocky Linux。 首先,将 Jenkins 密钥导入系统: +现在我们将 Jenkins 存储库添加到您的 AlmaLinux/Rocky Linux。 首先,添加创建存储库: ```shell -rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key +wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo ``` -接下来,添加创建存储库: +接下来,将 Jenkins 密钥导入系统: ```shell -cd /etc/yum.repos.d/ -curl -O https://pkg.jenkins.io/redhat-stable/jenkins.repo +rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key ``` 然后,使用以下命令安装 Jenkins: ```shell sudo dnf makecache +sudo dnf install fontconfig sudo dnf install jenkins ``` @@ -1770,3 +1778,40 @@ systemctl daemon-reload ``` +### 修改用户及用户组 + +```shell +# 进入目录 +cd /usr/lib/systemd/system +vim jenkins.service +# 或者 +vim /usr/lib/systemd/system/jenkins.service + +# 修改为root +User=root +Group=root + +# 重新加载配置文件 +systemctl daemon-reload +``` + +### 解决Jenkins部分汉化、汉化不全有效办法 + +```shell +# 进入目录 +cd /usr/lib/systemd/system +vim jenkins.service +# 或者 +vim /usr/lib/systemd/system/jenkins.service + +# 添加 -Duser.language=C.UTF-8 +Environment="JAVA_OPTS=-Djava.awt.headless=true -Duser.language=C.UTF-8" + +# 重新加载配置文件 +systemctl daemon-reload +``` + + + +## 安装 Subversion + diff --git a/source/_posts/MySQL.md b/source/_posts/MySQL.md index ac2b8fa..934378f 100644 --- a/source/_posts/MySQL.md +++ b/source/_posts/MySQL.md @@ -70,9 +70,22 @@ mysqldump -uroot -p -B test > test.sql ```shell wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.29/binary/redhat/9/x86_64/percona-xtrabackup-24-2.4.29-1.el9.x86_64.rpm - rpm -ivh percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm --nodeps --force + rpm -ivh percona-xtrabackup-24-2.4.29-1.el9.x86_64.rpm + + warning: percona-xtrabackup-24-2.4.29-1.el9.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 8507efa5: NOKEY + error: Failed dependencies: + libatomic.so.1()(64bit) is needed by percona-xtrabackup-24-2.4.29-1.el9.x86_64 + libev.so.4()(64bit) is needed by percona-xtrabackup-24-2.4.29-1.el9.x86_64 + perl(DBD::mysql) is needed by percona-xtrabackup-24-2.4.29-1.el9.x86_64 + rsync is needed by percona-xtrabackup-24-2.4.29-1.el9.x86_64 + + dnf install libatomic -y + dnf install libev -y + dnf install -y rsync + dnf install perl-DBD-MySQL + ``` - + - MySQL 8.0,以下载并安装Percona XtraBackup 8.0为例 ```shell wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.32-26/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.32-26.1.el7.x86_64.rpm diff --git a/source/_posts/Oracle.md b/source/_posts/Oracle.md index b54a924..5f25d4b 100644 --- a/source/_posts/Oracle.md +++ b/source/_posts/Oracle.md @@ -815,6 +815,28 @@ SELECT DECODE(name, NULL, '未知', name) AS name FROM user; 以上语句中,使用DECODE函数将name参数的NULL值替换为“未知”字符串。当name不为NULL时,返回它本身的值。 +### LTRIM + +ltrim(char[,set]) + +去掉字符串 char 左侧包含在 set 中的任何字符,直到第一个不在 set 中出现的字符为止 + +### RTRIM + +rtrim(char[,set]) + +去掉字符串 char 右侧包含在 set 中的任何字符,直到第一个不在 set 中出现的字符为止 + +```sql +SELECT ltrim('abcd','a') lefttrim, rtrim('abcde','e') righttrim FROM dual; + +LEFTTRIM RIGHTTRIM +-------- --------- +bcd abcd +``` + + + ## 特性 ### Row Movement @@ -1032,3 +1054,67 @@ alter table PEOPLE set partitioning manual; ### 间隔分区 +## SQL 优化 + +### 什么是解释计划? + +解释计划是一个关于SQL查询语句执行过程的文本表示。它显示了Oracle数据库如何执行查询语句,并给出了每个步骤的详细信息,如表的使用方式、索引的使用情况、连接的方法等等。通过分析解释计划,我们可以了解查询语句的执行情况,找出性能瓶颈,并针对性地进行优化。 + +### Execute Explain Plan的使用方法 + +在Oracle [SQL](https://deepinout.com/sql/sql-top-tutorials/1694067222_j_sql-tutorial.html) Developer中,我们可以使用”Execute Explain Plan”来生成查询语句的解释计划。首先,我们需要打开SQL Worksheet,并输入要分析的查询语句。然后,在工具栏中选择”Explain Plan”按钮,或者使用快捷键Ctrl+E来执行解释计划。在执行过程中,Oracle数据库会为查询语句生成一个执行计划,并将其显示在输出窗口中。 + +下面是一个示例查询语句和其对应的解释计划: + +```sql +SELECT e.employee_id, e.last_name, d.department_name +FROM employees e, departments d +WHERE e.department_id = d.department_id +AND e.salary > 5000; +``` + +解释计划: + +| ID | 操作 | 名称 | 行数 | 成本 | +| :--: | :--------------: | :------------: | :--: | :--: | +| 0 | SELECT STATEMENT | | 5 | | +| 1 | NESTED LOOPS | | 5 | 2 | +| 2 | TABLE ACCESS | EMPLOYEES | 5 | 1 | +| 3 | INDEX | PK_EMPLOYEES | 107 | 2 | +| 4 | TABLE ACCESS | DEPARTMENTS | 1 | 1 | +| 5 | INDEX | PK_DEPARTMENTS | 27 | 1 | + +上面的解释计划使用表格的形式展示了查询语句的执行过程。每一列的含义如下: + +- ID:表示一个操作的唯一标识符 +- 操作:表示每个操作的名称,比如SELECT STATEMENT、NESTED LOOPS等 +- 名称:表示该操作对应的表的名称或索引的名称 +- 行数:表示该操作返回的结果行数 +- 成本:表示执行该操作需要的成本,成本越低表示执行速度越快 + +解释计划的每一行表示一个操作,操作之间的关系通过ID进行连接。在上面的示例中,ID为1的操作是一个NESTED LOOPS操作,它通过对EMPLOYEES表和DEPARTMENTS表进行连接来返回满足条件的结果。ID为2和ID为4的操作分别是对EMPLOYEES表和DEPARTMENTS表进行访问的操作,而ID为3和ID为5的操作则是对EMPLOYEES表和DEPARTMENTS表的主键索引进行访问的操作。 + +### 解释计划中常见的操作和符号 + +在解释计划中,我们会经常遇到一些常见的操作和符号。下面列举了一些常见的操作和符号,并对其进行了解释: + +- SELECT STATEMENT:表示整个查询语句的执行计划 +- TABLE ACCESS FULL:表示对表进行全表扫描,即读取表中的所有行 +- TABLE ACCESS BY INDEX ROWID:表示通过ROWID访问表,ROWID是一种唯一标识表中每行的标识符 +- INDEX RANGE SCAN:表示对索引进行范围扫描,即根据索引中的值范围来获取满足条件的结果 +- NESTED LOOPS:表示通过嵌套循环来执行连接操作 +- HASH JOIN:表示通过散列连接来执行连接操作,通常用于连接大量数据的情况 +- SORT JOIN:表示对结果进行排序后再执行连接操作 + +在实际情况中,我们可能会遇到更复杂的操作和符号,但通过对常见操作和符号的理解,我们可以初步了解查询语句的执行过程。 + +### 性能优化和解释计划 + +解释计划是优化SQL查询语句性能的有力工具。通过分析解释计划,我们可以找出查询语句执行过程中的瓶颈,并进行优化。下面是一些常见的优化方法: + +- 对表添加索引:如果解释计划中出现了全表扫描的操作,说明查询语句没有使用到索引。在这种情况下,我们可以通过添加索引来提高查询性能。 +- 优化连接操作:如果解释计划中出现了嵌套循环或Hash连接等操作,说明连接操作的性能较低。在这种情况下,我们可以考虑重新设计查询语句或调整连接顺序来提高性能。 +- 避免排序操作:如果解释计划中出现了排序操作,说明查询语句需要对结果进行排序。在这种情况下,我们可以考虑调整查询语句或添加索引来避免排序操作。 + +通过不断优化查询语句,我们可以提高数据库的查询性能,提升应用程序的响应速度。 + diff --git a/source/_posts/RabbitMQ.md b/source/_posts/RabbitMQ.md new file mode 100644 index 0000000..03e5808 --- /dev/null +++ b/source/_posts/RabbitMQ.md @@ -0,0 +1,5 @@ +--- +title: RabbitMQ +date: 2024-03-26 12:48:20 +tags: +--- diff --git a/source/_posts/Vue.md b/source/_posts/Vue.md index 8424882..99af9fc 100644 --- a/source/_posts/Vue.md +++ b/source/_posts/Vue.md @@ -1771,11 +1771,11 @@ export default ({ request }) => ({ ```shell # 淘宝镜像 # 永久生效 -npm config set registry http://registry.npm.taobao.org/ +npm config set registry https://registry.npmmirror.com # 查看镜像 npm config get registry # 暂时生效 -npm install --registry http://registry.npm.taobao.org/ +npm install --registry https://registry.npmmirror.com ``` ### CentOS7安装node js