13.云原生之常用研发中间件部署

news2025/1/23 9:10:53

云原生专栏大纲

文章目录

    • mysql主从集群部署
    • mysql高可用集群
      • 高可用互为主从架构
        • 互为主从架构
        • 如何实现
        • 主主复制中若是两台master上同时出现写操作可能会出现的问题
        • 该架构是否存在问题?
      • heml部署mysql高可用集群
    • nacos集群部署
      • 官网文档部署nacos
      • helm部署nacos
    • redis集群部署
      • 主从哨兵部署
      • redis cluster部署
      • 安装reids客户端redisinsight
    • zk集群部署
    • kafka集群部署
    • kafka可视化控制台
    • es集群部署
    • rocketmq集群部署
    • minio集群部署
    • SkyWalking部署
      • 使用 Docker Helm 存储库 (>= 4.3.0) 安装已发布的版本
      • 使用 master 分支安装 SkyWalking 的开发版本
    • MongoDB部署

该章节主要讲述helm安装研发常用环境,目前很多厂商都提供组件的helm安装支持,使用helm能大大降低部署难度。

mysql主从集群部署

  1. 添加应用仓库:https://charts.bitnami.com/bitnami
  2. 搜索mysql部署,配置参考
  3. 查看部署情况

image.pngimage.png
image.png

mysql高可用集群

高可用互为主从架构

互为主从架构

mysql基于主从复制可以实现互为主从,若是两个mysql都对外提供写服务可能出现数据冲突问题。为避免写冲突,master只会有一个对外提供写服务,采用keepalived+mysql实现互为主从架构。

互为主从的架构通常称为主主复制(Master-Master Replication)或双主复制(Dual-Master Replication)。在这种架构中,两个或多个 MySQL 实例充当主服务器,并且彼此互为对方的从服务器。
以下是主主复制的基本工作原理:

  1. 双向复制:每个主服务器都可以接收写操作,并将这些写操作记录到自己的二进制日志中。同时,它也会将二进制日志事件发送给其他主服务器,以便它们可以复制这些写操作到自己的数据库中。
  2. 数据同步:每个主服务器都会将其他主服务器发送的二进制日志事件应用到自己的数据库中,从而保持数据的同步。这样,每个主服务器都包含了完整的数据集,并且可以独立地处理读和写操作。
  3. 冲突解决:在主主复制中,由于每个主服务器都可以接收写操作,可能会发生冲突。例如,如果两个主服务器同时接收到对同一行数据的更新操作,那么就会发生冲突。解决冲突的方法可以通过配置冲突检测和解决策略,例如使用时间戳或自定义逻辑来确定哪个写操作应该优先。

主主复制的优点包括:

  • 冗余备份:每个主服务器都具有完整的数据集,可以作为其他主服务器的冗余备份,提供高可用性和数据冗余。
  • 读写负载均衡:由于每个主服务器都可以处理读和写操作,可以将读操作分发到不同的主服务器,实现读写负载均衡,提高系统的性能和扩展性。
  • 故障切换:如果一个主服务器发生故障,可以将应用程序的写操作切换到其他主服务器,从而实现故障切换,减少停机时间。

但是,主主复制也有一些注意事项和限制:

  • 冲突处理:需要仔细处理冲突,确保数据的一致性。冲突的解决策略需要根据具体的应用程序需求进行配置。
  • 网络延迟:由于主服务器之间需要相互复制数据,网络延迟可能会对性能产生影响。
  • 数据一致性:在主主复制架构中,需要确保应用程序的写操作只发送到其中一个主服务器,以避免数据不一致的情况发生。

总的来说,主主复制架构提供了更高的可用性、冗余备份和读写负载均衡。但是,它也需要仔细的配置和管理,以确保数据的一致性和冲突的解决。

如何实现

