从零到一:基于 K3s 快速搭建本地化 kubeflow AI 机器学习平台
背景
Kubeflow 是一种开源的 Kubernetes 原生框架,可用于开发、管理和运行机器学习工作负载,支持诸如 PyTorch、TensorFlow 等众多优秀的机器学习框架,本文介绍如何在 Mac 上搭建本地化的 kubeflow 机器学习平台。
注意:本文以 deyloyKF 发行版作为主要安装对象,本地环境仅适用于开发测试使用,不可用于生产环境!
更多 kubeflow 发行版参考官网介绍:https://www.kubeflow.org/docs/started/installing-kubeflow/
基本环境:
OS:macos 13.1 (amd64)
DockerDesktop:v4.15.0
尽管 K3s 自身需要的资源不多,但是 kubeflow 套件组件众多,需要设置 Docker 的资源分配,避免安装过程中发生 Pod Pending.
Docker 资源建议设置:CPU 8 核,Memory 10G,磁盘 40G
安装部署步骤
1. 安装依赖的 CLI
brew install bash argocd jq k3d kubectl kustomize
2. 创建 Kubernetes 集群
为了尽可能降低资源消耗,这里使用 K3s 运行本地集群:
k3d cluster create "kubeflow" --image "rancher/k3s:v1.27.10-k3s2"
通过如下命令检查集群是否就绪:
kubectl get -A pods
正常的输出结果类似如下这样:
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system local-path-provisioner-957fdf8bc-cj9l5 1/1 Running 0 2m30s
kube-system coredns-77ccd57875-xzzz4 1/1 Running 0 2m30s
kube-system metrics-server-648b5df564-gwnhq 1/1 Running 0 2m30s
kube-system helm-install-traefik-crd-49l4k 0/1 Completed 0 2m31s
kube-system helm-install-traefik-xrjtd 0/1 Completed 2 2m31s
kube-system svclb-traefik-a79cf0ef-lj4td 2/2 Running 0 89s
kube-system traefik-768bdcdcdd-mr8z8 1/1 Running 0 89s
3. 部署 ArgoCD
ArgoCD 是工作流编排工具,可以帮助我们实现 Kubeflow 的自动化部署
git clone -b main https://github.com/deployKF/deployKF.git
cd deployKF/argocd-plugin
chmod +x ./install_argocd.sh
bash ./install_argocd.sh
通过如下命令检查 ArgoCD 是否就绪:
kubectl get pod -n argocd
正常的输出结果类似如下这样:
NAME READY STATUS RESTARTS AGE
argocd-redis-69f8795dbd-7v4nn 1/1 Running 0 106s
argocd-applicationset-controller-7b9c4dfb77-7gsf2 1/1 Running 0 106s
argocd-notifications-controller-756764ddd5-jw92c 1/1 Running 0 106s
argocd-server-86f64667bc-7nt7d 1/1 Running 0 105s
argocd-application-controller-0 1/1 Running 0 105s
argocd-dex-server-9b5c6dccd-2p779 1/1 Running 0 106s
argocd-repo-server-5b55578f7c-sfzf4 2/2 Running 0 105s
4. 安装 kubeflow 套件
准备如下文件:deploykf-app-of-apps.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:name: deploykf-app-of-appsnamespace: argocdlabels:app.kubernetes.io/name: deploykf-app-of-appsapp.kubernetes.io/part-of: deploykf
spec:project: "default"source:## source git repo configuration## - we use the 'deploykf/deploykf' repo so we can read its 'sample-values.yaml'## file, but you may use any repo (even one with no files)##repoURL: "https://github.com/deployKF/deployKF.git"targetRevision: "v0.1.4"path: "."## plugin configuration##plugin:name: "deploykf"parameters:## the deployKF generator version## - available versions: https://github.com/deployKF/deployKF/releases##- name: "source_version"string: "0.1.4"## paths to values files within the `repoURL` repository## - the values in these files are merged, with later files taking precedence## - we strongly recommend using 'sample-values.yaml' as the base of your values## so you can easily upgrade to newer versions of deployKF##- name: "values_files"array:- "./sample-values.yaml"## a string containing the contents of a values file## - this parameter allows defining values without needing to create a file in the repo## - these values are merged with higher precedence than those defined in `values_files`##- name: "values"string: |#### This demonstrates how you might structure overrides for the 'sample-values.yaml' file.## For a more comprehensive example, see the 'sample-values-overrides.yaml' in the main repo.#### Notes:## - YAML maps are RECURSIVELY merged across values files## - YAML lists are REPLACED in their entirety across values files## - Do NOT include empty/null sections, as this will remove ALL values from that section.## To include a section without overriding any values, set it to an empty map: `{}`#### --------------------------------------------------------------------------------## argocd## --------------------------------------------------------------------------------argocd:namespace: argocdproject: default## --------------------------------------------------------------------------------## kubernetes## --------------------------------------------------------------------------------kubernetes:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!## --------------------------------------------------------------------------------## deploykf-dependencies## --------------------------------------------------------------------------------deploykf_dependencies:## --------------------------------------## cert-manager## --------------------------------------cert_manager:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!## --------------------------------------## istio## --------------------------------------istio:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!## --------------------------------------## kyverno## --------------------------------------kyverno:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!## --------------------------------------------------------------------------------## deploykf-core## --------------------------------------------------------------------------------deploykf_core:## --------------------------------------## deploykf-auth## --------------------------------------deploykf_auth:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!## --------------------------------------## deploykf-istio-gateway## --------------------------------------deploykf_istio_gateway:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!## --------------------------------------## deploykf-profiles-generator## --------------------------------------deploykf_profiles_generator:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!## --------------------------------------------------------------------------------## deploykf-opt## --------------------------------------------------------------------------------deploykf_opt:## --------------------------------------## deploykf-minio## --------------------------------------deploykf_minio:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!## --------------------------------------## deploykf-mysql## --------------------------------------deploykf_mysql:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!## --------------------------------------------------------------------------------## kubeflow-tools## --------------------------------------------------------------------------------kubeflow_tools:## --------------------------------------## katib## --------------------------------------katib:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!## --------------------------------------## notebooks## --------------------------------------notebooks:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!## --------------------------------------## pipelines## --------------------------------------pipelines:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!destination:server: "https://kubernetes.default.svc"namespace: "argocd"
执行如下命令,部署工作流:
kubectl apply -f ./deploykf-app-of-apps.yaml
通过 UI 界面查看 ArgoCD 状态:
kubectl port-forward --namespace "argocd" svc/argocd-server 8090:https
浏览器打开 https://localhost:8090/
,用户名:admin,密码可通过如下命令获取:
echo $(kubectl -n argocd get secret/argocd-initial-admin-secret \-o jsonpath="{.data.password}" | base64 -d)
由于程序间存在依赖关系,可以通过如下脚本按序执行 Sync 操作:
git clone -b main https://github.com/deployKF/deployKF.git
cd deployKF/scripts
chmod +x ./sync_argocd_apps.sh
bash ./sync_argocd_apps.sh
该脚本是幂等的,失败后可反复执行直到部署成功,成功部署后的运行中 Pod 列表类似如下这样:
NAMESPACE NAME READY STATUS RESTARTS AGE
argocd argocd-redis-69f8795dbd-x5wtv 1/1 Running 5 (17m ago) 105m
argocd argocd-server-86f64667bc-zfm7m 1/1 Running 4 (17m ago) 73m
argocd argocd-repo-server-5b55578f7c-x26zz 2/2 Running 10 (17m ago) 91m
argocd argocd-notifications-controller-756764ddd5-2fqbr 1/1 Running 5 (17m ago) 89m
argocd argocd-dex-server-9b5c6dccd-bl86m 1/1 Running 5 (17m ago) 91m
argocd argocd-application-controller-0 1/1 Running 5 (17m ago) 91m
argocd argocd-applicationset-controller-7b9c4dfb77-hph2r 1/1 Running 5 (17m ago) 105m
cert-manager cert-manager-c688c56f-w4jts 1/1 Running 5 (17m ago) 109m
cert-manager trust-manager-78766fd9bd-zd5zf 1/1 Running 5 (17m ago) 90m
cert-manager cert-manager-webhook-d45447457-q6cf8 1/1 Running 6 (17m ago) 109m
cert-manager cert-manager-cainjector-59d694bcc7-mrcvg 1/1 Running 6 (17m ago) 109m
deploykf-auth oauth2-proxy-5fd9888b79-tpnrt 2/2 Running 11 (16m ago) 73m
deploykf-auth dex-68c8bf56b9-78d5g 2/2 Running 8 (17m ago) 73m
deploykf-dashboard profile-controller-5575767c76-vshp2 2/2 Running 8 (17m ago) 73m
deploykf-dashboard kfam-api-75b64c9645-sjfcq 2/2 Running 10 (17m ago) 98m
deploykf-dashboard central-dashboard-6b5d9574dc-fmlt4 2/2 Running 10 (17m ago) 98m
deploykf-istio-gateway deploykf-gateway-6ddf8947cc-qz55g 1/1 Running 5 (17m ago) 98m
deploykf-minio deploykf-minio-568b877668-w2wct 2/2 Running 5 (17m ago) 52m
deploykf-mysql deploykf-mysql-0 1/1 Running 5 (17m ago) 109m
istio-system istiod-7b9b6df595-jbztw 1/1 Running 5 (17m ago) 91m
kube-system svclb-deploykf-gateway-7f7cba3a-kkskn 3/3 Running 15 (17m ago) 100m
kube-system metrics-server-648b5df564-gwnhq 1/1 Running 9 (17m ago) 5h43m
kube-system local-path-provisioner-957fdf8bc-cj9l5 1/1 Running 7 (17m ago) 5h43m
kube-system coredns-77ccd57875-xzzz4 1/1 Running 7 (17m ago) 5h43m
kube-system traefik-768bdcdcdd-mr8z8 1/1 Running 7 (17m ago) 5h42m
kube-system svclb-traefik-a79cf0ef-6ksjm 2/2 Running 10 (17m ago) 100m
kubeflow katib-controller-75858c4ddf-hwvkx 1/1 Running 8 (17m ago) 95m
kubeflow ml-pipeline-ui-68b7f6586d-qtjp5 2/2 Running 15 (17m ago) 94m
kubeflow ml-pipeline-persistenceagent-68bbd65f98-tsnqn 2/2 Running 10 (17m ago) 94m
kubeflow katib-ui-d4df8bdb6-2x75p 2/2 Running 10 (17m ago) 95m
kubeflow ml-pipeline-6445d9fb77-dxgv4 2/2 Running 24 (16m ago) 94m
kubeflow admission-webhook-deployment-789dc56fbf-z7cj8 1/1 Running 5 (17m ago) 94m
kubeflow metadata-writer-6f95b9588c-fmx4s 2/2 Running 8 (17m ago) 73m
kubeflow notebook-controller-deployment-649cf9b976-vnvwd 2/2 Running 10 (17m ago) 95m
kubeflow training-operator-7cf5c66858-jf5sr 1/1 Running 3 (17m ago) 43m
kubeflow tensorboards-web-app-deployment-778466f5f6-dmrks 2/2 Running 2 (17m ago) 43m
kubeflow tensorboard-controller-deployment-644f57dd7c-zlxnw 3/3 Running 24 (17m ago) 92m
kubeflow ml-pipeline-scheduledworkflow-578475988-kwz27 2/2 Running 10 (17m ago) 94m
kubeflow volumes-web-app-deployment-588d46bb75-95g6b 2/2 Running 2 (17m ago) 42m
kubeflow ml-pipeline-viewer-crd-6857ccc85c-zl895 2/2 Running 10 (17m ago) 94m
kubeflow metadata-grpc-deployment-566d54d578-wwj9n 2/2 Running 23 (16m ago) 94m
kubeflow ml-pipeline-visualizationserver-7b45b7fd56-s4pxh 2/2 Running 15 (17m ago) 94m
kubeflow cache-server-66d7586749-prmkq 2/2 Running 10 (17m ago) 94m
kubeflow jupyter-web-app-deployment-9c8c779c-hcqvr 2/2 Running 15 (17m ago) 91m
kubeflow katib-db-manager-6998f5bdd8-lrs77 1/1 Running 5 (17m ago) 95m
kubeflow metadata-envoy-deployment-b48db5966-542nh 1/1 Running 5 (17m ago) 94m
kubeflow-argo-workflows argo-workflow-controller-79fc5c6895-2g26t 2/2 Running 10 (17m ago) 98m
kubeflow-argo-workflows argo-server-6d97fb7649-lsfdw 2/2 Running 5 (16m ago) 73m
kyverno kyverno-cleanup-controller-6cb4d5848-hh8nm 1/1 Running 5 (17m ago) 109m
kyverno kyverno-admission-controller-964c74c7d-frknb 1/1 Running 5 (17m ago) 109m
kyverno kyverno-background-controller-796f77c79f-nwhrs 1/1 Running 5 (17m ago) 109m
kyverno kyverno-reports-controller-6d6d98fc96-z7qjv 1/1 Running 5 (17m ago) 109m
kyverno kyverno-admission-controller-964c74c7d-hgtc2 1/1 Running 4 (17m ago) 109m
kyverno kyverno-admission-controller-964c74c7d-x744h 1/1 Running 5 (17m ago) 109m
team-1 ml-pipeline-visualizationserver-677c86b748-nbrr5 2/2 Running 2 (17m ago) 73m
team-1 ml-pipeline-ui-artifact-7749b4f5f6-ld7kl 2/2 Running 10 (17m ago) 94m
team-1-prod ml-pipeline-visualizationserver-677c86b748-hqwsh 2/2 Running 2 (17m ago) 73m
team-1-prod ml-pipeline-ui-artifact-7749b4f5f6-hl6gk 2/2 Running 10 (17m ago) 94m
同步完成后的 ArgoCD 界面(完成 20 个应用同步):
5. 访问控制台
执行端口转发:
kubectl port-forward \--namespace "deploykf-istio-gateway" \svc/deploykf-gateway 8080:http 8443:https
由于 Istio Gateway 基于 Host Header 区分访问的目标服务,因此需要配置本地 /etc/hosts 文件,追加如下内容:
127.0.0.1 deploykf.example.com
127.0.0.1 argo-server.deploykf.example.com
127.0.0.1 minio-api.deploykf.example.com
127.0.0.1 minio-console.deploykf.example.com
浏览器访问 https://deploykf.example.com:8443/
管理员:用户名 admin@example.com 密码 admin
用户 1: 用户名 user1@example.com 密码 user1
用户 2: 用户名 user2@example.com 密码 user2
6. 运行 Jupyter
更多功能持续探索中…
本文引用
https://www.deploykf.org/guides/local-quickstart/
相关文章:

