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

构建Docker容器监控系统 (1)(Cadvisor +InfluxDB+Grafana)

目录

Cadvisor +InfluxDB+Grafana

1. Cadvisor 

2.InfluxDB

3.Grafana

开始部署:

下载组件镜像

创建自定义网络

创建influxdb容器

创建数据库和数据库用户

 创建Cadvisor 容器

 准备测试镜像

 创建granafa容器

 访问granfana

添加数据源 Add data source

新建 Dashboard


概述:

Docker作为目前十分出色的容器管理技术,得到大量企业的青睐,在生产环境中使用Docker容器部署服务及应用的场景越来越多。所以面对日益庞大的docker服务群应用,如何具有针对性的,有效的监控也变成了企业运维人员工作需求。

容器信息采集及监控的方案有很多,有docker自身的docker stats命令、Scout、Data Dog、Prometheus等,本次为大家分享两款比较经典的容器开源监控组合方案Cadvisor +InfluxDB+Grafana

Cadvisor +InfluxDB+Grafana

1. Cadvisor 

Cadvisor 是Google用来监测单节点资源信息的监控工具。 Cadvisor 提供了基础查询界面和http接口,方便其他组件如Grafana 、Prometheus等进行数据抓取。Cadvisor 可以对Docker主机上的资源及容器进行实时监控和性能数据采集,包括CPU使用情况、内存使用情况、网络吞吐量及文件系统使用情况等。Cadvisor 使用Go语言开发,利用Linux的Cgroups获取容器的资源使用信息。

Google的Kubernetes中也默认地将其作为单节点的资源监控工具,各个节点默认会安装上Cadvisor组件。

Cadvisor 产品特点:

  1. 可以展示主机和容器两个层次的监控数据。
  2. 可以展示历史变化数据。
  3. 谷歌公司的开源产品。
  4. 监控指标齐全。
  5. 方便部署,有官方的docker镜像。
  6. 默认只在本地保存1分钟数据,可以集成InfluxDB等第三方存储使用。

由于 Cadvisor 提供的操作界面略显简陋,而且需要在不同页面之间跳转,并且只能监控一个 Host,这不免会让人质疑它的实用性。但 Cadvisor 的一个亮点是它可以将监控到的数据导出给第三方工具,由这些工具进一步加工处理。

我们可以把 Cadvisor  定位为一个监控数据收集器,收集和导出数据是它的强项,而非展示数据。

2.InfluxDB

InfluxDB是一个由InfluxData开发的开源非关系型时序型数据库。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。同类型的数据库产品还有Elasticsearch、Graphite等。

InfluxDB应用场景:性能监控,应用程序指标,物联网传感器数据和实时分析等的后端存储。

InfluxDB主要功能

  1. 基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等);
  2. 可度量性:你可以实时对大量数据进行计算;
  3. 基于事件:它支持任意的事件数据;

InfluxDB主要特点

  1. 无结构(无模式):可以是任意数量的列;
  2. 支持拓展;
  3. 支持min, max, sum, count, mean, median 等一系列函数,方便统计;
  4. 原生的HTTP支持,内置HTTP API;
  5. 强大的类SQL语法;
  6. 自带管理界面,方便使用;

3.Grafana

Grafana是一个可视化面板(Dashboard)工具,有着非常漂亮的图表和布局等展示功能,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB等组件作为数据源。

Grafana主要特性

  1. 灵活丰富的图形化选项;
  2. 可以混合多种风格;
  3. 支持白天和夜间模式;
  4. 支持多个数据源;

开始部署:

关闭防火墙规则

[root@agent ~]# iptables -F

[root@agent ~]# setenforce 0

[root@agent ~]#  systemctl stop firewalld

下载阿里云repo文件

[root@agent ~]# wget http://mirrors.aliyun.com/repo/Centos-7.repo

--2023-08-08 11:12:14--  http://mirrors.aliyun.com/repo/Centos-7.repo

正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 42.202.208.239, 42.202.208.240, 42.202.208.241, ...

正在连接 mirrors.aliyun.com (mirrors.aliyun.com)|42.202.208.239|:80... 已连接。

已发出 HTTP 请求,正在等待回应... 200 OK

长度:2523 (2.5K) [application/octet-stream]

