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

即时通讯安全篇(十六):对称加密 vs 非对称加密?一文搞懂

本文由vivo 互联网服务器团队Deng Qian分享有排版和内容优化。1、引言在了解加密原理前我们来看看这样一个故事小红和小明是情侣一天小红给小明发短信说“亲爱的我银行卡上没有钱了你给我转1万块钱吧。”有过上当受骗经历的人都知道这有可能是小偷偷了小红手提包然后拿手机发的短信。不过我们小明学过加密原理于是他回复说“你直接拿我的银行卡刷吧密码加上我们第一次约会的日期就是663156。”很明显只有小明和小红知道他们第一次约会是什么时候假设是2008年4月1号那么小红就可以根据计算663156-200841462315得到银行卡密码就可以消费了。这就是加密的本质将信息与密钥相加得到加密后的信息只有知道密钥的人才能解密。本文将以通俗案例讲解加密本质介绍对称加密含 AES、迪菲–赫尔曼密钥交换与非对称加密RSA原理、特点及应用并阐释其数学基础。2、系列文章《即时通讯安全篇一正确地理解和使用Android端加密算法》《即时通讯安全篇二探讨组合加密算法在IM中的应用》《即时通讯安全篇三常用加解密算法与通讯安全讲解》《即时通讯安全篇四实例分析Android中密钥硬编码的风险》《即时通讯安全篇五对称加密技术在Android平台上的应用实践》《即时通讯安全篇六非对称加密技术的原理与应用实践》《即时通讯安全篇七用JWT技术解决IM系统Socket长连接的身份认证痛点》《即时通讯安全篇八如果这样来理解HTTPS原理一篇就够了》《即时通讯安全篇九你知道HTTPS用的是对称加密还是非对称加密》《即时通讯安全篇十为什么要用HTTPS深入浅出探密短连接的安全性》《即时通讯安全篇十一IM聊天系统安全手段之通信连接层加密技术》《即时通讯安全篇十二IM聊天系统安全手段之传输内容端到端加密技术》《即时通讯安全篇十三信创必学一文读懂什么是国密算法》《即时通讯安全篇十四网络端口的安全防护技术实践》《即时通讯安全篇十五详解硬编码密码的泄漏风险及其扫描原理和工具》《即时通讯安全篇十六对称加密 vs 非对称加密一文搞懂》☜ 本文3、什么是秘钥既然加密需要密钥那么密钥是什么呢密钥是作用于加密时的一串密码通过密钥进行信息加密传输到达接收者和监听者由于接收者也有密钥所以接收者可以根据密钥进行解密。从而防止通讯信息泄露。4、什么是对称加密前言讲的故事就是一个对称式加密小明和小红都知道第一次约会的日期。所以传统的对称式加密需要通讯双方都保存同一份密钥通过这份密钥进行加密和解密。所以对称加密也称为单密钥加密。对称加密的优势在于加解密速度快但是安全性较低密钥一旦泄露所有的加密信息都会被破解。同时密钥的传输和保密也成为难题。为了解决密钥传输的问题出现通过密钥交换建立共享密钥的技术。具体如何建立共享密钥呢我们往下看。5、对称加密之建立共享密匙在小明、小红和小偷的三人世界中由于小明是学过加密原理的知道迪菲–赫尔曼密钥交换Diffie-Hellman Key Exchange所以他知道如何建立共享密钥。5.1 颜料混合把戏接下来我们看看如何通过颜料混合把戏建立共享密钥吧。假设在房间中有小明、小红和小偷三个人每个人各自拥有相同颜色的颜料。在房间的正中间也有这些颜料。接下来小明要和小红建立共享密钥了。此时小明对大家说“我要用蓝色。”然后小明从自己的颜料里选择了黄色这个黄色就是小明的私钥小红和小偷都不知道。小明将自己的私钥黄色与公钥蓝色混合后得到了一种不能分解的颜色我们就叫“小明-蓝色”吧虽然大家都知道黄蓝变绿但是这里我们为了知道是谁的混合色还是以名字加公钥颜色来称呼然后小明将“小明-蓝色”公布了出来。同样小红听到了小明说用蓝色后也选择了自己的私钥红色与公钥蓝色混合得到了“小红-蓝色”并公布了出来。此时房间中小明、小红、小偷三人都知道了几个信息1他们都用了蓝色2小明公布了“小明-蓝色”小红和小偷不知道是什么颜料与蓝色的混合3小红公布了“小红-蓝色”小红和小偷不知道是什么颜料与蓝色的混合。接下来见证奇迹的时刻到了小明拿到“小红-蓝色”与自己的私钥“黄色”混合得到“小红-蓝色-小明”的新颜料。同样的小红拿到“小明-蓝色”与自己的私钥“红色”混合得到“小明-蓝色-小红”。大家发现了吗“小红-蓝色-小明”和“小明-蓝色-小红”是一模一样的颜色。而小偷不知道小明和小红的私钥颜色无法混合出与他们相同的颜色。至此共享密钥建立起来了。在了解了共享密钥的建立过程后我们将告别实体颜料采用数字的方式来建立共享密钥。注大家可能想到了小偷可以根据自己的颜料与公钥“蓝色”混合尝试得出“小明-蓝色”和“小红-蓝色”。这样的方法称之为穷举法也就是尝试所有的可能性进行信息破解所以加密算法在理论上都是可以通过穷举法破解的只不过实际上超级计算机都需要计算万亿年才能穷举出所有可能性。5.2 乘法把戏首先我们假设乘法如同颜料混合一样是不能分解的看看如何用乘法与数字建立共享密钥。小明公开了一个数字5然后小明选择了一个私人数字4然后利用乘法将两者混合起来得到“小明-5”20接下来小红也选择了一个私人数字7得到“小红-5”35小明拿到35*4140小红拿到20*7140。共享密钥建立完成。大家也发现了小偷知道20,35,5这三个数字后用除法就能算出小明和小红的私钥。所以接下来我们将了解实际使用中的如何使用乘法把戏来防止私钥被计算出来的。6、对称加密之迪菲·赫尔曼密钥交换算法我们都知道幂运算但是要让计算机计算就比较难了。所以我们会用幂运算作为建立共享密钥的乘法把戏。同时我们还要了解钟算的原理这里的钟可以理解成我们经常看到的时钟我们常见的时钟最大是12如果当前是10点过了4个小时后就变成了下午2点。也就是(104)mod122。了解了钟算和幂运算后就开始进入正题吧。还是小明、小红和小偷的房间小明声明了钟为11幂运算的底为2接下来小明和小红分别选择了自己的私钥4和7。1第一步小明混合自己的“小明-11,2”得到小红混合自己的“小红-11,2”得到。2第二步小明拿到“小红-11,2”7进行计算小红拿到“小明-11,2”5进行计算。大家注意到了吗小明和小红建立了共享密钥3而小偷无法根据已知的11、2、5、7这几个数字计算出密钥或小明小红的私钥。有了共享密钥后小明和小红就可以安全进行加密传输了。迪菲赫尔曼密钥交换7、 对称加密之AES加密过程AES 的全称是 Advanced Encryption Standard 是最流行的对称加密算法其加解密速度快。AES支持128位192位256位三种长度的密钥密钥越长安全性越高。AES加密时会把明文切分成许多小块的明文然后对每块明文单独加密将加密后的密文传送出去接收方再将密文切块解密得到明文。如下图所示。AES加密原理上一步中小明和小红已经协商好了密钥3。接下来就可以通过对称加密进行通信了。在小明、小红和小偷的房间中小明想把密码“462315”告诉小红于是1第一步将密码按照一位的长度进行切分实际中通常按128位进行切分就变成了“4”“6”“2”“3”“1”“5”2第二步对每块明文通过密钥3进行加密结果就是“795648”然后小明告诉小红和小偷“我的密码是795648”3第三步小红拿到密文后对密文进行切块对每块通过密钥3进行解密就得到了正确的密码“462315”而小偷由于不知道密钥就无法解密出正确的信息。8、什么是非对称加密8.1 概述在对称加密中加密和解密使用的是同一份密钥。所以在非对称加密中加密和解密使用的是不同的密钥。非对称加密中的密钥分为公钥和私钥。公钥顾名思义就是公开的任何人都可以通过公钥进行信息加密但是只有用户私钥的人才能完成信息解密。非对称加密带来了一个好处避免了对称式加密需要传输和保存同一份密钥的痛苦。现在最流行的非对称加密算法就是RSA加密算法具体是怎么做的呢我们继续往下看。8.2 RSA加密过程百科是这么解释的RSA加密算法是一种非对称加密算法在公开密钥加密和电子商业中被广泛使用。RSA是由罗纳德·李维斯特Ron Rivest、阿迪·萨莫尔Adi Shamir和伦纳德·阿德曼Leonard Adleman在1977年一起提出的。当时他们三人都在麻省理工学院工作。RSA 就是他们三人姓氏开头字母拼在一起组成的。▲ RSA算法的作者合影照片拍摄于1978年前面我们讲了如何通过钟算和幂函数建立不可逆计算机可以通过穷举法计算出私钥实际场景中就算是超级计算机也要计算几万亿年之久的共享密钥。由于小红是小明的女朋友小明天天在小红面前给她讲RSA加密算法的原理所以小红也知道怎么得出自己的公钥和私钥。接下来我们一起跟着小红的脚步看看RSA加密的公钥和私钥是怎么计算出来的1第一步小红选择了两个很大的质数p和q这里为了便于计算选择2和11;2第二步计算p和q的乘积np*q2*11223第三部计算n的欧拉函数φ(n)(p-1)*(q-1)104第四步选择一个小于φ(n)且与φ(n)互质的整数e{1,3,7,9}这里选择e75第五步计算e对于φ(n)的模反元素ed mode φ(n) 1dd3。到这里小红就得到了他自己的公钥(n,e)和私钥(n,d)。其中n就是钟大小e和d就是幂函数的幂。接下来就通过计算出来的公钥和私钥进行数据的加解密。还是小明、小红和小偷三个人小红对大家说我的公钥是22,7小明知道了小红的公钥后想讲自己的信息“14”告诉小红于是就用小红公开的公钥进行加密。具体步骤如下1第一步小明根据要加密的信息14进行计算得到加密后的信息20然后将20告诉小红和小偷2第二步小红有自己的私钥将加密信息20进行解密得到了小明想传递给小红的信息。而小偷呢知道22,7,20但是不知道小红的密钥22,3无法解密出正确的信息。RSA加密算法在数字签名中也发挥着巨大的作用假设小偷可以假冒小红说小红的公钥是22,9而小明不知道是小偷假扮的按照小偷的公钥加密后结果被小偷解密了。数字签名的作用就是防止信息被篡改小红说她的公钥是22,7的同时使用私钥给这段信息通常使用MD5值计算签名加上签名小明得到公钥22,7和签名13小明拿到签名后利用公钥计算出信息是否被篡改。9、加密的实际作用本文使用的很小的数来进行加密原理的讲解为了是读者可以方便进行计算。在实际使用中n,e都是特别大的数其中n的长度都在768以上1024长度被认为是基本安全的。123018668453011775513049495838496272077285356959533479219732245215172640050726365751874520219978646938995647494277406384592519255732630345373154826850791702612214291346167042921431160222124047927473779408066535141959745985690214341333478071698956898786044169848212690817704794983713768568912431388982883793878002287614711652531743087737814467999489×3674604366679959042824463379962795263227915816434308764267603228381573966651127923337341714339681027009279873630891710、写在最后或许看到这里大家心里还有许多疑惑1为什么小明和小红建立共享密钥时通过几次幂运算和钟算就能得到一样的共享密钥2为什么RSA加密算法要用两个质数3为什么通过公钥加密的信息可以通过私钥解开加密算法的背后是一道道迷人的数学难题。而RSA加密算法之所以被广泛运用是因为一个名为整数分解的古老数学问题你可以轻易找到两个很大的质数相乘得到一个结果n但是要将这个结果n分解回两个质数就变得极其困难。尽管这个所谓的“整数分解”问题被研究了数个世纪还没人能找到一个足够高效的通用方法解决它并对标准RSA钟大小造成危害。数学史中充满了未解决的问题尽管这些迷人的问题缺乏任何实际应用却单靠其美学特质就吸引了数学家进行深入探究。令人颇感惊讶的是许多这类迷人但显然无用的问题后来都有了很大的实用价值这一价值只有在问题被研究数个世纪后才得以破解。整数分解这一问题由来已久。对其最早的严肃研究似乎是在17世纪由数学家费马Fermat和梅森Mersenne进行的。欧拉Euler和高斯Gauss两位数学“泰斗”也在接下来的世纪里对这一问题做出了贡献。但直到公钥加密于20世纪70年代被发明分解大数字的困难才成为一个实际应用的关键。11、本文小结最后总结一下。首先我们通过一个诈骗短信的例子引出了加密的原理就是信息密钥密钥就是对信息进行加解密的一串数字。然后通过颜料混合把戏形象的演示了如何建立共享密钥。在使用乘法建立共享密钥的过程中学习了钟算和幂运算接着我们了解了RSA加密算法的过程通过两个质数生成公钥和私钥。最后我们根据公钥进行信息加密再通过私钥完成信息解密。12、参考资料[1] 探讨组合加密算法在IM中的应用[2] 一文读懂常用加解密算法与网络通讯安全[3] 非对称加密技术的原理与应用实践[4] 你知道HTTPS用的是对称加密还是非对称加密[5] IM聊天系统安全手段之通信连接层加密技术[6] IM聊天系统安全手段之传输内容端到端加密技术[7] 信创必学一文读懂什么是国密算法的[8] 传输层安全协议SSL/TLS的Java平台实现简介和Demo演示[9] 理论联系实际一套典型的IM通信协议设计详解含安全层设计[10] 微信新一代通信安全解决方案基于TLS1.3的MMTLS详解[11] 来自阿里OpenIM打造安全可靠即时通讯服务的技术实践分享[12] 简述实时音视频聊天中端到端加密E2EE的工作原理[13] 移动端安全通信的利器——端到端加密E2EE技术详解[14] 通俗易懂一篇掌握即时通讯的消息传输安全原理[15] 一分钟理解 HTTPS 到底解决了什么问题[16] 一篇读懂HTTPS加密原理、安全逻辑、数字证书等[17] 基于Netty的IM聊天加密技术学习一文理清常见的加密概念、术语等[18] 手把手教你为基于Netty的IM生成自签名SSL/TLS证书[19] 即时通讯初学者必知必会的20个网络编程和通信安全知识点[20] 零基础IM开发入门(五)什么是IM系统的端到端加密[21] 微信团队分享来看看微信十年前的IM消息收发架构你做到了吗[22] 零基础IM开发入门(一)什么是IM系统[23] 一套亿级用户的IM架构技术干货(上篇)整体架构、服务拆分等[24] 转转平台IM系统架构设计与实践(一)整体架构设计[25] 一套分布式IM即时通讯系统的技术选型和架构设计即时通讯技术学习- 移动端IM开发入门文章《新手入门一篇就够从零开发移动端IM》- 开源IM框架源码https://github.com/JackJiang2011/MobileIMSDK备用地址点此本文已同步发布于http://www.52im.net/thread-4899-1-1.html

