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

k8s中service概述(二)NodePort

NodePort 是 Kubernetes 中一种用于对外暴露服务的 Service 类型。它通过在集群的每个节点上开放一个静态端口(NodePort),使得外部用户可以通过节点的 IP 地址和该端口访问集群内部的服务。以下是关于 NodePort Service 的详细说明:


1. NodePort 的核心功能
  • 外部访问:NodePort 允许外部用户通过集群中任意节点的 IP 地址和指定的端口访问服务。

  • 端口映射:NodePort 会在每个节点上开放一个静态端口(默认范围是 30000-32767),并将该端口的流量转发到后端的 Pod。

  • 负载均衡:与 ClusterIP 类似,NodePort 也会自动将流量负载均衡到后端的多个 Pod。

  • 集群内部访问:NodePort Service 也会分配一个 ClusterIP,因此集群内部仍然可以通过 ClusterIP 访问服务。


2. NodePort 的工作原理

NodePort 的实现依赖于 Kubernetes 的网络模型和核心组件:

  1. Service 创建

    • 当创建一个 NodePort Service 时,Kubernetes 会为其分配一个 ClusterIP,并在每个节点上开放一个静态端口(NodePort)。

    • NodePort 的默认范围是 30000-32767,但可以手动指定。

  2. Endpoints 创建

    • 与 ClusterIP 类似,Kubernetes 会自动创建与 Service 同名的 Endpoints 对象,其中包含所有匹配 selector 的 Pod 的 IP 和端口。

  3. kube-proxy 的作用

    • 每个节点上的 kube-proxy 组件会监听 Service 和 Endpoints 的变化。

    • kube-proxy 通过以下方式实现流量转发:

      • iptables 模式:在节点上配置 iptables 规则,将流量从 NodePort 转发到后端 Pod。

      • IPVS 模式:使用更高效的 IPVS 实现流量转发。

    • 无论使用哪种模式,kube-proxy 都会确保流量被正确负载均衡到后端 Pod。

  4. 外部访问

    • 外部用户可以通过任意节点的 IP 地址和 NodePort 访问服务。

    • 例如,如果 NodePort 为 31000,节点的 IP 地址为 192.168.1.100,则外部用户可以通过 http://192.168.1.100:31000 访问服务。


3. NodePort 的配置示例

以下是一个典型的 NodePort Service 的 YAML 配置文件:

apiVersion: v1
kind: Service
metadata:name: my-service  # Service 名称namespace: default  # 命名空间,默认为 default
spec:type: NodePort  # Service 类型selector:app: my-app  # 选择标签为 app=my-app 的 Podports:- protocol: TCP  # 协议类型,支持 TCP、UDP、SCTPport: 80  # Service 暴露的端口targetPort: 9376  # 后端 Pod 的端口nodePort: 31000  # 手动指定的 NodePort,范围为 30000-32767
  • selector:用于选择后端 Pod,只有匹配标签的 Pod 才会被纳入 Service 的后端。

  • ports

    • port:Service 暴露的端口,集群内的其他服务通过该端口访问 Service。

    • targetPort:后端 Pod 实际监听的端口。

    • nodePort:手动指定的 NodePort,范围为 30000-32767。如果不指定,Kubernetes 会自动分配一个可用的端口。

  • type:Service 类型,这里设置为 NodePort


4. NodePort 的使用场景

NodePort 适用于以下场景:

  1. 开发和测试环境

    • 在开发和测试环境中,NodePort 可以快速暴露服务,方便外部访问和调试。

  2. 小型生产环境

    • 在小型生产环境中,如果没有负载均衡器,可以使用 NodePort 暴露服务。

  3. 特殊需求

    • 某些场景下,可能需要直接通过节点的 IP 地址访问服务,例如某些网络设备或旧系统。

  4. 与 LoadBalancer 结合使用

    • 在云环境中,NodePort 通常与 LoadBalancer 结合使用,LoadBalancer 会将外部流量导入 NodePort。


5. NodePort 的优缺点

