K8S命令行可视化实验

news2024/11/24 17:26:22

以下为K8s命令行可视化工具的实验内容,相比于直接使用命令行,可视化工具可能更直观、更易于操作。

Lens

Lens是用于监控和调试的K8S IDE。可以在Windows、Linux以及Mac桌面上完美运行。在 Kubernetes 上:

托管地址:github/lensapp/lens开发语言:TypeScript项目热度(星):16100

IDE下载地址:https://k8slens.dev/

Lens官方文档:https://docs.k8slens.dev/

安装Lens

  1. Linux 直接snap安装即可,sudo snap install kontena-lens --classic
  2. Window

下载软件安装即可,但是需要创建账号,并且需要付费,目前是14天免费使用,创建账号后会有一个用于登录code,在登录的时候把那段代码填进去就可以登录。

本次实验是在window环境下完成的,所以直接下载桌面应用

使用Lens

添加集群

首先找到k8s集群的config文件,命令:

cat ~/.kube/config

将上述命令的输出内容复制,在lens中添加集群的时候会用到

然后将​​cat ~/.kube/config​​命令输出的内容,也就是k8s的config文件的信息填入到下方的红框,点击“add clusters”

即可添加集群成功

连接集群

双击刚才添加完成的集群,完成集群的连接。

当集群的状态是“connected”即可,表示集群连接成功,在页面就能看到已经连接的集群的相关信息。

如下是连接好的集群的状态信息:

  • 左侧是一些资源分类
  • 右侧是资源的显示面板

基本操作
新建命名空间

平时用命令行新建命名空间 ;​​len-test​​,需要执行命令:

kubectl create ns lens-test

在Lens可视化工具中只需要点击 Namespace 界面右下方的 ​​+​​,写好名字就能创建了。

新建Deployment

如果要创建 Deployment,一般是写好 yaml 文件,然后执行命令:

kubectl create -f deployment.yaml
// deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
  namespace: lens-test
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

而在 Lens 里只需点击 ​​Create resource​​,然后将 yaml 贴到文本框就好了:

在创建资源的时候,除了可以自己填写yaml文件,还能选择Lens提供的yaml模版,如下图所示:

选择对应的资源名称,例如Deployment,自动填充yaml文件,用户可以直接创建也能够自定义修改。

创建好的Deployment如下图:

上图中Condtions字段:在 Kubernetes 的 Deployment 控制器中,​​progressing​​​ 和 ​​available​​ 是与滚动更新相关的两个状态条件。它们用于描述 Deployment 的不同阶段和可用性。

  1. Progressing(进行中):
  1. 当 Deployment 正在进行滚动更新时,这个条件会被设置为 ​​True​​,表明正在逐步更新 Pods,但还没有达到期望的状态。例如,可能有一些 Pods 正在启动,而另一些 Pods 已经被停止,处于更新的过程中。
  1. Available(可用性):
  1. 当所有 Pods 都已成功启动并运行,并且没有出现故障时,​​Available​​​ 被设置为 ​​True​​​。如果某些 Pods 处于不可用状态,​​Available​​​ 就会被设置为 ​​False​​。
调整副本

这个 Deployment 目前只有 3 个副本,想调整下副本数该怎么操作呢?

现在选择 Deployment 并点击 ​​Scale​​ 就可以调整副本了:

进入容器

有时我们需要进到容器里去查看状况。如果用命令行的话,需要先获取到 Pod 的名字,然后再连接:

//获取 Pod 的名字
kubectl  get pod -n test
NAME                                      READY   STATUS    RESTARTS   AGE
nginx-deployment-basic-54f57cf6bf-ktw4f   1/1     Running   0          52m
nginx-deployment-basic-54f57cf6bf-tfstr   1/1     Running   0          30m

//连接
kubectl exec -it nginx-deployment-basic-54f57cf6bf-ktw4f bash -n test

现在只需在 Pods 界面选择 Pod,然后点击 ​​Shell​​ 就可以连接了:

K9S

