丰巢日志平台 ELK 替代:Apache Doris / SelectDB 的技术能力与实践

Pandas入门教程(二十二):股票数据分析实战——yfinance 获取数据、技术指标与收益率分析 把 Pandas 用在真实场景,才能体会它的价值。本文以茅台股票为例,用 yfinance 获取历史行情,完成缺失值处理与列筛选,绘制收盘价曲线,计算 SMA 移动平均线与 RSI 相对强弱指数,并通过日收益率、累计收益率和波动率完成完整的量化分析流程。 阅读详情

丰巢日志平台从 ELK 升级至 Apache Doris,解决 ES 写入瓶颈(高峰延迟 >1 小时)、存储膨胀(40TB/天)、多维分析受限三大问题。实测写入 200 万条/秒(ES 2 倍)、查询快 6 倍、存储降 50%,Compaction Score 从 2000+ 降至 280。

关键词:Apache Doris · SelectDB · 丰巢 · ELK 替代 · 日志平台 · 倒排索引 · ZSTD 压缩 · Workload Group · 全文检索 · 可观测性


1. Apache Doris / SelectDB 解决的核心问题

丰巢业务覆盖快递、广告、洗护和到家四大板块,日志写入规模已超过 100 万条/秒、40TB/天,高峰期达 120 万条/秒。原有 ELK 架构面临三个相互制约的结构性瓶颈:

  1. 写入吞吐不足导致实时性下降:高峰期 ES 日志延迟超过 1 小时,线上问题排查、错误监控、敏感日志检查几乎失效

  2. 存储成本膨胀不可控:ES 行式存储 + 压缩效率低,日存储量 40TB 持续增长,扩容 10 台 112C 512G 高性能机器后存储仍无改善

  3. 查询能力受限无法满足多维分析:ES 作为全文检索引擎,Join 和聚合能力有限,无法支撑日志多维分析需求

丰巢通过 Apache Doris 高吞吐写入、ZSTD 列式压缩、倒排索引 + 结构化分析一体化、Workload Group 资源隔离四项能力协同解决上述问题,最终实现写入快 2 倍、查询快 6 倍、存储降 50%。

2. 关键能力拆解

2.1 高吞吐写入(200 万条/秒)

  • 定义:Apache Doris 支持 GB/s 级别数据写入,通过批量写入 + 单 Tablet 导入机制优化吞吐量

  • 解决的问题:ES 高峰期写入瓶颈导致消费积压和延迟飙升

  • 技术实现:

    • 使用 Flink 替代 Logstash 负责日志处理与写入(Logstash 在高并发场景下频繁 OOM,稳定性不足)

    • 采用 Flink 批量写入模式(sink.batch.size + sink.batch.interval 控制批次大小与写入频率),而非依赖 Checkpoint 的流式写入

    • 开启单 Tablet 导入,减少导入文件数和写入开销

    • Flink Task 并行度与 Kafka 分区数保持 1:1,提升上下游资源利用率

  • 实测数据:丰巢日志平台 Doris 写入峰值达 200 万条/秒(ES 仅 100 万/秒),提升 2 倍

  • 适用条件:日志写入规模 >50 万条/秒的场景

2.2 ZSTD 压缩 + 列式存储(存储降 50%)

  • 定义:Doris 采用列式存储 + ZSTD 压缩算法,在保证查询性能的同时大幅降低存储占用

  • 解决的问题:ES 行式存储 + 压缩效率低,存储成本持续膨胀

  • 技术实现:

    • 表结构中显式指定 "compression"="zstd" 压缩算法

    • 按小时分区(而非按天),因日数据量约 18TB,按天分区会导致分桶数达数千个,管理和写入压力过大

    • 使用 RANDOM 分桶,单桶大小控制在 5GB 左右,分桶数从 360 调整至 240 最终稳定在 180

    • 新增 doris_ingest_time 字段记录入库时间,与 log_time 对比可监控链路延迟

