(二十一)、Docker 部署 Minikube 使用可视化管理工具 Kuboard
文章目录
- 1、介绍
- docker 运行 minikube 集群节点(kube-apiserver )无法被直接访问的问题
- Kuboard 需要访问到 k8s 集群的kube-apiserver
- 2、安装 Kuboard
- 2.1、k8s 集群节点可以被外部直接访问的情况
- 2.1.1、下载镜像
- 2.1.2、运行 deployment.yml
- 2.1.3、访问 Kuboard
- 2.2、k8s 集群节点无法被外部直接访问的情况
- 2.2.1.、细节
- 2.2.2、 修改完后的文档
- 2.2.3、 执行 yaml,部署 Kuboard 的Pod和NodePort
- 2.2.4、确定Pod运行状态
- 2.2.5、访问 Kuboard
- 3、Kuboard 添加集群
- 4、Kuboard 查看k8s 集群内容
- 5、体验自动/手动伸缩功能
1、介绍
访问 Kuboard 官网
docker 运行 minikube 集群节点(kube-apiserver )无法被直接访问的问题
对于本系列,系统环境是 mac(OS 14.3.1) ,此版本的OS 系统暂不支持以 Virtual Box 方式运行 minikube 。
使用 docker 部署 minikube 会有一个问题,就是minikube 的内部地址没有办法直接被宿主机访问。
对于docker 运行 minikube ,在k8s 中部署的服务,可以通过 NodePort 方式暴露服务,然后通过隧道端口被宿主机直接访问。
但是对于集群节点,这种方式行不通,即无法为表示集群节点的 kube-apiserver 提供一个可以直接被宿主机访问的端口映射。
Kuboard 需要访问到 k8s 集群的kube-apiserver
Kuboard 通过代理地址和 k8s 集群进行交互,如果 k8s 服务不可访达,那么交互就无从谈起。
2、安装 Kuboard
2.1、k8s 集群节点可以被外部直接访问的情况
比如使用 Virtual Box 安装minikube 的模式,或者 docket dasktop 自带 k8s 的模式。
直接使用 docker 安装 Kuboard 即可。
这里使用 本机 Docker 安装独立的 Kuboard V3 版本

