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

若依Linux与Docker集群部署

若依Linux集群部署

  • 1. 若依
  • 2.MYSQL Linux环境安装
    • 2.1 MYSQL数据库部署和安装
    • 2.2 解压MYSQL安装包
    • 2.3 创建MYSQL⽤户和⽤户组
    • 2.4 修改MYSQL⽬录的归属⽤户
    • 2.5 准备MYSQL的配置⽂件
    • 2.6 正式开始安装MYSQL
    • 2.7 复制启动脚本到资源⽬录
    • 2.8 设置MYSQL系统服务并开启⾃启
    • 2.9 启动MYSQLD
    • 2.10 将 MYSQL 的 BIN ⽬录加⼊ PATH 环境变量
    • 2.11 ⾸次登陆MYSQL
    • 2.12 设置远程主机登录
    • 2.2 Redis部署
      • 2.2.1 查看REDIS服务启动情况
      • 2.2.2 设置允许远程连接
      • 2.2.2 设置访问密码
  • 3. 代码部分
    • 3.1 本地调通
  • 4. Linux小集群部署
    • 4.1 前段代码(华为云)
    • 4.2 后端代码(天翼云、腾讯云)
  • n.Docker部署(todo)
    • 3.1 Docker安装Mysql
    • 3.2 录制快照
  • 附录

1. 若依

  1. 若依前后端分离项目地址:https://gitee.com/y_project/RuoYi-Vue
  2. 若依Linux集群部署课程
  3. 若依官网

2.MYSQL Linux环境安装

2.1 MYSQL数据库部署和安装

这⾥下载的是 mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz 安装包,并将其直接放在了 root⽬录下

卸载系统⾃带的MARIADB(如果有)
如果系统之前⾃带 Mariadb ,可以先卸载之。
⾸先查询已安装的 Mariadb 安装包:

rpm -qa|grep mariadb

在这里插入图片描述

将其均卸载之:

yum -y remove mariadb-server-5.5.56-2.el7.x86_64
yum -y remove mariadb-5.5.56-2.el7.x86_64
yum -y remove mariadb-devel-5.5.56-2.el7.x86_64
yum -y remove mariadb-libs-5.5.56-2.el7.x86_64

这里我使用的是mac系统安装的虚拟机,所以命令有所不一样
在这里插入图片描述

在这里插入图片描述

2.2 解压MYSQL安装包

将上⾯准备好的 MySQL 安装包解压到 /usr/local/ ⽬录,并重命名为 mysql

tar -zxvf /root/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ mv mysql-5.7.30-linux-glibc2.12-x86_64 mysql

2.3 创建MYSQL⽤户和⽤户组

groupadd mysql
useradd -g mysql mysql

同时新建 /usr/local/mysql/data ⽬录,后续备⽤

2.4 修改MYSQL⽬录的归属⽤户

[root@localhost mysql]# chown -R mysql:mysql ./

2.5 准备MYSQL的配置⽂件

/etc ⽬录下新建 my.cnf ⽂件
写⼊如下简化配置:

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-name-resolve
#设置3306端⼝
port = 3306
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装⽬录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放⽬录
datadir=/usr/local/mysql/data
# 允许最⼤连接数
max_connections=200
# 服务端使⽤的字符集默认为8⽐特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使⽤的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M

同时使⽤如下命令创建 /var/lib/mysql ⽬录,并修改权限:

mkdir /var/lib/mysql
chmod 777 /var/lib/mysql

2.6 正式开始安装MYSQL

执⾏如下命令正式开始安装:

cd /usr/local/mysql
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

在这里插入图片描述
注意:记住上⾯打印出来的 root 的密码,后⾯⾸次登陆需要使⽤

这里因为我需要aarch结构的文件才能执行,M系列芯片不能运行x86-64得Mysql bin所以后续我将用Docker来实现

在这里插入图片描述

2.7 复制启动脚本到资源⽬录

执⾏如下命令复制:

[root@localhost mysql]# cp ./support-files/mysql.server
/etc/init.d/mysqld

并修改 /etc/init.d/mysqld ,修改其 basedir 和 datadir 为实际对应⽬录:

basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

