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

一书读懂Python全栈安全,剑指网络空间安全

写在前面

通过阅读《Python全栈安全/网络空间安全丛书》,您将能够全面而深入地理解Python全栈安全的广阔领域,从基础概念到高级应用无一遗漏。本书不仅详细解析了Python在网络安全、后端开发、数据分析及自动化等全栈领域的安全实践,还紧密贴合网络空间安全的最新趋势与挑战,确保您能掌握保护网络系统、预防黑客攻击、实施安全策略等关键技能。这不仅是一次知识的旅行,更是为您职业生涯保驾护航,助您剑指网络空间安全领域的巅峰,成为守护数字世界的坚强盾牌。

推荐图书

《Python全栈安全/网络空间安全丛书》([美]丹尼斯·伯恩)【摘要 书评 试读】- 京东图书

编辑推荐

安全是一个全栈性问题,包括用户接口、API、Web服务器、网络基础设施等。通过掌握强大的库、框架以及Python生态系统中的工具,你可自上而下地保护自己的系统。本书列举大量实例,插图清晰,代码丰富,准确地告诉你如何保护基于Python的Web应用程序。

《Python全栈安全》由经验丰富的安全专家Dennis Byrne撰写,讲解保护Python和基于Django的Web应用程序所需的一切,解释安全术语,揭开算法的神秘面纱。

本书开篇清晰讲解加密基础知识,然后循序渐进地讲述如何实施多层防御、安全的用户身份验证、安全的第三方访问,分析如何保护应用程序免受常见黑客攻击。

内容简介

  • 加密、散列和数字签名。
  • 创建和安装TLS证书。
  • 在Django中实现身份验证、授权、OAuth 2.0和表单验证
  • 防范点击劫持、跨站脚本和SQL注入等攻击

作者简介

Dennis Byrne 是23andMe 架构团队的成员,负责保护1000 多万客户的基因数据和隐私。在23andMe 之前,Dennis 是LinkedIn 的软件工程师。Dennis 是一名健美运动员和GUE 洞穴潜水员。他目前住在硅谷,远离阿拉斯加(他在那里长大并求学)。

目录

第Ⅰ部分 密码学基础

第1章 纵深防御 3

1.1 攻击面 4

1.2 什么是纵深防御 6

1.2.1 安全标准 7

1.2.2 最佳实践 8

1.2.3 安全基本原则 9

1.3 工具 11

1.4 小结 15

第2章 散列 17

2.1 什么是散列函数 17

2.2 原型人物 22

2.3 数据完整性 23

2.4 选择加密散列函数 24

2.4.1 哪些散列函数是安全的 24

2.4.2 哪些散列函数是不安全的 25

2.5 Python中的加密散列 27

2.6 校验和函数 30

2.7 小结 31

第3章 密钥散列 33

3.1 数据身份验证 33

3.1.1 密钥生成 34

3.1.2 什么是密钥散列 37

3.2 HMAC函数 39

3.3 时序攻击 43

3.4 小结 45

第4章 对称加密 47

4.1 什么是加密 47

4.2 cryptography包 50

4.2.1 危险品层 50

4.2.2 配方层 51

4.2.3 密钥轮换 53

4.3 什么是对称加密 54

4.3.1 分组密码 54

4.3.2 流密码 56

4.3.3 加密模式 57

4.4 小结 61

第5章 非对称加密 63

5.1 密钥分发问题 63

5.2 什么是非对称加密 64

5.3 不可否认性 69

5.3.1 数字签名 70

5.3.2 RSA数字签名 71

5.3.3 RSA数字签名验证 72

5.3.4 椭圆曲线数字签名 73

5.4 小结 76

第6章 传输层安全 77

6.1 SSL、TLS和HTTPS 77

6.2 中间人攻击 78

6.3 TLS握手 80

6.3.1 密码套件协商 80

6.3.2 密钥交换 81

6.3.3 服务器身份验证 84

6.4 Django与HTTP 88

6.5 Gunicorn与HTTPS 91

6.5.1 自签名公钥证书 92

6.5.2 Strict-Transport-Security响应头 94

6.5.3 HTTPS重定向 95

6.6 TLS和requests包 96

6.7 TLS和数据库连接 97

6.8 TLS和电子邮件 99

6.8.1 隐式TLS 99

6.8.2 电子邮件客户端身份验证 100

6.8.3 SMTP身份验证凭据 100

6.9 小结 101

第Ⅱ部分 身份验证和授权

第7章 HTTP会话管理 105

7.1 什么是HTTP会话 105

7.2 HTTP cookie 107