在Kubernetes(K8s)中实现Keepalived和MySQL的互为主从架构可以提供高可用性和故障转移的能力。下面是一个基本的步骤概述:

  1. 创建Kubernetes集群:首先,您需要创建一个Kubernetes集群,确保有足够的节点和资源来部署Keepalived和MySQL实例。
  2. 部署Keepalived:使用Kubernetes的Deployment或StatefulSet对象,部署Keepalived实例。Keepalived是一个开源的高可用性解决方案,可以用于实现虚拟IP(VIP)的故障转移和健康检查。您可以配置两个Keepalived实例,一个作为主节点,另一个作为备份节点。
  3. 配置Keepalived:在Keepalived配置中,指定VIP和健康检查的目标。Keepalived将定期检查MySQL实例的健康状态,并在主节点故障时将VIP转移到备份节点。
  4. 部署MySQL实例:使用Kubernetes的Deployment或StatefulSet对象,部署两个MySQL实例,一个作为主服务器,另一个作为从服务器。在配置MySQL实例时,确保主服务器和从服务器的复制配置正确,并且它们能够连接到正确的数据库。
  5. 配置MySQL主从复制:在MySQL实例中,配置主服务器和从服务器之间的主从复制关系。确保主服务器和从服务器之间的网络连接正常,并且复制配置正确。这样,主服务器上的写操作将被异步地复制到从服务器上,实现数据的复制和同步。
  6. 测试和监控:完成部署后,进行测试以确保Keepalived和MySQL实例的故障转移和复制功能正常工作。监控Keepalived和MySQL实例的健康状态,并及时处理任何故障或问题。
主主复制中若是两台master上同时出现写操作可能会出现的问题

在主主复制中,如果两台主服务器同时接收到对同一行数据的写操作,可能会出现以下问题:

  1. 冲突数据:由于两台主服务器同时接收到写操作,它们可能会在同一行数据上进行不同的修改,导致数据冲突。这可能会导致数据不一致的情况发生,因为每个主服务器都会复制自己接收到的写操作到其他主服务器。
  2. 数据丢失:如果两台主服务器同时进行写操作,而没有进行冲突检测和解决策略,可能会导致其中一台主服务器的写操作被覆盖或丢失。这可能会导致数据的不完整性或丢失。
  3. 数据一致性问题:由于两台主服务器之间的数据复制是异步的,复制的延迟可能导致数据在两台主服务器之间不一致。如果一个主服务器上的写操作在另一个主服务器上复制之前被读取,可能会导致读取到不一致的数据。

为了解决这些问题,可以采取以下策略:

  1. 冲突检测和解决:在主主复制中,需要配置冲突检测和解决策略。这可以通过使用时间戳、自定义逻辑或其他冲突解决算法来确定哪个写操作应该优先。例如,可以使用时间戳来判断哪个写操作更早,然后应用该操作并忽略其他写操作。
  2. 分区数据:可以将数据按照一定的规则分区,确保同一行数据只在一个主服务器上进行写操作。例如,可以根据数据的某个属性或哈希值将数据分配给不同的主服务器,从而避免冲突。
  3. 应用程序层面的冲突解决:在应用程序中处理冲突,可以通过在应用程序层面实现乐观锁或悲观锁来避免数据冲突。例如,使用乐观锁机制可以在写操作之前检查数据的版本,并在写操作时进行冲突检测和解决。
该架构是否存在问题?

在Keepalived和MySQL互为主从架构中,当主服务器(Master)宕机并切换到备份服务器(Slave)时,可能会发生事务丢失的问题。这是因为MySQL的主从复制是异步的,主服务器上的事务在复制到从服务器之前可能会丢失。
以下是一些可能导致事务丢失的情况:

  1. 主服务器宕机期间的未提交事务:如果主服务器在宕机之前有未提交的事务,这些事务将无法被复制到备份服务器,因此会丢失。
  2. 主从复制延迟:即使主服务器上的事务已经提交,由于网络延迟或复制进程的延迟,从服务器可能无法立即接收到这些事务的复制。在这段延迟期间,如果主服务器宕机,那么这些已提交但尚未复制到从服务器的事务也会丢失。