2.1.1、下载镜像
docker pull swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3
2.1.2、运行 deployment.yml
这里具体采取的配置为 8081 为宿主机访问Kuboard的端口,30081 为Kuboard访问 k8s 集群的代理端口
192.168.58.2 为
docker volume create kuboard-data
docker run -d \--restart=unless-stopped \--name=kuboard \-p 80:80/tcp \-p 10081:10081/tcp \-e KUBOARD_ENDPOINT="https://192.168.58.2:8443" \-e KUBOARD_AGENT_SERVER_TCP_PORT=30081 \-v kuboard-data:/data/kuboard \swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3
2.1.3、访问 Kuboard
http://127.0.0.1:8081/
默认登陆名和密码是
admin/Kuboard123
2.2、k8s 集群节点无法被外部直接访问的情况
比如本系列中,使用 docker 部署 minikube ,此时k8s 集群节点无法被外部直接访问,我们直接在 K8s 内部署 Kuboard,利用k8s 集群内可以自由通信的特性,再把 Kuboard 以NodePort 的形式暴露出来。
2.2.1.、细节
- 确认 node 节点ip
192.168.49.2
➜ ~ kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
minikube Ready control-plane 25m v1.31.0 192.168.49.2 <none> Ubuntu 22.04.4 LTS 5.15.49-linuxkit docker://27.2.0
- 确认 storageclass,比如下面查询到叫 standard
standard
➜ ~ kubectl get storageclass
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
standard (default) k8s.io/minikube-hostpath Delete Immediate false 21m
- 下载 kuboard-v3.yaml,对其中的内容进行修改
官方链接
第一把 KUBOARD_ENDPOINT: ‘http://your-node-ip-address:30080’ 中 your-node-ip-address 修改为 kubectl get nodes -o wide 查询获得的ip (我这里是 192.168.49.2 )
第二是把 storageClassName: please-provide-a-valid-StorageClass-name-here 中please-provide-a-valid-StorageClass-name-here修改为 kubectl get storageclass 查询得到的name (我这里是 standard)
第三,对 PVC 部分修改为下面内容-增加了一行 storageClassName: standard
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: kuboard-data-pvc
namespace: kuboard
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi # 根据需要调整大小
storageClassName: standard # 确保与您的 PV 的存储类匹配
2.2.2、 修改完后的文档
---
apiVersion: v1
kind: Namespace
metadata:name: kuboard---
apiVersion: v1
kind: ConfigMap
metadata:name: kuboard-v3-confignamespace: kuboard
data:# 关于如下参数的解释,请参考文档 https://kuboard.cn/install/v3/install-built-in.html# [common]KUBOARD_ENDPOINT: 'http://192.168.49.2:30080'KUBOARD_AGENT_SERVER_UDP_PORT: '30081'KUBOARD_AGENT_SERVER_TCP_PORT: '30081'KUBOARD_SERVER_LOGRUS_LEVEL: info # error / debug / trace# KUBOARD_AGENT_KEY 是 Agent 与 Kuboard 通信时的密钥,请修改为一个任意的包含字母、数字的32位字符串,此密钥变更后,需要删除 Kuboard Agent 重新导入。KUBOARD_AGENT_KEY: 32b7d6572c6255211b4eec9009e4a816 # 关于如下参数的解释,请参考文档 https://kuboard.cn/install/v3/install-gitlab.html# [gitlab login]# KUBOARD_LOGIN_TYPE: "gitlab"# KUBOARD_ROOT_USER: "your-user-name-in-gitlab"# GITLAB_BASE_URL: "http://gitlab.mycompany.com"# GITLAB_APPLICATION_ID: "7c10882aa46810a0402d17c66103894ac5e43d6130b81c17f7f2d8ae182040b5"# GITLAB_CLIENT_SECRET: "77c149bd3a4b6870bffa1a1afaf37cba28a1817f4cf518699065f5a8fe958889"# 关于如下参数的解释,请参考文档 https://kuboard.cn/install/v3/install-github.html# [github login]# KUBOARD_LOGIN_TYPE: "github"# KUBOARD_ROOT_USER: "your-user-name-in-github"# GITHUB_CLIENT_ID: "17577d45e4de7dad88e0"# GITHUB_CLIENT_SECRET: "ff738553a8c7e9ad39569c8d02c1d85ec19115a7"# 关于如下参数的解释,请参考文档 https://kuboard.cn/install/v3/install-ldap.html# [ldap login]# KUBOARD_LOGIN_TYPE: "ldap"# KUBOARD_ROOT_USER: "your-user-name-in-ldap"# LDAP_HOST: "ldap-ip-address:389"# LDAP_BIND_DN: "cn=admin,dc=example,dc=org"# LDAP_BIND_PASSWORD: "admin"# LDAP_BASE_DN: "dc=example,dc=org"# LDAP_FILTER: "(objectClass=posixAccount)"# LDAP_ID_ATTRIBUTE: "uid"# LDAP_USER_NAME_ATTRIBUTE: "uid"# LDAP_EMAIL_ATTRIBUTE: "mail"# LDAP_DISPLAY_NAME_ATTRIBUTE: "cn"# LDAP_GROUP_SEARCH_BASE_DN: "dc=example,dc=org"# LDAP_GROUP_SEARCH_FILTER: "(objectClass=posixGroup)"# LDAP_USER_MACHER_USER_ATTRIBUTE: "gidNumber"# LDAP_USER_MACHER_GROUP_ATTRIBUTE: "gidNumber"# LDAP_GROUP_NAME_ATTRIBUTE: "cn"---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: kuboard-etcdnamespace: kuboardlabels:app: kuboard-etcd
spec:serviceName: kuboard-etcdreplicas: 3selector:matchLabels:app: kuboard-etcdtemplate:metadata:name: kuboard-etcdlabels:app: kuboard-etcdspec:containers:- name: kuboard-etcdimage: swr.cn-east-2.myhuaweicloud.com/kuboard/etcd:v3.4.14ports:- containerPort: 2379name: client- containerPort: 2380name: peerenv:- name: KUBOARD_ETCD_ENDPOINTSvalue: >-kuboard-etcd-0.kuboard-etcd:2379,kuboard-etcd-1.kuboard-etcd:2379,kuboard-etcd-2.kuboard-etcd:2379volumeMounts:- name: datamountPath: /datacommand:- /bin/sh- -c- |PEERS="kuboard-etcd-0=http://kuboard-etcd-0.kuboard-etcd:2380,kuboard-etcd-1=http://kuboard-etcd-1.kuboard-etcd:2380,kuboard-etcd-2=http://kuboard-etcd-2.kuboard-etcd:2380"exec etcd --name ${HOSTNAME} \--listen-peer-urls http://0.0.0.0:2380 \--listen-client-urls http://0.0.0.0:2379 \--advertise-client-urls http://${HOSTNAME}.kuboard-etcd:2379 \--initial-advertise-peer-urls http://${HOSTNAME}:2380 \--initial-cluster-token kuboard-etcd-cluster-1 \--initial-cluster ${PEERS} \--initial-cluster-state new \--data-dir /data/kuboard.etcdvolumeClaimTemplates:- metadata:name: dataspec:# 请填写一个有效的 StorageClass namestorageClassName: standardaccessModes: [ "ReadWriteMany" ]resources:requests:storage: 5Gi---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: kuboard-data-pvcnamespace: kuboard
spec:accessModes:- ReadWriteOnceresources:requests:storage: 10Gi # 根据需要调整大小storageClassName: standard # 确保与您的 PV 的存储类匹配---
apiVersion: v1
kind: Service
metadata:name: kuboard-etcdnamespace: kuboard
spec:type: ClusterIPports:- port: 2379name: client- port: 2380name: peerselector:app: kuboard-etcd---
apiVersion: apps/v1
kind: Deployment
metadata:annotations:deployment.kubernetes.io/revision: '9'k8s.kuboard.cn/ingress: 'false'k8s.kuboard.cn/service: NodePortk8s.kuboard.cn/workload: kuboard-v3labels:k8s.kuboard.cn/name: kuboard-v3name: kuboard-v3namespace: kuboard
spec:replicas: 1selector:matchLabels:k8s.kuboard.cn/name: kuboard-v3template:metadata:labels:k8s.kuboard.cn/name: kuboard-v3spec:containers:- env:- name: KUBOARD_ETCD_ENDPOINTSvalue: >-kuboard-etcd-0.kuboard-etcd:2379,kuboard-etcd-1.kuboard-etcd:2379,kuboard-etcd-2.kuboard-etcd:2379envFrom:- configMapRef:name: kuboard-v3-configimage: 'swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3'imagePullPolicy: Alwaysname: kuboardvolumeMounts:- mountPath: "/data"name: kuboard-datavolumes:- name: kuboard-datapersistentVolumeClaim:claimName: kuboard-data-pvc---
apiVersion: v1
kind: Service
metadata:annotations:k8s.kuboard.cn/workload: kuboard-v3labels:k8s.kuboard.cn/name: kuboard-v3name: kuboard-v3namespace: kuboard
spec:ports:- name: webuinodePort: 30080port: 80protocol: TCPtargetPort: 80- name: agentservertcpnodePort: 30081port: 10081protocol: TCPtargetPort: 10081- name: agentserverudpnodePort: 30081port: 10081protocol: UDPtargetPort: 10081selector:k8s.kuboard.cn/name: kuboard-v3sessionAffinity: Nonetype: NodePort
2.2.3、 执行 yaml,部署 Kuboard 的Pod和NodePort
kubectl apply -f kuboard-v3.yaml
➜ kubectl apply -f kuboard-v3.yaml
正常会打印
namespace/kuboard created
configmap/kuboard-v3-config created
statefulset.apps/kuboard-etcd created
persistentvolumeclaim/kuboard-data-pvc created
service/kuboard-etcd created
deployment.apps/kuboard-v3 created
service/kuboard-v3 created
2.2.4、确定Pod运行状态
➜ ~ kubectl get pods -n kuboard
可能会遇到报错
NAME
kuboard-etcd-0 0/1 ImagePullBackOff 0 2m49s
kuboard-v3-69bd874899-pjj2m 0/1 ErrImagePull 0 2m35s
此时,把对应的Pod删除.会有自动充实机制
kubectl delete pod kuboard-etcd-0 -n kuboard
kubectl delete pod kuboard-v3-69bd874899-pjj2m -n kuboard
启动成功会展示
➜ ~ kubectl get pods -n kuboard
NAME READY STATUS RESTARTS AGE
kuboard-etcd-0 1/1 Running 2 (24s ago) 91s
kuboard-etcd-1 1/1 Running 2 (21s ago) 85s
kuboard-etcd-2 1/1 Running 2 (19s ago) 82s
kuboard-v3-69bd874899-zx5cj 1/1 Running 0 30s
2.2.5、访问 Kuboard
因为是在 docker 运行 minikube,访问 Kuboard 的NodePort 服务,需要构造一个隧道端口
参考 从宿主机访问 k8s(minikube) 发布的 redis 服务
特殊之处在于,Kuboard 需要在特定的命名空间中
- 查看命名空间
# 查看命名空间
➜ ~ kubectl get svc -n kuboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kuboard-etcd ClusterIP 10.97.148.215 <none> 2379/TCP,2380/TCP 30m
kuboard-v3 NodePort 10.104.126.78 <none> 80:30080/TCP,10081:30081/TCP,10081:30081/UDP 30m
- 为 kuboard-v3 提供隧道服务
minikube service kuboard-v3 -n kuboard
# 为 提供隧道服务
➜ ~ minikube service kuboard-v3 -n kuboard
W1024 01:11:56.611451 15452 main.go:291] Unable to resolve the current Docker CLI context "default": context "default": context not found: open /Users/wujie/.docker/contexts/meta/37a8eec1ce19687d132fe29051dca629d164e2c4958ba141d5f4133a33f0688f/meta.json: no such file or directory
|-----------|------------|----------------------|---------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|------------|----------------------|---------------------------|
| kuboard | kuboard-v3 | webui/80 | http://192.168.49.2:30080 |
| | | agentservertcp/10081 | http://192.168.49.2:30081 |
| | | agentserverudp/10081 | http://192.168.49.2:30081 |
|-----------|------------|----------------------|---------------------------|
🏃 为服务 kuboard-v3 启动隧道。
|-----------|------------|-------------|------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|------------|-------------|------------------------|
| kuboard | kuboard-v3 | | http://127.0.0.1:57428 |
| | | | http://127.0.0.1:57429 |
| | | | http://127.0.0.1:57430 |
|-----------|------------|-------------|------------------------|
[kuboard kuboard-v3 http://127.0.0.1:57428
http://127.0.0.1:57429
http://127.0.0.1:57430]
❗ 因为你正在使用 darwin 上的 Docker 驱动程序,所以需要打开终端才能运行它。
访问 http://127.0.0.1:57428
http://127.0.0.1:57429
http://127.0.0.1:57430 任意一个

默认用户名和密码是
admin/Kuboard123

3、Kuboard 添加集群
这里就以 Docker 运行 minikube,然后在 k8s 中部署 Kuboard 为例了
选择第一种方式,获取 token

ApiServer 地址 写 kubectl get nodes -o wide 获取的地址(我这里是 192.168.49.2),端口固定为 8443,需要以 https:// 开头
即 https://192.168.49.2:8443

4、Kuboard 查看k8s 集群内容
需要先选择访问集群的身份

5、体验自动/手动伸缩功能

相关文章:
(二十一)、Docker 部署 Minikube 使用可视化管理工具 Kuboard
文章目录 1、介绍docker 运行 minikube 集群节点(kube-apiserver )无法被直接访问的问题Kuboard 需要访问到 k8s 集群的kube-apiserver 2、安装 Kuboard2.1、k8s 集群节点可以被外部直接访问的情况2.1.1、下载镜像2.1.2、运行 deployment.yml2.1.3、访问…...
代码编辑组件
代码编辑组件 文章说明核心代码运行演示源码下载 文章说明 拖了很久,总算是自己写了一个简单的代码编辑组件,虽然还有不少的bug,真的很难写,在写的过程中感觉自己的前端技术根本不够用,好像总是方案不够好;…...
裴蜀定理与欧几里得算法——蓝桥杯真题中的应用
目录 裴蜀定理(Bzouts Theorem)1、定义2、推论3、欧几里得算法4、多个整数的裴蜀定理扩展 真题挑战解题思路代码实现与详细注释代码解析 裴蜀定理(Bzout’s Theorem) 1、定义 对于任意两个整数 a 和 b ,如果它们的最…...
冯诺依曼架构及CPU相关概念
一. 操作系统的概念 1. 概念 操作系统(Operating System). 首先, 所有的计算机都是由软件和硬件构成的. 而操作系统就是许许多多软件中的一种软件, 操作系统可以看作是由两部分组成: 操作系统内核系统级应用程序. 2. 作用 (1) 管理硬件设备, 调度和协调各个硬件之间的工作.…...
智能管线巡检系统:强化巡检质量,确保安全高效运维
线路巡检质量的监控是确保线路安全、稳定运行的重要环节。为了有效监控巡检质量,采用管线巡检系统是一种高效、科学的手段。以下是对如何通过管线巡检系统实现线路巡检质量监控的详细分析: 一、巡检速度监控 管线巡检系统能够实时监控巡检人员的巡检速度…...
React写关键字高亮的三个方案
1.js正则replaceAlldangerouslySetInnerHTML{{ __html: xxx }}危险属性 步骤最简单,但是是危险属性,不推荐使用,项目中实在没有头绪,可以使用它应急 通过useMemo计算得到新的状态值,赋值给dangerouslySetInnerHTML属性的__html 关键代码: const [state1, setState1] useSt…...
重塑在线软件开发新纪元:集成高效安全特性,深度解析与评估会员与促销管理系统的系统架构设计
案例 阅读以下关于软件架构设计与评估的叙述,回答问题1和问题2。 【题目】 某电子商务公司拟升级其会员与促销管理系统,向用户提供个性化服务,提高用户的粘性。在项目立项之初,公司领导层一致认为本次升级的主要目标是提升会员管…...
多层感知机的从零实现与softmax的从零实现(真·0000零基础)
今天再读zh.d2l书(4.2. 多层感知机的从零开始实现 — 动手学深度学习 2.0.0 documentation), 看了关于多层感知机的从零实现与softmax的从零实现 目录 mlp从零实现, 点击“paddle”的代码 点击“torch”的代码 训练 参数解…...
【Rust练习】18.特征 Trait
练习题来自:https://practice-zh.course.rs/generics-traits/traits.html 1 // 完成两个 impl 语句块 // 不要修改 main 中的代码 trait Hello {fn say_hi(&self) -> String {String::from("hi")}fn say_something(&self) -> String; }str…...
【自动化测试之oracle数据库】MacOs如何安装oracle- client
操作系统为Mac OS,本地在pycharm上跑自动化脚本时,因为有操作oracle数据库的部分,所以需要安装oracle数据库的客户端,并install cx_oracle,本文主要介绍如何在macOS上完成安装,并在python自动化测试代码中配置…...
Spring MVC的MultipartFile
定义 MultipartFile接口是Spring MVC中用来处理上传文件的接口,它提供了访问上传文件内容、文件名称、文件大小等信息的方法。 源码: package org.springframework.web.multipart;import java.io.File; import java.io.IOException; import java.io.I…...
●Leetcode| 242.有效的字母异位词 ● 349. 两个数组的交集 ● 202. 快乐数● 1. 两数之和
242,该题目中数组范围比较短,可以数组使用并不会占太多的空间,利用数组的映射,查找到自己所需要的字符 class Solution { public:bool isAnagram(string s, string t) {int record[26] {0};for(int i0;i<s.size();i){record[s[i] - a];/…...
关于算法的时间复杂度和空间复杂度的分析
由于最近开始准备蓝桥杯(python组),开始对编程基础进行一些复习,当我发现蓝桥对大多数题目程序运行时间及大小有要求时,我知道我不得不考虑性能问题,而不是能跑就行🤓 写下这篇文章希望对其他同志有帮助吧 什么是算法…...
深入浅出 C++ STL:解锁高效编程的秘密武器
引言 C 标准模板库(STL)是现代 C 的核心部分之一,为开发者提供了丰富的预定义数据结构和算法,极大地提升了编程效率和代码的可读性。理解和掌握 STL 对于 C 开发者来说至关重要。以下是对 STL 的详细介绍,涵盖其基础知…...
2024年1024程序人生总结
2024-1024 0.大环境0.1.经济0.2.战争 1.我的程序人生1.1.游戏 2.节日祝福 0.大环境 今年的1024最大的感触就是没有节日氛围,往年公司还会准备节日礼物,今年没有,由此可见大环境有多么糟糕。 除此之外,就是到公司应聘的程序员越来…...
【p2p、分布式,区块链笔记 分布式容错算法】: 拜占庭将军问题+实用拜占庭容错算法PBFT
papercodehttps://pmg.csail.mit.edu/papers/osdi99.pdfhttps://github.com/luckydonald/pbft 其他相关实现:This is an implementation of the Pracltical Byzantine Fault Tolerance protocol using PythonAn implementation of the PBFT consensus algorithm us…...
鸿蒙NEXT开发-应用数据持久化之用户首选项(基于最新api12稳定版)
注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…...
人工智能_神经网络103_感知机_感知机工作原理_感知机具备学习能力_在学习过程中自我调整权重_优化效果_多元线性回归_逻辑回归---人工智能工作笔记0228
由于之前一直对神经网络不是特别清楚,尤其是对神经网络中的一些具体的概念,包括循环,神经网络卷积神经网络以及他们具体的作用,都是应用于什么方向不是特别清楚,所以现在我们来做教程来具体明确一下。 当然在机器学习之后还有深度学习,然后在深度学习中对各种神经网络的…...
WISE:重新思考大语言模型的终身模型编辑与知识记忆机制
论文地址:https://arxiv.org/abs/2405.14768https://arxiv.org/abs/2405.14768 1. 概述 随着世界知识的不断变化,大语言模型(LLMs)需要及时更新,纠正其生成的虚假信息或错误响应。这种持续的知识更新被称为终身模型编…...
网络安全证书介绍
网络安全领域有很多专业的证书,可以帮助你提升知识和技能,增强在这个行业中的竞争力。以下是一些常见的网络安全证书: 1. CompTIA Security 适合人群:初级安全专业人员证书内容:基础的网络安全概念和实践,…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...