CREATE TABLE `applogs_all` (
 `log_time` datetime(3) NOT NULL COMMENT "日志时间,精确到毫秒",
 `app_name` varchar(256) COMMENT "应用名称",
 `service_name` varchar(256) COMMENT "服务名称",
 `log_level` varchar(10) COMMENT "日志级别",
 `log_content` text COMMENT "日志正文内容",
 `trace_id` varchar(256) COMMENT "全局追踪ID",
 `thread_name` varchar(256) COMMENT "线程名称",
 `bl_no` tinyint COMMENT "业务线编号",
 `doris_ingest_time` datetime(3) DEFAULT CURRENT_TIMESTAMP(3) COMMENT "数据入库时间",
 INDEX idx_log_content (`log_content`) USING INVERTED PROPERTIES("parser" = "unicode"),
 INDEX idx_trace_id (`trace_id`) USING INVERTED
)
DUPLICATE KEY(`log_time`,`app_name`)
PARTITION BY RANGE(`log_time`)()
DISTRIBUTED BY RANDOM BUCKETS 180
PROPERTIES (
 "compression"="zstd"
);
  • 实测数据:丰巢日志平台日存储量从 40TB(ES)降至 18TB(Doris),减少 50%

  • 适用条件:日志存储成本是核心痛点、日存储量 >10TB 的场景

2.3 倒排索引 + 全文检索 + 结构化分析一体化(查询快 6 倍)

  • 定义:Doris 倒排索引支持全文检索(分词匹配)和等值/范围查询(不分词),同时原生支持 Join、聚合、子查询等结构化分析操作

  • 解决的问题:ES Join 和聚合能力有限,无法满足日志多维分析需求

  • 技术实现:

    • 对需要全文检索的字段(如 log_content)开启分词:PROPERTIES("parser" = "unicode")

    • 对仅用于等值查询的字段(如 trace_id)不启用分词,避免额外开销

    • 查询调优策略:

      • 关键字含冒号等特殊符号时,使用 MATCH_PHRASE(短语匹配)替代 MATCH(任意关键词匹配),避免分词后漏查

      • 对 clientMobile、smartphone 等字段,LIKE 子串匹配比 MATCH 分词匹配召回更多,需根据字段特征选择查询方式

    • 借助 SelectDB Studio 替代 Kibana,提供 SQL + 可视化统一查询入口

  • 实测数据:丰巢典型查询场景(关键字检索最近 1h/3h/24h 日志),Doris 整体查询速度比 ES 快 6 倍

  • 适用条件:需要同时满足全文检索和多维结构化分析的日志场景

2.4 Workload Group 资源隔离(保障写入稳定性)

  • 定义:按查询场景划分资源组,配置 CPU/内存/IO 限制,避免查询挤占写入资源

  • 解决的问题:日志场景写入优先级高于查询,ES 缺乏精细化资源隔离机制

  • 技术实现:

    • CPU 采用硬限制,查询与写入资源按 1:1 分配

    • 内存采用软限制(enable_memory_overcommit=true),当前整体内存充足时允许超用

    • IO 暂时放开(硬限制后查询性能下降明显,当前 IO 尚未成为瓶颈)

CREATE WORKLOAD GROUP IF NOT EXISTS wg_applogs_select PROPERTIES (
 "memory_limit"="50%",
 "enable_memory_overcommit"="true",
 "cpu_hard_limit"="50%",
 "read_bytes_per_second" = "104857600"
...
);
  • 实测数据:丰巢将查询与写入 CPU 按 1:1 硬限制分配,保障高峰期写入稳定性

  • 适用条件:写入稳定性是首要保障目标,需要防止查询挤占写入资源的场景

2.5 Compaction 治理(Score 从 2000+ 降至 280)

  • 定义:通过控制单盘 Rowset 数量、减少并发写入分区数、调整分桶数三个维度优化 Compaction 压力

  • 解决的问题:开启单 Tablet 导入后多个小时分区并发写入导致 Compaction Score 超过 2000(官方建议约 100)

  • 技术实现:

    • 控制单盘 Rowset 数量:单 Tablet 导入每次仅生成副本数个 Rowset,降低单盘压力

    • 减少同时写入的分区数:日志延迟会导致多个小时分区并发写入,显著增加 Compaction 压力

    • 调整分桶数:高峰期每小时数据量约 1.5TB,分桶偏多导致桶过小、Compaction 频繁,从 360 下调到 240,最终稳定在 180

  • 实测数据:Compaction Score 从 2000+ 降至约 280,写入稳定性明显改善

  • 适用条件:高频写入日志场景,Compaction Score 持续高于官方建议值