相关文章:

即时通讯安全篇(十六):对称加密 vs 非对称加密?一文搞懂

本文由vivo 互联网服务器团队Deng Qian分享,有排版和内容优化。 1、引言 在了解加密原理前,我们来看看这样一个故事: 小红和小明是情侣,一天,小红给小明发短信说:“亲爱的,我银行卡上没有钱了…...

如何快速入门Node.js C++插件开发:node-addon-examples实战教程

如何快速入门Node.js C插件开发:node-addon-examples实战教程 【免费下载链接】node-addon-examples Node.js C addon examples from http://nodejs.org/docs/latest/api/addons.html 项目地址: https://gitcode.com/gh_mirrors/no/node-addon-examples node…...

忍者像素绘卷:天界画坊Anaconda虚拟环境配置与依赖管理

忍者像素绘卷:天界画坊Anaconda虚拟环境配置与依赖管理 1. 为什么需要独立环境 在开始忍者像素绘卷的开发或训练前,创建一个独立的Python环境是至关重要的。想象一下,如果你把各种颜料都混在一个调色盘里,下次使用时颜色就会变得…...

GLM-4-9B-Chat-1M多场景:法律、医疗、教育、电商四大行业落地实践汇总

GLM-4-9B-Chat-1M多场景:法律、医疗、教育、电商四大行业落地实践汇总 1. 引言:当大模型遇上超长文本 想象一下,你是一位律师,需要分析一份长达500页的合同文档;或者是一位医生,要快速理解病人的完整病历…...