K9S提供一个来与K8S集群交互的终端UI。可以类比为针对K8S集群的Top命令。可以轻松列出、观察和管理集群中各个应用程序。

托管地址:github/derailed/k9s开发语言:Golang项目热度(星):14000

下载地址:https://github.com/derailed/k9s/releases

安装K9S

下载命令:

curl -sS https://webinstall.dev/k9s | bash

本实验环境上述命令执行失败,故在下载地址:https://github.com/derailed/k9s/releases中下载了v0.26.7/k9s_Linux_x86_64.tar.gz安装包。然后放在/usr/local/bin目录下

安装命令:

$tar -zxvf k9s_Linux_x86_64.tar.gz
LICENSE
README.md
k9s
$ mv k9s /usr/local/bin/
$ls
k9s  k9s_Linux_x86_64.tar.gz  LICENSE  README.md
$k9s
//使用该命令就会弹出当前集群资源的统计信息

然后就会弹出当前集群资源的统计信息。K8S集群中资源的变化是实时出现的。用于显示当前的这些信息非常有用。

参数解释:

  • NAMESPACE(命名空间): 显示 Pod 所属的 Kubernetes 命名空间。命名空间是 Kubernetes 中用于隔离和组织资源的一种方式。
  • NAME(名称): 显示 Pod 的名称。
  • PF(端口转发): 如果有端口转发(Port Forwarding)正在运行,将显示一个 ● 符号。
  • READY(就绪状态): 显示 Pod 中容器的就绪状态。例如,​​1/1​​ 表示有一个容器,且该容器的就绪状态为 1。
  • RESTARTS(重启次数): 显示容器的重启次数。如果容器发生故障或被重启,将增加此计数。
  • STATUS(状态): 显示 Pod 的当前状态。
  • IP(IP 地址): 显示 Pod 的 IP 地址。
  • NODE(节点): 显示 Pod 所在的 Kubernetes 节点。
  • AGE(运行时间): 显示 Pod 运行的时间。

使用K9S

K9s使用别名来定位到大多数K8s资源。这里贴出K9S官方的按键绑定。

使用方法:在输入 ​​k9s​​ 后,弹出集群资源信息页面,然后直接输入上述的快捷键命令,就能完成指定操作。

​:ctx ​​ 是用来切换集群的。

/-f filter​​ 根据提供的正则表达式进行搜索 ​​/filter​​ 相当于一个简单的文本搜索功能。

与 kubectl 相同,K9s 启动时会读取默认的 ​​kubeconfig​​。

如果有多个 config 文件,可以通过 ​​--kubeconfig​

k9s --kubecnotallow=/.kube/config
ctrl+a指令-显示所有可用资源的别名

通过这个快捷键我们可以快速查看K8s的资源别名(缩写),帮助我们轻松资源,提高工作效率。

第一列为k8s资源名称,第二列为K9s 控制台对应的资源简称(别名)。

以只读权限运行k9s

k9s为用户提供了方便的管理k8s资源的方式,同时也带来了安全上的风险,为了避免误操作对环境造成影响,我们可以在启动k9s时指定参数,以只读方式运行:

k9s --readonly
?-显示K9s提供的命令控制台的快捷键。

/-进入过滤模式

输入​​/etcd​​,对当前视图下的资源进行过滤,查找含有etcd字符串的

所有​​pod​​:

过滤的字段包括 名称、标签、运行状态。

什么也不输入的资源显示图:

输入/-f etcd 的结果图:

Esc

相当于历史回退按键,表示上一步

: -进入命令行模式

允许你输入想要查看的任何资源/资源别名。例如:​​:deploy​​​,​​:svc​​​...... 输入​​​:ns​​​,查看当前集群的所有​​namespace​​:

和k8s一样,可以查看指定命名空间的资源,命令格式​​:资源类型 namespace​​​。 输入​​​:cm default​​​,看一下​​default​​​名称空间下的​​configmap​​资源如下:

注意:k9s不能够一键查看所有资源,只能依据输入的资源类型进行查看

d y l e