优点

  • 简单易用,快速暴露服务。

  • 不需要额外的负载均衡器,适合小型环境。

  • 可以在任意节点上访问服务,具有较高的可用性。

缺点

  • 端口范围有限(30000-32767),可能与现有服务冲突。

  • 直接暴露节点的 IP 地址,可能存在安全风险。

  • 需要手动管理节点的 IP 地址,不适合大规模生产环境。


6. NodePort 的调试和排查
  1. 查看 Service 信息

    kubectl get svc <service-name>

    输出示例:

    NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
    my-service   NodePort    10.96.123.45    <none>        80:31000/TCP   5m
  2. 查看 Endpoints

    kubectl get endpoints <service-name>

    输出示例:

    NAME         ENDPOINTS                         AGE
    my-service   10.244.1.2:9376,10.244.2.3:9376   5m
  3. 检查节点端口

    • 登录到节点,检查 NodePort 是否正常开放:

      netstat -tuln | grep 31000
  4. 检查 kube-proxy 和 iptables/IPVS 规则

    • 登录到节点,检查 iptables 或 IPVS 规则是否正常配置。


7. 总结

NodePort 是 Kubernetes 中用于对外暴露服务的 Service 类型,它通过在集群的每个节点上开放一个静态端口,使得外部用户可以通过节点的 IP 地址和该端口访问集群内部的服务。NodePort 简单易用,适合开发和测试环境,但在生产环境中通常需要结合 LoadBalancer 或 Ingress 使用,以提供更高的可用性和安全性。

使用 NodePort 暴露 Nginx 服务的示例

以下是一个完整的示例,展示如何在 Kubernetes 中使用 NodePort Service 暴露一个 Nginx 服务。这个示例包括:

  1. 部署一个 Nginx Pod。

  2. 创建一个 NodePort Service 来暴露 Nginx 服务。


1. 创建 Nginx 部署

首先,创建一个 Deployment 来运行 Nginx Pod。以下是一个简单的 YAML 文件:

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deployment  # 部署名称labels:app: nginx  # 标签,用于 Service 选择
spec:replicas: 3  # 副本数selector:matchLabels:app: nginx  # 选择器,匹配 Pod 标签template:metadata:labels:app: nginx  # Pod 标签spec:containers:- name: nginx  # 容器名称image: nginx:latest  # 使用官方 Nginx 镜像ports:- containerPort: 80  # 容器监听的端口

将上述内容保存为 nginx-deployment.yaml,然后使用以下命令创建 Deployment:

kubectl apply -f nginx-deployment.yaml

2. 创建 NodePort Service

接下来,创建一个 NodePort Service 来暴露 Nginx 服务。以下是一个简单的 YAML 文件:

apiVersion: v1
kind: Service
metadata:name: nginx-service  # Service 名称
spec:type: NodePort  # Service 类型selector:app: nginx  # 选择标签为 app=nginx 的 Podports:- protocol: TCP  # 协议类型port: 80  # Service 暴露的端口targetPort: 80  # 后端 Pod 的端口nodePort: 30080  # 手动指定的 NodePort,范围为 30000-32767

将上述内容保存为 nginx-service.yaml,然后使用以下命令创建 Service:

kubectl apply -f nginx-service.yaml

3. 验证部署和 Service
  1. 查看 Deployment 状态

    kubectl get deployments

    输出示例:

    
    
  2. 查看 Pod 状态

    kubectl get pods
    
    
    
  3. 查看 Service 状态

    kubectl get svc nginx-service
    
    
    

4. 访问 Nginx 服务
  1. 获取节点的 IP 地址

    使用kubect get nodes -o wide获取节点信息
    • 输出示例:

      
      
    • 可以发现节点ip
    • 如果你在云环境或物理机中,可以使用节点的公网或内网 IP。

  2. 通过 NodePort 访问 Nginx

    • 打开浏览器,访问 http://<NodeIP>:30080

    • 例如,如果节点 IP 是 192.168.30.130,则访问 http://192.168.30.130:30080

    • 你应该会看到 Nginx 的默认欢迎页面。

    • 可以在外部浏览器看到ngnix的页面


5. 清理资源

