OpenShift 4 - 使用辅助安装器安装单节点 OpenShift
文章目录
- 单节点 OpenShift 和 OpenShift 辅助安装器
- 单节点 OpenShift
- OpenShift 辅助安装器
- 使用辅助安装器安装单节点 OpenShift
- 本文使用的安装环境
- 准备环境
- 在宿主机上安装 KVM 环境
- 创建 SSH 证书
- 根据集群配置,用辅助安装器生成 Discovery ISO
- 用 Discovery ISO 启动 VM,完成安装过程
- 后续配置和操作
- 安装并设置 DNS 服务
- 访问集群
- 登陆访问 OpenShift 节点
- 启动和关闭集群
- 启动处理
- 关闭集群
- 演示视频
- 参考
单节点 OpenShift 和 OpenShift 辅助安装器
单节点 OpenShift
单节点 OpenShift 指的是 OpenShift 集群只有一个节点,Master 和 Worker 都运行在该节点上。单节点 OpenShift 的运行方式比较适合边缘计算中 Far Edge 环境,另外还可以在 Development 或 Testing 环境中使用。
我们可以在虚机或裸机上安装单节点 OpenShift,其中在 Far Edge 环境中运行更适合裸机部署单节点 OpenShift,而 Development 或 Testing 环境可以用虚机部署单节点 OpenShift。在虚机中安装好的单节点 OpenShift 同红帽的 OpenShift Local 环境非常相近,它们都是运行在虚机中,而且都是只有一个节点。
OpenShift 辅助安装器
OpenShift 辅助安装器是一个可帮助用户简化在线安装 OpenShift 的工具。用户在 RedHat 网站 OpenShift 辅助安装器的向导中提供适当的集群信息后便可得到一个包含安装配置+RHCOS 的 ISO 文件。当我们使用这个 ISO 启动节点后,节点会自动连接到 RedHat 网站并完成后续安装步骤。这样就能比较方便快捷地安装好一个 OpenShift 环境。
OpenShift 辅助安装器既可用来安装单节点 OpenShift,也可用来安装标准的多节点 OpenShift 集群。
使用辅助安装器安装单节点 OpenShift
本文使用的安装环境
本文将使用 KVM 虚机部署单节点 OpenShift,以下是运行 KVM 的宿主机配置:
- 裸机硬件:8 vCPU + 16 G 内存
- OS 软件:RHEL 7(或 CentOS 7)+ 桌面环境 + KVM 虚拟化环境 + 版本较新的 Chrome 或 Edge 浏览器
- OS IP:固定 IP - 192.168.1.41/24,Gateway - 192.168.1.1,DNS - 192.168.1.1
说明:如果要直接在裸机上运行 OpenShift,需在后续步骤中先使用下载的 ISO 文件制作启动盘,然后启动裸机完成安装。
准备环境
在宿主机上安装 KVM 环境
在宿主机上执行命令即可安装 KVM 环境。
$ sudo yum install -y virt-* libvirt qemu-img
创建 SSH 证书
在宿主机上执行命令生成 SSH 证书密钥对,其中 id_rsa.pub 是公钥。该证书用来远程登陆访问运行 OpenShift 的节点。
$ ssh-keygen -N ''
$ more ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKQh4w4FBEPs5wk/0tVZVZ/l8+AwJCWMWZOdp8geXRCaMztSpYNGrPZWLm/bAT7qUUlbLSohkY5ItpsC5Llh9goYv48Ii1cVYqsdnL5vrqZyuR4FkzCJl5gxuZpXHBIMNVfe6tLYFMV6gLQ5P28ESBRkW51plO8MDqybSt+Ny+ypViyGKuEr4gcl3nGwLGtElfeqd3tw6aG9ZBQi0EOrwXLNYDhlu/XbKXmXaQVEauN1nO3UBo5fnqMa7AJuUAh1XaJdqPxym7qwaEszob5zL35/2syQWfqjGD3Os3fi3AuXOGkpBoV+hmoTUDkxgRTm0CeQJvuL7Kr1gvFLKymfpj dawnsky@x1
根据集群配置,用辅助安装器生成 Discovery ISO
- 使用红帽用户登陆并访问 https://console.redhat.com/openshift/assisted-installer/clusters,然后点击 Create Clusters。