7.2.1 Secure指令 108

7.2.2 Domain指令 108

7.2.3 Max-Age 109

7.2.4 浏览器长度的会话 110

7.2.5 以编程方式设置cookie 110

7.3 会话状态持久化 111

7.3.1 会话序列化程序 111

7.3.2 简单的基于缓存的会话 113

7.3.3 基于直写式缓存的会话 116

7.3.4 基于数据库的会话引擎 116

7.3.5 基于文件的会话引擎 117

7.3.6 基于cookie的会话引擎 117

7.4 小结 122

第8章 用户身份验证 123

8.1 用户注册 124

8.1.1 模板 128

8.1.2 Bob注册账户 131

8.2 什么是用户身份验证 132

8.2.1 内置Django视图 133

8.2.2 创建一个Django应用 134

8.2.3 Bob登录和注销 137

8.3 简明要求身份验证 139

8.4 测试身份验证 140

8.5 小结 142

第9章 用户密码管理 143

9.1 密码变更工作流程 143

9.2 密码存储 149

9.2.1 加盐散列 152

9.2.2 密钥派生函数 154

9.3 配置密码散列 158

9.3.1 原生密码散列器 159

9.3.2 自定义密码散列器 160

9.3.3 Argon2密码散列 160

9.3.4 迁移密码散列器 161

9.4 密码重置工作流程 166

9.5 小结 169

第10章 授权 171

10.1 应用程序级授权 172

10.1.1 权限 173

10.1.2 用户和组管理 175

10.2 强制授权 180

10.2.1 低级困难方式 180

10.2.2 高级简单方式 183

10.2.3 条件渲染 185

10.2.4 测试授权 186

10.3 反模式和最佳实践 187

10.4 小结 188

第11章 OAuth 2 189

11.1 给予类型 190

11.2 Bob授权Charlie 195

11.2.1 请求授权 196

11.2.2 给予授权 197

11.2.3 令牌交换 197

11.2.4 访问受保护的资源 198

11.3 Django OAuth Toolkit 200

11.3.1 授权服务器职责 201

11.3.2 资源服务器职责 204

11.4 requests-oauthlib 209

11.5 小结 213

第Ⅲ部分 抵御攻击

第12章 使用操作系统 217

12.1 文件系统级授权 217

12.1.1 请求许可 218

12.1.2 使用临时文件 219

12.1.3 使用文件系统权限 220

12.2 调用外部可执行文件 222

12.2.1 用内部API绕过shell 224

12.2.2 使用subprocess模块 226

12.3 小结 228

第13章 永远不要相信输入 229

13.1 使用Pipenv进行包管理 229

13.2 YAML远程代码执行 232

13.3 XML实体扩展 235

13.3.1 二次爆炸攻击 235

13.3.2 十亿笑攻击 236

13.4 拒绝服务 238

13.5 Host标头攻击 239

13.6 开放重定向攻击 243

13.7 SQL注入 246

13.7.1 原始SQL查询 247

13.7.2 数据库连接查询 248

13.8 小结 249

第14章 跨站脚本攻击 251

14.1 什么是XSS 251

14.1.1 持久型XSS 252

14.1.2 反射型XSS 253

14.1.3 基于DOM的XSS 254

14.2 输入验证 256

14.3 转义输出 263

14.3.1 内置的渲染实用程序 264

14.3.2 HTML属性引用 266

14.4 HTTP响应标头 267

14.4.1 禁用对cookie的JavaScript访问 267

14.4.2 禁用MIME类型嗅探 270

14.4.3 X-XSS-Protection标头 271

14.5 小结 272

第15章 内容安全策略 273

15.1 编写内容安全策略 274

15.1.1 获取指令 276

15.1.2 导航和文档指令 280

15.2 使用django-csp部署策略 281

15.3 使用个性化策略 283

15.4 报告CSP违规 286

15.5 CSP Level 3 288

15.6 小结 289

第16章 跨站请求伪造 291

16.1 什么是请求伪造 291

16.2 会话ID管理 293

16.3 状态管理约定 295

16.4 Referer标头验证 298

16.5 CSRF令牌 301

16.5.1 POST请求 301

16.5.2 其他不安全的请求方法 303

16.6 小结 304

第17章 跨源资源共享 307

17.1 同源策略 307

17.2 简单CORS请求 309

17.3 带django-cors-headers的CORS 311

17.4 CORS预检请求 314

17.4.1 发送预检请求 314

17.4.2 发送预检响应 318

17.5 跨源发送cookie 319

17.6 CORS和CSRF抵御 321

17.7 小结 322