正在保存至: “Centos-7.repo”

100%[=============================================================>] 2,523       --.-K/s 用时 0.01s   

2023-08-08 11:12:15 (231 KB/s) - 已保存 “Centos-7.repo” [2523/2523])

安装依赖包

[root@agent ~]# yum -y install yum-utils device-mapper-persistent-data lvm2

已安装:

  yum-utils.noarch 0:1.1.31-54.el7_8                                                                   

作为依赖被安装:

  libxml2-python.x86_64 0:2.9.1-6.el7_9.6              python-chardet.noarch 0:2.2.1-3.el7             

  python-kitchen.noarch 0:1.1.1-5.el7                 

完毕!

设置docker阿里镜像安装docker

[root@agent ~]#  yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

已加载插件:fastestmirror

adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo

repo saved to /etc/yum.repos.d/docker-ce.repo

[root@agent ~]#  yum -y install docker-ce

已安装:

  docker-ce.x86_64 3:24.0.5-1.el7                                                                      

作为依赖被安装:

  audit-libs-python.x86_64 0:2.8.5-4.el7                checkpolicy.x86_64 0:2.5-8.el7                

  container-selinux.noarch 2:2.119.2-1.911c772.el7_8    containerd.io.x86_64 0:1.6.22-3.1.el7         

  docker-buildx-plugin.x86_64 0:0.11.2-1.el7            docker-ce-cli.x86_64 1:24.0.5-1.el7           

  docker-ce-rootless-extras.x86_64 0:24.0.5-1.el7       docker-compose-plugin.x86_64 0:2.20.2-1.el7   

  fuse-overlayfs.x86_64 0:0.7.2-6.el7_8                 fuse3-libs.x86_64 0:3.6.1-4.el7               

  libcgroup.x86_64 0:0.41-21.el7                        libsemanage-python.x86_64 0:2.5-14.el7        

  policycoreutils-python.x86_64 0:2.5-34.el7            python-IPy.noarch 0:0.75-6.el7                

  setools-libs.x86_64 0:3.3.8-4.el7                     slirp4netns.x86_64 0:0.4.3-4.el7_8            

完毕!

重启服务 开启开机自启

[root@agent ~]#  systemctl start docker

[root@agent ~]#  systemctl enable docker

Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

查看版本

[root@agent ~]# docker versionClient: Docker Engine - CommunityVersion:           24.0.5API version:       1.43Go version:        go1.20.6Git commit:        ced0996Built:             Fri Jul 21 20:39:02 2023OS/Arch:           linux/amd64Context:           defaultServer: Docker Engine - CommunityEngine:Version:          24.0.5API version:      1.43 (minimum version 1.12)Go version:       go1.20.6Git commit:       a61e2b4Built:            Fri Jul 21 20:38:05 2023OS/Arch:          linux/amd64Experimental:     falsecontainerd:Version:          1.6.22GitCommit:        8165feabfdfe38c65b599c4993d227328c231fcarunc:Version:          1.1.8GitCommit:        v1.1.8-0-g82f18fedocker-init:Version:          0.19.0GitCommit:        de40ad0

阿里镜像加速

[root@agent ~]#  cat << END > /etc/docker/daemon.json

> {

>         "registry-mirrors":[ "https://nyakyfun.mirror.aliyuncs.com" ]

> }

> END

重载

[root@agent ~]#  systemctl daemon-reload

[root@agent ~]#  systemctl restart docker

下载组件镜像

[root@agent ~]# docker pull tutum/influxdb

Using default tag: latest

latest: Pulling from tutum/influxdb

a3ed95caeb02: Pull complete

23efb549476f: Pull complete

aa2f8df21433: Pull complete

ef072d3c9b41: Pull complete

c9f371853f28: Pull complete

a248b0871c3c: Pull complete

749db6d368d0: Pull complete

db2492acfcc3: Pull complete

b7e7d2e12d53: Pull complete

4272a53eef10: Pull complete

9b2fefdb5321: Pull complete

Digest: sha256:5b7c5e318303ad059f3d1a73d084c12cb39ae4f35f7391b79b0ff2c0ba45304b

Status: Downloaded newer image for tutum/influxdb:latest