为了减少事务丢失的风险,可以采取以下措施:

  1. 使用持久化存储引擎:选择适当的MySQL存储引擎,如InnoDB,它支持事务和持久化存储。这样,即使主服务器宕机,已提交的事务也会在数据库重新启动后恢复。
  2. 配置同步复制:将MySQL的主从复制配置为同步复制模式,这意味着主服务器上的事务必须在复制到从服务器之前进行确认。这样可以确保在主服务器宕机之前,已提交的事务已经复制到从服务器。
  3. 使用半同步复制:MySQL提供了半同步复制模式,它在主服务器上接收到事务后会等待至少一个备份服务器确认已接收该事务,然后才会提交。这可以进一步减少事务丢失的风险。
  4. 定期监控复制状态:实施监控和警报系统来监测主从复制的状态。如果出现复制延迟或错误,可以及时采取措施来解决问题,减少事务丢失的可能性。

需要注意的是,即使采取了上述措施,完全消除事务丢失的风险是很困难的。在高可用性和数据一致性之间需要进行权衡,根据业务需求和数据的重要性来选择适当的复制策略和措施。此外,定期备份数据并测试恢复过程也是重要的,以便在发生事务丢失或其他故障时能够快速恢复数据。

heml部署mysql高可用集群

RadonDB MySQL 是基于 MySQL 的开源、云原生、高可用集群解决方案。通过使用 Raft 协议,RadonDB MySQL 可以快速进行故障转移,且不会丢失任何事务。

参考:
在 Kubernetes 上部署 RadonDB MySQL 集群 | RadonDB 开源社区
https://github.com/radondb/radondb-mysql-kubernetes/blob/main/README_zh.md
在 KubeSphere 上部署 RadonDB MySQL 集群

kubesphere应用商店mysql兼容高可用:
image.png
官网部署失败,参考下述文档部署成功
容器化 | 在 Kubernetes 上部署 RadonDB MySQL 集群_helm radondb-CSDN博客
image.png

nacos集群部署

官网文档部署nacos

官方部署文档:Kubernetes Nacos 官网部署文档

  1. 下载官网项目
git clone https://github.com/nacos-group/nacos-k8s.git
  1. 快速部署
./quick-startup.sh

# 脚本内容如下:
# 小编修改了部署namespace为nacos,数据持久化等可查看下载项目文件进行修改
echo "mysql mysql startup"
kubectl create -f ./deploy/mysql/mysql-local.yaml -n nacos


echo "nacos quick startup"
kubectl create -f ./deploy/nacos/nacos-quick-start.yaml -n nacos
  1. 查看部署情况

image.png
image.png

helm部署nacos

  1. 添加应用仓库

image.png

https://ygqygq2.github.io/charts
https://charts.kubegems.io/kubegemsapp
  1. 进入项目空间,选择应用仓库

image.pngimage.png

  1. 在应用仓库中搜索nacos,点击nacos

image.png

  1. 选择nacos版本,点击下一步

image.png

  1. 修改values.yaml
mysql:
  enabled: true # 是否启用内部mysql,false使用外部需配置external
  external:
    mysqlMasterHost: "mysql_master_host"
    mysqlDatabase: "nacos"
    mysqlMasterPort: "3306"
    mysqlMasterUser: "nacos"
    mysqlMasterPassword: "nacos"
    mysqlSlaveHost: "mysql_slave_host"
    mysqlSlavePort: "3306"

  architecture: replication
  auth: #  修改nacos
    rootPassword: "nacos"
    database: "nacos"
    username: "nacos"
    password: "nacos"
    replicationUser: "replicator"
    replicationPassword: "replicator"
  1. 查看部署情况

image.png
image.png

  1. 服务暴露

image.png

  1. 访问测试

image.png

redis集群部署

主从哨兵部署

  1. 添加应用仓库:https://charts.bitnami.com/bitnami
  2. 搜索redis部署
  3. values.yaml配置修改,配置参考,常用配置如下:
配置项描述
architectureRedis架构。允许的值:standalone或replicationreplication
auth.enabled启用密码身份验证true
auth.sentinel在哨兵上也启用密码身份验证true
auth.passwordRedis密码“”
master.count
master.count要部署的 Redis 主实例数(实验性,需要额外配置)1
replica.replicaCount要部署的 Redis 副本数3
replica.configurationRedis副本节点的配置“”
sentinel.enabled在 Redis Pod 上使用 Redis Sentinel。false