- 在 Install OpenShift with the Assisted Installer 页面的第 1 步中按下图提供或选择以下配置,然后点击 Next。
Cluster name
Base domain
OpenShift version
Install single node OpenShift (SNO)
DHCP only

- 在 Install OpenShift with the Assisted Installer 页面的第 2 步中直接点击 Next。说明:选装安装附加功能需要更多 CPU 和内存,本文的硬件不能选装这些附加功能。

- 在 Install OpenShift with the Assisted Installer 页面的第 3 步中点击 Add host。

- 在下图 Add host 窗口中填入前面步骤生成的 SSH 公钥,然后点击 Generate Discovery ISO,

- 下载 Discovery ISO 文件,将其保存到宿主机的 /var/lib/libvirt/images/ 目录下。

用 Discovery ISO 启动 VM,完成安装过程
- 在宿主机中执行以下命令运行 Virt Manager,然后在 Virt Manager 中创建一个新的虚拟机。
$ virt-manager
- 在 Create a new virtual machine 的第 1 步中选择 Local install media (ISO image or CDROM) 作为操作系统安装源。

- 在 Create a new virtual machine 的第 2 步中选择 Use ISO image,然后点击 Browse。

- 在 Choose Storage Volume 窗口选中 default 文件系统目录的 xxxx-discovery.iso 文件,然后点击 Choose Volume。

- 在 Create a new virtual machine 的第 2 步中点击 Forward。

- 在 Create a new virtual machine 的第 3 步按下图配置所需的最低 Memory 和 CPUs。

- 在 Create a new virtual machine 的第 4 步分配虚拟机使用的存储空间。

- 在 Create a new virtual machine 的第 5 步提供虚拟机名称,同时使用 Virtual network ‘default’ : NAT 作为网络配置。

- 完成后可看到以下 VM 的窗口。

- (可选)如果在前面生成 Discovery ISO 时选择了 Install Logical Volume Manager Storage,需按下图为 VM 创建第 2 个存储设备。

- 完成 VM 创建后启动它,启动完成后会看到下图窗口。

- 在宿主机上运行以下命令,可以看到上图 VM 操作系统的网络是运行在 virbr0 网桥所用网段。
$ ip a show type bridge
3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 52:54:00:3f:46:8d brd ff:ff:ff:ff:ff:ffinet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0valid_lft forever preferred_lft forever
后续配置和操作
- 在 Install OpenShift with the Assisted Installer 页面的第 3 步中等待在 Host inventory 中出现主机。

- 在 Install OpenShift with the Assisted Installer 页面的第 4 步查看主机的存储配置。

- 在 Install OpenShift with the Assisted Installer 页面的第 6 步确认所有配置,然后点击 Install cluster。

- 此时在节点开始安装 OpenShift。可以通过进程条了解安装进度,还可点击 View Cluster Events 来查看安装过程中的详细事件。

- 安装完成后将看到下图,其中 Web Console URL 是访问 OpenShift 控制台的地址。此时由于还不能解析该地址对应的域名而无法打控制台开页面。

安装并设置 DNS 服务
- 点开上图 Not enable to access the Web Console 连接,将显示以下提示。说明:可以用以下 2 种方法将 OpenShift 所用域名和 IP 地址对应起来,本文介绍第二种实现方法。