docker.io/tutum/influxdb:latest

[root@agent ~]# docker pull google/cadvisor

Using default tag: latest

latest: Pulling from google/cadvisor

ff3a5c916c92: Pull complete

44a45bb65cdf: Pull complete

0bbe1a2fe2a6: Pull complete

Digest: sha256:815386ebbe9a3490f38785ab11bda34ec8dacf4634af77b8912832d4f85dca04

Status: Downloaded newer image for google/cadvisor:latest

docker.io/google/cadvisor:latest

[root@agent ~]#  docker pull grafana/grafana

Using default tag: latest

latest: Pulling from grafana/grafana

97518928ae5f: Pull complete

5b58818b7f48: Pull complete

d9a64d9fd162: Pull complete

4e368e1b924c: Pull complete

867f7fdd92d9: Pull complete

387c55415012: Pull complete

07f94c8f51cd: Pull complete

ce8cf00ff6aa: Pull complete

e44858b5f948: Pull complete

4000fdbdd2a3: Pull complete

Digest: sha256:18d94ae734accd66bccf22daed7bdb20c6b99aa0f2c687eea3ce4275fe275062

Status: Downloaded newer image for grafana/grafana:latest

docker.io/grafana/grafana:latest

查看镜像

[root@agent ~]# docker images

REPOSITORY        TAG       IMAGE ID       CREATED         SIZE

grafana/grafana   latest    9b957e098315   20 months ago   275MB

google/cadvisor   latest    eb1210707573   4 years ago     69.6MB

tutum/influxdb    latest    c061e5808198   6 years ago     290MB

创建自定义网络

为了把后期创建的Cadvisor+InfluxDB+Grafana这三个容器都加入自己定义的网络便于理解和管理,所以才新建一个自定义网络。

[root@agent ~]# docker network create monitor

15c66b26909c893ddf4e643070f0a8be4735429d8eb240ccfd87181e912266e7

[root@agent ~]# docker network ls

NETWORK ID     NAME      DRIVER    SCOPE

c797f68ebf72   bridge    bridge    local

ad6923a67d61   host      host      local

15c66b26909c   monitor   bridge    local

4176a96abea0   none      null      local

创建influxdb容器

[root@agent ~]#  docker run -d --name influxdb --net monitor -p 8083:8083 -p 8086:8086 tutum/influxdb

a0010d5c535f2361b64750af6c926424ba71cacd76ab46afc301e1d7873f228d

查看容器是否启动

[root@agent ~]# docker ps -a

CONTAINER ID   IMAGE            COMMAND     CREATED          STATUS          PORTS                                                                                  NAMES

a0010d5c535f   tutum/influxdb   "/run.sh"   22 seconds ago   Up 22 seconds   0.0.0.0:8083->8083/tcp, :::8083->8083/tcp, 0.0.0.0:8086->8086/tcp, :::8086->8086/tcp   influxdb

 浏览器访问 http://192.168.50.50;8083

 

从上图可以看到,在Query Templates选项中提供了常用的操作模板,可根据这些模版来管理influxdb,下面我们就来

创建数据库和数据库用户

CREATE USER "root1" WITH PASSWORD '123456' WITH ALL PRIVILEGES

 

创建Cadvisor 数据库cadvisor

、用户root,用户和数据库大家可以自行随意定义,用于后期grafana的配置:

CREATE DATABASE "cadvisor"

 创建Cadvisor 容器

[root@agent ~]# docker run -d --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --net monitor --publish=8080:8080  --name=cadvisor google/cadvisor -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb:8086

14c0398f35a287001525dbae439b2850e60d03a3c3820f8fd7f2eccc750d3d80

参数说明:

  1. -d:后台运行此容器;
  2. --name:启运容器分配名字Cadvisor ;
  3. --net:把容器加入到新的网络monitor;
  4. -p:映射端口8080;
  5. --mout:把宿主机的相文目录绑定到容器中,这些目录都是Cadvisor 需要采集的目录文件和监控内容;
  6. -storage_driver:需要指定Cadvisor 的存储驱动、数据库主机、数据库名;
  7. google/Cadvisor :通过Cadvisor 这个镜像来运行容器,默认会在docker官方仓库把镜像pull下来;