​d​​​ ​​y​​​ ​​l​​​ ​​e​​​:分别对应于​​describe​​​ ​​yaml​​​ ​​logs​​​ ​​edit​

通过上下按键或者鼠标选中资源,然后输入 y 就能查看它的yaml文件

注意:一般来说,K9s 支持编辑的资源对象包括 Deployment、StatefulSet、Pod、ConfigMap、Secret 等常见的 Kubernetes 资源。这些资源对象通常都是可以被编辑的,因为它们具有一些可修改的属性,比如副本数、标签、容器镜像等。

Ctrl+z-快速定位资源错误信息

筛选出错误的资源列表,再按一次​​Ctrl+z​​就会显示所有状态的资源

Ctrl+d-删除选中的K8s资源,删除前提示

Ctrl+k-直接删除资源,没有提示
使用 XRay 视图获取资源的树状关系图

通过 ​​:x <res> [ns]​​​ 可以进入 XRay 视图,从而查看和遍历资源之间的关系和关联,并检查引用的完整性。比如我们通过 ​​:x dp​​ 可以进入如下的 Deployments 资源 XRay 视图,它会以 Deployments 为基础通过树状关系图罗列其所包含的 Pods 及 Pods 所绑定的其它资源。目前 XRay 支持探查:Pods, Deployments, StatefulSets, Services, DaemonSets。

:x pod

:q Ctrl c-退出K9s
在指定命名空间运行k9s
k9s -n default

获取帮助指令
k9s help
获取全部操作指令
k9s
# 输入 ?
?

注:k9s没有创建资源的功能

Kubetree

一个应用程序可以有很多不同的资源,它们的映射总是显而易见的。 Kubetree可以用来显示K8S对象之间的所有权关系的插件:

托管地址:https://github.com/ahmetb/kubectl-tree开发语言:Shell项目热度(星):1900

安装Kubetree

kubectl krew install tree
kubectl tree --help

使用Kubetree(未成功)

说明:安装是成功的,但是不能使用,报错结果如下所示。经过查询,是Kubernetes Ingress 资源的 API 版本是​​extensions/v1beta1​​,而在 Kubernetes 版本 v1.14 之后,这个 API 版本就被弃用(deprecated),在 v1.22 版本之后将不再可用。需要更新 API 版本。

kubetail

kubetail可以非常方便的查看多个pod的日志

kubetail将来自多个pod的日志聚合到一个流中。它的效果类似于对多个pods运行kubectl logs -f。

要一次性跟踪两个“app2”pods的日志,只需执行以下操作:

$ kubetail app2

要仅跟踪来自多个pod的特定容器,请按如下方式指定容器:

$ kubetail app2 -c container1

您可以重复​​-c​​来跟踪多个特定容器:

$ kubetail app2 -c container1 -c container2

要同时跟踪多个应用程序,请用逗号分隔它们:

$ kubetail app1,app2

可以在pod中指定容器:

kubetail app2 -c container1
kubectail app2 -c container1 -c container2

托管地址:github/johanhaleby/kubetail开发语言:Golang项目热度(星):2400

安装 Kubetail

由于 Kubetail 只是一个 Shell 脚本,直接下载后便可使用。

$ wget https://raw.githubusercontent.com/johanhaleby/kubetail/master/kubetail
$ chmod +x kubetail
$ cp kubetail /usr/local/bin

因服务器无法联网,本次实验直接在kubetail代码托管地址的release地址下载脚本,下载下来的目录中有一个‘kubetail’文件,把他放在服务器的/usr/local/bin目录下,并且使用​​chmod +x kubetail​​更改它的权限,就可以使用了。

使用 Kubetail

Kubetail 的使用,基本语法如下:

kubetail <search term> [-h] [-c] [-n] [-t] [-l] [-d] [-p] [-s] [-k] [-v] [-r] [-i]

一些常用参数的解释:

-c:指定多 Pod 中的容器名称

-t:指定 Kubeconfig 文件中的 Context