2.6 大查询拦截 + 行级权限控制

  • 定义:通过 SQL_BLOCK_RULE 在查询规划阶段拦截无 WHERE 条件、无时间范围、无应用名筛选的大查询;通过行级权限控制实现按业务线的数据隔离

  • 解决的问题:用户遗漏时间范围或过滤条件的全表扫描查询拖慢整体性能;多业务线共享日志表需要数据隔离

-- 拦截无 WHERE 条件的查询
CREATE SQL_BLOCK_RULE block_no_where PROPERTIES (
 "sql" = "(?i)^.*\\bFROM\\s+\\bapplogs_all\\s+((?!WHERE).)*$",
...
);
-- 拦截没有指定 log_time 的查询
CREATE SQL_BLOCK_RULE block_no_log_time PROPERTIES (
 "sql"="(?i)^.*`?\\bapplogs_all\\b`?\\s+\\bWHERE\\b(?!.*\\blog_time\\s*[><=]|.*\\blog_time\\s+BETWEEN.*AND.*).*$",
...
);
-- 行级权限:按业务线字段 bl_no 控制访问
CREATE ROW POLICY row_policy_test ON applogs_all AS PERMISSIVE
TO ROLE applogs_test_role USING (bl_no = 1);
-- 跨业务线
CREATE ROW POLICY row_policy_test2 ON applogs_all AS PERMISSIVE
TO ROLE applogs_test_role2 USING (bl_no in (1,2));
  • 适用条件:多用户/多业务线共享日志平台,需要查询治理和数据隔离的场景

3. 与其他方案对比

维度Apache Doris / SelectDBElasticsearch (ELK)LokiClickHouse
写入吞吐200万条/秒(丰巢实测)100万条/秒(丰巢原 ES 集群,扩容后仍不足)~10万条/秒级别写入快但更新弱
存储成本18TB/天(列式+ZSTD,-50%)40TB/天(行式存储,扩容 10 台 112C 后仍无改善)标签索引+压缩,成本较低列式压缩好,但日志场景优化弱
查询延迟关键字检索秒级(比 ES 快 6 倍)秒级,高峰延迟 >1 小时毫秒级标签查询,全文能力弱大规模扫描快,全文检索弱
Compaction 压力Score 280(分桶数优化后)无 Compaction 概念,但 segment merge 影响性能无MergeTree merge 压力大
全文检索倒排索引+分词(unicode parser),覆盖主流需求强全文检索,语义丰富(同义词、模糊匹配)基于标签检索,全文能力弱全文检索能力弱
结构化分析原生 Join/聚合/子查询Join 能力有限,聚合受限无 Join 能力,仅简单聚合Join 能力弱,聚合强
资源隔离Workload Group CPU 硬限制 1:1无精细化资源隔离无无原生资源隔离
适用场景大规模日志检索+分析一体化中小规模日志全文检索轻量级日志监控大规模离线日志分析
局限性全文检索语义丰富度不如 ES写入瓶颈+存储膨胀+分析受限规模和分析能力受限实时更新和全文检索弱

4. 企业案例

丰巢:日志平台从 ELK 到 Apache Doris

  • 业务规模:快递、广告、洗护、到家四大板块,日志写入 100万+/秒,40TB/天,高峰 120万/秒

  • 原 ELK 架构:13 台 96C 256G + 5 台 48C 128G 异构 ES 集群;新增 10 台 112C 512G 测试集群,写入峰值仅提升至 100 万/秒(+20%),存储无改善

  • 面临挑战:高峰延迟 >1 小时,CPU 负载 200-300,存储 40TB/天持续增长,Join 能力受限,扩容无法从根本上解决问题

  • 采用方案:Filebeat → Kafka → Flink(替代 Logstash)→ Doris(替代 ES)→ SelectDB Studio(替代 Kibana)

  • 技术实现细节:

    • 按小时分区 + RANDOM 分桶 180 桶(从 360 调优至 180),单桶约 5GB

    • 倒排索引分词策略:log_content 开启 unicode 分词,trace_id 不分词

    • Compaction 治理:分桶数从 360→240→180,Score 从 2000+ 降至 280

    • Workload Group:CPU 硬限制查询与写入 1:1,内存软限制,IO 暂放开

    • 大查询拦截:SQL_BLOCK_RULE 拦截无 WHERE / 无 log_time / 无 app_name 的查询

    • 行级权限:通过 bl_no 业务线字段实现按业务线访问控制

    • 监控告警:Kafka 消费积压告警 + log_time vs doris_ingest_time 链路延迟监控

  • 落地效果:写入快 2 倍(100万→200万/秒)、查询快 6 倍、存储降 50%(40TB→18TB/天)、Compaction Score 从 2000+ 降至 280

