网络流量分析 | Zeek(上)
介绍
Zeek 是一个开源且商用的网络监控和流量分析工具,许多的运维人员将 Zeek 作为网络安全监控器(Network Security Monitor,NSM),以支持可疑或恶意活动的调查。在安全领域之外,Zeek 还可被用于各种流量分析,包括性能测量和故障排除。
而在开始接触 Zeek 之前,需要先简单区分一下网络监控(Network Monitoring)和网络安全监控(Network Security Monitoring)。
网络监控&网络安全监控
网络监控是一套管理措施,用于观察并持续概括网络流量,同时有选择地保存网络流量以作进一步调查。它主要关注IT资产的正常运行时间(可用性)、设备健康和连接质量(性能)以及网络流量平衡和管理(配置)等。通常这并不包括识别漏洞和重大安全问题等任务。
网络安全监控则侧重于网络的异常情况,监控和可视化网络流量并调查可疑事件是网络安全监控的核心部分。
Zeek vs Snort
虽然这两者都被称为 IDS/NIDS,但二者各有所长,了解二者各自的优劣势并在合适场景选择正确工具往往能让我们事半功倍。
工具 | Zeek | Snort |
---|---|---|
能力 | 常被用作NSM和IDS,其重点在于网络分析。Zeek 聚焦于触发警报的特定威胁,检测机制侧重于“事件” | 常被用作IDS/IPS。Snort 利用“签名”来检测漏洞,检测机制侧重于签名模式和数据包 |
优势 | - 提供深入的流量可视度 - 对威胁猎取很有帮助 - 可以检测到复杂威胁 - 具有脚本语言且支持事件关联 - 日志阅读非常简单 | - 规则编写简单 - Cisco 支持的规则 - 社区支持 |
劣势 | - 难以使用 - 分析需要依靠手动或自动化 | - 难以检测到复杂威胁 |
常见使用情况 | - 网络监控 - 深入的流量调查 - 连锁事件中的入侵检测 | - 入侵检测和防御 - 终止已知的攻击或威胁 |
Zeek 的结构
在此只关注 Zeek 最主要的两层:事件引擎(Event Engine)和策略脚本解释器(Policy Script Interpreter)。
事件引擎的核心任务是生成事件。它会提取收到的数据包中的基础信息,比如源地址和目标地址、协议类型、会话状态和所含文件等,之后生成事件。
策略脚本解释器用于语义分析,它通过Zeek脚本对事件进行逻辑分析,并将事件与响应关联。
Zeek 框架
Zeek 在脚本层有许多框架可供使用,这些框架是 Zeek 在脚本层面提供的模块化工具集,用于扩展其功能性,增强Zeek的灵活性以及与其他网络组件的兼容性。
部分框架针对相对特定的用例设计,而另一些框架则几乎运行于所有Zeek部署环境中,比如“Logging”框架为所有Zeek日志提供了底层支持。
由于框架之间相互依赖构建,因此了解每个框架的功能至关重要。
框架 | 功能 |
---|---|
Logging | 日志 |
Notice | 告警 |
Input | 数据输入 |
Configuration | 配置 |
Intelligence | 情报分析 |
Cluster | 集群 |
Broker Communication | 通讯 |
Supervisor | 监控 |
GeoLocation | 地理定位 |
File Analysis | 文件分析 |
Signature | 数字签名 |
Summary | 摘要 |
NetControl | 网络流量控制 |
Packet Analysis | 数据包解析 |
TLS Decryption | 解密TLS流量 |
Zeek 的输出
当我们运行Zeek时,它会自动开始调查流量或调查指定的pcap文件并自动生成日志。如果用Zeek处理pcap文件,那么它会将日志生成到工作目录下;如果将Zeek作为一个服务,那么日志会被默认放在/opt/zeek/logs/
目录下。
与Zeek一起工作!
Zeek 有两种操作选项,第一个选项是将其作为服务运行,第二个选项是使用Zeek处理pcap文件。
我们先使用第一种选项,将Zeek作为服务进行运行。
首先我们需要确认Zeek是否已安装,通过zeek -v
命令查看:
确认Zeek已经安装之后,就正式将Zeek作为一个服务运行!将其作为服务运行需要利用ZeekControl
模块,而运行该模块需要根用户权限,因此需要先提权再执行该模块:
ZeekControl 有三个命令:
- status:查看服务状态
- start:启动服务
- stop:停止服务
当我们需要监听实时网络流量时,将Zeek作为服务是唯一的实现方式。而除了将Zeek作为网络监控工具外,我们还可以将它用作数据包调查工具,这就需要使用第二个选项,用Zeek处理pcap文件,在处理完pcap文件后,Zeek会根据流量自动创建日志文件。
要使用第二个选项也很简单,只需要使用zeek -C -r [xxx.pcap]
即可。其中,-C
表示忽视校验和错误;-r
表示阅读选项,会读取或处理pcap文件。
运行上述命令后,工作目录下生成了许多日志文件:
Zeek 日志
Zeek 可以根据流量数据生成日志文件,并且 Zeek 生成的日志是结构严谨且以制表符分隔的ASCII文件,因此阅读和处理它们是比较容易的,但是需要付出一点努力。我们应当熟悉网络和协议,以便在调查中关联日志,知道哪里是重点,并找到证据。
每个日志都有许多fields,每一个field由许多流量数据组成。关联性通过一个被称作“UID(Unique Identifier)”的唯一值完成。
在 Zeek 中,日志被分为七类,下面将其具体列出:
分类 | 描述 | 日志文件 |
---|---|---|
Network | 网络协议日志 | conn.log, dce_rpc.log, dhcp.log, dnp3.log, dns.log, ftp.log, http.log, irc.log, kerberos.log, modbus.log, modbus_register_change.log, mysql.log, ntlm.log, ntp.log, radius.log, rdp.log, rfb.log, sip.log, smb_cmd.log, smb_files.log, smb_mapping.log, smtp.log, snmp.log, socks.log, ssh.log, ssl.log, syslog.log, tunnel.log |
Files | 文件分析结果日志 | files.log, ocsp.log, pe.log, x509.log |
NetControl | 网络控制和流量日志 | netcontrol.log, netcontrol_drop.log, netcontrol_shunt.log, netcontrol_catch_release.log, openflow.log |
Detection | 检测以及可能的指标日志 | intel.log, notice.log, notice_alarm.log, signatures.log, traceroute.log |
Network Observations | 网络流量日志 | known_certs.log, known_hosts.log, known_modbus.log, known_services.log, software.log |
Miscellaneous | 包括外部警报、输入和故障的其他日志 | barnyard2.log, dpd.log, unified2.log, unknown_protocols.log, weird.log, weird_stats.log |
Zeek Diagnostic | 包括系统信息、操作和一些统计数据的Zeek 诊断日志 | broker.log, capture_loss.log, cluster.log, config.log, loaded_scripts.log, packet_filter.log, print.log, prof.log, reporter.log, stats.log, stderr.log, stdout.log |
如此多的协议和日志,这也正是Zeek工具的难点:掌握所需的网络知识和调查思维。但这些都可以慢慢通过后期学习学会,加油学吧!
在实践中为了能够让调查更加清晰、更加具有效率,我们可以在调查之前挑选对应几个日志进行小分类,这些小分类为:
- Overall Info:用于一次性审查全局连接、共享文件、加载脚本和指标。这是调查的第一步
- Protocol Based:当审查全局流量并发现可疑指标或想要继续深入调查,就需要聚焦某一个协议
- Detection:使用预构建或自定义脚本和签名结果,通过附加指标或关联行动来支持我们的调查结果
- Observation:关于主机、服务、软件和意料之外的行为统计将帮助我们发现可能的遗漏点,最终结束我们的调查
根据自己的需要挑选对应的日志能够让我们的调查工作事半功倍。
浏览日志
前文我们提到,Zeek 的日志虽然便于阅读和处理,但是仍然需要额外的一些工作。调查Zeek生成的日志会用到命令行工具或其他工具(如zeek-cut
)。现在我们先使用命令行工具浏览日志。
首先我们用cat
命令和记事本来浏览日志:
可以明显感觉到,使用命令行工具或记事本这样的方式阅读日志是很难去快速发现异常的。一般我们可以使用ELK或者Splunk等外部可视化和关联工具来分析日志,但这两个不是本文重点,我们接下来重点讲解如何动手去处理日志。这就需要用到另一个辅助程序——zeek-cut
.
zeek-cut
可以帮助减少日志文件展示的列。因为每个日志文件都会有“#fields”和“#types”字段,如上图红框所示。而我们就可以通过zeek-cut
来从“#fields”字段中挑选出我们真正想要的列,这样得到的日志结果也就更加清晰。比如现在我们想要看日志中的uid、协议、源地址、目的地址、源端口、目的端口这几列,那么我们就可以通过如下命令进行过滤:
root@ubuntu$ cat conn.log | zeek-cut uid proto id.orig_h id.orig_p id.resp_h id.resp_p
相比之下,确实得到的结果也更加清晰了。
CLI功夫修炼
不得不承认,图形化界面确实方便,但是它也有不足之处,比如面对大量的数据时,图形化界面的稳定性和效率其实是比命令行接口(Command Line Interface,CLI)要差的。
因此,掌握CLI技术对日后的文件分析是非常有利的,因此本小节将展示一些有用的CLI查询语句,日后想用就来此处翻一翻:
基本语句
- 浏览历史命令:
history
- 执行历史命令中的第x条:
![x]
- 执行前一条命令:
!!
读文件
- 读文件:
cat [x]
- 读文件前十行:
head [x]
- 读文件最后十行:
tail [x]
查找&过滤
- 切割出第y个部分:
cat [x] | cut -f [y]
- 切割出第y列:
cat [x] | cut -c [y]
- 过滤出某一个关键词 z:
cat [x] | grep [z]
- 按字母顺序对输出排序:
cat [x] | sort
- 按数字顺序对输出排序:
cat [x] | sort -n
- 消除重复行:
cat [x] | uniq
- 计算行数:
cat [x] | wc -l
- 展示行数:
cat [x] | nl
高级
- 打印第y行:
cat [x] | sed -n '[y]p'
或cat [x] | awk 'NR == [y] {print $0}'
- 打印第y-z行:
cat [x] | sed -n '[y,z]p'
- 打印行号小于y的所有行:
cat [x] | awk 'NR < [y] {print $0}'
其他
- 删除重复值:
sort | uniq
- 删除重复值并计算每个值出现的次数:
sort | uniq -c
- 对数值进行数值排序和递归排序:
sort -nr
- 反转字符串:
rev
- 将字符串按
.
分割,并保留前两部分:cut -d '.' -f 1-2
- 显示与“test”字符串不匹配的行:
grep -v 'test'
- 显示不匹配字符串“test1”和“test2”其中一个或全部:
grep -v -e 'test1' -e 'test2'
相关文章:
网络流量分析 | Zeek(上)
介绍 Zeek 是一个开源且商用的网络监控和流量分析工具,许多的运维人员将 Zeek 作为网络安全监控器(Network Security Monitor,NSM),以支持可疑或恶意活动的调查。在安全领域之外,Zeek 还可被用于各种流量分…...
Unity3D仿星露谷物语开发44之收集农作物
1、目标 在土地中挖掘后,洒下种子后逐渐成长,然后使用篮子收集成熟后的农作物,工具栏中也会相应地增加该农作物。 2、修改CropStandard的参数 Assets -> Prefabs -> Crop下的CropStandard,修改其Box Collider 2D的Size(Y…...
AUTOSAR图解==>AUTOSAR_SRS_WatchdogDriver
AUTOSAR 看门狗驱动 (Watchdog Driver) 详解 AUTOSAR基础软件模块之看门狗驱动技术分析 目录 概述 1.1 看门狗驱动的作用 1.2 适用范围架构设计 2.1 总体架构 2.2 内部结构 2.3 接口设计功能实现 3.1 初始化和模式切换 3.2 状态管理 3.3 外部看门狗支持配置参数 4.1 核心配置项…...
Fidder基本操作
1.抓取https请求 Fidder默认不能抓取https请求,我们必须通过相应的设置才能抓取https请求 1.选择tools下的option 2.选择https选项,并且勾选下面的选项 3.点击Actions导出信任证书到桌面(expert root certificate to desktop) 4.在浏览器中添加对应的证…...
在线教育本地化分发:代理IP实现区域访问控制与内容适配
在在线教育本地化分发场景中,代理IP通过地理精准识别、动态内容适配与合规访问控制,成为突破区域限制、提升用户体验的核心技术工具。以下是基于2025年技术实践的解决方案: 一、区域访问控制的核心机制 地理IP库匹配与白名单策略 通过代理IP的…...
JAVA的常见API文档(上)
游戏打包 注意API文档中的方法不需要记忆!! 了解之后如果需要可以查询API文档 对Math的方法总结: 运用刚学的Math方法加快代码的运行效率 可以减少循环次数 找规律: 发现因子有规律: 必定一个大于平方根,…...
【数据结构】_二叉树
1.二叉树链式结构的实现 1.1 前置说明 在学习二叉树的基本操作前,需先要创建一棵二叉树,然后才能学习其相关的基本操作。由于现在大家对二叉树结构掌握还不够深入,为了降低大家学习成本,此处手动快速创建一棵简单的二叉树&#x…...
ALIENTEK精英STM32F103开发板 实验0测试程序详解
#include "sys.h" #include "usart.h" #include "delay.h" //ALIENTEK精英STM32F103开发板 实验0 //新建工程 实验 //技术支持:www.openedv.com //广州市星翼电子科技有限公司 int main(void) { u8 t0; //见注释1 St…...
LeetCode 33. 搜索旋转排序数组:二分查找的边界艺术
文章目录 问题描述解决思路代码实现关键点解析1. 为什么用 nums[left] < nums[mid]?2. 示例分析案例 1:数组 [3, 1],目标值 1案例 2:数组 [5],目标值 5 边界条件处理1. 单元素数组2. 完全有序数组3. 严格递增与重复…...
Rust 学习笔记:关于 HashMap 的练习题
Rust 学习笔记:关于 HashMap 的练习题 Rust 学习笔记:关于 HashMap 的练习题以下代码能否通过编译?若能,输出是?以下代码能否通过编译?若能,输出是? Rust 学习笔记:关于 …...
(头歌作业)—6.1 葡萄酒评论分析报告(project)
第1关:葡萄酒评论分析报告——国家列表和平均分 任务描述 本关任务:编写程序,多维度分析葡萄酒数据。 相关知识 葡萄酒评论分析报告描述 winemag-data.csv 文件 winemag-data.csv 包含 编号、国家、描述、评分、价格、省份 等 6列 和12974…...
下集:一条打包到底的静态部署之路
说完坑,再来讲正经操作。 这次我决定写得明明白白,清清楚楚,把那条“Spring Boot 扛着 Next.js 上线”的路子掰碎了揉细了告诉你。 无废话、无迷信、无AI幻觉。 第一步:Next.js 静态导出 项目根目录下的 next.config.js 要写得…...
多商户商城系统源码解析:开发直播电商APP的技术底层实战详解
随着直播电商的火爆,越来越多的创业者和企业都在寻求打造自己的多商户商城系统,以实现“人、货、场”三者的深度融合。然而,从一个简单的电商平台到一个功能完善的直播电商APP,其技术底层架构和实现过程并非一蹴而就。本文将从架构…...
每日Prompt:生成自拍照
提示词 帮我生成一张图片:图片风格为「人像摄影」,请你画一张及其平凡无奇的iPhone对镜自拍照,主角是穿着JK风格cos服的可爱女孩,在自己精心布置的可按风格的房间内的落地镜前用后置摄像头随手一拍的快照。照片开启了闪光灯&…...
LeetCode 热题 100_寻找重复数(100_287_中等_C++)(技巧)(暴力解法;哈希集合;二分查找)
LeetCode 热题 100_寻找重复数(100_287_中等_C) 题目描述:输入输出样例:题解:解题思路:思路一(暴力解法):思路二(哈希集合):思路三&am…...
多模态学习(三)—— ROPE位置编码:从理论到实践
ROPE位置编码:从理论到LLaMA的实践 一、前言 ROPE(Rotary Positional Embedding,旋转位置编码)是一种通过旋转矩阵将位置信息融入Token Embedding的编码方法。相比传统Transformer的绝对位置编码,ROPE能更灵活地建模…...
Redis——过期删除策略和内存
过期删除策略 Redis可以对key设置过期时间,因此需要有相应的机制将已过期的键值对删除 设置了过期时间的key会存放在过期字典中,可以用presist命令取消key过期时间 过期字典存储在redisDb结构中: typedef struct redisDb {dict *dict; …...
Selenium无法定位元素的几种解决方案详解
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 1、frame/iframe表单嵌套 WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌的页面元素无法直接定位。 解决方法: …...
开源项目实战学习之YOLO11:12.3 ultralytics-models-sam-encoders.py源码分析
👉 点击关注不迷路 👉 点击关注不迷路 👉 另外,前些天发现了一个巨牛的AI人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。感兴趣的可以点击相关跳转链接。 点击跳转到网站。 ultralytics-models-sam 1.sam-modules-encoders.pyblocks.py: 定义模型中的各…...
Bitmap原理及Hive去重方式对比
1. 什么是 Bitmap? Bitmap(位图)是一种用位(bit)来表示数据集合的数据结构。每个位代表一个元素是否存在,比如: 一个长度为N的bitmap,每一位对应一个元素的状态(0或1&a…...
力扣-比特位计数(统计一个数二进制下1的个数)
下面是题面 1.用c的内置函数__builtin_popcount() 语法:__builtin_popcount(int x),函数会返回一个二进制下x所含的1的个数 2.直接数位枚举 这是最慢也是暴力做法,写法也很简单 用一个while循环…...
开源项目实战学习之YOLO11:12.2 ultralytics-models-sam-decoders.py源码分析
👉 点击关注不迷路 👉 点击关注不迷路 👉 另外,前些天发现了一个巨牛的AI人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。感兴趣的可以点击相关跳转链接。 点击跳转到网站。 ultralytics-models-sam 1.sam-modules-decoders.pyblocks.py: 定义模型中的各…...
Python训练营打卡Day28
浙大疏锦行 DAY 28 类的定义和方法 知识点回顾: 1.类的定义 2.pass占位语句 3.类的初始化方法 4.类的普通方法 5.类的继承:属性的继承、方法的继承 作业 题目1:定义圆(Circle)类 要求: 1.包含属性&#x…...
【前端基础】HTML元素隐藏的四个方法(display设置为none、visibikity设置为hidden、rgba设置颜色、opacity设置透明度)
HTML元素隐藏的四个方法 1、display设置为none 元素不显示出来。不占位置,也没有任何空间。就不存在一样。 2、visibility设置为hidden 默认:visible。元素可见设置为hidden:元素不可见,但是会占据这个元素应该占用的空间。 3、…...
STM32中的DMA
DMA介绍 什么是DMA? DMA(Direct Memory Access,直接存储器访问)提供在外设与内存、存储器和存储器之间的高速数据传输使用。它允许不同速度的硬件装置来沟通,而不需要依赖于CPU,在这个时间中,CPU对于内存…...
小型气象站应用之鱼塘养殖方案
概述 "看天吃饭",在农村经常听到这句话,鱼塘也不例外。天气的急剧变化,或连续的不利天气都有可能造成鱼类"浮头",甚至"翻肚子",更甚至"翻塘",一年白忙活了。 鱼塘…...
Makefile变量冲突与包含关系解析
Nuttx makefile每层独立,除非显示的通过include的方式包含。 Makefile调试技巧 打印变量 $(info CSRCS$(CSRCS))查看变量赋值过程 make --debugv在 Makefile 中,变量的作用域和可见性取决于 包含关系(include) 和 递归调用&…...
2025/517学习
对离群值怎么操作。这个就是拟合操作的。用更弯曲的曲线去拟合,如常见函数log 多元回归和单元回归 如题,如果我有多个自变量,来对一个因变量进行OLS回归,有没有operator可以做到?(ts_regression似乎只支持一个…...
浅谈前端架构设计与工程化
引言 在当今快速发展的Web开发领域,前端已经从简单的页面展示演变为复杂的应用程序开发。随着项目规模的扩大和团队协作的需求增加,良好的前端架构设计和工程化实践变得至关重要。本文将探讨如何构建可维护、可扩展的前端架构,并介绍现代前端…...
JMeter 教程:编写 POST 请求脚本访问百度
目录 ✅ 教程目的 🛠️ 环境要求 📄 实操步骤 第一步:启动 JMeter 第二步:添加测试计划和线程组 1.右键左侧 Test Plan(测试计划) 2.选择 Add → Threads (Users) → Thread Group(线程组…...
Typescript学习教程,从入门到精通,TypeScript 函数语法知识点及案例代码(5)
TypeScript 函数语法知识点及案例代码 TypeScript 提供了丰富的函数语法特性,使得函数定义更加灵活和强大。以下将详细介绍 TypeScript 中函数的相关语法,包括函数定义、可选参数、默认参数、剩余参数、重载函数、递归函数、匿名函数、箭头函数以及回调…...
【51单片机定时器/计数器】
目录 简介 定时器配置流程 1.配置定时器工作方式寄存器TMOD 2.配置中断寄存器TCON 3.定时时间计算公式 4.配置中断允许寄存器IE 5.使用中断函数完成中断 简介 定时器/计数器本质都是对脉冲信号进行计数,区别在于作为定时器时的脉冲信号来自于晶振12分频&…...
Oracle 的 ASSM 表空间
Oracle 的 ASSM(Automatic Segment Space Management)表空间 是一种自动管理段空间的技术,通过位图(Bitmap)机制跟踪数据块的使用情况,替代传统的手动管理(MSSM,即 Freelist 管理&am…...
C++学习:六个月从基础到就业——C++11/14:auto类型推导
C学习:六个月从基础到就业——C11/14:auto类型推导 本文是我C学习之旅系列的第四十一篇技术文章,也是第三阶段"现代C特性"的第三篇,主要介绍C11/14中的auto类型推导机制。查看完整系列目录了解更多内容。 引言 在现代C…...
select语句的书写顺序
一.MySQL SELECT语句的执行顺序 MySQL中SELECT语句的执行顺序与SQL语句的书写顺序不同,理解这个执行顺序对于编写高效查询非常重要。 1.标准SELECT语句的执行顺序 FROM子句(包括JOIN操作) 首先确定数据来源表执行表连接操作 WHERE子句 对F…...
OpenWebUI新突破,MCPO框架解锁MCP工具新玩法
大家好,Open WebUI 迎来重要更新,现已正式支持 MCP 工具服务器,但 MCP 工具服务器需由兼容 OpenAPI 的代理作为前端。mcpo 是一款实用代理,经测试,它能让开发者使用 MCP 服务器命令和标准 OpenAPI 服务器工具ÿ…...
【Day28】
总结: Python 通过缩进来定义代码块的结构。当解释器遇到像 def, class, if, for 这样的语句,并且后面跟着冒号 : 时,它就期望接下来会有一个或多个缩进的语句来构成这个代码块。如果它没有找到任何缩进的语句(即代码块是空的&am…...
STM32 | FreeRTOS 消息队列
01 一、概述 队列又称消息队列,是一种常用于任务间通信的数据结构,队列可以在任务与任务间、中断和任务间传递信息,实现了任务接收来自其他任务或中断的不固定长度的消息,任务能够从队列里面读取消息,当队列中的消…...
Vue-事件修饰符
事件修饰符 prevent (阻止默认事件) 超链接 点击事件 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>事件修饰符</title><!-- 引入Vue --><script …...
c++函数调用运算符及类型转换运算符重载
author: hjjdebug date: 2025年 05月 17日 星期六 14:44:48 CST descrip: c函数调用运算符及类型转换运算符重载 文章目录 0. 前言. 运算符包括以下运算符.1. 运算符重载语句一般格式:2. 函数调用运算符:3. 类型转换运算符: 例如 int(); double(); bool(…...
如何在 Windows 10 或 11 中安装 PowerShellGet 模块?
PowerShell 是微软在其 Windows 操作系统上提供的强大脚本语言,可用于通过命令行界面自动化各种任务,适用于 Windows 桌面或服务器环境。而 PowerShellGet 是 PowerShell 中的一个模块,提供了用于从各种来源发现、安装、更新和发布模块的 cmdlet。 本文将介绍如何在 PowerS…...
84.评论日记
原链接 这个视频我发了四五条评论。评论内容甚至和下面这个视频内的其他评论一样。 找了另外的账号也发了。 发现,无论是我这个账号,还是其他的账号,评论都无法看到。 我大胆猜测有一种机制,某些官号会被设置成一种高检测的等…...
一周学会Pandas2 Python数据处理与分析-Pandas2数据添加修改删除操作
锋哥原创的Pandas2 Python数据处理与分析 视频教程: 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 对数据的修改、增加和删除在数据整理过程中时常发生。修改的情况一般是修改错误,还有一种情况是格式转换…...
荷兰国旗问题 之 指针划分区间问题
文章目录 首先介绍一下什么是荷兰国旗问题?问题描述为:给定一个由红色、白色和蓝色三种颜色组成的无序数组,将数组元素按颜色排序,使得所有红色元素在前,白色元素居中,蓝色元素在后。这里的 “颜色” 通常用…...
冒泡排序-java
public class BubbleSort{ public static void bubbleSort(int[] arr) { int n arr.length; boolean swapped; // 外层循环控制遍历的轮数 for (int i 0; i < n - 1; i) { swapped false; for (int j 0; …...
进阶-数据结构部分:2、常用排序算法
飞书文档https://x509p6c8to.feishu.cn/wiki/FfpIwIPtviMMb4kAn3Sc40ABnUh 常用排序算法 这几种算法都是常见的排序算法,它们的优劣和适用场景如下: 冒泡排序(Bubble Sort):简单易懂,时间复杂度较高&…...
人工智能-自然语言与语音产品实现
一、语义相似度 (一)、文本向量化 1、文本向量化(Text Vectorization) 是自然语言处理(NLP)中的核心预处理步骤,旨在将人类语言的文本转换为计算机可处理的数值向量(数学表达&…...
阿里巴巴开源移动端多模态LLM工具——MNN
MNN 是一个高效且轻量级的深度学习框架。它支持深度学习模型的推理和训练,并在设备端的推理和训练方面具有行业领先的性能。目前,MNN 已集成到阿里巴巴集团的 30 多个应用中,如淘宝、天猫、优酷、钉钉、闲鱼等,覆盖了直播、短视频…...
SpringBootAdmin:全方位监控与管理SpringBoot应用
监控的意义 1. 监控服务状态是否宕机 2. 监控服务运行指标 (内存,虚拟机,线程,请求等) 3. 监控日志 4. 管理服务 (服务下线) 可视化监控平台 Spring Boot Admin, 开源社区项目, 用于管理和监控SpringBoot应用程序. 客户端注册到服务端, 通过HTTP请求方式, 服务端定期从客…...
SAP HCM 0008数据存储逻辑
0008信息类型:0008信息类型是存储员工基本薪酬的地方,因为很多企业都会都薪酬带宽,都会按岗定薪,所以在上线前为体现工资体系的标准化,都会在配置对应的薪酬关系,HCM叫间接评估,今天我们就分析下…...