-l:标签过滤器,使用 -l 参数之后,会忽略 Pod 名称

-n:指定命名空间

-s:指定返回一个相对时间之后的日志,例如 5s,2m 或者 3h,缺省是 10s

-k:指定输出内容的具体着色部分,pod:只给 pod 名称上色,line:整行上色(缺省),false:不上色

一些使用实例:

上图是实验截图,下面的是网图。

​kubectl log​​ 更适合查看单个pod的日志,而 ​​kubetail​​ 更适合查看 多个Pod 的日志。

不同的pod用不同的颜色标识

Kube-shell(未成功)

失败原因:Kube-shell是基于​​python​​-prompt-toolkit实现的,旨在提供Kubectl的易用性并提高生产力。,需要先部署python环境,需要安装依赖项,用到apt install ,该命令在服务器中执行不了(估测是服务器网络问题)所以没成功。

在使用kubectl命令时候很多繁琐的选项不好记忆,容易记错,如果在输入命令时候能自动提示和补全则会非常有效。kube-shell是Kubernetes CLI的集成shell。它提供了易于使用的kubectl以提高生产力:

托管地址:github/cloudnativelabs/kube-shell开发语言:Python项目热度(星):2000

Kubectx-Kubens

使用kubectl操作kubernetes集群的过程中,可能会遇到需要操作不同集群的问题

对于管理多个K8S集群的伙伴, kubectx可以帮助在集群之间无缝切换:

kubectx获取集群相关信息时,常常需要在kubectl命令中指定命名空间。而kubens则允许我们可以省略该参数。

托管地址:https://github.com/ahmetb/kubectx 开发语言:Golang项目热 度(星):11600

安装Kubectx

安装命令:

curl https://github.com/ahmetb/kubectx/releases/download/v0.9.5/kubectx -o usr/local/bin/kubectx
chmod +x usr/local/bin/kubectx

本次实验环境的安装:打开https://github.com/ahmetb/kubectx/releases/download/v0.9.5/kubectx下载文件,然后放到服务器上,移动文件位置到 /usr/local/bin 命令是:mv kubectx /usr/local/bin,再更改文件的权限 chmod +x usr/local/bin/kubectx,最后就可以使用命令了。

使用Kubectx

常用命令:

kubectx                     : 列出目前所有的context
kubectx <NAME>              : 切换到<NAME>对应的context
kubectx -                   : 切换到上一次的context
kubectx <NEW NAME>=<NAME>   : 给<NAME>context命名一个新名字
kubectx <NAME>=.            : 给当前context命名一个新名字

集群切换

安装Kubens

linux环境:

curl -L https://github.com/ahmetb/kubectx/releases/download/v0.9.1/kubens -o usr/local/bin/kubens
chmod +x /bin/kubens

k8s每次查看指定命名空间的资源都需要加 -n 命名空间 来指定命名空间,我们可以通过开源项目​​kubens​​来切换当前命名空间,切换命名空间后,就无需每次都使用 -n 命令来指定命名空间了。

使用Kubens

列出所有的ns
[root@master-1 ~]# kubens  ##列出当前命名空间
default # 当前 ns 会有突出颜色显示
etcd-backup
kube-node-lease
kube-public
kube-system
kubesphere-controls-system
kubesphere-devops-system
kubesphere-monitoring-federated
kubesphere-monitoring-system
kubesphere-system
lens-test
切换ns
[root@master-1 ~]# kubens kube-system ##切换命名空间为kube-system
Context "kubernetes-admin@kubernetes" modified.
Active namespace is "kube-system".
  