完成测试后,可以删除 Deployment 和 Service:

kubectl delete -f nginx-deployment.yaml
kubectl delete -f nginx-service.yaml

相关文章:

k8s中service概述(二)NodePort

NodePort 是 Kubernetes 中一种用于对外暴露服务的 Service 类型。它通过在集群的每个节点上开放一个静态端口&#xff08;NodePort&#xff09;&#xff0c;使得外部用户可以通过节点的 IP 地址和该端口访问集群内部的服务。以下是关于 NodePort Service 的详细说明&#xff1…...

搭建Redis哨兵集群

停掉现有的redis集群 因为这篇文章我是在 搭建完redis主从集群之后写的&#xff0c;如果要是没有搭建过这些&#xff0c;可以直接略过。要是从我上一篇 搭建redis主从集群过来的&#xff0c;可以执行下。 docker compose down 查找下redis相关进程 ps -ef | grep redis 可以看…...

.Net SSO 单点登录方式

SSO单点登录目的 之前一般来讲系统简单&#xff0c;登录后 本地 cookie 加服务器 session 存储用户身份信息&#xff0c;以此为依据来判断用户再次登录时免验证 但随着互联网发展&#xff0c;很多应用 部署在不同的服务器上&#xff0c;而用户体系是一套&#xff0c;那么按照原…...

SQL 基础 BETWEEN 的常见用法

在SQL中&#xff0c;BETWEEN是一个操作符&#xff0c;用于选取介于两个值之间的数据。 它包含这两个边界值。BETWEEN操作符常用于WHERE子句中&#xff0c;以便选取某个范围内的值。 以下是BETWEEN的一些常见用法&#xff1a; 选取介于两个值之间的值&#xff1a; 使用 BETWE…...

ngx_http_add_location