2.8 设置MYSQL系统服务并开启⾃启

⾸先增加 mysqld 服务控制脚本执⾏权限:

chmod +x /etc/init.d/mysqld

同时将 mysqld 服务加⼊到系统服务:

chkconfig --add mysqld

最后检查 mysqld 服务是否已经⽣效即可:

chkconfig --list mysqld

在这里插入图片描述
这样就表明 mysqld 服务已经⽣效了,在2、3、4、5运⾏级别随系统启动⽽⾃动启动,以后可以直接使⽤ service 命令控制 mysql 的启停。

2.9 启动MYSQLD

直接执⾏:

service mysqld start

2.10 将 MYSQL 的 BIN ⽬录加⼊ PATH 环境变量

这样⽅便以后在任意⽬录上都可以使⽤ mysql 提供的命令。
编辑 ~/.bash_profile ⽂件,在⽂件末尾处追加如下信息:

export PATH=$PATH:/usr/local/mysql/bin

在这里插入图片描述
最后执⾏如下命令使环境变量⽣效

source ~/.bash_profile

2.11 ⾸次登陆MYSQL

以 root 账户登录 mysql ,使⽤上⽂安装完成提示的密码进⾏登⼊

mysql -u root -p

在这里插入图片描述
接下来修改ROOT账户密码

在mysql的命令⾏执⾏如下命令即可,密码可以换成你想⽤的密码即可:

mysql>alter user user() identified by "111111";
mysql>flush privileges;

在这里插入图片描述

2.12 设置远程主机登录

mysql> use mysql;
mysql> update user set user.Host='%' where user.User='root';
mysql> flush privileges;

2.2 Redis部署

这⾥下载的是 redis-5.0.8.tar.gz 安装包,并将其直接放在了 root ⽬录下

解压安装包

cd /usr/local/
mkdir redis
cd redis

在这里插入图片描述

将 Redis 安装包解压到 /usr/local/redis 中即可

[root@localhost redis]# tar zxvf /root/redis-5.0.8.tar.gz -C ./

解压完之后, /usr/local/redis ⽬录中会出现⼀个 redis-5.0.8 的⽬录


编译并安装

cd redis-5.0.8/
make && make install

将 REDIS 安装为系统服务并后台启动
进⼊ utils ⽬录,并执⾏如下脚本即可:

[root@localhost redis-5.0.8]# cd utils/
[root@localhost utils]# ./install_server.sh

此处我全部选择的默认配置即可,有需要可以按需定制
在这里插入图片描述

2.2.1 查看REDIS服务启动情况

直接执⾏如下命令来查看Redis的启动结果:

systemctl status redis_6379.service

在这里插入图片描述

启动REDIS客户端并测试

启动⾃带的 redis-cli 客户端,测试通过:

在这里插入图片描述
但是此时只能在本地访问,⽆法远程连接,因此还需要做部分设置

2.2.2 设置允许远程连接

编辑 redis 配置⽂件

vim /etc/redis/6379.conf

将 bind 127.0.0.1 修改为 0.0.0.0
在这里插入图片描述
然后重启 Redis 服务即可:

systemctl restart redis_6379.service

2.2.2 设置访问密码

编辑 redis配置⽂件

vim /etc/redis/6379.conf

找到如下内容:

#requirepass foobared

去掉注释,将 foobared 修改为⾃⼰想要的密码,保存即可。

requirepass codesheep

保存,重启 Redis 服务即可

systemctl restart redis_6379.service

这样后续的访问需要先输⼊密码认证通过⽅可:

在这里插入图片描述

3. 代码部分

代码仓库https://gitee.com/y_project/RuoYi-Vue 这是一个若依前后端分离项目。

3.1 本地调通

在本地数据库新建一个库,ry-vue
在这里插入图片描述
在图形化界面中执行若依项目中的两个SQL文件
在这里插入图片描述

在这里插入图片描述

在本地新建一个log文件夹,并将若依的日志指向调整为新建的目录
在这里插入图片描述

这里插入一个Homebrew的安装https://zhuanlan.zhihu.com/p/111014448

视频地址:
https://www.bilibili.com/video/BV1634y1t7B9/?share_source=copy_web&vd_source=6888e998072955ff0cd273996df291f5

