打造高可用集群的基石:深度解析Keepalived实践与优化
高可用集群
集群类型
集群类型主要分为负载均衡集群(LB)、高可用集群(HA)和高性能计算集群(HPC)三大类。每种集群类型都有其特定的应用场景和优势。
1. 负载均衡集群(LB)
负载均衡集群主要用于提高系统的性能、响应效率和可靠性,通过将访问请求分散到多个服务器上,以减少单个服务器的负载压力,从而提高整体的处理能力和访问速度。在负载均衡集群中,LVS(Linux Virtual Server)和haproxy是两种常用的软件解决方案。
- LVS(Linux Virtual Server):
- LVS是一个开源的负载均衡器,它工作在OSI模型的第四层(传输层),通过IP负载均衡技术实现高效的请求分发。
- LVS支持多种工作模式,包括NAT(网络地址转换)、DR(直接路由)和TUN(IP隧道)等,每种模式都有其特定的应用场景和优缺点。
- LVS通过IPVS(IP Virtual Server)模块实现负载均衡,IPVS是LVS集群系统的核心软件,负责将客户端的请求转发到后端的真实服务器上。
- haproxy:
- haproxy是一个高性能的TCP/HTTP反向代理服务器和负载均衡器,支持大量的并发连接和高可用性。
- haproxy提供了灵活的负载均衡算法,如轮询、最少连接数、源地址哈希等,可以根据实际需求进行配置。
- haproxy还支持SSL卸载、HTTP压缩、会话保持等高级功能,可以进一步提升系统的性能和安全性。
2. 高可用集群(HA)
高可用集群主要用于提高系统的可靠性和可用性,确保在部分服务器出现故障时,整个系统仍然能够持续提供服务。在高可用集群中,keepalived是一款常用的开源软件。
- keepalived:
- keepalived通过虚拟路由冗余协议(VRRP)实现高可用性,它可以在主服务器出现故障时,自动将虚拟IP地址和服务切换到备份服务器上,从而确保服务的连续性。
- keepalived还提供了多种健康检查机制,如ICMP Ping、TCP端口检测和HTTP GET等,用于监测后端服务器的运行状态。
- keepalived的配置相对简单,易于管理和维护,是构建高可用集群的常用选择之一。
3. 高性能计算集群(HPC)
高性能计算集群主要用于处理大规模的计算任务,如科学计算、数据分析、工程仿真等。HPC集群通过将多个高性能计算机连接在一起,利用并行计算和分布式计算技术,提高整体的计算能力和处理速度。
- HPC集群的特点:
- 高性能:HPC集群采用高性能的计算机和存储设备,能够提供卓越的计算能力和存储性能。
- 可扩展性:HPC集群可以根据实际需求进行扩展,增加更多的计算节点和存储设备,以满足更大规模的计算任务。
- 灵活性:HPC集群支持多种操作系统和应用程序,可以灵活配置和部署,以适应不同的计算需求。
实现高可用
提升系统高用性的解决方案:降低MTTR- Mean Time To Repair(平均故障时间)
解决方案:建立冗余机制
主备、主主
active/passive 主/备
active/active 双主
active --> HEARTBEAT --> passive
active <--> HEARTBEAT <--> active
VRRP虚拟路由冗余协议
解决单点故障
VIP
VMAC
工作方式:抢占、非抢占、延时抢占
keepalived部署
简介
vrrp协议的软件实现,设计目的是为了高可用ipvs服务
负载均衡是一种在真实集群之间分配 IP 流量的方法 服务器,提供一个或多个高可用性虚拟服务。在设计负载均衡拓扑时,必须考虑负载均衡器本身以及后面的真实服务器的可用性。
Keepalived 为负载均衡和高可用性提供了框架。 负载均衡框架依赖于众所周知且广泛使用的 Linux 虚拟服务器 (IPVS) 内核模块,提供第 4 层负载均衡。 Keepalived 实现了一组健康检查器,以动态和自适应的方式 根据服务器池的运行状况维护和管理负载均衡的服务器池。 高可用性是通过虚拟冗余路由协议实现的 (VRRP)。VRRP是路由器故障切换的基础砖块。keepalived也 实现了一组到 VRRP 有限状态机的钩子 提供低级和高速协议交互。每个Keepalived 框架可以单独使用,也可以一起使用,以提供弹性基础设施。
简而言之,Keepalived 提供了两个主要功能:
- LVS系统的健康检查
- 实施 VRRPv2 堆栈以处理负载均衡器故障切换
架构
用户空间核心组件:
vrrp stack:VIP消息通告
checkers:监测real server
system call:实现 vrrp 协议状态转换时调用脚本的功能
SMTP:邮件组件
IPVS wrapper:生成IPVS规则
Netlink Reflector:网络接口
WatchDog:监控进程
控制组件:提供keepalived.conf 的解析器,完成Keepalived配置
IO复用器:针对网络目的而优化的自己的线程抽象
内存管理组件:为某些通用的内存管理功能(例如分配,重新分配,发布等)提供访问权限
特点
- 部署简单,只需要配置一个配置文件即可
- 加入了虚拟路由冗余协议,可以保证业务或网络不间断稳定运行
核心功能
- 健康检查
1、采用tcp三次握手,icmp请求,http请求,udp 、
2、echo请求等方式对负载均衡器后面的实际的服务器(通常是承载真实业务的服务器)进行保活
- 故障切换
1、主要应用在配置了主备的服务器上,使用虚拟路由冗余协议维持主备之间的心跳
2、当主服务器出现问题时,由备服务器承载对应的业务,从而在最大限度上减少损失,并提供服务的稳定性
环境部署
四台主机 vip:100
realserver1:110
realserver2:120
KA1:10
KA2:20
关闭selinux、防火墙
[root@realserver1 ~]# getenforceDisabled[root@realserver1 ~]# systemctl status firewalld
realserver1/2中安装httpd
[root@realserver1 ~]# yum install httpd -y[root@realserver1 ~]# echo 192.168.86.110 > /var/www/html/index.html[root@realserver1 ~]# systemctl enable --now httpd[root@realserver2 ~]# echo 192.168.86.120 > /var/www/html/index.html
安装配置服务
KA1/2中
[root@Ka1 ~]# yum install keepalived -y
配置文件都是以块(block)的形式组成,每一个块的内容都包含在{ }中
主配置文件
[root@Ka1 ~]# vim /etc/keepalived/keepalived.conf
修改全局配置
! Configuration File for keepalived
global_defs {
notification_email {
594233887@qq.com #keepalived
timiniglee-zln@163.com
}
notification_email_from keepalived@KA1.timinglee.org
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id KA1.timinglee.org vrrp_skip_check_adv_addr vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
vrrp_mcast_group4 224.0.0.18
}
vrrp_gna_interval 0 后面有0
vrrp_route_id--必须唯一
vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 100priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.86.100/24 dev eth0 label eth0:1}
}
修改后重启
[root@Ka1 ~]# systemctl enable --now keepalived.service
把配置复制到另一台
[root@Ka1 ~]# scp /etc/keepalived/keepalived.conf root@192.168.86.20:/etc/keepalived/keepalived.conf
修改优先级、state
vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 100
测试效果--抓包命令
[root@Ka1 ~]# tcpdump -i eth0 -nn host 224.0.0.18
解决VIP不能通信
global_defs {notification_email {1540509690@qq.com}notification_email_from keepalived@timinglee.orgsmtp_server 127.0.0.1smtp_connect_timeout 30router_id ka1.timinglee.orgvrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0vrrp_mcast_group4 224.0.0.18vrrp_iptables
}
日志
生成日志
[root@ka1 ~]# vim /etc/sysconfig/keepalived
指定0-7
KEEPALIVED_OPTIONS="-D -S 6"
[root@ka1 ~]# systemctl restart keepalived.service[root@ka1 ~]# vim /etc/rsyslog.conf# Save boot messages also to boot.log
local7.* /var/log/boot.log
local6.* /var/log/keepalived.log
查看是否生成
[root@ka1 ~]# systemctl restart rsyslog.service[root@ka1 ~]# systemctl restart keepalived.service测试[root@ka1 ~]# ll /var/log/keepalived.log
-rw------- 1 root root 8168 Aug 11 21:11 /var/log/keepalived.log
独立配置子文件
创建子配置目录
[root@Ka1 ~]# mkdir -p /etc/keepalived/conf.d[root@Ka1 ~]# vim /etc/keepalived/conf.d/192.168.86.100.conf
修改主配置文件
[root@Ka1 ~]# vim /etc/keepalived/keepalived.conf
#vrrp_instance VI_1 {
# state MASTER
# interface eth0
# virtual_router_id 100
# priority 100
# advert_int 1
# authentication {
# auth_type PASS
# auth_pass 1111
# }
# virtual_ipaddress {
# 192.168.86.100/24 dev eth0 label eth0:1
# }
#}
include "/etc/keepalived/conf.d/*.conf"
注释掉上面的加入指向子配置文件路径
include "/etc/keepalived/conf.d/*.conf"
在子配置文件写配置
[root@Ka1 ~]# cat /etc/keepalived/conf.d/192.168.86.100.confvrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 100priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.86.100/24 dev eth0 label eth0:1}}[root@Ka1 ~]#
然后重启服务
[root@Ka1 ~]# systemctl restart keepalived.service[root@Ka1 ~]# systemctl restart rsyslog.service
Keepalived企业应用示例
抢占模式和非抢占模式
默认为抢占模式,推荐使用非抢占模式
[root@Ka1 ~]# vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 100priority 100advert_int 1nopreempt #设置非抢占模式authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.86.100/24 dev eth0 label eth0:1}
}#include "/etc/keepalived/conf.d/*.conf"
重启keepalived
延时抢占
[root@Ka1 ~]# vim /etc/keepalived/keepalived.confpreempt_delay 5s #设置延迟5s抢占
VIP单播配置
[root@Ka1 ~]# vim /etc/keepalived/keepalived.conf
禁用vrrp_strict
10:
unicast_src_ip 192.168.86.10unicast_peer {192.168.86.20}
20:
unicast_src_ip 192.168.86.20unicast_peer {192.168.86.10}
效果:
[root@Ka1 ~]# tcpdump -i eth0 -nn src host 192.168.86.10 and dst 192.168.86.20tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes14:46:13.904625 IP 192.168.86.10 > 192.168.86.20: VRRPv2, Advertisement, vrid 100, prio 100, authtype simple, intvl 1s, length 20
邮件通知
[root@ka1 ~]# yum install mailx -y[root@ka1 ~]# vim /etc/mail.rc[root@ka1 ~]# echo hello world | mail -s test 2584896723@qq.com
set from=2584896723@qq.comset smtp=smtp.qq.comset smtp-auth-user=2584896723@qq.comset smtp-auth-password=rbdnzxqskffidjjjset smtp-auth=loginset ssl-verify=ignore
QQ邮箱-->账号与安全-->安全设置
[root@ka1 ~]# vim /etc/keepalived/mail.sh#! /bin/bashmail_dst="2584896723@qq.com"send_message(){mail_sub="$HOSTNAME to be $1 vip move"mail_msg="`date +%F\ %T`:vrrp move $HOSTNAME chage $1"echo $mail_msg | mail -s "$mail_sub" $mail_dst}case $1 inmaster)send_message master;;backup)send_message backup;;fault)send_message fault;;*);;esac
[root@ka1 ~]# chmod +x /etc/keepalived/mail.sh[root@ka1 ~]# vim /etc/keepalived/keepalived.conf#按如下添加的配置notify_master "/etc/keepalived/mail.sh master"notify_backup "/etc/keepalived/mail.sh backup"notify_fault "/etc/keepalived/mail.sh fault"
实现master/master的keepalived双主架构
ka1第二个
ka2第二个
实现IPVS的高可用性(LVS+keepalived)
[root@realserver2 ~]# vim /etc/sysctl.d/arp.confnet.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2[root@realserver2 ~]# sysctl -p
[root@realserver2 ~]# sysctl --system
[root@ka1 ~]# vim /etc/keepalived/keepalived.confvirtual_server 192.168.86.100 80 {delay_loop 6lb_algo wrrlb_kind DR.#persistence_timeout 50protocol TCPreal_server 192.168.86.110 80 {weight 1HTTP_GET {url {path /status_code 200}connect_timeout 3nb_get_retry 3delay_before_retry 3}}}
real_server 192.168.86.110 80 {weight 1SSL_GET {url {path /status_code 200}connect_timeout 3nb_get_retry 2delay_before_retry 2}}
###############################################################real_server 192.168.86.120 80 {weight 1SSL_GET {url {path /status_code 200}connect_timeout 3nb_get_retry 2delay_before_retry 2}}
}
[root@ka2 ~]# vim /etc/keepalived/keepalived.confvirtual_server 192.168.86.100 80{delay_loop 6lb_algo wrrlb_kind DR#persistence_timeout 50protocol TCPreal_server 192.168.86.110 80 {weight 1SSL_GET {url {path /status_code 200}connect_timeout 3nb_get_retry 2delay_before_retry 2}}
##################################################################real_server 192.168.86.120 80 {weight 1SSL_GET {url {path /status_code 200}connect_timeout 3nb_get_retry 2delay_before_retry 2}}}
[root@ka2 ~]# curl 172.25.254.110
172.25.254.110[root@ka2 ~]# systemctl restart keepalived.service
实现其他应用的高可用性 VRRP Script(keepalived+haproxy)
利用脚本实现主从角色切换
[root@ka1 ~]# vim /etc/keepalived/test.sh
#! /bin/bash
[ ! -f /mnt/lee ][root@ka1 ~]# sh /etc/keepalived/test.sh[root@ka1 ~]# echo $?
0[root@ka1 ~]# touch /mnt/lee[root@ka1 ~]# chmod +x /etc/keepalived/test.sh[root@ka1 ~]# sh /etc/keepalived/test.sh
[root@ka1 ~]# vim /etc/keepalived/keepalived.confvrrp_script check_file {script "/etc/keepalived/test.sh"interval 1weight -30fall 2rise 2timeout 2
}...track_script {check_file}...
[root@ka1 ~]# systemctl restart keepalived.service[root@ka1 ~]# ls /mnt/lee/mnt/lee
keepalived+haproxy实现高可用
[root@ka1 ~]# yum install haproxy -y
两台主机都做
[root@ka1 ~]# vim /etc/sysctl.conf# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.#For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.ip_nonlocal_bind=1[root@ka1 ~]# sysctl -pnet.ipv4.ip_nonlocal_bind = 1[root@ka1 ~]# systemctl enable --now haproxy.service
listen webclusterbind 192.168.86.100:80mode httpbalance roundrobinserver web1 192.168.86.110:80 check inter 3 fall 2 rise 5server web2 192.168.86.120:80 check inter 3 fall 2 rise 5
[root@ka1 ~]# vim /etc/sysctl.d/arp.confnet.ipv4.conf.all.arp_ignore=0net.ipv4.conf.all.arp_announce=0net.ipv4.conf.lo.arp_ignore=0net.ipv4.conf.lo.arp_announce=0
检测HAproxy状态
[root@ka2 ~]# killall -0 haproxy
[root@ka2 ~]# echo $?
0
[root@ka2 ~]#
检测脚本
[root@ka1 ~]# vim /etc/keepalived/test.sh[root@ka1 ~]# cat /etc/keepalived/test.sh
#!/bin/bash
killall -0 haproxy[root@ka1 ~]#
相关文章:

