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

【云原生】Kubernetes(k8s)之Pod概念和使用

k8s之Pod概念和使用

  • 一、Pod简介
    • 1.1、Pod的阶段(状态)
    • 1.2、容器状态
  • 二、Pod的定义
    • 2.1、restartPolicy
    • 2.2、imagePullPolicy
    • 2.3、command
    • 2.4、args
    • 2.5、resources
  • 三、Pod的使用
    • 3.1、创建并访问Pod
    • 3.2、多个应用容器
    • 3.3、Init容器
      • 3.3.1、Init容器与普通容器的区别
      • 3.3.2、Init容器的使用
    • 3.4、容器的生命周期处理函数

一、Pod简介

Pod是可以在Kubernetes中创建和管理的最小可部署单元。Pod是一组(一个或多个)容器的打包,这一组容器共享存储、网络;pod中的容器地位均等且一同调度,在共享的上下文中运行。这些容器在业务上是紧密耦合在一起的。
Pod就像一台“逻辑主机”为这一组紧密相关的容器提供运行上下文。Pod除了正常运行的业务容器外还可以在启动期间运行Init容器。也可以在集群支持临时容器的情况下,以调试为目的注入临时容器。

1.1、Pod的阶段(状态)

通过kubectl get pod -o yaml 查看pod的信息,其中status.phase字段表示该pod的阶段。 通过kubectl describe pod 查看pod详情,其中State字段表示该pod的状态(阶段)。

kubectl get pod -o yaml
kubectl describe pod 
阶段(状态)描述
PendingPod 已被 Kubernetes 系统接受,但有一个或者多个容器尚未创建亦未运行。此阶段包括等待 Pod 被调度的时间和通过网络下载镜像的时间。
RunningPod 已经绑定到了某个节点,Pod 中所有的容器都已被创建。至少有一个容器仍在运行,或者正处于启动或重启状态。
SucceededPod 中的所有容器都已成功终止,并且不会再重启。
FailedPod 中的所有容器都已终止,并且至少有一个容器是因为失败终止。也就是说,容器以非 0 状态退出或者被系统终止。
Unknown因为某些原因无法取得 Pod 的状态。这种情况通常是因为与 Pod 所在主机通信失败

1.2、容器状态

状态值描述
Waiting如果容器并不处在 Running 或 Terminated 状态之一,它就处在 Waiting 状态。处于 Waiting 状态的容器仍在运行它完成启动所需要的操作。使用 kubectl 来查询包含 Waiting 状态的容器的 Pod 时,会看到一个 Reason 字段,其中给出了容器处于等待状态的原因
RunningRunning 状态表明容器正在执行状态并且没有问题发生。 如果配置了 postStart回调,那么该回调已经执行且已完成。 如果使用 kubectl 来查询包含 Running 状态的容器的 Pod 时,也会看到 关于容器进入 Running 状态的信息。
Terminated处于 Terminated 状态的容器已经开始执行并且正常结束或者因为某些原因失败。如果使用 kubectl 来查询包含 Terminated 状态的容器的 Pod 时,会看到 容器进入此状态的原因、退出代码以及容器执行期间的起止时间。

二、Pod的定义

myhello-pod.yaml配置文件配置:

apiVersion: v1
kind: Pod
metadata:name: myhello-podnamespace: defaultlabels:name: myhello-podenv: dev
spec:restartPolicy: Alwayscontainers:- name: myhelloimage: nongtengfei/hello:1.0.0imagePullPolicy: IfNotPresentports:- containerPort: 80command: ["./app"]args: ["--param1=k8s-p1", "--param2=k8s-p2"]resources:limits:cpu: 200mmemory: 500Mirequests:cpu: 100mmemory: 200Mienv: # 注入到容器的环境变量- name: env1value: "k8s-env1"- name: env2value: "k8s-env2"

关键词的解释如下:

2.1、restartPolicy

容器重启策略,可选值为:Always、Never、OnFailure,默认值为 Always。restartPolicy 适用于 Pod中的所有容器。当pod中的容器退出时,kubelet 会按指数回退 方式计算重启的延迟(10s、20s、40s、…),其最长延迟为 5 分钟。 一旦某容器执行了 10 分钟并且没有出现问题,kubelet 对该容器的重启回退计时器执行重置操作。

2.2、imagePullPolicy