Homebrew安装命令:

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 

安装Redis

brew install redis启动redis
brew services start redis查看一下版本(复制如下代码到终端运行):
redis-server查看redis进程
ps axu | grep redis停止redis
brew services stop redis

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本地配置好redis、mysql、日志路径之后Redis可以正常启动
在这里插入图片描述

4. Linux小集群部署

共计3台服务器,分别是腾讯云、华为云、天翼云三台服务器。其中华为云部署前端以及提供MYSQL与Redis服务。另外两台部署后端服务。

华为云安装redis、MySQL
mysql 初始密码Mr%d;N?ce4<l
在这里插入图片描述
这里华为云需要修改入方向规则
在这里插入图片描述
代码中需要修改的地方

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
全部的encode地方加上charset
在这里插入图片描述

注意华为云6379接口要开放
在这里插入图片描述

4.1 前段代码(华为云)

我把ruoyi-ui的前段代码打包
在这里插入图片描述
上传到服务器中
在这里插入图片描述
然后在workspace中解压代码

华为云要安装nginx并且放开80端口
在这里插入图片描述

华为云中修改nginx文件
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

重启nginx之后前段就可以访问了

/usr/local/nginx/sbin/nginx -s reload

在这里插入图片描述

4.2 后端代码(天翼云、腾讯云)

在这里插入图片描述

在这里插入图片描述

因为是SpringBOOT项目内置了Tomcat直接打jar包。上图是两种打包方式都可以。第一个图先cleanpackage

jar包位置。
在这里插入图片描述
这里不打war包了,还要安装tomcat,需要打war包可以看视频(最上面的)

**在腾讯云中执行如下命令**
[root@VM-8-7-centos ruoyi]# pwd
/root/workspace/ruoyi[root@VM-8-7-centos ruoyi]# nohup java -jar ruoyi-admin.jar &

在这里插入图片描述

在这里插入图片描述
虽然前后端都发布了,但是前段的nginx代理还未配置。也就是说前段现在没有访问到后端接口
在这里插入图片描述
在华为云中修改了nginx并重启了nginx

这里腾讯云记得打开8080端口
在这里插入图片描述

为了集群部署,我们还是需要修改nginx,并设置天翼云权重为3,腾讯云的为5
在这里插入图片描述

再次将nginx reload一下,当前天翼云的后端服务也运行起来了。

查看天翼云
在这里插入图片描述
这里天翼云有个坑,8080端口不备案不开放,我重新换成了8081端口

这里算是部署好了前后端
在这里插入图片描述
为了验证效果,以及看一下Nginx转发。当我输入错误验证码时可以看到多次访问的是腾讯服务器因为它的权重更高
在这里插入图片描述
在这里插入图片描述

n.Docker部署(todo)

Docker请看我的专栏http://t.csdnimg.cn/2rLIs

3.1 Docker安装Mysql

这里我已经安装过mysql了,不熟悉如何Docker安装mysql可以看专栏。

我目前Docker正在run的容器有
在这里插入图片描述
此处我发现时间不准确。通过将NTP服务代理为阿里云解决。

在这里插入图片描述在这里插入图片描述

[root@node ~]# vim /etc/ntp.conf
[root@node ~]# grep server /etc/ntp.conf 
# Use public servers from the pool.ntp.org project.
#server 0.centos.pool.ntp.org iburst
server ntp.aliyun.com iburst
#broadcast 192.168.1.255 autokey # broadcast server
#broadcast 224.0.1.1 autokey  # multicast server
#manycastserver 239.255.254.254  # manycast server

3.2 录制快照

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

附录

1.同步阿里云时间 https://www.cnblogs.com/liulianzhen99/articles/17637056.html
2.Mac 如何安装 Homebrew
3.Homebrew安装以及使用Redis

相关文章:

若依Linux与Docker集群部署

若依Linux集群部署 1. 若依2.MYSQL Linux环境安装2.1 MYSQL数据库部署和安装2.2 解压MYSQL安装包2.3 创建MYSQL⽤户和⽤户组2.4 修改MYSQL⽬录的归属⽤户2.5 准备MYSQL的配置⽂件2.6 正式开始安装MYSQL2.7 复制启动脚本到资源⽬录2.8 设置MYSQL系统服务并开启⾃启2.9 启动MYSQL…...