查看Cadvisor容器

[root@agent ~]# docker ps -a

CONTAINER ID   IMAGE             COMMAND                   CREATED         STATUS         PORTS                                                                                  NAMES

14c0398f35a2   google/cadvisor   "/usr/bin/cadvisor -…"   4 seconds ago   Up 3 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp                                              cadvisor

a0010d5c535f   tutum/influxdb    "/run.sh"                 6 minutes ago   Up 2 minutes   0.0.0.0:8083->8083/tcp, :::8083->8083/tcp, 0.0.0.0:8086->8086/tcp, :::8086->8086/tcp   influxdb

 通过浏览器访问8080端口

 下面会看到很多详细参数  我们这里主要用它来做数据采集。

 准备测试镜像

[root@agent ~]# docker run -itd --name nginx -p 8000:80 nginx

Unable to find image 'nginx:latest' locally

latest: Pulling from library/nginx

a2abf6c4d29d: Pull complete

a9edb18cadd1: Pull complete

589b7251471a: Pull complete

186b1aaa4aa6: Pull complete

b4df32aa5a72: Pull complete

a0bcbecc962e: Pull complete

Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31

Status: Downloaded newer image for nginx:latest

a76c56a3155b4a2e69187ddeca3808d0a2b8693947847162ea6d618d1168e8c8

查看镜像是否成功创建并启动

[root@agent ~]# docker images nginx

REPOSITORY   TAG       IMAGE ID       CREATED         SIZE

nginx        latest    605c77e624dd   19 months ago   141MB

[root@agent ~]# docker ps -l

CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS          PORTS                                   NAMES

a76c56a3155b   nginx     "/docker-entrypoint.…"   41 seconds ago   Up 40 seconds   0.0.0.0:8000->80/tcp, :::8000->80/tcp   nginx

[root@agent ~]#  

 进入浏览器页面 点击下方

 可以看到nginx

同样可以看到nginx参数

 创建granafa容器

[root@agent ~]# docker run -d --name grafana --net monitor -p 3000:3000 grafana/grafana

c78b7f80fd41a0be87de6424d19dc260effa161961469193af94e5d6b561cdce

查看是否运行

[root@agent ~]# docker ps -l

CONTAINER ID   IMAGE             COMMAND     CREATED         STATUS         PORTS                                       NAMES

c78b7f80fd41   grafana/grafana   "/run.sh"   9 seconds ago   Up 9 seconds   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp   grafana

 访问granfana

通过http://192.168.50.50:3000端口的方式访问,默认账户密码(admin/admin),首次登陆需要更新密码。

添加数据源 Add data source

找到这个图案

 找到 lnfluxDB

 

 成功

 

新建 Dashboard

如下图:

 如果前面没问题 但现在找不到nginx可以手动输入nginx

 保存

 

 查看

 OK

相关文章:

构建Docker容器监控系统 (1)(Cadvisor +InfluxDB+Grafana)

目录 Cadvisor InfluxDBGrafana 1. Cadvisor 2.InfluxDB 3.Grafana 开始部署&#xff1a; 下载组件镜像 创建自定义网络 创建influxdb容器 创建数据库和数据库用户 创建Cadvisor 容器 准备测试镜像 创建granafa容器 访问granfana 添加数据源 Add data source 新建 …...

hive编译报错整理

背景 最近在修hive-1.2.0的一个bug&#xff0c;需要修改后重新打包部署到集群&#xff0c;打包的时候报下面的错误&#xff0c;原因很简单&#xff0c;从远程仓库里面已经拉不到这个包了。 org.pentaho:pentaho-aggdesigner-algorithm:jar:5.1.5-jhyde was not found in http…...

centos磁盘爆满可以清理mysql-bin.000011吗

mysql-bin.000011 是 MySQL 的二进制日志文件&#xff0c;用于记录数据库中的更改操作。删除该文件可能会导致数据库恢复、备份和复制等功能的中断或数据丢失。因此&#xff0c;在删除任何 MySQL 的二进制日志文件之前&#xff0c;请确保您了解其潜在影响并采取适当的备份措施。…...

SSM个人博客项目

