为什么GPU如此强大,CPU依然不可或缺?
为什么GPU如此强大,CPU依然不可或缺?最近,一段2009年的老视频在推特上重新火了起来,旨在向观众直观展示CPU与GPU之间的差异。
视频的内容可以在这里观看,时长90秒:视频链接
视频的核心思想是:CPU和GPU进行了一场绘画对决。它们连接到一个喷射彩弹的机器上,CPU花费了30秒钟画出一个简单的笑脸。而GPU则在瞬间画出了蒙娜丽莎。
从这个视频中得出的一个结论是:CPU很慢,而GPU很快。虽然这有一定的道理,但实际上,背后还有更多的细节和复杂性。
TFLOPS:衡量处理器性能的标准当我们说GPU比CPU强大时,通常指的是TFLOPS(每秒万亿次浮点运算)的概念。TFLOPS用来衡量一个处理器每秒能进行多少次数学运算。例如,Nvidia的A100 GPU可以执行9.7 TFLOPS(即每秒97亿次操作),而Intel最近的24核处理器只能达到0.33 TFLOPS。这意味着,即使是中端GPU,其性能也至少是最强CPU的30倍。
那么,为什么我MacBook里的Apple M3芯片既包含了CPU又包含了GPU呢?难道我们不能完全抛弃这些”缓慢”的CPU吗?
程序类型的差异我们可以将 ...
软件版本命名新趋势:“自豪”与“羞愧”版本
软件版本命名新趋势:“自豪”与“羞愧”版本在软件开发中,版本命名至关重要,它帮助开发者和用户了解软件的更新历史和功能变化。传统的版本号命名方式通常包括主版本号、次版本号和修订号,分别对应不同级别的更新。然而,这种方法有时并不能清晰地表达版本更新的实际意义,尤其是在边界定义上。为此,Nikitonsky 提出了一种新的版本命名模式:“自豪”与“羞愧”版本控制,这种方法试图通过情感的维度来更直观地反映软件版本的变化。
1. 传统版本命名的局限性在传统版本控制系统中,虽然结构清晰,但很多时候开发团队面临如何恰当地升级版本号的困境。例如,一个小修复是否足以触发次版本号的升级?或者一个新增功能是否重要到必须提升主版本号?这些问题往往难以有一个统一的标准,导致版本号的更新有时显得随意或不够透明。
2. “自豪”与“羞愧”版本控制模式的详解根据Nikitonsky的提议,引入“自豪”与“羞愧”的概念,为版本控制增加了情感层面的判断:
自豪版本(Proud version):当开发团队对某个版本特别满意,认为它在功能或性能上有显著提升时,会提升主版本号。
默认版本(Default version): ...
网页精准跳转技巧:通过链接直接定位到指定内容
网页精准跳转技巧:通过链接直接定位到指定内容在之前,我们只能在页面的某个部分有ID时,才能链接到该部分。我们只需将ID附加到URL后面,就可以链接到该部分。如果我们想链接到页面的特定部分,必须为该部分设置锚点。这种方式一直持续到“文本片段”功能的出现!
什么是文本片段?文本片段是现代Web平台中的一个强大功能,它允许我们精确地链接到网页中的特定文本,而无需添加锚点!该功能由::target-text CSS伪元素配合使用,后者提供了一种样式化高亮文本的方式。
文本片段通过在URL末尾附加特殊语法来工作;就像我们以前在哈希符号(#)后附加ID一样。浏览器会解析URL的这一部分,搜索页面中指定的文本,并在浏览器支持文本片段的情况下,滚动并高亮显示该文本。如果用户尝试通过按Tab键导航文档,焦点将移到文本片段后面的下一个可聚焦元素。
我们如何使用它?以下是文本片段URL的基本语法:
1https://example.com/page.html#:~:text=[prefix-,]textStart[,textEnd][,-suffix]
在哈希符号后,我们添加这个特殊语法 :~:(也称为片 ...
深入理解并发、并行与 JavaScript
直到现在,我一直不太清楚“并发”和“并行”究竟有何不同,因为很多人经常把这两个概念混用。直到我阅读了阮一峰的博客,我才意识到原来它们并不是完全相同的概念。
这让我想更深入地了解与“并发”和“并行”相关的知识,尤其是和我熟悉的编程语言——JavaScript——相关的内容。所以,这篇文章基本上是我在学习过程中总结的一些笔记。
顺序执行、并发和并行在我们的日常生活中,任务的执行方式有时是顺序的,有时是并发的,也有时是并行的。这些概念同样适用于计算机科学。
顺序执行指的是任务一个接一个地完成,没有任何重叠。举个例子,假设你正在做饭。你先洗菜,做完后再开始炒菜,完全按照顺序进行。这种方式的问题在于,有时一个任务的进展可能会被阻塞,导致效率低下。比如,当你在等待菜煮熟时,如果不做其他事情,就会浪费很多时间。因此,在某些情况下,进行多任务处理可以提高效率。
并发和并行是实现多任务的一种方式,但它们之间有一些细微但重要的区别。
并发就像是通过不断切换多个任务来实现多任务处理,也就是“交替执行”。举个例子,假设你正在做饭,先把菜洗好放在一边,再开始炒菜。当菜炒的过程中,你去检查一下炖汤的火候,再回来翻 ...
计算机编程的哲学:从古代哲学到现代实践
计算机编程的哲学:从古代哲学到现代实践计算机科学和编程不仅仅是技术问题,它们同样包含着深刻的哲学思考。许多古代哲学的智慧,今天依然能为我们提供宝贵的启示。本文将探索几条计算机编程中的哲学原则,并以古代哲人的思想为基础,阐述如何将这些哲理应用到现代软件开发中。
1. 亚里士多德的本质与附属性质亚里士多德的逻辑学原理中提到,事物有“本质性质”和“附属性质”的区别。例如,单身汉的本质性质是“未婚”,而“棕色眼睛”则是附属性质。我们无法通过附属性质推导出事物的本质。例如,不能由“所有单身汉都有棕色眼睛”推断出“所有单身汉都未婚”,因为眼睛的颜色与婚姻状况无关。
这一思想对计算机编程的启示是:在解决问题时,我们应当区分问题的“本质复杂性”和“附属复杂性”。本质复杂性是指问题的核心难点,例如在软件开发中,如何处理复杂的数据结构、算法优化等。而附属复杂性则是指那些与问题解决没有直接关系的、但不得不处理的事项,例如数据库的访问权限管理、跨平台的兼容性问题等。
例如,考虑一个简单的需求——从网页抓取数据并将其存入数据库。虽然这一问题在本质上相对简单,但在实际开发中,常常会被附属复杂性所拖累:可能需要连接 ...
DRY(Don't Repeat Yourself)原则在软件开发中的应用与实践
DRY(Don’t Repeat Yourself)原则在软件开发中的应用与实践在软件开发中,避免重复是一项至关重要的原则。Andrew Hunt 和 David Thomas 在《The Pragmatic Programmer》一书中提出的 DRY(Don’t Repeat Yourself) 原则,意在避免在不同地方编写重复的代码或信息。这三句话虽然简单,却深刻影响了软件开发的方式。Glenn Vanderburg 曾指出,“重复是软件开发中最大的阻力”。而 DRY 的核心目标是消除这种重复,减少冗余,提升代码质量和可维护性。
DRY 背景介绍在软件开发的早期,重复的代码和冗余的资源分散在项目的各个方面。每当我们需要修改某个功能时,我们不得不在多个地方做相同的修改。这种做法不仅浪费了时间,也带来了出错的风险,尤其是在大型项目中,频繁的重复操作可能会导致难以追踪的 bug 或更新失效。
DRY原则 的核心思想就是:尽量将信息源集中管理,避免在多个地方重复相同的内容。通过重构和抽象,我们可以将信息和逻辑提取到统一的地方,减少冗余,提高代码的可维护性和可扩展性。
三个典型的 DRY 场 ...
常见压缩格式与工具使用
在日常的操作系统中,压缩文件格式几乎无处不在,特别是在Linux环境下,压缩和解压缩文件的操作不仅是常见的日常工作,还是管理系统和备份数据的重要手段。然而,尽管桌面操作系统已经为用户提供了丰富的图形化工具来处理压缩文件,但在Linux上,压缩文件的格式繁多,且每种格式的压缩和解压缩操作都需要使用特定的命令行工具,这可能让不少新手感到困惑。本文将介绍常见的压缩格式及其应用,并重点讲解如何使用命令行工具进行压缩和解压操作。
1. 常见压缩格式及其区别
压缩格式
作用说明
压缩命令
解压命令
.tar
用于将多个文件和目录打包成一个归档文件,但不进行压缩。
tar -cvf archive.tar directory/
tar -xvf archive.tar
.tar.gz
先使用 tar 打包文件,再用 gzip 压缩,常用于 Linux 系统。
tar -czvf archive.tar.gz directory/
tar -xzvf archive.tar.gz
.tar.bz2
使用 tar 打包后,利用 bzip2 压缩,提供比 gzip 更高的压缩比。
tar ...
数字难民如何足不出户进行跨境交易
数字难民如何足不出户进行跨境交易目录
数字难民如何足不出户进行跨境交易
目录
背景介绍
1. OCBC 开户步骤详解
1.1 什么是 OCBC?
1.2 开户前的准备
1.3 使用 App 开户流程
1. 手机号可以使用国内号码吗?
2. 银行卡的邮寄地址可以填写国内吗?
3. 税务识别号是什么?
4. 就业信息如何填写?
1.4 更多详细步骤
2 激活账户
注意事项
关于新人奖励的常见误区
各家银行费用比较
3 转账
第三方平台的汇款原理
熊猫速汇简介
单笔汇款额度
安全性保障
推荐码与支持
4 出入金与长桥证券
长桥证券是什么?
十月优惠活动
开户流程
为什么选择长桥证券?
出入金方式
投资建议与替代方案
0 参考材料
背景介绍
本文创作于 2024 年 10 月,如果您是在较久之后阅读,文中内容可能已发生变化。若文章对您有所帮助,欢迎使用我的 OCBC 推荐码:XCKV37JB。每次推荐都会为我带来一些收益,也能激励我继续更新此类内容,帮助更多人。感谢您的支持!🙏
由于国内的外汇管制,跨境资金的进出并不如想象中那么简单。然而,拥有一个境外银行 ...
为什么没有更多人选择使用Linux?
为什么没有更多人选择使用Linux?
考虑再次尝试一下Linux吧。不是因为它简单,而是因为它值得。
几周前,我看到一条推特问道:“如果Linux这么好,为什么没有更多的人使用它?”这个问题乍一看似乎很有道理。但稍加思考后,就会发现其中的复杂性。Linux是免费的,那么如果它真那么好,是什么阻止人们广泛使用它呢?
我的回答是:
如果锻炼这么健康,为什么更多人不去做?如果阅读这么有教育意义,为什么更多人不去做?如果垃圾食品对身体有害,为什么那么多人还是在吃?
世界上充满了免费的自我提升机会,但大多数人常常对此置之不理。粗俗地说,在一个充满廉价、空洞热量的世界里,变得懒惰和无知比变得健康和知识渊博要容易得多。抵制轻松的诱惑是很困难的。
而Linux并不是一项轻松的选择。它是一种操作系统,需要你投入比微软和苹果的商业操作系统更多的精力。因此,使用Linux就像是一个修行道场,让你更好地理解计算机。在这个过程中,你必须独立解决问题,以便学习和提升。
我完全理解为什么大多数普通用户对这种智力挑战并不感兴趣,他们只想浏览网页或使用某个应用程序。他们并不想成为计算机基础知识的高手。
但程序员则应有 ...
如何通过“20人+14天”完成Google Play封闭测试
如何通过“20人+14天”完成Google Play封闭测试背景介绍为帮助开发者提供高品质应用并提升用户体验,Google 对所有在 2023 年 11 月 13 日之后创建的个人开发者账号增加了一项新要求:至少有 20 名测试人员在过去至少 14 天内持续参与测试。满足此要求后,开发者即可申请正式版发布权限。
本文详细介绍 Google Play 封闭测试的操作步骤,帮助开发者顺利通过测试阶段。如果在操作过程中遇到困难或需要测试人员支持,欢迎联系咨询或合作。
封闭测试的具体流程
选择应用
访问 Google Play Console 并登录开发者帐户,点击【查看应用】。
创建封闭测试
选择【测试】→【封闭测试】→【管理轨道】(如果没有轨道,可以创建一个)。
设置测试人员并启动封闭测试
选择【测试人员】→【测试用户数量】。
勾选【Google 网上论坛】选项。
填写收到的测试组邮箱。
点击右下角的【保存】。
审核时间通常在一到两天内完成,审核通过后即可开始封闭测试。
跟进测试情况
在【统计信息】中跟进观察前一天的使用情况,确保每天有20人以上的测试用户。
封闭测 ...