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

kubernetes存储入门(kubernetes)

实验环境依旧是三个节点拉取镜像,然后在master节点拉取资源清单:

然后同步会话,导入镜像;

存储入门

ConfigMap

volume卷--》volumemount(挂载卷)

Glusterfs

NFS

ISCSI

HostPath

ConfigMap

Secret

EmptyDir

PVC

云原生存储技术:cephFS

emptydir:并不会在主机上体现出来,会在同一个pod内不同容器间体现出来;

pod(容器1和容器2):两个容器间共享目录;

docker主机

k8s主机

apiVersion: apps/v1

这指定了使用的Kubernetes API版本,apps/v1是Deployment资源的稳定版本,用于定义和管理应用部署。

kind: Deployment

这指定了YAML文件中定义的资源类型为Deployment。Deployment是Kubernetes中用于声明式地更新应用和服务的高级抽象。

metadata

metadata部分包含了Deployment的元数据。

  • labels: 定义了一组键值对,用于标识和选择对象。这里定义了app: nginx标签,用于选择和标识这个Deployment。

  • name: Deployment的名称,这里是nginx。

  • namespace: Deployment所在的命名空间,默认是default。命名空间用于将集群内的资源逻辑上隔离。

spec

spec部分定义了Deployment的规格。

  • replicas: 指定了需要运行的Pod副本数量,这里是1。

  • selector: 一个标签选择器,用于指定Deployment管理的Pods的标签。这里选择了标签为app: nginx的Pods。

  • template: 定义了Pod的模板,用于创建新的Pods。

    • metadata: Pod模板的元数据,同样包含了labels来定义Pod的标签。

    • spec: Pod模板的规格。

      • containers: 定义了Pod中运行的容器列表。

        • 第一个容器使用了nginx:1.7.9镜像,设置了imagePullPolicy为IfNotPresent(如果本地没有镜像,则从远程仓库拉取),并挂载了名为share-volume的卷到/opt目录。

        • 第二个容器同样使用了nginx:1.7.9镜像,但通过设置command覆盖了容器的默认启动命令,使容器在启动后执行sh -c sleep 3600命令(即睡眠3600秒),并挂载了share-volume卷到/mnt目录。

      • volumes: 定义了Pod中使用的卷。

        • 这里定义了一个名为share-volume的空目录卷(emptyDir),它将在Pod的每个容器中共享。注释掉的#medium: Memory表示如果取消注释,这个卷将会存储在内存中,而不是默认的磁盘上,但这通常不是emptyDir卷的标准用法,因为emptyDir卷默认就是基于节点的磁盘存储的。

总结

这个Deployment配置定义了一个包含两个nginx容器的Pod,它们都挂载了同一个空目录卷(share-volume),但第二个容器在启动后不会运行nginx服务,而是睡眠3600秒。这种配置可能用于测试、日志收集或需要容器间共享数据的场景。注意,由于两个容器都试图使用同一个端口(nginx默认端口80),这种配置在实际部署中可能无法正常工作,除非nginx配置被修改以监听不同的端口或使用其他网络配置。

创建出来:

然后登录到容器中进行验证:

然后登录到另外一个容器中应该能够看到创建的文件;

  1. UTC与本地时间的差异

:UTC(协调世界时)是全球统一的时间标准,也称为零时区时间。而中国位于东八区,因此中国的标准时间(CST,中国上海时间)是UTC时间加上8小时。

如何解决时间问题:当前是亚洲上海时区;

而容器中是默认的时间。即:格林尼治天文台的时区;

只要把k8s主机上的localtime文件,映射到容器中就可以了。

引出了第二种技术:

HostPath(主机路径)该技术不仅可以指定文件,还可以指定目录;(Directory)

类似于docker中的-v选项:docker run -v /data1/nginx.conf:/data1/nginx.conf

apiVersion: apps/v1 # 指定使用的Kubernetes API版本为apps/v1,这是用于部署(Deployments)的API版本