文章目录 SSM个人博客系统实现项目介绍 一、准备工作0. 创建项目添加对应依赖1. 数据库设计2. 定时实体类 二、功能实现1.统一功能处理统一返回格式统一异常处理定义登录拦截器 2. 注册登录实现生成获取验证码密码加盐实现注册功能登录功能注销功能 3.登录用户博客列表获取登录…...

vue插槽是什么?如何使用?

1、意义 插槽是vue提供的一个内置组件&#xff0c;是一个占位符。作用是可以向组件中传递一段html代码&#xff0c;加强了组件封装性以及复用性。 2、分类 插槽通常分为匿名插槽、具名插槽、作用域插槽 匿名插槽&#xff1a; 顾名思义就是没有名字的插槽&#xff0c;我们通…...

yum常用操作命令

目录 查询命令 查看当前所有仓库 检查可升级的程序 安装、卸载、升级 清除缓存命令 生成缓存 查询命令 列出已安装的软件包&#xff1a;yum list installed列出仓库中还未安装的软件包&#xff1a;yum list available列出指定软件包的依赖关系&#xff1a;yum deplist &…...

.Net C# 免费PDF合成软件

最近用到pdf合成&#xff0c;发现各种软件均收费啊&#xff0c;这个技术非常简单&#xff0c;别人写好的库一大把&#xff0c;这里用到了PDFsharp&#xff0c;项目地址Home of PDFsharp and MigraDoc Foundation 软件下载地址 https://download.csdn.net/download/g313105910…...

JAVA集合框架 一:Collection(LIst,Set)和Iterator(迭代器)

目录 一、Java 集合框架体系 1.Collection接口&#xff1a;用于存储一个一个的数据&#xff0c;也称单列数据集合&#xff08;single&#xff09;。 2.Map接口&#xff1a;用于存储具有映射关系“key-value对”的集合&#xff08;couple&#xff09; 3.Iterator接口&#…...

python ffmpeg合并ts文件

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff1a;点击跳转 当你从网站下载了一集动漫&#xff0c;然后发现是一堆ts文件&#xff0c;虽然可以打开&#xff0c;但是某个都是10秒左右&#xff0c;…...

c++map和set剖析

文章参考文献&#xff1a;cplusplus 博主&#xff1a;拖拉机厂第一代码手 gitee:拖拉机厂第一代码手 c专栏&#xff1a;C 目录 &#x1f9d9;&#x1f3fc;‍♂set剖析&#x1f9da;&#x1f3fc;set简介&#x1f9da;&#x1f3fc;set模板参数列表&#x1f9da;&#x1f3fc;s…...

kubernetes configmap 的data中的文件内容格式错乱

截取一段错乱的配置&#xff1a; kubectl -n monitoring get cm blackbox-exporter-configuration -o yaml apiVersion: v1 data:config.yml: "\"modules\":\n \"http_2xx\":\n \"http\":\n \"preferred_ip_protocol\"…...

A TupleBackedMap cannot be modified Mybatis分页,使用List<Map>接参,无法修改map的解决方案

问题描述 当使用Mybatis 进行Page分页&#xff0c;再使用Page< map >作为接受参数。此时尝试修改map则会报错。 报错为 java.lang.UnsupportedOperationException: A TupleBackedMap cannot be modified解决方案 使用新的数组&#xff0c;使用反射&#xff0c;构建工具…...

Leetcode-每日一题【剑指 Offer 13. 机器人的运动范围】

题目 地上有一个m行n列的方格&#xff0c;从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动&#xff0c;它每次可以向左、右、上、下移动一格&#xff08;不能移动到方格外&#xff09;&#xff0c;也不能进入行坐标和列坐标的数位之和大于k的格子。例…...

WEB集群——负载均衡集群

目录 一、 LVS-DR 群集。 1、LVS-DR工作原理 2、LVS-DR模式的特点 3、部署LVS-DR集群 3.1 配置负载调度器&#xff08;192.168.186.100&#xff09; 3.2 第一台web节点服务器&#xff08;192.168.186.103&#xff09; 3.3 第二台web节点服务器&#xff08;192.168.186.…...

ubuntu 20.0.4 搭建nvidia 显卡环境