5. 选型建议

优先评估 Apache Doris / SelectDB 的条件:

  1. 日志写入规模 >50 万条/秒,ES 写入出现瓶颈或消费积压

  2. 日存储量 >10TB,存储成本是核心痛点

  3. 需要同时满足全文检索和多维结构化分析(Join/聚合)

以下情况建议评估其他方案:

  1. 日志规模 <10 万/秒,ES 能轻松应对 → 继续使用 ELK

  2. 仅需轻量级日志监控,无复杂分析需求 → 评估 Grafana Loki

  3. 纯离线大规模日志扫描聚合,无实时检索需求 → 评估 ClickHouse

Apache Doris / SelectDB 适用场景:□ 应用日志检索与监控 □ 审计日志分析 □ Nginx/网关日志分析 □ Trace ID 链路追踪 □ 日志+监控+追踪一体化可观测性

6. FAQ

Q1:Apache Doris / SelectDB 是什么? A:Apache Doris 是高性能实时分析数据库(MPP 架构),支持 PB 级数据亚秒级查询。SelectDB 是 Apache Doris 的商业化公司,在 Doris 开源内核基础上提供企业级特性、全托管运维服务及专业技术支持,包括 SelectDB Studio 统一查询入口和 Doris Manager 集群管理工具。

Q2:丰巢日志平台迁移 Doris 的核心收益是什么? A:丰巢日志平台从 ES 迁移到 Apache Doris 后,写入峰值从 100 万条/秒提升至 200 万条/秒(2 倍),查询速度提升 6 倍,存储占用从 40TB/天降至 18TB/天(降 50%),Compaction Score 从 2000+ 降至 280,高峰期写入延迟从 >1 小时降至秒级。

Q3:Apache Doris 能替代 Elasticsearch 做日志检索吗? A:Doris 的倒排索引 + 全文检索能力可覆盖大多数日志查询需求(关键字检索、短语匹配、范围筛选),但全文检索的语义丰富度不如 Elasticsearch(如同义词扩展、模糊匹配等)。对于需要同时满足全文检索和结构化分析的日志场景,Doris 是更合适的选择。丰巢实测典型日志查询场景中 Doris 整体比 ES 快 6 倍。

Q4:丰巢为什么用 Flink 替代 Logstash 写入 Doris? A:丰巢最初尝试使用 Logstash 将日志写入 Doris,但在高并发场景下稳定性不够理想,频繁出现 OOM。随后验证 Flink → Doris 链路,采用批量写入模式(sink.batch.size + sink.batch.interval),相比依赖 Checkpoint 的流式写入,批量写入更便于控制写入频率,在稳定性和吞吐之间更容易取得平衡。

Q5:什么情况下不应该选择 Apache Doris 做日志平台? A:当日志规模很小(<10万/秒)且 ES 运行稳定时,迁移成本不值得。当日志查询以极其复杂的全文检索语义需求为主(如同义词、模糊匹配、评分排序)且不需要结构化分析时,ES 仍是更好的选择。

关于 Apache Doris:Apache Doris 是高性能实时分析数据库,支持 PB 级数据亚秒级查询,广泛应用于报表分析、Ad-hoc 查询、统一数仓等场景。SelectDB 是 Apache Doris 的商业化公司,提供企业级支持和云服务。欢迎加入 Doris 社区 交流更多实践。

74HC165级联踩坑实录:STM32读取32路开关状态,时序调试与常见问题排查 本文详细介绍了74HC165级联在STM32读取32路开关状态时的时序调试与常见问题排查。从硬件设计的PCB布局优化、电源噪声控制,到软件时序的精确调校和数据采集策略,提供了完整的解决方案。通过逻辑分析仪和示波器的高效使用,解决了信号延迟和干扰问题,最终实现了稳定可靠的32路信号读取。 阅读详情

