企业国产操作系统选型适配实施方案

d2eddee63d9ff961fb0b26139c59a7b0.jpeg

   

【摘要】企业在推动国产化进程时,需选择一款主流、稳定且安全的服务器操作系统作为其系统软件。在产品投入实际生产环境前,对上游软硬件的适配情况有深入了解至关重要。本文将重点介绍银河麒麟高级服务器操作系统V10(以下简称麒麟V10)的软件适配情况,结合实例进行分享,并对运维过程中遇到的问题进行分析,提供有效解决方案。

一、麒麟操作系统概况

麒麟V10是一款商业版本服务器操作系统,其作为承载业务系统的基础底座,能满足大部分企业的产品需求,各类软硬件适配也都较好。麒麟V10的SP1/SP2/SP3版本内核都是基于OpenEuler 20.03 LTS研发的,其支持X86、ARM、Alpha、MPIS等CPU架构,支持Intel、AMD、鲲鹏、海光、飞腾、龙芯、兆芯、申威8种国内外主流CPU品牌,已适配1400多款国内外服务器整机,适配1500多款主板和板卡,适配200多款数据库和200多款中间件产品,适配6600多款服务器基础软件,适配250000多款服务器商业软件和开源软件。

86bdfcc98aa16cf1d5e47cb46e02a701.jpeg


二、常用软件选型适配

2.1 常用软件适配情况

本文罗列了29款常用软件的适配情况,如下表所示,供参考:

4595fe739d163f8ba91472be822608d5.jpeg

更多兼容适配情况,可登录麒麟生态官网进行查询:

探索商业生态,欢迎访问https://eco.kylinos.cn/zoology/commercial.html?system_class=1。在这里,我们将带您领略商业世界的奥秘与魅力。

2.2 常用软件适配案例

以下是几个典型的数据库(MongoDB、Redis)和中间件(Nginx、Tomcat)的适配测试案例,为您详解软件适配流程。

2.2.1 MongoDB
2.2.1.1 MongoDB测试环境

麒麟V10镜像:

Kylin Server 10 SP1 ARM64,版本2500,发布日期:2020年12月02日。立即体验稳定高效的服务器系统!

硬件环境:cpu数量(4),可用内存(8G),磁盘(300G)

软件版本:MongoDB 4.0.12

2.2.1.2 MongoDB适配步骤

(1)软件安装

创建安装目录

# mkdir -p /usr/local/mongodb/bin

解压并安装mongodb-linux-arm64-4.0.12.tgz至/usr/local/mongodb/bin,轻松完成软件配置。

解压mongodb-linux-arm64-4.0.12.tgz文件到/usr/local/mongodb/bin目录,命令如下:`tar -zxvf mongodb-linux-arm64-4.0.12.tgz -C /usr/local/mongodb/bin`

db68d32e4d72c42b46816d98d1eda924.jpeg

(2)配置系统环境参数

# vim /etc/profile

将您的环境路径扩展至新位置:/usr/local/mongodb/bin/mongodb-linux-arm64-4.0.12/bin,为您的操作带来无限可能。

6a47c101d737b52ca4b14bd6498a0cdd.jpeg

# source /etc/profile

(3)创建MongoDB数据文件存放目录和日志文件存放目录

# mkdir -p /data/db /logs

(4)创建MongoDB运行时使用的配置文件

# mkdir -p /usr/local/mongodb/conf

5d2debf8bd15f696222c95be521bfbd6.jpeg

请将以下启动参数编辑并保存至/usr/local/mongodb/conf/mongodb.conf文件中。

dbpath = /data/db # 数据文件存放目录

logpath = /logs/mongodb.log # 日志文件存放目录

port = 27017 # 端口

fork = true # 以守护程序的方式启用,即在后台运行

开启认证后,您将需要设置 MongoDB 账户并输入密码以进行远程访问。首次安装时,建议您先进行注释处理。

将bind_ip设置为0.0.0.0,即可实现远程访问。如需仅限本地访问,可注释此行或将其设为127.0.0.1。

