麒麟操作系统选型适配:经验与策略分享

一、麒麟操作系统概况

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

图片

二、常用软件选型适配

2.1 常用软件适配情况

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

图片

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

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-Release-Build10-2500-20201202-arm64.iso

硬件环境: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目录下

# tar -zxvf mongodb-linux-arm64-4.0.12.tgz -C /usr/local/mongodb/bin

图片

(2)配置系统环境参数

# vim /etc/profile

export PATH=$PATH:/usr/local/mongodb/bin/mongodb-linux-arm64-4.0.12/bin

图片

# source /etc/profile

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

# mkdir -p /data/db /logs

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

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

图片

# vim /usr/local/mongodb/conf/mongodb.conf

编辑以下启动参数到/usr/local/mongodb/conf/mongodb.conf文件中:

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

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

port = 27017 # 端口

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

#auth=true # 需要认证。如果放开注释,就必须创建 MongoDB 的账号,使用账号与密码才可远程访问,第一次安装建议注释

bind_ip=0.0.0.0 # 允许远程访问,或者直接注释,127.0.0.1是只允许本地访问。

图片

(5)启动MongoDB

执行以下命令,启动MongoDB

# mongod -f /usr/local/mongodb/conf/mongodb.conf

图片

(6)验证

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

图片

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

图片

图片

图片

(7)查看日志

# cat mongodb.log

图片

完成兼容性适配测试。

2.2.2 Redis
2.2.2.1 Redis测试环境

麒麟V10镜像:

Kylin-Server-10-SP1-Release-Build10-2500-20201202-arm64.iso

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

软件版本:redis-5.0.7

2.2.2.2 Redis适配步骤

(1)软件安装

# rpm -ivh redis-5.0.7-1.ky10.aarch64.rpm

图片

(2)检查版本

a.查看Redis版本。

# redis-server -v

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

图片

b.查看Redis的CLI版本。

# redis-cli -v

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

图片

(3)启动服务

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

# systemctl start redis.service

# systemctl status redis.service

图片

(4)功能测试

# redis-cli

127.0.0.1:6379> set aa 1

OK

127.0.0.1:6379> get aa

"1"

图片

完成兼容性适配测试。

2.2.3 Nginx
2.2.3.1 Nginx测试环境

麒麟V10镜像:

Kylin-Server-10-SP1-Release-Build10-2500-20201202-arm64.iso

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

软件版本:nginx1.16组件

2.2.3.2 Nginx适配步骤

(1)配置软件源

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

[ks10-adv-appstore]

name = Kylin Linux Advanced Server 10 - AppStore

baseurl=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

图片

b.查看软件版本

# nginx -v

图片

c.查看nginx运行情况

执行命令开启nginx服务

# systemctl start nginx.service

图片

(3)运行测试

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

图片

完成兼容性适配测试。

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)配置软件源

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

[ks10-adv-os]

name = Kylin Linux Advanced Server 10 - Os

baseurl = 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)软件安装

将软件安装包apache-tomcat-8.5.0.tar.gz上传到系统中,解压:

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

图片

(3)启动tomcat

# cd apache-tomcat-8.5.0

图片

# cd bin

图片

# ./startup.sh

图片

tomcat已启动。

(4)设置防火墙

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

# firewall-cmd --zone=public --add-port=8080/tcp --permanent

命令解析:

--zone #作用域

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

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

图片

b.重启防火墙

# firewall-cmd -reload

图片

(5)功能验证

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

a.查看系统ip

# ifconfig

图片

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

图片

完成兼容性适配测试。

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

本文梳理了我们近几年使用麒麟V10系统碰到的一些问题和解决方案,下面将从操作系统兼容问题、漏洞、特性和激活四方面进行展开。

3.1 系统兼容问题

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

联想SR860服务器(raid卡型号为940-8i),采用镜像(Kylin-Server-10-SP1-Release-Build20-20210518-x86_64.iso)安装麒麟V10系统,服务器有2块600G的本地盘(做了RAID1),同时映射了存储(OceanStor5510 V5)4个5T的卷,在安装过程中报错(An unknown error has occurred)。