kind: Deployment # 定义资源的类型为Deployment

metadata: # 元数据部分,用于定义Deployment的标识信息

labels: # 标签,用于组织和选择对象

app: nginx # 定义一个标签,键为app,值为nginx

name: nginx # Deployment的名称

namespace: default # Deployment所在的命名空间,默认为default

spec: # Deployment的规格说明

replicas: 1 # 副本数量,这里设置为1,即只部署一个Pod

selector: # 选择器,用于确定哪些Pods属于这个Deployment

matchLabels: # 通过标签匹配Pods

app: nginx # 匹配标签app=nginx的Pods

template: # Pod模板,用于创建Pods

metadata: # Pod的元数据

labels: # Pod的标签

app: nginx # Pod的标签,键为app,值为nginx

spec: # Pod的规格说明

containers: # 容器列表

- image: nginx:1.7.9 # 容器使用的镜像,这里使用的是nginx的1.7.9版本

imagePullPolicy: IfNotPresent # 镜像拉取策略,如果不存在则拉取

name: nginx # 容器的名称

volumeMounts: # 容器挂载的卷列表

- mountPath: /etc/localtime # 容器内的挂载路径

name: timezone-time # 挂载的卷的名称

volumes: # Pod中定义的卷列表

- name: timezone-time # 卷的名称

hostPath: # 使用宿主机上的文件或目录作为卷

path: /etc/localtime # 宿主机上的路径

type: File # 类型为文件

这个配置创建了一个Deployment,该Deployment会部署一个Pod,Pod中运行一个Nginx容器,容器的Nginx版本为1.7.9。此外,这个配置还通过hostPath卷将宿主机的/etc/localtime文件挂载到容器的/etc/localtime路径下,这样做的目的是为了让容器内的系统时间与宿主机保持一致,避免时区不一致导致的问题。

创建出来并测试:

扩展:

在Kubernetes(K8S)中,容器退出时的状态码(Exit Code)具有特定的含义,用于表示容器的终止原因和运行状态。这些状态码通常遵循Linux操作系统中的退出码约定,其值在0-255之间。以下是一些常见的容器退出状态码及其含义:

  1. 0

:表示容器正常退出,没有发生错误。这通常意味着容器内的应用程序按照预期完成了其任务并正常关闭。

  1. 1

:通常表示一般性错误。这可能是由于程序错误、命令行参数错误、Dockerfile中引用不存在的文件等原因导致的。

  1. 126

:表示命令调用错误,可能是由于权限问题或命令不可执行。容器尝试执行没有权限或不可执行的命令时,会返回此状态码。

  1. 127

:表示找不到命令。容器尝试执行一个不存在的命令时,会返回此状态码。

  1. 128 + N(N为信号编号)

:表示容器收到一个信号并退出。例如,128 + 9(即137)表示容器收到了SIGKILL信号,这通常是由于用户手动停止容器或系统因为资源不足(如OOMKilled)而强制终止容器。

  1. 255

:通常表示退出状态未知或无效。这可能是由于程序以非标准方式退出,或者状态码在转换过程中出现了问题。

当容器退出时,可以通过Kubernetes的命令行工具

kubectl来查看容器的退出状态码。例如,使用

kubectl describe pods 命令可以查看Pod的详细信息,包括容器的退出状态码。这对于排查容器故障和定位问题非常有帮助。

但是以上方式有弊端,因为k8s生成pod的时候会根据调度算法进行调度的,调度到哪个节点具有不确定性。(可能被创建到的节点没有所需的数据)

那么就可以使用共享目录:

NFS:c/s架构;都是安装nfs-utils安装包;

那么就可以分工,101作为服务器端,而102和103作为客户端;

同步会话开始安装对应的软件包;

然后在“服务器端”修改它的配置文件;

  • /opt/wwwroot

:这是NFS服务器上希望共享给客户端的目录路径。在这个例子中,/opt/wwwroot目录将被NFS服务共享出去,允许其他计算机通过网络访问这个目录中的文件。

  • 192.168.10.0/24

