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

高可用集群(HAC)

1、高可用集群+keepalive说明

高可用定义:

  • 目的:尽可能的提高服务的可用性
    • 99%、99.9%、99.99%、99.999%
  • 实现原理:心跳检测
  • 服务:
    • 有状态:
      • MySQL
    • 无状态:
      • apache
      • LVS

Keepalive原理

  • 案例环境专为 LVS和HA计一健康查工具
  • 支持故障自动切换(Failover)
  • 支持节点健康状态检查(Health Checking)
  • 官方网站:http://www.keepalived.org/

Keepalive的热备方式

  • VRRP(Virtual Router Redundancy Protocol:虚拟路由冗余协议)
    • 一主+多备:共用同一个IP地址,但是优先级不同

同一个网段才会进行IP的争夺;

  • 一个组里面各台主机会进行IP地址的漂移

2、LVS-DR+keepalive实验

首先搭建一个LVS-DR模式的均衡负载集群

规划:

  • LVS-负载调度器:
    • 192.168.75.10–LVS-master
      • LVS负载调度器都配置LVS-DR模式
        • 关闭广播功能;重定向功能
      • 关闭网卡守护进程NetworManager
      • 添加一个子网卡:eth0:0
        • 192.168.75.100(地址漂移使用的)
        • 然后拉起来ifup,ifdown eth0:0
      • 添加一个集群
        • 然后直接添加子节点
      • 安装keepalive
        • 安装gcc环境
        • 准备keepalive源码包–>源码编译安装
        • 安装完成后修改配置文件:并不是所有的都要使用,
    • 192.168.75.11–LVS-slave
      • 关闭网卡守护进程NetworManager
      • 配置好集群IP–eth0:0–>这里也是配置100;
        • 问题是:同一个局域网里面两个100的ip是不行的
        • 因此注释掉本机的一个文件/etc/sysconfig/networ-scripts/ifup-eth–>大概是注释257行
  • 后端服务器:
    • 192.168.75.12/13
    • 安装httpd服务–>开启并且永久开启
      • 编写一个网站
      • 然后自己测试一下;
    • 添加一个100的接口–>lo:0
      • 子网掩码是4个255
    • 然后修改一下内核参数
      • sysctl -p
    • 添加路由记录
  • 客户端:
    • 网页访问
      • 尝试关闭LVS-master
      • 然后关闭httpd第一台

LVS-master负载调度器配置如下

  • 先搭建一个LVS-DR