打造高可用集群的基石:深度解析Keepalived实践与优化
高可用集群 集群类型 集群类型主要分为负载均衡集群(LB)、高可用集群(HA)和高性能计算集群(HPC)三大类。每种集群类型都有其特定的应用场景和优势。 1. 负载均衡集群(LB) 负载均衡集…...

Web大学生网页作业成品——环保主题介绍网页网站设计与实现(HTML+CSS)(5个页面)
🎉🎉🎉 常见网页设计作业题材有**汽车、环保、明星、文化、国家、抗疫、景点、人物、体育、植物、公益、图书、节日、游戏、商城、旅游、家乡、学校、电影、动漫、非遗、动物、个人、企业、美食、婚纱、其他**等网页设计题目, 可满足大学生网…...

Qt登录窗口设计
widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QIcon> //图标类 #include <QPushButton> #include <QLineEdit> //行编辑 #include <QLabel> #include <QTextEdit> #include <QMovie>class Widge…...

探索数据矿藏:我的AI大模型与数据挖掘实战经验分享
🚀 探索数据矿藏:我的AI大模型与数据挖掘实战经验分享 💖 前言:数据的金矿,AI的翅膀 在人工智能的浪潮中,我有幸作为项目负责人,带领团队深入挖掘数据的潜力,利用AI大模型的力量&am…...
linux C语言strcat函数及相关函数
讯飞星火 strcat函数是C语言中的一个字符串处理函数,用于将一个字符串追加到另一个字符串的末尾。它的原型如下: char *strcat(char *dest, const char *src);参数说明: dest:目标字符串,即要将src字符串追加到这个字符串的末尾。src:源字符串,即要追加到dest字符串末…...
使用 sort 进行文本文件处理
sort 使用经验笔记 一、简介 sort 是一个命令行工具,用于对文本文件中的行进行排序。它广泛应用于 Unix/Linux 系统中,可以用来对文件的内容进行简单的排序操作,也可以与其他命令结合使用来完成更复杂的任务。 二、基本用法 排序文件: sor…...