镜像拉取策略,可选值为:Always、Never、IfNotPresent,默认为:Always。

  • Always: 表示每次都尝试重新拉取镜像。
  • Never:表示从不拉取镜像,仅使用本地镜像。
  • IfNotPresent:表示如果本地有该镜像,这使用该镜像;如果本地没有该镜像这拉取镜像。

2.3、command

指定容器启动命令,若未指定该值则默认为镜像中指定的启动命令。

2.4、args

容器启动命令参数,若未指定则该值默认为容器镜像中指定的启动参数。

2.5、resources

容器使用资源设置。

  • requests:表示为容器分配最低资源配额
  • limits:表示容器可使用的最高资源配额,一旦容器资源的使用超出了该配置,那么容器将会被杀死。
  • CPU资源单位:Kubernetes将1CPU以1000m来表示,CPU的最小资源单位为m,1m表示千分之一CPU。通常一个容器使用的CPU配额为100m~ 300m。
  • 内存资源单位:例如:Ei、Pi、Ti、Gi、Mi、Ki,与通常使用的空间单位一致。

三、Pod的使用

3.1、创建并访问Pod

(1)创建pod。

kubectl create -f myhello-pod.yaml

(2)访问pod中的容器。

# 通过端口转发来查看该pod是否可以正常提供服务
kubectl port-forward pod/myhello-pod 5000:80
# 通过curl访问,该pod,查看其环境变量、启动参数等信息是否生效
curl http://localhost:5000/print/env
curl http://localhost:5000/print/startup

3.2、多个应用容器

(1)定义。

apiVersion: v1
kind: Pod
metadata:name: myhello-podnamespace: defaultlabels:name: myhello-podenv: dev
spec:restartPolicy: Alwayscontainers:- name: myhelloimage: nongtengfei/hello:1.0.0imagePullPolicy: IfNotPresentports:- containerPort: 80command: ["./app"]args: ["--param1=k8s-p1", "--param2=k8s-p2"]resources:limits:cpu: 200mmemory: 500Mirequests:cpu: 100mmemory: 200Mienv: # 注入到容器的环境变量- name: env1value: "k8s-env1"- name: env2value: "k8s-env2"- name: myredis #容器的名称image: redis #容器对应的 Docker ImageimagePullPolicy: IfNotPresentports:- containerPort: 6379resources:limits:cpu: 200mmemory: 500Mirequests:cpu: 100mmemory: 200Mi
# 根据文件删除资源
kubectl delete -f myhello-pod.yaml
# 根据文件应用资源
kubectl apply -f myhello-pod.yaml

(2)访问pod中的容器。

# 通过端口转发来查看该pod是否可以正常提供服务
kubectl port-forward pod/myhello-pod 5001:80 5002:6379 --address 192.168.0.142 --address localhost
# 访问myhello容器
curl http://localhost:5001/ping
# 访问redis,通过新创建一个其他redis,然后通过其他redis的客户端访问上面redis-server
kubectl run myredis --image=redis
# 进入redis交互
kubectl exec -it pod/myredis -- /bin/bash
# 以转发的地址和端口访问
redis-cli -h 192.168.0.142 -p 5002
# 以pod ip 访问
redis-cli -h <podIP> -p 6379

3.3、Init容器

3.3.1、Init容器与普通容器的区别

Init 容器是一种特殊容器,在 Pod 内的应用容器启动之前运行。Init 容器可以包括一些应用镜像中不存在的实用工具和安装脚本。
每个 Pod 中可以包含多个容器, 应用运行在这些容器里面,同时 Pod 也可以有一个或多个先于应用容器启动的 Init 容器。
如果 Pod 的 Init 容器失败,kubelet 会不断地重启该 Init 容器直到该容器成功为止。 然而,如果 Pod对应的 restartPolicy 值为 “Never”,并且 Pod 的 Init 容器失败, 则 Kubernetes 会将整个 Pod 状态设置为失败。

Init 容器与普通容器的区别:

  1. 它们总是运行到完成,即init容器提供的不是通过守护进程提供服务,而是通过启动容器来执行处理任务,当任务处理完成容器即完成。
  2. 每个都必须在下一个启动之前成功完成,多个init容器按定义的顺序一次执行。
  3. 只有当所有init容器完成时,Kubernetes才会为Pod初始化应用容器。

3.3.2、Init容器的使用

