系统稳定性之上线三板斧
📕我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。
📘拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、SpringBoot、SpringMVC、SpringCloud、Mybatis、Dubbo、Zookeeper),消息中间件底层架构原理(RabbitMQ、RocketMQ、Kafka)、Redis缓存、MySQL关系型数据库、 ElasticSearch全文搜索、MongoDB非关系型数据库、Apache ShardingSphere分库分表读写分离、设计模式、领域驱动DDD、Kubernetes容器编排等。不定期分享高并发、高可用、高性能、微服务、分布式、海量数据、性能调优、云原生、项目管理、产品思维、技术选型、架构设计、求职面试、副业思维、个人成长等内容。
🌾阅读前,快速浏览目录和章节概览可帮助了解文章结构、内容和作者的重点。了解自己希望从中获得什么样的知识或经验是非常重要的。建议在阅读时做笔记、思考问题、自我提问,以加深理解和吸收知识。阅读结束后,反思和总结所学内容,并尝试应用到现实中,有助于深化理解和应用知识。与朋友或同事分享所读内容,讨论细节并获得反馈,也有助于加深对知识的理解和吸收。💡在这个美好的时刻,笔者不再啰嗦废话,现在毫不拖延地进入文章所要讨论的主题。接下来,我将为大家呈现正文内容。
文章目录
- 可监控
- 技术方案
- 一、黄金三角监控指标体系设计
- 1.1 业务健康度监测模块
- 1.2 系统生命体征观测体系
- 二、OpsReview红黑榜验证体系
- 2.1 可用率达标率评估
- 2.2 TP99波动率优化
- 2.3 峰值吞吐量验证
- 三、智能告警系统工程细节
- 3.1 初阶策略实施规范
- 3.2 高阶动态阈值实现
- 四、关键行动项技术保障
- 4.1 全链路压测保障方案
- 4.2 熔断机制实现细节
- 4.3 黄金十分钟响应体系
- 可灰度
- 技术方案
- 一、机器维度——最小化爆炸半径
- 二、机房维度——构建容灾安全舱
- 三、地域维度——打造单元化防波堤
- 四、业务维度——建立熔断隔离带
- 回滚
- 技术方案
- 一、代码回滚的"双刃剑":速度与风险的博弈
- 1. 功能开关:秒级止血的终极武器
- 2. 部署回滚:兜底方案的精准操作
- 二、数据兼容性:代码回滚后的"隐形杀手"
- 三、三大实战经验总结
可监控
不知道研发的同学有没有遇到过以下场景:
场景一:“不监控指标就敢上线?你的系统是在裸奔吗?订单崩了、用户跑了,你难道靠‘祈祷’接锅?!”
——连CPU炸了、TP99飙成蜗牛都不知道,还吹什么高可用?真当线上事故是“盲盒彩蛋”,专挑半夜给你惊喜?别等老板拍桌骂娘才后悔没把告警阈值焊死!
场景二:“告警阈值‘先严后松’?你确定不是技术团队在偷懒甩锅?!”
——嘴上喊着“避免遗漏告警”,实际就是初期疯狂刷存在感,后期直接摆烂装瞎!告警多到麻木,和“狼来了”有啥区别?真当运维是神仙,能从999+未读里捞出你偷偷埋的雷?
场景三:“死磕技术指标却忽视业务指标?你是在自嗨还是糊弄老板?!”
——CPU内存稳如老狗,订单量却暴跌80%,这系统有个屁用?拿“可用率99.99%”吹牛,结果用户都跑光了,你是想给老板表演“用数据编故事”的绝活吗?技术人的傲慢,早晚把自己玩成“皇帝的新衣”!
技术方案
高可用系统监控体系深度解析:从黄金三角到智能告警的工程化实践
一、黄金三角监控指标体系设计
1.1 业务健康度监测模块
采用双层滑动时间窗口机制确保实时性:
订单量监测:
① 分钟级滚动窗口(60 buckets)计算环比增速
② 24小时环形缓冲区存储历史数据用于同比计算
③ 采用Holt-Winters三阶指数平滑预测基准值
④ 波动>15%时触发双重验证机制(排除数据埋点异常)
支付成功率监测:
① 对接三方支付平台API获取行业基准值(每日17:00自动更新)
② 实施请求链路染色技术,区分新老用户分层统计
③ 搭建实时决策树模型识别异常模式(如地域性失败聚集)
1.2 系统生命体征观测体系
A. 软件指标监控架构
可用率计算:
① 分布式探针部署(全网状拓扑结构)
② 定义"不可用"状态为连续3次探测失败
③ 基于TDigest算法的百分位计算引擎
④ 排除预定维护窗口的智能过滤机制
TP99优化方案:
① 全链路Trace采样率动态调整(低负载时100%)
② 基于CDF(累积分布函数)构建耗时直方图
③ 引入前馈控制机制:预测超时前主动限流
调用量突增检测:
① 时间序列分解(STL算法)剥离周期性趋势
② 构建马尔可夫链状态转移概率模型
③ 关联分析(调用来源+用户特征图谱)
B. 硬件指标监控方案
五级缓冲告警机制:
① 传感器数据预处理(Savitzky-Golay滤波)
② 采用指数衰减滑动平均(EMA)消除瞬时毛刺
③ 基于时序预测(ARIMA)的动态基线校准
④ 硬件拓扑感知告警(区分虚拟机/物理机)
二、OpsReview红黑榜验证体系
2.1 可用率达标率评估
构建故障时间轴(精度到毫秒级)
实施故障根因指纹匹配(相似故障聚类分析)
引入维修效率指数(MTTR分级统计模型)
2.2 TP99波动率优化
建立多维归因矩阵:
① 代码变更关联分析(Git提交指纹追踪)
② 依赖服务SLA瀑布图
③ JVM GC热力图分析工具链
2.3 峰值吞吐量验证
混沌工程压力测试方案:
① 影子链路克隆技术
② 渐进式负载注入(每分钟提升10% QPS)
③ 依赖服务降级演练预案
三、智能告警系统工程细节
3.1 初阶策略实施规范
行业SLA对齐工具:
① 自动爬取主流云厂商SLA文档
② SLA条款结构化解析引擎
③ 条款比对差异可视化看板
3.2 高阶动态阈值实现
EWMA异常检测改进方案:
① 分位数回归加权算法
② 节假日模式自动识别模块
③ 多维指标联合分析(如CPU+内存组合告警)
四级响应机制设计:
P0级:全链路熔断+值班SRE呼叫接力
P1级:自动扩容+关联服务告警广播
P2级:工单优先级提升+备机重启
P3级:异步日志分析+次日晨会review
四、关键行动项技术保障
4.1 全链路压测保障方案
流量染色双向校验机制
影子数据库同步延迟监控
压测标记透传中间件改造
4.2 熔断机制实现细节
三层熔断判定逻辑:
① 滑动窗口计数器(最近10秒错误率)
② 断路器状态机(半开/全开转换条件)
③ 自适应恢复策略(基于历史恢复时间预测)
4.3 黄金十分钟响应体系
值班终端双因子认证加固
告警知识图谱即时推送
应急预案沙盒演练平台
五、架构设计亮点
动态基线计算引擎:融合时间序列预测与业务特征提取
告警风暴抑制算法:基于Attention机制的告警相关性分析
根因定位加速器:服务拓扑图异常传播路径追踪
容量规划数字孪生:在线/离线混合负载模拟器
可灰度
不知道研发的同学有没有遇到过以下场景:
【版本迭代龟速害死人!】
——你们所谓的"机器维度灰度"是不是还在用石器时代的分批部署?用户都跑光了你还在等24小时观察期!隔壁竞品一天迭代3次,你们却为了"降低影响"让团队在垃圾代码里慢性自杀,这到底是技术严谨还是无能拖延?
【机房灰度就是皇帝新衣?】
——号称按机房灰度就能容灾,真当故障会按你们划好的行政区划爆炸?中云信机房部署完就高枕无忧了?哪天光纤被挖断全组集体裸泳!美团敢玩异地多活是因为人家骑手数据有地域性,你们照猫画虎搞地域维度灰度,业务线跨区订单暴雷时准备让CEO直播谢罪吗?
【用户灰度等于慢性自杀!】
——死守用户维度的灰度策略就是新时代的闭关锁国!新功能藏着掖着只给VIP用,等竞品全量铺开收割市场时,你们拿着所谓"安全"的灰度数据给投资人表演数据跳水?商户都跑光了还谈什么爆炸半径,直接把自己炸出赛道得了!
技术方案
经过实战检验的四维灰度发布体系,通过机器、机房、地域、业务四个维度的立体化灰度策略。
一、机器维度——最小化爆炸半径
在行云容器化部署体系中,采用分组渐进式升级策略。每个服务集群划分20-30台机器的灰度分组,以滚动更新的方式完成首批实例部署。关键点在于设置24小时观察窗口,通过多维监控指标(错误率、吞吐量、线程池状态)验证稳定性。通过设置机器级的流量切分阀门,可在10秒内将问题节点的流量权重降为0,真正实现故障机器秒级隔离。
二、机房维度——构建容灾安全舱
基于双活机房的部署架构,采用机房级别的灰度缓冲机制。以中云信机房作为灰度首发阵地,通过DNS权重调整实现5%流量切入。此阶段着重验证跨机房调用链路的健壮性,重点监控机房级专线带宽、跨区延迟、缓存同步等指标。当观测到JVM内存波动稳定在±3%、数据库主从延迟小于200ms时,再将灰度范围扩展至有孚机房集群。
三、地域维度——打造单元化防波堤
借鉴美团外卖的异地多活经验,基于业务特征设计地域单元化方案。在存储层采用ShardingSphere实现数据分片路由,确保北京用户数据定向到华北存储集群,上海用户锁定华东单元。灰度发布时选择单个地域单元作为试验田,通过全链路压测验证业务闭环能力。该方案在某个日订单千万级的电商平台实测中,成功将数据库锁冲突率从3.7%降至0.2%。
四、业务维度——建立熔断隔离带
基于RBAC模型构建用户特征画像库,支持通过用户ID哈希、设备指纹、商家星级等多维度组合设置灰度规则。在快递行业实战案例中,针对新推出的智能路径规划算法,通过承运商运力等级(五星级承运商先行)、仓库日处理量(10万单以上仓库优先)的多层过滤策略,将算法缺陷引发的配送异常率从首日的12%压缩到3%以内。
这套四维灰度体系已在物流、电商、出行等多个领域完成验证,核心价值在于构建了立体防御体系:横向通过机器/机房维度控制基础设施风险,纵向通过地域/业务维度隔离业务影响。当配合全链路监控和秒级回滚能力时,可将生产事故的平均修复时间(MTTR)缩短83%。任何技术决策的本质都是风险控制,而灰度发布正是将这种控制力具象化的最佳实践。
回滚
不知道研发的同学有没有遇到过以下场景:
问题一:“代码回滚都救不了你的系统?你的兼容性设计是纸糊的吗?!”
——当其他团队还在纠结如何优雅地回滚数据,你的系统是否因为设计时偷工减料,连最基本的向前兼容都做不到?出了问题还要手忙脚乱修数据,你们的技术债是打算留给下辈子还吗?
问题二:“还在用部署回滚止损?你的用户早被竞对抢光了吧!”
——别人家的开关控制能做到秒级止血,你的团队还在吭哧吭哧重新打包部署,等回滚完用户都跑光了。这就是你们天天吹的“高可用架构”?连个灰度开关都懒得加,是真当用户不会用脚投票吗?
问题三:“回滚完数据又崩了?你们上线前连兼容测试都不做吗?!”
——新代码上线不带脑子,回滚后连旧逻辑都处理不了新数据,难道你们的测试用例全靠用户投诉驱动?连版本兼容性这种基础操作都搞不定,技术Leader是实习生兼职的吗?!
技术方案
当线上系统发生故障时,"先止血,再治病"是每一个技术团队必须坚守的铁律。
一、代码回滚的"双刃剑":速度与风险的博弈
1. 功能开关:秒级止血的终极武器
功能开关(Feature Toggle)是代码级回滚的最高效手段。其技术本质在于通过动态配置中心(如Nacos、Apollo)实时控制代码分支走向:
线上预埋新旧两套逻辑代码,新旧版本通过开关状态切换
集成灰度发布能力,允许按设备、用户等维度精准回退
需配合自动化测试验证开关有效性,避免"伪开关"陷阱
典型场景:某电商促销页面改版后出现渲染异常,通过关闭新版UI开关,5秒内恢复旧版页面展示,止损耗时仅为传统回滚的1/50。
2. 部署回滚:兜底方案的精准操作
当未提前部署功能开关时,部署回滚成为必选项。成熟的发布系统(如Kubernetes滚动升级)应具备三大核心能力:
版本快照:自动保留最近3个稳定版本的构建产物
双向流水线:支持正向发布与逆向回滚的标准化流程
健康检查熔断:在回滚过程中实时监测关键指标(QPS/错误率),异常时自动中止
注意:部署回滚的平均耗时是功能开关的20-50倍,且需警惕版本跳跃引发的配置错乱。
二、数据兼容性:代码回滚后的"隐形杀手"
2023年某头部支付系统的惨痛教训值得警惕:他们在回滚代码后,由于新版本产生的v2格式交易记录无法被旧版代码解析,导致支付链路崩溃。这暴露出一个关键技术原则:
向前兼容三要素:
数据持久层必须兼容新旧版本数据结构(如数据库字段采用扩展模式而非覆盖模式)
消息队列采用双向兼容的序列化协议(推荐Protobuf的Backward Compatibility策略)
缓存数据设置版本标签,旧版代码自动忽略未知版本数据
当确实需要数据回滚时,建议采用影子处理机制:创建与原集群隔离的回滚环境,通过数据对比工具(如Deequ)自动识别差异数据,避免直接操作生产库。
三、三大实战经验总结
预防优于修复:所有新功能必须通过"兼容性冒烟测试",验证旧版代码是否能处理新版数据
分层回滚策略:
一级防御:功能开关(秒级生效)
二级防御:服务级回滚(分钟级)
三级防御:数据修补(小时级)
演练即实战:每季度执行"断电演练",强制触发回滚流程,验证系统容灾能力
📥博主的人生感悟和目标
希望各位读者大大多多支持用心写文章的博主,现在时代变了,信息爆炸,酒香也怕巷子深,博主真的需要大家的帮助才能在这片海洋中继续发光发热,所以,赶紧动动你的小手,点波关注❤️,点波赞👍,点波收藏⭐,甚至点波评论✍️,都是对博主最好的支持和鼓励!
- 💂 博客主页: Java程序员廖志伟
- 👉 开源项目:Java程序员廖志伟
- 🌥 哔哩哔哩:Java程序员廖志伟
- 🎏 个人社区:Java程序员廖志伟
- 🔖 个人微信号:
SeniorRD
📙经过多年在CSDN创作上千篇文章的经验积累,我已经拥有了不错的写作技巧。同时,我还与清华大学出版社签下了四本书籍的合约,并将陆续出版。这些书籍包括了基础篇、进阶篇、架构篇的📌《Java项目实战—深入理解大型互联网企业通用技术》📌,以及📚《解密程序员的思维密码–沟通、演讲、思考的实践》📚。具体出版计划会根据实际情况进行调整,希望各位读者朋友能够多多支持!
🔔如果您需要转载或者搬运这篇文章的话,非常欢迎您私信我哦~
相关文章:
系统稳定性之上线三板斧
📕我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、…...
aardio - godking.vlistEx.listbar + win.ui.tabs 实现多标签多页面切换
方法一: import win.ui; import godking.vlistEx.listbar; import fonts.fontAwesome; /*DSG{{*/ mainForm win.form(text"vlistEx - table adapter";right895;bottom503) mainForm.add({ custom{cls"custom";text"自定义控件";lef…...
鸿蒙 核心与非核心装饰器
HarmonyOS NEXT 版本中完整的 ArkTS 装饰器分类整理(含核心与非核心装饰器,已剔除废弃特性) 一、核心装饰器(Essential Decorators) 1. 组件基础 装饰器功能Entry应用入口组件,每个模块必须且仅有一个&am…...
TypeScript 知识框架
一、TypeScript 基础 1. 类型系统 基本类型: number, string, boolean, null, undefined, symbol, bigint 引用类型: object, array, function, class 特殊类型: any, unknown, void, never 类型推断与类型注解 类型断言 (as 语法和 <Type> 语法) 2. 接口与类型别名 接口…...
web-ui开源程序是建立在浏览器使用的基础上,旨在使 AI 代理可以访问网站
一、软件介绍 文末提供程序和源码下载 web-ui开源程序是建立在浏览器使用的基础上,旨在使 AI 代理可以访问网站。WebUI:基于 Gradio 构建,支持大部分 browser-use 功能。此 UI 设计为用户友好型,并支持与浏览器代理轻松交互。扩…...
【ns3】TCP三次握手源码解析
文章目录 TCP三次握手过程三次握手源码 TCP三次握手过程 三次握手源码 下面是ns3里三次握手整体过程的源码,和上面图解一一对应: TCP socket的状态枚举: 整体过程: 客户端首先connect:tcp-socket-base::connect调用Do…...
【YOLO模型】参数全面解读
使用YOLO模型时,需要调节各种参数,网络文章和官方文档有点不方便,整理了下面的内容备用: 获取最全最新的参数列表: Ultralytics官方文档: 这是获取YOLOv11(以及YOLOv8等)最权威、最详细参数信息的地方。通…...
跨境电商定价革命:亚马逊“逆向提价“策略背后的价值重构逻辑
导言:打破价格魔咒的销量奇迹 2024年Q3亚马逊平台上演商业悖论:在TOP5000卖家中,12%实施5%-15%温和提价的商户,41%实现单量30.4%的季度增长。这一现象颠覆"低价即流量"的电商铁律,揭开新消费时代"价值定…...
Kafka、RabbitMQ、RocketMQ的区别
以下是 RabbitMQ、RocketMQ、Kafka 的核心区别对比: 一、架构设计差异 Kafka 基于分布式日志的发布-订阅模型,通过分区(Partition)实现水平扩展,依赖 ZooKeeper 管理集群消费者通过消费者组(Consumer G…...
win10 局域网内聊天
在 Windows 10 的局域网 中,如果你想实现 多个用户之间的聊天功能,可以选择以下几种方案,取决于你需要的是: • ✅ 命令行纯文字聊天(如 Linux talk) • ✅ 图形界面聊天室 • ✅ 局域网广播消息 • ✅ 多人…...
【前端三剑客】Ajax技术实现前端开发
目录 一、原生AJAX 1.1AJAX 简介 1.2XML 简介 1.3AJAX 的特点 1.3.1AJAX 的优点 1.3.2AJAX 的缺点 1.4AJAX 的使用 1.4.1核心对象 1.4.2使用步骤 1.4.3解决IE 缓存问题 1.4.4AJAX 请求状态 二、jQuery 中的AJAX 2.1 get 请求 2.2 post 请求 三、跨域 3.1同源策略…...
论文学习_Trex: Learning Execution Semantics from Micro-Traces for Binary Similarity
摘要:检测语义相似的函数在漏洞发现、恶意软件分析及取证等安全领域至关重要,但该任务面临实现差异大、跨架构、多编译优化及混淆等挑战。现有方法多依赖语法特征,难以捕捉函数的执行语义。对此,TREX 提出了一种基于迁移学习的框架…...
数据压缩的概念和优缺点
一、数据压缩的概念 数据压缩是通过特定算法(压缩算法)对数据进行重新编码,以减少数据存储空间或传输带宽的技术。其核心目标是在不丢失关键信息(或允许一定程度信息损失)的前提下,降低数据量,…...
spaCy基础入门
spaCy 概览说明 spaCy 是一个现代、快速、工业级 NLP 工具库,专门为实际工程应用设计,提供: • 分词(Tokenization) • 词性标注(POS Tagging) • 命名实体识别(NER) •…...
vue3项目创建-配置-elementPlus导入-路由自动导入
目录 方法一:create-vue 方法二 :Vite Vue Vite.config.ts配置 引入element-plus 安装 如何在项目中使用 Element Plus 完整引入 按需导入 vue3vite中自动配置路由的神器:vite-plugin-pages 1. 安装 2、修改vite.config.js中配置…...
2025年的电脑能装win7吗_2025年组装电脑装win7详细图文教程
2025年的电脑能装win7吗?2025年的电脑可以安装Win7,但存在一些限制和挑战。2025年的电脑基本上是14代和15代处理器,需要特定的条件和步骤才能安装win7,并且只能采用独立显卡,因为没有集成显卡驱动。另外注意目前2025年…...
windowsC++操作ADB
文章目录 一、ADB基础1. 工作原理2. 安装与配置 二、常用ADB指令分类1. 设备连接与管理2. 文件传输3. 应用管理4. 设备交互5. 系统信息6. 日志与调试7. 网络与端口转发 三、高级用法1. 多设备管理2. 无线ADB连接3. 批量执行命令4. ADB脚本示例 四、常见问题与解决方案五、注意事…...
Springboot实现重试机制
背景 研发工作中时常遇到要和其他服务对接,依赖对方能力的情况,最恶心的是对方提供的服务不稳定,时灵时不灵的,进而影响到自己功能的稳定性。万一发生了这种事,做为研发,咱该怎么办?通过容错直接…...
CS内网渗透 ----【内网渗透实战】PsExec vs Telnet:建立IPC通道实现横向移动与域控上线全解析
目录 1. 什么是 PsExec? 2. 什么是 Telnet? 3. PsExec 与 Telnet 的区别及优势 3.1 主要区别 3.2 内网渗透中的优势 4. 实际案例 —— 使用 PsExec 上线域控主机 案例背景 操作步骤 案例效果 5. 总结 利用 PsExec 建立 IPC 通道 —— IPC 的定…...
第二十三天打卡
作业: 整理下全部逻辑的先后顺序,看看能不能制作出适合所有机器学习的通用pipeline 数据预处理 → 特征选择 → 降维 → 模型训练 import pandas as pd import numpy as np from sklearn.model_selection import train_test_split, GridSearchCV from sk…...
aardio - 将文本生成CSS格式显示
import win.ui; /*DSG{{*/ var winform win.form(text"aardio form";right759;bottom469) winform.add( button{cls"button";text"Button";left340;top130;right430;bottom180;z3}; edit{cls"edit";text"我是一串文本";lef…...
【漫话机器学习系列】256.用 k-NN 填补缺失值
用 k-NN 填补缺失值:原理、实现与应用 在实际的数据科学项目中,我们经常会遇到数据缺失(Missing Values)的问题。缺失值如果处理不当,不仅会影响模型训练,还可能导致最终结果偏差。 今天,我们…...
tomcat与nginx之间实现多级代理
准备工作 准备5台虚拟主机;至少准备3台虚拟主机; 设备1作为代理服务器;设备2与设备4作为处理静态资源请求服务器(使用nginx);设备3与设备5作为处理动态资源服务器(使用tomcat) 设…...
商业航天运动控制系统中的高可靠性芯片解决方案:挑战、策略与应用研究
摘要:随着商业航天领域的迅速发展,运动控制系统对芯片的可靠性提出了前所未有的挑战。本文深入探讨了商业航天运动控制系统中芯片可靠性面临的挑战,包括宇宙辐射效应、极端环境适应性及系统级可靠性保障等。同时,通过案例研究展示…...
[Java实战]Spring Boot 3 整合 Ehcache 3(十九)
[Java实战]Spring Boot 3 整合 Ehcache 3(十九) 引言 在微服务和高并发场景下,缓存是提升系统性能的关键技术之一。Ehcache 作为 Java 生态中成熟的内存缓存框架,其 3.x 版本在性能、功能和易用性上均有显著提升。本文将详细介绍…...
【Flask全栈开发指南】从零构建企业级Web应用
目录 🌟 前言🏗️ 技术背景与价值🚧 当前技术痛点🛠️ 解决方案概述👥 目标读者说明 🔍 一、技术原理剖析📊 核心概念图解💡 核心作用讲解🧩 关键技术模块说明⚖️ 技术选…...
使用docker安装clickhouse集群
1、简介 clickhouse 作为大数据场景中,实现快速检索的常用列式存储数据库,采用物理机部署,会在数据量大的场景中,物理机器存储达到阈值需要扩容,会带来比较大的问题,因此,使用docker部署clickho…...
佰力博科技准静态d33测试的注意事项
准静态d33测试是测量压电材料纵向压电应变常数的重要方法,其注意事项包括以下几个方面: 选择合适的测量设备 准静态d33测试需要使用专用的压电测试仪,如佰力博PEAI1000高精度压电分析仪、准静态d33测量仪或PCA1000压电陶瓷综合参数分析仪。这…...
iOS设备投屏Archlinux
我的iphone手机屏太小,我想把手机投到archlinux电脑上看。与是我就想找一个免费的软件。 UxPlay https://github.com/FDH2/UxPlay GPLv3,开源。原来只支持 AirPlay Mirror 协议,现在新增 支持来自 AirPlay 的纯音频 (Apple Los…...
VUE_UI组件的二次封装
属性和事件 <template><div><myInput a"1" b"2" c"3" change"() > {}"></myInput></div> </template>myInput.vue <template><div><el-input v-bind"$attrs">&…...
算法·KMP
KMP算法的思想 想要一次性遍历模板串 s 1 s_1 s1,不在匹配失败时重新开始遍历子串 s 2 s_2 s2,实现模板串不回退的效果。 KMP数组的理解 KMP数组有两种定义:一是匹配失败后,子串 s 2 s_2 s2应该回退的位置,一种…...
如何正确地写出单例模式
如何正确地写出单例模式 | Jarks Blog 枚举方式: public class SingletonObject {private SingletonObject() {}/*** 枚举类型是线程安全的,并且只会装载一次*/private enum Singleton {INSTANCE;private final SingletonObject instance;Singleton() {…...
Mac M系列 安装 jadx-gui
安装 Homebrew在终端中执行以下命令(需管理员密码): 安装 Homebrew(官方源) /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"国内用户可用镜像源加速&…...
水滴Android面经及参考答案
目录 static 关键字有什么作用,它修饰的方法可以使用非静态的成员变量吗? Java 中创建线程有几种方式? wait 和 sleep 的区别,如何打断 sleep? Java 垃圾回收的目的是什么,垃圾回收机制是怎样的? Java 的垃圾回收(GC)机制是如何工作的? 请解释 Java 内存模型(J…...
《猜拳游戏》
综合案例《猜拳游戏》 需求: 本游戏是一款单机游戏,人机交互 规则: 需要双方出拳:石头、剪刀、布 赢: 石头 → 剪刀剪刀 → 布布 → 石头 平: 两边出拳相等 输: … 实现: 选择对…...
Mysql索引优化
一、索引 1. 主键索引(Primary Index) 定义 主键索引是一种特殊的唯一索引,用于唯一标识表中的每一行数据。每个表最多有一个主键索引,且索引列不允许为 NULL,自动添加 UNIQUE 和 NOT NULL 约束。 特点:…...
Postgresql与openguass对比
背景介绍 PostgreSQL是世界上最先进的开源关系型数据库,以其强大的功能、稳定性和可扩展性著称。而openGauss是华为公司于2020年6月30日开源的数据库系统,内核基于PostgreSQL 9.2.4版本演进而来。值得注意的是,PostgreSQL 11.3版本拥有290个数…...
线程的概念和控制
自从20世纪60年代提出了进程的概念之后,操作系统一直以进程作为独立运行的基本单位。到了20世纪80年代,人们又提出了比进程更小的、能独立运行的基本单位——线程。提出线程的目的是试图提高系统并发执行的程度,从而进一步提高系统的吞吐量。…...
如何配置activemq,支持使用wss协议连接。
1、到阿里云申请一个证书,通过后下载jks证书。 2、配置activemq: 打开activemq安装目录中“conf/activemq.xml”,增加以下记录: <transportConnectors> <transportConnector name"wss" uri"…...
【言语】刷题3
front:刷题2 题干 超限效应介绍冰桶挑战要避免超限效应 B明星的作用只是病痛挑战的一个因素,把握程度才是重点,不是强化弱化明星作用,排除 A虽没有超限效应,但是唯一的点出“冰桶效应”的选项,“作秀之嫌…...
关于 ast: Babel AST 全类型总览
AST 的每个节点都有一个 type 字段,用来标识它的语法类型。 程序结构节点 type说明示例Program整个程序的根节点整体代码结构BlockStatement大括号代码块 {}if、function、for 等的主体ExpressionStatement表达式语句(如 a b;)EmptyStatem…...
STM32 内存
根据STM32的存储器映射机制,其32位地址总线可访问4GB逻辑地址空间(0x00000000-0xFFFFFFFF),但实际物理地址分配由芯片厂商定义。以下是STM32完整的地址映射结构及关键区域说明: 一、地址空间整体架构 4GB地址空间划分…...
图片的require问题
问题 <template><!--第一种方式--><img :src"require(/assets/${imageName})" style"width:100px;" /><!--第二种方式--><img :src"require(imageUrl)" style"width:100px;" /> </template><…...
关于 js:8. 反调试与混淆识别
一、常见反调试手段识别 1. debugger 死循环(阻塞调试器) 样例代码: while (true) {debugger; }原理: 每次执行到 debugger 语句,如果 DevTools 打开,将自动触发断点。 如果在死循环中,调试…...
深度Q网络(DQN)的基本概念
一、深度Q网络(DQN)的基本概念 深度Q网络(Deep Q-Network,DQN)是将强化学习中的Q学习(Q-Learning)与深度学习相结合的算法,由DeepMind在2013年提出,并在2015年发表于《Nature》杂志。它通过神经网络近似动作价值函数(Q函数),解决传统Q学习在高维状态空间下的计算难…...
uniapp+vue3中自动导入ref等依赖
前言: 在我们使用uni-appvue3创建项目,开发的过程中,老是需要导入我们的ref、onshow等,那么能不能自动导入,不用我们每个页面都写呢?是没问题的,这里让他的小帮手来帮你减轻负担:他就…...
合肥SMT贴片加工核心优势与工艺升级
内容概要 在电子制造领域,工艺精度与生产效率的平衡始终是企业关注的核心命题。本文将系统呈现合肥SMT贴片加工产业的技术演进图谱,为寻求制造升级的企业提供可落地的决策参考。 作为长三角电子制造集群的重要节点,合肥SMT贴片加工产业通过持…...
Ansible安装与核心模块实战指南
Ansible安装与核心模块实战指南 自动化运维入门:从安装到模块化任务配置 Ansible作为一款无代理自动化工具,通过模块化设计实现高效管理,尤其适用于快速部署、配置和维护大规模系统。本文将从安装、核心模块使用到实际案例,全面解析其核心功能与最佳实践。 一、Ansible安装…...
TDengine 做为 Spark 数据源
简介 Apache Spark 是开源大数据处理引擎,它基于内存计算,可用于批、流处理、机器学习、图计算等多种场景,支持 MapReduce 计算模型及丰富计算操作符、函数等,在大超大规模数据上具有强大的分布式处理计算能力。 通过 TDengine …...
Codeforces Round 997 (Div. 2)
A. Shape Perimeter 题目大意 给你一个m*m的正方形,再给你n个坐标表示每次在xy移动的距离(第一个坐标是初始位置正方形左下角),问路径图形的周长 解题思路 记录好第一次的位置之后一直累加最后求总移动距离的差值即可 代码实…...