HarmonyOS笔记4:从云数据库获取数据
移动应用获取数据的方式主要有: 1.从网络中获取数据接口API。 2.从华为云数据库获取云数据库的资源。 3.从移动终端直接获取本地的数据 在HarmonyOS笔记3中已经完成了方式一从网络中获取数据接口API的方式。在本篇笔记中,将讨论从云数据库中获取数据。 因…...

QT5生成独立运行的exe文件
目录 1 生成独立运行的exe文件1.1 设置工程Release版本可执行文件存储路径1.2 将工程编译成Release版本 2 使用QT5自带的windeployqt拷贝软件运行依赖项3 将程序打包成一个独立的可执行软件exe4 解决QT5 This application failed to start because no Qt platform plugin could…...

LabVIEW光纤水听器闭环系统
开发了一种利用LabVIEW软件开发的干涉型光纤水听器闭环工作点控制系统。该系统通过调节光源频率和非平衡干涉仪的光程差,实现了工作点的精确控制,从而提高系统的稳定性和检测精度,避免了使用压电陶瓷,使操作更加简便。 项目背景 …...
Shell——流程控制语句(if、case、for、while等)
在 Shell 编程中,流程控制语句用于控制脚本的执行顺序和逻辑。这些语句包括 if、case、for、while 等,它们的使用可以使脚本实现更复杂的逻辑。以下是它们的详细说明和语法结构: 1. if 语句 if 语句用于条件判断,执行符合条件的…...