6648177f5a44ec9f6cb5bbd633dc3d3b.jpeg

(5)启动MongoDB

执行以下命令,启动MongoDB

启动MongoDB,使用命令:`mongod -f /usr/local/mongodb/conf/mongodb.conf`

fb0fbe74f5cb84edd78ff0c1890515a7.jpeg

(6)验证

使用mongo交互工具,操作MongoDB数据库,如下所示:

a340182d10d2fbc4830af31ab4f52c7f.jpeg

验证帮助、退出等功能“help”、“show dbs”、“quit”进行交互。

1bf3d1366cdab751058aa0cb992000bf.jpegb67c1df4958ba399719b5cf82481821e.jpeg1dce08f14bc5171f820cf1e6d1761727.jpeg

(7)查看日志

# cat mongodb.log

023717377d03672eb2f1d466b32301fa.jpeg

完成兼容性适配测试。

2.2.2 Redis
2.2.2.1 Redis测试环境

麒麟V10镜像:

Kylin-Server-10-SP1,2020年12月2日发布,版本10.2500,适用于arm64架构。

硬件环境:cpu数量(128),可用内存(510G),磁盘(2T)

软件版本:redis-5.0.7

2.2.2.2 Redis适配步骤

(1)软件安装

请使用命令# rpm -ivh redis-5.0.7-1.ky10.aarch64.rpm进行安装。

2444c3e98811099a10a738d45a5050cd.jpeg

(2)检查版本

a.查看Redis版本。

# redis-server -v

系统会显示如下类似信息,表示redis的版本是5.0.7。

82163a149ed8be0f774699c1e1dc8bb6.jpeg

b.查看Redis的CLI版本。

# redis-cli -v

系统会显示如下类似信息,表示redis的CLI版本是5.0.7。

4b828ec44e7fb08eac4f2a61d46bf19e.jpeg

(3)启动服务

c.执行如下命令,启动redis-server。

# systemctl start redis.service

# systemctl status redis.service

50e64ca500fc3684940cd0d4879f9179.jpeg

(4)功能测试

# redis-cli

127.0.0.1:6379> set aa 1

OK

127.0.0.1:6379> get aa

"1"

f634155ecdeabab1b90cb001a91d833b.jpeg

完成兼容性适配测试。

2.2.3 Nginx
2.2.3.1 Nginx测试环境

麒麟V10镜像:

优化后:Kylin-Server-10-SP1-v10.2500-20201202-ARM64.iso。

硬件环境:cpu数量(128),可用内存(510G),磁盘(2T)

软件版本:nginx1.16组件

2.2.3.2 Nginx适配步骤

(1)配置软件源

编辑/etc/yum.repos.d/kylin_aarch64.repo文件,添加软件仓库源地址如下:

[ks10-adv-appstore]

Kylin Linux高级服务器10版现已上架AppStore,提供专业且高效的Linux服务解决方案。

访问升级平台:http://update.cs2c.com.cn:8080/NS/V10/V10SP1/os/adv/lic/appstore/$basearch/,为您带来最新资讯与服务。

gpgcheck = 0

enabled = 1

b.清除之前的缓存

# yum clean all

c.建立缓存

# yum makecache

(2)软件安装

a.执行如下命令安装

# dnf install -y nginx

013f6ab684422b7e215633feca3513fc.jpeg

b.查看软件版本

# nginx -v

449b7d6e45b954ef79324f700b939c8a.jpeg

c.查看nginx运行情况

执行命令开启nginx服务

# systemctl start nginx.service

b5c34c2b1245f425ce97140229d2b40f.jpeg

(3)运行测试

从浏览器访问本机ip显示“Welcome to nginx!”

a6d9cbc562b309ca88f643cad5425db6.jpeg

完成兼容性适配测试。

2.2.4 Tomcat
2.2.4.1 Tomcat测试环境

麒麟V10镜像:

Kylin-Server-10-SP1-Release-Build10-2500-20201202-arm64.iso:全新升级,稳定强大。

硬件环境:cpu数量(4),可用内存(8G),磁盘(300G)