:这是客户端的IP地址范围,使用的是CIDR(无类别域间路由)表示法。192.168.10.0/24表示从192.168.10.1到192.168.10.254的所有IP地址(包括两端的地址,但通常不包括网络地址192.168.10.0和广播地址192.168.10.255)。这意味着这个NFS共享仅对处于这个子网内的客户端开放。

  • (rw,sync,no_root_squash)

:这是应用于该共享的访问选项,用括号括起来并用逗号分隔。

综上所述,这个NFS配置条目允许子网192.168.10.0/24内的客户端以读写方式访问

/opt/wwwroot目录,且服务器会在回应写请求前将数据同步到磁盘,同时允许客户端的root用户拥有与NFS服务器上/opt/wwwroot目录相同的root权限。

然后创建出来共享目录,且生成测试文件,并启动相应的程序;

查看它对应的资源清单;

这个Kubernetes资源定义文件是一个Deployment对象,用于在Kubernetes集群中部署和管理应用。具体来说,它配置了一个名为nginx的部署,该部署使用Nginx的1.7.9版本镜像,并将一个NFS卷挂载到容器的/usr/share/nginx/html目录中。下面是对这个配置文件的详细解释:

  • apiVersion: apps/v1

:指定了Kubernetes API的版本,这里是apps/v1,它包含了Deployment、StatefulSet等应用部署相关的资源定义。

  • kind: Deployment

:声明了这个YAML文件定义的资源类型是一个Deployment。

  • metadata

:包含了关于这个Deployment的元数据。

:定义了Deployment的规格说明。

这个配置文件创建了一个Deployment,它会启动一个Pod,该Pod中运行一个Nginx容器,并将NFS服务器(IP地址为192.168.10.101)上/opt/wwwroot目录的内容挂载到容器的/usr/share/nginx/html目录中。这样,Nginx服务器就可以通过其Web根目录(即/usr/share/nginx/html)提供NFS服务器上/opt/wwwroot目录中的内容了。

因为创建的时候不确定会创建到哪个节点,所以要保证每个工作节点上都装有nfs;

验证:

pv持久化卷--PVC(C:claim声明)

删除pod不会影响到pvc,因为两个都是独立的资源对象;

删除pvc对pv的影响;

回收策略:

retain保留:删除了pvc,不影响pv;

recycle:删除了pvc,pv还在,只是pv的数据没有了;

delete:删除,删除了pvc,对应的pv也没了;

pvc声明pv的时候的访问策略:

readwriteonce:单路读写(允许被某一个节点使用,一旦被使用,其他的节点无法使用)RWO

readwriteoncepod:单节点读写,只能被一个pod读写。RWOP

readonlymany:多路只读。ROX

readwritemany:多路读写。RWX

先创建pv再创建pvc再创建pod;

创建pv:

静态pv:pv--》pvc--》pod

动态pv:存储类--》pvc--》pv自动创建出来了--》pod

hostpath

NFS

  • kind: PersistentVolume

:指定了这个YAML文件定义的资源类型为PersistentVolume(持久卷)。PersistentVolume是Kubernetes中用于存储数据的抽象,它独立于使用它的Pod的生命周期。

  • apiVersion: v1

:指定了使用的Kubernetes API版本为v1。

  • metadata

:包含了关于这个PersistentVolume的元数据。

:定义了持久卷的具体规格。

总的来说,这个配置定义了一个名为mypv-hostpath的持久卷,它映射到宿主机上的/mnt/data目录,拥有10GiB的存储空间,并且只能被单个节点以读写模式挂载。这个持久卷被归类到pv-hostpath存储类中。

创建出来:

被调用的时候会使用存储类名称(storageclassname)而不会使用pv的名称;

NFS的pv:

注意yaml文件中每个单词首字母大写;遵循了编程中的驼峰原则。

  • apiVersion: v1

:指定了使用的Kubernetes API版本为v1。

  • kind: PersistentVolume