【redis的大key问题】
在使用 Redis 的过程中,如果未能及时发现并处理 Big keys(下文称为“大Key”),可能会导致服务性能下降、用户体验变差,甚至引发大面积故障。 本文将介绍大Key产生的原因、其可能引发的问题及如何快速找出大Key并将其优…...

HighPoint SSD7749M2:128TB NVMe 存储卡实现28 GB/s高速传输
HighPoint Technologies推出了一款全新的SSD7749M2 RAID卡,能够在标准的桌面工作站中安装多达16个M.2 SSD,实现高达128TB的闪存存储。该卡通过PCIe Gen4 x16接口提供高达28 GB/s的顺序读写性能。这些令人瞩目的性能规格伴随着高昂的价格标签。 #### 技术…...

ARM 裸机与 Linux 驱动对比及 Linux 内核入门
目录 ARM裸机代码和驱动的区别 Linux系统组成 内核五大功能 设备驱动分类 内核类型 驱动模块 驱动模块示例 Makefile配置 命令 编码辅助工具 内核中的打印函数 printk 函数 修改打印级别 编辑 打印级别含义 驱动多文件编译 示例 模块传递参数 命令行传递参数…...
0101DNS TCP fallback on UDP query timeout disabled-redission-中间件
文章目录 1.问题描述2.临时解决方案 结语 1.问题描述 Springcloud 项目,微服务模块使用redission,启动报错 DNS TCP fallback on UDP query timeout disabled. Upgrade Netty to 4.1.105 or higher.相关软件版本如下 软件版本描述springboot2.7.18spr…...
位运算
x1010 原码:000...1010 (一共32位) 反码:111...0101 (~x) 补码:111...0110 (反码1)(-x) 1、n 的二进制表示中第 k 位是几 #include<iost…...

