七、SpringCloud 项目迁移至 K8s

文章目录

  • 七、SpringCloud 项目迁移至 K8s
    • 1、环境准备
      • 1.1 集群规划
      • 1.2 SpringCloud 项目架构及迁移需求分析
    • 2、迁移 Eureka 集群
      • 2.1 构建及容器化
      • 2.2 部署至 K8s
      • 2.3 创建通信Service
    • 3、迁移网关服务
      • 3.1 构建及容器化
      • 3.2 部署至 K8s
      • 3.3 创建Service
      • 3.4 创建Ingress
    • 4、迁移其他 springboot 服务
      • 4.1 构建及容器化
      • 4.2 部署至 K8s
    • 5、迁移前端服务
      • 5.1 构建及容器化
      • 5.2 部署至 K8s
      • 5.3 创建通信Service
      • 5.4 创建Ingress

1、环境准备

1.1 集群规划

主机名称物理IP系统资源配置说明
k8s-master01192.168.200.50Rocky9.42C4C40GMaster节点
k8s-node01192.168.200.51Rocky9.42C4C40GNode01节点
k8s-node02192.168.200.52Rocky9.42C4C40GNode02节点
harbor192.168.200.53Rocky9.42C4C40Gharbor&docker节点

1.2 SpringCloud 项目架构及迁移需求分析

现有一共 SpringCloud 项目需要迁移至K8s,该项目采用 Eureka 注册中心,并采用前后端分离框架。

该项目首页域名为 demo.test.com,域名的主路径 / 转发项目的前端,路径 receiveapi 转发至网关服务,其他服务注册至 Eureka ,由网关服务进行流量转发。

2、迁移 Eureka 集群

2.1 构建及容器化