:表明这个YAML文件定义的是一个PersistentVolume资源。

  • metadata

:包含了关于这个PersistentVolume的元数据。

:定义了持久卷的具体规格。

请注意,对于NFS持久卷,persistentVolumeReclaimPolicy设置为Recycle可能不是最佳选择,因为NFS卷通常设计为共享资源,并且Recycle策略可能不适用于这种场景。在实际应用中,您可能需要考虑使用Retain策略,以便在不再需要持久卷时手动管理其回收。

创建出来:

如何创建pvc:(指向hostpathpv的pvc)

  • kind: PersistentVolumeClaim

:这指定了资源类型为PersistentVolumeClaim。

  • apiVersion: v1

:这表示该资源定义遵循Kubernetes API的v1版本。

  • metadata

:这是关于PVC的元数据部分。

:这是PVC的规格说明部分,定义了PVC的具体需求。

:这指定了PVC所使用的StorageClass的名称。StorageClass是一个抽象层,用于定义如何动态地提供存储。在这个例子中,pv-hostpath很可能是一个自定义的StorageClass,它指示Kubernetes使用基于HostPath的存储卷。HostPath卷是将主机节点上文件或目录挂载到Pod中的卷类型,主要用于开发或测试环境。

:这定义了PVC的访问模式。

:这定义了PVC的资源需求。

总的来说,这个PersistentVolumeClaim定义了一个名为mypvc-hostpath的存储卷请求,它请求3GiB的存储空间,通过名为pv-hostpath的StorageClass来动态提供存储,且该存储卷以ReadWriteOnce模式被访问。这允许Kubernetes在集群中自动查找或创建满足这些条件的存储资源,并将其分配给请求它的Pod。

创建出来:

基于nfs的pvc:

  • kind: PersistentVolumeClaim

:这指定了资源类型为PersistentVolumeClaim,即这是一个PVC对象。

  • apiVersion: v1

:这表示该资源定义遵循Kubernetes API的v1版本,这是Kubernetes中最常用和最稳定的API版本之一。

  • metadata

:这是关于PVC的元数据部分。

:这是PVC的规格说明部分,定义了PVC的具体需求。

:这指定了PVC所使用的StorageClass的名称。StorageClass是一个用于定义如何动态地提供存储的抽象层。在这个例子中,pvc-nfs很可能是一个已经定义的StorageClass,它告诉Kubernetes使用NFS作为存储后端来动态创建PV(PersistentVolume)。这意味着,如果集群中存在一个与该StorageClass相关联的NFS服务器,并且有足够的空间来满足这个PVC的请求,Kubernetes将自动为PVC创建一个对应的PV。

:这定义了PVC的访问模式。

:这定义了PVC的资源需求。

总结来说,这个PersistentVolumeClaim定义了一个名为mypvc-nfs的存储卷请求,它请求3GiB的存储空间,通过名为pvc-nfs的StorageClass来动态提供NFS存储,且该存储卷以ReadWriteOnce模式被访问。这使得Kubernetes能够在集群中自动查找或创建满足这些条件的NFS存储资源,并将其分配给请求它的Pod。

创建出来:

如何交给pod去使用:

在Kubernetes中,Pod是最小的可部署的计算单元,它封装了一个或多个容器(如Docker容器),存储资源,以及运行这些容器所需的选项;

  • kind: Pod

:这指定了资源类型为Pod,即这是一个Pod定义。

  • apiVersion: v1

:这表示该资源定义遵循Kubernetes API的v1版本。

  • metadata

:这是关于Pod的元数据部分。

:这是Pod的规格说明部分,定义了Pod的具体配置。

总结来说,这个Pod定义了一个名为hostpath-pv-pod的Pod,它运行了一个Nginx 1.7.9版本的容器。该容器将监听80端口,并提供HTTP服务。此外,Pod还定义了一个名为task-pv-storage的卷,该卷通过mypvc-hostpath PVC来提供持久化存储,并被挂载到容器的/usr/share/nginx/html目录下。这意味着Nginx将从这个目录中提供网页内容,而这些内容存储在由PVC管理的持久化存储中。