软件版本:tomcat-8.5.0

2.2.4.2 Tomcat适配步骤

(1)配置软件源

编辑/etc/yum.repos.d/kylin_aarch64.repo文件,添加软件仓库源地址如下:

[ks10-adv-os]

Kylin Linux Advanced Server 10 - OS,高效稳定的企业级服务器操作系统。

请访问我们的升级站点:http://update.cs2c.com.cn:8080/NS/V10/V10SP1/os/adv/lic/base/$basearch/,开始您的体验之旅。我们提供最新、最安全的服务,期待您的光临!

gpgcheck = 0

enabled = 1

b.清除之前的缓存

# yum clean all

c.建立缓存

# yum makecache

(2)软件安装

# tar -zxvf apache-tomcat-8.5.0.tar.gz

51e6960f5165a76d08dd1beab1501d83.jpeg

(3)启动tomcat

# cd apache-tomcat-8.5.0

7e936569687295e84d4f88942fd0df8f.jpeg

# cd bin

fdea559f1ae2a6157e236da67bfc7721.jpeg

# ./startup.sh

eef77eaf670295bfd87db2f5dcab6c29.jpeg

tomcat已启动。

(4)设置防火墙

a.需要设置防火墙开放8080端口,命令为

使用firewall-cmd,将端口8080/tcp永久添加到公共区域。操作简洁,网络安全一键搞定,快来体验吧!

命令解析:

--zone #作用域

--add-port=8080/tcp #添加端口,格式为:端口/通讯协议

--permanent #永久生效,没有此参数设置,重启后会失效。

0cec72ba225f092b86bceb6daa211cd7.jpeg

b.重启防火墙

# firewall-cmd -reload

7dd29eb330862d2d3feb173a49a78429.jpeg

(5)功能验证

在浏览器中访问该系统ip的8080端口即可访问tomcat8.5.0。

a.查看系统ip

# ifconfig

2fc5844294153209b919be33de602270.jpeg

b.打开浏览器输入:172.17.30.109:8080

dccd90620e738d106ca59818696ae6ae.jpeg

完成兼容性适配测试。

三、运维实施过程中的难点及应对方案

本文深入剖析了我们近几年使用麒麟V10系统所遇到的挑战及应对策略,涵盖操作系统兼容性、漏洞、特性及激活四大领域。

3.1 系统兼容问题

3.1.1 国产服务器安装麒麟V10系统异常
3.1.1.1 场景说明

ea04f2191684ddb9b546b39ecb13939f.jpeg

3.1.1.2 分析及处置过程

在安装过程中遭遇错误,很可能源于磁盘问题。通常,通过初始化磁盘并重建磁盘阵列,问题可得到解决。首先进行本地盘的初始化,重启后错误依旧;其次,取消存储卷映射关系,重启并重新进入安装界面,错误未再出现。然而,点击“下一步”后,新的错误提示“未选择任何磁盘”浮出水面,即系统未能识别到磁盘。

110b5443151ecba3e510eb94dd28cf6e.jpeg

点进去确实没有发现磁盘。

b4f62f47811e1dd1f58782ee0289a33c.jpeg

识别不到盘一般和阵列卡驱动有关,需要安装对应驱动,下面开始安装阵列卡驱动:

a.将对应驱动做进系统镜像里,挂载镜像开始安装。

b.到安装界面,通过Ctrl+Alt+F2切换至命令行模式

c.挂载镜像:mount /dev/sr0 /mnt

安装驱动:轻点rpm -ivh kmod-megaraid_sas-07.720.04.00-1.ky10.x86_64.rpm -nodeps。让技术更便捷,让生活更美好。

d7b372f4fee535bf0acab741b3a13196.jpeg

驱动装载:执行命令'insmod /lib/modules/4.19.90-23.8.v2101.ky10.x86_64/extra/megaraid_sas/megaraid_sas.ko'。请确保路径准确无误,以便成功加载驱动。

f.重新扫描下磁盘,则识别到了磁盘。

360e93559edb386d7f1878eff67f84b0.jpeg

选中该磁盘,开始正常安装。