从零到一:基于 K3s 快速搭建本地化 kubeflow AI 机器学习平台
背景 Kubeflow 是一种开源的 Kubernetes 原生框架,可用于开发、管理和运行机器学习工作负载,支持诸如 PyTorch、TensorFlow 等众多优秀的机器学习框架,本文介绍如何在 Mac 上搭建本地化的 kubeflow 机器学习平台。 注意:本文以 …...

kettle使用MD5加密增量获取接口数据
kettle使用MD5加密增量获取接口数据 场景介绍: 使用JavaScript组件进行MD5加密得到Http header,调用API接口增量获取接口数据,使用json input组件解析数据入库 案例适用范围: MD5加密可参考、增量过程可参考、调用API接口获取…...

PS入门|黑白色的图标怎么抠成透明背景
前言 抠图可以算是PS的入门必备操作,开始学习PS的小伙伴可以根据本帖子推荐一步步学习哦!但切勿心急~ 今天给小伙伴们带来:黑白色的图标抠图教程 抠图有很多种方法,但根据类型的不同,使用适当的方法很重…...
android 14 apexd分析(2)apexd 启动
1. class main进程一起启动, apexservice是他提供的binderservice,这也第二阶段的最主要的作用 /system/apex/apexd/apexd.rc?r3c8e8603c640fc41e0406ddcf981381803447cfb#1 1 service apexd /system/bin/apexd 2 interface aidl apexservice …...