# 下载代码:
[root@habor ~]# git clone https://gitee.com/dukuan/demo-eureka.git# 创建java缓存目录并挂载进容器里
[root@habor ~]# mkdir -p /data/m2# 创建容器
[root@habor ~]# docker run --ulimit nofile=65535:65535 -it --rm -v `pwd`/demo-eureka:/mnt/ -v /data/m2/:/root/.m2 crpi-q1nb2n896zwtcdts.cn-beijing.personal.cr.aliyuncs.com/ywb01/maven:3.5.3 bash# 执行构建:
root@ac8d29c13770:/# cd /mnt/
root@ac8d29c13770:/mnt# ls
README.en.md  README.md  pom.xml  src
root@ac8d29c13770:/mnt# mvn clean package
....
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:49 min
[INFO] Finished at: 2025-06-21T08:07:22Z
[INFO] ------------------------------------------------------------------------# 构建完成后,查看构建产物:
root@ac8d29c13770:/mnt# ls target/*.jar
target/spring-cloud-eureka-0.0.1-SNAPSHOT.jar
# 编写dockerfile文件
[root@habor ~]# cd demo-eureka/
[root@habor demo-eureka]# vim Dockerfile
[root@habor demo-eureka]# cat Dockerfile 
FROM crpi-q1nb2n896zwtcdts.cn-beijing.personal.cr.aliyuncs.com/ywb01/jdk:8u211-jmap
WORKDIR /home/tomcat
COPY target/*.jar ./
CMD java -jar ./*.jar# 制作镜像
[root@habor demo-eureka]# docker build -t crpi-q1nb2n896zwtcdts.cn-beijing.personal.cr.aliyuncs.com/ywb01/demo-eureka:v1 .# 推送镜像到镜像仓库
[root@habor demo-eureka]# docker push crpi-q1nb2n896zwtcdts.cn-beijing.personal.cr.aliyuncs.com/ywb01/demo-eureka:v1

2.2 部署至 K8s

# StatefulSet 部署 Eureka 集群
[root@k8s-master01 ~]# vim demo-eureka.yaml 
[root@k8s-master01 ~]# cat demo-eureka.yaml 
apiVersion: apps/v1
kind: StatefulSet
metadata:labels:app: demo-eurekaname: demo-eurekaannotations:app: demo-eureka
spec:replicas: 3serviceName: demo-eurekapodManagementPolicy: Parallelselector:matchLabels:app: demo-eurekatemplate:metadata:creationTimestamp: nulllabels:app: demo-eurekaannotations:app: demo-eurekaspec:containers:- image: crpi-q1nb2n896zwtcdts.cn-beijing.personal.cr.aliyuncs.com/ywb01/demo-eureka:v1name: demo-eurekaports:- name: http-webcontainerPort: 8761protocol: TCPenv:- name: SPRING_PROFILES_ACTIVEvalue: k8s- name: SERVER_PORTvalue: '8761'- name: EUREKA_SERVER_ADDRESSvalue: >-http://demo-eureka-0.demo-eureka:8761/eureka/,http://demo-eureka-1.demo-eureka:8761/eureka/,http://demo-eureka-2.demo-eureka:8761/eureka/resources: limits:cpu: '1'memory: 1Girequests:cpu: 100mmemory: 128MiimagePullPolicy: IfNotPresentrestartPolicy: Always[root@k8s-master01 ~]# kubectl create -f demo-eureka.yaml 
[root@k8s-master01 ~]# kubectl get po
NAME            READY   STATUS    RESTARTS   AGE
demo-eureka-0   1/1     Running   0          64s
demo-eureka-1   1/1     Running   0          64s
demo-eureka-2   1/1     Running   0          64s

2.3 创建通信Service

# 用于集群通讯的 Service 文件
[root@k8s-master01 ~]# vim demo-eureka-svc.yaml 
[root@k8s-master01 ~]# cat demo-eureka-svc.yaml 
apiVersion: v1
kind: Service
metadata:labels:app: demo-eurekaname: demo-eureka
spec:ports:- name: http-webprotocol: TCPport: 8761targetPort: 8761clusterIP: Noneselector:app: demo-eurekatype: ClusterIP
# 用于图形界面的 Service 文件
[root@k8s-master01 ~]# vim eureka-svc.yaml
[root@k8s-master01 ~]# cat eureka-svc.yaml 
apiVersion: v1
kind: Service
metadata:labels:app: eurekaname: eureka
spec:ports:- name: http-webprotocol: TCPport: 8761targetPort: 8761selector:app: demo-eurekatype: NodePort
[root@k8s-master01 ~]# kubectl create -f demo-eureka-svc.yaml 
[root@k8s-master01 ~]# kubectl create -f eureka-svc.yaml [root@k8s-master01 ~]# kubectl get svc
NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
demo-eureka   ClusterIP   None            <none>        8761/TCP         10s
eureka        NodePort    10.111.57.249   <none>        8761:31394/TCP   5s

访问 web 界面 (任意节点:31394)

在这里插入图片描述

3、迁移网关服务

3.1 构建及容器化

# 下载代码:
[root@habor ~]# git clone https://gitee.com/dukuan/demo-receive.git# 创建容器
[root@habor ~]# docker run --ulimit nofile=65535:65535 -it --rm -v `pwd`/demo-receive:/mnt/ -v /data/m2/:/root/.m2 crpi-q1nb2n896zwtcdts.cn-beijing.personal.cr.aliyuncs.com/ywb01/maven:3.5.3 bash# 执行构建:
root@bb5a4bf9745a:/# cd /mnt/
root@bb5a4bf9745a:/mnt# mvn clean package
....
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 17.845 s
[INFO] Finished at: 2025-06-21T09:55:56Z
[INFO] ------------------------------------------------------------------------# 构建完成后,查看构建产物:
root@bb5a4bf9745a:/mnt# ls target/*.jar
target/receive-0.0.1-SNAPSHOT.jar
# 编写dockerfile文件
[root@habor demo-receive]# vim Dockerfile
[root@habor demo-receive]# cat Dockerfile 
FROM crpi-q1nb2n896zwtcdts.cn-beijing.personal.cr.aliyuncs.com/ywb01/jdk:8u211-jmap
WORKDIR /home/tomcat
COPY target/*.jar ./
CMD java -jar ./*.jar# 制作镜像
[root@habor demo-receive]# docker build -t crpi-q1nb2n896zwtcdts.cn-beijing.personal.cr.aliyuncs.com/ywb01/demo-receive:v1 .# 推送镜像到镜像仓库
[root@habor demo-receive]# docker push crpi-q1nb2n896zwtcdts.cn-beijing.personal.cr.aliyuncs.com/ywb01/demo-receive:v1

3.2 部署至 K8s

# 部署文件
[root@k8s-master01 ~]# vim demo-receive.yaml 
[root@k8s-master01 ~]# cat demo-receive.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: demo-receivename: demo-receiveannotations:app: demo-receive
spec:replicas: 2selector:matchLabels:app: demo-receivetemplate:metadata:creationTimestamp: nulllabels:app: demo-receiveannotations:app: demo-receivespec:containers:- image: crpi-q1nb2n896zwtcdts.cn-beijing.personal.cr.aliyuncs.com/ywb01/demo-receive:v1name: demo-receiveports:- name: http-webcontainerPort: 8080protocol: TCPenv:- name: SPRING_PROFILES_ACTIVEvalue: k8s- name: SERVER_PORTvalue: '8080'- name: EUREKA_SERVER_ADDRESSvalue: >-http://demo-eureka-0.demo-eureka:8761/eureka/,http://demo-eureka-1.demo-eureka:8761/eureka/,http://demo-eureka-2.demo-eureka:8761/eureka/resources: limits:cpu: '1'memory: 1Girequests:cpu: 100mmemory: 128Milifecycle: {}terminationMessagePath: /dev/termination-logterminationMessagePolicy: FileimagePullPolicy: IfNotPresentrestartPolicy: Always[root@k8s-master01 ~]# kubectl create -f demo-receive.yaml 
[root@k8s-master01 ~]# kubectl get po
NAME                           READY   STATUS    RESTARTS   AGE
....
demo-receive-85dfc76bc-9d9kn   1/1     Running   0          60s
demo-receive-85dfc76bc-hwfgg   1/1     Running   0          60s

3.3 创建Service

# 用于集群通讯的 Service 文件
[root@k8s-master01 ~]# vim demo-receive-svc.yaml 
[root@k8s-master01 ~]# cat demo-receive-svc.yaml 
apiVersion: v1
kind: Service
metadata:labels:app: demo-receivename: demo-receive
spec:ports:- name: http-webprotocol: TCPport: 8080targetPort: 8080selector:app: demo-receive[root@k8s-master01 ~]# kubectl create -f demo-receive-svc.yaml [root@k8s-master01 ~]# kubectl get svc
NAME           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
....
demo-receive   ClusterIP   10.99.146.126   <none>        8080/TCP         16s
....

3.4 创建Ingress

[root@k8s-master01 ~]# cat demo-receive-ingress.yaml 
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: demo-receiveannotations:nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:ingressClassName: 'nginx'rules:- host: demo.test.comhttp:paths:- path: /receiveapi(/|$)(.*)pathType: ImplementationSpecificbackend:service:name: demo-receiveport:number: 8080[root@k8s-master01 ~]# kubectl create -f demo-receive-ingress.yaml
[root@k8s-master01 ~]# kubectl get ingress
NAME           CLASS   HOSTS           ADDRESS          PORTS   AGE
demo-receive   nginx   demo.test.com   192.168.200.52   80      17m

4、迁移其他 springboot 服务

4.1 构建及容器化

# 下载代码:
[root@habor ~]# git clone https://gitee.com/dukuan/demo-handler.git# 创建容器
[root@habor ~]# docker run --ulimit nofile=65535:65535 -it --rm -v `pwd`/demo-handler:/mnt/ -v /data/m2/:/root/.m2 crpi-q1nb2n896zwtcdts.cn-beijing.personal.cr.aliyuncs.com/ywb01/maven:3.5.3 bash
root@aa9aa1f3f326:/# cd /mnt/
root@aa9aa1f3f326:/mnt# ls
pom.xml  src
root@aa9aa1f3f326:/mnt# mvn clean package
....
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 21.673 s
[INFO] Finished at: 2025-06-21T14:28:27Z
[INFO] ------------------------------------------------------------------------# 构建完成后,查看构建产物:
root@aa9aa1f3f326:/mnt# ls target/*.jar
target/handler-0.0.1-SNAPSHOT.jar
# 编写dockerfile文件
[root@habor ~]# cd demo-handler/
[root@habor demo-handler]# vim Dockerfile 
[root@habor demo-handler]# cat Dockerfile 
FROM crpi-q1nb2n896zwtcdts.cn-beijing.personal.cr.aliyuncs.com/ywb01/jdk:8u211-jmap
WORKDIR /home/tomcat
COPY target/*.jar ./
CMD java -jar ./*.jar# 制作镜像
[root@habor demo-handler]# docker build -t crpi-q1nb2n896zwtcdts.cn-beijing.personal.cr.aliyuncs.com/ywb01/demo-handler:v1 .# 推送镜像到镜像仓库
[root@habor demo-handler]# docker push crpi-q1nb2n896zwtcdts.cn-beijing.personal.cr.aliyuncs.com/ywb01/demo-handler:v1

4.2 部署至 K8s

# 部署文件:
[root@k8s-master01 ~]# vim demo-handler.yaml 
[root@k8s-master01 ~]# cat demo-handler.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: demo-handlername: demo-handlerannotations:app: demo-handler
spec:replicas: 2selector:matchLabels:app: demo-handlertemplate:metadata:creationTimestamp: nulllabels:app: demo-handlerannotations:app: demo-handlerspec:containers:- image: crpi-q1nb2n896zwtcdts.cn-beijing.personal.cr.aliyuncs.com/ywb01/demo-handler:v1name: demo-handlerports:- name: http-webcontainerPort: 8080protocol: TCPenv:- name: SPRING_PROFILES_ACTIVEvalue: k8s- name: SERVER_PORTvalue: '8080'- name: EUREKA_SERVER_ADDRESSvalue: >-http://demo-eureka-0.demo-eureka:8761/eureka/,http://demo-eureka-1.demo-eureka:8761/eureka/,http://demo-eureka-2.demo-eureka:8761/eureka/resources: limits:cpu: '1'memory: 1Girequests:cpu: 100mmemory: 128Milifecycle: {}terminationMessagePath: /dev/termination-logterminationMessagePolicy: FileimagePullPolicy: IfNotPresentrestartPolicy: Always[root@k8s-master01 ~]# kubectl create -f demo-handler.yaml
[root@k8s-master01 ~]# kubectl get po
NAME                           READY   STATUS    RESTARTS   AGE
....
demo-handler-c975bcc7f-647j4   1/1     Running   0          86s
....

5、迁移前端服务

5.1 构建及容器化

# 下载代码:
[root@habor ~]# git clone https://gitee.com/dukuan/demo-ui.git# 创建容器
[root@habor ~]# docker run --ulimit nofile=65535:65535 -it --rm -v `pwd`/demo-ui:/mnt/ crpi-q1nb2n896zwtcdts.cn-beijing.personal.cr.aliyuncs.com/ywb01/node:16.17.0-apline-cnpm sh
/ # cd /mnt/
/mnt # ls
Dockerfile      index.html      public          vite.config.js
README.md       package.json    src# 执行构建
/mnt # npm install --registry=https://registry.npmmirror.com && npm run build
....
> demo-ui@0.0.0 build
> vite buildvite v5.2.0 building for production...
✓ 58 modules transformed.
dist/index.html                  0.46 kB │ gzip:  0.29 kB
dist/assets/index-BYh5Cz0w.css   1.27 kB │ gzip:  0.65 kB
dist/assets/index-BZep8zp5.js   83.61 kB │ gzip: 33.25 kB
✓ built in 2.49s# 构建完成后,查看构建产物:
/mnt # ls dist/
assets      index.html  vite.svg
# 编写dockerfile文件
[root@habor ~]# cd demo-ui/
[root@habor demo-ui]# cat Dockerfile 
FROM crpi-q1nb2n896zwtcdts.cn-beijing.personal.cr.aliyuncs.com/ywb01/nginx:1.22.1-alpine3.17
COPY dist /usr/share/nginx/html# 制作镜像
[root@habor demo-ui]# docker build -t crpi-q1nb2n896zwtcdts.cn-beijing.personal.cr.aliyuncs.com/ywb01/demo-ui:v1 .# 推送镜像到镜像仓库
[root@habor demo-ui]# docker push crpi-q1nb2n896zwtcdts.cn-beijing.personal.cr.aliyuncs.com/ywb01/demo-ui:v1

5.2 部署至 K8s

[root@k8s-master01 ~]# vim demo-ui.yaml 
[root@k8s-master01 ~]# cat demo-ui.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: demo-uiname: demo-uiannotations:app: demo-ui
spec:replicas: 1selector:matchLabels:app: demo-uitemplate:metadata:creationTimestamp: nulllabels:app: demo-uiannotations:app: demo-uispec:containers:- image: crpi-q1nb2n896zwtcdts.cn-beijing.personal.cr.aliyuncs.com/ywb01/demo-ui:v1name: demo-uiports:- name: http-webcontainerPort: 80protocol: TCPresources: limits:cpu: '1'memory: 1Girequests:cpu: 100mmemory: 128Milifecycle: {}terminationMessagePath: /dev/termination-logterminationMessagePolicy: FileimagePullPolicy: IfNotPresentrestartPolicy: Always[root@k8s-master01 ~]# kubectl create -f demo-ui.yaml 
[root@k8s-master01 ~]# kubectl get po
NAME                           READY   STATUS    RESTARTS   AGE
....
demo-ui-748589dcfb-vnnj5       1/1     Running   0          52s

5.3 创建通信Service

[root@k8s-master01 ~]# vim demo-ui-svc.yaml 
[root@k8s-master01 ~]# cat demo-ui-svc.yaml 
apiVersion: v1
kind: Service
metadata:labels:app: demo-uiname: demo-ui
spec:ports:- name: http-webprotocol: TCPport: 80targetPort: 80selector:app: demo-ui[root@k8s-master01 ~]# kubectl create -f demo-ui-svc.yaml 
[root@k8s-master01 ~]# kubectl get svc
NAME           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
....
demo-ui        ClusterIP   10.98.14.85     <none>        80/TCP           6s

5.4 创建Ingress

[root@k8s-master01 ~]# vim demo-ui-ingress.yaml 
[root@k8s-master01 ~]# cat demo-ui-ingress.yaml 
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: demo-ui
spec:ingressClassName: 'nginx'rules:- host: demo.test.comhttp:paths:- path: /pathType: Prefixbackend:service:name: demo-uiport:number: 80[root@k8s-master01 ~]# kubectl create -f demo-ui-ingress.yaml 
[root@k8s-master01 ~]# kubectl get ingress
NAME           CLASS   HOSTS           ADDRESS          PORTS   AGE
demo-receive   nginx   demo.test.com   192.168.200.52   80      17m
demo-ui        nginx   demo.test.com   192.168.200.52   80      29m

web访问

在这里插入图片描述

此博客来源于:https://edu.51cto.com/lecturer/11062970.html

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

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

相关文章

通过具有一致性嵌入的大语言模型实现端到端乳腺癌放射治疗计划制定|文献速递-最新论文分享

Title 题目 End-to-end breast cancer radiotherapy planning via LMMs with consistency embedding 通过具有一致性嵌入的大语言模型实现端到端乳腺癌放射治疗计划制定 01 文献速递介绍 近年来&#xff0c;受大型语言模型&#xff08;LLM&#xff09;启发的新一代人工智…

MCP Chart Server服务本地部署案例

一、MCP Chart Server介绍 MCP Chart Server是一个专业的图表生成服务&#xff0c;支持多种图表类型&#xff0c;适用于数据可视化和分析。 MCP Chart Server是一种用于生成和呈现图表的服务器端软件。它提供了一个简单而强大的方式&#xff0c;让开发人员和系统管理员可以轻…

复合型浪涌保护器五大核心技术重构电气防护体系

开篇&#xff1a;从传统防护到智能守护的技术跨越 在电气设备面临浪涌威胁的防护场景中&#xff0c;浪涌保护器&#xff08;SPD&#xff09;始终扮演着关键角色。面对传统SPD在漏电流、续流等方面的技术局限&#xff0c;行业领先企业通过技术整合开发出复合型SPD&#xff0c;以…

c# 详细分析Task.sleep和Thread.sleep 的区别、使用场景和应用示例

文章目录 Task.Delay vs Thread.Sleep 详细分析与使用场景核心区别详细分析Thread.SleepTask.Delay 性能考量综合示例高级用法组合延迟与超时实现指数退避重试 总结建议 Task.Delay vs Thread.Sleep 详细分析与使用场景 核心区别 Task.Delay 和 Thread.Sleep 都用于在代码中引…

Vue 3 中的 `h` 函数详解

h 函数是 Vue 3 中用于创建**虚拟 DOM 节点(VNode)**的核心函数&#xff0c;它是 Vue 渲染系统的基石。下面我将全面解释它的作用、用法和重要性。 1. h 函数的基本概念 h 是 createVNode 的简称&#xff0c;来源于"hyperscript"的缩写传统。它的主要作用是&#x…

SoapCore 全面介绍:在 .NET Core 中实现 SOAP 服务的现代解决方案

一、什么是 SoapCore&#xff1f; 在现代微服务和 REST API 成为主流的今天&#xff0c;SOAP&#xff08;Simple Object Access Protocol&#xff09;看似已经被边缘化&#xff0c;但在许多企业和政务系统中&#xff0c;SOAP 仍然是 重要的通信协议。特别是在金融、保险、医疗…

JDBC工具类和SQL 注入问题

在软件开发中&#xff0c;数据库安全与高效访问一直是关键课题。本文将围绕 SQL 注入问题的原理、解决方案&#xff0c;以及 JDBC 开发中的工具类演进和连接池技术展开探讨&#xff0c;结合实际代码示例&#xff0c;为开发者提供清晰的技术实践指南。 SQL 注入问题的核心原理与…

2022年SEVC SCI2区,分数阶蚁群算法FACA:一种基于分数阶长期记忆的合作学习方法,深度解析+性能实测

目录 1.摘要2.分数阶微积分基础知识3.分数阶蚁群算法FACA4.分数阶蚁群算法FACA数学证明与分析5.结果展示6.参考文献7.代码获取8.算法辅导应用定制读者交流 1.摘要 本文提出了一种新颖分数阶蚁群算法&#xff08;Fractional-Order Ant Colony Algorithm&#xff0c; FACA&#…

java+vue+SpringBoo数字科技风险报告管理系统(程序+数据库+报告+部署教程+答辩指导)

源代码数据库LW文档&#xff08;1万字以上&#xff09;开题报告答辩稿ppt部署教程代码讲解代码时间修改工具 技术实现 开发语言&#xff1a;后端&#xff1a;Java 前端&#xff1a;vue框架&#xff1a;springboot数据库&#xff1a;mysql 开发工具 JDK版本&#xff1a;JDK1.…

YOLOv12_ultralytics-8.3.145_2025_5_27部分代码阅读笔记-augment.py

augment.py ultralytics\data\augment.py 目录 augment.py 1.所需的库和模块 2.class BaseTransform: 3.class Compose: 4.class BaseMixTransform: 5.class CutMix(BaseMixTransform): 6.class CopyPaste(BaseMixTransform): 7.def v8_transforms(dataset, img…

跨芯片 AI 算子库 FlagGems 正式加入PyTorch 基金会生态项目体系

2025年北京智源大会 PyTorch Day China 论坛上&#xff0c;PyTorch 基金会执行董事 Matt White 宣布高性能通用 AI 算子库 FlagGems 项目获得批准&#xff0c;正式加入 PyTorch 生态项目体系。Pytorch基金会于6月26日在推特上进行了官方宣布。 作为唯一支持多种AI芯片架构的算…

vue + vue-router写登陆验证的同步方法和异步方法,及页面组件的分离和后端代码

先写一个用vue cdn写一个登陆验证的小示例后端代码 前端719.html <div id"app"><div id"loginForm">//路由层&#xff0c;登陆页和后台主页<router-link to"/">Login</router-link><router-link to"/home&quo…

.netcore 一个mvc到静态html实现

一、新建Mvc项目 Program.cs添加拦截 二、添加一个集成测试 将页面转为html到wwwroot下面 UnitGenHtml.cs using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc.Testing; using Microsoft.VisualStudio.TestPlatform.TestHost;namespace SaaS.OfficialWeb…

实现Taro小程序+nut-ui左滑删除效果

Taro小程序开发中&#xff0c;使用nut-ui组件&#xff0c;实现左滑删除卡片效果&#xff08;自定义删除按钮样式&#xff09; html代码部分 <nut-swipe class"carBox" v-for"(item, index) in carList" :key"item" :ref"(el) > se…

LLM 系列(五):模型训练篇

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…

Oracle LogMiner分析日志的三种方法示例

Oracle LogMiner分析日志的三种方法示例 方法一:Online Catalog作为日志挖掘字典自动获取日志模式手动获取日志模式方法二:Redo Log作为日志挖掘字典自动获取日志模式手动获取日志模式方法三:Flat File作为日志挖掘字典自动获取日志模式手动获取日志模式📖 Oracle LogMine…

Java 中 List.stream() 的全面使用指南(含完整示例)

标签&#xff1a;Java8, Stream API, 函数式编程, 集合操作 一、前言 随着 Java 8 的推出&#xff0c;Stream API 成为了处理集合数据的一种高效方式。List.stream() 是 Java Stream API 的入口方法之一&#xff0c;它允许开发者将集合转换为流&#xff0c;并通过链式调用实现…

香港 8C 站群服务器买来可以做哪些业务?

香港8C站群服务器&#xff08;即提供8个不同C段IP地址的服务器&#xff09;凭借多IP独立分配、低延迟网络及免备案优势&#xff0c;适用于以下关键业务场景&#xff1a; 一、SEO优化与搜索引擎运营 SEO站群搭建&#xff1a;为 80-100 个网站分配 8 个不同 C 段 IP &#xff0…

UI前端与数字孪生融合新趋势:智慧医疗的可视化诊断辅助

hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 一、引言&#xff1a;数字孪生重塑智慧医疗诊断范式 在医疗数字化转型的浪潮中&#xff0c;数…

OpenBayes 一周速览丨Nanonets-OCR-s深度语义理解,精准结构化转换;HLE人类问题推理基准上线,含2.5k题目,助力封闭式评估体系构建

公共资源速递 5 个公共数据集&#xff1a; * Brain Tumor 脑肿瘤数据集 * HLE 人类问题推理基准数据集 * OpenThoughts3-1.2M 推理数据集 * Nemotron-Personas 人物角色数据集 * OpenMathReasoning 数学推理数据集 14 个公共教程&#xff1a; 音频生成 * 2 视频生成 *…