声明在 src\http\ngx_http_core_module.c ngx_int_t ngx_http_add_location(ngx_conf_t *cf, ngx_queue_t **locations,ngx_http_core_loc_conf_t *clcf); 定义在 src\http\ngx_http.c ngx_int_t ngx_http_add_location(ngx_conf_t *cf, ngx_queue_t **locations,ngx_http…...

深入探索ArkUI中的@LocalBuilder装饰器:构建高效可维护的UI组件

在ArkUI框架中&#xff0c;组件化开发是提升代码复用性和维护性的关键手段。随着项目复杂度的增加&#xff0c;开发者常常面临如何在保持组件封装性的同时&#xff0c;灵活处理组件内部逻辑的问题。传统的Builder装饰器虽然提供了强大的自定义构建能力&#xff0c;但在某些场景…...

视频知识库初步设想

将视频字幕提取出来作为知识库来源定位,下一步设想:把视频上的图片信息也精简出来作为定位。 下面是测试例子: 入参: {"model":"deepseek-ai/DeepSeek-R1-Distill-Llama-8B","messages":[{"role":"system","cont…...

微信小程序中使用Less样式方法

在微信小程序中使用Less样式&#xff0c;可以通过以下步骤实现。主要原理是借助Visual Studio Code&#xff08;VSCode&#xff09;的插件将Less文件自动编译为小程序支持的.wxss文件&#xff0c;或通过微信开发者工具的扩展功能直接集成Less编译环境。以下是具体方法&#xff…...

2024年MathorCup数学建模A题移动通信网络中PCI规划问题解题全过程文档加程序

2024年第十四届MathorCup高校数学建模挑战赛 A题 移动通信网络中PCI规划问题 原题再现&#xff1a; 物理小区识别码(PCI)规划是移动通信网络中下行链路层上&#xff0c;对各覆盖小区编号进行合理配置&#xff0c;以避免PCI冲突、PCI混淆以及PCI模3干扰等现象。PCI规划对于减少…...

本周安全速报(2025.3.18~3.24)

合规速递 01 2025欧洲网络安全报告&#xff1a;DDoS攻击同比增长137%&#xff0c;企业应如何应对&#xff1f; 原文: https://hackread.com/european-cyber-report-2025-137-more-ddos-attacks/ 最新的Link11《欧洲网络安全报告》揭示了一个令人担忧的趋势&#xff1a;DDo…...

力扣刷题-热题100题-第23题(c++、python)

206. 反转链表 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/reverse-linked-list/solutions/551596/fan-zhuan-lian-biao-by-leetcode-solution-d1k2/?envTypestudy-plan-v2&envIdtop-100-liked 常规法 记录前一个指针&#xff0c;当前指针&am…...

YAML是什么?

YAML&#xff08;YAML Ain’t Markup Language&#xff09;是一种以数据为中心、高度可读的序列化语言&#xff0c;广泛应用于配置文件、数据交换和自动化工具中。以下从多个维度对其进行全面解析&#xff1a; 1. 定义与历史演变 全称与定位&#xff1a; YAML的全称最初为“Yet…...

期权交易投资怎么操作?新手期权操作指南

期权就是股票&#xff0c;唯一区别标的物上证指数&#xff0c;会看大盘吧&#xff0c;新手做期权交易两个方向认购做多&#xff0c;认沽做空&#xff0c;双向t0交易没了&#xff0c;跟期货一样&#xff0c;对的&#xff0c;玩的也是合约&#xff0c;唯一区别没有保证金不会爆仓…...

音视频学习(三十):fmp4

FMP4&#xff08;Fragmented MP4&#xff09;是 MP4&#xff08;MPEG-4 Part 14&#xff09;的扩展版本&#xff0c;它支持流式传输&#xff0c;并被广泛应用于DASH&#xff08;Dynamic Adaptive Streaming over HTTP&#xff09;和HLS&#xff08;HTTP Live Streaming&#xf…...

破局AI落地困局 亚信科技“四位一体手术刀“切开产业智能三重枷锁

当全球进入以AI为核心竞争力的新经济周期&#xff0c;政企机构的数字化转型正面临关键转折点&#xff1a;IDC数据显示&#xff0c;2023年超过67%的中国企业在AI落地环节遭遇"技术断层"&#xff0c;高昂的试错成本与碎片化解决方案让智能转型陷入僵局。在此背景下&…...

android 去掉状态栏的方法汇总

在 Android 开发中&#xff0c;隐藏或去除状态栏&#xff08;Status Bar&#xff09;有多种方法&#xff0c;具体实现方式取决于应用场景和目标 Android 版本。以下是常用的 ​6 种方法及其代码示例&#xff1a; 在 Android 开发中&#xff0c;隐藏或去除状态栏&#xff08;Sta…...

jenkins+1panel面板java运行环境自动化部署java项目

本文章不包含1panel面板安装、jenkins部署、jenkins连接git服务器等操作教程&#xff0c;如有需要可以抽空后期补上 jenkins安装插件Publish Over SSH 在系统配置添加服务器 查看项目的工作空间 项目Configure->构Post Steps选择Send files or execute commands over SSH…...

VLAN综合实验报告

一、实验拓扑 网络拓扑结构包括三台交换机&#xff08;LSW1、LSW2、LSW3&#xff09;、一台路由器&#xff08;AR1&#xff09;以及六台PC&#xff08;PC1-PC6&#xff09;。交换机之间通过Trunk链路相连&#xff0c;交换机与PC、路由器通过Access或Hybrid链路连接。 二、实验…...

雷军从 6 楼扔涂有防弹涂层西瓜,西瓜完好无损,这种防弹涂层是什么材质?用在车上效果怎么样?

雷军展示的“防弹涂层”是一种基于第四代高分子材料聚脲&#xff08;Polyurea&#xff09;的升级技术&#xff0c;其核心特性是通过纳米级交联结构形成弹性防护层&#xff0c;兼具柔韧性与刚性&#xff0c;能够有效吸收冲击能量并抵御尖锐物体的穿刺。以下是关于该涂层材质及在…...

信奥赛CSP-J复赛集训(模拟算法专题)(31):P2692 覆盖

信奥赛CSP-J复赛集训&#xff08;模拟算法专题&#xff09;&#xff08;31&#xff09;&#xff1a;P2692 覆盖 题目背景 WSR 的学校有 B B B 个男生和 G G G 个女生都来到一个巨大的操场上扫地。 题目描述 操场可以看成是 N N N 行 M M M 列的方格矩阵&#xff0c;如下…...

数据库联表Sql语句建一个新表(MySQL,Postgresql,SQL server)

数据库联表Sql语句建一个新表(MySQL,Postgresql,SQL server) 如果你想基于 SELECT USERS.ID,USERS.NAME,USERS.EMAIL,USERS.ID_CARD,USERS.V_CARD,USERS.ADDRESS,v_card.type,v_card.amount FROM USERS JOIN v_card on USERS.V_CARDv_card.v_card 这个查询结果创建一个新表&am…...

【Go】结构体的基本使用

go语言不是面向对象的语言 但是结构体类似于面向对象 结构体的定义 package mainimport "fmt"type Student struct {id intname stringage intschool string }func main() {s : Student{1, "luobozi", 18, "znl"}fmt.Println(s) }结构…...

统计可重复列表中的TOP N

文章目录 方案1&#xff1a;HashMap统计 全排序实现步骤&#xff1a;代码实现&#xff1a;优缺点&#xff1a; 方案2&#xff1a;HashMap统计 最小堆&#xff08;优先队列&#xff09;实现步骤&#xff1a;代码实现&#xff1a;优缺点&#xff1a; 方案3&#xff1a;Java Str…...

《jQuery Mobile 页面:深入解析与优化实践》

《jQuery Mobile 页面:深入解析与优化实践》 引言 jQuery Mobile 是一个流行的前端框架,专为移动设备设计,提供了丰富的UI组件和简洁的API,使得开发者可以快速构建出美观且响应式的移动页面。本文将深入解析jQuery Mobile的页面构建方法,并探讨一些优化实践,以帮助开发…...

C#中 String类API(函数)

字符串属性 string str "打工人";Console.WriteLine(str);char s str[0];Console.WriteLine(s); 字符串内置API(函数) 1. Concat 拼接字符串 string s1 "打";string s2 "工";string s3 "人";string sthstring.Concat(s1, s2, s…...

【Linux 维测专栏 5 -- linux pstore 使用介绍】

文章目录 Linux pstore 功能简介1. pstore 概述2. pstore 的核心功能3. pstore 的工作原理4. pstore 的使用示例5. pstore 的优势6. 典型应用场景配置示例1)DTS配置2)config配置运行测试及log问题小结Linux pstore 功能简介 1. pstore 概述 pstore(Persistent Storage)是…...

AI赋能:科技写作的革新之路

在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;技术正以惊人的速度渗透到各个领域&#xff0c;科技写作也不例外。AI不仅改变了写作的方式&#xff0c;还极大地提升了写作的效率和质量。本文将探讨AI技术在科技写作中的应用&#xff0c;并分享一些实用的AI工…...

如何为你的github开源项目选择合适的开源协议?

如何为你的github开源项目选择合适的开源协议&#xff1f; 导言 在github开源世界中&#xff0c;选择一个合适的开源协议是至关重要的。它不仅定义了他人如何使用你的代码&#xff0c;还决定了你的项目能否被广泛接受和传播&#xff0c;还能避免侵权问题。 然而&#xff0c;面…...

struts2漏洞攻略

S2-057远程执行代码漏洞 靶场&#xff1a; /struts2/s2-057 1&#xff0c;搭建好环境后访问 http://47.108.150.249:8081/struts2-showcase/ 2&#xff0c;在url处进行输⼊ 在url输入http://47.108.150.249:8081/struts2-showcase/${(123123)}/actionChain1.action 后刷新可…...

LVGL学习1

LVGL知识点 架构图 参考&#xff1a;Getting Started — LVGL documentation display、screen、widget的关系 参考&#xff1a; Widget Basics — LVGL documentation Overview — LVGL documentation 简单说&#xff0c;display就是硬件的显示设备&#xff0c;也就是一个一…...

【SpringCloud】微服务的治理以及服务间的远程调用

目录 一、微服务的诞生 二、服务注册和发现 2.1 需求的产生 2.2 注册中心原理 2.3 Nacos注册中心 2.4 Nacos安装部署教程 2.5 配置Nacos 三、OpenFeign 3.1 认识OpenFeign 3.2 快速入门 3.2.1 引入依赖 3.2.2 启动OpenFeign 3.2.3 编写OpenFeign客户端 3.2.4 使…...

钞票准备好了吗?鸿蒙电脑 5 月见

3月20日&#xff0c;在华为 Pura 先锋盛典及鸿蒙智行新品发布会上&#xff0c;华为常务董事、终端BG董事长、智能汽车解决方案BU董事长余承东表示&#xff0c;华为终端全面进入鸿蒙时代&#xff0c;今年5月将推出鸿蒙电脑。 在3月20日的华为Pura先锋盛典及鸿蒙智行新品发布会上…...

【2025】基于springboot+uniapp的企业培训打卡小程序设计与实现(源码、万字文档、图文修改、调试答疑)

基于 Spring Boot uniapp 的企业培训打卡小程序设计与实现 系统功能结构图如下&#xff1a; 一、课题背景 在当今快节奏的商业环境中&#xff0c;企业培训对于员工的成长和企业的发展至关重要。为了满足企业对高效培训管理和员工便捷学习的需求&#xff0c;基于 Spring Boot …...

poetry安装与使用

文章目录 安装方法虚拟环境构建方法* 创建新虚拟环境【新环境使用】* 使用仓库拉取的代码构建虚拟环境【远端仓库拉取使用】 常用命令注意事项 安装方法 安装命令&#xff08;全局安装&#xff0c;不要在虚拟环境中安装&#xff0c;方便后面创建环境使用&#xff09; pip3 inst…...

聊聊langchain4j的Code Execution Engine

序 本文主要研究一下langchain4j的Code Execution Engine 步骤 pom.xml <dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-code-execution-engine-graalvm-polyglot</artifactId><version>1.0.0-beta2</ver…...

军事级加密通信系统——基于QML的战术地图加密传输

目录 基于QML的战术地图加密传输一、引言二、理论背景与安全需求2.1 战术地图数据的敏感性与安全性要求2.2 QML与PyQt5集成优势2.3 加密算法与数据传输模型三、系统架构与数据流图四、QML前端界面设计与交互功能4.1 QML界面优势与设计理念4.2 功能要求4.3 QML文件示例五、加密传…...

ffmpeg系列(三)—— 音频重采样

SwrContext 一、SwrContext 的重要字段 SwrContext 是音频重采样的核心配置对象&#xff0c;其关键字段决定了重采样的行为和性能。以下是常用字段及其作用&#xff1a; 字段名称类型作用典型值示例in_sample_rateint输入音频的采样率&#xff08;Hz&#xff09;。44100out_…...

android Kotlin原理

目录 一,概述 1.1 kotlin协程序原理: 1.2 核心概念 二,协程调度器之Dispatchers 三,协程能进行线程恢复的原理 一,概述 1.1 kotlin协程序原理: 1,内部线程池管理线程使用到了自旋和挂起 2,传统的线程之所以重,是因为线程的执行&#xff0c;等待唤醒需要操作系统来完成 …...

MyBatis-Plus(Ⅲ)IService详解

目录 一、逐一演示 1.save&#xff08;插入一条&#xff09; 结果 断言&#xff08;引入概念&#xff09; 2.saveBatch&#xff08;批量插入&#xff09; 结果 3.saveOrUpdateBatch&#xff08;批量插入&更新&#xff09; 结果 4.removeById&#xff08;通过id删除…...

2024年认证杯SPSSPRO杯数学建模C题(第二阶段)云中的海盐全过程文档及程序

2024年认证杯SPSSPRO杯数学建模 C题 云中的海盐 原题再现&#xff1a; 巴黎气候协定提出的目标是&#xff1a;在2100年前&#xff0c;把全球平均气温相对于工业革命以前的气温升幅控制在不超过2摄氏度的水平&#xff0c;并为1.5摄氏度而努力。但事实上&#xff0c;许多之前的…...

PostgreSQL 存储过程

简介 PostgreSQL 中的存储过程&#xff08;Stored Procedure&#xff09;是一种在数据库中定义的可重复使用的程序单元&#xff0c;用于封装复杂的业务逻辑和数据处理操作 示例 简单示例 创建存储过程 CREATE PROCEDURE insert_users (user_account TEXT, hashed_password…...

GGUF 和 llama.cpp 是什么关系

这是个非常关键的问题&#xff0c;咱们来细说下&#xff1a;GGUF 和 llama.cpp 是什么关系&#xff0c;它们各自干什么&#xff0c;如何配合工作。 &#x1f527; 一、llama.cpp 是什么&#xff1f; llama.cpp 是 Meta 的开源大语言模型 LLaMA&#xff08;Language Model from…...

(UI自动化测试web端)第二篇:元素定位的方法_class定位

看代码里的【 driver.find_element_by_class_name( )】()里的路径怎么写&#xff1f; 那我们现在说的就是在元素定位时&#xff0c;根据网页的实际情况来选择适合的元素定位的写法。文章主要介绍了class定位在正常工作当中的使用。 第三种定位 方式&#xff1a;class定位 ⽅法…...

闲聊IT - 面向服务架构(SOA)的发展历史

SOA的发展历史 面向服务架构&#xff08;SOA&#xff09;是随着企业信息化进程的发展逐渐形成的&#xff0c;它的出现是为了应对传统软件架构在现代企业复杂需求面前的局限性。SOA的起源和发展过程可以追溯到20世纪90年代末期&#xff0c;并随着互联网技术的普及、分布式计算以…...

31天Python入门——第9天:再学函数

你好&#xff0c;我是安然无虞。 文章目录 再学函数1. 变量在函数中的作用域2. 函数的参数传递.补充学习: 不定长参数*args和**kwargs 3. 值传递和引用传递补充学习: 把函数作为参数传递 4. 匿名函数5. python中内置的常用函数zip()map()filter()all()any() 6. 函数练习 再学函…...

卡特兰数在数据结构上面的运用

原理 Catalan数是一个数列&#xff0c;其第n项表示n个不同结点可以构成的二叉排序树的数量。Catalan数的第n项公式为&#xff1a; &#xfffc; 其中&#xff0c;&#xfffc;是组合数&#xff0c;表示从2n个元素中选择n个元素的组合数。 Catalan数的原理可以通过以下方式理解&…...

如何分析和解决服务器的僵尸进程问题

### 如何分析和解决服务器的僵尸进程问题 #### **一、僵尸进程的定义与影响** **僵尸进程&#xff08;Zombie Process&#xff09;** 是已终止但未被父进程回收资源的进程。其特点&#xff1a; - **状态标识**&#xff1a;在进程列表&#xff08;如 ps 或 top&#xff09;中标…...

Kafka分区分配策略详解

Kafka分区分配策略详解 Kafka作为当前最流行的分布式消息队列系统&#xff0c;其分区分配策略直接影响着系统的性能、可靠性和可扩展性。合理的分区分配不仅能够提高数据处理的效率&#xff0c;还能确保系统负载的均衡。 Kafka提供了多种内置的分区分配策略&#xff0c;包括R…...

Vs code搭建uniapp-vue项目

安装vue环境npm install -g vue/clinode版本建议18或者18以上 vue create -p dcloudio/uni-preset-vue 项目名称----正式版vue create -p dcloudio/uni-preset-vue#alpha 项目名称----alpha版Vue3/Vite版 npx degit dcloudio/uni-preset-vue#vite 项目名称---js-正式版npx degi…...

cursor常用快捷键(JetBrains Darcula主题风格)

一、基础操作速查 打开/创建项目 打开项目&#xff1a;Ctrl Shift O&#xff08;选择文件夹&#xff09;新建文件&#xff1a;Ctrl N保存文件&#xff1a;Ctrl S关闭当前标签页&#xff1a;Ctrl F4 代码编辑 复制当前行&#xff1a;Ctrl D删除当前行&#xff1a;Ctrl …...