讳疾忌医丶
弱小和无知不是生存的障碍,傲慢才是
(微信公众号:讳疾忌医-note)
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
不要盲目刷题(LeetCode):先学会这 15 种模式,做题变得简单
文章结尾有最新热度的文章,感兴趣的可以去看看。本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观事实描述事情本身。原创 2024-12-25 23:09:10 · 289 阅读 · 0 评论 -
还在为代码部署发愁?学会这25个Docker命令,让一切变得简单高效!
文章结尾有最新热度的文章,感兴趣的可以去看看。本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观事实描述事情本身。原创 2024-12-25 22:19:02 · 97 阅读 · 0 评论 -
十亿行数据挑战:CUDA申请出战(从17分钟到17秒)
在应对这个挑战的过程中,我越来越意识到并非所有并行工作负载都适合用CUDA来处理。尤其是那些涉及字符串和动态哈希表的情况。我最终不得不稍微变通了一下,制作了一个静态查找表。原创 2024-12-25 15:33:16 · 939 阅读 · 0 评论 -
十亿行数据挑战:从71秒到1.7秒的逐步优化
我们希望避免调用stringAt(),因为这涉及到复制数据和初始化一个新的字符串实例。在几乎所有情况下,该实例的唯一目的就是在HashMap中查找现有条目。然而,如果我们坚持使用HashMap,避免调用stringAt()将非常困难。HashMap期望我们传入一个与现有实例相等的键类实例。我们最好避免这种情况。那么……也许我们应该构建一个自定义哈希表?乍一听这可能很疯狂。难道Java不是已经有一个超级优化的HashMap实现了吗?他们说“别自作聪明,使用标准库”难道是在骗我们吗?嗯,不是的。原创 2024-12-25 11:40:34 · 78 阅读 · 0 评论 -
十亿行数据挑战:Rust请求出战( 5 分钟到 9 秒的历程)
输入:一个 14GB 的文本文件,其中包含来自各个气象站的十亿行温度测量数据。每行的格式为;。输出{城市 1=//, 城市 2=//, …}。原创 2024-12-24 23:42:24 · 94 阅读 · 0 评论 -
必知!软件架构的 10 大常见模式,一文全解
根据维基百科的定义:架构模式是在特定背景下,针对软件架构中常见问题的一种通用、可复用的解决方案。架构模式与软件设计模式类似,但范围更广。在本文中,我将简要介绍以下10种常见架构模式及其用途、优缺点。分层模式客户端 - 服务器模式主从模式管道 - 过滤器模式代理模式对等网络模式事件总线模式模型 - 视图 - 控制器模式黑板模式解释器模式。原创 2024-12-23 21:31:01 · 154 阅读 · 0 评论 -
9个你可能遗忘的Python旧库(以及它们的现代替代品)
本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观事实描述事情。原创 2024-12-23 20:59:59 · 177 阅读 · 0 评论 -
Python中的十亿行数据挑战
文章结尾有最新热度的文章,感兴趣的可以去看看。本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观事实描述事情本身文章有点长(字),期望您能坚持看完,并有所收获。原创 2024-12-23 15:59:59 · 87 阅读 · 0 评论 -
Go语言十亿行数据挑战——从15分钟到5秒
十亿行数据挑战”在编程界引起了不小的轰动。它旨在测试一门编程语言处理和包含十亿行数据的大型数据集的速度。Go语言凭借其出色的性能和并发能力,成为这一挑战中的有力竞争者。目前表现最佳的Java实现处理这些数据仅需1.535秒,下面让我们来看看Go语言的表现如何。在本文中,我们将利用Go语言的独特特性来进行优化。注意:所有的性能基准测试结果都是经过多次运行后计算得出的。我在一台配备了M2 Pro芯片、拥有12个CPU核心以及36GB内存的16英寸MacBook Pro上进行了所有测试。原创 2024-12-23 15:18:51 · 76 阅读 · 0 评论 -
开发者的福音:10款超棒工具让你的工作效率翻倍,告别加班熬夜的痛
好啦就是这10款工具啦,我觉得它们会让你的开发者生活轻松许多。无论你是独自工作还是团队协作,这些工具旨在帮你节省时间、提高效率,说实话就是让编码变得更有意思。快去试试吧,接下来告诉我你最喜欢哪一款!参考文献:《图片来源网络》原创 2024-12-22 23:30:12 · 149 阅读 · 0 评论 -
十亿行数据挑战:C++如何快速高效地处理海量数据?
通过一系列的优化——多线程、内存映射文件、高效的数据结构、并行算法以及SIMD指令,我们将处理时间从14分50秒大幅减少到了12秒。多线程能有效利用多个CPU核心。内存映射文件可减少I/O开销。像Apache Arrow这样的高效数据格式能提升数据处理速度。SIMD指令能够利用数据级别的并行性。C++在处理大规模数据处理任务方面展现出了卓越的能力。通过精心优化代码,并利用现代特性和库,我们能够实现可与其他语言的实现相媲美甚至超越它们的性能。你在使用C++处理大型数据集方面有什么经验呢?原创 2024-12-22 22:13:39 · 74 阅读 · 0 评论 -
在 CUDA C/C++ 中使用共享內存
本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观事实描述事情本身。原创 2024-12-18 15:56:55 · 124 阅读 · 0 评论 -
超越clang-format
这篇文章的一个目标是激励人心。许多检查可以添加到pre-commit框架或直接通过git钩子。但是,请注意维护CI和本地环境之间的一致性。本地运行的检查(特别是自动修复)实际上没有停机时间,并且完全局限于相关开发人员。这种隔离将允许你随着构建一套风格检查工具而提高生产力。示例存储库自动格式化的拉取请求clang-format风格选项pre-commit钩子(并非都与pre-commit CI兼容)示例存储库GitHub操作以在拉取请求上运行示例拉取请求:自动修复、失败和关闭。原创 2024-12-18 01:02:07 · 72 阅读 · 0 评论 -
每日C++小贴士 | 优化代码以实现87倍加速
标准库中的std::unordered_map以其缓慢而臭名昭著。这是因为它使用节点结构(实际上是节点链表的数组)。我们可以切换到平面映射(来自Abseil或Boost)。然而,这将违背1brc挑战的原始精神,该挑战禁止使用外部库。更重要的是,我们的输入非常受限。我们将最多有10k个唯一键用于1B条记录,导致异常高的命中率。由于我们限制为10k个唯一键,我们可以使用基于16位哈希的线性探测哈希映射,该哈希直接索引一个静态大小的数组。原创 2024-12-17 10:25:31 · 769 阅读 · 0 评论 -
如何高效检查数十亿用户中是否存在特定用户名
本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观事实描述事情本身。原创 2024-12-16 22:06:59 · 77 阅读 · 0 评论 -
2024年GPU编程CUDA C++(从环境安装到进阶技巧)
当我开始GPU编程时,我意识到在编写一行CUDA C++代码之前,了解图形处理单元(GPU)的架构是至关重要的。与针对顺序串行处理优化的具有少量核心的CPU不同,GPU具有高度并行的结构,使其能够同时处理大量数据块。这正是GPU不仅在渲染图形方面,而且在加速科学模拟和深度学习等计算密集型应用方面成为强大动力的原因。GPU遵循SIMD(单指令、多数据)架构,这意味着多个处理单元同时在不同的数据上执行相同的指令。原创 2024-12-15 22:15:01 · 127 阅读 · 0 评论 -
2024年优化 C 代码以实现高性能计算 (HPC)
本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观事实描述事情本身。原创 2024-12-15 10:48:42 · 55 阅读 · 0 评论 -
为了性能将 Python 与 C/C++ 接口(2024)
将 Python 与 C/C++ 接口可能一开始看起来很吓人——我也曾这样。但一旦你开始动手,这个过程出奇地合乎逻辑。动机很简单:Python 易于使用,而 C/C++ 在性能上表现出色。当你用 Python 遇到计算瓶颈时,深入 C/C++ 以获得关键的速度提升可能是一个改变游戏规则的因素。让我们从一个简单的例子开始,使用 Python 的 ctypes 库,它提供了与 C 兼容的数据类型,并允许调用 DLL 或共享库中的函数。原创 2024-12-14 16:07:45 · 458 阅读 · 0 评论 -
C++多线程实战:掌握图像处理高级技巧
多线程是程序同时执行多个线程的能力。每个线程是一个轻量级的执行单元,它独立运行,同时与其他线程共享同一进程中的相同内存空间。多线程的关键优势在于它能够更有效地利用可用计算资源,通过将程序的工作负载分割成可以在 CPU 的多个核心上并行执行的不同线程。与单线程程序相比,多线程程序通过利用现代 CPU 提供的并行性提供优越的性能和响应性。通过多线程,程序可以同时完成多个任务,如处理用户输入、执行计算和执行 I/O 操作,而不会被耗时的操作所阻碍。多线程有许多优势。原创 2024-12-13 23:08:30 · 279 阅读 · 0 评论 -
C++50道经典面试(21-50题)
虚拟继承是一种技术,确保基类的成员变量只有一个副本被派生类继承。或者简单来说,当我们处理多重继承的情况但希望防止同一类在继承层次结构中出现多个实例时,就会使用虚拟继承。当使用基类指针对象销毁派生类实例或对象时,会调用虚析构函数以释放派生类对象或实例分配的内存空间。虚析构函数确保首先调用派生类的析构函数。然后调用基类的析构函数以释放两者在继承类中占用的空间,这可以避免内存泄漏。建议在类是多态的情况下将析构函数设为虚。当数字太大,数据类型无法处理时,就会发生溢出错误。原创 2024-12-13 15:01:46 · 208 阅读 · 0 评论 -
C++50道经典面试题
C++是一种面向对象的编程语言,它被引入是为了克服C语言所缺乏的领域。通过面向对象,我们指的是它使用多态性、继承、抽象、封装、对象和类的概念。C++的优点:1. C++是一种面向对象的语言,意味着数据被视为对象。2. C++是一种多范式语言;简单来说,这意味着我们可以编写程序的逻辑、结构和过程。3. 内存管理是C++的一个关键特性,因为它允许动态内存分配。4. 它是一种中级编程语言,这意味着它可以开发游戏、桌面应用程序、驱动程序和内核。‘std’也被称为标准或标准命名空间。原创 2024-12-12 23:28:28 · 288 阅读 · 0 评论 -
从新手到高手:掌握这些C++技巧,让你的代码飞起来
C++ 允许你控制内存的分配和释放。自定义分配器可以帮助优化内存使用,特别是在具有特定内存限制的应用程序中,如嵌入式系统。💡 提示:使用自定义分配器控制标准模板库(STL)容器(如 std::vector、std::map 等)中的内存分配模式。原创 2024-12-11 14:11:17 · 190 阅读 · 0 评论 -
嵌入式C语言技巧15:深入浅出:多线程编程中锁的选择与优化策略
通过本文的深入探讨与实战演练,相信你对多线程编程中的锁机制有了更加清晰的认识。不同的锁机制,各有其优缺点,选择合适的锁,对于提升系统性能至关重要。未来随着硬件技术的不断发展,与此同时编程语言也在持续演进,我们期待能够有更为高效且便捷的并发控制机制出现。但在当下,深入理解并灵活运用现有的锁机制,仍是我们每一位开发者必须掌握的技能。本文借着理论讲解跟实战演练相互结合的办法,协助读者深刻地领会多线程编程里的锁机制。期望你读完本文以后,能够有收获,并且在实际工作里可以灵巧地运用这些知识,以此提高系统的性能和稳定性。原创 2024-11-29 00:00:00 · 195 阅读 · 0 评论 -
嵌入式C语言技巧14:探索交叉编译与makefile增量编译技术
交叉编译和Makefile的增量编译在嵌入式开发里是很重要的技术。这俩技术,不仅提高了开发效率,还降低了调试成本。随着技术不断进步,项目越来越复杂,怎么更好地利用这些技术来优化构建过程,会是我们一直要探索的方向。希望本文能给你提供有价值的参考和启发!参考文献:《交叉编译基本概念》《交叉编译和MAKEFILE_makefile交叉编译》原创 2024-11-28 16:41:46 · 87 阅读 · 0 评论 -
嵌入式C语言技巧13:实战指南:在实时系统中,如何巧妙应对传统调试方法失效的困境?
本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观事实描述事情本身。原创 2024-11-28 14:20:11 · 92 阅读 · 0 评论 -
嵌入式C语言技巧10:从崩溃到重生:高级嵌入式系统如何巧妙应对致命错误?
本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观事实描述事情本身。原创 2024-11-28 07:00:00 · 449 阅读 · 0 评论 -
嵌入式C语言技巧12:从理论到实践:深入探讨嵌入式系统中性能剖析与低功耗唤醒技术
通过深入探索性能剖析与低功耗深睡眠唤醒技术,我们不仅掌握了精准定位性能瓶颈与优化决策制定的方法,还学会了如何在低功耗模式下确保系统稳定运行并快速恢复之前的工作状态。这是一场性能与功耗的和谐共生之旅,也是每位嵌入式工程师不断追求技术卓越与创新的生动写照。让我们携手,接下来共同前进,以此为嵌入式系统的未来贡献出更多的智慧与力量!参考文献:《嵌入式系统低功耗设计研究与实现》《嵌入式性能分析工具的研究与设计》《嵌入式系统低功耗技术的研究和应用》原创 2024-11-28 05:00:00 · 110 阅读 · 0 评论 -
嵌入式C语言技巧11:当系统崩溃遇上断电危机:如何确保嵌入式系统的绝对安全?
系统提供的工具在Windows平台之上,MiniDumpWriteDump这个函数乃是生成内存转储的极为强大的工具。经由设置结构化异常处理(SEH),我们能够在程序发生崩溃之时捕获异常并且生成dump文件。以下即为一个较为简单的示例代码:在Linux平台上,通过signal函数可以捕获SIGSEGV等信号,并触发core dump。以下是一个简单的示例:自定义异常处理在C++里借助全局的“catch(.)”,能把所有没被处理的异常给捕获到,还可以执行自定义的逻辑呢,这里面就包含生成dump文件以下是原创 2024-11-27 21:41:02 · 353 阅读 · 0 评论 -
嵌入式C语言技巧9:为什么说高效的Flash分区表是嵌入式系统的守护神?
统一API对接外设驱动与高效Flash分区表设计,是嵌入式系统开发中不可或缺的两个重要方面。它们不仅关乎技术实现的深度与广度,更直接影响着产品的用户体验与市场竞争力。通过深入地理解需求,接下来精心地设计接口,接着优化分区结构,与此同时制定完善的错误处理策略等一系列措施,我们能够为嵌入式系统打造出一个稳定、高效且易于维护的基石。在未来的日子里,让我们继续去探索技术所蕴含的无尽可能性,一同书写嵌入式系统发展那辉煌的篇章!参考文献:《嵌入式系统设计与实践》《嵌入式系统原理及应用》原创 2024-11-27 13:54:50 · 576 阅读 · 0 评论 -
嵌入式C语言技巧5:硬件管脚抖动与中断优化:揭秘那些你不知道的技术内幕
通过本文的深度解析以及实战指南,相信你已然对硬件管脚抖动处理与中断优化有了更为深入的认知。无论是去抖动算法的运用、滤波器的抉择、中断处理的优化抑或是系统层面的调试,皆为打造稳定且高效的嵌入式系统不可或缺的一部分。在往后的项目中,不妨将这些策略践行于实际,使你的系统更加稳固、更加高效!原创 2024-11-26 23:28:04 · 463 阅读 · 0 评论 -
嵌入式C语言技巧2:揭秘底层编程的隐秘法则,硬件寄存器操作与位差异比较背后的真相
通过今天的探索,我们不仅学会了如何快速且安全地操作硬件寄存器,还掌握了利用异或运算比较两组寄存器位差异的高效方法。这些技能在嵌入式系统、底层软件开发以及性能优化等领域具有广泛的应用价值。但要记得,在底层编程的领域当中,存在着很多挑战以及机遇。只有一直不停地学习和实践,我们才可以在这个范畴里行进得更远,行进得更稳。在以后的日子里,让我们接着深入地去探寻底层编程的神秘之处,不断地挑战自身,以此来追求杰出!原创 2024-11-26 20:07:32 · 644 阅读 · 0 评论 -
嵌入式C语言技巧7:内存管理不善?看这篇深度解析如何高效防止内存泄漏
通过今天的深度探索,我们不但对静态内存分配有了更为深入的理解,还掌握了追寻内存泄漏的诸多方法。在未来的软件开发进程中,让我们持续秉持着严谨且细致的态度,不断地优化我们的内存管理实践,为构筑更加高效、稳固的软件系统贡献力量!原创 2024-11-27 00:21:57 · 563 阅读 · 0 评论 -
嵌入式C语言技巧8:C++ 实现环形缓冲区,环形缓冲区如何影响系统性能?
环形缓冲区作为一种高效的数据缓存以及传输机制,在嵌入式系统与实时数据处理中扮演着重要的角色。把它的原理理解透彻了,也了解了它的实现情况,这样我们就能更好地利用这一数据结构,从而优化系统性能。这个时候DMA和FIFO作为数据传输的不同机制,各自具有独特的优势和应用场景。在实际的开发过程里,我们得依据具体的需求,挑选合适的机制,以此达到高效的数据传输与处理。希望本文能够为您带来启发和帮助!参考文献:《在单片机上实现队列计算的一种方法》《用于嵌入式系统基于同步机制下的环形数据缓冲实现方法》原创 2024-11-27 13:01:27 · 355 阅读 · 0 评论 -
嵌入式C语言技巧4:揭秘GPIO与do{}while(0)的奇妙组合,程序员必看的技术干货!
在C和C++编程里do{}while(0)这样的结构呢,乍一看似乎有些冗余,不过实际上它却具备着独特的妙用。1、宏定义中的守护者使用“do{}while”这种形式,能保证宏在被调用时呈现为一个单独的语句,如此一来,便可避免因缺失分号或其他语法问题而引发的不良结果。while0在这个例子当中,无论在何种上下文中调用LOGERROR宏,都不会由于缺失分号而引发错误。这极大地增强了代码的稳定性与可读性。2、单一代码块的守护神。原创 2024-11-26 22:50:48 · 838 阅读 · 0 评论 -
嵌入式C语言技巧3:从理论到实践,带你深入了解低功耗设计的全过程!
本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观事实描述事情本身揭秘低功耗设计:从硬件到软件的全方位策略在物联网(IoT)和嵌入式系统蓬勃发展的今天,低功耗设计已成为衡量设备性能与续航能力的关键指标。想象一下,一个智能设备能够持续工作数年而无需更换电池,这背后的技术奥秘究竟是什么?原创 2024-11-26 21:51:14 · 833 阅读 · 0 评论 -
嵌入式C语言技巧1:打破常规,逆向思维:用好volatile const,你的代码将无懈可击
通过这篇文章的讨论了,我们对“volatileconst”在嵌入式开发领域的应用有了更为深刻的认识。这个组合给我们提供了一种办法,能准确地描绘只读硬件寄存器的特性,这样我们既能安全地读取寄存器的值,又能避免编译器进行可能导致错误的优化。在未来的嵌入式系统开发进程中,由于硬件设备持续地进行着升级以及变得更为复杂,volatileconst的应用将会在更广泛的范围以及更重要的地位上得以体现。参考文献:[1]、《嵌入式系统协同验证环境的设计与实现》作者:郭晓东, 刘积仁, 余克清等。原创 2024-11-26 18:19:10 · 1329 阅读 · 0 评论 -
嵌入式C语言技巧6:揭秘高效RAM与Flash验证工具,数据稳定性不再是难题!
通过本文的深度分析与实战代码展示,相信你已经对如何设计一款高效的RAM与Flash验证工具有了更加深入的了解。无论是从需求分析到硬件选择,还是从软件架构设计到测试用例设计,每一个步骤都至关重要。在未来的工作中,让我们继续探索与优化存储器验证技术,为构建更加稳定可靠的嵌入式系统与数据中心贡献力量!原创 2024-11-26 23:54:05 · 739 阅读 · 0 评论