MemFire Cloud是否真的可以取代后端
近年来,随着前端技术的迅速发展,前端工程师们越来越多地开始思考一个问题:“我还能不能不依赖后端?” 这种想法并非空穴来风,尤其是随着像MemFire Cloud这样的工具出现,它不仅能让开发者在没有后端的情况下…...

数据结构(邓俊辉)学习笔记】优先级队列 06——完全二叉堆:批量建堆
文章目录 1. 自上而下的上滤:算法2. 自上而下的上滤:效率3. 自下而上的下滤:算法4. 自下而上的下滤:实例5. 自下而上的下滤:效率 1. 自上而下的上滤:算法 在介绍过完全二叉堆标准的静态和动态操作接口之后…...

Java | Leetcode Java题解之第344题反转字符串
题目: 题解: class Solution {public void reverseString(char[] s) {int n s.length;for (int left 0, right n - 1; left < right; left, --right) {char tmp s[left];s[left] s[right];s[right] tmp;}} }...

定制开发AI智能名片O2O商城小程序:基于限量策略与个性化追求的营销创新
摘要:随着科技的飞速发展和消费者需求的日益多元化,传统商业模式正经历着前所未有的变革。在数字化转型的大潮中,定制开发AI智能名片O2O商城小程序作为一种新兴的商业模式,凭借其独特的个性化定制能力、高效的线上线下融合(O2O&am…...

Spring MVC Controller返回json日期格式配置失效的解决办法
如题,Spring MVC 4.3.0版本,配置jackson读写json。Controller层方法返回值对象包含java.util.Date类型的属性,并且在applicationContext.xml中配置了jackson的日期格式: <mvc:annotation-driven><mvc:message-converters…...

7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...