第18章 点击劫持 323

18.1 X-Frame-Options标头 326

18.2 Content-Security-Policy标头 327

18.3 与Mallory同步 329

18.4 小结 330

前言/序言

我使用Python来讲授安全,而不是反过来。换句话说,当阅读《Python全栈安全》时,你将学到比Python更多的安全知识。这有两个原因:首先,安全很复杂,而Python并非如此。其次,编写大量自定义的安全代码不是保护系统的最佳方式;繁重的任务几乎总是应该委托给Python、库或工具。

《Python全栈安全》涵盖初中级安全概念。这些概念用初学者级别的Python代码实现,无论是安全还是Python的资料都非高级水平。

《Python全栈安全》读者对象

《Python全栈安全》中的所有示例都模拟了在现实世界中开发和保护系统的挑战。因此,将代码推送到生产环境的程序员将学到最多的知识。《Python全栈安全》要求读者具备初级Python技能或具有其他主要语言的中级经验。当然,你不一定非要成为一名Web开发人员才能从《Python全栈安全》中学到知识,但对Web的基本了解会让你更容易理解《Python全栈安全》的后半部分。

也许你不构建或维护系统,而是需要测试它们。如果是这样,你会对要测试的内容有更深入的理解,但我甚至不会尝试教你如何测试。如你所知,这是两套不同的技能。

与一些关于安全的书籍不同,这里的示例都非从攻击者的角度分析问题。因此,这帮人学到的知识最少。如果说对他们有什么安慰,那就是在个别章节里,他们可能真会学到有用的内容。

《Python全栈安全》的编排方式

《Python全栈安全》分为3部分。

第Ⅰ部分“密码学基础”用几个密码学概念奠定基础。这些概念在第Ⅱ部分和第Ⅲ部分中会反复出现。

  • 第1章简要介绍安全标准、最佳实践和基本原则,进而设定预期。
  • 第2章直接介绍使用散列和数据完整性的密码学。在此过程中,介绍在《Python全栈安全》中出现的一小群人物。
  • 第3章介绍使用密钥生成和密钥散列进行数据身份验证。
  • 第4章涵盖任何安全书籍的两个必备主题:对称加密和机密性。
  • 第5章涵盖非对称加密、数字签名和不可否认性。
  • 第6章结合前面几章中的许多主要思想,形成了泛在网络协议,即传输层安全(Transport Layer Security)。

第Ⅱ部分“身份验证和授权”包含《Python全栈安全》中最具商业价值的内容,特点是提供大量与安全相关的常见用户工作流程的实际操作说明。

  • 第7章介绍HTTP会话管理和cookie,为后续章节中讨论的许多攻击做好准备。
  • 第8章是关于身份的内容,介绍用户注册和用户身份验证的工作流程。
  • 第9章介绍密码管理,也是最有趣的一章。内容在很大程度上建立在前几章的基础之上。
  • 第10章通过另一个关于权限和组的工作流程从身份验证过渡到授权。
  • 第11章以OAuth作为第Ⅱ部分的结束。OAuth是一种行业标准授权协议,旨在共享受保护的资源。

第Ⅲ部分“抵御攻击”可以说是《Python全栈安全》中最具敌意的部分,但更容易消化,也更令人兴奋。

  • 第12章深入研究操作系统,主题包括文件系统、外部可执行文件和shell。
  • 第13章教你如何使用各种输入验证策略防御大量的注入攻击。
  • 第14章完全集中在最臭名昭著的注入攻击上,即跨站脚本。你可能已经预见到这一点。
  • 第15章介绍内容安全策略。在某些方面,这可以被视为关于跨站脚本的附加章节。
  • 第16章涉及跨站请求伪造。该章将前几章中的几个主题与REST最佳实践相结合。
  • 第17章解释同源策略,以及为什么我们会不时地使用跨源资源共享来放宽这一策略。
  • 第18章以关于点击劫持的内容和一些使你的技能保持最新的资源结束《Python全栈安全》的讨论。

推荐理由

在当今这个数据为王、网络如织的时代,确保信息安全已成为所有行业的生命线。《Python全栈安全/网络空间安全丛书》犹如一座璀璨的灯塔,引领着开发者和安全专家们穿越复杂的安全迷雾,直抵防护技术的核心。这本书不仅仅是代码和技术的堆砌,它是一场思维的盛宴,一次深度与广度并重的安全之旅。

该系列丛书独树一帜地结合了Python这一强大而灵活的编程语言,与全栈安全及网络空间安全的深度实践,为读者构建了一个从基础到高级、理论到实战的全方位知识体系。无论你是想要入门安全领域的新人,还是希望深化技能的安全老手,这套书都能提供不可多得的宝贵资源。