可视化修改配置,可在右上角点击编辑YAML切换:
image.png
image.png
image.png
image.png

  1. 部署情况

image.png
image.png

redis cluster部署

Helm(bitnami)部署zookeeper和kafka集群_helm bitnami-CSDN博客

  1. 添加应用仓库:https://charts.bitnami.com/bitnami
  2. 搜索redis-cluster
  3. values.yaml配置修改,配置参考,常用配置如下:
cluster.nodes主节点数应始终为 >= 3,否则集群创建将失败6
cluster.replicas集群中每个主节点的副本数1
cluster.externalAccess.enabled启用对 Redis 的访问false
metrics.enabled启动边车 prometheus 导出器false
  1. helm方式部署
# 添加仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
# 安装
helm install -n middleware redis-cluster bitnami/redis-cluster
# 查看密码
kubectl get secret --namespace "middleware" redis-cluster -o jsonpath="{.data.redis-password}" | base64 -d
# 自定义values.yaml,https://github.com/bitnami/charts/blob/main/bitnami/redis-cluster/values.yaml


# 使用自定义values.yaml更新已安装redis-cluster
helm upgrade -n middleware -f values.yaml redis-cluster


参考:

在 K8S 中快速部署 Redis Cluster & Redisinsight
https://www.cnblogs.com/hacker-linner/p/15839374.html
Helm 安装 bitnami/redis 集群模式

安装reids客户端redisinsight

镜像:redislabs/redisinsight:1.9.0
容器内部数据路径:/db
使用ks可视化方式安装,不过多介绍
image.png
image.png

zk集群部署

  1. 添加应用仓库:https://charts.bitnami.com/bitnami

  2. 搜索zookeeper部署

  3. values.yaml配置修改,配置参考,常用配置如下:
    | 名字 | 描述 | 值 |
    | — | — | — |
    | replicaCount | ZooKeeper 节点数 | 1 |
    | auth.client.enabled | 启用 ZooKeeper 客户端-服务器身份验证。它使用 SASL/Digest-MD5 | false |

  4. 查看部署情况

image.pngimage.png

kafka集群部署

  1. 添加应用仓库:https://charts.bitnami.com/bitnami
  2. 搜索kafka部署
  3. values.yaml配置修改,常用配置如下,其他参考配置参考
  4. helm命令
helm install kafka bitnami/kafka \
  --namespace kafka --create-namespace \
  --set global.storageClass=<storageClass-name> \
  --set kubeVersion=<theKubeVersion> \
  --set image.tag=3.1.0-debian-10-r22 \
  --set replicaCount=3 \
  --set service.type=ClusterIP \
  --set externalAccess.enabled=true \
  --set externalAccess.service.type=LoadBalancer \
  --set externalAccess.service.ports.external=9094 \
  --set externalAccess.autoDiscovery.enabled=true \
  --set serviceAccount.create=true \
  --set rbac.create=true \
  --set persistence.enabled=true \
  --set logPersistence.enabled=true \
  --set metrics.kafka.enabled=false \
  --set zookeeper.enabled=true \
  --set zookeeper.persistence.enabled=true \
  --wait
  • –namespace kafka --create-namespace: 安装在 kafka namespace, 如果没有该 ns 就创建;
  • global.storageClass= 使用指定的 storageclass
  • kubeVersion= 让 bitnami/kafka helm 判断是否满足版本需求,不满足就无法创建
  • image.tag=3.1.0-debian-10-r22: 20220219 的最新镜像,使用完整的名字保证尽量减少从互联网 pull 镜像;
  • replicaCount=3: kafka 副本数为 3
  • service.type=ClusterIP : 创建 kafka service, 用于 k8s 集群内部,所以 ClusterIP 就可以
  • –set externalAccess.enabled=true --set externalAccess.service.type=LoadBalancer --set externalAccess.service.ports.external=9094 --set externalAccess.autoDiscovery.enabled=true --set serviceAccount.create=true --set rbac.create=true 创建用于 k8s 集群外访问的 kafka-<0|1|2>-external 服务 (因为前面 kafka 副本数为 3)
  • persistence.enabled=true: Kafka 数据持久化,容器中的目录为 /bitnami/kafka
  • logPersistence.enabled=true: Kafka 日志持久化,容器中的目录为 /opt/bitnami/kafka/logs
  • metrics.kafka.enabled=false 不启用 kafka 的监控 (Kafka 监控收集数据是通过 kafka-exporter 实现的)
  • zookeeper.enabled=true: 安装 kafka 需要先安装 zookeeper
  • zookeeper.persistence.enabled=true: Zookeeper 日志持久化,容器中的目录为:/bitnami/zookeeper
  • –wait: helm 命令会一直等待创建的结果
  1. Kafka 测试验证