pv:

pv的名字

存储类名字--》和pvc关联

pvc

pvc的名字

存储类名字--》和pv关联

pod

pod的名字

pod要调用pvc--》pvc的名字

然后查看pod的详细信息,查看到被调度到了node1上,即:102;

创建文件进行测试:

登录到对应的pod中进行查看:

如果删除pod会对数据有影响吗???

文件还在!!!

nfs的pvc的pod:

  • kind: Pod

:指定了这个资源是一个Pod。

  • apiVersion: v1

:表明这个Pod定义遵循Kubernetes API的v1版本。

  • metadata

:包含了Pod的元数据。

:定义了Pod的规格说明。

总结来说,这个Pod定义了一个名为pvc-nfs的Pod,它运行了一个Nginx 1.7.9版本的容器。这个容器将监听80端口,并提供HTTP服务。Pod还定义了一个名为pvc-nfs01的卷,该卷通过mypvc-nfs PVC来提供持久化存储,并被挂载到容器的/usr/share/nginx/html目录下。因此,Nginx将从这个目录中提供网页内容,而这些内容存储在由PVC管理的NFS持久化存储中。注意,Pod的名称(pvc-nfs)和卷的名称(pvc-nfs01)并不要求与PVC的名称(mypvc-nfs)有直接的关系,它们只是用于在Kubernetes中唯一标识这些资源的。

登录进去:

相关文章:

kubernetes存储入门(kubernetes)

实验环境依旧是三个节点拉取镜像,然后在master节点拉取资源清单: 然后同步会话,导入镜像; 存储入门 ConfigMap volume卷--》volumemount(挂载卷) Glusterfs NFS ISCSI HostPath ConfigMap Secret E…...

局部代理有什么好处?为什么不使用全局代理?

1. 什么是局部代理与全局代理? 局部代理:局部代理只会对特定应用程序或特定的网络流量进行代理,而不会影响其他网络流量。例如,你可以设置浏览器使用代理,而其他应用程序如邮件客户端或游戏仍然使用本地网络连接。 全…...

ssm模糊知识点整合

一、参数绑定常用注解 RequestParam:用于将请求参数绑定到你的方法参数上。 PathVariable:用于将路径变量绑定到你的方法参数上。 RequestBody:用于将请求主体绑定到你的方法参数上,通常用于绑定POST请求的JSON或XML数据。 Req…...

2、Spring Boot 3.x 集成 Feign

一、前言 本篇主要是围绕着两个点,1、集成 Feign,2、分离feign接口层,独立服务; 还有一点就是上篇文章的服务 iot-channel、system-server 服务名称调整成为了 chain-iot-channel、chain-system二、搭建 chain-common 服务 pom.…...

深度学习-图像处理篇-5ResNet和ResNeXt

解决问题: 梯度消失或梯度爆炸 退化问题(degradation problem) 迁移学习 ResNeXt...

类的关联、依赖、聚合和组合关系的思考(一)

最近在看《设计模式》这本书,发现对类之间的关系还没搞的很明白,而类之间的关系对读书、阅读代码和代码设计都非常重要,因此边看书边查阅了一些资料,感觉有些理解了。下面是我的一些思考,分享一下。 查阅了很多博客&a…...

云舟观测:集成开源Grafana Faro构建前端页面性能监控平台

在当今互联网时代,面对纷乱繁杂的网上资源,用户的耐心和注意力是极为宝贵的资源,当用户访问一个网站或应用时,他们期望的是快速且无缝的体验,任何加载延迟或功能故障都可能导致用户流失,影响品牌体验。因此…...

c# 子类继承父类接口问题

在C#中,子类并不直接“继承”父类继承的接口,但子类的确会继承父类对接口的实现(如果父类实现了该接口)。这里有一些关键的概念需要澄清: 接口继承:当一个类实现了某个接口时,它必须实现接口中…...

