虫虫首页|资源下载|资源专辑|精品软件
登录|注册

您现在的位置是:虫虫下载站 > 技术阅读

技术阅读

  • C++20最重要的三个新特性

    2024-02-15
  •   资源简介:C++之父都说过,C++20是C++语言的一次重大变革,引入了大量的新特性。这其中个人认为最重要新特性是这三个:ModulesCoroutinesConceptsModules直接看代码:// helloworld.ixxexport module helloworld; // module declarationimport <iostream>; // import declarationexport void hello() { // export decla...

  • 从C语言实现面向对象探究class的秘密

    2024-02-15
  •   资源简介:这里我想主要介绍下在C语言中是如何实现的面向对象。知道了C语言实现面向对象的方式,我们再联想下,C++中的class的运行原理是什么?首先我们来写一段C++的class,拿一个Student类来举例子:在头文件中,我定义一个Student类:#pragma onceclass Student {public:  void SetNumber(int number);  void SetGrade(int gra...

  • 一场开发者的盛宴,你怎么能缺席?

    2024-02-15
  •   资源简介:在人工智能日益融合、异构及多架构的编程时代,如何进行跨架构的高性能与加速计算?属于开发者头脑风暴的时刻已经来临,通过技术创新将带来更高的开发能力。如果您是C++ 或 GPU 程序员、AI 开发人员、研究员或数据科学家,如果您对跨架构的高性能与加速计算感兴趣,那么您一定会从这个活动中有所收获。Intel将于10月19日北...

  • 相比于C++23,我更期待C++26

    2024-02-15
  •   资源简介:十一之前我去参加了C++全球开发者大会,今天才有时间和大家分享下。听了C++之父的分享,C++之父聊了下他对C++23和C++26新标准的展望,如图:可以看到C++23的更新主要是提供协程库和模块标准库,都是在完善C++20引入的特性,其实没什么新的东西。然而说会在C++23引入的network和executors,也终于不出意外的延期到了C++26。...

  • C语言如何实现面向对象

    2024-02-15
  •   资源简介:这里主要介绍下在C语言中是如何实现的面向对象。知道了C语言实现面向对象的方式,再联想下,C++中的class的运行原理是什么?首先看一段C++的class,拿一个Student类来举例子:在头文件中,我定义一个Student类:#pragma onceclass Student {public:  void SetNumber(int number);  void SetGrade(int grade);  void P...

  • DMA原理

    2024-02-15
  •   资源简介:DMA,全称Direct Memory Access,即直接存储器访问。DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。我们知道CPU有转移数据、计算、控制程序转移等很多功能,系统运作的核心就是CPU,CPU无时不刻的在处理着大量的事务,但有些事情却没有那么重要,比方说...

  • 这五个问题,你也想问吧

    2024-02-15
  •   资源简介:常常有读者问我:我不是科班出身,我工作经验不够丰富,新知识无法实践,面试的时候怎么快速证明自己的能力......该怎么办?以上问题我和很多同行都聊过,自己亲身也经历过,今天和大家分享下我的体会。非科班出身,怎么证明自己的实力?实话实说,在找工作方面,非科班出身不太占优势,我之前也和很多非科班出身的朋友聊过...

  • C++ 使用协程需要注意的问题

    2024-02-15
  •   资源简介:在异步操作里,如异步连接、异步读写之类的协程,co_await这些协程时需要注意线程切换的细节。以asio异步连接协程为例:class client {public:    client() {        thd_ = std::thread([this]{            io_ctx_.run();        });    }    async_simple::coro::Lazy<boo...

  • C++ std::function的开销

    2024-02-15
  •   资源简介:经常看到说function的开销比较大,慎用function之类的讨论。那function究竟哪里开销大,我找到了一篇为function做profile的文章,这篇文章中的英文比较简单,我就不翻译了,英文吃力的朋友也可以直接看下面的数据:Popular folklore demands that you avoid std::function if you care about performance.But is it reall...

  • C++性能白皮书

    2024-02-15
  •   资源简介:最近看完了《C++性能白皮书》,这本书列出了一些性能优化的思路,不过只是一些指引,没有讲具体细节,我整理出了其中的关键点分享给大家:硬件篇作为一个程序员,想要性能优化,最好要了解些硬件,特别是CPU架构的一些知识点:流水线分支预测寄存器重命名数据预取指令重排和乱序执行同时多线程(超线程)数据并行 SIMD 单...

  • CPU Cache伪共享问题

    2024-02-15
  •   资源简介:先看下这两段代码:代码段1:const int row = 10240;const int col = 10240;int matrix[row][col];int TestRow() { //按行遍历 int sum_row = 0; for (int r = 0; r < row; r++) { for (int c = 0; c < col; c++) { sum_row += matrix[r][c]; } } return sum_row;}代码段2:int TestCol() { //按列遍历 i...

  • C++ coroutine generator 实现笔记

    2024-02-15
  •   资源简介:本文授权自知乎用户IceBear,点击文末”阅读原文“查看原文章。C++20 给我们带来了非常现代化的协程特性,但是主要的增加都集中于语核部分。由于库特性尚未准备充分,所以 C++20 标准库中尚没有多少现成的、组装好的协程设施供我们使用。但是!仅仅通过使用 std::coroutine_handle (这是一个编译器为之开洞的类)并在你...

  • Rust学习资料

    2024-02-15
  •   资源简介:最近在研究Rust,目前大多数项目都可以使用Rust开发,但是涉及到和其他语言交互,比如用Rust开发一个SDK,一般还是需要导出C接口。那如何将Rust导出C接口?Rust的FFI就是专门做这件事的。一个正常的Rust public接口长这样:pub fn hello_world() -> i32 { 20}如果要把一个Rust函数导出为C接口,需要对它进行改造:#[no_m...

  • 《计算机网络:自顶向下方法》全新第8版

    2024-02-15
  •   资源简介:20多年持续打磨,国际经典教材计算机网络:自顶向下方法 文末送书!Kurose和他的自顶向下方法就在最近,Kurose和Ross教授合著的《计算机网络:自顶向下方法》中文版也刚刚升级到了第8版,这是一本目前世界上使用最为广泛的网络教科书,书中倡导的方法就是目前最为流行的自頂向下方法。下面我们就深入地谈谈Kurose和他的自...

  • 百度工程师带你探秘C++内存管理(ptmalloc篇)

    2024-02-15
  •   资源简介:作者 | daydreamer前篇《探秘C++内存管理(理论篇)》主要介绍了Linux C++程序内存管理的理论基础,本文作为系列文章《探秘C++内存管理》的第二篇,将会探讨经典内存管理器ptmalloc如何管理C++程序的内存。借助剖析ptmalloc解决问题的着重点和设计实现成本的权衡,更具体的呈现c++内存管理面临的问题和工程落地中的巧思。...

  • Google为Chromium引入Rust?

    2024-02-15
  •   资源简介:今天的文章外部link比较多我特意整理了link的汇总需要的朋友可以在后台回复:“rust ”即可收到自动回复,更加方便观看------------------------------------------------------------------最近看到一篇Google的Blog:Google官宣要把Rust引进Chromium项目中。此举是为了加快开发速度(更少的代码编写,更少的设计文档、更...

  • constexpr

    2024-02-15
  •   资源简介:前面介绍了模板这种编译期动作,关于编译期动作,有必要介绍下constexpr。在这之前有必要简单提一下constexpr与const的关系,两者字面上都表达常量的意思。主要的区别是:const修饰的变量可以在运行时才初始化,而constexpr则一定会在编译期初始化。constexpr才是名符其实的常量,所有的constexpr都是const。而const表示的...

  • 用chatGPT生成C++代码

    2024-02-15
  •   资源简介:众所周知,chatGPT可以不依赖背景立即有效地回答不精确的问题。它提供带有工作代码的答案。一位美国的Telegram算法交易员,以其所在的项目组的实际问题进行了测试,问题如下:“有没有办法自动序列化Protobuf消息?就像以下内容:C++结构体->序列化为Protobuf消息结构体->发送到网络”chatGPT回复如下:如上所示chatGPT解决...

  • 操作系统:文件系统的实现

    2024-02-15
  •   资源简介:一、文件系统结构磁盘的逻辑单元为块,内存和磁盘之间的I/O传输以块为单位执行。磁盘的特点1可以原地重写,可以从磁盘上读一块儿,修改该块,并将它写回到原来的位置可以直接访问磁盘上的任意一块。因此,可以方便地按顺序或随机访问文件文件系统需要提供高效快捷磁盘访问,以便轻松存储、定位、提取数据。即存储文件、访问...

  • 20 张图带你全面了解 HTTPS 协议,再也不怕面试问到了!

    2024-02-15
  •   资源简介:本文详细介绍了 HTTPS 相较于 HTTP 更安全的原因,包括对称加密、非对称加密、完整性摘要、数字证书以及 SSL/TLS 握手等内容,图文并茂、理论与实战结合、建议收藏!1. 不安全的 HTTP近些年来,越来越多的网站使用 HTTPS 协议进行数据传输,原因在于 HTTPS 相较于 HTTP 能够提供更加安全的服务。很多浏览器对于使用 HTTP 协...

  • Boost:初体验,Log模块的编译与使用

    2024-02-15
  •   资源简介:大家应该都知道,Boost是个准标准库,一般Boost里比较先进的模块可能会进下一代的C++标准。因为我最近在开发Log相关的功能,所以业余时间也在看看市面上的Log模块是怎么设计的。关于Log,想必大多数C++开发都在使用glog或者spdlog,最近我发现Boost中也有个Log模块,于是看了看,发现功能好强大。Log模块整体设计如图:图片...

  • 百度工程师浅谈分布式日志

    2024-02-15
  •   资源简介:作者 | 文库基础架构导读 introduction我们做软件开发时,或多或少的会记录日志。由于日志不是系统的核心功能,常常被忽视,定位问题的时候才想起它。本文由浅入深的探讨不起眼的日志是否重要,以及分布式架构下的日志运维工具应该具备哪些能力,希望感兴趣的读者能从本文获得一些启发,有所帮助。全文8832字,预计阅读时...

  • 学习开源项目,推荐看看这几个

    2024-02-15
  •   资源简介:入门和深入C/C++开发,通常都会研究一些优质的开源项目。我整理了一些开源项目,一些代码行数不多,但是功能还比较有趣,供大家参考:ctpl:https://github.com/vit-vit/ctpl - 简易的C ++线程池,代码行数约为500左右。cereal: https://github.com/USCiLab/cereal - 快速、小巧、方便的二进制 JSON 序列化库,代码行数约为...

  • 在2023年还建议走C++这个方向吗?

    2024-02-15
  •   资源简介:虽然现在有很多新语言和框架出现,但C++作为一门老牌编程语言,在很多领域仍然有它不可替代的优势。判断一门编程语言的趋势,它存在的时间是一个重要的参考因素。如果一个编程语言已经存在了很长时间,并且在很多领域仍然有着广泛的应用,那么它很可能会在未来继续保持其地位。C++作为一门诞生于上世纪80年代的编程语言,已...

  • 每日一题:什么是RAII,它有什么使用场景?

    2024-02-15
  •   资源简介:最近在知识星球上线了每日一题栏目,每天提出一个计算机问题,球友们讨论,并在第二天给出答案。小伙伴们的回复还算积极。这是其中一个问题,这里分享下:什么是RAII?RAII(Resource Acquisition Is Initialization)即资源获取即初始化,中文翻译意义不大… RAII在C++中非常重要。RAII的基本思想是使用类的构造函数来获取...

  • 《C++20高级编程》出版了,送书

    2024-02-15
  •   资源简介:熟悉我的朋友大概知道我最近翻译了一本介绍C++20特性的“小红书”《C++20高级编程》(第五版)C++标准委员会Marc Gregoire著这个版本满足了我对C++绝大多数的幻想。通过Modules淘汰了C++之前编写大程序的陈旧方式;使用Concepts帮助创建类型安全的模板和实现灵活的模板特化;使用Ranges彻底改变了处理数据的方式。这些新功...

  • C++类设计和实现的十大最佳实践

    2024-02-15
  •   资源简介:C++代码提供了足够的灵活性,因此对于大部分工程师来说都很难把握。本文介绍了写好C++代码需要遵循的10个最佳实践,并在最后提供了一个工具可以帮助我们分析C++代码的健壮度。原文:10 Best practices to design and implement a C++ class1. 尽可能尝试使用新的C++标准到2022年,C++已经走过了40多个年头。新的C++标准实际...

  • C++ 实现高性能内存池项目实现

    2024-02-15
  •   资源简介:一、概述在 C/C++ 中,内存管理是一个非常棘手的问题,我们在编写一个程序的时候几乎不可避免的要遇到内存的分配逻辑,这时候随之而来的有这样一些问题:是否有足够的内存可供分配?分配失败了怎么办? 如何管理自身的内存使用情况? 等等一系列问题。在一个高可用的软件中,如果我们仅仅单纯的向操作系统去申请内存,当出现内...

  • 操作系统面经

    2024-02-14
  •   资源简介:前一段时间面了一些试,这里总结一下关于操作系统的面经,我简历上写了一个操作系统相关的项目,所以面试的问题可能与平常的八股面试题等等有一些差异,更加偏向具体细节和实现。这里就面试遇到的操作系统相关问题以及我自己的想法整理一下,可以参考参考,有什么问题也还请批评指正。这个是实际问到我的问题自己引申出来的...

  • 为何电脑从 C 盘开始? A、B 盘去哪了

    2024-02-14
  •   资源简介:科普一个小知识点:电脑硬盘为什么从C盘开始。来源 | 程序IT圈前些天硬盘坏了,幸好不是系统盘,不然那些软件安装配置会把我折腾坏,或许这也是在暗示我该换电脑了。重要的数据部分没有遭到损坏,数据是无价的,还是要勤备份。于是换上了一张新的硬盘:当时脑袋里面就闪过一个问题,为啥 windows 系统不从 A 盘开始分区显示...