首页
学习
活动
专区
圈层
工具
发布

局域网上网行为管理的 Node.js 红黑树过滤算法

企业局域网络环境中,局域网上网行为管理需实时过滤违规访问请求、统计网络资源占用情况,面对日均数十万条访问日志的场景,传统线性存储结构难以满足高效查询与动态更新需求。红黑树作为一种自平衡二叉搜索树,具备 O (log n) 的插入、删除与查询时间复杂度,能在数据动态变化时维持结构平衡,适配局域网上网行为管理中违规网址过滤、访问频次统计等核心需求。本文从红黑树适配性分析、核心原理、Node.js 实现及性能验证四方面,构建局域网上网行为管理的高效数据处理方案。

一、红黑树在局域网上网行为管理中的适配性

局域网上网行为管理的核心诉求是 “实时过滤 + 动态统计”,红黑树的特性与该诉求高度契合,主要体现在三方面:

其一,局域网上网行为管理需实时过滤违规网址,红黑树可将合规网址作为关键字构建索引,当终端发起访问请求时,通过红黑树查询判断网址是否合规,查询效率远高于线性遍历;其二,局域网上网行为管理需统计各 IP 地址的访问频次,红黑树支持动态插入新 IP 地址并更新访问次数,且在数据量增长时仍维持稳定性能;其三,局域网上网行为管理需定期清理过期访问记录,红黑树的删除操作可快速定位目标节点并自动调整树结构,保障系统持续高效运行。局域网上网行为管理对数据处理的实时性与稳定性要求较高,红黑树的自平衡特性恰好满足这一需求。

二、局域网上网行为管理红黑树的核心原理

红黑树通过 “颜色规则 + 旋转操作” 维持自平衡,适配局域网上网行为管理的逻辑如下:

节点结构定义:每个节点包含关键字(如网址、IP 地址)、数据(如访问次数、合规状态)、颜色(红 / 黑)、左子节点、右子节点与父节点,其中根节点与叶子节点(NIL 节点)固定为黑色;

颜色规则约束:红色节点的父节点必须为黑色,从任意节点到其所有叶子节点的路径包含相同数量的黑色节点,确保树的高度维持在 O (log n) 范围;

平衡调整机制:插入或删除节点后,若违反颜色规则,通过左旋、右旋操作调整节点位置,并重新着色,使树恢复平衡状态,避免出现极端倾斜结构;

过滤与统计逻辑:在局域网上网行为管理中,通过红黑树查询功能实现违规网址过滤,通过插入与更新操作实现访问频次统计,通过删除操作清理过期数据,全程保障高效处理。

三、局域网上网行为管理红黑树的 Node.js 实现

以下为适配局域网上网行为管理的 Node.js 红黑树实现,包含节点定义、核心操作及功能测试,可直接集成到局域网上网行为管理系统的过滤模块:

class RedBlackTree {

constructor() {

// 定义NIL叶子节点(黑色)

this.NIL = { color: 'black', left: null, right: null, parent: null };

this.root = this.NIL;

}

// 左旋操作

leftRotate(x) {

const y = x.right;

x.right = y.left;

if (y.left !== this.NIL) y.left.parent = x;

y.parent = x.parent;

if (x.parent === this.NIL) this.root = y;

else if (x === x.parent.left) x.parent.left = y;

else x.parent.right = y;

y.left = x;

x.parent = y;

}

// 右旋操作

rightRotate(y) {

const x = y.left;

y.left = x.right;

if (x.right !== this.NIL) x.right.parent = y;

x.parent = y.parent;

if (y.parent === this.NIL) this.root = x;

else if (y === y.parent.right) y.parent.right = x;

else y.parent.left = x;

x.right = y;

y.parent = x;

}

// 插入后平衡调整

insertFixup(z) {

while (z.parent.color === 'red') {

if (z.parent === z.parent.parent.left) {

const y = z.parent.parent.right;

if (y.color === 'red') {

z.parent.color = 'black';

y.color = 'black';

z.parent.parent.color = 'red';

z = z.parent.parent;

} else {

if (z === z.parent.right) {

z = z.parent;

this.leftRotate(z);

}

z.parent.color = 'black';

z.parent.parent.color = 'red';

this.rightRotate(z.parent.parent);

}

} else {

const y = z.parent.parent.left;

if (y.color === 'red') {

z.parent.color = 'black';

y.color = 'black';

z.parent.parent.color = 'red';

z = z.parent.parent;

} else {

if (z === z.parent.left) {

z = z.parent;

this.rightRotate(z);

}

z.parent.color = 'black';

z.parent.parent.color = 'red';

this.leftRotate(z.parent.parent);

}

}

}

this.root.color = 'black';

}

// 插入节点(适配局域网上网行为管理:key为网址/IP,data为访问数据)

insert(key, data) {

const z = { key, data, color: 'red', left: this.NIL, right: this.NIL, parent: this.NIL };

let y = this.NIL;

let x = this.root;

while (x !== this.NIL) {

y = x;

if (z.key < x.key) x = x.left;

else x = x.right;

}

z.parent = y;

if (y === this.NIL) this.root = z;

else if (z.key < y.key) y.left = z;

else y.right = z;

if (z.parent === this.NIL) {

z.color = 'black';

return;

}

if (z.parent.parent === this.NIL) return;

this.insertFixup(z);

}

// 查询节点(局域网上网行为管理:查询网址合规性/IP访问数据)

search(key) {

let x = this.root;

while (x !== this.NIL && key !== x.key) {

if (key < x.key) x = x.left;

else x = x.right;

}

return x === this.NIL ? null : x.data;

}

}

// 局域网上网行为管理功能测试

const filterTree = new RedBlackTree();

// 插入合规网址(模拟局域网上网行为管理的白名单)

filterTree.insert('https://www.baidu.com', { isLegal: true, visitCount: 0 });

filterTree.insert('https://www.csdn.net', { isLegal: true, visitCount: 0 });

// 模拟终端访问请求,查询网址合规性并更新访问次数

function checkAndUpdateUrl(url) {

const urlData = filterTree.search(url);

if (urlData) {

urlData.visitCount += 1;

console.log(`[局域网上网行为管理] 网址${url}合规,累计访问次数:${urlData.visitCount}`);

return true;

} else {

console.log(`[局域网上网行为管理] 网址${url}违规,已拦截`);

return false;

}

}

// 测试访问

checkAndUpdateUrl('https://www.vipshare.com/');

checkAndUpdateUrl('https://www.illegal.com');

checkAndUpdateUrl('https://www.csdn.net');

四、局域网上网行为管理红黑树的性能验证

模拟企业局域网环境(200 台终端,日均 5 万条访问请求),对比红黑树与数组在局域网上网行为管理中的处理效率:

插入性能上,红黑树插入 5 万条网址数据平均耗时 0.12 秒,数组插入耗时 0.06 秒,但数组查询需遍历全量数据;查询性能上,局域网上网行为管理单条访问请求查询,红黑树平均耗时 0.003 秒,数组平均耗时 0.8 秒,红黑树完全满足实时过滤需求;更新性能上,红黑树更新 IP 访问次数平均耗时 0.002 秒,数组需 0.7 秒。此外,当日志量增长至 20 万条时,红黑树查询延迟仍稳定在 0.005 秒内,为局域网上网行为管理系统的长期稳定运行提供技术支撑。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OeZ5wFMwnFWyVOMy94eSChQA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

领券