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

拼团系统设计-人群标签的设计与思考

目录

轻量化人群标签数据采集与Redis BitMap应用

为什么需要人群标签?

设计思路:轻量化人群标签系统

1. 核心目标

2. 技术选型:Redis BitMap

3. 数据链路设计

技术实现:代码级拆解

1. 人群标签任务调度

2. 用户ID与BitMap索引映射

3. BitMap的读写验证

效果与优势

1. 存储成本对比

2. 查询场景示例

3. 运营价值

总结与扩展

1. 轻量化设计的意义

2. 未来扩展方向


欢迎关注我的博客!26届java选手,一起加油💘💦👨‍🎓😄😂

轻量化人群标签数据采集与Redis BitMap应用

最近在学习一个拼团项目中涉及到的人群模块的设计,写下一些实现与思考。

为什么需要人群标签?

在电商平台中,精准的用户运营是提升转化率的核心。比如,拼多多需要通过用户行为(如拼团参与次数、消费金额)筛选目标人群,定向发放优惠券或推送活动通知。然而,面对海量用户数据(如百万级用户ID),传统数据库查询效率低、存储成本高,因此需要一种轻量化、高性能的解决方案。

设计思路:轻量化人群标签系统

1. 核心目标
  • 低成本存储:用最小内存存储百万级用户ID的标签数据。
  • 快速查询:支持实时判断用户是否属于某个人群标签。
  • 可扩展性:支持多标签组合运算(如“同时满足标签A和标签B的用户”)。
2. 技术选型:Redis BitMap
  • BitMap(位图):每个二进制位(bit)表示一个用户是否拥有标签,内存占用极低。
    • 例如:100万用户仅需约122KB内存(100万/8/1024)。
  • 位运算:通过AND/OR操作快速计算交集、并集,适合多标签组合筛选。
  • 原子操作:Redis的SETBITGETBIT命令保证高并发下的数据一致性。
3. 数据链路设计

业务数据(拼团记录) → 数据库存储 → 标签计算 → 写入Redis BitMap → 运营投放

在实际业务中会有专门的记录用户标签的数据。

技术实现:代码级拆解

1. 人群标签任务调度

通过TagService.execTagBatchJob执行标签计算任务:

public void execTagBatchJob(String tagId, String batchId) {
// 1. 查询批次任务配置(如标签类型、统计时间范围) 
CrowdTagsJobEntity jobEntity = repository.queryCrowdTagsJobEntity(tagId, batchId);
// 2. 模拟数仓数据采集(实际场景从数仓读取) 
List<String> userIdList = getMockUserIds(); 
// 示例用户列表 
// 3. 写入数据库
Redis BitMap for (String userId : userIdList) {repository.addCrowdTagsUserId(tagId, userId); 
}
// 4. 更新标签统计量
repository.updateCrowdTagsStatistics(tagId, userIdList.size()); }
  • 批次ID(batchId):用于区分同一标签的多次计算任务(如修复数据后重跑)。
2. 用户ID与BitMap索引映射

TagRepository中,用户ID通过哈希函数映射到BitMap的索引位置:

public void addCrowdTagsUserId(String tagId, String userId) { 
// 1. 写入数据库(持久化存储)crowdTagsDetailDao.addCrowdTagsUserId(tagId, userId); 
// 2. 写入RedisBitMap RBitSet bitSet = redisService.getBitSet(tagId); 
int index = redisService.getIndexFromUserId(userId); 
// 用户ID → 哈希索引 
bitSet.set(index, true); 
}
  • 索引映射
    • 用户ID(字符串)通过哈希函数转换为整数(如MurmurHash)。
    • 对哈希值取模(如userId.hashCode() % 1_000_000),确保索引在BitMap范围内。
  default int getIndexFromUserId(String userId) {try {// 步骤1:获取 MD5 哈希算法实例MessageDigest md = MessageDigest.getInstance("MD5");// 步骤2:计算用户ID的 MD5 哈希值byte[] hashBytes = md.digest(userId.getBytes(StandardCharsets.UTF_8));// 步骤3:将哈希值转换为正整数BigInteger bigInt = new BigInteger(1, hashBytes);// 步骤4:对最大值取模,确保索引在合理范围内return bigInt.mod(BigInteger.valueOf(Integer.MAX_VALUE)).intValue();} catch (NoSuchAlgorithmException e) {// 异常处理:MD5算法不存在时抛出运行时异常throw new RuntimeException("MD5 algorithm not found", e);}
}
3. BitMap的读写验证

通过测试用例验证数据是否正确写入:

@Test public void test_get_tag_bitmap() {
RBitSet bitSet = redisService.getBitSet("RQ_KJHKL98UU78H66554GFDV"); 
log.info("用户 wuwuw是否存在?{}", bitSet.get(redisService.getIndexFromUserId("xiaofuge"))); // 预期 true 
log.info("用户 gudebai 是否存在{}",bitSet.get(redisService.getIndexFromUserId("gudebai"))); // 预期 false }

    效果与优势

    1. 存储成本对比
    存储方式100万用户内存占用查询性能
    MySQL 索引表约50MB毫秒级(带索引)
    Redis Set约16MB毫秒级
    Redis BitMap122KB微秒级
    2. 查询场景示例
    • 定向发券:判断用户是否属于“高活跃拼团用户”标签(GETBIT操作)。
    • 组合筛选:找出“近30天消费满100元且参与3次拼团”的用户(BITOP AND运算)。
    3. 运营价值
    • 精准投放:运营人员可通过标签快速圈定目标用户,提升活动转化率。
    • 实时性:BitMap支持实时更新和查询,适合动态调整投放策略。

    总结与扩展

    1. 轻量化设计的意义
    • 低成本验证:在小规模数据下验证技术方案,避免过早依赖数仓。
    • 快速迭代:通过拼团数据快速生成标签,缩短需求上线周期。
    2. 未来扩展方向
    • 复杂规则支持:引入规则引擎解析tagRule(如JSON配置),动态生成标签。
    • 数据源扩展:集成订单、浏览行为等多维度数据,丰富标签类型。
    • 自动化调度:结合Quartz定时任务,定期更新标签数据。

    通过本文,可以为你快速掌握如何在小规模数据下构建高效的人群标签系统提供一些思路。

    相关文章:

    拼团系统设计-人群标签的设计与思考

    目录 轻量化人群标签数据采集与Redis BitMap应用 为什么需要人群标签&#xff1f; 设计思路&#xff1a;轻量化人群标签系统 1. 核心目标 2. 技术选型&#xff1a;Redis BitMap 3. 数据链路设计 技术实现&#xff1a;代码级拆解 1. 人群标签任务调度 2. 用户ID与BitMap索引映射…...

    【Python] pip制作离线包

    制作离线安装包是一种非常实用的方法&#xff0c;尤其是在网络环境受限或需要在多台机器上部署相同环境时。以下是详细的步骤&#xff0c;帮助您创建一个包含所有依赖项的离线安装包&#xff0c;并在后续环境中复用。 步骤 1&#xff1a;准备工具和环境 确保您有一台可以访问互…...

    Java学习手册:Java异常处理机制

    在Java编程中&#xff0c;异常处理是确保程序健壮性和稳定性的关键机制。异常是指程序运行过程中出现的错误或异常情况&#xff0c;如除以零、文件找不到或网络连接失败等。Java提供了强大的异常处理机制&#xff0c;帮助开发者捕获和处理这些异常情况&#xff0c;从而避免程序…...

    [特殊字符] 第十二讲 | 地统计学基础与克里金插值法(Kriging)建模实践

    &#x1f4d8; 专栏&#xff1a;科研统计方法实战分享 | 地学/农学人的数据分析工具箱 ✍️ 作者&#xff1a;平常心0715 &#x1f5dd;️ 本讲关键词&#xff1a;Kriging、地统计学、变异函数、空间插值、空间预测、R语言 一、什么是地统计学&#xff1f; 地统计学&#xff0…...

    Introducing Machine Learning with SAP Leonardo

    Introducing Machine Learning with SAP Leonardo...

    软考 系统架构设计师系列知识点之杂项集萃(49)

    接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;48&#xff09; 第76题 某文件管理系统在磁盘上建立了位视图&#xff08;bitmap&#xff09;&#xff0c;记录磁盘的使用情况。若磁盘上物理块的编号依次为&#xff1a;0、1、2、……&#xff1b…...

    list容器

    1. list 的介绍 list 是序列容器&#xff0c;允许在序列中的任何位置进行O(1)时间复杂度的插入和删除操作以及双向迭代。 list 容器实现为带头结点双向链表&#xff0c;双向链表可以将它们包含的每个元素存储在不同且不相关的存储位置。 2. list 的使用 2.1 构造函数 1.…...

    Linux xorg-server 解析(一)- 编译安装Debug版本的xorg-server

    一:下载代码 1. 配置源,以Ubuntu24.04 为例( /etc/apt/sources.list.d/ubuntu.sources): 2. apt source xserver-xorg-core 二:编译代码 1. sudo apt build-dep ./ 2. DEB_BUILD_OPTIONS="nostrip" DEB_CFLAGS_SET="-g -O0" dpkg-buildpac…...

    VTK使用Render()渲染窗口的相关问题

    转自个人博客&#xff1a;VTK使用Render()渲染窗口的相关问题 1. VTK更新数据但窗口不更新 问题&#xff1a;在对窗口内的数据进行更新后&#xff0c;VTK窗口不会立即更新&#xff0c;需要鼠标等交互后才会更新。 解决办法&#xff1a;对数据更新后&#xff0c;对VTK窗口也要…...

    基于php的成绩分析和预警与预测网站(源码+lw+部署文档+讲解),源码可白嫖!

    摘要 人类现已迈入二十一世纪&#xff0c;科学技术日新月异&#xff0c;经济、资讯等各方面都有了非常大的进步&#xff0c;尤其是资讯与网络技术的飞速发展&#xff0c;对政治、经济、军事、文化、教育等各方面都有了极大的影响。 利用电脑网络的这些便利&#xff0c;发展一套…...

    文档检索技术详解 (Document Retriever)

    一、文档检索的定义与核心概念 文档检索&#xff08;Document Retriever&#xff09;是一种信息检索技术&#xff0c;旨在从大量未结构化或半结构化文档中快速找到与特定查询相关的文档或信息。文档检索通常以在线&#xff08;online&#xff09;方式运行&#xff0c;能够实时…...

    大模型SFT用chat版还是base版 SFT后灾难性遗忘怎么办

    大模型SFT用chat版还是base版 进行 SFT 时&#xff0c;基座模型选用 Chat 还是 Base 模型&#xff1f; 选 Base 还是 Chat 模型&#xff0c;首先先熟悉 Base 和 Chat 是两种不同的大模型&#xff0c;它们在训练数据、应用场景和模型特性上有所区别。 在训练数据方面&#xf…...

    【生活相关-日语-日本-东京-搬家后-瓦斯申请(2)-办理手续】

    【生活相关-日语-日本-东京-搬家后-瓦斯申请&#xff08;2&#xff09;-办理手续】 1、前言2、情况说明&#xff08;1&#xff09;他人代办&#xff08;2&#xff09;打电话&#xff08;3&#xff09;网络申请&#xff08;4&#xff09;你将会面临什么&#xff0c;主要步骤&…...

    matplotlib数据展示

    目录 一、绘制直方图 1、简单直方图 2、绘制横向直方图 3、绘制堆叠直方图 4、对比直方图 二、折线图与散点图 三、绘制饼图 四、雷达图 1、简单雷达图 2、多层雷达图 五、总和 在前面的学习中&#xff0c;我们能够使用一些库进行数据的整合&#xff0c;收集&#x…...

    三维激光测量助力企业检测效率提升3倍

    智能制造与数字化浪潮席卷下&#xff0c;三维扫描技术已成为工业检测领域不可或缺的工具。面对传统检测手段的精度瓶颈与效率局限&#xff0c;三维扫描仪&#xff0c;以毫米级精度、非接触式测量与超高速扫描三大核心优势&#xff0c;为汽车制造、航空航天、消费电子等行业的品…...

    基于RISC-V内核的嵌入式系统在机器人关节控制中的应用研究

    摘要 随着机器人技术的飞速发展&#xff0c;关节控制作为机器人系统中的关键环节&#xff0c;对机器人的性能和稳定性起着至关重要的作用。传统的关节控制多采用基于ARM或DSP的嵌入式系统&#xff0c;但RISC-V架构的兴起为机器人关节控制提供了新的选择。本文结合多个基于RISC…...

    斯库拉集团介绍

    斯库拉集团有限公司坐落于世界自由贸易圣地,国际金融服务中心英属维京群岛BVI. 旗下有香港斯库拉集团(香港主板 上市公司),斯库拉环球国际控股集团 (香港主板上市企业),斯库拉国际贸易 有限公司(斯库拉集团有限公司),新加坡斯库拉集团有限公司,德国斯库拉集团有限公司,新西…...

    运用instanceof判断Animal a是否为Dog类和是否为cat类

    //Animal类&#xff08;狗和猫的父类&#xff09; public class Animal {private String color;private int age;public Animal(String color, int age) {this.color color;this.age age;}public Animal() {}public String getColor() {return color;}public void setColor…...

    蓝桥杯嵌入式考前模块总结

    一.RTC 使用RTC直接再cubeMX中配置启动时钟和日历 如第六届省赛 想要让RTC的秒每隔一秒递增1需要在时钟树界面观察RTC的主频 由于RTC时钟主频为32KHZ将异步预分频计数器的值设为31&#xff0c;将同步预分频计数器的值设为999这样就可以将RTC的时钟信号分频为1HZ达到1秒自增的…...

    《汽车电器与电子技术》实验报告

    SRS系统结构原理与故障检测诊断 车辆上为什么要配安全气囊&#xff1f;——解析汽车被动安全的关键防线 一、安全气囊的核心作用&#xff1a;应对高速碰撞的“救命缓冲垫” 车辆在高速碰撞时&#xff08;如正面碰撞、侧面碰撞&#xff09;&#xff0c;人体会因惯性以极高速度…...

    小刚说C语言刷题——第22讲 二维数组

    昨天我们讲了一维数组&#xff0c;今天我们来讲二维数组。 1.定义 二维数组是指在数组名后跟两个方括号的数组。 2.语法格式 数据类型 数组名[下标][下标] 例如&#xff1a;int a[5][9];//表示5行9列的数组 3.访问二维数组元素 格式&#xff1a;数组名[行坐标][列坐标]…...

    04--网络属性设置与多路复用

    一、TCP可靠性分析 二、 scoket 属性设置 1、socket 属性设置表 NAMEgetsockopt, setsockopt - get and set options on sockets获取 和 设置 套接字属性 SYNOPSIS#include <sys/types.h> /* See NOTES */#include <sys/socket.h>int getsockopt(int so…...

    AI大模型从0到1记录学习 day17

    第 2 章 数据结构与算法基础 2.1 数据结构基础 2.1.1 什么是数据结构 数据结构是为了高效访问数据而设计出的一种数据的组织和存储方式。更具体的说&#xff0c;一个数据结构包含一个数据元素的集合、数据元素之间的关系以及访问和操作数据的方法。 像前面我们接触到的list、se…...

    scanf函数功能与使用详解

    【DeepSeek提问】 解释一下下面这段话&#xff1a; 函数scanf()是从标准输入流 stdin (标准输入设备&#xff0c; 一般指键盘)中读内容的通用子程序&#xff0c;可以按说明的格式读入多个字符&#xff0c;并保存在对应地址的变量中。 scanf函数返回成功读入的数据项数&#xf…...

    使用Python从零开始构建端到端文本到图像 Transformer大模型

    简介&#xff1a;通过特征向量从文本生成图像 回顾&#xff1a;多模态 Transformer 在使用Python从零实现一个端到端多模态 Transformer大模型中&#xff0c;我们调整了字符级 Transformer 以处理图像&#xff08;通过 ResNet 特征&#xff09;和文本提示&#xff0c;用于视觉…...

    NDT和ICP构建点云地图 |【点云建图、Ubuntu、ROS】

    ### 本博客记录学习NDT&#xff0c;ICP构建点云地图的实验过程&#xff0c;参考的以下两篇博客&#xff1a; 无人驾驶汽车系统入门&#xff08;十三&#xff09;——正态分布变换&#xff08;NDT&#xff09;配准与无人车定位_settransformationepsilon-CSDN博客 PCL中点云配…...

    第 1 篇✅ 用 AI 编程之前,你得先搞清楚你和 AI 是啥关系

    程序员不是被替代的,是要学会主导 AI 的人 🧠 那些把 AI 当兄弟的程序员,后来都踩了坑 最近的一次线下开发者聚会,我们聊到“AI 编程”,现场笑声不断,也点醒了不少人。 有个朋友说: “我让 AI 写一个 Web 服务,它写得飞快,我一激动就上线了,结果上线后一堆坑,日志…...

    Android Jetpack Compose 高级开发核心技术

    Android Compose 高级技术总结 1. 性能优化 1.1 状态管理优化 状态提升原则&#xff1a;将状态提升到共享的最近共同父组件derivedStateOf&#xff1a;当需要基于多个状态计算派生状态时使用 val scrollState rememberScrollState() val showButton by remember {derivedS…...

    Go小技巧易错点100例(二十五)

    本期分享&#xff1a; 1. 使用atomic包实现无锁并发控制 2. Gin框架的中间件机制 3. 搞懂nil切片和空切片 使用atomic包实现无锁并发控制 sync/atomic包提供了原子操作&#xff0c;用于在多goroutine环境下安全地操作共享变量&#xff0c;避免使用锁带来的性能开销。 代码…...

    如何用海伦公式快速判断点在直线的哪一侧

    一、海伦公式的定义与推导 1. 海伦公式的定义 海伦公式&#xff08;Heron’s Formula&#xff09;是用于计算三角形面积的一种方法&#xff0c;适用于已知三角形三边长度的情况。公式如下&#xff1a; S s ( s − a ) ( s − b ) ( s − c ) S \sqrt{s(s - a)(s - b)(s - c…...

    【异常处理】Clion IDE中cmake时头文件找不到 头文件飘红

    如图所示是我的clion项目目录 我自定义的data_structure.h和func_declaration.h在unit_test.c中无法检索到 cmakelists.txt配置文件如下所示&#xff1a; cmake_minimum_required(VERSION 3.30) project(noc C) #设置头文件的目录 include_directories(${CMAKE_SOURCE_DIR}/…...

    自动驾驶技术关键技术梳理

    一、硬件 1、 传感器系统设计主要注意以下几个问题&#xff1a; 1.时间同步 一般包括多传感器之间时钟同源、帧同步触发的问题。首先要解决时钟同源问题&#xff0c;然后为了帧同步触发&#xff0c;可以让所有传感器整秒触发。常用GPS&#xff08;最多分2路&#xff09;给激光雷…...

    MySQL索引介绍

    索引的定义 扇区&#xff1a;磁盘存储的最小单位&#xff0c;扇区一般大小为512Byte。磁盘块&#xff1a;文件系统与磁盘交互的的最小单位&#xff08;计算机系统读写磁盘的最小单位&#xff09;&#xff0c;一个磁盘块由连续几个&#xff08;2^n&#xff09;扇区组成&#xf…...

    2025认证杯一阶段各题需要使用的模型或算法(冲刺阶段)

    A题&#xff08;小行星轨迹预测&#xff09; 问题一&#xff1a;三角测量法、最小二乘法、空间几何算法、最优化方法 问题二&#xff1a;Gauss/Laplace轨道确定方法、差分校正法、数值积分算法&#xff08;如Runge-Kutta法&#xff09;、卡尔曼滤波器 B题&#xff08;谣言在…...

    每天学一个 Linux 命令(13):touch

    Linux 文件管理命令:touch touch 是 Linux 中一个简单但高频使用的命令,主要用于创建空文件或修改文件的时间戳(访问时间、修改时间)。它是文件管理和脚本操作的实用工具。 1. 命令作用 创建空文件:快速生成一个或多个空白文件。更新时间戳:修改文件的访问时间(Access …...

    Flutter常用组件实践

    Flutter常用组件实践 1、MaterialApp 和 Center(组件居中)2、Scaffold3、Container(容器)4、BoxDecoration(装饰器)5、Column(纵向布局)及Icon(图标)6、Column/Row(横向/横向布局)+CloseButton/BackButton/IconButton(简单按钮)7、Expanded和Flexible8、Stack和Po…...

    Python 实现最小插件框架

    文章目录 Python 实现最小插件框架1. 基础实现项目结构plugin_base.py - 插件基类plugins/hello.py - 示例插件1plugins/goodbye.py - 示例插件2main.py - 主程序 2. 更高级的特性扩展2.1 插件配置支持2.2 插件依赖管理2.3 插件热加载 3. 使用 setuptools 的入口点发现插件3.1 …...

    AUTOSAR_SWS_MemoryDriver图解

    AUTOSAR 存储驱动程序&#xff08;Memory Driver&#xff09;详解 AUTOSAR存储驱动规范 - 技术解析与架构详解 目录 1. 概述2. Memory Driver架构设计 2.1 整体架构 3. Memory Driver核心组件4. 作业管理5. Memory Driver错误处理6. 时序流程7. 配置与设置8. 总结 1. 概述 A…...

    AI结合VBA提升EXCEL办公效率尝试

    文章目录 前言一、开始VBA编程二、主要代码三、添加到所有EXCEL四、运行效果五、AI扩展 前言 EXCEL右击菜单添加一个选项&#xff0c;点击执行自己逻辑的功能。 然后让DeepSeek帮我把我的想法生成VBA代码 一、开始VBA编程 我的excel主菜单没有’开发工具‘ 选项&#xff0c;…...

    Python中NumPy的索引和切片

    在数据科学和科学计算领域&#xff0c;NumPy是一个功能强大且广泛使用的Python库。它提供了高效的多维数组对象以及丰富的数组操作函数&#xff0c;其中索引和切片是NumPy的核心功能之一。通过灵活运用索引和切片操作&#xff0c;我们可以轻松访问和操作数组中的元素&#xff0…...

    普通通话CSFB方式(2g/3g)

    一、CSFB的触发条件 当模块&#xff08;或手机&#xff09;驻留在 4G LTE网络 时&#xff0c;若发生以下事件&#xff0c;会触发CSFB流程&#xff1a; 主叫场景&#xff1a;用户主动拨打电话。被叫场景&#xff1a;接收到来电&#xff08;MT Call&#xff09;。紧急呼叫&…...

    daily routines 日常生活

    总结 🛏 起床相关(Waking Up) 动作常用表达示例句子醒来wake upI usually wake up around 6:30.起床(离床)get up / get out of bedI got out of bed at 6:45.赖床stay in bed / lay thereI stayed in bed for another 10 minutes.关闭闹钟turn off the alarm / hit snoo…...

    系分论文《论面向服务开发方法在设备租赁行业的应用》

    系统分析师论文系列 【摘要】 2022年5月&#xff0c;我司承接某工程机械租赁企业"智能租赁运营管理平台"建设项目&#xff0c;我作为系统分析师主导系统架构设计。该项目需整合8大类2000余台设备资产&#xff0c;覆盖全国15个区域运营中心与300家代理商&#xff0c;实…...

    深度解析python生成器和关键字yield

    一、生成器概述 生成器&#xff08;Generator&#xff09;是Python中用于创建迭代器的工具&#xff0c;通过yield关键字实现。与普通函数不同&#xff0c;生成器函数返回的是迭代器对象&#xff0c;具有以下核心特性&#xff1a; 内存效率&#xff1a;只在需要时生成值&#x…...

    蓝桥杯大模板

    init.c void System_Init() {P0 0x00; //关闭蜂鸣器和继电器P2 P2 & 0x1f | 0xa0;P2 & 0x1f;P0 0x00; //关闭LEDP2 P2 & 0x1f | 0x80;P2 & 0x1f; } led.c #include <LED.H>idata unsigned char temp_1 0x00; idata unsigned char temp_old…...

    Python装饰器的基本使用详解

    各类资料学习下载合集 ​​https://pan.quark.cn/s/8c91ccb5a474​​ 装饰器是Python中的一个强大且灵活的特性&#xff0c;它允许我们在不修改函数代码的情况下为其添加额外功能。装饰器广泛应用于日志记录、性能测试、权限验证等场景。本文将详细介绍装饰器的基本使用&…...

    5Why分析法

    1. 基本概念 5Why分析法是一种通过连续追问"为什么"来探究问题根本原因的思考工具&#xff0c;由丰田生产方式创始人丰田喜一郎提出。其核心思想是&#xff1a;通过至少5次连续的"为什么"追问&#xff0c;穿透表面现象&#xff0c;直达问题本质。 2. 实施…...

    AI Agent入门指南

    图片来源网络 ‌一、开箱暴击&#xff1a;你以为的"智障音箱"&#xff0c;其实是赛博世界的007‌ ‌1.1 从人工智障到智能叛逃&#xff1a;Agent进化史堪比《甄嬛传》‌ ‌青铜时代&#xff08;2006-2015&#xff09;‌ “小娜同学&#xff0c;关灯” “抱歉&…...

    华为机试—最大最小路

    题目 对于给定的无向无根树&#xff0c;第 i 个节点上有一个权值 wi​ 。我们定义一条简单路径是好的&#xff0c;当且仅当&#xff1a;路径上的点的点权最小值小于等于 a &#xff0c;路径上的点的点权最大值大于等于 b 。 保证给定的 a<b&#xff0c;你需要计算有多少条简…...

    java之多线程

    目录 创建多线程的三种创建方式 常用的成员方法 守护线程 多线程的声明周期 ​编辑 同步代码块​编辑 同步方法 死锁 等待唤醒机制&#xff08;线程协调&#xff09; 线程池 创建多线程的三种创建方式 继承 Thread 类 通过继承 Thread 类并重写 run() 方法创建线程。 …...