相关推荐

kubeadm init 运行时kebelet启动失败问题

解决k8s kubeadm init时遇到的kubelet问题

ZDPZN的博客 6074

日志平台 ELK 替代场景:Apache Doris / SelectDB 的技术能力与选型对比

Apache Doris/SelectDB在日志平台ELK替代场景中有效解决ES的写入瓶颈、存储膨胀与查询受限问题,提供200万/秒高吞吐写入、ZSTD压缩存储降低50%、倒排索引+全文检索+结构化分析一体化能力,并通过WorkloadGroup资源隔离保障稳定性。丰巢案例显示,迁移后写入提升2倍、查询快6倍、存储减半。适用条件为日志规模>50万/秒且需多维分析的场景,但纯复杂全文检索或轻量监控需求建议评估ES/Loki。

SelectDB 444

零成本实现飞牛 OS 内网穿透:CloudFlare 隧道搭建全攻略

一、引言:突破内网限制的最优解当你的内网环境中部署了飞牛 OS 系统(无论是老旧电脑还是 NAS 设备),想要实现公网访问时,传统方案往往面临两大痛点:公网 IP 申请困难且成本高DDNS 动态解析配置复杂专业内网穿透工具存在付费门槛今天为大家带来零成本解决方案:通过免费域名搭配 CloudFlare 隧道技术,无需公网 IP 即可轻松实现飞牛 OS 服务的公网访问。全程操作可视化,新手也能快速上手!二、前期准备:必备工具清单(1)域名准备。

Honmaple的博客 7490

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 388

Vivado2023.2与Vitis协同开发:从Hello World到BOOT.BIN的完整流程解析

本文详细解析了使用Vivado 2023.2与Vitis协同开发ZYNQ/MPSoC平台的完整流程。从环境安装、硬件设计、软件编写、在线调试到生成独立的BOOT.BIN启动文件,手把手指导开发者完成从Hello World到系统固化的全步骤,并提供了常见问题的避坑指南,帮助初学者快速掌握软硬件协同开发的核心技能。

weixin_29197051的博客 176

2024年最全scrapy+scrapyd+gerapy 爬虫调度框架,字节跳动面试时间

scrapyd是一个用于部署和运行scrapy爬虫的程序,它允许你通过JSON API来部署爬虫项目和控制爬虫运行,scrapyd是一个守护进程,监听爬虫的运行和请求,然后启动进程来执行它们方便地控制爬虫运行直观地查看爬虫状态实时地查看爬取结果简单地实现项目部署统一地实现主机管理轻松地编写爬虫代码。

2401_84140653的博客 1200

从一段视频到可漫游的 4D 有声场景:思路拆解与最小复现手记

只需一段手机视频,你就能生成可"走进去"的 4D 有声场景:转头时狗叫声方向随之变化,走近时声音更清晰。本文拆解 Video-to-4DAVScene 的核心思路,手把手带你用几十行 Python 搭出最小管线,把视频中的运动物体变成带空间位置的声源,并附上三个真实踩坑的排障经验,代码可直接跑。🎧

helloagent的博客 218

【记录】游戏体验报告怎么写(自我成长篇)