init 容器的特殊性,依次执行、容器必须来到完成状态、init容器完成后才会启动应用容器。
(1)定义。

apiVersion: v1
kind: Pod
metadata:name: myhello-podnamespace: defaultlabels:name: myhello-podenv: dev
spec:restartPolicy: AlwaysinitContainers:- name: init-myserviceimage: busybox
# 查找命名空间下myservice服务,如果存在则执行成功,如果不存在则一直查找command: ['sh', '-c', "until nslookup myservice.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for myservice; sleep 2; done"]- name: init-mydbimage: busybox
# 查找命名空间下mydb服务,如果存在则执行成功,如果不存在则一直查找command: ['sh', '-c', "until nslookup mydb.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for mydb; sleep 2; done"]containers:- name: myhelloimage: nongtengfei/hello:1.0.0imagePullPolicy: IfNotPresentports:- containerPort: 80command: ["./app"]args: ["--param1=k8s-p1", "--param2=k8s-p2"]resources:limits:cpu: 200mmemory: 500Mirequests:cpu: 100mmemory: 200Mienv: # 注入到容器的环境变量- name: env1value: "k8s-env1"- name: env2value: "k8s-env2"- name: myredis #容器的名称image: redis #容器对应的 Docker ImageimagePullPolicy: IfNotPresentports:- containerPort: 6379resources:limits:cpu: 200mmemory: 500Mirequests:cpu: 100mmemory: 200Mi

(2)创建容器。

# 删除原有pod
kubectl delete -f myhello-pod.yaml
# 重新应用
kubectl apply -f myhello-pod.yaml

(3)获取pod,可以看到pod一直处于init阶段。

# 获取pod
kubectl get -f myhello-pod.yaml

(4)查看pod详情。

kubectl describe -f myhello-pod.yaml

输出详细信息,pod状态为Pending,容器状态:仅init-myservice 为running,其他容器均为:Waiting。
(5)查看容器日志。

kubectl logs -f myhello-pod -c init-myservice

(6) 创建myservice服务。
内容:

apiVersion: v1
kind: Service
metadata:name: myservice
spec:ports:- protocol: TCPport: 80
kubectl create -f myservice.yaml

(7)查看pod状态,容器日志。

kubectl get -f myhello-pod.yaml
kubectl describe -f myhello-pod.yaml
kubectl logs -f myhello-pod -c init-mydb

(8)创建mydb服务。

apiVersion: v1
kind: Service
metadata:name: mydb
spec:ports:- protocol: TCPport: 80
kubectl create -f mydb.yaml

(9)查看pod状态,容器日志。

kubectl get -f myhello-pod.yaml
kubectl describe -f myhello-pod.yaml
kubectl logs -f myhello-pod -c init-mydb

以上示例可以看出:

  1. init容器按定义顺序依次执行。
  2. init容器的启动命令必须为有执行结果的命令,否则init容器将无法来到完成状态。
  3. init容器全部完成之后才会初始化应用程序容器(普通容器)。

3.4、容器的生命周期处理函数

Kubernetes 支持 postStart 和 preStop 事件。 当一个容器启动后,Kubernetes 将立即发送 postStart事件;在容器被终结之前, Kubernetes 将发送一个 preStop 事件。容器可以为每个事件指定一个处理程序。

apiVersion: v1
kind: Pod
metadata:name: myhello-podnamespace: defaultlabels:name: myhello-podenv: dev
spec:restartPolicy: AlwaysinitContainers:- name: init-myserviceimage: busybox# 查找命名空间下myservice服务,如果存在则执行成功,如果不存在则一直查找command: ['sh', '-c', "until nslookup myservice.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for myservice; sleep 2; done"]- name: init-mydbimage: busybox# 查找命名空间下mydb服务,如果存在则执行成功,如果不存在则一直查找command: ['sh', '-c', "until nslookup mydb.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for mydb; sleep 2; done"]containers:- name: myhelloimage: nongtengfei/hello:1.0.0imagePullPolicy: IfNotPresentports:- containerPort: 80command: ["./app"]args: ["--param1=k8s-p1", "--param2=k8s-p2"]resources:limits:cpu: 200mmemory: 500Mirequests:cpu: 100mmemory: 200Mienv: # 注入到容器的环境变量- name: env1value: "k8s-env1"- name: env2value: "k8s-env2"lifecycle:postStart:exec:command: ["/bin/sh", "-c","echo post start command exec >> /tmp/data"]preStop:exec:command: ["/bin/sh", "-c","echo pre stop command exec >> /tmp/data"]- name: myredis #容器的名称image: redis #容器对应的 Docker ImageimagePullPolicy: IfNotPresentports:- containerPort: 6379- resources:limits:cpu: 200mmemory: 500Mirequests:cpu: 100mmemory: 200Mi
kubectl delete -f myhello-pod.yaml
kubectl apply -f myhello-pod.yaml
# 使用shell 连接到pod中的容器
kubectl exec -it pod/myhello-pod -c myhello -- sh
# 查看postStart处理函数写入的文本
cat /tmp/data