创建kafka-client pod:

kubectl run kafka-client --restart='Never' --image docker.io/bitnami/kafka:3.1.0-debian-10-r22 --namespace kafka --command -- sleep infinity

进入到 kafka-client 中,运行如下命令测试:

kafka-console-producer.sh  --broker-list kafka-0.kafka-headless.kafka.svc.cluster.local:9092  --topic test
kafka-console-consumer.sh --bootstrap-server kafka-0.kafka-headless.kafka.svc.cluster.local:9092  --topic test --from-beginning

kafka-console-producer.sh  --broker-list 10.109.205.245:9094  --topic test
kafka-console-consumer.sh --bootstrap-server 10.109.205.245:9094  --topic test --from-beginning

kafka可视化控制台

组件描述
Know Streaming专注于Kafka运维管控、监控告警、资源治理、多活容灾等核心场景。
Know Streaming github | Know Streaming官网
Kafka ManagerKafka Manager 是 Yahoo 开源的 Kafka 集群管理工具。它提供了一个直观的 Web 界面,用于监控和管理 Kafka 集群。Kafka Manager 可以显示集群的整体状态、主题和分区的详细信息,以及消费者组的偏移量等。您可以使用 Kafka Manager 进行主题和分区的管理、消费者组的监控和管理,以及执行一些集群维护任务。Kafka Manager官网
KafdropKafdrop 是一个开源的 Kafka 可视化工具,提供了一个简单易用的 Web 界面来监控 Kafka 集群。Kafdrop 可以显示 Kafka 集群中的主题、分区和消费者组的信息,并提供了实时的消息流量监控。它还支持查看消息的详细内容和偏移量的管理。Kafdrop官网
Kafka MapKafka Map 是一个开源的 Kafka 可视化工具,它提供了一个交互式的 Web 界面,用于可视化 Kafka 主题和分区之间的消息流。Kafka Map 使用图形化的方式展示了消息在不同分区之间的流动情况,帮助用户更好地理解和分析消息的传输路径。kafka-map官网

从功能的专业程度建议使用Know Streaming,关注消息分区流向建议kafka-map,轻量级的 Kafka 可视化工具建议Kafdrop

es集群部署

参考

Download Elasticsearch
Elasticsearch支持哪些插件_检索分析服务 Elasticsearch版(ES)-阿里云帮助中心
Kubernetes Helm3 部署 ElasticSearch & Kibana 7 集群-腾讯云开发者社区-腾讯云

  1. 添加应用仓库:https://charts.bitnami.com/bitnami
  2. 搜索elasticsearch部署
  3. values.yaml配置修改,配置参考

image.png

制作安装ik分词器的es可使用上述截图中镜像作为基础镜像(推荐),也可使用plugins参数初始化安装

image.png

# 查看elasticsearch安装位置
which elasticsearch

# 查看当前已安装的插件
elasticsearch-plugin list

# 安装插件
elasticsearch-plugin install {插件名称}

# ik分词器地址https://github.com/medcl/elasticsearch-analysis-ik/releases/
# elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.12.0/elasticsearch-analysis-ik-8.12.0.zip