图片

3.1.1.2 分析及处置过程

安装过程中出现报错,大概率是磁盘有问题,一般初始化磁盘后重做磁盘阵列可恢复。于是第一步初始化本地盘,重启仍出现该报错;第二步将存储卷映射关系取消,重启再进入安装界面,不再出现该报错。但在点击“下一步”后进入新的界面,发现“安装位置(D)”下出现新的报错“未选择任何磁盘”,即识别不到磁盘。

图片

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

图片

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

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

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

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

d.安装驱动:rpm -ivh kmod-megaraid_sas-07.720.04.00-1.ky10.x86_64.rpm -nodeps

图片

e.加载驱动:insmod /lib/modules/4.19.90-23.8.v2101.ky10.x86_64/extra/megaraid_sas/megaraid_sas.ko

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

图片

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

3.1.2 红帽7与麒麟V10的SSH会话会超时中断
3.1.2.1 场景说明

红帽7.1系统通过SSH方式远程连接麒麟V10SP1,会话在超过2小时10分后出现中断。

3.1.2.2 分析及解决方案

经测试,红帽7与红帽7的SSH会话正常,麒麟V10到麒麟V10的SSH会话也正常,而红帽7到麒麟V10或麒麟V10到红帽7的会话都存在此问题,初步判断为操作系统SSH的兼容性问题。

查看两者SSH默认配置:

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

(2)红帽7.1默认未配置参数ClientAliveCountMax和ClientAliveInterval。

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

(1)当作为客户端远程连接服务器时每60秒从服务端接KeepAlive请求,保证客户端不会因为超时空闲而断开连接。

a.在红帽系统配置文件/etc/ssh/ssh_config(注意区别)中添加参数ServerAliveInterval 60

b.重启ssh服务

# systemctl restart sshd

(2)在红帽系统上发起ssh远程连接时添加参数,如ssh -o ServerAliveInterval 60 <用户>@<IP地址> “脚本或执行命令”。

(3)当作为服务端被远程连接时每60秒向客户端发送KeepAlive请求,保证客户端不会因为超时空闲而断开连接,累计3次如遇客户端网络问题导致失败才会中断SSH会话。

a.在麒麟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)缓释措施:一般可通过禁用服务或kill进程来应急处理,但有些服务存在依赖,当其他服务重启或其他场景下会随着带起该服务,未彻底解决,如gvfs-udisks2-volume-monitor进程依赖gdm服务,此方法不适用。

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

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

现象:mate-indicators进程为图形化界面相关进程,程序运行过程会触发内存泄露,申请的内存未得到释放。如下图,top命令显示mate-indicators进程内存使用率较高(超过80%)。

图片

影响范围:mate-indicators软件包版本低于20150918kord0ukui58-10.p07

3.2.1.2 解决方案

(1)检查软件包版本

# rpm -qa | grep mate-indicators     

mate-indicators-20150918kord0ukui58-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

mate-indicators补丁升级完成,其他内存泄露补丁修复操作大同小异,以实际为准。

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*

涉及3个软件包: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定时机制会每天自动刷新软件包清单,刷新过程会引入异常中断风险,造成rpmdb损坏。

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

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

3.2.3.2 解决方案

