Ubuntu 22.04(WSL2)使用 Docker 安装 Zipkin 和 Skywalking
Ubuntu 22.04(WSL2)使用 Docker 安装 Zipkin 和 Skywalking
分布式追踪工具在现代微服务架构中至关重要,它们帮助开发者监控请求在多个服务之间的流动,识别性能瓶颈和潜在错误。本文将指导您在 Ubuntu 22.04(WSL2 环境)中使用 Docker 安装两种流行的开源追踪工具:Zipkin 和 Skywalking。我们将提供详细的步骤,确保即使是初学者也能轻松完成设置,并对两者进行对比以帮助您选择合适的工具。
什么是 Zipkin 和 Skywalking?
Zipkin
Zipkin 是一个分布式追踪系统,最初由 Twitter 开发,基于 Google Dapper 论文设计。它通过收集服务之间的请求时间数据,帮助开发者分析延迟问题。Zipkin 提供了一个直观的 Web 界面,允许用户根据服务名称、操作名称或追踪 ID 查询追踪数据,并展示服务依赖关系图。Zipkin 支持多种编程语言和框架(如 Java、Go、Python 等),通过 HTTP 或 Kafka 等方式接收数据,默认使用内存存储,但可配置为使用 Cassandra 或 Elasticsearch 等持久化存储。
Skywalking
Skywalking 是一个功能更全面的开源应用性能监控(APM)工具,专为微服务、云原生和容器化架构设计。除了分布式追踪外,它还提供服务拓扑分析、指标监控和日志收集等功能。Skywalking 支持多种语言的代理(如 Java、Python、Go 等),并通过 eBPF 提供 Kubernetes 部署的性能分析。其用户界面提供丰富的仪表板和拓扑图,适合复杂系统的监控。默认使用 H2 内存数据库,但支持 Elasticsearch 等外部存储。
Zipkin 和 Skywalking 的对比
在选择分布式追踪工具时,了解 Zipkin 和 Skywalking 的差异有助于您根据项目需求做出最佳选择。以下是对两者的详细对比:
特性 | Zipkin | Skywalking |
---|---|---|
主要关注 | 分布式追踪 | 应用性能监控(APM),包括追踪、指标监控和日志收集 |
关键功能 | - 收集时序数据以识别延迟问题 - Web UI 支持按服务、操作等查询追踪 - 依赖图展示请求路径和错误 | - 分布式追踪、拓扑分析、性能指标、告警通知 - 支持云原生和容器化架构 - 集成多种生态系统(如 OpenTelemetry) |
仪器化 | 通常需手动仪器化(如使用 Brave 库),部分语言支持自动仪器化代理 | 主要通过代理自动仪器化,无需修改代码 |
存储 | 默认内存存储;支持 Cassandra、Elasticsearch 等 | 默认 H2 内存数据库;支持 Elasticsearch、MySQL、TiDB 等 |
易用性 | 安装简单,适合快速测试和小型项目 | 功能丰富,设置稍复杂,但通过 Docker Compose 管理 |
适用场景 | 小型项目或仅需追踪功能 | 大型复杂系统,需要全面监控 |
选择建议:
- Zipkin:如果您的项目主要需要分布式追踪,且希望部署简单、资源占用低,Zipkin 是理想选择。它适合快速测试或小型微服务架构。
- Skywalking:如果您需要全面的 APM 功能,包括追踪、指标、日志和告警,Skywalking 更适合。它在云原生和复杂系统中表现尤为出色,其自动仪器化功能简化了集成过程。
通过权衡这些因素,您可以选择最适合您项目规模和复杂度的工具。
前提条件
在开始之前,请确保满足以下条件:
- 操作系统:在 Windows 的 WSL2 中运行 Ubuntu 22.04。
- Docker:已安装 Docker,推荐使用 Docker Desktop 配置 WSL2 后端以简化管理。
- 网络:确保端口 9411(Zipkin)、11800、12800(Skywalking OAP)和 13800(Skywalking UI)未被占用。
- 硬件:建议至少 4GB 内存和 2 核 CPU,以确保容器运行顺畅。
验证 Docker 安装
运行以下命令确认 Docker 是否正常工作:
docker --version
应返回类似 Docker version 20.10.0
的输出。
安装 Zipkin
Zipkin 的安装非常简单,只需运行一个 Docker 容器即可。
步骤 1:启动 Zipkin 容器
在终端运行:
docker run -d -p 9411:9411 openzipkin/zipkin
-d
:后台运行容器。-p 9411:9411
:映射容器 9411 端口到主机。openzipkin/zipkin
:官方 Zipkin 镜像,默认使用最新版本。
镜像将从 Docker Hub 拉取,Zipkin 默认使用内存存储。
步骤 2:访问 Zipkin UI
在浏览器中访问 http://localhost:9411,您将看到 Zipkin 的 Web 界面,包括:
- 搜索追踪:按服务名称、操作名称或追踪 ID 查询。
- 依赖图:展示服务调用关系。
- 时间线视图:显示请求耗时。
若无法访问,请检查:
- 运行
docker ps
确认容器状态。 - 确保端口 9411 未被占用,可调整为
-p 9412:9411
。
注意事项
- 存储:内存存储适合测试,生产环境建议配置 Cassandra 或 Elasticsearch。
- 性能:单容器适合测试,生产环境需优化资源分配。
安装 Skywalking
Skywalking 部署需要运行 OAP 服务器和 UI 两个组件。本文使用 Docker Compose 和 H2 内存数据库简化设置。
步骤 1:创建 docker-compose.yml 文件
在工作目录下创建 docker-compose.yml
:
services:oap:image: apache/skywalking-oap-server:10.2.0container_name: oapports:- "11800:11800"- "12800:12800"ui:image: apache/skywalking-ui:10.2.0container_name: uidepends_on:- oapports:- "13800:8080"environment:SW_OAP_ADDRESS: http://oap:12800
oap
:运行 Skywalking OAP 服务器,映射 11800(gRPC)和 12800(HTTP)端口。ui
:运行 Skywalking UI,依赖 OAP,映射容器 8080 端口到主机 13800。SW_OAP_ADDRESS
:配置 UI 连接 OAP。
注意:Skywalking UI 使用 13800 端口而非默认 8080,因为 8080 在开发中常被 web 服务器(如 Tomcat)占用。为避免冲突,选择不常用的 13800 端口。您可根据需要调整为其他可用端口。
步骤 2:启动 Skywalking 服务
在文件目录运行:
docker-compose up -d
Docker 将拉取镜像并启动容器。
步骤 3:访问 Skywalking UI
在浏览器访问 http://localhost:13800,您将看到 Skywalking 界面,包括:
- 仪表板:展示性能指标。
- 拓扑图:显示服务依赖。
- 追踪视图:展示请求调用链。
- 告警:配置异常通知。
若无法访问,请检查:
- 运行
docker-compose ps
确认容器状态。 - 查看日志:
docker logs oap
或docker logs ui
。 - 确保端口 13800 未被占用,可调整为其他端口。
注意事项
- 存储:H2 内存数据库适合测试,生产环境建议配置 Elasticsearch。
- 版本一致性:OAP 和 UI 需使用相同版本(10.2.0)。
- WSL2 网络:若 localhost 访问失败,可使用 WSL2 IP(运行
wsl hostname -I
获取)。
WSL2 环境中的注意事项
在 WSL2 中运行 Docker 有以下考虑:
-
端口映射:WSL2 自动映射端口到 Windows localhost,但防火墙可能需允许相关端口。
-
资源分配:WSL2 默认资源有限,可在
.wslconfig
配置:[wsl2] memory=4GB processors=2
保存后运行
wsl --shutdown
重启 WSL2。
-
端口冲突:
确保以下端口未被占用:- Zipkin:9411
- Skywalking OAP:11800、12800
- Skywalking UI:13800
若冲突,可调整端口映射。
下一步
安装完成后,需集成代理以发送追踪数据:
- 配置代理:为应用添加 Zipkin(如 Brave)或 Skywalking 代理。
- 发送数据:通过 HTTP、gRPC 或 Kafka 发送数据到 Zipkin(9411)或 Skywalking(11800)。
- 分析追踪:使用 Web 界面分析延迟和依赖。
参考:
- Zipkin 快速入门
- Skywalking 文档
结论
您已成功在 Ubuntu 22.04(WSL2)上部署了 Zipkin 和 Skywalking。Zipkin 适合轻量级追踪,Skywalking 提供全面 APM 功能。本文使用内存存储简化设置,生产环境建议配置持久化存储以确保数据持久性。
关键引用
- Zipkin Official Quickstart Guide
- Skywalking Backend Setup Documentation
- Docker Hub Zipkin Image Page
- Docker Hub Skywalking OAP Server Image Page
- Docker Hub Skywalking UI Image Page
- SourceForge Apache SkyWalking vs. Zipkin Comparison
- Logz.io Distributed Tracing Tools and Standards
相关文章:
Ubuntu 22.04(WSL2)使用 Docker 安装 Zipkin 和 Skywalking
Ubuntu 22.04(WSL2)使用 Docker 安装 Zipkin 和 Skywalking 分布式追踪工具在现代微服务架构中至关重要,它们帮助开发者监控请求在多个服务之间的流动,识别性能瓶颈和潜在错误。本文将指导您在 Ubuntu 22.04(WSL2 环境…...
【DLF】基于语言的多模态情感分析
作者提出的不足 模态平等处理导致冗余与冲突 问题:现有MSA方法对所有模态(语言、视觉、音频)平等处理,忽略模态间贡献差异(如语言为主导模态)。后果:跨模态交互引入冗余信息(如视觉和音频中与情感无关的噪声),甚至模态对间双向信息传递(…...
window 显示驱动开发-线性伸缩空间段
线性伸缩空间段类似于线性内存空间段。 但是,伸缩空间段只是地址空间,不能容纳位。 若要保存位,必须分配系统内存页,并且必须重定向地址空间范围以引用这些页面。 内核模式显示微型端口驱动程序(KMD)必须实…...
[Linux网络_71] NAT技术 | 正反代理 | 网络协议总结 | 五种IO模型
目录 1.NAT技术 NAPT 2.NAT和代理服务器 3.网线通信各层协议总结 补充说明 4.五种 IO 模型 1.什么是IO?什么是高效的IO? 2.有那些IO的方式?这么多的方式,有那些是高效的? 异步 IO 🎣 关键缺陷类比…...
免费5个 AI 文字转语音工具网站!
一个爱代码的设计师在运营,不定时分享干货、学习方法、效率工具和AIGC趋势发展。个人网站:tomda.top 分享几个好用的文字转语音、语音转文字的在线工具,麻烦需要的朋友保存。 01. ChatTTS 中英文智能转换,语音自然流畅,在线免费…...
【入门】数字走向II
描述 输入整数N,输出相应方阵。 输入描述 一个整数N。( 0 < n < 10 ) 输出描述 一个方阵,每个数字的场宽为3。 #include <bits/stdc.h> using namespace std; int main() {int n;cin>>n;for(int in;i>1;i--){for(…...
Linux基础(文件权限和用户管理)
1.文件管理 1.1 文件权限 文件的权限总共有三种:r(可读),w(可写),x(可执行),其中r是read,w是write,x是execute的缩写。 我们…...
【BYD_DM-i技术解析】
关键词:构型、能量流、DM-i 一、发展历史:从DM1到DM5的技术跃迁 比亚迪DM(Dual Mode)技术始于2008年,其发展历程可划分为五代,核心目标始终围绕“油电协同”与“高效节能”展开: DM1…...
React Hooks 精要:从入门到精通的进阶之路
Hooks 是 React 16.8 引入的革命性特性,它让函数组件拥有了类组件的能力。以下是 React Hooks 的详细使用指南。 一、基础 Hooks 1. useState - 状态管理 import { useState } from react;function Counter() {const [count, setCount] = useState(0); // 初始值为0return …...
为什么选择 FastAPI、React 和 MongoDB?
在技术日新月异的今天,全栈开发需要兼顾效率、性能和可扩展性。FastAPI、React 和 MongoDB 这三者的组合,恰好构成了一个覆盖前后端与数据库的技术黄金三角。它们各自解决了开发中的核心痛点,同时以轻量化的设计和强大的生态系统,成为现代 Web 开发的首选方案。以下将从架构…...
01背包类问题
文章目录 [模版]01背包1. 第一问: 背包不一定能装满(1) 状态表示(2) 状态转移方程(3) 初始化(4) 填表顺序(5) 返回值 2. 第二问: 背包恰好装满3. 空间优化 416.分割等和子集1. 状态表示2. 状态转移方程3. 初始化4. 填表顺序5. 返回值 [494. 目标和](https://leetcode.cn/proble…...
重复的子字符串
28. 找出字符串中第一个匹配项的下标 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 示例 1&#…...
Spark MLlib网页长青
一、实验目的 1.掌握Spark SQL中用户自定义函数的编写。 2. 掌握特征工程的OneHotEncoder、VectorAssembler。 3. 熟悉决策树算法原理,能够使用Spark MLlib库编写程序 4. 掌握二分类问题评估方法 5. 能够使用TrainValidation和crossValidation交叉验证找出最佳模型。 6…...
详解多协议通信控制器
详解多协议通信控制器 在上文中,我们使用Verilog代码实现了完整的多协议通信控制器,只是讲解了具体原理与各个模块的实现代码,但是为什么这么写?这么写有什么用?模块与模块之间又是怎么连接相互作用的?今天我们就来处理这些问题。 为什么不能直接用 FPGA 内部时钟给外设?…...
JavaWeb基础
七、JavaWeb基础 javaWeb:完整技术体系,掌握之后能够实现基于B/S架构的系统 1. C/S和B/S 1.1 C/S(Client/server) C/S:客户端与服务器 本质:本地上有代码(程序在本机上)优点&#…...
localStorage和sessionStorage
localStorage和sessionStorage localStorage是指在用户浏览器中存储数据的方式,允许Web应用程序将少量的数据保存在用户设备上,便于页面之间、关闭浏览器后的数据持久化,他不会随着HTTP请求发送道服务器,减少带宽消耗,…...
c++类【高潮】
类继承 和直接复制源代码修改相比,继承的好处是减少测试。 基类:原始类, 派生类:继承类,基于基类丰富更多内容的类。 继承一般用公有继承,class 派生类名 : public 基类名{……}; 公有继承&…...
C++进阶--AVL树的实现续
文章目录 C进阶--AVL树的实现双旋AVL树的查找AVL树的检验结语 很高兴和搭大家见面,给生活加点impetus,开启今天的比编程之路!! 今天我们来完善AVL树的操作,为后续红黑树奠定基础!! 作者&#x…...
1 2 3 4 5顺序插入,形成一个红黑树
红黑树的特性与优点 红黑树是一种自平衡的二叉搜索树,通过额外的颜色标记和平衡性约束,确保树的高度始终保持在 O(log n)。其核心特性如下: 每个节点要么是红色,要么是黑色。根节点和叶子节点(NIL节点)是…...
Telnetlib三种异常处理方案
1. socket.timeout 异常 触发场景 网络延迟高或设备响应缓慢,导致连接或读取超时。 示例代码 import telnetlib import socketdef telnet_connect_with_timeout(host, port23, timeout2):try:# 设置超时时间(故意设置较短时间模拟超时)tn…...
Linux:进程间通信---消息队列信号量
文章目录 1.消息队列1.1 消息队列的原理1.2 消息队列的系统接口 2. 信号量2.1 信号量的系统调用接口 3. 浅谈进程间通信3.1 IPC在内核中数据结构设计3.2 共享内存的缺点3.3 理解信号量 序:在上一章中,我们引出了命名管道和共享内存的概念,了解…...
暗物质卯引力挂载技术
1、物体质量以及其所受到的引力约束(暗物质压力差) 自然界的所有物体,其本身都是没有质量的。我们所理解的质量,其实是物体球周空间的暗物质对物体的挤压,压力差。 对于宇宙空间中的单个星球而言,它的球周各处压力是相同的,所以,它处于平衡状态,漂浮在宇宙中。 对于星…...
JMeter 中实现 双 WebSocket(双WS)连接
在 JMeter 中实现 双 WebSocket(双WS)连接 的测试场景(例如同时连接两个不同的 WebSocket 服务或同一服务的两个独立会话),可以通过以下步骤配置: 1. 场景需求 两个独立的 WebSocket 连接(例如 …...
卡尔曼滤波算法简介与 Kotlin 实现
一、引言 卡尔曼滤波(Kalman Filter)是一种基于线性系统状态空间模型的最优递归估计算法,由鲁道夫・E・卡尔曼于 1960 年提出。其核心思想是通过融合系统动态模型预测值与传感器观测值,在最小均方误差准则下实现对系统状态的实时…...
【比赛真题解析】混合可乐
这次给大家分享一道比赛题:混合可乐。 洛谷链接:U561549 混合可乐 【题目描述】 Jimmy 最近沉迷于可乐中无法自拔。 为了调配出他心目中最完美的可乐,Jimmy买来了三瓶不同品牌的可乐,然后立马喝掉了一些(他实在是忍不住了),所以 第一瓶可口可乐最大容量为 a 升,剩余 …...
[论文阅读]BadPrompt: Backdoor Attacks on Continuous Prompts
BadPrompt: Backdoor Attacks on Continuous Prompts BadPrompt | Proceedings of the 36th International Conference on Neural Information Processing Systems 36th Conference on Neural Information Processing Systems (NeurIPS 2022) 如图1a,关注的是连续…...
DeepSeek 实现趣味心理测试应用开发教程
一、趣味心理测试应用简介 趣味心理测试是一种通过简单的问题或互动,为用户提供心理特征分析的方式。它通常包含以下功能: 测试题目展示:以问答形式呈现心理测试题。用户行为分析:根据用户的回答或选择,分析心理特征…...
计算机网络八股文--day1
从浏览器输入url到显示主页的过程? 1. 浏览器查询域名的IP地址 2. 浏览器和服务器TCP三次握手 3. 浏览器向服务器发送一个HTTP请求 4. 服务器处理请求,返回HTTP响应 5. 浏览器解析并且渲染页面 6. 断开连接 其中使用到的协议有DNS协议(…...
【计算机视觉】OpenCV实战项目:FunnyMirrors:基于OpenCV的实时哈哈镜效果实现技术解析
FunnyMirrors:基于OpenCV的实时哈哈镜效果实现技术解析 1. 项目概述2. 技术原理2.1 图像变形基础2.2 常见的哈哈镜变形算法2.2.1 凸透镜效果2.2.2 凹透镜效果2.2.3 波浪效果 3. 项目实现细节3.1 核心代码结构3.2 主要功能实现3.2.1 图像采集3.2.2 变形映射生成3.2.3…...
量子机器学习:下一代AI的算力革命与算法范式迁移——从量子神经网络到混合量子-经典架构的产业落地
一、引言:当AI遇见量子力学 2025年,全球量子计算市场规模突破200亿美元,而量子机器学习(QML)正以370%的年复合增长率(数据来源:Gartner 2024)成为最受关注的技术融合领域。传统深度…...
【数据结构】——栈
一、栈的概念和结构 栈其实就是一种特殊的顺序表,其只允许在一端进出,就是栈的数据的插入和删除只能在一端进行,进行数据的插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的元素遵循先进后出LIFO(Last InFirst O…...
Octave 绘图快速入门指南
目录 1. 基本的 2D 绘图 2. 自定义图形样式 3. 绘制散点图 4. 绘制柱状图 5. 绘制直方图 6. 3D 绘图 6.6.1 3D 曲面图 6.6.2 3D 散点图 7. 绘制极坐标 8. 多子图绘制 总结 Octave 是一个类似于 MATLAB 的开源数学软件,广泛用于数值计算和数据分析。它提供…...
RabbitMQ深入学习
继续上一节的学习,上一节学习了RabbitMQ的基本内容,本节学习RabbitMQ的高级特性。 RocketMQ的高级特性学习见这篇博客 目录 1.消息可靠性1.1生产者消息确认1.2消息持久化1.3消费者消息确认1.4消费失败重试机制1.5消息可靠性保证总结 2.什么是死信交换机…...
数据结构中的栈与队列:原理、实现与应用
前言:栈和队列是计算机科学中两种最基础的线性数据结构,它们的独特操作规则和广泛的应用场景使其成为每一位开发者必须掌握的核心知识。本文将通过生活案例、代码实现和实际应用场景,带您深入理解这两种数据结构的精髓。 1.栈(Sta…...
Android 13 默认打开 使用屏幕键盘
原生设置里,系统-语言和输入法-实体键盘-使用屏幕键盘 选项, 关闭时,外接物理键盘,如USB键盘,输入时不会弹出软键盘。 打开时,外接物理键盘,如USB键盘,输入时会弹出软键盘。 这个选…...
C++GO语言微服务之图片、短信验证码生成及存储
目录 01 session的处理 02 获取网页图片验证码ID 03 测试图片验证码 04 图片验证码模块集成 05 图片验证码功能移植微服务 06 图片验证码功能对接微服务的web实现 07 对接微服务的web实现步骤小结 08 Redis数据库基本操作回顾 09 go语言操作Redis数据库API介绍 10 go语…...
视觉革命来袭!ComfyUI-LTXVideo 让视频创作更高效
探索LTX-Video 支持的ComfyUI 在数字化视频创作领域,视频制作效果的提升对创作者来说无疑是一项重要的突破。LTX-Video支持的ComfyUI便是这样一款提供自定义节点的工具集,它专为改善视频质量、提升生成速度而开发。接下来,我们将详细介绍其功…...
MySQL 索引(一)
文章目录 索引(重点)硬件理解磁盘盘片和扇区定位扇区磁盘的随机访问和连续访问 软件方面的理解建立共识索引的理解 索引(重点) 索引可以提高数据库的性能,它的价值,在于提高一个海量数据的检索速度。 案例…...
认识 Linux 内存构成:Linux 内存调优之内存分配机制和换页行为认知
写在前面 博文内容涉及 Linux 中内存分配和换页机制的基本认知理解不足小伙伴帮忙指正 😃,生活加油99%的焦虑都来自于虚度时间和没有好好做事,所以唯一的解决办法就是行动起来,认真做完事情,战胜焦虑,战胜那些心里空荡荡的时刻,而不是选择逃避。不要站在原地想象困难,行…...
uniapp-商城-50-后台 商家信息
本文介绍了如何在后台管理系统中添加和展示商家信息,包括商家logo、名称、电话、地址和介绍等内容,并支持后期上传营业许可等文件。通过使用uni-app的uni-forms组件,可以方便地实现表单的创建、校验和管理操作。文章详细说明了组件的引入、页…...
汇编语言的温度魔法:单总线温度采集与显示的奇幻之旅
在嵌入式系统的奇妙世界中,汇编语言与硬件的结合总是充满了无限可能。今天,我将带你走进一场充满乐趣的实验:如何用汇编语言在单片机上实现单总线温度采集与显示。这不仅是一次技术探索,更是一场点亮创意与灵感的奇幻之旅…...
2025盘古石初赛WP
来不及做,还有n道题待填坑 文章目录 手机取证 Mobile Forensics分析安卓手机检材,手机的IMSI是? [答案格式:660336842291717]养鱼诈骗投资1000,五天后收益是? [答案格式:123]分析苹果手机检材&a…...
巡检机器人数据处理技术的创新与实践
摘要 随着科技的飞速发展,巡检机器人在各行业中逐渐取代人工巡检,展现出高效、精准、安全等显著优势。当前,巡检机器人已从单纯的数据采集阶段迈向对采集数据进行深度分析的新阶段。本文探讨了巡检机器人替代人工巡检的现状及优势,…...
MySQL的Order by与Group by优化详解!
目录 前言核心思想:让索引帮你“排好序”或“分好组”Part 1: ORDER BY 优化详解1.1 什么是 Filesort?为什么它慢?1.2 如何避免 Filesort?—— 利用索引的有序性1.3 EXPLAIN 示例 (ORDER BY) Part 2: GROUP BY 优化详解2.1 什么是…...
使用小丸工具箱(视频压缩教学)压缩7倍
我们日常经常会遇见视频录制或者剪辑视频生成之后,视频文件非常占用存储空间,那么这款开源工具可以帮助我们压缩7倍,而且视频质量依然清晰。 软件下载 ①:可以通过我分享的CSDN资源下载:https://download.csdn.net/d…...
ui组件二次封装(vue)
组件二次封装的意义 保证一个系统中ui风格和功能的一致性便于维护 从属性、事件、插槽、ref这几方面考虑 属性和事件的处理:ui组件上绑定$attrs(v-model本质也是一个属性加一个事件,所以也在其列) 在自定义组件中打印$attrs&am…...
利用大型语言模型有效识别网络威胁情报报告中的攻击技术
摘要 本研究评估了网络威胁情报(CTI)提取方法在识别来自网络威胁报告中的攻击技术方面的性能,这些报告可从网络上获取,并使用了 MITRE ATT&CK 框架。我们分析了四种配置,这些配置利用了最先进的工具,包…...
笔试模拟 day4
观前提醒: 笔试所有系列文章均是记录本人的笔试题思路与代码,从中得到的启发和从别人题解的学习到的地方,所以关于题目的解答,只是以本人能读懂为目标,如果大家觉得看不懂,那是正常的。如果对本文的某些知…...
TCP的连接管理
三次握手 什么是三次握手? 1. 第一次握手(客户端 → 服务器) 客户端发送一个 SYN 报文,请求建立连接。 报文中包含一个初始序列号 SEQ x。 表示:我想和你建立连接,我的序列号是 x。 2. 第二次握手&a…...
ffmpeg 写入avpacket时候,即av_interleaved_write_frame方法是如何不需要 业务层释放avpacket的 逻辑分析
我们在通过 av_interleaved_write_frame方法 写入 avpacket的时候,通常不需要关心 avpacket的生命周期。 本文分析一下内部实现的部分。 ----> 代表一个内部实现。 A(){ B(); C(); } B(){ D(); } 表示为: A ---->B(); ---->D(); ---->C(); int…...