书中不仅详细解析了Python在渗透测试、网络安全防御、加密解密、漏洞扫描与利用等关键领域的应用实例,还深入探讨了如何构建安全的Web应用程序、网络协议分析以及如何应对日益复杂的网络攻击策略。通过生动的案例分析、实战演练和最新安全工具的介绍,作者团队成功地将枯燥的安全理论转化为引人入胜的学习体验。

尤为值得一提的是,本书不仅聚焦技术层面,还重视培养读者的安全思维和合规意识,强调在快速变化的网络环境中持续学习和适应的重要性。这使得读者不仅能掌握解决当前问题的技能,更能具备预见和抵御未来安全威胁的能力。

总之,《Python全栈安全/网络空间安全丛书》是每一位致力于保护数字世界安全人士的必备宝典。它不仅能够极大地提升你的技术实力,更将激发你对安全领域无限探索的热情。在这条守护信息疆域的征途上,让这本书成为你最坚实的伙伴,共同筑起坚不可摧的数字防线。

写在最后

我是一只有趣的兔子,感谢你的喜欢!

相关文章:

一书读懂Python全栈安全,剑指网络空间安全

写在前面 通过阅读《Python全栈安全/网络空间安全丛书》,您将能够全面而深入地理解Python全栈安全的广阔领域,从基础概念到高级应用无一遗漏。本书不仅详细解析了Python在网络安全、后端开发、数据分析及自动化等全栈领域的安全实践,还紧密贴…...

原生js实现拖拽改变元素顺序

代码展示如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title>…...

以果决其行,只为文化的传承

从他们每一个人的身上&#xff0c;我们看到传神的东西&#xff0c;就是他们都能用结果&#xff0c;去指引自己前进的方向&#xff0c;这正是我要解读倪海厦老师的原因&#xff0c;看倪海厦2012年已经去世&#xff0c;到现在已经十几年时间了&#xff0c;但是我们看现在自学中医…...

Flutter 中的 SizedOverflowBox 小部件:全面指南

Flutter 中的 SizedOverflowBox 小部件&#xff1a;全面指南 在 Flutter 的布局世界中&#xff0c;SizedOverflowBox 是一个相对独特的小部件&#xff0c;它允许子组件溢出其父组件的界限&#xff0c;同时保持父组件的尺寸不变。这在某些特定的布局场景下非常有用&#xff0c;…...

图像视频智能抹除修复解决方案,适应性强,应用广泛

行车录制、现场拍摄等过程中&#xff0c;往往会出现一些难以避免的瑕疵——遮挡物、无关人员、甚至是意外的光线变化&#xff0c;这些都可能影响到视频与图像的质量&#xff0c;降低其观赏性和专业性。 美摄科技&#xff0c;作为行业领先的图像视频智能处理专家&#xff0c;深…...

20240521(代码整洁和测试入门学习)

测试: 1.测试工程师、测试工具开发工程师、自动化测试工程师。 python&#xff1a; 1、发展背景和优势&#xff1b; 2、开始多需的工具 interpreter(解释器) refactor(重构) 2、变量和注释的基础语法 3、输入输出 i 1 for i in range(1, 11): print(i, end ) 不换行打印…...

git中忽略文件的配置

git中忽略文件的配置 一、在项目根目录下创建.gitignore文件二、配置规则如果在配置之前已经提交过文件了&#xff0c;要删除提交过的&#xff0c;如何修改&#xff0c;参考下面的 一、在项目根目录下创建.gitignore文件 .DS_Store node_modules/ /dist# local env files .env…...

如何进行前端职业规划

目录 找准自身定位 未来发展方向 扬长避短很有效 你的出处并不能代表什么 将目标放长放远 职业发展中面临的选择 全栈 or 纯前端? ToB or ToC 赚钱 or 个人成长? 分析每个阶段的需求 为什么不可以一边赚钱一边做喜欢的事情呢 我们还没离开校园的时候,就已经知道要…...

GD32F103系列单片机片上FLASH和ARM介绍

本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发 后续项目主要在下面该专栏中发布&#xff1a; 手把手教你嵌入式国产化_不及你的温柔的博客-CSDN博客 感兴趣的点个关注收藏一下吧! 电机驱动开发可以跳转&#xff1a; 手把手教你嵌入式国产化-实战项目-无刷电机驱动&am…...

Ansible自动化运维中的Setup收集模块应用详解