20.2 设备树中的 platform 驱动编写

一、设备树下的 platform 驱动 platform 驱动框架分为总线、设备和驱动&#xff0c;总线不需要我们去管理&#xff0c;这个是 Linux 内核提供。在有了设备树的前提下&#xff0c;我们只需要实现 platform_driver 即可。 1. 修改 pinctrl-stm32.c 文件 先复习一下 pinctrl 子系…...

C++实现ransac

目录 一、ransac算法原理 1.1、算法概念 1.2、图解 二、c实现ransac 2.1、设置随机样本和离群点 2.2、随机抽取样本 2.3、内点计算 2.4、更新参数 2.2、完整代码 一、ransac算法原理 1.1、算法概念 随机抽样一致性 (RANSAC) 是一种迭代方法&#xff0c;用于根据一组包…...

DNS域名解析服务

1.概述 1.1.产生原因 IP 地址:是互联网上计算机唯一的逻辑地址&#xff0c;通过IP 地址实现不同计算机之间的相互通信&#xff0c;每台联网计算机都需要通过I 地址来互相联系和分别&#xff0c;但由于P 地址是由一串容易混淆的数字串构成&#xff0c;人们很难记忆所有计算机的…...

【milkv】2、mpu6050驱动添加及测试

前言 本章介绍mpu6050的驱动添加以及测试。 其中驱动没有采用sdk提供的驱动&#xff0c;一方面需要配置irq&#xff0c;另一方面可以学习下如何通过ko方式添加驱动。 一、参考文章 驱动及测试文件编译流程&#xff1a; https://community.milkv.io/t/risc-v-milk-v-lsm6ds…...

SpringCloud Alibaba(中):服务熔断降级-Sentinel

Sentinel Sentinel是阿里巴巴开源的分布式系统流量防卫防护组件&#xff0c;主要对分布式系统中的流量进行控制、熔断降级等保护操作。Sentinel的目标是成为互联网级别分布式系统的流量防卫防护组件&#xff0c;它与系统的各个部分集成&#xff0c;保护着系统的入口和出口。 …...

模型的训练专题

训练目标在数学上指定了模型应该如何从训练数据中学习和获取能力。训练基础模型的当前现状涉及特定于模型的目标。我们设想&#xff0c;未来基础模型的训练目标将反映两个变化&#xff1a;从系统证据和评估中得出的原则性选择&#xff0c;以及跨数据源和模式提供丰富、可扩展和…...

深入解析 Azure 机器学习平台:架构与组成部分

Azure机器学习平台是Microsoft Azure提供的一种云上机器学习服务&#xff0c;为开发者和数据科学家提供了一个全面且易于使用的环境来创建、训练、部署和管理机器学习模型。本文将对Azure机器学习平台的基本架构和组成部分进行深入解析&#xff0c;帮助读者全面了解该平台的工作…...

使用百度语音识别技术实现文字转语音的Java应用

探讨如何使用百度语音识别技术将文字转换为语音的Java应用。百度语音识别技术是一种强大的语音识别服务&#xff0c;可以将输入的文字转换为自然流畅的语音输出。我们将使用Java编程语言来实现这个应用&#xff0c;并提供相应的源代码。 首先&#xff0c;我们需要准备一些前提…...

【C#学习】文件操作

文章目录 常见操作拷贝文件检测文件夹是否存在并创建判断文件是否存在删除文件夹下的所有文件保留文件夹获取指定目录下的所有文件名删除 常见操作 拷贝文件 System.IO.File.Copy(sourcePath, targetPath); 检测文件夹是否存在并创建 //if directory not exit,then establis…...

Chrome版本对应Selenium版本

1.获得浏览器版本号和驱动 浏览器版本: 119.0.6045.124 浏览器驱动版本: 119.0.6043.1 / 120.0.6051.0 访问 https://vikyd.github.io/download-chromium-history-version/ 2. 安装selenium pip install selenium4.1.1 -i http://pypi.mirrors.ustc.edu.cn/simple/ --trusted…...