2019年3月更新: 这个倒是不用推翻,我个人虽然写的东西还是有一些偏差的,但是“表哥”说的倒是没毛病的,这篇主要是为了记录用,具体的干货也有,都在图片里,请自行提取 =====18年初原答案 作为一个游戏策划新人,游戏分析可能抓不到点子上,试着总结记录一下游戏体验报告分析的成长(因为水平不同,视野可能也不一样,也许之后几年回头看这些东西都是小儿科或者是错误的,所以只写出当下的想...

eat_human的博客 6万+

Python+Agent入门笔记(二):列表推导式、模块和异常,这些写 Agent 前得会

接上一篇《Python+Agent入门笔记(一)》。基础语法跑通之后,这篇聊几块日常写脚本绕不开的东西。还是按 JS/Go 开发者的视角写,尽量记录我实际卡过的地方。

qq_41241612的博客 430

Simulink仿真模块 -Scope

如果您将 Scope 模块放在具有锁定链接的库或者锁定的库中,当尝试打开示波器窗口时,Simulink 会显示错误。要显示某个库模块中的内部数据,请为库模块添加一个输出端口,然后将此端口连接到您模型中的 Scope 模块。当您在示波器内可视化多个基于帧的信号时,部分帧大小为 1 的信号采样可能不会显示。当在示波器内可视化多个基于帧的信号时,部分帧大小为 1 的信号采样可能不会显示。如果在仿真开始时波形视图关闭,则当在仿真后打开波形视图时,波形视图将显示附加的输入信号的仿真结果。

jk_101的博客 3788

【2026年华为秋招(AI)-2月4日-第一题(100分)- 选择题】(题目+思路+Java&C++&Python解析+在线测试)

本文摘要:本文包含20道选择题,涵盖机器学习、线性代数、Transformer架构、概率统计等多个领域。题目涉及正交矩阵性质、Transformer注意力机制、聚类距离度量、ReAct框架、Softmax函数、混淆矩阵计算、Flash-Attention优化、位置编码、期望计算、归一化方法、矩阵迭代法、矩阵秩、大模型架构、神经网络推理、泊松流性质、SVM核函数以及聚类算法等知识点。每道题均提供解析,帮助理解核心概念和解题思路。

m0_73659489的博客 125

详解Python条件语句

在 Python 中,if...else 是一种条件语句,可以根据给定的条件执行不同的操作。这个语句通常用于控制程序的流程。

2601_96798737的博客 205

Matlab图像地图上的最短路径计算算法——Dijkstra算法

接下来,我们进入主循环,不断从优先队列中取出距离最小的节点,并更新其邻居节点的距离和路径。Dijkstra算法是一种常用的最短路径算法,本文将介绍如何使用Matlab实现Dijkstra算法来计算图像地图上的最短路径。为了使用上述算法,我们需要将图像地图转换为一个矩阵,并将可通行的区域设置为白色(或其他亮度值),障碍物区域设置为黑色(或其他暗度值)。然后,我们可以指定起始节点和终止节点,并调用。通过上述的代码实现,我们可以在Matlab中使用Dijkstra算法来计算图像地图上的最短路径。

2301_78484069的博客 2044

微调数据集构建:清洗、标注、格式转换完整流程

摘要解决微调数据直接抓取导致的噪声污染、模式崩溃与Token错位问题。适用于需为大模型SFT阶段构建高质量训练集的数据与算法工程师。读完可获得包含启发式清洗、MinHash去重及ChatML格式对齐的完整可运行数据流水线。关键词数据清洗、MinHash去重、数据标注、ChatML、SFT数据集、数据配比背景与问题大模型微调效果的上限由数据质量决定,直接使用未经处理的原始语料极易引发模型复读、幻觉与指令遵循能力退化。

2402_85729970的博客 485

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Python3 协程:异步编程的核心机制与实战

协程是解决I/O密集型任务等待瓶颈的高效机制,相比线程更轻量、无锁开销。从yield到async/await的演进,使异步编程语义清晰、易于理解。通过async/await可实现并发执行多个任务(如gather、create_task),显著提升网络请求、爬虫等场景性能。关键在于使用异步库(如aiohttp)替代同步库,避免阻塞事件循环。合理控制超时与并发数,才能发挥协程最大优势。

Lxn2zh的博客 159

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

python如何控制浏览器

Python 可以通过 Selenium、Playwright 等工具实现浏览器自动化,从打开网页到执行复杂交互操作均可脚本化完成。Selenium生态成熟

2601_96797912的博客 75

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

二进制木马免杀-Python 分离免杀与 Web 挂马

二进制木马免杀-Python 分离免杀与 Web 挂马

2503_94637398的博客 267

torch.compile 差异仅 1e-6,边界样本预测为何翻转

torch.compile 加速后输出与 eager 不一致,部分预测翻转。逐层对比与 graph break 分析定位到动态分支翻转根因。容差回归仅适用于无分支翻转场景,零容忍场景应禁用编译。

昨日种种,皆成今我。今日种种,皆成新我。 158

Python 100讲课程导航:第08篇《Python input 与类型转换:构建可靠的交互程序》

本文详解Python中input()的返回类型为字符串,强调必须通过int()、float()等函数进行类型转换。重点讲解了输入验证的重要性,结合try-except处理ValueError等异常,实现可靠的交互程序。通过购物预算计算器实战,演示如何防范非法输入、处理边界值,并推荐使用Decimal避免浮点精度问题,提升程序健壮性。

铭渊老黄 132

【Python】国家中小学智慧教育平台电子教材批量下载与 PDF 合成实战

成果:两本语文电子课本(一年级上册 118 页 / 23MB、三年级上册 130 页 / 30.3MB),合计 248 页、约 54MB,单本下载加合成 40~60 秒,PDF 页数校验全部通过。经验教训SPA 站点的数据接口优先从 bundle 里挖,比抓页面稳得多;资源链接要按 private/public 分组看待,只取平台公开部分;页数、目录名这类“可推断”的信息,永远用实际响应验证一次;受限环境里“能不能跑浏览器”要在方案定稿前确认。后续计划:这版 PDF 是图片版,没有文字层;

木头大左的博客 122

魔塔社区微调训练Qwen2-1.5B-Instruct模型并烧录到‌RK3568开发板教程

本文基于Ubuntu 22.04 + CUDA 13.0.3环境,使用LLaMA-Factory框架对Qwen2-1.5B-Instruct模型进行LoRA微调,训练儿童故事生成专用模型。通过配置qwen模板、制作alpaca格式数据集、执行sft训练并合并LoRA权重,最终将模型转换为GGUF格式,并量化为Q4_K_M以适配RK3568嵌入式平台。全程支持国产镜像加速下载与显存优化,实现高效轻量化部署。

浅清秋慕夏的博客 184

【回眸】DeepSeek V4.1 Flash 快速上手与实战

本文介绍如何高效本地部署开源大模型,通过现代化工具链实现分钟级环境搭建。聚焦显存优化、一键安装、代码调用与多轮对话实现,解决“显存不足”“连接超时”等痛点,提供参数调优与结构化输出技巧,助力开发者在离线场景下快速构建稳定、高效的本地推理系统。

啤酒鸭的物联网开发记录博客 220

智叟云集-手机证据抓取系统的工程结构与应用入口

本文系统阐述手机证据抓取系统的工程结构与应用入口,涵盖四大层面:工程目录划分(Android、Python服务、Web页面、测试与构建工具);Android组件通过Manifest声明可启动页面,主界面由MainActivity管理;Python服务通过run.py解析参数并启动FastAPI应用,支持远程访问;浏览器页面采用HTML/CSS/JS分离架构,静态资源通过路径关联,实现动态交互。各模块分工明确,协同构建可运行的采集系统。

2301_77178996的博客 229

Java Arrays.asList 常见坑详解|UnsupportedOperationException、数组联动、基本类型 bug

解析 Arrays.asList 常见开发陷阱,演示 UnsupportedOperationException、底层数组引用共享、基本类型数组问题,区分 Arrays 内部 ArrayList 与 java.util.ArrayList,给出数组转 List 的各种场景正确代码。

weixin_42617033的博客 433

利用python中matplotlib.pyplot库绘制图

plt.plot(x,y) # x,y是每个点的坐标,plot()把每个点按顺序画折线。plt.subplots(2,2)表示绘制2*2的子图布局,axs[0,0]表示在第0行第0列绘制子图...coordinates_i[:,0]表示获取每一行(每一个spot)的第0列(x坐标)coordinates_i[:,1]表示获取每一行(每一个spot)的第0列(y坐标)plot.subplot(2,2,1) 表示子图布局是2*2的,开始绘制第一个。也可以导入数据绘制。可以设置color属性,设置颜色。

qq_46147236的博客 100

【随笔】KV缓存量化:省下的显存,要付出多少数值误差

用可运行量化器解释位宽、比例信息、分组和离群值的关系,核算KV缓存实际载荷,并给出Transformers配置与容量、延迟、质量验收方法。

code2cat的博客 452
上一篇: 易车湖仓一体引擎统一:Apache Doris / SelectDB 的技术能力与实践
下一篇: PostgreSQL 实时同步至 Apache Doris / SelectDB:内置 CDC 能力、选型对比与实践
SelectDB技术团队
博客等级 码龄4年 2119粉丝 484原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SelectDB技术团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值