两步将 CentOS 6.0 原地升级并迁移至 RHEL 7.9

《OpenShift / RHEL / DevSecOps 汇总目录》

说明

  1. 本文介绍如何将一个 CentOS 6.0 的系统升级并转换迁移到 RHEL 7.9。
    在这里插入图片描述

  2. 本文是《在离线环境中将 CentOS 7.X 原地升级并迁移至 RHEL 7.9》阶进篇。

  3. 所有被测软件的验证操作可参见上述前文中对应章节的说明。

准备 CentOS 6.0 及其他被验证软件

下载 CentOS 和 RHEL 的 ISO 介质

下载 CentOS 6.0 、RHEL 6.10、RHEL 7.9 的 ISO 文件。

准备 CentOS 6.0

  1. 在测试 VM 中使用 ISO 安装 CentOS 6.0。注意:需要安装 X Windows System,并将网卡配置为开机启动。在安装完后的初始启动时配置窗口中关闭防火墙。
  2. 由于在下载被验证软件时很多网站已不支持 CentOS 6.0 的 TLS1.0 和 TLS1.1 协议,因此需要先用 RHEL 6.10 的介质单独升级 openssl。
  3. 先将 RHEL 6.10 的 ISO 分配给 VM 的第一个 IDE 光驱设备,然后再执行命令挂载 RHEL 6.10 到指定目录,最后创建 RHEL 6 的 Yum Repo。
$ mkdir /mnt/rhel6
$ mount /dev/sr0 /mnt/rhel6
$ cat > /etc/yum.repos.d/rhel6-local.repo << EOF 
[rhel6-local-repo]
name = rhel6 local repo
baseurl=file:///mnt/rhel6
enabled=1
gpgcheck=0
EOF
  1. 执行命令升级 openssl。
$ yum update -y openssl
  1. 将 CentOS 6.0 的 ISO 挂载到主机中,然后依此创建 CentOS 6 的 Yum Repo。
$ umount /mnt/rhel6
$ mkdir /mnt/centos6
$ mount /dev/sr0 /mnt/centos6
$ cat > /etc/yum.repos.d/centos6-local.repo << EOF 
[centos6-local-repo]
name = centos6 local repo
baseurl=file:///mnt/centos6
enabled=1
gpgcheck=0
EOF

docker 1.7.1

注意:由于 CentOS 6.0 发布的时间在 2011 年,因此没有找到 CentOS 6.0 上可用的 docker 安装包。以下 Docker 1.7.1 可在稍晚的 CentOS 6.x 中作为验证环境。

执行以下命令,安装 Docker 环境。

wget https://mirrors.aliyun.com/docker-engine/yum/repo/main/centos/6/Packages/docker-engine-1.7.1-1.el6.x86_64.rpm --no-check-certificate
rpm -ivh docker-engine-1.7.1-1.el6.x86_64.rpm
service docker start
service docker status

jdk 1.5.0_22 + tomcat 4.1.40

安装

  1. 从以下链接下载 JDK 和 Tomcat 的安装文件到用户的默认目录下。
    https://download.oracle.com/otn/java/jdk/1.5.0_22/jdk-1_5_0_22-linux-amd64.bin
    https://archive.apache.org/dist/tomcat/tomcat-4/v4.1.40/bin/apache-tomcat-4.1.40.tar.gz
  2. 在用户默认目录下安装 JDK 和 Tomcat。
cd ~
./jdk-1_5_0_22-linux-amd64.bin
tar -xvf apache-tomcat-4.1.40.tar.gz
  1. 修改 apache-tomcat-4.1.40/bin/setclasspath.sh 文件,在最前方增加 export JAVA_HOME=/YOUR/PATH/jdk1.5.0_22 的内容。

验证

  1. 启动 Tomcat。
~/apache-tomcat-4.1.40/bin/startup.sh
  1. 打开以下链接访问 Tomcat,可以测试 Examples。
    http://<HOST-IP>:8080/

jdk 1.6.0_45 + weblogic 10.3.6

安装

  1. 从以下链接下载 JDK 和 WebLogic 的安装文件到用户的默认目录下。
    https://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin
    https://download.oracle.com/otn/nt/middleware/11g/wls/1036/wls1036_generic.jar
  2. 在用户默认目录下安装 JDK 和 WebLogic (WebLogic 安装过程略)。
cd ~
./jdk-6u45-linux-x64.bin
~/jdk1.6.0_45 -jar wls1036_generic.jar

