C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串map 容器全家桶及其妙用举例 5. 函子 functor 与 lambda 表达式知多少 6. 通过实战案例来学习 STL 算法库 7. C++ 标准输入输出流 & 字符串格式化 8. traits 技术,用户自定义迭代器与算法 9. allocator ,内存管理与对象生命周期 ASCII 码 第 1 章 计算机如何表达字符 https://zh.wikipedia 给出警告),但是运行结果不对,或者还有可能崩溃。 泛型的 iostream 应运而生 • 得益于 C++ 的重载技术, cout 不用你手动指定类型,他 会自动识别参数的类型,帮你调用相应的格式化函数。 c_str 和 data 的区别 • s.c_str() 保证返回的是以 0 结尾的字符串首地址指针,总长度为 s.size() + 1 。 • s.data() 只保证返回长度为 那 to_string 能不能指定十六进制? • 很遗憾, to_string 是个缓解“键盘压力”的帮手函数,功能根本不全。 • 用 + 来拼接字符串也只是初学者的做法,他们并不是专业的字符串格式化工 具。 • 想要完整的功能(指定多少进制,左右对齐等),可以用专业的做法: 1. 古代 C 语言的 sprintf 2. 古代 C++ 的 stringstream 3. C++20 新增的0 码力 | 162 页 | 40.20 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 16 现代 CMake 模块化项目管理指南: ~~-·~·~-·~ -~·-·~·- 第一章:文件 / 目录组织规范 基于 CMake 的 C/C++ 项目,如何优雅地、模块化地组织大量源文件 ? 推荐的目录组织方式 • 目录组织格式: • 项目名 /include/ 项目名 / 模块名 .h • 项目名 /src/ 模块名 .cpp • CMakeLists.txt 中写: • target_include_directories( )的头文件和源文件中都导入其他模块( Animal )的头 文件。 • 注意不论是项目自己的头文件还是外部的系统的头文件,请全部统一采用 < 项目名 / 模块名 .h> 的格式。不要用 “模块名 .h” 这种相对路径的格式,避 免模块名和系统已有头文件名冲突。 十、依赖其他模块但不解引用,则可以只前向声明不导入头文件 • 如果模块 Carer 的头文件 Carer.h 虽然引用了其他模块中的 只有清理了 build 以后, • cmake -B build -DQt5_DIR=D:/Qt5 # 才需要重新指定。 科普:类似 Qt 这种亲 Unix 软件,在 Windows 下的目录组织格式 • 例如你安装 Qt 时设置安装路径为 D:/Qt5.12.1 。 • 则你会看到他下面有几个子目录: • D:/Qt5.12.1/msvc2017_64 (由 VS2017 编译 64 位版本)0 码力 | 56 页 | 6.87 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 01 学 C++ 从 CMake 学起指向的地址为加载后的 地址,这个过程称为重定向。这样以后函数被调用就会跳转到动态加载的地址去。 • Windows :可执行文件同目录,其次是环境变量 %PATH% • Linux : ELF 格式可执行文件的 RPATH ,其次是 /usr/lib 等 运行时查找 编译时插入 CMake 中的静态库与动态库 • CMake 除了 add_executable 可以生成可执行文件外,还可以通过 库,甚至没依赖 STL (可定制性高,工程美学经典) 5. ericniebler/range-v3 - C++20 ranges 库就是受到他启发(完全是头文件组成) 6. fmtlib/fmt - 格式化库,提供 std::format 的替代品(需要 -DFMT_HEADER_ONLY ) 7. gabime/spdlog - 能适配控制台,安卓等多后端的日志库(和 fmt 冲突!) • 只需要把他们的 子模块引入,也就是通过 add_subdirectory 。 • 方法就是把那个项目(以 fmt 为例)的源码放到你工程的根目录: • 这些库能够很好地支持作为子模块引入: 1. fmtlib/fmt - 格式化库,提供 std::format 的替代品 2. gabime/spdlog - 能适配控制台,安卓等多后端的日志库 3. ericniebler/range-v3 - C++20 ranges0 码力 | 32 页 | 11.40 MB | 1 年前3
新一代分布式高性能图数据库的构建 - 沈游人缓存能起到很 好的加速效果 • 要想让内存缓存发挥最大的作用,就要能在有限的内存中存下尽量多的图数据 • 例如,对于属性的存储,可以通过自行序列化 / 反序列化大幅节省内存 • 而自定义存储格式往往需要内存的精细操作,由于 Rust 允许在 unsafe 下访问裸指针, 可以实现零开销读取 • 将 Unsafe 包裹,对外提供足够的接口 i32 i64 u32 u32 string string 强大的跨平台能力,在不同架构 下可以准确的控制代码行为 编译期间对生命周期检查确保内 存安全,无 GC 和运行时损耗 01 完善的测试类型支持,包括单元 测试、集成测试、基准测试等 02 03 和文档系统以及 CI/CD 工具的良 好集成 完整的断言系统 异步协程 零成本抽象 强大的测试框架 REPL 命令行客户端 WebUI 面向分析师,提供图模型定义、数据管理、图查询分析、服务状态监控、用户管理能力0 码力 | 38 页 | 24.68 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 02 现代 C++ 入门:RAII 内存管理• 求一个列表中所有数的和: # 参考资料 - [ 热心观众整理的学习资料 ](https://github.com/jiayaozhang/OpenVDB_and_TBB) - [C++ 官方文档 ](https://en.cppreference.com/w/) - [C++ 核心开发规范 ](https://github.com/isocpp/CppCoreGuidelines/blob bookstack.cn/read/CMake-Cookbook/README.md) - [CMake 官方文档 ](https://cmake.org/cmake/help/latest/) - [Git 官方文档 ](https://git-scm.com/doc) - [GitHub 官方文档 ](https://docs.github.com/en) 古代: C 语言 近代: C++98 引入0 码力 | 96 页 | 16.28 MB | 1 年前3
Rust分布式账务系统 - 胡宇:跨语言跨平台通讯 心路历程 真刀实枪 – 开发调试部署 IDE JetBrains + Rust 插件 Gitlab CI/CD 心路历程 真刀实枪 – 文档工具 文档生成 CI/CD git page 作为文档 心路历程 吐槽点 ● Nightly 版本编译器: tikv , raft-rs ● 无官方库,官方库支持不成熟 ○ Kafka (第三方: https://github0 码力 | 27 页 | 12.60 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 17 由浅入深学习 map 容器万能的 map 容器全家桶及其妙用举例 ( 本期 ) 5. 函子 functor 与 lambda 表达式知多少 6. 通过实战案例来学习 STL 算法库 7. C++ 标准输入输出流 & 字符串格式化 8. traits 技术,用户自定义迭代器与算法 9. allocator ,内存管理与对象生命周期 10. C++ 异常处理机制的前世今生 我们都要认真鞋习哦 我们都要认真鞋习哦 第一章:读取与写入 insert_or_assign(key, val) 不覆盖写入,要用 m.insert({key, val}) 判断是否存在,用 m.count(key) 若存在则删除,用 m.erase(key) 第四章:迭代与遍历 物理格式 逻辑格式 面壁者罗辑监督你鞋习 ! 面壁者罗辑监督你鞋习 ! map 的元素类型是…… • set::value_type 是 V 。 • map ::value_type 是 pair unordered_map 未使用 k 未使用 k 未使用 未使用 未使用 未使用 未使用 未使用 k v k v 第五章:专业的接口 物理格式 逻辑格式 面壁者罗辑监督你鞋习 ! 面壁者罗辑监督你鞋习 ! map 更便捷的接口 • 通过 find 返回的迭代器查找元素的方法,虽然是完备的,但使用起来较为复杂,不够简洁。 通常我们只是想要根据 0 码力 | 90 页 | 8.76 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 10 从稀疏数据结构到量化数据类型zp 课程 PPT 和代码: https://github.com/parallel101/course 本课涵盖:稀疏矩阵、 unordered_map 、空间稀 疏网格、位运算、浮点的二进制格式、内存带宽优 化 面向人群:图形学、 CFD 仿真、深度学习编程人 员 第 0 章:稀疏矩阵 稠密数组存储矩阵 用 foreach 包装一下枚举的过程 改用 map 来存储 分离 read/write/create :每个占据 4 字节 • 可以用单精度的 float ,只占据 4 字节。 • 因为这里的循环体是内存瓶颈( membound ), 就直接加快了 2 倍! 浮点数的二进制存储格式 • 计算机存储浮点数的格式,很像科学计数法: ±1.ffffffff * 2^eee (区别在于他是二的指数) • 其中 f 是底数, e 是指数。正负号 ± 通过符号位来表示( 0 表示正, 1 表示负)。0 码力 | 102 页 | 9.50 MB | 1 年前3
应用 waPC (rust) 做软件测试工具• Sleep • now websocket standin for wasm • 可用 Javascript 在游览器里面 模拟数据 • 发 RPC 请求 • 可以上传 proto 文档 • 可以验证数据 前段链接 Wasm Mock Server 随机 waPC 注册逻辑 Use wasm without fear 支持以 websocket 代替 wasm 协议 • 不可能为每个0 码力 | 30 页 | 2.50 MB | 1 年前3
夏歌-使用Rust构建LLM应用机器人 函数的 trigger 1. 汇总所有的总结 "0.1.0" 使用 Rust 构建 PR review 机器人 函数的 trigger 1. 规定了 review 结果返回的格式 2. 并把结果返回给程序 把 review 结果以 comment 的形式返 回到 GitHub https://github.com/flows-network/review-any-0 码力 | 36 页 | 38.31 MB | 1 年前3
共 19 条
- 1
- 2