SAP数据查询终极武器盘点:从SE11到SE16H,哪个T-code查表最快最省事?

SAP数据查询工具深度评测:从基础表结构到高级分析的效率革命 在SAP系统的日常运维和开发工作中,数据查询是最基础却最频繁的操作。面对海量的业务数据表,选择正确的查询工具往往能节省数小时的低效摸索。本文将深入剖析SE11、SE15、SE16系列及…...

如何用GBFR Logs实现数据驱动的战斗效率提升:从输出断层到团队优化的4个突破

如何用GBFR Logs实现数据驱动的战斗效率提升:从输出断层到团队优化的4个突破 【免费下载链接】gbfr-logs GBFR Logs lets you track damage statistics with a nice overlay DPS meter for Granblue Fantasy: Relink. 项目地址: https://gitcode.com/gh_mirrors/g…...

CLIP-GmP-ViT-L-14模型API压力测试:使用JMeter进行性能评估

CLIP-GmP-ViT-L-14模型API压力测试:使用JMeter进行性能评估 最近在项目里用上了CLIP-GmP-ViT-L-14模型,它处理图文匹配的能力确实不错。但模型部署上线后,我心里一直有个疑问:这API到底能扛住多少并发请求?响应时间稳…...

FastGPT与OneAPI的完美结合:如何高效管理多模型接口