在这里插入图片描述

相关文章:

【云原生】Kubernetes(k8s)之Pod概念和使用

k8s之Pod概念和使用一、Pod简介1.1、Pod的阶段&#xff08;状态&#xff09;1.2、容器状态二、Pod的定义2.1、restartPolicy2.2、imagePullPolicy2.3、command2.4、args2.5、resources三、Pod的使用3.1、创建并访问Pod3.2、多个应用容器3.3、Init容器3.3.1、Init容器与普通容器…...

数组(九)-- LC[316][321][402] 去除重复字母

1 移掉 K 位数字 1.1 题目描述 题目链接&#xff1a;https://leetcode.cn/problems/remove-k-digits/ 1.2 思路分析 这道题让我们从一个字符串数字中删除 k 个数字&#xff0c;使得剩下的数最小。也就说&#xff0c;我们要保持原来的数字的相对位置不变。 以题目中的 num1432…...

ubuntu下Thrift安装

thrift是一种常用rpc框架&#xff0c;工作中经常会用到&#xff0c;本文记录一下其安装过程。 目录 1.下载软件包 1.1thrift下载 1.2libevent下载 1.3boost下载 2.安装&#xff08;注意步骤&#xff09; 2.1安装libevent 2.2安装boost 2.3安装与Python2.7版本对应的py…...

读懂AUTOSAR :DiagnosticLogAndTrace DLT(四)-- API解析

一、周期调用的函数&#xff1a;Dlt_TxFunction 根据参数DltGeneralTrafficShapingSupport&#xff0c;决定如何去发送DLT消息。如果为TRUE&#xff0c;那需要参考参数DltLogChannelTrafficShapingBandwidth为每个Log通道设置发送带宽&#xff1b;如果为FALSE&#xff0c;那么…...

【LeetCode】剑指 Offer 56. 数组中数字出现的次数 p275 -- Java Version

1. 题目介绍&#xff08;56. 数组中数字出现的次数&#xff09; 面试题56.&#xff1a;数组中数字出现的次数&#xff0c; 一共分为两小题&#xff1a; 题目一&#xff1a;数组中只出现一次的两个数字题目二&#xff1a;数组中唯一只出现一次的数字 2. 题目1&#xff1a;数组中…...

Zookeeper集群 + Fafka集群

目录 第一章Zookeeper 概述 1.1.Zookeeper 定义 1.2.Zookeeper 工作机制 1.3.Zookeeper 特点 1.4.Zookeeper 数据结构 1.5.Zookeeper 应用场景 1.6.Zookeeper 原理之选举机制 1.7.部署 Zookeeper 集群 总结 第二章消息队列概述 2.1消息队列需求原因 2.2消息队列的优…...

全国青少年电子信息智能创新大赛(复赛)python·模拟四卷