Day29力扣打卡

打卡记录 美丽塔 II&#xff08;前后缀分解 单调栈&#xff09; 链接 大佬的题解 class Solution:def maximumSumOfHeights(self, a: List[int]) -> int:n len(a)suf [0] * (n 1)st [n] # 哨兵s 0for i in range(n - 1, -1, -1):x a[i]while len(st) > 1 and …...

java源码用到的设计模式

Java 中有许多常用的设计模式&#xff0c;它们是为了解决特定问题而被反复使用和验证的经验总结。以下是一些常见的 Java 设计模式&#xff1a; 创建型模式 工厂模式 (Factory Pattern): 提供一个创建对象的接口&#xff0c;但是由子类决定实例化哪个类。例如&#xff1a;java…...

high perfermance computer usage

简单记一下hpc的使用&#xff1a; hpc就是一些科研机构或者大学建立的服务器中心。我这大学的每一位学生&#xff0c;可以轻松使用hpc批量跑数据&#xff0c;也可以新建自己的server跑一些local data&#xff0c;后者每个学生账号最大是32核512G的运行内存&#xff0c;体验非常…...

51单片机+DS1302设计一个电子钟(LCD1602显示时间)

一、前言 电子钟是一种能够准确显示时间的设备&#xff0c;广泛应用于家庭、办公场所和公共场所&#xff0c;为人们提供了方便和准确的时间信息。本项目设计一个基于51单片机的电子钟&#xff0c;使用DS1302作为RTC时钟芯片&#xff0c;LCD1602作为显示屏&#xff0c;并通过串…...

vue项目中在scss代码中使用data中的变量

尽管在日常开发中&#xff0c;这类情况实际上很少出现。 VUE2: 在HTML中使用时&#xff0c;请确保将cssVars绑定在需要使用CSS变量的元素或该元素的上层元素上。 <template><div :style"cssVars"><div class"test"/></div><…...

uni-app报错“本应用使用HBuilderX x.x.x 或对应的cli版本编译,而手机端SDK版本是x.x.x不匹配的版本可能造成应用异常”

uniapp开发的一个跨平台软件&#xff0c;在安卓模拟器上启动的时候报警告&#xff1a; 官方给的解释&#xff1a;uni-app运行环境版本和编译器版本不一致的问题 - DCloud问答 解决办法有两个 方法一&#xff1a;添加忽略警告的配置 项目根目录下找到 manifest.json&#xf…...

[sd_scripts]之train

https://github.com/kohya-ss/sd-scripts/blob/main/docs/train_README-zh.mdhttps://github.com/kohya-ss/sd-scripts/blob/main/docs/train_README-zh.md 支持模型fine-tune&#xff0c;dreambooth&#xff0c;lora&#xff0c;textual inversion。 1.数据准备 在任意多个…...

samba 共享目录write permission deny问题修复 可读取内容但不可修改 删除 新增文件

关于 update/delete/write permission deny问题修复 0.首先在服务器端执行testparm -s &#xff0c;测试 Samba 配置并显示结果。需确保服务器端参数 read only No &#xff0c;共享目录有写入权限 一、若配置了允许匿名访问&#xff0c;使用匿名访问来操作smb需要做如下处理…...

UDP主要丢包原因及具体问题分析

一、主要丢包原因 1、接收端处理时间过长导致丢包&#xff1a;调用recv方法接收端收到数据后&#xff0c;处理数据花了一些时间&#xff0c;处理完后再次调用recv方法&#xff0c;在这二次调用间隔里,发过来的包可能丢失。对于这种情况可以修改接收端&#xff0c;将包接收后存入…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

C++实现分布式网络通信框架RPC(2)——rpc发布端

有了上篇文章的项目的基本知识的了解&#xff0c;现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...

全面解析数据库:从基础概念到前沿应用​

在数字化时代&#xff0c;数据已成为企业和社会发展的核心资产&#xff0c;而数据库作为存储、管理和处理数据的关键工具&#xff0c;在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理&#xff0c;到社交网络的用户数据存储&#xff0c;再到金融行业的交易记录处理&a…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...