一、安装docker 1、安装dokcer sudo apt install docker.io2、docker 添加到用户组 创建docker用户组 sudo groupadd docker添加当前用户加入docker用户组 sudo usermod -aG docker ${USER}重启docker服务 sudo systemctl restart docker切换或者退出当前账户再从新登入 …...

Windows环境下通过 系统定时 执行脚本方式 压缩并备份文件夹 到其他数据盘

环境配置 压缩时需要使用7-zip进行调用&#xff0c;因此根据自己电脑进行安装 官网&#xff1a;https://www.7-zip.org/ 脚本文件 新建记事本文件&#xff0c;重命名为git_back_up.bat echo off rem 设置utf-8可以正常显示中文 chcp 65001 > nulrem 获取当前日期和时间&…...

C++系列二:STL教程-常用算法

提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 常用算法 前言算法列举&#xff1a;算法例子 前言 还有一些我在尝试中迷惑不解的&#xff0c;有点玄幻。 算法列举&#xff1a; 排序算法&#xff1a; sort(first, last);…...

【css】渐变

渐变是设置一种颜色或者多种颜色之间的过度变化。 两种渐变类型&#xff1a; 线性渐变&#xff08;向下/向上/向左/向右/对角线&#xff09; 径向渐变&#xff08;由其中心定义&#xff09; 1、线性渐变 语法&#xff1a;background-image: linear-gradient(direction, co…...

idea打开多个项目需要开多个窗口(恢复询问弹窗)

【版权所有&#xff0c;文章允许转载&#xff0c;但须以链接方式注明源地址&#xff0c;否则追究法律责任】【创作不易&#xff0c;点个赞就是对我最大的支持】 前言 仅作为学习笔记&#xff0c;供大家参考 总结的不错的话&#xff0c;记得点赞收藏关注哦&#xff01; 使用…...

篇十三:策略模式:选择不同算法

篇十三&#xff1a;“策略模式&#xff1a;选择不同算法” 设计模式是软件开发中的重要知识&#xff0c;策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;用于在运行时根据不同的需求选择不同的算法或行为。本文将探讨策略模式的作用和实现…...

Centos7.6 安装mysql过程全记录

在centos 7.6上 离线安装mysql 的步骤&#xff0c;可参考下文&#xff1a; 一、查看当前MySQL的安装情况并卸载 1. 查看当前MySQL的安装情况 查找之前是否安装了MySQL rpm -qa|grep -i mysql 2.卸载mysql 如果已经安装mysql&#xff0c;则需要先停止MySQL&#xff0c;再删除…...

Java中的Guava是什么?

Java中的Guava是一个非常强大的Java库&#xff0c;它提供了很多实用的工具类和方法&#xff0c;可以帮助我们更高效地开发Java应用程序。从新手的角度来看&#xff0c;Guava可以让我们在Java编程中变得更加简单、快速和高效。 Guava的命名来源于“Google’s favorite Java lib…...

vue.js兄弟组件方法调用b组件调用a组件方法

vue.js 中兄弟组件方法调用 场景&#xff1a;父组件中同时引入两个子组件&#xff08;A和B&#xff09;&#xff0c;此时B组件点击按钮需要调用A组件里面的方法 方案1&#xff1a;vue的事件总线 方案2&#xff1a;自定义事件&#xff08;$emit&#xff09; 最终方案&#xff1a…...

【Kubernetes】二进制搭建

目录 二进制搭建 Kubernetes v1.20 操作系统初始化配置 关闭防火墙 关闭selinux 关闭swap 根据规划设置主机名 在master添加hosts 调整内核参数 时间同步 部署 etcd 集群 准备签发证书环境 准备cfssl证书生成工具 生成Etcd证书 上传 etcd-cert.sh 和 etcd.sh 到 …...

【MFC】08.MFC消息,自定义消息,常用控件(MFC菜单创建大总结),工具栏,状态栏-笔记

本专栏上几篇文章讲解了MFC几大机制&#xff0c;今天带领大家学习MFC自定义消息以及常用控件&#xff0c;最常用的控件请查看本专栏第一二篇文章&#xff0c;今天这篇文章介绍工具栏&#xff0c;菜单和状态栏&#xff0c;以及菜单创建大总结。 文章目录 MFC消息分类&#xff1…...

Clickhouse 数据存储