微信小程序怎么制作?制作一个微信小程序需要多少钱?
随着移动互联网的快速发展,微信小程序已成为连接用户与服务的重要桥梁。它以其便捷性和易用性,为各类企业和个人提供了一个全新的展示和交易平台。那么,如何制作一个微信小程序?又需要投入多少资金呢?本文将为您提供全…...

WPS二次开发专题:如何获取应用签名SHA256值
作者持续关注WPS二次开发专题系列,持续为大家带来更多有价值的WPS开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(QQ:250325397) 在申请WPS SDK授权版时候需要开发者提供应用包名和签…...
Flink SQL系列之:基于Flink SQL查询Topic中序列化的Debezium数据格式字段
Flink SQL系列之:基于Flink SQL查询Topic中序列化的Debezium数据格式字段 一、表结构二、查询Topic中表的数据三、反序列化字段一、表结构 CREATE TABLE IF NOT EXISTS record_rt (id decimal(20,0) COMMENT "主键",follow_entity_type <...
【WPF应用30】WPF中的ListBox控件详解
WPF(Windows Presentation Foundation)是.NET框架的一个组成部分,用于构建桌面应用程序的用户界面。ListBox是WPF中一个非常常用的控件,用于显示一系列的项,用户可以选择单个或多个项。 1.ListBox的基本概念 ListBox…...

Chatgpt掘金之旅—有爱AI商业实战篇(二)
演示站点: https://ai.uaai.cn 对话模块 官方论坛: www.jingyuai.com 京娱AI 一、前言: 成为一名商业作者是一个蕴含着无限可能的职业选择。在当下数字化的时代,作家们有着众多的平台可以展示和推广自己的作品。无论您是对写书、文…...
AGI时代,LLM可以在AutoML哪些环节进行增强?
当下大模型技术发展如火如荼,颇有改变各行业和各领域的架势。那么对于AutoML来讲,LLM对其有哪些助力?对于这个问题,我们来问一问kimi chat,看看它怎么回答? 大型语言模型(LLM)可以在…...

算法练习—day1
title: 算法练习—day1 date: 2024-04-03 21:49:55 tags: 算法 categories:LeetCode typora-root-url: 算法练习—day1 网址:https://red568.github.io 704. 二分查找 题目: 题目分析: 左右指针分别为[left,right],每次都取中…...

关于ansible的模块 ③
转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 接《关于Ansible的模块①》和《关于Ansible的模块②》,继续学习ansible的user模块。 user模块可以增、删、改linux远…...

Spring Boot--文件上传和下载
文件上传和下载 前言文件上传1、以MultipartFile 接口流文件,流的名称需要和前台传过来的名称对应上2、获取到文件名称截取后缀3、为了放置文件名重复使用uuid来随机生成id后缀4、判断转存路径中是否有这个文件夹如果没有就创建5、将文件存储到转存的目录中 文件下载…...

hexo博客7:构建简单的多层安全防御体系
【hexo博客7】构建简单的多层安全防御体系 写在最前面理解全面安全策略的重要性防御常见的网络攻击1. SQL注入攻击2. 文件上传漏洞3. 跨站脚本攻击(XSS)4. 跨站请求伪造(CSRF)5. 目录遍历/本地文件包含(LFI/RFI&#x…...

《捕鱼_ue4-5输出带技能的透明通道素材到AE步骤》
《捕鱼_ue4-5输出带技能的透明通道素材到AE步骤》 2022-05-17 11:06 先看下带透明的特效素材效果1、首先在项目设置里搜索alpha,在后期处理标签设置最后一项allow through tonemapper2、在插件管理器中,搜索movie render ,加载movie render q…...

(免费分享)基于微信小程序自助停取车收费系统
本项目的开发和制作主要采用Java语言编写,SpringBoot作为项目的后端开发框架,vue作为前端的快速开发框架,主要基于ES5的语法,客户端采用微信小程序作为开发。Mysql8.0作为数据库的持久化存储。 获取完整源码: 大家点赞…...

Vue3_2024_7天【回顾上篇watch常见的后两种场景】___续
Vue3中监听多条数据的两种使用 1.watch【使用上一章写法,监听两个属性,然后执行相应操作…】 2.watchEffect【相对于使用watch,watchEffect默认页面初始加载,有点类似加配置:立即执行 immediate】 代码: …...

Gemini即将收费,GPT无需注册?GPT3.5白嫖和升级教程
🌐Gemini 即将开始收费 开发者“白嫖”的好日子到头了 - Gemini将开始收费,影响使用Google AI for Developers提供的Gemini API的用户。 - Gemini API将引入按量付费定价,需要注意新的服务条款。 - 用户需在5月2日之前停止使用Gemini API和Go…...

【协议篇:Http与Https】
1. Http 1.1 Http的定义 超文本传输协议(Hypertext Transfer Protocol,HTTP)是用于分布式、协作式和超媒体信息系统的应用层协议。它是互联网上最广泛应用的数据通信协议之一,尤其对于万维网(WWW)服务而言…...
WPS二次开发系列:WPS SDK初始化
作者持续关注WPS二次开发专题系列,持续为大家带来更多有价值的WPS开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(QQ:250325397) 本文将详细介绍WPS SDK初始化,帮您能够更…...

Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...

SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...