在 Elasticsearch 集群中,不同角色承担着不同的职责和功能。下面是关于 Elasticsearch 集群中各个角色的详细介绍:

  1. Coordinating(协调节点)角色:
    • 职责:协调节点是集群中的请求入口点,它接收来自客户端的请求并将其转发到适当的节点。它不存储数据,主要用于处理搜索请求和聚合操作。
    • 功能:
      • 路由请求:协调节点根据请求的内容将其路由到正确的数据节点,以提高集群的性能和扩展性。
      • 整合结果:协调节点将从数据节点接收到的结果进行汇总和整合,然后将结果返回给客户端。
  2. Data(数据节点)角色:
    • 职责:数据节点存储和管理实际的索引数据。
    • 功能:
      • 数据存储:数据节点负责存储索引数据,并提供对数据的增删改查操作。
      • 数据分片:数据节点将索引数据分成多个分片,每个分片可以分布在不同的节点上,以实现数据的分布式存储和处理。
      • 数据复制:数据节点可以复制数据分片,以提供高可用性和故障容错性。
  3. Ingest(数据预处理节点)角色:
    • 职责:Ingest 节点用于处理数据的预处理和转换,以便在索引之前进行必要的操作。
    • 功能:
      • 数据预处理:Ingest 节点可以执行各种数据的提取、转换和加载(ETL)操作,例如数据过滤、转换、标准化等。
      • 数据修改:Ingest 节点可以在数据进入索引之前对其进行修改和处理,以满足特定的需求和要求。
  4. Master(主节点)角色:
    • 职责:主节点管理集群的整体状态和配置。
    • 功能:
      • 集群管理:主节点负责协调集群中的各个节点,执行集群范围的操作,例如创建和删除索引、添加和删除节点等。
      • 元数据维护:主节点维护集群的元数据,包括索引的映射、分片分配、节点状态等。
      • 集群稳定性:主节点确保集群的稳定性和一致性,协调节点的选举和故障检测等操作由主节点负责。

这些角色在 Elasticsearch 集群中相互协作,共同构建一个高性能、可扩展和可靠的分布式搜索和分析平台。需要注意的是,一个节点可以同时承担多个角色,具体取决于集群的规模和配置。

rocketmq集群部署

参考:Helm 部署 RocketMQ-腾讯云开发者社区-腾讯云
https://github.com/itboon/rocketmq-helm

## 部署高可用集群,MasterSlave
## 3个 master 节点,每个 master 具有1个副节点,共6个 broker 节点
helm upgrade --install rocketmq \
  --namespace rocketmq-demo \
  --create-namespace \
  --set broker.size.master="3" \
  --set broker.size.replica="1" \
  --set broker.master.jvmMemory="-Xms2g -Xmx2g" \
  --set broker.master.resources.requests.memory="4Gi" \
  --set nameserver.replicaCount="3" \
  --set dashboard.enabled="true" \
  --set dashboard.ingress.enabled="true" \
  --set dashboard.ingress.hosts[0].host="rocketmq-ha.example.com" \
  rocketmq-repo/rocketmq

image.png
image.png

minio集群部署

  1. 添加应用仓库:https://charts.bitnami.com/bitnami
  2. 搜索kafka部署
  3. values.yaml配置修改,配置参考,常用配置如下:
  4. helm命令

SkyWalking部署

参考:

https://github.com/apache/skywalking-helm
k8s 部署 skywalking 并将 pod 应用接入链路追踪 - 掘金
https://www.cnblogs.com/lina-2159/p/16190984.html

使用 Docker Helm 存储库 (>= 4.3.0) 安装已发布的版本

helm install "skywalking" \
  oci://registry-1.docker.io/apache/skywalking-helm \
  --version "4.3.0" \
  -n "skywalking" \
  --set oap.image.tag=9.2.0 \
  --set oap.storageType=elasticsearch \
  --set ui.image.tag=9.2.0

image.png
image.png
image.png

使用 master 分支安装 SkyWalking 的开发版本

git clone https://github.com/apache/skywalking-kubernetes
 
cd skywalking-kubernetes/chart
helm repo add elastic https://helm.elastic.co
helm dep up skywalking

image.png

# 安装
helm install "skywalking" ./skywalking -n "skywalking" -f ./skywalking/values-my-es.yaml

# 卸载
helm uninstall skywalking -n skywalking

修改values-my-es.yaml配置是否使用外部es