3.1.2 红帽7与麒麟V10的SSH会话会超时中断
3.1.2.1 场景说明
3.1.2.2 分析及解决方案

测试结果显示,红帽7与麒麟V10的SSH会话在同版本间正常运作。然而,当跨版本进行会话时,如红帽7至麒麟V10或麒麟V10至红帽7,均出现兼容性问题。初步推断,这是操作系统SSH的兼容难题。

查看两者SSH默认配置:

(1)麒麟V10SP1默认配置参数ClientAliveCountMax值为0;

优化后:红帽7.1默认未设定ClientAliveCountMax和ClientAliveInterval参数。

解决方案有以下三种,选其一即可:

(1)客户端远程连接服务器时,每60秒自动接收一次KeepAlive请求,确保超时空闲不会导致连接断开。

优化后:在红帽系统配置文件/etc/ssh/ssh_config中,添加参数ServerAliveInterval 60,以保持连接活跃。

b.重启ssh服务

# systemctl restart sshd

在红帽系统中,要发起SSH远程连接,请添加参数,例如:`ssh -o ServerAliveInterval 60 <用户名>@<IP地址> "脚本或执行命令"`。

(3) 作为服务端,每60秒发送KeepAlive请求至客户端,确保连接不因超时而中断。若连续三次失败,则认为客户端网络问题,中断SSH会话。

在麒麟V10中,请打开配置文件/etc/ssh/sshd_config(注意区分),添加参数ClientAliveCountMax 3和ClientAliveInterval 60。这样设置后,您的连接将更加稳定高效。

b.重启SSH服务

# systemctl restart sshd

3.2 操作系统漏洞

操作系统不可避免会有漏洞,需要迭代更新,国产服务器操作系统也不例外。

麒麟V10的主要漏洞为内存泄露,涉及诸如mate-indicators、audit审计、kylin-kms-daemo和gvfs-udisks2-volume-monitor等进程。应对内存泄漏,我们通常采用两种策略。

(1)优化措施:通常,我们可以通过禁用服务或终止进程来应对紧急情况。然而,某些服务存在依赖关系,当其他服务重新启动或其他场景下,这些服务可能会被激活,导致问题未得到彻底解决。例如,gvfs-udisks2-volume-monitor进程依赖于gdm服务,这种方法在这种情况下并不适用。

(2)解决措施:升级补丁,彻底修复。

3.2.1 mate-indicators进程内存泄漏
3.2.1.1 问题描述

现象揭秘:mate-indicators进程,图形界面的关键角色,却遭遇内存泄露困扰。程序运行过程中,申请的内存未能得到妥善释放。如上图,top命令揭示其内存使用率居高不下,超过80%。

277025848380cd9dc765fc1f58066cef.jpeg

优化后:
影响范围:Mate-Indicators软件包,版本低于20150918Kord0Ukui58-10.p07。

3.2.1.2 解决方案

(1)检查软件包版本

# rpm -qa | grep mate-indicators &nbsp;&nbsp;&nbsp;&nbsp;

优化后:2015年9月18日,Mate指标更新至kord0ukui58-10.p03.ky10版本,适用于aarch64架构。

该版本存在内存泄露问题,一般建议升级至最新稳定版本。

(2)升级补丁

通过yum源或rpm包方式进行软件包升级,如

# rpm -Uvh mate-indicators*

升级后检查版本信息

# rpm -qa | grep mate-indicators

"Mate Indicators 20150918Kord0UKUI58-10.P07.KY10.Aarch64 - 高效、精准的科技指标工具,为您的数据驱动决策提供强大支持。"

(3)重新加载配置

# systemctl restart lightdm

3.2.2 rpm进程出现CPU冲高
3.2.2.1 问题描述

现象:rpm进程持续运行不退出且cpu占用接近100%。

影响范围:libdb软件包版本低于5.3.28-37.p01.ky10

3.2.2.2 解决方案

通过yum源或rpm包方式进行软件包升级,如:

# rpm -Uvh libdb*