[root@master-1 ~]# kubectl get pods ##切换命名空间后,无需指定命名空间,即可查看切换后的命名空间资源
NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-578894d4cd-k4ccx   1/1     Running   0          39h
calico-node-4svc2                          1/1     Running   0          39h
calico-node-r8xlx                          1/1     Running   0          7h42m
calico-node-vvksl                          1/1     Running   0          7h47m
coredns-7ff77c879f-sz87s                   1/1     Running   0          2d1h
coredns-7ff77c879f-v8vg8                   1/1     Running   0          2d1h
etcd-master-11                             1/1     Running   0          2d1h
kube-apiserver-master-11                   1/1     Running   0          2d1h
kube-controller-manager-master-11          1/1     Running   16         2d1h
kube-proxy-4q2fg                           1/1     Running   0          2d1h
kube-proxy-fpn7d                           1/1     Running   0          7h42m
kube-proxy-mvwf7                           1/1     Running   0          7h47m
kube-scheduler-master-11                   1/1     Running   17         2d1h
metrics-server-57bc7f4584-zkbqz            1/1     Running   0          6h48m

Kube-Capacity

kube-capacity是一个简单的CLI,提供了Kubernetes集群中资源请求、限制和使用的概况。帮助我们快速查看概览整个集群和​​pod​​的资源配置情况。

检查集群节点:

加--pods查看Pods信息:

托管地址:github/ robscott/kube-capacity开发语言:golang项目热度(星):767

安装Kube-Capacity

kubectl krew install resource-capacity

本实验的安装方法是在https://github.com/robscott/kube-capacity/releases下载​​kube-capacity_v0.7.4_linux_x86_64.tar.gz​​,然后将下载下来的文件解压,将其中的kube-capacity二进制文件放到/usr/local/bin目录下,就可以使用kube-capacity命令了

使用Kube-Capacity

默认情况下,​​kube-capacity​​​ 将输出一个节点列表,其中包含 ​​CPU​​​ 和内存资源请求的总数以及在它们上运行的所有 ​​pod​​ 的限制。对于具有多个节点的集群,第一行还将包括集群范围的总数。该输出将如下所示:

--pods

对于更详细的输出,​​kube-capacity​​​ 可以在输出中包含 ​​pod​​​。当​​-p​​​或​​--pods​​​被传递给 ​​kube-capacity​​​ 时,它将包含如下所示的特定于 ​​pod ​​的输出

显示 Pod 计数

要显示每个节点和整个集群的 ​​pod ​​​数量,可以通过​​--pod-count​​参数:

按标签过滤
kube-capacity --pod-labels app=nginx
//这个命令将显示具有标签 app=nginx 的所有 Pod 的资源容量信息。
kube-capacity --namespace kube-system
//这个命令将显示命名空间为 kube-system 的所有 Pod 的资源容量信息。
kube-capacity --namespace-labels team=api
//这个命令将显示具有命名空间标签 team=api 的所有 Pod 的资源容量信息。
kube-capacity --node-labels kubernetes.io/role=node
//这个命令将显示具有节点标签 kubernetes.io/role=node 的所有节点的资源容量信息。

JSON和YAML输出

默认情况下,​​kube-capacity​​​ 将以表格格式提供输出。要以 ​​JSON ​​​或 ​​YAML​​ 格式查看此数据,可以使用输出标志。以下是一些示例命令:

kube-capacity --pods --output json
kube-capacity --pods --containers --util --output yaml

结论

  1. 使用K9S、Kube-Capacity、Kubectx-Kubens、kubetail命令行来提高运维能力,部署入版本
  2. k8s命令行可视化工具可帮助kubernetes管理员、开发人员更好的监控和维护k8s集群

参考资料:

  1. ​​mp.weixin.qq.com​​
  2. ​​https://zhuanlan.zhihu.com/p/335000575(lens的使用参考)​​
  3. ​​https://www.hi-linux.com/posts/43085.html(kubetail的安装)​​
  4. ​​https://zhuanlan.zhihu.com/p/642469576(kubetail的使用)​​
  5. ​​https://www.cnblogs.com/xunweidezui/p/15607080.html(kube-shell的安装使用)​​
  6. ​​https://blog.csdn.net/engchina/article/details/122664763(正常k9s的安装)​​
  7. ​​https://www.jianshu.com/p/42f7e1e53410(k9s的使用)​​
  8. ​​https://juejin.cn/post/6847902224983539720(k9s的配置文件参考、自定义别名、自定义快捷键)​​
  9. ​​https://blog.csdn.net/weixin_40449300/article/details/117093982(kubetree的安装)​​
  10. ​​https://blog.csdn.net/qq_41337034/article/details/108576266(kubens的安装)​​
  11. ​​https://zhuanlan.zhihu.com/p/539180125(kube-capacity使用参考)​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1559461.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