elasticsearch:
  enabled: false # 由于使用 外部的 es,所以这里需要设置为 false,因为设置为 true 会在 k8s 中部署 es
  config:               # For users of an existing elasticsearch cluster,takes effect when `elasticsearch.enabled` is false
    host: your.elasticsearch.host.or.ip
    port:
      http: 9200
    user: "xxx"         # [optional]
    password: "xxx"     # [optional]

MongoDB部署

  1. 添加应用仓库:https://charts.bitnami.com/bitnami
  2. 搜索kafka部署
  3. values.yaml配置修改,配置参考,常用配置如下:
  4. helm命令

helm 安装 MongoDB 集群

helm pull bitnami/mongodb
tar -xzvf mongodb-14.10.1.tgz
helm -n mongodb install mongodb ./mongodb

image.png

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

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

相关文章

Windows系统x86机器安装(麒麟、统信)ARM系统详细教程

本次介绍在window系统x86机器上安装国产系统 arm 系统的详细教程。 注:ubuntu 的arm系统安装是一样的流程。 1.安装环境准备。 首先,你得有台电脑,配置别太差,至少4核8G内存,安装window10或者11都行(为啥不能是Window7,你要用也不是不行,你先解决win7补丁更新问题)。…

高效网络采集实践:使用 Haskell 和 html-conduit 下载 www.baidu.com 视频完整教程

一、引言 网络采集在当今信息时代中发挥着关键作用&#xff0c;用于从互联网上获取数据并进行分析。本文将介绍如何使用 Haskell 进行网络编程&#xff0c;从数据采集到图片分析&#xff0c;为你提供一个清晰的指南。我们将探讨如何使用爬虫代理来确保高效、可靠的数据获取&am…

Kubernetes剖析

Kubernetes剖析 前言 ​ 容器技术这样一个新生事物&#xff0c;完全重塑了整个云计算市场的形态。它不仅催生出了一批年轻有为的容器技术人&#xff0c;更培育出了一个具有相当规模的开源基础设施技术市场。 ​ 在这个市场里&#xff0c;不仅有 Google、Microsoft 等技术巨擘…

爬取某牙视频

爬取页面链接&#xff1a;游戏视频_游戏攻略_虎牙视频 爬取步骤&#xff1a;点进去一个视频播放&#xff0c;查看media看有没有视频&#xff0c;发现没有。在xhr中发现有许多ts文件&#xff0c;但这种不是很长的视频一般都有直接的播放链接&#xff0c;所以目标还是找直接的链…

自定义神经网络一之Tensor和神经网络

文章目录 前言Tensor神经网络深度神经网络DNN卷积神经网络CNN卷积神经网络有2大特点 循环神经网络RNN残差网络ResNetTransformer自我注意力机制并行效率 总结 前言 神经网络是AI界的一个基础概念&#xff0c;当下火热的神经网络例如RNN循环神经网络或者CNN卷积神经网络&#x…

【数据结构和算法初阶(C语言)】链表-单链表(手撕详讲单链表增删查改)

目录 1.前言&#xff1a;顺序表回顾&#xff1a; 1.1顺序表的优缺点 2.主角----链表 2.1链表的概念 2.2定义一个单链表的具体实现代码方式 3.单链表对数据的管理----增删查改 3.1单链表的创建 3.2单链表的遍历实现 3.2.1利用遍历实现一个打印我们链表内容的函数的函数…

matlab 线性四分之一车体模型

1、内容简介 略 57-可以交流、咨询、答疑 路面采用公式积分来获得&#xff0c;计算了车体位移、非悬架位移、动载荷等参数 2、内容说明 略 3、仿真分析 略 线性四分之一车体模型_哔哩哔哩_bilibili 4、参考论文 略

SpringCloud微服务-Eureka注册中心

Eureka注册中心 文章目录 Eureka注册中心前言1、Eureka的作用2、搭建EurekaServer3、服务注册4、启动多个实例5、服务拉取 -实现负载均衡 前言 在服务调用时产生的问题&#xff1a; //2. 利用RestTemplate发起HTTP请求&#xff0c;查询user String url "http://localho…

排序算法之快速排序(挖坑法)