验证

  1. 运行命令,启动 WebLogic 测试 Domain 环境。该 Domain 的管理员/密码是:weblogic/welcome1。
 ~/Oracle/Middleware/wlserver_10.3/samples/domains/medrec/bin/startWebLogic.sh
  1. 打开以下链接访问 WebLogic 上的测试应用。
    http://<HOST-IP>:7011/medrec

mysql 5.1.47

  1. 执行命令,安装 CentOS 6.0 内置的 mysql 5.1.47。
yum install mysql
chkconfig mysqld on
service mysqld start
service mysqld status
  1. 参照前文登录 mysql,然后创建数据库、表并添加数据。

postgresql 8.4.4

  1. 执行命令,安装 CentOS 6.0 内置的 postgresql 8.4.4。
yum -y install postgresql postgresql-libs postgresql-plperl postgresql-plpython postgresql-server
service postgresql initdb
chkconfig postgresql on
service postgresql start
service postgresql status
  1. 参照前文登录 postgresql,然后创建用户、数据库、表并添加数据。

mongodb 4.2.25

  1. 执行命令,创建安装 mongodb 用的 Repo。
$ cat > /etc/yum.repos.d/mongodb.repo << EOF 
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=0
enabled=1
EOF
  1. 安装 mongodb。
yum install -y mongodb-org
service mongod start
service mongod status
  1. 参照前文向 mongodb 添加数据。

redis 3.2.8

说明:采用编译源码方式安装 redis。

  1. 安装编译环境。
yum install make gcc tcl -y
  1. 下载 redis 源码,然后编译。
wget http://download.redis.io/releases/redis-3.2.8.tar.gz
tar -xvzf redis-3.2.8.tar.gz
cd redis-3.2.8
make
make install
  1. 使用默认配置安装 redis。
cd utils
./install_server.sh
service redis_6379 status
redis-cli --version
  1. 参照前文向 redis 添加数据。

rabbitmq 3.7.10

  1. 下载并安装 rabbitmq 及其依赖包。
wget --content-disposition "https://packagecloud.io/rabbitmq/erlang/packages/el/6/erlang-21.3.8.18-1.el6.x86_64.rpm/download.rpm?distro_version_id=27"
rpm -ivh erlang-21.3.8.18-1.el6.x86_64wget https://www.rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/socat-1.7.1.3-1.el6.rf.x86_64.rpm --no-check-certificate
rpm -ivh socat-1.7.1.3-1.el6.rf.x86_64.rpmwget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.10/rabbitmq-server-3.7.10-1.el6.noarch.rpm --no-check-certificate -O rabbitmq-server-3.7.10-1.el6.noarch.rpm
rpm -ivh rabbitmq-server-3.7.10-1.el6.noarch.rpm
  1. 启动 rabbitmq。
service rabbitmq-server start
service rabbitmq-server status
  1. 安装 rabbitmq 的管理控制台,并初始化用户。
rabbitmq-plugins enable rabbitmq_management
rabbitmqctl add_user admin password
rabbitmqctl set_user_tags admin administrator
  1. 参照前文访问 rabbitmq 控制台。

Oracle 12.1.0.2

  1. 安装必要的依赖环境。
yum install compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libgcc libstdc++ libstdc++-devel libaio libaio-devel libXext libXtst  libXau libxcb libXi make sysstat unixODBC unixODBC-devel compat-libcap1 -y
  1. 准备必要的用户、目录并分配权限。
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oraclemkdir /u01 
mkdir /u02
chown -R oracle:oinstall /u01
chown -R oracle:oinstall /u02
chmod -R 775 /u01 
chmod -R 775 /u02
chmod g+s /u01 
chmod g+s /u02
  1. 如果不用 DNS 解析,执行以下命令将主机名和 IP 添加到 /etc/hosts 中。
