1-ysyThread-为什么需要动态线程池?
为什么需要动态线程池?线程池通用痛点分析 从【定义、配置、运行、监控、销毁】全生命周期来分析 1. 规划与定义阶段:缺乏治理 痛点:开发人员各自为战,随意定义线程池参数,缺乏统一的管控标准 后果:系统内线程资源泛滥,在高并发下引发服务器负载过高,甚至导致应用崩溃 2. 配置与调优阶段:静态僵化 痛点:线程池参数通常是硬编码或静态配置,难以评估合理值 后果:参数设置过小导致吞吐量不足,设置过大浪费资源。且在业务流量波动时,无法动态调整,故障风险高 3. 运行与稳定性阶段:级联影响 痛点:面对突发流量,容易出现队列积压、任务执行超时或触发拒绝策略 后果:直接影响既有业务的正常响应,严重时导致业务熔断或不可用 4. 监控与运维阶段:观测缺失 痛点:缺乏可视化的运行指标(活跃度、队列剩余量等)及报警机制 后果:系统出现问题时(如超时、卡顿),无法第一时间确认是否为线程池瓶颈,排查效率低,故障定位难 5....
从加密到“一机一密”签名方案的改进与实践
从加密到“一机一密”签名方案的改进与实践前言在移动端、IoT设备与后端通信的场景中,如何安全、高效地验证设备身份(鉴权)是架构设计的核心。本文将记录我们从最初的“加密模式”演进到高性能“一机一密签名模式”的过程,并深入探讨其中的技术细节与架构权衡 为什么放弃加密,改用签名在早期方案中,我们尝试直接对敏感信息进行AES对称加密 做法:客户端将SN + Timestamp通过AES加密发给服务端,服务端解密验证 痛点: 性能开销大:解密运算对CPU的消耗远高于哈希运算,在高并发下容易成为瓶颈。 抗攻击能力弱(拒绝成本高):面对大规模DDoS攻击,服务端必须对每个垃圾请求执行解密才能判断其非法,极易导致 CPU 挂起 调试困难:Header中全是加密乱码,排查问题时无法直观看到设备号和时间 改进思路: 采用签名机制。即:明文传输信息 + 摘要校验 核心架构:一机一密为了防止“一处泄露,全线崩溃”,我们摒弃了全局共享密钥,采用“一机一密” 1. 密钥的生成与分发 生成逻辑:RealKey = SHA256("固定随机字符串" +...
win 下 docker 遇到的问题
win 下 docker 遇到的问题前言由于之前实习使用docker,都是在Mac及Linux服务器下docker镜像容器,但目前我自己只有win11的系统,而且只想在win下完成操作,并排雷避坑,以部署Prometheus为例子 解决的问题: 如何在win下使用Linux格式指令 - 用 WSL 如何使用通用指令来创建并启动docker容器 例子:部署 Prometheus常规操作在当前目录下创建一个prometheus.yml的配置文件。在该文件中,我们将定义Prometheus的抓取目标。例如,可以在项目目录中创建一个名为prometheus.yml的文件,并添加以下内容: 12345678global: scrape_interval: 15s evaluation_interval: 15sscrape_configs: - job_name: '\''prometheus'\'' static_configs: - targets:...
【算法方法总结·八】二叉树的一些技巧和注意事项
【算法方法总结·八】二叉树的一些技巧和注意事项 【算法方法总结·一】二分法的一些技巧和注意事项 【算法方法总结·二】双指针的一些技巧和注意事项 【算法方法总结·三】滑动窗口的一些技巧和注意事项 【算法方法总结·四】字符串操作的一些技巧和注意事项 【算法方法总结·五】链表操作的一些技巧和注意事项 【算法方法总结·六】栈队列堆的一些技巧和注意事项 【算法方法总结·七】哈希的一些技巧和注意事项 【算法方法总结·八】二叉树的一些技巧和注意事项 🎯 【二叉树】二叉树的定义1234567891011121314// 二叉树定义public class TreeNode { int val; TreeNode left; TreeNode right; // 构造器 TreeNode() {} TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode right) { ...
【算法方法总结·七】哈希的一些技巧和注意事项
【算法方法总结·七】哈希的一些技巧和注意事项 【算法方法总结·一】二分法的一些技巧和注意事项 【算法方法总结·二】双指针的一些技巧和注意事项 【算法方法总结·三】滑动窗口的一些技巧和注意事项 【算法方法总结·四】字符串操作的一些技巧和注意事项 【算法方法总结·五】链表操作的一些技巧和注意事项 【算法方法总结·六】栈队列堆的一些技巧和注意事项 【算法方法总结·七】哈希的一些技巧和注意事项 🎯 【哈希】 哈希表能解决什么问题呢,一般哈希表都是用来快速判断一个元素是否出现集合里 枚举 的时间复杂度是 O(n),但如果使用 哈希表 的话, 只需要 O(1) 就可以做到 数据结构 涉及的基础内容简要讲解,主讲 Hash 函数的使用 哈希函数 将任意大小的键(Key)转换为固定大小的整数(哈希值) 哈希碰撞 也叫 哈希冲突,即不同键可能生成相同的哈希值(即映射到同一位置) 两种解决办法(1)拉链法(链地址法) 冲突的键值对 追加到链表 中 (2)开放寻址法 一般用其中的 线性探测法 依靠哈希表中的 空位 来解决碰撞问题 【哈希结构】 数组、set...
【算法方法总结·六】栈队列堆的一些技巧和注意事项
【算法方法总结·六】栈队列堆的一些技巧和注意事项 【算法方法总结·一】二分法的一些技巧和注意事项 【算法方法总结·二】双指针的一些技巧和注意事项 【算法方法总结·三】滑动窗口的一些技巧和注意事项 【算法方法总结·四】字符串操作的一些技巧和注意事项 【算法方法总结·五】链表操作的一些技巧和注意事项 【算法方法总结·六】栈队列堆的一些技巧和注意事项 🎯 【栈】可以用 Stack,但是一般用 Deque,比较方便 Stack12345678Stack<Integer> stack = new Stack<>()stack.pop() // 出栈,并返回出栈元素stack.push(x) // 把x入栈stack.peek() // 返回栈顶元素stack.isEmpty() // 是否为空stack.isFull() // 是否满了stack.length // 长度 Deque也支持 栈操作 123456789// 双端队列Deque<Integer> deque = new Linkedlist<>()//...