(1)将软件包(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系统与红帽系统在日常使用上差异不大,但麒麟V10也存在一些特性,这些特性可能会影响系统运行,建议在运维实施前及早规划,提前做好应对。

3.3.1 9090端口被占用
3.3.1.1 现象

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

# netstat -antp |grep 9090

图片

3.3.1.2 原因

9090端口被Cockpit服务占用,Cockpit是一个按照Web界面进行管理Linux系统的开源工具。它提供了许多管理Linux系统所需的功能,如文件管理、系统日志查看、用户管理、系统服务管理、网络配置、安全审计等功能。

3.3.1.3 解决方案

禁用服务,释放端口。

(1)查看Cockpit服务:# systemctl status cockpit.socket

图片

(2)关闭Cockpit服务:# systemctl stop cockpit.socket

(3)禁用Cockpit服务:# systemctl disable cockpit.socket

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

图片

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

/tmp目录下存放临时文件,当系统重启后,文件丢失。查看/tmp目录文件系统类型,发现为tmpfs类型。

# df -Th|grep /tmp

图片

3.3.2.2 原因

/tmp目录是tmpfs文件系统类型,而tmpfs是一种基于内存的文件系统,也叫临时文件系统。/tmp目录存放文件会占用内存空间,消耗内存资源,即在内存中存储数据,所以系统重启后会导致数据丢失。

注意:tmp.mount是一个systemd单元,它是用来挂载临时文件系统的。tmp.mount服务会在系统引导时自动运行,并将tmpfs文件系统挂载到/tmp目录下,以便在使用临时文件时提供快速的读写访问。

3.3.2.3 优化建议(二选一)

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

# systemctl mask tmp.mount

图片

重启后生效:

图片

(2)不禁用tmp.mount服务,给操作系统加盘,创建一个独立逻辑卷,挂载在/tmp目录下,设置成挂载独立文件系统,并加入/etc/fstab配置中。(使用LVM技术,此处不细说)

图片

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

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

# crontab -e

图片

3.3.3.2 原因

crontab命令允许用户定期执行时间命令,如果该命令被恶意使用,可能会导致严重的安全问题,所以麒麟V10默认设置了安全策略,只允许root用户和添加到/etc/cron.allow文件中的非root用户执行该命令。

3.3.3.3 解决方案(二选一)

(1)临时添加白名单

/etc/cron.allow文件中添加需要执行crontab的用户,如monitor用户,没有此文件则创建。

图片

不再报错:

图片

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

# rm -f /etc/cron.allow

# touch /etc/cron.deny

图片

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

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

图片

3.3.4.2 原因

麒麟V10引入了安全管理工具kysec,uid(600)和uid(700)作为kysec特性,为三权分立用户预留,故root用户su到该uid用户时提示输入密码。

注:三权分立角色包含secadm安全管理员、auditadm审计管理员、root系统管理员。

3.3.4.3 解决方案

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

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

# vi /etc/pam.d/su

图片

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

图片

(2)测试是否生效

# su - test

图片

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

将参数“net.ipv4.tcp_tw_recycle=1”添加到配置文件/etc/sysctl.conf,并执行命令开启:

# sysctl -p

图片

报错如下:

图片

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 激活流程

微信扫码激活:指定微信账号绑定授权二维码获取激活权限——系统导入授权文件——系统执行命令输出二维码——扫码二维码开始激活——完成激活。

KMS批量激活:搭建KMS批量授权服务器——系统导入授权文件——系统执行命令激活——完成激活。

3.4.2 差异及建议

微信扫码激活和KMS批量激活的流程步骤差别不大,但实际使用差别较大,主要体现在许可管理和激活耗时上。

许可管理:微信方式激活许可后,如需回收许可,联系原厂释放原授权许可重新使用;KMS方式激活许可后,可通过KMS一键回收。

激活耗时:微信方式纯手工,激活量大则耗时太久;KMS方式待搭建完成KMS服务器,则大大减轻工作量,但自动化程度有待提高,建议在kms批量激活服务器搭建完成后,再通过脚本或平台实现自动化批量激活。

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

四、总结

构建国产化操作系统的上下游生态是推进信创操作系统的“必经之路”,而完善的软硬件生态链更是企业引进一款成熟的操作系统所需要考虑的重点之一。麒麟V10已经构建了自己的生态链,其与常用软件兼容性适配上已较为靠前,但依然存在不少问题,而生态链的不断成熟完善离不开企业实际运维及业务场景的问题反馈和方案优化。在这场信创浪潮中,我们从业人员要做的是积累技术,做好准备,尽可能做到遇事不慌,心里有底。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Oracle的学习心得和知识总结(三十二)|Oracle数据库数据库回放功能之论文四翻译及学习

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《Oracle Database SQL Language Reference》 2、参考书籍&#xff1a;《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…

【洛谷题解】P1029[普及组]最大公约数和最小公倍数问题

题目链接&#xff1a;[NOIP2001 普及组] 最大公约数和最小公倍数问题 - 洛谷 题目难度&#xff1a;普及- 涉及知识点&#xff1a;stl函数&#xff0c;最大公因数&#xff0c;最小公倍数 题意&#xff1a; 输入输出样例&#xff1a; 分析&#xff1a;直接套用公式优化累加即…

UI自动刷新大法:DataBinding数据绑定

之前我们讲了DataBinding在Activity、Fragment、RecyclerView中的基础使用&#xff0c;而那些常规使用方法里&#xff0c;每当绑定的变量发生数据变化时&#xff0c;都需要ViewDataBinding重新设值才会刷新对应UI。而DataBinding通过内部实现的观察者模式来进行自动刷新UI&…

第六篇【传奇开心果系列】Vant of Vue 开发移动应用示例:深度解析响应式布局支持

传奇开心果系列 系列博文目录Vant开发移动应用示例系列 博文目录前言一、Vant响应式布局介绍二、媒体查询实现响应式布局示例代码三、短点设置实现响应式布局示例代码四、响应式工具类实现响应式布局示例代码五、栅格系统实现响应式布局示例代码六、响应式组件实现响应式布局示…

软件测试风险管理

1 软件测试风险管理 软件测试风险管理是识别、评估和控制测试过程中可能出现的风险&#xff0c;以确保测试活动能够按计划进行并达到预期目标的过程。软件测试风险管理是软件测试过程中的一个关键组成部分&#xff0c;它涉及到识别、评估和控制可能影响软件测试项目成功的不确…

图解密码技术——第六章 混合密码系统

一、混合密码系统 1.介绍 混合密码系统将对称密码和公钥密码的优势结合在一起。使用对称密码对信息进行加密&#xff0c;使用公钥密码对加密信息的对称密码的秘钥进行加密。这样&#xff0c;解决了对称密码的密钥配送问题&#xff0c;由于秘钥较短&#xff0c;所以公钥密码处…

【前端web入门第五天】03 清除默认样式与外边距问题【附综合案例产品卡片与新闻列表】

文章目录: 1.清除默认样式 1.1清除内外边距1.2清除列表圆点(项目符号) 3.外边距问题-合并现象4.外边距问题–塌陷问题5.行内元素垂直内外边距6.圆角与盒子阴影 6.1圆角 6.2 盒子模型-阴影(拓展) 综合案例一 产品卡片 综合案例二 新闻列表 1.清除默认样式 在实际设计开发中,要…

寒假9-蓝桥杯训练

//轨道炮 #include<iostream> using namespace std; #include<algorithm> int logs[100010]; int main() {int n;cin >> n;for (int i 1;i < n;i){cin >> logs[i];}sort(logs 1, logs n 1);int ans 1000000000;for (int i 2;i < n;i){if (…

【Jenkins】Jenkins关闭Jenkins关闭、重启

目录 一、Jenkins关闭、重启 二、Jenkins服务的启动、停止方法。 一、Jenkins关闭、重启 1.关闭Jenkins 只需要在访问jenkins服务器的网址url地址后加上exit&#xff0c;关闭Jenkins服务。 例如&#xff1a;http://localhost:8081/exit 2.重启Jenkies 只有在Jenkins服务启动…

Matplotlib初探:认识数据可视化与Matplotlib

Matplotlib初探&#xff1a;认识数据可视化与Matplotlib Fig.1 利用Matplotlib进行数据可视化( 可视化代码见文末) &#x1f335;文章目录&#x1f335; &#x1f333;引言&#x1f333;&#x1f333;一、数据可视化简介&#x1f333;&#x1f333;二、Matplotlib库简介&#x…

为什么说 2023 年是 AI 视频生成的突破年?2024 年的 AI 视频生成有哪些值得期待的地方?

Diffusion Models视频生成-博客汇总 前言&#xff1a;2023年是 AI 视频生成的突破年&#xff0c;AI视频已经达到GPT-2级别了。去年我们取得了长足的进步&#xff0c;但距离普通消费者每天使用这些产品还有很长的路要走。视频的“ChatGPT时刻”何时到来&#xff1f; 目录 前言 …

小程序-上传图片功能

技术前置&#xff1a; 1.框架采用colorUI 2.原生开发 功能&#xff1a; 上传图片 1.上传已经拍摄的图片 2.实时拍摄上传 3.设置上传图片数量&#xff0c;每次上传数量 4.上传等待 ChooseImage() {if(this.data.imgList.length>4){_this.ErrorEvent("最多上传4…

网络安全检查表

《网络攻击检查表》 1.应用安全漏洞 2.弱口令&#xff0c;默认口令 3.服务器互联网暴露 4.操作系统&#xff0c;中间件安全漏洞 5.研发服务器&#xff0c;邮件服务器等安全检查

Linux中FIFO管道

介绍&#xff1a; FIFO被称为命名管道&#xff0c;pipe只能用于有血缘关系的进程间通信&#xff0c;但通过FIFO&#xff0c;不相关的进程也可以进程间通信。 FIFO是linux基础文件类型的一种&#xff08;文件类型为p&#xff09;&#xff0c;FIFO文件在磁盘上没有数据块&#…

用code去探索理解Llama架构的简单又实用的方法

除了白月光我们也需要朱砂痣 我最近也在反思&#xff0c;可能有时候算法和论文也不是每个读者都爱看&#xff0c;我也会在今后的文章中加点code或者debug模型的内容&#xff0c;也许还有一些好玩的应用demo&#xff0c;会提升这部分在文章类型中的比例 今天带着大家通过代码角度…

HTTP 超文本传送协议

1 超文本传送协议 HTTP HTTP 是面向事务的 (transaction-oriented) 应用层协议。 使用 TCP 连接进行可靠的传送。 定义了浏览器与万维网服务器通信的格式和规则。 是万维网上能够可靠地交换文件&#xff08;包括文本、声音、图像等各种多媒体文件&#xff09;的重要基础。 H…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Divider组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之Divider组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Divider组件 提供分隔器组件&#xff0c;分隔不同内容块/内容元素。 子组件 …

设计模式学习笔记05(小滴课堂)

讲解Adapeter设计模式和应用场景 接口的适配器案例实战 代码&#xff1a; 定义一个接口&#xff1a; 编写适配器&#xff1a; 写我们的商品类&#xff1a; 会员类&#xff1a; 这样我们不同的需求可以根据需要去实现不同的接口方法&#xff0c;而不用实现全部接口方法。 适配…

python+django咖啡网上商城网站

全网站共设计首页、咖啡文化、咖啡商城、个人信息、联系我们5个栏目以及登录、注册界面&#xff0c;让用户能够全面的了解中国咖啡咖啡文化宣传网站以及一些咖啡知识、文化。 栏目一首页&#xff0c;主要放置咖啡的起源及发展进程的图文介绍&#xff1b;栏目二咖啡文化&#xf…

《Linux 简易速速上手小册》第2章: 命令行的艺术(2024 最新版)

文章目录 2.1 基本 Linux 命令2.1.1 重点基础知识2.1.2 重点案例&#xff1a;整理下载文件夹2.1.3 拓展案例 1&#xff1a;批量重命名文件2.1.4 拓展案例 2&#xff1a;查找并删除特定文件 2.2 文件和目录管理2.2.1 重点基础知识2.2.2 重点案例&#xff1a;部署一个简单的网站2…