登录者个人信息查询

目录 &#x1f95e;1.vo层描述 &#x1f37f;2..vo层创建 &#x1f32d;3.编写controller层 &#x1f953;4.service层 &#x1f9c2;5.测试 1.vo层描述 Spring Boot项目中的实体类通常用于映射数据库表&#xff0c;包含了业务对象的所有属性。然而&#xff0c;前端或其…

Verilog基础【一】

文章目录 1.1 第一个verilog设计1.2 Verilog 简介1.3 Verilog环境搭建1.4 Verilog 设计方法设计方法设计流程 2.1 Verilog 基础语法格式注释标识符与关键字 2.2 Verilog 数值表示数值种类整数数值表示方法实数表示方法十进制&#xff1a;科学计数法&#xff1a; 字符串表示方法…

如何做慢查询优化?

如何做慢查询优化&#xff1f; 这个问题可以说是一个高频问题&#xff0c;总是被问到&#xff0c;今天来总结下这个问题。 慢查询&#xff0c;就是 SQL 查询中耗时比较大的一类查询&#xff0c;MySQL 提供了慢查询日志 slow_query_log&#xff0c; 它会记录耗时大于我们设置…

【Chapter2】进程、线程与作业,计算机操作系统教程,第四版,左万利,王英

文章目录 [toc] 一、多道程序设计1.1单道程序设计的缺点1.2多道程序设计的提出1.3多道程序设计存在的问题 二、进程的引入2.1进程的概念2.2进程的组成2.2.1进程控制块2.2.2程序 2.3进程的类型及特征2.3.1进程的类型2.3.2进程的特征 2.4进程的状态及转换2.4.1进程的状态创建态就…

项目亮点—动态线程池管理工具

问题 你是否在项目中使用线程池遇到过以下问题&#xff1f; 1.创建线程池核心参数不好评估&#xff0c;随着业务流量的波动&#xff0c;极有可能出现生产故障。 2.不支持优雅关闭&#xff0c;当项目关闭时&#xff0c;大量正在运行的线程池任务被丢弃。 3.不支持运行时监控…

java每日一题——分礼物(多线程运用)

前言&#xff1a; 运用了多线程的综合案例&#xff0c;顺便熟悉一下其他语法。打好基础&#xff0c;daydayup!!! 题目&#xff1a; 有100份礼物&#xff0c;小红小明同时发送&#xff0c;当剩下的礼物小于10份的时候则不再送出&#xff0c;利用多线程模拟该过程并将线程的名称…

R2GenCMN中的Encoder_Decoder结构

R2GenCMN中的 Encoder_Decoder 结构 Encoder_Decoder 结构直接关系到文本的生成&#xff0c;它结构参考的transformer的结构 我们这里主要看代码的实现&#xff0c;从视觉编码器的输出开始 1. 模型结构 首先介绍一下整体结构&#xff0c;这里的baseCMN其实就是一个包装了的T…

2024年noc指导教师认证测评参考试题题目5-6合集

[noc指导教师认证] 测评参考试题 说明:NOC教师指导认证考试题目是从题库里抽题,因此每位老师每次考试题目都不一样以下题目为测试考试时收集到的一些题目,作为辅助提供给各位老师,老师们可以记住题目及答案的具体内容 (选项顺序会变),以免考试时遇到。2024年的做的题目有的…

两张图片相似度匹配算法学习路线

大纲&#xff1a;​​​​​​目标跟踪基础&#xff1a;两张图片相似度算法-腾讯云开发者社区-腾讯云 (tencent.com) 目标跟踪基础&#xff1a;两张图片相似度算法 (qq.com) 一、传统方法 1.欧式距离&#xff08;用于判断是否完全相同&#xff09; [三维重建] [机器学习] 图…