FastGPT与OneAPI的深度整合:构建企业级多模型管理平台 在AI技术快速迭代的今天,企业开发者面临着一个核心挑战:如何高效管理和调用多个大语言模型API。不同厂商的接口规范、计费方式和性能表现各异,这给实际业务集成带来了巨大复杂…...

3款全能工具实现番茄小说跨平台离线阅读解决方案

3款全能工具实现番茄小说跨平台离线阅读解决方案 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 番茄小说下载器是一款基于Rust开发的开源工具,旨在为用户提供无网…...

MCP是AI的“手”,Skills是AI的“脑回路”——一个都不能少

写在前面 昨天我刚刚写完了MCP相关的博客,身边就有朋友问我:“MCP和最近大火的Agent Skills到底什么关系?是不是以后只用Skills就够了?”说实话,这个问题我也纠结过一阵。2026年初,Skills几乎刷屏了整个AI开…...

AD域故障排查全指南:从基础到高级技巧

问题描述与现象分析异常现象列举:如无法加入域、登录时提示“网络路径不存在”、组策略无法同步等常见错误代码或日志片段(如NETLOGON事件ID 5722、DNS相关错误)基础网络连通性检查确认客户端与域控制器之间的物理网络连接正常(pi…...

终极Illustrator脚本自动化工具集:25个免费神器让你的设计效率飙升300%

终极Illustrator脚本自动化工具集:25个免费神器让你的设计效率飙升300% 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 还在为Illustrator中重复繁琐的操作而烦恼吗&…...

3大技术突破:Counterfeit-V3.0如何重构AI绘画工作流

3大技术突破:Counterfeit-V3.0如何重构AI绘画工作流 【免费下载链接】Counterfeit-V3.0 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/Counterfeit-V3.0 核心价值:重新定义AI绘画的创作边界 在AI绘画领域,创作者常常面临…...

模拟解析:宽度数组 `[1,2,1]`,10个条目的 XRef 流

文章目录 模拟解析:宽度数组 [1,2,1],10个条目的 XRef 流一、设定场景二、解析代码核心部分(与之前相同)三、逐条解析(模拟 CPU 执行)辅助函数 GetVarInt 回顾条目0 (j0, objnum0)条目1 (j1, objnum1)条目2…...

[macOS逆向工程]:百度网盘客户端速度限制解除的实现原理与技术方案

[macOS逆向工程]:百度网盘客户端速度限制解除的实现原理与技术方案 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 问题剖析:百…...

STC单片机看门狗避坑指南:从原理到调试的5个关键步骤

STC单片机看门狗避坑指南:从原理到调试的5个关键步骤 在嵌入式系统开发中,稳定性是衡量产品质量的重要指标。作为51单片机开发者,我们常常会遇到程序跑飞、死循环等异常情况,这时内部看门狗(WDT)就成了最后…...

如何轻松地使用隔空投送将iPhone内容传输到Android

过去,安卓和苹果用户在设备间共享文件一直很麻烦。然而,如今迎来了一个重大转折点——我们可以使用 AirDrop 将 iPhone 文件传输到安卓设备。尽管这项功能已经发布几天了,但很多人仍然不知道如何从 iPhone 向安卓设备发送 AirDrop 文件。现在…...

docker-enter 脚本完全解析:简化 nsenter 使用的终极工具

docker-enter 脚本完全解析:简化 nsenter 使用的终极工具 【免费下载链接】nsenter 项目地址: https://gitcode.com/gh_mirrors/ns/nsenter 在 Docker 容器管理的早期阶段,nsenter 是一个极其重要的工具,它允许用户直接进入容器的命名…...

告别手动分析!用Frida-Trace一键追踪Android App的JNI函数调用(附实战APK)

高效追踪JNI函数:Frida-Trace在Android逆向工程中的实战应用 逆向工程师和安全研究员们常常需要面对一个现实问题:如何在有限的时间内快速理解一个未知Android应用的Native层行为?传统方法往往需要手动分析so文件、设置断点、逐行跟踪&#…...

如何实现微信聊天记录的永久保存与智能分析

如何实现微信聊天记录的永久保存与智能分析 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg 在数字时代&…...

如何通过可视化学习快速掌握RISC-V?专业仿真平台全解析

如何通过可视化学习快速掌握RISC-V?专业仿真平台全解析 【免费下载链接】Ripes A graphical processor simulator and assembly editor for the RISC-V ISA 项目地址: https://gitcode.com/gh_mirrors/ri/Ripes RISC-V学习工具的选择直接影响掌握效率&#x…...

华为AP有线口除了供电还能干啥?解锁‘瘦AP’变身小型接入交换机的高阶玩法

华为AP有线口的隐藏技能:从无线覆盖到多功能接入的华丽转身 当你走进一家精品酒店的房间,墙面上那个看似普通的华为面板AP,可能正在默默为房间里的智能电视、迷你吧台终端和书桌上的台式机提供网络接入——而这一切都通过那根被大多数人忽略的…...

主线程没卡但ANR了?揭秘Android SharedPreferences的ANR陷阱

主线程没卡但ANR了?揭秘Android SharedPreferences的ANR陷阱 在Android开发中,ANR(Application Not Responding)问题一直是开发者头疼的难题。特别是当应用主线程看似运行正常,却突然弹出ANR对话框时,这种&…...

别再乱用List了!Unity中Queue的5个高效应用场景对比

Unity中Queue的5个高效应用场景:性能对比与实战指南 在Unity开发中,数据结构的选择往往决定了游戏性能的上限。很多开发者习惯性地使用List来解决所有问题,却忽视了Queue在特定场景下的性能优势。本文将深入分析Queue的底层原理,并…...

Arduino-Pico蓝牙开发指南:经典蓝牙与BLE HID主从模式完全解析

Arduino-Pico蓝牙开发指南:经典蓝牙与BLE HID主从模式完全解析 【免费下载链接】arduino-pico Raspberry Pi Pico Arduino core, for all RP2040 and RP2350 boards 项目地址: https://gitcode.com/gh_mirrors/ar/arduino-pico 想要在Raspberry Pi Pico上实现…...

告别系统臃肿:用Win11Debloat实现Windows性能飞跃的全方位指南

告别系统臃肿:用Win11Debloat实现Windows性能飞跃的全方位指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutte…...

C++模板进阶:从特化到元编程

C模板进阶详解一、模板特化全特化template <> class Vector<bool> {// 针对bool类型的特化实现 };偏特化template <typename T> class Vector<T*> {// 针对指针类型的部分特化 };二、可变参数模板template <typename... Args> void print(Args..…...

显式启用-u_printf_float和-u_scanf_float前后的代码尺寸占用实验

本文中使用的嵌入式编译器基于arm-none-eabi-gcc&#xff0c;构建文件基于Makefile。 main.c不编写任何代码&#xff0c;保证实验的其他变量统一。源文件main.c&#xff1a; 代码模式固定为Debug&#xff0c;优化等级固定为 -Og &#xff1a; syscalls.c 系统调用库函数文件参…...

DownKyi视频管理进阶指南:从新手到专家的实践路径

DownKyi视频管理进阶指南&#xff1a;从新手到专家的实践路径 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff0…...

面试真题集(五):高级特性与系统优化

引言 本专题聚焦原子操作、动态并行、纹理内存、协作组、CUDA Graph等高级特性,以及系统级优化思维,20道真题助你冲击大厂高薪岗位。 一、选择题(6题) 1.1 关于CUDA原子操作,下列说法错误的是?(⭐⭐) A. 原子操作可以在全局内存和共享内存上执行 B. atomicAdd 是最常…...