#关闭网卡守护进程-->关闭NetworkManager
[root@node0 ~]# service NetworkManager stop
[root@node0 ~]# chkconfig NetworkManager off#创建一个eth0:0用来充当集群入口接口
[root@node0 ~]# cd /etc/sysconfig/network-scripts/
[root@node0 network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0#修改配置文件-->添加一个ip-->100
[root@node0 network-scripts]# vim ifcfg-eth0:0
DEVICE=eth0:0				#这里需要修改网卡名
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.75.100		#然后修改IP-->一个虚拟的IP
NETMASK=255.255.255.0#然后关闭网卡的重定向功能
[root@node0 ~]# vim /etc/sysctl.conf #在末行添加如下内容
#关闭网卡重定向功能
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0#然后刷新配置
[root@node0 ~]# sysctl -p#到这里可以拉起eth0:0的网卡
[root@node0 ~]# ifup eth0:0#在验证一眼是否拉起来了
[root@node0 ~]# ifconfig  eth0:0#加载一下ip_vs模块
[root@node0 ~]# modprobe  ip_vs#安装一下lvsadm
[root@node0 ~]# yum -y install ipvsadm#添加一下集群-->12/13是后端服务器
-->-A是添加一个集群
-->-t是指定一个虚拟ip以及端口
-->-s:指定轮询模式为rr
[root@node0 ~]# ipvsadm -A -t 192.168.75.100:80 -s rr#添加集群子节点-->添加的机器是12/13
-->-a:添加子节点
-->-r:指定子节点的真实ip以及端口
-->-g:指定了是DR模式
[root@node0 ~]# ipvsadm -a -t 192.168.75.100:80 -r 192.168.75.12:80 -g
[root@node0 ~]# ipvsadm -a -t 192.168.75.100:80 -r 192.168.75.13:80 -g#最后查看一下集群信息
[root@node0 ~]# ipvsadm -Ln 
[root@node0 ~]# ipvsadm -Ln --stats#把这个集群写入配置文件
[root@node0 ~]# service ipvsadm save

配置两台后端服务器

  • 安装httpd
    • 以及编写各自的发布页面
  • 修改内核参数
    • 关闭ARP功能
  • 给与一个虚拟IP;
    • 并且指定一下路由
#两台后端的服务器都是一样的配置,唯一不一样的就是发布的页面不同#关闭一下NetworkManager
[root@node2 ~]# service NetworkManager stop	
[root@node2 ~]# chkconfig NetworkManager off#准备一个回环口-->lo:0
[root@node2 ~]# cd /etc/sysconfig/network-scripts/
[root@node2 network-scripts]# cp -a ifcfg-lo ifcfg-lo:0#然后配置一个虚拟ip
[root@node2 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.75.100
NETMASK=255.255.255.255
........
#调整内核参数-->关闭ARP功能
[root@node2 ~]# vim /etc/sysctl.conf 
.........
#关闭ARP功能
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2_
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 3
#重新拉取一下配置
[root@node2 ~]# sysctl -p#到这里为止-->可以拉起来lo:0的网卡了
[root@node2 ~]# ifup lo:0#添加一个路由-->#如果有人来访问这个ip就把它丢给lo:0网卡
[root@node2 ~]# route  add  -host 192.168.75.100 dev lo:0#然后配置开机自启
[root@node2 ~]# echo "route  add  -host 192.168.75.100 dev lo:0" >> /etc/rc.local #安装apache
[root@node2 ~]# yum -y install httpd#修改发布页面
[root@node2 ~]# vim /var/www/html/index.html
aaaaaaaaaaaaaaaaaaaaaaaa#启动服务-->并且设置开机自启
[root@node2 ~]# service httpd start
[root@node2 ~]# chkconfig httpd on#自己测试一下
[root@node2 ~]# curl  localhost
aaaaaaaaaaaaaaaaaaaaaaaa

然后简单地从浏览器上面验证一下LVS-DR

http://192.168.75.100/

  • 看到了aaaa和bbb轮询就代表LVS-DR搭建完成

接下来回到LVS-master服务器上面操作

  • 就是node0–>ip:10的服务器上面操作
  • 安装keepalive
    • 并且配置
#首先安装一下必要的依赖
[root@node0 ~]# yum -y install kernel-devel openssl-devel gcc*#准备好keepalive的源码包
[root@node0 ~]# ls keepalived-1.2.13.tar.gz 
keepalived-1.2.13.tar.gz#解压源码包
[root@node0 ~]# tar -xf keepalived-1.2.13.tar.gz 
[root@node0 ~]# ls#预编译、编译、安装
[root@node0 ~]# cd keepalived-1.2.13
[root@node0 keepalived-1.2.13]# ./configure --prefix=/usr/local/keepalive/ --with-kernel-dir=/usr/src/kernels/2.6.32-358.el6.x86_64/ && make && make install#修改配置文件-->调整好参数#操作前切勿忘记备份
[root@node0 ~]# cp -a /usr/local/keepalive/etc/keepalived/keepalived.conf{,.bak}
[root@node0 ~]# vim /usr/local/keepalive/etc/keepalived/keepalived.conf#配置文件里面有些是不需要的,需要删除;有些是需要添加的,以下是配置文件的解析;#全局配置只留下一个主机名
global_defs {router_id server1			#命名主机名
}#定义一个示例-->这里可以选择默认
vrrp_instance VI_1 {state MASTER			#设置服务类型主/从(MASTER/SLAVE)interface eth0			#指定那块网卡用来监听virtual_router_id 51	#设组号, 如果是一组就是相同的ID 号,一个主里面只能有一个主服务器和多个从服务器priority 100			#服务器优先级, 主服务器优先级高advert_int 1			#心跳时间, 检测对方存活authentication {		#存活验证密码auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.75.100		#定义一个集群的地址}
virtual_server 192.168.75.100 80 {	#设置集群地址 以及端口号delay_loop 6					#健康检查间隔lb_algo rr						#使用轮询调度算法lb_kind DR						#DR模式的群集protocol TCP					#使用的协议real_server 192.168.75.12 80 {	#管理的网站节点以及使用端口weight 1					#权重,优先级 在原文件基础上删除修改TCP_CHECK {					#状态检查方式connet_port 80		#检查的目标端口connet_timeout 3	#连接超时《秒)nb_get_retry 3		#重试次数delay_before_retry 4	#重试间隔《秒)}}real_server 192.168.75.13 80 {	#管理的第二个网站节点以及使用端口weight 1					#权重, 优先级 在原文件基础上删除修改TCP_CHECK {					#状态检查方式connet_port 80		#检查的目标端口connet_timeout 3	#连接超时《秒)nb_get_retry 3		#重试次数delay_before_retry 4	#重试间隔《秒)}}
}
#然后把多余的配置文件内容都删除-->然后保存退出#然后启动keepalive
[root@node0 ~]# /usr/local/keepalive/sbin/keepalived 
[root@node0 ~]# ps -ef | grep keep
.........#看到了keepalive就证明启动成功了;

接下来就配置LVS-slave服务器

  • IP:192.168.75.11

  • 安装keepalive服务–>并且配置好

  • 一样要配置ipvsadm

#关闭NetworkManager
[root@node1 ~]# service NetworkManager stop
[root@node1 ~]# chkconfig  NetworkManager off#安装一下keepalive的依赖
[root@node1 ~]# yum -y install kernel-devel openssl-devel popt-devel gcc*
.........#准备好源码包
[root@node1 ~]# ls keepalived-1.2.13.tar.gz 
keepalived-1.2.13.tar.gz#预编译、编译、安装keepalive
[root@node1 ~]# tar -xf keepalived-1.2.13.tar.gz 
[root@node1 ~]# cd keepalived-1.2.13
[root@node1 keepalived-1.2.13]# ./configure --prefix=/usr/local/keepalive/ --with-kernel-dir=/usr/src/kernels/2.6.32-358.el6.x86_64/ && make && make install#准备好配置文件-->之前master做的配置可以给到slave使用#做好备份-->养成良好习惯
[root@node1 ~]# cp -a /usr/local/keepalive/etc/keepalived/keepalived.conf{,.bak}#这一条命令在LVS-master上面执行-->简单理解就是传个已经修改过的文件给到slave
[root@node0 ~]# scp /usr/local/keepalive/etc/keepalived/keepalived.conf root@192.168.75.11:/usr/local/keepalive/etc/keepalived/#修改配置文件
[root@node1 ~]# vim /usr/local/keepalive/etc/keepalived/keepalived.conf#因为之前在master上面已经修改过-->因此只需要修改几个地方就ok
..........8     state SLAVE			#改为从服务器11     priority 50			#优先级改为50-->就可以保存退出了#配置虚拟网卡
[root@node1 network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0[root@node1 network-scripts]# vim ifcfg-eth0:0
DEVICE=eth0:0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.75.100
NETMASK=255.255.255.0#这里注意不要急着启动网卡-->因为相同网段会产生IP冲突#因此要注释掉配置文件的内容-->大概在243行左右-->把这个注释掉就不会报错
[root@node1 network-scripts]# vim ifup-eth 
.......
243          #   if ! /sbin/arping -q -c 2 -w 3 -D -I ${REALDEVICE} ${ipaddr[$idx]} ; then
244           #      net_log $"Error, some other host already uses address ${ipaddr[$idx]}."
245           #      exit 1
246           #  fi#然后修改一下内核参数# 修改内核参数。 防止相同网络地址广播冲突,如果有多快网卡需要设置多行
[root@node1 ~]# vim /etc/sysctl.conf #在末行添加一下几行
#关闭网卡重定向功能
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0#刷新内核参数
root@node1 ~]# sysctl -p#到这里就可以启动网卡eth0:0网卡了
[root@node1 ~]# ifup eth0:0
[root@node1 ~]# ifconfig eth0:0#然后配置ipvsadm
[root@node1 ~]# yum -y install ipvsadm#查看一下是否加载IP_VS
[root@node1 ~]# modprobe ip_vs#查看一下版本
[root@node1 ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn#添加集群以及集群节点
[root@node1 ~]# ipvsadm -A -t 192.168.75.100:80 -s rr
[root@node1 ~]# ipvsadm -a -t 192.168.75.100:80 -r 192.168.75.12 -g
[root@node1 ~]# ipvsadm -a -t 192.168.75.100:80 -r 192.168.75.13 -g#启动ipvs并且顺势启动keepalive
[root@node1 ~]# service ipvsadm start
[root@node1 ~]# /usr/local/keepalive/sbin/keepalived 

浏览器继续验证

  • 现在是LVS的主从都已经启动了;
  • 浏览器访问:http://192.168.75.100/—>正常

然后现在关闭LVS-master–>直接让他断网

  • 验证一下LVS-slave是否能够接盘
  • 浏览器访问:http://192.168.75.100/—>正常
#去到LVS-slave查看流量
[root@node1 ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes-> RemoteAddress:Port
TCP  192.168.75.100:80                  37      185        0    25524        0-> 192.168.75.12:80                   18       90        0    12391        0-> 192.168.75.13:80                   19       95        0    13133        0

然后再关闭一台后端服务器

  • 浏览器访问:http://192.168.75.100/—>发现少了aaaa的那台主机

相关文章:

高可用集群(HAC)

1、高可用集群keepalive说明 高可用定义: 目的:尽可能的提高服务的可用性 99%、99.9%、99.99%、99.999% 实现原理:心跳检测服务: 有状态: MySQL 无状态: apacheLVS Keepalive原理 案例环境专为 LVS和…...

python基于django微信小程序的适老化老人健康预警小程序

随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代, 适老化老人健康预警微信小程序就是信息时代变革中的产物之一。 任何系统都要遵…...

基于微信小程序图书馆管理系统

开发工具:IDEA、微信小程序服务器:Tomcat9.0, jdk1.8项目构建:maven数据库:mysql5.7前端技术:vue、uniapp服务端技术:springbootmybatis-plus本系统分微信小程序和管理后台两部分,项…...

将镭神C32激光雷达的PointXYZ数据转化为PointXYZIR格式 - 附代码

之前遇到过“镭神32线激光雷达ROS下运行fromRosMsg()报错 Failed to find match for field “intensity“ 问题”, 当时确定了是镭神C32雷达缺少相应字段,并记录博客【学习记录】镭神32线激光雷达ROS下运行fromRosMsg()报错 Failed to find match for fi…...

高级前端一面面试题集锦

详细说明 Event loop 众所周知 JS 是门非阻塞单线程语言,因为在最初 JS 就是为了和浏览器交互而诞生的。如果 JS 是门多线程的语言话,我们在多个线程中处理 DOM 就可能会发生问题(一个线程中新加节点,另一个线程中删除节点&#…...

Java基础 -- List集合

Java基础 -- List集合1. Introduction1.1 好处1.2 常用泛型2. 交集,差集等2.1 自身的方法2.2 1.8jdk stream 新特性2.3 Apache的CollectionUtils工具类(推荐)3. 限定泛型范围4. Awakening1. Introduction 1.1 好处 代码复用,多种…...

【Linux】网络编程 - Socket套接字/基于UDP的网络通信

目录 一.套接字 1.什么是套接字/Socket套接字 2.套接字的分类 3.Socket套接字的常见API 二.网络字节序 1.什么是网络字节序 2.网络字节序和主机字节序的转换接口 三.IP地址形式上的转换 四.客户端的套接字不由程序员bind 1.为什么客户端套接字不能由程序员bind 2.OS…...

流程引擎之Camunda简介

背景Camunda 是支持 BPMN(工作流和流程自动化)、CMMN(案例管理) 和 DMN(业务决策管理) java 框架。Camunda 基于Activiti5 保留了 PVM,其开发团队也是从 activiti 中分裂出来的。Camunda 来自拉…...

Mybatis笔记整理

1. 相关文档地址 中文文档 https://mybatis.org/mybatis-3/zh/index.htmlMybatis可以配置成适应多种环境&#xff0c;不过每个SqlSessionFactory实例只能选择一种环境。Mybatis默认事务管理器是JDBC&#xff0c;连接池&#xff1a;POOLEDMaven仓库:下载地址<dependency>…...

【react全家桶】面向组件编程

文章目录02 【面向组件编程】1.组件的使用1.1 函数式组件1.2 类式组件1.3 组合组件1.4 提取组件组件实例的三大属性 state props refs2.state2.1 基本使用2.2 setState()2.3 简化版本2.4 State 的更新可能是异步的2.5 异步更新解决方案2.6 数据是向下流动的3.props3.1 基本使用…...

Django框架之模型视图-使用 PostMan 对请求进行测试

使用 PostMan 对请求进行测试 PostMan 是一款功能强大的网页调试与发送网页 HTTP 请求的 Chrome 插件&#xff0c;可以直接去对我们写出来的路由和视图函数进行调试&#xff0c;作为后端程序员是必须要知道的一个工具。 安装方式1&#xff1a;去 Chrome 商店直接搜索 PostMan…...

(考研湖科大教书匠计算机网络)第五章传输层-第四节:TCP流量控制

获取pdf&#xff1a;密码7281专栏目录首页&#xff1a;【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一&#xff1a;流量控制概述二&#xff1a;流量控制举例三&#xff1a;拓展阅读&#xff08;可不看&#xff09;&#xff08;1&#xff09;TCP流量控制完整例子&a…...

使用Docker-Compose搭建Redis集群

1. 集群配置3主3从由于仅用于测试&#xff0c;故我这里只用1台服务器进行模拟redis列表2.编写redis.conf在server上创建一个目录用于存放redis集群部署文件。这里我放的路径为/root/redis-cluster 在/opt/docker/redis-cluster目录下创建redis-1,redis-2,redis-3,redis-4,redis…...

华为OD机试 -计算网络信号(Js)

计算网络信号 题目 网络信号经过传递会逐层衰减,且遇到阻隔物无法直接穿透,在此情况下需要计算某个位置的网络信号值。 注意:网络信号可以绕过阻隔物 array[m][n] 的二维数组代表网格地图,array[i][j] = 0代表 i 行 j 列是空旷位置;array[i][j] = x(x 为正整数)代表 i 行 …...

【数据结构】————栈

文章目录前言栈是什么&#xff0c;栈的特点实现栈的基本操作栈的相关操作声明1.创建栈2.对栈进行初始化3.销毁栈4.判断栈是否为空5.压栈操作6.删除栈顶元素7.取出栈顶元素8.计算栈内存放多少个数据总结前言 本文主要讲述特殊的线性表——栈&#xff1a; 栈是什么&#xff0c;栈…...

从零编写linux0.11 - 第十一章 可执行文件

从零编写linux0.11 - 第十一章 可执行文件 编程环境&#xff1a;Ubuntu 20.04、gcc-9.4.0 代码仓库&#xff1a;https://gitee.com/AprilSloan/linux0.11-project linux0.11源码下载&#xff08;不能直接编译&#xff0c;需进行修改&#xff09; 本章目标 本章会加载并运行…...

Win10上通过nginx代理配置远程非445端口SMB

引言 家里架了一个SMB文件服务器&#xff0c;想要远程访问&#xff0c;开了445端口&#xff0c;但仅限某些特殊网络可以远程访问&#xff0c;其他网络全部拒绝445端口&#xff0c;因此网上找了很多将Win10的SMB指向别的端口的教程&#xff0c;但所有教程均使用环回网卡解决&am…...

Allegro如何快速清除多余的规则设置操作指导

Allegro如何快速清除多余的规则设置操作指导 在用Allegro做PCB设计的时候,会给PCB设置一些规则,在PCB设计完成之后,可能会有一些没有使用到的规则,如下图 Physical规则中的45OHM的规则是多余的 单独某个规则可以直接在规则管理器中删除,如果比较多可以用下面方法批量删除…...

ROS2 入门应用 引用自定义消息(Python)

ROS2 入门应用 引用自定义消息&#xff08;Python&#xff09;1. 查看自定义消息2. 修改话题发布3. 修改话题订阅4. 修改依赖关系5. 编译和运行1. 查看自定义消息 引用在《ROS2 入门应用 创建自定义接口》中自定义的消息Sphere.msg ros2 interface show tutorial_interfaces/…...

SmS-Activate一款好用的短信验证码接收工具

前言 有些国外应用在使用应用上的功能时需要注册账号&#xff0c;由于某种不可抗因素&#xff0c;我们的手机号一般不支持注册&#xff0c;接收不到信息验证码&#xff0c;于是我们可以使用SmS-Activate提供的服务&#xff0c;使用$实现我们的需求&#xff08;大概一次验证1-5…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

Axure 下拉框联动

实现选省、选完省之后选对应省份下的市区...

node.js的初步学习

那什么是node.js呢&#xff1f; 和JavaScript又是什么关系呢&#xff1f; node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说&#xff0c; 需要在node.js的环境上进行当JavaScript作为前端开发语言来说&#xff0c;需要在浏览器的环境上进行 Node.js 可…...

ArcPy扩展模块的使用(3)

管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如&#xff0c;可以更新、修复或替换图层数据源&#xff0c;修改图层的符号系统&#xff0c;甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...

新版NANO下载烧录过程

一、序言 搭建 Jetson 系列产品烧录系统的环境需要在电脑主机上安装 Ubuntu 系统。此处使用 18.04 LTS。 二、环境搭建 1、安装库 $ sudo apt-get install qemu-user-static$ sudo apt-get install python 搭建环境的过程需要这个应用库来将某些 NVIDIA 软件组件安装到 Je…...