- 执行命令列出 connection 和对应的设备,其中上图的 IP 地址属于 virbr0 网桥网段。
$ nmcli connection
NAME UUID TYPE DEVICE
ChinaNet-YSHQ-5G 688a8258-4742-447d-9931-771b35b5a7b1 wifi wlp0s20f3
virbr0 6d1b3b66-a015-4969-9747-c067b0a5de09 bridge virbr0
vnet0 4863eb9f-51e1-4b1e-8999-54cfbf51f627 tun vnet0
- 创建 dns-sno.sh 文件,内容如下(可根据情况修改前 5 个变量内容)。该配置会在宿主机上安装配置 DNS 服务,然后将宿主机的 DNS 指向自己节点的 IP - 192.168.1.41。DNS 服务将解析单节点 OpenShift 使用的域名,其他域名将转发给 114.114.114.114 和 8.8.8.8 解析。
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
OCP_CLUSTER_NAME=ocp-sno
BASE_DOMAIN=ocp.com
CONNECTION_NAME=ChinaNet-YSHQ-5G
DNS_IP=192.168.1.41
OCP_IP=192.168.122.63
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
yum -y install bind bind-utils
systemctl enable named --nowcp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak
cp /etc/named.conf /etc/named.conf.baksed -i -e "s/listen-on port.*/listen-on port 53 { any; };/" /etc/named.conf
sed -i -e "s/allow-query.*/allow-query { any; };/" /etc/named.conf
sed -i '/recursion yes;/a \forward first; \forwarders { 114.114.114.114; 8.8.8.8; };' /etc/named.conf
sed -i -e "s/dnssec-enable.*/dnssec-enable no;/" /etc/named.conf
sed -i -e "s/dnssec-validation.*/dnssec-validation no;/" /etc/named.conf#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
cat >> /etc/named.rfc1912.zones << EOFzone "${OCP_CLUSTER_NAME}.${BASE_DOMAIN}" IN {type master;file "${OCP_CLUSTER_NAME}.${BASE_DOMAIN}.zone";allow-transfer { any; };
};EOF#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
cat > /var/named/${OCP_CLUSTER_NAME}.${BASE_DOMAIN}.zone << EOF
\$ORIGIN ${OCP_CLUSTER_NAME}.${BASE_DOMAIN}.
\$TTL 1D
@ IN SOA ${OCP_CLUSTER_NAME}.${BASE_DOMAIN}. admin.${OCP_CLUSTER_NAME}.${BASE_DOMAIN}. (0 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimum@ IN NS dns.${BASE_DOMAIN}.
api IN A ${OCP_IP}
api-int IN A ${OCP_IP}
*.apps IN A ${OCP_IP}EOF#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
nmcli connection modify ${CONNECTION_NAME} ipv4.dns ${DNS_IP}
systemctl restart NetworkManager
systemctl restart named
rndc reload
- 执行 dns-sno.sh 命令,然后可进行测试。
$ ./dns-sno.sh
$ ping www.redhat.com
$ ping api.sno.ocp.com
$ ping oauth-openshift.apps.sno.ocp.com
$ ping console-openshift-console.apps.sno.ocp.com
$ ping grafana-openshift-monitoring.apps.sno.ocp.com
$ ping thanos-querier-openshift-monitoring.apps.sno.ocp.com
$ ping prometheus-k8s-openshift-monitoring.apps.sno.ocp.com
$ ping alertmanager-main-openshift-monitoring.apps.sno.ocp.com
访问集群
说明:上一节为宿主机配置的 DNS 是将访问 OpenShift 的域名解析到该宿主机的 virbr0 网桥网段,进而从网桥进入到 VM 中。由于该 virbr0 网桥网段只在宿主机上效,因此只能从宿主机通过域名直接访问 OpenShift 控制台,而从宿主机以外无法通过域名直接访问到 OpenShift 控制台。
- 在宿主机中用浏览器中访问下图的 https://console-openshift-console.apps.sno.ocp.com。

- 点击上图 Download kubeconfig,下载文件保并将其保存为 ~/.kube/config 文件。
- 使用上图的 Username 和 Password 登陆 OpenShift Console。

- 根据下图,在下拉菜单中进入 “命令行工具”。

- 下载 oc for Linux 客户端程序到宿主机。

- 在宿主机上执行以下命令,为 oc 设置执行环境。最后确认可以通过 oc 获取到 OpenShift 集群中的项目信息。
$ tar -xvf oc.tar
$ sudo mv oc /usr/bin/
$ oc get project
NAME DISPLAY NAME STATUS
assisted-installer Active
default Active
kube-node-lease Active
kube-public Active
kube-system Active
openshift Active
......
登陆访问 OpenShift 节点
在宿主机上执行命令,可进入运行 OpenShift 的 VM 操作系统内部。
$ ssh -i ~/.ssh/id_rsa core@192.168.122.63
The authenticity of host '192.168.122.63 (192.168.122.63)' can't be established.
ECDSA key fingerprint is SHA256:uBLlWdC4pmdJ8jUs5ie9snpoXkhC7kzZ4CJoVKQzVfk.
ECDSA key fingerprint is MD5:d5:b8:c8:c9:48:22:d5:60:6a:1b:b0:a7:70:a3:43:a9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.122.63' (ECDSA) to the list of known hosts.
Red Hat Enterprise Linux CoreOS 412.86.202301311551-0Part of OpenShift 4.12, RHCOS is a Kubernetes native operating systemmanaged by the Machine Config Operator (`clusteroperator/machine-config`).WARNING: Direct SSH access to machines is not recommended; instead,
make configuration changes via `machineconfig` objects:https://docs.openshift.com/container-platform/4.12/architecture/architecture-rhcos.html---
启动和关闭集群
启动处理
启动 VM 就会自动运行 OpenShift。有些时候,在 VM 启动后 OpenShift 可能有新的 CSR(certificate signing requests) 需要处理,只有在处理完后 OpenShift 才能启动完成。
- 执行命令,查看当前是否有未处理的 CSR,如果有就 approve。
$ oc get csr
NAME AGE SIGNERNAME REQUESTOR REQUESTEDDURATION CONDITION
csr-2kzc6 9m34s kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper <none> Pending
csr-4n8vq 24m kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper <none> Pending
csr-jrrtd 27m kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper <none> Pending$ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs oc adm certificate approve
- 在 OpenShift 启动完后,确认所有 ClusterOperator 状态为 Available。
$ oc get co
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE
authentication 4.12.2 True False False 3d3h
baremetal 4.12.2 True False False 3d3h
cloud-controller-manager 4.12.2 True False False 3d3h
cloud-credential 4.12.2 True False False 3d4h
cluster-autoscaler 4.12.2 True False False 3d3h
config-operator 4.12.2 True False False 3d4h
console 4.12.2 True False False 3d3h
control-plane-machine-set 4.12.2 True False False 3d3h
csi-snapshot-controller 4.12.2 True False False 3d4h
dns 4.12.2 True False False 3d3h
etcd 4.12.2 True False False 3d4h
image-registry 4.12.2 True False False 3d3h
ingress 4.12.2 True False False 3d3h
insights 4.12.2 True False False 3d3h
kube-apiserver 4.12.2 True False False 3d3h
kube-controller-manager 4.12.2 True False False 3d3h
kube-scheduler 4.12.2 True False False 3d3h
kube-storage-version-migrator 4.12.2 True False False 3d4h
machine-api 4.12.2 True False False 3d3h
machine-approver 4.12.2 True False False 3d3h
machine-config 4.12.2 True False False 3d3h
marketplace 4.12.2 True False False 3d4h
monitoring 4.12.2 True False False 3d3h
network 4.12.2 True False False 3d4h
node-tuning 4.12.2 True False False 3d3h
openshift-apiserver 4.12.2 True False False 3d3h
openshift-controller-manager 4.12.2 True False False 3d3h
openshift-samples 4.12.2 True False False 3d3h
operator-lifecycle-manager 4.12.2 True False False 3d3h
operator-lifecycle-manager-catalog 4.12.2 True False False 3d3h
operator-lifecycle-manager-packageserver 4.12.2 True False False 3d3h
service-ca 4.12.2 True False False 3d4h
storage 4.12.2 True False False 3d3h
关闭集群
在宿主机上执行以下两段命令均可关闭 OpenShift 集群运行。
方法 1:
$ ssh -i ~/.ssh/id_rsa core@192.168.122.63
$ sudo shutdown -h now
方法 2:
$ oc get node
$ oc debug node/XXX
sh-4.4# chroot /host
sh-4.4# shutdown -h now
演示视频
视频
参考
https://cloud.redhat.com/blog/how-to-use-the-openshift-assisted-installer
https://jameswilkins.co.uk/install-openshift/
https://cloud.redhat.com/blog/meet-the-new-agent-based-openshift-installer-1
相关文章:
OpenShift 4 - 使用辅助安装器安装单节点 OpenShift
文章目录单节点 OpenShift 和 OpenShift 辅助安装器单节点 OpenShiftOpenShift 辅助安装器使用辅助安装器安装单节点 OpenShift本文使用的安装环境准备环境在宿主机上安装 KVM 环境创建 SSH 证书根据集群配置,用辅助安装器生成 Discovery ISO用 Discovery ISO 启动 …...
Allegro如何快速锁定整板测试点操作指导
Allegro如何快速锁定整板测试点操作指导 在做PCB设计的时候,会需要给整板添加测试点,用于飞针测试,如下图 在测试点添加好之后,文件输出之前需要把测试点全部锁定,避免因为测试点模具开好,测试点被移动的情况出现 如果逐个锁定Via,容易遗漏 Allegro支持快速锁定整板测…...
系统分析师---知识产权标准化思维导图
保护范围以及对象(3星) 著作权法:不用申请,作品完整即保护绘画摄影作品,原件持有人只是所有权与展览权,著作权归原作者 专利法:专利权需要申请商标法:商标权需要申请反不正当竞争法…...
HiEV洞察 | 特斯拉HW4.0再爆猛料,高精定位、雷达均有变动
作者 | 查理斯 编辑 | 王博特斯拉 HW4.0 消息传出后,有人爆料说在硬件层面发生了巨大变化,引发行业轰动。大家都在猜测HW4.0 具体做了哪些改动。 2月16日,Twitter用户greentheonly爆出HW4.0的主板拆解照片。2月18日又爆出毫米波雷达的拆解照片…...
潜伏的 Linux Rootkit:Syslogk
Rootkit 是非常危险的恶意软件,一旦侵入就很难被发现。开发 Rootkit 通常更加困难,很多攻击者都倾向于重用开源项目。 Adore-Ng 是一个相对较老的、开源的 Linux 内核 Rootkit,最初针对内核 2.x 版本开发,但目前已更新为针对内核…...
JVM总结
1. 内存结构 线程私有区 程序计算器 作用:是一块较小的内存空间,存储的是当前线程所执行的字节码文件的序号特点:线程私有,不会出现内存空间溢出 虚拟机栈 虚拟机栈是管理JAVA方法执行的内存模型,每个方法执行时都…...
AOF:redis宕机,如何避免数据丢失
由于redis是基于内存的数据库,一旦宕机,数据就会丢失?如何解决? 目前,Redis 的持久化主要有两大机制,即 AOF(Append Only File)日志和 RDB(Redis DataBase) 快照。 AO…...
LC-3—MIO、MMIO、Caller Save、Callee Save
LC-3—MMIO、Caller Save、Callee SaveMMIOCaller Save、Callee Save举个例子MMIO MMIO(Memory Mapped I/O)是一种在系统内存中映射I/O端口的技术,它允许设备直接访问内存中的特定地址,从而实现I/O操作。MMIO技术可以提高I/O操作…...
SQL注入报错注入之floor()报错注入原理分析
简介 对于SQL注入的报错注入通常有三个函数需要我们掌握: extractValue(xml_frag, xpath_expr)updateXML(xml_target, xpath_expr,new_xml)floor() 对于extractValue和updateXML函数来说比较好理解,就不做解释了,这里只对floor函数的报错注…...
2023CS双非保研985经验分享(南大、华科、中科大科学岛、国防科大、西交、中南、深圳大学、北邮、中科院等)
前言: 2022保研以来,因为自己的双非背景,要与985、211的排名靠前的计科大佬竞争,不自信、焦虑无时无刻的包围着我;所幸,一路以受到了许多学长、学姐耐心的帮助,也有很多保研的同学一路互相支撑。…...
Shell中的IFS
IFS是shell的内置变量,IFS是一个字符串,里面的每一个字符都会用来作为分隔符进行单词分割。 IFS变量只在当前shell起作用。 一、对$*的影响 先做参数替换把$*替换成参数列表。相当于args[] 然后下面分两种情况: (1)…...
Java学习线路图--书籍推荐
----基础---- 《Java从入门到精通》 ----进阶---- 一 《Java项目开发全程实录》《Java开发实例大全(基础篇)》《Java开发实例大全(提高篇)》 二 《Java Web从入门到精通》《Java Web项目开发全程实录》《Java Web开发实例大…...
【GO】k8s 管理系统项目23[前端部分–工作负载-Pod]
k8s 管理系统项目[前端部分–工作负载-Deployment] 1. 代码部分 1.1 准备工作 由于Pod页面和Deployment内容差不多.那么就直接把Deployment的内容复制过来.再做修改. 替换Deployment为Pod替换Deploy为Pod替换deployment为pod替换deploy为pod禁用新增的按钮,删除新增方法,表…...
rabbitmq在linux系统下安装步骤
第一步:登录官网 官网地址:www.rabbitmq.com,点击Get Started 重要信息:RabbitMQ Tutorials手册,描述了工作模式 第二步:点击Download Installation下载 重要信息:rabbitmq是用erlang语言开发的࿰…...
阿里测试员晒薪资条,看完真的扎心了...
前几天,有位老粉私信我,说看到某95后学弟晒出阿里的工资单,他是真酸了…想狠补下技术,努力冲一把大厂。 为了帮到他,也为了大家能在最短的时间内做面试复习,我把软件测试面试系列都汇总在这一篇文章了。 …...
内网渗透辅助工具集Yasso
目录 介绍 工具优势 程序功能模块 目前已有用功能模块 使用例子 工具下载</...
Spring笔记(1):概述
1、什么是Spring? Spring是最受欢迎的企业级Java应用程序开发框架,使用它创建性能好、易于测试、可重用的代码。Spring是一种轻量级的框架。Spring框架的核心特性是开发任何Java应用程序,其目标是使得J2EE开发变得更容易,通过启用…...
工程机械焊接件焊接结构件三维扫描检测外观质量控制-CASAIM三维扫描检测仪
焊接已发展为制造业中的一种重要的加工方法,广泛应用于航空、航天、冶金、石油、汽车制造以及国防等领域。工程机械焊接件品种繁多、几何形状复杂,焊接件质量的好坏将直接影响到产品的使用寿命长短。对焊缝表面尺寸测量及评定表面焊缝缺陷时,…...
使用linux部署项目步骤
文章目录前言一、服务器环境配置二、数据库导入三、项目打包1、修改项目中的访问路径2、修改db.properties的数据库访问路径3、打包4、修改配置,启动服务四、测试总结前言 今天学习了在服务器中部署项目,记录一下 一、服务器环境配置 首先要安装VMware&…...
pt02-list-tuple-dir
容器类型 通用操作 数学运算符 (1) 用于拼接两个容器 (2) 用原容器与右侧容器拼接,并重新绑定变量 (3) * 重复生成容器元素 (4) * 用原容器生成重复元素, 并重新绑定变量 (5) !:依次比较两个容器中元素,一但不同则返回比较结果。< < > > 意…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...
【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)
旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据!该数据集源自2025年4月发表于《地理学报》的论文成果…...
【Redis】Redis 的持久化策略
目录 一、RDB 定期备份 1.2 触发方式 1.2.1 手动触发 1.2.2.1 自动触发 RDB 持久化机制的场景 1.2.2.2 检查是否触发 1.2.2.3 线上运维配置 1.3 检索工具 1.4 RDB 备份实现原理 1.5 禁用 RDB 快照 1.6 RDB 优缺点分析 二、AOF 实时备份 2.1 配置文件解析 2.2 开启…...