目录 一、编程题 答案解析如下: 下载文档打印做题: 全国青少年电子信息智能创新大赛(复赛)python模拟四卷 一、编程题 第一题:描述 班上有学生若干名,给出每名学生的年龄《整数),求班上所有学生的平均年龄,保留到小数点后两企 输入 第一行有一个整数n (1<= n...

Redis - 介绍与使用场景

简介 Redis 的全称是 Remote Dictionary Server&#xff0c;是一个使用 C 语言编写的、开源的&#xff08;BSD 许可&#xff09;高性能非关系型&#xff08;NoSQL&#xff09;的键值对数据库。 Redis 的数据是存储在内存中的&#xff0c;所以读写速度非常快&#xff0c;被广泛…...

Spark SQL实战(07)-Data Sources

1 概述 Spark SQL通过DataFrame接口支持对多种数据源进行操作。 DataFrame可使用关系型变换进行操作&#xff0c;也可用于创建临时视图。将DataFrame注册为临时视图可以让你对其数据运行SQL查询。 本节介绍使用Spark数据源加载和保存数据的一般方法&#xff0c;并进一步介绍…...

Django DRF - 权限Permissions

权限Permissions 权限控制可以限制用户对于视图的访问和对于具体数据对象的访问。 在执行视图的dispatch()方法前&#xff0c;会先进行视图访问权限的判断在通过get_object()获取具体对象时&#xff0c;会进行对象访问权限的判断 1.提供的权限 AllowAny 允许所有用户IsAuth…...

二叉树(OJ)

单值二叉树&#xff08;力扣&#xff09; ---------------------------------------------------哆啦A梦的任意门------------------------------------------------------- 我们来看一下题目的具体要求&#xff1a; 既然我们都学了二叉树了&#xff0c;我们就应该学会如何去…...

mysql中增删改成的练习

文章目录一、表的创建1.student表的数据2、课程表的数据course3、学生成绩表的数据二、操作序列1、查询计算机系cs的全体学生学号、姓名和性别2、检索选修了课程号为2的学生号和姓名3、检索至少选修了三门课以上的学生号4、检索选修了全部课程的学生5、在原表的基础上创建一个视…...

谈一谈Java的ThreadLocal

目录 先说原理&#xff1a; 再上代码&#xff1a; 运行结果&#xff1a; 先说原理&#xff1a; ThreadLocal 是一个本地线程副本变量工具类&#xff0c;它可以在每个线程中创建一个副本变量&#xff0c;每个线程可以独立地修改自己的副本变量&#xff0c;而不会影响其他线程…...

边缘检测与阈值分割

Canny [1] Canny Edge Detection. https://docs.opencv.org/3.4/da/d22/tutorial_py_canny.html [2] OpenCV Edge Detection ( cv2.Canny ). https://pyimagesearch.com/2021/05/12/opencv-edge-detection-cv2-canny/ 由John F. Canny提出 1、由于边缘检测容易受噪声影响&…...

QQ空间无敌装逼,复制下面的任一代码粘贴即可出现意想不到的图案。

复制下面的任一代码粘贴即可出现意想不到的图案。 打赏代码&#xff1a; [em]e10033[/em]{uin:123,nick: 打赏了你一个冰淇淋,who:1} [em]e10033[/em] 打赏了100000000000.00元红包 [em]e10011[/em] 赞代码:{uin:0000,nick: xx、xx、xx、xx、xx、xx、xx、xx、xx、xx、xx、x…...

必看!总结5种JavaScript异步解决方案

1.回调 回调简单地理解为一个函数作为参数传递给另一个函数&#xff0c;回调是早期最常用的异步解决方案之一。 回调不一定是异步的&#xff0c;也不直接相关。 举个简单的例子&#xff1a; function f1(cb) {setTimeout(() > {cb && cb();}, 2000); }f1(() >…...

JUC并发编程高级篇第四章之ThreadLocal(人手一份,天下安)

文章目录1、ThreadLocal的简介1.1、常见的面试题(也是本次的讲解的内容&#xff09;1.2、什么是ThreadLocal1.3、ThreadLocal的所用1.4、没有出现ThreadLocal前后的变化1.5、ThreadLocal代码示例1.6、阿里巴巴对ThreadLocal的使用要求1.7、ThreadLocal的源码分析2、ThreadLocal…...

dump 定位分析

在缺少pdb的时候如何分析dump&#xff1f; windbgidaWindbg定位崩溃位置 通过windbg打开dump&#xff0c;并且分析dump !analyze -v 分析&#xff1a; 分析dump&#xff1a; !analyze -v错误原因&#xff1a;读取空指针错误线程&#xff1a;00001e04&#xff0c;可通过命令…...

(十二)排序算法-插入排序

1 基本介绍 1.1 概述 插入排序属于内部排序法&#xff0c;是对于欲排序的元素以插入的方式找寻该元素的适当位置&#xff0c;以达到排序的目的。 插入排序的工作方式非常像人们排序一手扑克牌一样。开始时&#xff0c;我们的左手为空并且桌子上的牌面朝下。然后&#xff0c;…...

elasticsearch 认知

1.大数据领域需要解决以下三个问题 如何存储数据 传统的关系数据库&#xff08;MySQL、Oracle、和Access等&#xff09;主导了20世纪的数据存储模式&#xff0c;但当数据量达到太字节级&#xff0c;甚至拍字节级时&#xff0c;关系型数据库表现出了难以解决的瓶颈问题。为了解决…...

小白也能搞定!用Docker和Halo 2.10搭建个人博客,再也不用担心公网访问问题

零基础玩转DockerHalo 2.10&#xff1a;打造高颜值个人博客全攻略 在数字内容创作爆发的时代&#xff0c;拥有一个专属博客空间已成为个人品牌建设的标配。但传统建站方案往往面临技术门槛高、维护成本大等痛点。本文将带你用Docker容器技术和Halo 2.10开源系统&#xff0c;30…...

Realistic Vision V5.1 创意工作流:利用GitHub管理提示词库与生成作品版本

Realistic Vision V5.1 创意工作流&#xff1a;利用GitHub管理提示词库与生成作品版本 你有没有遇到过这种情况&#xff1f;团队里每个人都在用Realistic Vision V5.1生成图片&#xff0c;但大家用的提示词五花八门&#xff0c;好的描述词散落在各个聊天记录里&#xff0c;生成…...

保姆级教程:给你的ClickHouse 23.8装上‘仪表盘’(Prometheus+Grafana监控配置详解)

ClickHouse 23.8全链路监控实战&#xff1a;从Prometheus埋点到Grafana告警设计 当你的ClickHouse集群查询延迟突然从200ms飙升到5秒&#xff0c;是内存不足&#xff1f;磁盘IO瓶颈&#xff1f;还是并发查询堆积&#xff1f;本文将带你构建一套完整的监控告警体系&#xff0c;让…...

SpringBoot+Vue社区老年人帮扶系统源码+论文

代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 分享万套开题报告任务书答辩PPT模板 作者完整代码目录供你选择&#xff1a; 《SpringBoot网站项目》1800套 《SSM网站项目》1500套 《小程序项目》1600套 《APP项目》1500套 《Python网站项目》…...

HDMI设备开发必看:EDID/E-EDID数据结构全解析(附实战代码)

HDMI设备开发实战&#xff1a;EDID/E-EDID二进制解析与工程实现 当你的HDMI设备无法正确识别显示器分辨率时&#xff0c;屏幕闪烁或黑屏的瞬间是否让你抓狂&#xff1f;作为连接数字世界的桥梁&#xff0c;EDID&#xff08;Extended Display Identification Data&#xff09;就…...

资源捕获高效解决方案:猫抓浏览器扩展让媒体提取更简单

资源捕获高效解决方案&#xff1a;猫抓浏览器扩展让媒体提取更简单 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在当今数字时代&#xff0c;我们每天都在网页上浏览大量的媒体内容&#xff0c;从精…...

GSMA:运营商实践AI大模型赋能垂直行业标杆案例集 2025

这份《运营商实践 AI 大模型赋能垂直行业标杆案例集 2025》由 GSMA 发布&#xff0c;聚焦客户服务与运营创新、医疗健康与智慧教育、产业升级与智能制造、公共服务与社会治理四大领域&#xff0c;系统梳理了中国移动、中国电信、中国联通三大运营商携手生态伙伴&#xff0c;将 …...

突破软件授权限制:基于注册表权限控制的持久化使用方案——以下载工具为例

突破软件授权限制&#xff1a;基于注册表权限控制的持久化使用方案——以下载工具为例 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 一、场景痛点&#xff1a;…...

CTFHub | 解密MySQL、Redis、MongoDB流量中的隐藏Flag

1. 数据库流量分析入门&#xff1a;为什么需要Wireshark&#xff1f; 当你参加CTF比赛时&#xff0c;经常会遇到需要从数据库流量中寻找Flag的题目。这类题目通常会给你一个抓包文件&#xff08;pcap格式&#xff09;&#xff0c;里面记录了MySQL、Redis或MongoDB等数据库的网络…...

基于关键链方法的遗传算法求解项目调度问题

一、问题背景与核心思想 项目调度问题&#xff08;Project Scheduling Problem, PSP&#xff09;是在满足活动逻辑关系&#xff08;紧前约束&#xff09;和资源约束&#xff08;如人力、设备&#xff09;的前提下&#xff0c;确定各活动开始/结束时间&#xff0c;以最小化项目工…...