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

dnsresolver-limit

文件

OperationLimiter.h

功能

DnsResolver是andnroid中提供DNS能力的小型DNS解析器,limit是其中的一个小模块,支持全局、基于key(UID)的DNS请求限制。

DnsResolver是多线程模型,单个DNS请求最多启动3个线程(传统DNS)。

在网络较差的情况下,会导致DNS响应超时,极容易导致设备积累大量线程,同时堆、栈内存无法迅速回收,造成内存突增。

另外基于每UID的DNS请求限制也在一定程度上对单应用的DNS请求进行约束,起到一定的DDoS作用。

全局默认设置值为INT_MAX, 基于key值的默认值为256,可供OEM厂商进行定制。原生方案仅提供能力,不作限制

代码

// Limits the number of outstanding DNS queries by client UID.
constexpr int MAX_QUERIES_PER_UID = 256;
android::netdutils::OperationLimiter<uid_t> queryLimiter(MAX_QUERIES_PER_UID);int globalLimit = android::net::Experiments::getInstance()->getFlag("max_queries_global", INT_MAX);

实现比较简单,这里不赘述了。以及int变量+std::unordered_map。

Experiments是DnsResolver的特性管理类

http://www.lryc.cn/news/37540.html

相关文章:

  • 使用 YoctoProject集成Qt6
  • 「媒体邀约」如何选择适合的媒体公关,媒体服务供应商
  • html2canvas和jspdf导出pdf,每个页面模块占一页,在pdf中垂直居中显示
  • 数学小课堂:集合论的公理化过程(用构建公理化体系的思路来构建自然数)
  • 3.10多线程
  • 缓存双写一致性之更新策略探讨
  • scala高级函数快速掌握
  • 手写模拟SpringMvc源码
  • 五分钟了解JumpServer V2.* 与 v3 的区别
  • 用友开发者中心应用构建实践指引!
  • snap使用interface:content的基础例子
  • 蓝桥杯刷题第七天
  • FinOps首次超越安全成为企业头等大事|云计算趋势报告
  • 【深度强化学习】(3) Policy Gradients 模型解析,附Pytorch完整代码
  • Windows基于Nginx搭建RTMP流媒体服务器(附带所有组件下载地址及验证方法)
  • 交流电机驱动器中的隔离电压感应
  • 爬取知乎问题答案
  • 通用智能理论
  • 保姆级使用PyTorch训练与评估自己的MixMIM网络教程
  • 《百万在线 大型游戏服务端开发》前两章概念笔记
  • 3BHE029110R0111 ABB
  • 实现防重复操作(JS与CSS)
  • 怎么合并或注销重复LinkedIn领英帐号?
  • Redis高频面试题汇总(中)
  • 【Flutter从入门到入坑之三】Flutter 是如何工作的
  • Web Components学习(2)-语法
  • Lesson 9.2 随机森林回归器的参数
  • Kubernetes Secret简介
  • Redis 哨兵(Sentinel)
  • 精读笔记 - How to backdoor Federated Learning