探索我们的三个软件包:libdb-help -5.3.28-37.p01.ky10.noarch.rpm、libdb-devel-5.3.28-37.p01.ky10.x86_64.rpm、libdb-5.3.28-37.p01.ky10.x86_64.rpm。它们将引领您进入技术的新领域,为您的工作和学习提供强大的支持。

3.2.3 rpmdb出现损坏
3.2.3.1 问题描述

影响范围:查看当前版本,rpm版本非p01,需要修复

# rpm -qa|grep -E '^rpm'

3.2.3.2 解决方案

将软件包(rpm-4.15.1-23.p01.ky10.aarch64.rpm、python3-rpm-4.15.1-23.p01.ky10.aarch64.rpm)统一放置于指定目录,进入后执行升级操作。

# yum localinstall ./*.rpm

(2)禁用dnf-makecache.timer定时器

# systemctl stop dnf-makecache.timer

# systemctl disable dnf-makecache.timer

3.2.4 其他漏洞问题

欲探索更多漏洞问题,欢迎访问麒麟软件知识库。目前,我们的知识库已涵盖浙江公开知识库(https://www.yuque.com/kylinos/zj)和麒麟软件公开知识库(http://wx.kylinos.cn/zsk)。让我们一起挖掘知识的宝藏,解锁无限可能!

3.3 操作系统特性

麒麟V10系统与红帽系统在日常应用上并无显著差异,尽管存在一些特殊属性可能影响运行。因此,建议在运维实施前进行充分规划,以提前应对可能出现的问题。

3.3.1 9090端口被占用
3.3.1.1 现象

查看端口使用情况,发现9090端口被占用。

# netstat -antp |grep 9090

58464aa0f91986b3b7f83894a54fd91c.jpeg

3.3.1.2 原因

9090端口已被Cockpit服务锁定,这款开源工具以Web界面管理Linux系统,提供丰富的功能,如文件管理、系统日志查看、用户管理、服务配置、网络设置及安全审计等。Cockpit,让Linux管理更便捷,更直观。

3.3.1.3 解决方案

禁用服务,释放端口。

请执行以下命令以查看Cockpit服务状态:# systemctl status cockpit.socket

0a68b5237c4a7b10bad4506ec0738be2.jpeg

"3. 关闭Cockpit服务:执行命令# systemctl disable cockpit.socket。"

(4)查看端口占用情况:# netstat -antp |grep 9090

44fc6044bea8298392fed001b6e19d5d.jpeg

3.3.2 系统重启后/tmp目录被清空
3.3.2.1 现象

# df -Th|grep /tmp

d91a2937e6e4fdd0e1a1beb8e9d053ab.jpeg

3.3.2.2 原因

/tmp目录是采用tmpfs文件系统类型,这是一种基于内存的、被称为临时文件系统的存储方式。由于其将文件存放在内存中,因此会占用内存资源,一旦系统重启,内存数据便会丢失。

请注意,tmp.mount是一项systemd服务,专为挂载临时文件系统设计。在启动时,此服务会自动运行,将高效的tmpfs文件系统挂载至/tmp目录,以实现临时文件的快速读写。为您的系统操作带来便捷体验。

3.3.2.3 优化建议(二选一)

(1)禁用tmp.mount服务,将/tmp恢复至/目录下

# systemctl mask tmp.mount

74d215fac3f01bf8c4aee9d046d083ba.jpeg

重启后生效:

4c3a861416af6aa069f0c013aa9f83bd.jpeg

(2)保留tmp.mount服务,为操作系统添加硬盘,构建一个独立逻辑卷并挂载在/tmp目录下。设置为独立文件系统并整合至/etc/fstab配置中。利用LVM技术,操作简洁高效。

e91b0d931ba61d1a45ee1e7fd1ab7d62.jpeg

3.3.3 普通用户无法执行crontab命令
3.3.3.1 现象

普通用户执行crontab报错,显示没有权限执行。

# crontab -e

07f860443caca4ef23641b1337e76a7e.jpeg

3.3.3.2 原因

"crontab"命令,让您定时执行任务。若被恶意利用,可能引发安全隐患。麒麟V10默认实施安全策略,仅允许root用户及/etc/cron.allow文件中的非root用户使用,确保您的系统安全无虞。

3.3.3.3 解决方案(二选一)

(1)临时添加白名单

在/etc/cron.allow中添加需执行crontab的用户,如monitor。若文件不存在,则进行创建。

b153d58549712e64f704a9ec035d9208.jpeg

不再报错:

fcc478ec9cc36004c95a0df8424ba88a.jpeg

(2)删除白名单,创建黑名单(放开所有用户)

# rm -f /etc/cron.allow

# touch /etc/cron.deny

c17f025d87253985d3a4cab47518dc1e.jpeg

3.3.4 root用户不能直接su到普通用户
3.3.4.1 现象

root用户su到普通用户提示需要输入密码。

df91fd6f2d5f6866f220661078c0dcf2.jpeg

3.3.4.2 原因

麒麟V10搭载了全新的kysec安全管理工具,特设uid(600)和uid(700)两个特性,专为三权分立用户设计。当root用户切换到这些uid用户时,系统将提示输入密码,确保信息安全。

"三权分立角色涵盖secadm安全管理员、auditadm审计管理员及root系统管理员,确保权限清晰、操作安全。"

3.3.4.3 解决方案

调整su操作的用户密码验证策略。

(1)编辑配置文件/etc/pam.d/su

# vi /etc/pam.d/su

5bde1dd521d52954b083922e61fc9cc4.jpeg

将/etc/pam.d/su文件的第一行注释掉,即第一行内容调整如下:

0848df4ad68546d0ea2cbd3ff80124c7.jpeg

(2)测试是否生效

# su - test

9e4778026028965fd84319047b180956.jpeg

3.3.5 开启内核参数tcp_tw_recycle报错
3.3.5.1 现象

在/etc/sysctl.conf配置文件中添加参数"net.ipv4.tcp_tw_recycle=1",然后执行命令启动。

# sysctl -p

5cf773452ad5c9e6f9c6c49a780e79ce.jpeg

报错如下:

6c40d67769f4459a895cad5fcd7d0d67.jpeg

3.3.5.2 原因

从内核版本4.10开始,每个数据包的时间戳生成机制进行了变革(TCP连接的时间戳偏移被随机化),这可能与tcp_tw_recycle参数产生交互影响,引发TCP连接异常。因此,在内核版本4.12中,我们彻底移除了tcp_tw_recycle参数。

注:麒麟V10SP1采用4.19内核版本,无需处理。

3.4 操作系统激活

麒麟V10的激活方式包括微信扫码、KMS批量及场地授权。我们将聚焦微信扫码与KMS批量激活流程的差异,而忽略无需操作的场地授权。

3.4.1 激活流程

激活流程:微信扫码绑定授权二维码,获取启动权限。系统读取授权文件并执行命令,生成二维码。扫描二维码,启动激活程序。完成激活,一切尽在掌握。

3.4.2 差异及建议

激活耗时:微信方式手工操作,大量激活需耗费时日;KMS方式待搭建完成服务器后,将显著减少工作量。尽管自动化程度有待提升,建议在KMS批量激活服务器搭建完成后,通过脚本或平台实现高效自动化激活。

麒麟V10不激活不影响系统运行,但商业版软件建议根据正版化要求进行激活使用。

四、总结

打造国产操作系统的完整生态链是推动创新信息操作系统的“关键步骤”。同时,一个健全的软硬件生态链也是企业在引入新操作系统时需要重点考虑的因素之一。麒麟V10已经成功建立了自己的生态链,在与常用软件的兼容性上已表现出色。然而,仍存在一些问题需要解决。生态链的持续优化和完善离不开企业在实际运维和业务场景中的问题反馈以及方案改进。在这场创新信息浪潮中,我们作为从业人员需积累技术、做好预备,以实现在遇到问题时能从容应对,心中有数。


-对此,您有什么看法见解?-

-欢迎在评论区留言探讨和分享。-

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

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

相关文章

昇思25天学习打卡营第14天|K近邻算法实现红酒聚类

红酒Wine数据集 类别(13类属性)&#xff1a;Alcohol&#xff0c;酒精&#xff1b;Malic acid&#xff0c;苹果酸 Ash&#xff0c;灰&#xff1b;Alcalinity of ash&#xff0c;灰的碱度&#xff1b; Magnesium&#xff0c;镁&#xff1b;Total phenols&#xff0c;总酚&#xf…

算法可以赋能教育业务的哪些场景?

本文内容就一个点&#xff0c;将算法应用到教育系统中的各场景&#xff0c;让每个业务模块都实现智能化 以下列举出所有的需求点 目录 一、千人千面&#xff0c;个性化推荐流&#xff0c;推荐用户感兴趣的内容 实现方案&#xff1a;CTR模型 应用场景&#xff1a;所有的内容…

Perl语言之数组

Perl数组可以存储多个标量&#xff0c;并且标量数据类型可以不同。   数组变量以开头。访问与定义格式如下&#xff1a; #! /usr/bin/perl arr("asdfasd",2,23.56,a); print "输出所有:arr\n"; print "arr[0]$arr[0]\n"; #输出指定下标 print…

NLP任务:情感分析、看图说话

我可不向其他博主那样拖泥带水&#xff0c;我有代码就直接贴在文章里&#xff0c;或者放到gitee供你们参考下载&#xff0c;虽然写的不咋滴&#xff0c;废话少说&#xff0c;上代码。 gitee码云地址&#xff1a; 卢东艺/pytorch_cv_nlp - 码云 - 开源中国 (gitee.com)https:/…

初始c语言 语句

一 认识语句 控制流语句 if-else语句&#xff1a;用于条件判断。for循环语句&#xff1a;用于循环执行一段代码。while循环语句&#xff1a;当条件为真时执行循环。do-while循环语句&#xff1a;先执行一次循环体&#xff0c;然后再判断条件。switch语句&#xff1a;根据不同的…

CEPH 硬盘读写慢问题影响

ceph使用时经常会碰到起不来的情况 第一种就是服务器负载高&#xff0c;这个基本都会觉察到 还有一种就是硬盘问题 硬盘写问题 初始化时ceph会自己进行填充操作 ceph-volume lvm zap /dev/sdx --destroy 我就碰到过没初始化问题 看着一切正常 但看写入速度才几百KB/s 正常都100…

ArrayList模拟实现

ArrayList模拟实现 ArrayList 的初步介绍常见操作 ArrayList 的简单模拟实现 ArrayList 的初步介绍 ArrayList也叫做顺序表&#xff0c;底层是一个数组。 在创建顺序表 时就应该规定 里面元素的数据类型&#xff0c;其中不能直接传基本数据类型&#xff0c;例如int、char。需要…

Java代码初始化块

目录 实例域代码块 静态域代码块 初始化代码块分为静态域代码块和实例域代码块&#xff0c;静态域代码块在类第一次被加载时被执行&#xff0c;实例域代码块在创建对象时被执行&#xff0c;一个类中可以有多个代码块。 实例域代码块 使用方法 可以有输出语句 可以对类的属…

vue实现a-model弹窗拖拽移动

通过自定义拖拽指令实现 实现效果 拖动顶部&#xff0c;可对整个弹窗实施拖拽&#xff08;如果需要拖动底部、中间内容实现拖拽&#xff0c;把下面的ant-modal-header对应改掉就行&#xff09; 代码实现 编写自定义指令 新建一个ts / js文件&#xff0c;用ts举例 import V…

基于modbus tcp通讯的雷赛导轨控制器调试软件

0.前言 之前工作遇到了雷赛电机驱动器设备&#xff0c;主要是用来控制光学导轨移动。雷赛的调试软件用的时串口通讯&#xff0c;还要他们定制的串口线&#xff0c;在现场都是485转网络的接口&#xff0c;调试起来也很不方便。所以我就照着他们的说明书&#xff0c;写了一个简易…

Vue3 引入Vanta.js使用

能搜到这篇文章 想必一定看过demo效果图了吧 示例 Vanta.js - Animated 3D Backgrounds For Your Website (vantajs.com) 1. 引入 在根目录 index.html中引入依赖 <script src"https://cdnjs.cloudflare.com/ajax/libs/three.js/r134/three.min.js"></sc…

基于SpringBoot+VueJS+微信小程序技术的图书森林共享小程序设计与实现:7000字论文+源代码参考

博主介绍&#xff1a;硕士研究生&#xff0c;专注于信息化技术领域开发与管理&#xff0c;会使用java、标准c/c等开发语言&#xff0c;以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年&#xff0c;拥有近12年的管理工作经验&#xff0c;拥有较丰富的技术架…

底软驱动 | U-boot移植点点滴滴

u-boot 移植要点 一般厂家直接提供 u-boot 源码&#xff0c;做查看、修改(增加新功能) 或 u-boot 版本升级这三大块的用处&#xff1b;后两种都需要对新板子做适配/移植。 如果没有提供 u-boot 源码&#xff0c;那么就从 u-boot 官方版本中找到一个最相近的板子配置进行移植&…

【QT】布局管理器

布局管理器 布局管理器1. 垂直布局2. 水平布局3. 网格布局4. 表单布局5. Spacer 布局管理器 之前使⽤ Qt 在界⾯上创建的控件, 都是通过 “绝对定位” 的⽅式来设定的&#xff1b;也就是每个控件所在的位置, 都需要计算坐标, 最终通过 setGeometry 或者 move ⽅式摆放过去。 …

排序-java(详解)

一&#xff0c;分类 主要的排序大致分为以下几类&#xff1a; 1&#xff0c;插入排序&#xff0c;又分为直接插入排序和希尔排序 2&#xff0c;选择排序&#xff0c;又分为选择排序和堆排序 3&#xff0c;交换排序&#xff0c;又分为冒泡排序和快速排序 4&#xff0c;归并…

【linux】服务器安装及卸载pycharm社区版教程

【linux】服务器安装及卸载pycharm社区版教程 【创作不易&#xff0c;求点赞关注收藏】 文章目录 【linux】服务器安装及卸载pycharm社区版教程1、到官网下载安装包2、通过终端wget下载安装包3、解压4、安装5、设置环境变量6、运行pycharm7、删除pycharm安装包、卸载pycharm …

从“卷模型”到“卷应用”:AI时代的价值重塑与个性化智能探索

&#x1f308;所属专栏&#xff1a;【其它】✨作者主页&#xff1a; Mr.Zwq✔️个人简介&#xff1a;一个正在努力学技术的Python领域创作者&#xff0c;擅长爬虫&#xff0c;逆向&#xff0c;全栈方向&#xff0c;专注基础和实战分享&#xff0c;欢迎咨询&#xff01; 您的点…

【漏洞复现】华测监测预警系统2.2 UserEdit.aspx SQL注入

声明&#xff1a;本文档或演示材料仅用于教育和教学目的。如果任何个人或组织利用本文档中的信息进行非法活动&#xff0c;将与本文档的作者或发布者无关。 一、漏洞描述 华测监测预警系统2.2&#xff08;HuaCe Monitoring and Early Warning System 2.2&#xff09;是一款由华…

人工智能算法工程师(中级)课程9-PyTorch神经网络之全连接神经网络实战与代码详解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(中级)课程9-PyTorch神经网络之全连接神经网络实战与代码详解。本文将给大家展示全连接神经网络与代码详解&#xff0c;包括全连接模型的设计、数学原理介绍&#xff0c;并从手写数字识别到猫狗识…

【第32章】MyBatis-Plus之代码生成器配置

文章目录 前言一、概述1.特点说明2.示例配置3. 数据库配置 (DataSourceConfig) 二、全局配置 (GlobalConfig)1.方法说明2.示例配置 三、包配置 (PackageConfig)1. 方法说明2. 示例配置 四、模板配置 (TemplateConfig)1. 方法说明2. 示例配置 五、注入配置 (InjectionConfig)1. …