RAG进阶笔记:RAG进阶

1 查询/索引部分 1.1 层次索引 创建两个索引——一个由摘要组成&#xff0c;另一个由文档块组成分两步进行搜索&#xff1a;首先通过摘要过滤出相关文档&#xff0c;接着只在这个相关群体内进行搜索 1.2 假设性问题 让LLM为每个块生成一个假设性问题&#xff0c;并将这些问…

一文看懂DDR1到DDR5的演变

DDR内存技术自问世以来&#xff0c;已经经历了多代的迭代和优化。每一代DDR内存都在性能、容量、功耗和功能上有所提升。以下是从DDR1到DDR5的主要区别和特点&#xff1a; DDR1 DDR1是第一代双倍数据速率同步动态随机存取存储器&#xff0c;标志着内存技术的一个重要里程碑。…

网安基础2-Sniffer的使用与防范

1. 嗅探器sniffer的工作原理 能捕获经过该网络设备的报文&#xff0c;通过分析网络流量&#xff0c;找出关键信息&#xff0c;解决网络问题。 不同于键盘捕获程序&#xff0c;如keylogger利用中断或钩子技术&#xff0c;Sniffer将网络接口置成适当的模式&#xff0c;如杂收。…

瑞吉外卖实战学习--9、mybatisPlus公共字段自动填充

mybatisPlus公共字段自动填充 前言实现步骤实体类添加注解按照框架要求编写元数据对象处理器&#xff0c;在此类中统一为公共字段赋值&#xff0c;此类需要实现MetaObjectHandler接口1、在创建和更新的时候修改创建和更新的时候自动填充时间2、如何获取到当前的id 测试结果 前言…

Vision Mamba 双向状态空间模型下的高效视觉表示学习

论文题目&#xff1a;Vision Mamba: Efficient Visual Representation Learning with Bidirectional State Space Model 双向状态空间模型下的高效视觉表示学习 论文链接&#xff1a;http://arxiv.org/abs/2401.09417 代码链接&#xff1a;https://github.com/hustvl/Vim 1、…

Java中的多线程和线程安全问题

线程 线程是操作系统进行调度的最小单位。一个进程至少包含一个主线程&#xff0c;而一个线程可以启动多个子线程。线程之间共享进程的资源&#xff0c;但也有自己的局部变量。多线程程序和普通程序的区别&#xff1a;每个线程都是一个独立的执行流&#xff1b;多个线程之间是…

大模型面试准备(九):简单透彻理解MoE

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学&#xff0c;针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何备战、面试常考点分享等热门话题进行了深入的讨论。 合集在这…

C++list的模拟实现

为了实现list&#xff0c;我们需要实现三个类 一、List的节点类 template<class T> struct ListNode {ListNode(const T& val T()):_pPre(nullptr),_pNext(nullptr),_val(val){}ListNode<T>* _pPre;ListNode<T>* _pNext;T _val; }; 二、List的迭代器…

双网卡环境概率出现DNS解析错误

测试环境 VMware Rocky Linux 9 虚拟机, 双网卡(eth0和eth1)配置如下&#xff1a; eth0 10.206.216.27/24 DNS 10.204.16.18 eth1 192.168.1.27/24 DNS 192.168.1.1问题描述 手动配置eth1的DNS后&#xff0c;网络不通&#xff0c;通过抓包发现是eth1的DNS server配置有误…

【JavaWeb】Day29.SpringBootWeb请求响应——请求(二)

请求响应 4.数组集合参数 数组集合参数的使用场景&#xff1a;在HTML的表单中&#xff0c;有一个表单项是支持多选的(复选框)&#xff0c;可以提交选择的多个值。 4.1 数组 数组参数&#xff1a;请求参数名与形参数组名称相同且请求参数为多个&#xff0c;定义数组类型形参即…

springboot简历系统

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;简历系统当然也不能排除在外。简历系统是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;采用…