ifconfig | grep eth -A 2|grep "inet addr" | cut -d: -f2 | awk '{ print $1 "\t" "'''$HOSTNAME'''"}' >> /etc/hosts
  1. 准备安装介质。
unzip ~/V46095-01_1of2.zip -d /stage/
unzip ~/V46095-01_2of2.zip -d /stage/
chown -R oracle:oinstall /stage/
  1. 安装数据库并创建实例。说明:具体安装步骤可参见《在离线环境中将 CentOS 7.X 原地升级并迁移至 RHEL 7.9》的相关章节。
$ su - oracle
$ export DISPLAY=<CLIENT-HOST-IP>:0.0
$ /stage/database/runInstaller
  1. 参照前文访问 Oracle 实例,并查询测试表数据。

CentOS 6.0 到 RHEL 6.10 升级转换

安装 conver2rhel

convert2rhel v0.18 支持直接将 CentOS 6.0 升级并转换为 RHEL 6.10。

  1. 下载并安装 convert2rhel 依赖包。由于部分依赖包不在 CentOS 6.0 中,因此可以从 https://access.redhat.com/downloads/content/69/ver=/rhel—6/6.10/x86_64/packages 网站下载以下离线包,然后安装。
rpm -ivh ~/conver2rhel/python-six-1.9.0-2.el6.noarch.rpm
rpm -ivh ~/conver2rhel/virt-what-1.11-1.3.el6.x86_64.rpmrpm -ivh ~/conver2rhel/m2crypto-0.20.2-7.el6.x86_64.rpm
rpm -ivh ~/conver2rhel/pexpect-2.3-6.el6.noarch.rpm               
rpm -ivh ~/conver2rhel/python-decorator-3.0.1-3.1.el6.noarch.rpm  
rpm -ivh ~/conver2rhel/python-dmidecode-3.10.12-1.el6.x86_64.rpm
  1. 下载并安装 convert2rhel。注意:由于 CentOS 6 已经停更,因此较新版的 convert2rhel 已不支持 CentOS 6 迁移转换了,为此本文使用了较早版本的 convert2rhel。另外较早的 convert2rhel 还支持一步操作完成 CentOS 版本升级 + RHEL 迁移转换。
wget https://github.com/oamg/convert2rhel/releases/download/v0.18/convert2rhel-0.18-1.el6.noarch.rpm -O ~/conver2rhel/convert2rhel-0.18-1.el6.noarch.rpm --no-check-certificate
rpm -ivh ~/conver2rhel/convert2rhel-0.18-1.el6.noarch.rpm

CentOS 6.0 到 RHEL 6.10 升级转换

  1. 将 RHEL 6.10 的 ISO 分配给 VM 的第一个 IDE 光驱设备,然后将其挂载到 /mnt/rhel6。
umount /mnt/centos6
mount /dev/sr0 /mnt/rhel6
  1. 查看升级转换前系统中各软件包的供应商。注意:convert2rhel 只转换由 CentOS 供应的软件。
rpm -qa --queryformat '%{vendor}:%{name}\n' | sort
  1. 执行命令将 CentOS 6.0 升级并转换到 RHEL 6.10。
convert2rhel --disable-submgr --enablerepo=rhel6-local-repo --no-rpm-va -y
  1. 完成后重启系统。
  2. 查看升级转换后系统中各软件包的供应商,确认 CentOS 都已变为 Red Hat, Inc.
rpm -qa --queryformat '%{vendor}:%{name}\n' | sort

验证

根据《在离线环境中将 CentOS 7.X 原地升级并迁移至 RHEL 7.9》验证各软件是否可正常使用。

注意:由于在准备环境过程中 postgresql 和 mysql 使用的是 CentOS 自带的软件,因此它们也会在 CentOS 升级过程中随之升级(postgresql 升级至 8.4.20,mysql 升级到 5.1.73)。而其他软件使用的是非 CentOS 自带软件,因此它们的版本不受 Linux 升级的影响。

RHEL6.10 到 RHEL7.9 升级

安装原地升级程序

  1. 从 https://access.redhat.com/downloads/content/69/ver=/rhel—6/6.10/x86_64/packages 下载以下原地升级程序相关的软件包到 ~/rhel6-rhel7-preupgrade/ 目录中。
preupgrade-assistant                              
preupgrade-assistant-el6toel7                        
preupgrade-assistant-el6toel7-data                 
redhat-upgrade-tool
fakeroot                                            
fakeroot-libs                                         
openscap
openscap-engine-sce
openscap-scanner
openscap-utils
pykickstart
redhat-rpm-config
rpm-build
rpmdevtools
  1. 确保当前只有 RHEL 6.10 的 Repo 有效,然后安装以上软件包。
mount /dev/sr0 /mnt/rhel6
mv /etc/yum.repos.d/centos6-local.repo /etc/yum.repos.d/centos6-local.repo.bak
yum localinstall ~/rhel6-rhel7-preupgrade/*

RHEL 6.10 到 RHEL 7.9 升级

  1. 将 RHEL 7.9 的 ISO 分配给 VM 的第一个 IDE 光驱设备,然后将其挂载到 /mnt/rhel7,最后创建 rhel7 的 Yum Repo。
$ umount /mnt/rhel6
$ mv /etc/yum.repos.d/rhel6-local.repo /etc/yum.repos.d/rhel6-local.repo.bak
$ mkdir /mnt/rhel7
$ mount /dev/sr0 /mnt/rhel7
$ cat > /etc/yum.repos.d/rhel7-local.repo << EOF 
[rhel7-local-repo]
name = rhel7 local repo
baseurl=file:///mnt/rhel7
enabled=1
gpgcheck=0
EOF
  1. 执行预升级。
preupg
  1. 完成后可在 ~/preupgrade 中查看执行评估生成的相关文件。
$ ll ~/preupgrade
total 2104
drwxr-xr-x.  5 root root   4096 May 15 08:54 cleanconf
drwxr-xr-x.  2 root root   4096 May 15 08:53 common
drwxr-xr-x.  5 root root   4096 May 15 08:59 dirtyconf
drwxr-xr-x.  3 root root   4096 May 15 08:55 etc
drwxr-xr-x.  2 root root   4096 May 15 08:53 hooks
drwxr-xr-x.  2 root root   4096 May 15 09:00 kickstart
drwxr-xr-x.  2 root root   4096 May 15 08:55 noauto_postupgrade.d
drwxr-xr-x.  2 root root   4096 May 15 08:55 pkgdowngrades
drwxr-xr-x.  2 root root   4096 May 15 08:53 postmigrate.d
drwxr-xr-x. 14 root root   4096 May 15 09:00 postupgrade.d
drwxr-xr-x.  2 root root   4096 May 15 09:00 preupgrade-scripts
-rw-r--r--.  1 root root 642236 May 15 09:00 preupg_results-240515090037.tar.gz
-rw-r--r--.  1 root root   6383 May 15 08:53 README
-rw-r--r--.  1 root root 742570 May 15 09:00 result.html
-rw-r--r--.  1 root root 706045 May 15 09:00 result.xml
drwxr-xr-x. 16 root root   4096 May 15 08:54 RHEL6_7
  1. 打开 result.html 文件,可查看评估报告详细内容。
    在这里插入图片描述
  2. 执行强制升级。
$ redhat-upgrade-tool --device /mnt/rhel7 --cleanup-post -f
setting up repos...
upgradedevice                                                                                              | 2.8 kB     00:00 ...
upgradedevice/primary                                                                                      | 2.1 MB     00:00 ...
getting boot images...
vmlinuz-redhat-upgrade-tool                                                                                | 6.5 MB     00:00 ...
initramfs-redhat-upgrade-tool.img                                                                          |  54 MB     00:00 ...
setting up update...
upgradedevice/filelists                                                                                    | 3.1 MB     00:00 ...
upgradedevice/productid                                                                                    | 1.6 kB     00:00 ...
testing upgrade transaction
rpm transaction 100% [===========================================================================================================]
rpm install 100% [===============================================================================================================]
setting up system for upgrade
Finished. Reboot to start upgrade.
[root@c2r-demo ~]# rebootBroadcast message from root@c2r-demo(/dev/pts/0) at 8:11 ...The system is going down for reboot NOW!
  1. 升级准备好后系统会自动重启进行升级操作,升级完成后还会重启一次。
    在这里插入图片描述

验证

根据《在离线环境中将 CentOS 7.X 原地升级并迁移至 RHEL 7.9》验证各软件是否可正常使用。

注意:由于 postgresql 和 mysql 使用的是 CentOS 自带的软件,它们会在 CentOS 升级过程中版本随之升级,因此可能需要进行以下单独处理。而其他软件使用的是非 CentOS 自带软件,因此它们的版本不受 Linux 升级的影响。

mysql

注意:RHEL6.10 内置的 mysql 5.1.73 在升到 RHEL 6.10 后会被升级到社区版 mariadb 5.5.68。

  1. 启动 mariadb 服务。
systemctl status mariadb
systemctl start mariadb
  1. 参照前文 mysql 部分,先登录 mariadb 实例,然后查询测试表数据。

postgresql

注意:在从 RHEL 6.10 升级到 RHEL 7.9 后,postgresql 程序的版本会从 8.4.4 升级到 9.2.24。在升级后还需手动对数据库格式进行单独的升级。

  1. 下载 postgresql 9.2.24 的升级程序包。
wget https://rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/postgresql-upgrade-9.2.24-4.el7_8.x86_64.rpm
yum localinstall postgresql-upgrade-9.2.24-4.el7_8.x86_64.rpm
  1. 对 postgresql 数据库进行升级,然后启动 postgresql 即可。
postgresql-setup upgrade
systemctl start postgresql
systemctl status postgresql
  1. 参照前文 postgresql 部分,查询测试表数据。

问题处理

在从 CentOS 6.10 转换到 RHEL 7.9 的过程中,如果没做预检查,转换重启后用户登录可能会遇到以下错误:

grep: error while loading shared libraries: libpcre.so.0: cannot open shared object file: No such file or directory

原因请参考 https://access.redhat.com/solutions/5565431。执行以下命令将 grep 的版本降到 2.20-3 即可解决该问题。

$ yum downgrade /mnt/rhel7/Packages/grep-2.20-3.el7.x86_64.rpm

参考

https://www.oracle.com/java/technologies/javase/products-doc-jdk8-jre8-certconfig.html
https://www.oracle.com/java/technologies/jdk-jre-7-cs-config.html
https://www.oracle.com/java/technologies/system-configurations.html
https://www.oracle.com/java/technologies/javase/system-configurations.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/14123.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何选择序列化协议:关键因素与场景分析

如何选择序列化协议&#xff1a;关键因素与场景分析 序列化协议的选择直接影响着系统的性能、可维护性及跨平台兼容性。以下是针对不同场景下&#xff0c;几种常见序列化协议的选择建议&#xff1a; 1. 公司间系统调用&#xff08;性能要求宽松&#xff09; SOAP (基于XML)&a…

1103 缘分数(测试点4)

solution 测试点4&#xff1a;1 1不符合缘分数定义&#xff0c;但是这个判断能够通过记得排除掉 #include<iostream> #include<cmath> using namespace std; bool judge(int n){int t sqrt(n);if(t * t n) return true;return false; } int main(){int n, m, c…

【大比武07】人工智能技术赋能城建档案高质量发展

关注我们 - 数字罗塞塔计划 - # 大比武2024 本篇是参加“华夏伟业”杯第二届档案信息化公司业务与技术实力大比武&#xff08;简称“大比武 2024”&#xff09;的投稿文章&#xff0c;来自讯飞知喻&#xff08;安徽&#xff09;科技有限公司&#xff0c;作者&#xff1a;张海剑…

《TortoiseSVN》简单使用说明

##################工作记录#################### 常用图标说明 一个新检出的工作副本 修改过的文件 更新过程遇到冲突的文件 你当前对文件进行了锁定&#xff0c;不要忘记不使用后要解锁&#xff0c;否则别人无法使用 当前文件夹下的某些文件或文件夹已经被调度从版本控制…

阿里架构师整理:100套Java经典实战项目+源码!拿走玩去,练不会我直接退出IT

技术学习的目的是进行项目开发&#xff0c;但是很多同学苦于自学没有项目练手&#xff0c;被面试官问到项目经验&#xff0c;项目就成了自己的短板。小编特地收集了阿里架构师整理的java实战项目来满足大家的需求&#xff0c;让大家在实战中不断成长&#xff01; 话不多说了&…

基于Pytorch框架的卷积神经网络MNIST手写数字识别

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 MNIST手写数字数据集是机器学习领域中的一个经典数据集&#xff0c;它包含了大量的手写数字图…

探索 JavaScript 新增声明命令与解构赋值的魅力:从 ES5 迈向 ES6

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; ES5、ES6介绍 文章目录 &#x1f4af;声明命令 let、const&#x1f35f;1 let声明符&a…

leetcode437 路径总和III-哈希表+前缀和

题目 给定一个二叉树的根节点 root &#xff0c;和一个整数 targetSum &#xff0c;求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始&#xff0c;也不需要在叶子节点结束&#xff0c;但是路径方向必须是向下的&#xff08;只能从父节点到子节…

618哪些好物值得入手?必备数码好物清单分享

618购物节又来了!一大波智能好物来袭!随着科技的日新月异&#xff0c;智能产品已成为我们生活中不可或缺的一部分&#xff0c;它们不仅炫酷&#xff0c;还能让你生活更便捷。想知道今年都有哪些黑科技新品吗?赶紧跟我们一起&#xff0c;我们将详细介绍这些热门好物。一堆超炫酷…

免费SSL证书与付费SSL证书:特性对比与适用场景解析

近几年随着互联网的发展&#xff0c;线上教育、线上办公&#xff0c;线上学习等逐渐融入我们的生活。与此同时&#xff0c;信息数据泄露等网络安全问题也日益突出&#xff0c;为了保护企业与用户的隐私信息&#xff0c;越来越多的公司选择安装SSL证书来保护网站和平台的数据安全…

poi操作word模板,对原有的word修改

/*** 化工园区调查表** param templatePath* param outPath* param parkInterview*/public static String getDocx(String templatePath, String outPath, ParkInterview parkInterview){File file new File(templatePath);File file1 new File(outPath);if(!file1.exists()…

计算机网络数据链路层知识点总结

3.1 数据链路层功能概述 &#xff08;1&#xff09;知识总览 &#xff08;2&#xff09;数据链路层的研究思想 &#xff08;3&#xff09;数据链路层基本概念 &#xff08;4&#xff09;数据链路层基本功能 3.1 封装成帧和透明传输 &#xff08;1&#xff09;数据链路层功能…

简单几步免费申请通配符/泛域名SSL证书

申请免费通配符SSL证书的过程可能会因不同的证书颁发机构(CA)而异&#xff0c;但以下是一般步骤&#xff0c;基于当前可获得的信息&#xff0c;特别是提及了JoySSL作为提供免费通配符证书的服务商之一。请注意&#xff0c;情况可能会随时间变化&#xff0c;因此建议直接访问相关…

文件传输服务应用1——java集成smb2/3详细教程和windows共享服务使用技巧

在实际项目开发过程中&#xff0c;读取网络资源或者局域网内主机的文件是必要的操作和需求。而FTP&#xff08;文件传输协议&#xff09;和SMB&#xff08;服务器消息块&#xff09;是两种最为常见的文件传输协议。它们各自在文件传输领域拥有独特的优势和特点&#xff0c;但同…

【NOIP2013普及组复赛】题4:车站分级

题4&#xff1a;车站分级 【题目描述】 一条单向的铁路线上&#xff0c;依次有编号为 1 , 2 , … , n 1,2,…,n 1,2,…,n 的 n n n 个火车站。每个火车站都有一个级别&#xff0c;最低为 1 1 1 级。现有若干趟车次在这条线路上行驶&#xff0c;每一趟都满足如下要求&#…

Q-Learning学习笔记-李宏毅

introduction 学习的并不是policy&#xff0c;而是学习critic&#xff0c;critic用来评价policy好还是不好&#xff1b;一种critic&#xff1a;state value function V π ( s ) V^\pi(s) Vπ(s)是给定一个policy π \pi π&#xff0c;在遇到state s s s之后累积的reward的…

狙击交易策略加强版与普通版5点区别,WeTrade众汇盘点

通过之前的文章想必各位投资者都已经知道了什么是狙击交易策略&#xff0c;以及如何使用&#xff0c;WeTrade众汇本着严谨的态度&#xff0c;对狙击战术进行了大致梳理&#xff0c;发现其主要更新集中在2015至2017年间。但是研发者并未止步于此。2018年之后&#xff0c;他们又推…

子分支想主分支发起合并请求

请求合并 1.点击 git Web 页右上角打开 Merge requests 进入新页&#xff0c;点击右上角。注意选择要合并的项目 2.左边是源分支&#xff0c;右边是要合并的目标分支。 3.最后点击左下角绿色按钮 4.第一个红框 Assignee&#xff0c;选择要通知去合并的人。第二个红框不动&#…

Java面试题--基础篇,更新中...

1、 Java语言有哪些特点 简单易学、有丰富的类库 面向对象&#xff08;Java最重要的特性&#xff0c;让程序耦合度更低&#xff0c;内聚性更高&#xff09; 与平台无关性&#xff08;JVM是Java跨平台使用的根本&#xff09; 可靠安全 支持多线…

【NPS】微软NPS配置802.1x,验证域账号,动态分配VLAN(WLC篇)

距离上一篇【NPS】微软NPS配置802.1x&#xff0c;验证域账号&#xff0c;动态分配VLAN&#xff08;NPS篇&#xff09;已经过去了近两周了&#xff0c;因为工作原因一直没有来得及更新在WLC上的设置&#xff0c;接下来我们来看一下如何在 Cisco Catalyst 9800-L Wireless Contro…