挖坑法的思想&#xff1a;记第一个数为key&#xff0c;要调整key的位置&#xff0c;使得左边的都要比key的小&#xff0c;右边的数都比key的大。 记录下关键字keybegin&#xff0c;把28那个位置挖坑holebegin 让end找到小于28&#xff08;key&#xff09;的数&#xff0c;把那…

docker-mysql:5.7安装

1、下载mysql:5.7镜像 [rootlocalhost ~]# docker search mysql (某个XXX镜像名字) [rootlocalhost ~]# docker pull mysql:5.7 按装之前查看一下是否按装过mysql。如果安装过会占用3306端口。 [rootlocalhost ~]# ps -ef | grep mysql 2、简单的安装 [rootlocalhost ~]# d…

STM32 +合宙1.54“ 电子墨水屏(e-paper)驱动显示示例

STM32 合宙1.54“ 电子墨水屏&#xff08;e-paper&#xff09;驱动显示示例 &#x1f4cd;相关篇《Arduino框架下ESP32/ESP8266合宙1.54“ 电子墨水屏&#xff08;e-paper&#xff09;驱动显示示例》&#x1f516;程序是从GooDisplay品牌下同型号规格墨水屏的示例程序参考Ardui…

计算1/1+1/2+1/3+1/4+1/5...+1/100的值(C语言实现)

如何实现打印小数呢 这里我们需要把数值定义成为float或者double的类型&#xff0c;因为如果是int的话&#xff0c;就会直接取整&#xff0c;输出的结果就会变成0 int main() {float sum 0;int flg 1;for (int i 1; i < 100; i){sum 1.0 / i * flg;flg -flg;}printf(&…

蓝桥杯前端Web赛道-课程列表

蓝桥杯前端Web赛道-课程列表 题目链接&#xff1a;0课程列表 - 蓝桥云课 (lanqiao.cn) 题目要求如下&#xff1a; 分析题目我们发现其实就是需要我们手写一个分页的功能&#xff0c;根据题目的要求&#xff0c;分析如下 需要通过axios获取数据每页显示5条数据&#xff0c;默…

深度学习 精选笔记(3)线性神经网络-线性回归

学习参考&#xff1a; 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增)&#xff0c;以达到集多方教程的精华于一文的目的。 ③非常推荐上面&#xff08;学习参考&#x…

黑马程序员——接口测试——day03——Postman断言、关联、参数化

目录&#xff1a; Potman断言 Postman断言简介Postman常用断言 断言响应状态码断言包含某字符串断言JSON数据Postman断言工作原理Postman关联 简介实现步骤核心代码创建环境案例1案例2Postman参数化 简介数据文件简介编写数据文件 CSV文件JSON文件导入数据文件到postman读取数…

Python 实现Excel自动化办公(中)

在上一篇文章的基础上进行一些特殊的处理&#xff0c;这里的特殊处理主要是涉及到了日期格式数据的处理&#xff08;上一篇文章大家估计也看到了日期数据的处理是不对的&#xff09;以及常用的聚合数据统计处理&#xff0c;可以有效的实现你的常用统计要求。代码如下&#xff1…

云计算时代的运维: 职业发展方向与岗位选择

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua&#xff0c;在这里我会分享我的知识和经验。&#x…

常见的socket函数封装和多进程和多线程实现服务器并发

常见的socket函数封装和多进程和多线程实现服务器并发 1.常见的socket函数封装2.多进程和多线程实现服务器的并发2.1多进程服务器2.2多线程服务器2.3运行效果 1.常见的socket函数封装 accept函数或者read函数是阻塞函数&#xff0c;会被信号打断&#xff0c;我们不能让它停止&a…

基于最小二乘正弦拟合算法的信号校正matlab仿真,校正幅度,频率以及时钟误差,输出SNDR,SFDR,ENOB指标

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 最小二乘正弦拟合 4.2 SNDR、SFDR 和 ENOB 计算 4.3 校正 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..........................…

vscode 如何连接 WSL (不能通过 IP 地址连接)

来源&#xff1a;https://www.cnblogs.com/wxdblog/p/17234342.html vscode (remote-ssh) 连接 WSL 不能使用 IP地址 连接&#xff0c;需要安装 WSL 扩展才行