Vue 中自定义指令的探索与实践

文章目录 一、Vue 自定义指令简介二、基本语法三、指令的值四、封装v-loading指令五、总结 在 Vue 开发中,自定义指令为我们提供了一种强大的方式来操作 DOM 元素,实现特定的交互效果和功能增强。本文将深入探讨 Vue 中自定义指令的基本语法、指令的值的…...

Vue3通过$emit实现子向父传递数据

引言 子组件通过$emit触发事件,并传递数据,父组件在使用子组件时就可以绑定子组件事件,在事件处理函数中拿到子组件传来的数据 子组件传递数据 函数声明:$emit(事件名, 传递的数据 . . .) 子组件传递的数据会依次传递给父组件的…...

代码随想录算法训练营第十四天|递归 226.翻转二叉树 101. 对称二叉树 104.二叉树的最大深度 111.二叉树的最小深度

226.翻转二叉树 翻转一棵二叉树。 思路: 在这里需要注意的是,在递归的时候唯独中序遍历是不可用的,这是因为先对左子树进行了反转,又对自身进行了反转,对自身反转后原本的左子树变成了右子树,如果此时又轮…...

Spark 任务与 Spark Streaming 任务的差异详解

Spark 任务与 Spark Streaming 任务的主要差异源自于两者的应用场景不同:Spark 主要处理静态的大数据集,而 Spark Streaming 处理的是实时流数据。这些差异体现在任务的调度、执行、容错、数据处理模式等方面。 接下来,我们将从底层原理和源…...

Git提示信息 Pulling is not possible because you have unmerged files.

git [fatal] hint: Pulling is not possible because you have unmerged files.hint: Fix them up in the … error: Pulling is not possible because you have unmerged files. 错误:无法提取,因为您有未合并的文件。 hint: Fix them up in the work tree, and t…...

python编程开发“人机猜拳”游戏

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…...

丹摩智算平台部署 Llama 3.1:实践与体验

文章目录 前言部署前的准备创建实例 部署与配置 Llama 3.1使用心得总结 前言 在最近的开发工作中,我有机会体验了丹摩智算平台,部署并使用了 Llama 3.1 模型。在人工智能和大模型领域,Meta 推出的 Llama 3.1 已经成为了目前最受瞩目的开源模…...

SpringCloud 2023各依赖版本选择、核心功能与组件、创建项目(注意事项、依赖)

目录 1. 各依赖版本选择2. 核心功能与组件3. 创建项目3.1 注意事项3.2 依赖 1. 各依赖版本选择 SpringCloud: 2023.0.1SpringBoot: 3.2.4。参考Spring Cloud Train Reference Documentation选择版本 SpringCloud Alibaba: 2023.0.1.0*: 参考Spring Cloud Alibaba选择版本。同时…...

串行化执行、并行化执行

文章目录 1、串行化执行2、并行化测试(多线程环境)3、任务的执行是异步的,但主程序的继续执行是同步的 可以将多个任务编排为并行和串行化执行。 也可以处理编排的多个任务的异常,也可以返回兜底数据。 1、串行化执行 顺序执行、…...

二叉搜索树(c++版)

前言 在前面我们介绍过二叉树这个数据结构,今天我们更进一步来介绍二叉树的一种在实现中运用的场景——二叉搜索树。二叉搜索树顾名思义其在“搜索”这个场景下有不俗的表现,之所以会这样是因为它在二叉树的基础上添加了一些属性。下面我们就来简单的介…...

每日1题-7

...

简单实现log记录保存到文本和数据库

简单保存记录到txt,sqlite数据库,以及console监控记录 using System; using System.Collections.Generic; using System.ComponentModel; using System.Text; using System.Data.SQLite; using System.IO;namespace NlogFrame {public enum LogType{Tr…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言:多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

7.4.分块查找

一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

大数据学习(132)-HIve数据分析

​​​​🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言&#x1f4…...

LLMs 系列实操科普(1)

写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...