作者主页&#xff1a;点击&#xff01; Ansible专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年5月22日13点14分 &#x1f4af;趣站推荐&#x1f4af; 前些天发现了一个巨牛的&#x1f916;人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xf…...

再次学习History.scrollRestoration

再次学习History.scrollRestoration 之前在react.dev的源代码中了解到了这个HIstory的属性&#xff0c;当时写了一篇笔记来记录我对它的理解&#xff0c;现在看来还是一知半解。所以今天打算重新学习一下这个属性&#xff0c;主要从属性以及所属对象的介绍、使用方法&#xff0…...

python PyQt5 数字时钟程序

效果图&#xff1a; 概述 本文档将指导您如何使用Python的PyQt5库创建一个简单的时钟程序。该程序将显示当前时间&#xff0c;并具有以下特性&#xff1a; 始终在最前台显示。窗口可拖动。鼠标右键点击窗口可弹出退出菜单。时间标签具有红色渐变效果。窗口初始化时出现在屏幕…...

骨传导耳机哪个品牌值得入手?精选五大不容错过的王者品牌推荐!

尽管骨传导耳机作为新型蓝牙耳机问世不久&#xff0c;但凭借其独特的传音方式和舒适的佩戴体验&#xff0c;已经迅速在市场上崭露头角&#xff0c;赢得了广大音乐爱好者和运动达人的青睐。然而&#xff0c;随着骨传导耳机热度增高&#xff0c;市场上开始出现一些品质参差不齐的…...

Vue.js|项目安装

根据Vue脚手架创建出来的项目目录&#xff1a; 运行项目&#xff1a; 控制台中输入下面的命令&#xff1a; npm run serve 修改vue项目运行端口&#xff1a; 前往vue.config.js中添加下面的代码&#xff1a; devServer: {port: 7000} 接着前往控制台输入Ctrlc关闭项目&…...

多线程新手村4--定时器

定时器是日常开发中很常见的组件&#xff0c;定时器大家可能不知道是干什么的&#xff0c;但是定时炸弹肯定都听过&#xff0c;定个时间&#xff0c;过一段时间后bomb&#xff01;&#xff01;&#xff01;爆炸 定时器的逻辑和这个一样&#xff0c;约定一个时间&#xff0c;这…...

如何衡量安全阀检测的价格与价值?一文揭晓答案

安全阀作为工业设备中的重要组件&#xff0c;其性能的稳定性和可靠性直接影响着整个系统的安全运行。因此&#xff0c;对安全阀进行定期检测和维护显得尤为重要。 那么&#xff0c;安全阀检测一个需要多少钱呢&#xff1f; 在这篇文章中&#xff0c;佰德将从检测费用构成、市…...

Sectigo证书介绍以及申请流程

Sectigo (原Comodo CA)是全球SSL证书市场占有率最高的CA公司&#xff0c;目前将近40%的SSL证书用户选择了Sectigo。由于其产品安全&#xff0c;价格低&#xff0c;受到大量站长的信任和欢迎。Sectigo旗下的SSL证书品牌包括Sectigo, Positive SSL, Sectigo Enterprise等。 品牌…...

网络安全-钓鱼篇-利用cs进行钓鱼

一、环境 自行搭建&#xff0c;kill&#xff0c;Windows10&#xff0c;cs 二、原理 如图所示 三、钓鱼演示 首先第一步&#xff1a;打开System Profiler-分析器功能 选择克隆www.baidu.com页面做钓鱼 之后我们通过包装域名&#xff0c;各种手段让攻击对象访问&#xff1a;h…...

机器学习-6-对随机梯度下降算法SGD的理解

参考一文带您了解随机梯度下降(Stochastic Gradient Descent):python代码示例 参考sklearn-SGDClassifier 1 梯度下降 在机器学习领域,梯度下降扮演着至关重要的角色。梯度下降是一种优化算法,通过迭代沿着由梯度定义的最陡下降方向,以最小化函数。类似于图中的场景,可以…...

windows 11 精简版下载

Optimum 11 24H2 家庭版和专业版版本在性能、响应能力和资源使用方面相同&#xff0c;因此请下载并安装适合您笔记本电脑的正确版本或在您的 PC 上获得终极 Windows 11 24H2 体验的许可证&#xff01; • 如果您熟悉我们的 22H2 和 23H2 Optimum 11 版本&#xff0c;此版本将…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库&#xff0c;提供了高效、安全的文本格式化功能&#xff0c;是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...

ThreadLocal 源码

ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物&#xff0c;因为每个访问一个线程局部变量的线程&#xff08;通过其 get 或 set 方法&#xff09;都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段&#xff0c;这些类希望将…...