一、数据分区 数据是以分区目录的形式组织的&#xff0c;每个分区独立分开存储.这种形式&#xff0c;查询数据时&#xff0c;可以有效的跳过无用的数据文件。 1.1 数据分区的规则 分区键的取值&#xff0c;生成分区ID&#xff0c;分区根据ID决定。根据分区键的数据类型不同&am…...

c语言每日一练(3)

前言&#xff1a;每日一练系列&#xff0c;每一期都包含5道选择题&#xff0c;2道编程题&#xff0c;博主会尽可能详细地进行讲解&#xff0c;令初学者也能听的清晰。每日一练系列会持续更新&#xff0c;暑假时三天之内必有一更&#xff0c;到了开学之后&#xff0c;将看学业情…...

java基础-Stream(流)、File(文件)和IO

Java中的流(Stream)提供了一个统一的接口来处理输入和输出数据&#xff0c;文件(File)提供了一种简单的方式来操作磁盘上的文件&#xff0c;而I/O则允许我们在Java程序中读写数据。 一、流Stream java中得stream是一种抽象概念&#xff0c;流可以从多种来源读取数据&#xff…...

el-table实现指定列合并

table传入span-method方法可以实现合并行或列&#xff0c;方法的参数是一个对象&#xff0c;里面包含当前行row、当前列column、当前行号rowIndex、当前列号columnIndex四个属性。该函数可以返回一个包含两个元素的数组&#xff0c;第一个元素代表rowspan&#xff0c;第二个元素…...

38.利用matlab解 有约束无约束的参数估计对比(matlab程序)

1.简述 1.离散型随机变量的极大似然估计法: (1) 似然函数 若X为离散型, 似然函数为 (2) 求似然函数L(θ)的最大值点 θ, 则θ就是未知参数的极大似然估计值. 2.连续型随机变量的极大似然估计法: (1) 似然函数 若 X 为连续型, 似然函数为 (2) 求似然函数L(θ)的最大值点θ, 则…...

自己做的一个网站怎么赚钱/站内seo的技巧

c语言官方文档网站是: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf 这是c语言最新标准(C11)的官方文档。 此外, 可以在这里找到c语言的早期版本的文档: https://port70.net/~nsz/c/...

动态表情包在线制作网站/网络宣传的方法有哪些

相对中资公司来说&#xff0c;美国或者西方公司的面试流程更加复杂&#xff0c;考核的内容更多。 不管是那种面试&#xff0c;很多时候求职者会遇到&#xff1a;面着面着就没了。 当然我们这说的只是你应聘中层以下的技术或者部分管理岗。 如果你是应聘公司高层&#xff0c;…...

万户做网站好不好/网站设计的流程

kotlin jsonWelcome to a brand new tutorial for Easy Android Programming. In the tutorial, we are going to learn about the basic usage of retrofit in kotlin for fetching JSON from a remote server.欢迎使用全新的Easy Android编程教程。 在本教程中&#xff0c;我…...

找外包网站 和自己做/中国seo高手排行榜

iptables命令、规则、参数详解 参考链接&#xff1a;iptables命令、规则、参数详解 - zclzhao - 博客园 表 (table) 包含4个表&#xff1a; 4个表的优先级由高到低&#xff1a;raw-->mangle-->nat-->filter raw---RAW表只使用在PREROUTING链和OUTPUT链上,因为优先…...

欧卡乐网站建设/线下营销推广方式都有哪些

前言—toG 项目——一个在我等日常工作中极为罕见、极为神秘的项目领域&#xff0c;所有经历过的人&#xff0c;都仿佛经受了一场狂风暴雨的洗礼&#xff0c;谁做谁知道。而数字人民币项目&#xff0c;光看名字就令人心生敬畏——新的货币形式、政府合作项目&#xff0c;充满着…...

怎么自己做卡盟网站/百度关键词查询工具免费

点击上方“蓝色字”可关注我们&#xff01;暴走时评&#xff1a;2月8日的推文显示&#xff0c;备受期待的由洲际交易所&#xff08;ICE&#xff09;运营的数字资产平台Bakkt已经结束了其首次收购。通过收购RCG的某些资产&#xff0c;Bakkt希望&#xff1a;“RCG卓越的传统、文化…...