《深入浅出MFC》2/e
刚才又把深入浅出MFC step0~step1 的程序看了一次,真的感触良多。酒越陈越香,看老 师您的书,真的是越看越「爽」,而且一定要晚上10:00 以后看,哇,那种感觉真是过瘾。 桃园Shelly 在书局看到您多本书籍,实在忍不住想告诉您我的想法!我是来谢谢您的。怎么说呢?姑且 不论英文能力,看原文书总是没有看中文书来得直接啊!您也知晓的,许多翻译书中的每个 中文字都看得懂,但是整段落就是不知他到底在说啥!因此看到书的作者是您,感觉上就是 在大陆,主要从事交换机系统软件的设计,到了美国,主要从事卫星通信地面站系统软件的 设计。程序设计主要结合C 和Assembly。在大陆,embedded system 多采用Intel 的 processor,在美国,embedded system 多采用Motorola 的processor。所以,我对Intel 8086, 8051 系列及Motorola 68000 系列的assembly 语言比较熟悉,而对framework 有一个程度的了解后再去看侯sir 写的深入 浅出MFC... 保证让你功力大增~~ Rosario.bbs@bbs.ntu.edu.tw:深入浅出MFC 这本比较好~~~不过之前最好买侯老师的多 型与虚拟拟,把C++ 弄清楚。最后看起深入Visual C++ 就会吸收很快。 请问,想要从DOS 跨足到Windows 程序设计有哪些书值得推荐呢? hschin.bbs@bbs.cs.nthu0 码力 | 1009 页 | 11.08 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程
__syncthreads 之类的 GPU 特有的函数,因此也不能 完全替代 __host__ 和 __device__ 。 通过 #ifdef 指令针对 CPU 和 GPU 生成不同的代码 • CUDA 编译器具有多段编译的特点。 • 一段代码他会先送到 CPU 上的编译器(通常是系统自带的编译 器比如 gcc 和 msvc )生成 CPU 部分的指令码。然后送到真 正的 GPU 编译器生成 GPU 指令码。最后再链接成同一个文件 += 一样,不过是原 子的。他的第一个参数是个指针,指向要 修改的地址。第二个参数是要增加多少。 也就是说: • atomicAdd(dst, src) 和 *dst += src 差不 多。 atomicAdd :会返回旧值(划重点!) • old = atomicAdd(dst, src) 其实相当于: • old = *dst; *dst += src; • 利用这一点可以实现往一个全局的数组 shared memory ),他的性质类似于 CPU 中的缓 存——和主存相比很小,但是很快,用于缓冲临时数据。还有点特殊的性质,我们稍后会 讲。 • 通常板块数量总是大于 SM 的数量,这时英伟达驱动就会在多个 SM 之间调度你提交的 各个板块。正如操作系统在多个 CPU 核心之间调度线程那样…… • 不过有一点不同, GPU 不会像 CPU 那样做时间片轮换——板块一旦被调度到了一个 SM0 码力 | 142 页 | 13.52 MB | 1 年前3Hello 算法 1.0.0b4 C++版
靳宇栋(Krahets) Release 1.0.0b4 2023‑07‑26 序 两年前,我在力扣上分享了《剑指 Offer》系列题解,受到了许多朋友的喜爱与支持。在此期间,我回答了众 多读者的评论问题,其中最常见的一个问题是“如何入门学习算法”。我逐渐也对这个问题产生了浓厚的兴 趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单直接且有效。然而,刷题就如同玩“扫雷”游戏,自学能力 轮的重复后,就能将其牢记在心。 3. 搭建知识体系。在学习方面,我们可以阅读算法专栏文章、解题框架和算法教材,以不断丰富知识体 系。在刷题方面,可以尝试采用进阶刷题策略,如按专题分类、一题多解、一解多题等,相关的刷题心 得可以在各个社区找到。 作为一本入门教程,本书内容主要涵盖“第一阶段”,旨在帮助你更高效地展开第二和第三阶段的学习。 Figure 0‑7. 算法学习路线 0.3. 小结 对数阶 ?(log ?) 与指数阶相反,对数阶反映了“每轮缩减到一半的情况”。对数阶仅次于常数阶,时间增长缓慢,是理想的时 间复杂度。 对数阶常出现于「二分查找」和「分治算法」中,体现了“一分为多”和“化繁为简”的算法思想。 设输入数据大小为 ? ,由于每轮缩减到一半,因此循环次数是 log2 ? ,即 2? 的反函数。 // === File: time_complexity.cpp ===0 码力 | 343 页 | 27.39 MB | 1 年前3Hello 算法 1.0.0b5 C++版
轮的重复后,就能将其牢记在心。 3. 搭建知识体系。在学习方面,我们可以阅读算法专栏文章、解题框架和算法教材,以不断丰富知识体 系。在刷题方面,可以尝试采用进阶刷题策略,如按专题分类、一题多解、一解多题等,相关的刷题心 得可以在各个社区找到。 如图 0‑7 所示,本书内容主要涵盖“第一阶段”,旨在帮助你更高效地展开第二和第三阶段的学习。 第 0 章 前言 hello‑algo.com 8 图 logRecur(float n) { if (n <= 1) return 0; return logRecur(n / 2) + 1; } 对数阶常出现于基于分治策略的算法中,体现了“一分为多”和“化繁为简”的算法思想。它增长缓慢,是 仅次于常数阶的理想的时间复杂度。 第 2 章 复杂度分析 hello‑algo.com 36 � ?(log ?) 的底数是多少? 准确来说,“一分为 非线性数据结构可以进一步被划分为树形结构和网状结构。 ‧ 线性结构:数组、链表、队列、栈、哈希表,元素之间是一对一的顺序关系。 ‧ 树形结构:树、堆、哈希表,元素之间是一对多的关系。 ‧ 网状结构:图,元素之间是多对多的关系。 3.1.2 物理结构:连续与离散 在计算机中,内存和硬盘是两种主要的存储硬件设备。硬盘主要用于长期存储数据,容量较大(通常可达到 TB 级别)、速度较慢。内存用0 码力 | 377 页 | 30.69 MB | 1 年前3Hello 算法 1.0.0 C++版
轮的重复后,就能将其牢记在心。 3. 阶段三:搭建知识体系。在学习方面,我们可以阅读算法专栏文章、解题框架和算法教材,以不断丰富 知识体系。在刷题方面,可以尝试采用进阶刷题策略,如按专题分类、一题多解、一解多题等,相关的 刷题心得可以在各个社区找到。 如图 0‑8 所示,本书内容主要涵盖“阶段一”,旨在帮助你更高效地展开阶段二和阶段三的学习。 第 0 章 前言 hello‑algo.com 9 图 logRecur(float n) { if (n <= 1) return 0; return logRecur(n / 2) + 1; } 对数阶常出现于基于分治策略的算法中,体现了“一分为多”和“化繁为简”的算法思想。它增长缓慢,是 仅次于常数阶的理想的时间复杂度。 � ?(log ?) 的底数是多少? 准确来说,“一分为 ?”对应的时间复杂度是 ?(log? ?) 。而通过对数换底公式,我们可以 ,元素之间是一对一的顺序关系。 ‧ 非线性数据结构:树、堆、图、哈希表。 非线性数据结构可以进一步划分为树形结构和网状结构。 ‧ 树形结构:树、堆、哈希表,元素之间是一对多的关系。 ‧ 网状结构:图,元素之间是多对多的关系。 图 3‑1 线性数据结构与非线性数据结构 3.1.2 物理结构:连续与分散 当算法程序运行时,正在处理的数据主要存储在内存中。图 3‑2 展示了一个计算机内存条,其中每个黑色方0 码力 | 378 页 | 17.59 MB | 1 年前3Hello 算法 1.1.0 C++ 版
GitHub 仓库。 3. 阶段三:搭建知识体系。在学习方面,我们可以阅读算法专栏文章、解题框架和算法教材,以不断丰富 知识体系。在刷题方面,可以尝试采用进阶刷题策略,如按专题分类、一题多解、一解多题等,相关的 刷题心得可以在各个社区找到。 如图 0‑8 所示,本书内容主要涵盖“阶段一”,旨在帮助你更高效地展开阶段二和阶段三的学习。 第 0 章 前言 hello‑algo.com 9 图 logRecur(int n) { if (n <= 1) return 0; return logRecur(n / 2) + 1; } 对数阶常出现于基于分治策略的算法中,体现了“一分为多”和“化繁为简”的算法思想。它增长缓慢,是 仅次于常数阶的理想的时间复杂度。 ?(log ?) 的底数是多少? 准确来说,“一分为 ?”对应的时间复杂度是 ?(log? ?) 。而通过对数换底公式,我们可以得到具有 ,元素之间是一对一的顺序关系。 ‧ 非线性数据结构:树、堆、图、哈希表。 非线性数据结构可以进一步划分为树形结构和网状结构。 ‧ 树形结构:树、堆、哈希表,元素之间是一对多的关系。 ‧ 网状结构:图,元素之间是多对多的关系。 图 3‑1 线性数据结构与非线性数据结构 3.1.2 物理结构:连续与分散 当算法程序运行时,正在处理的数据主要存储在内存中。图 3‑2 展示了一个计算机内存条,其中每个黑色方0 码力 | 379 页 | 18.47 MB | 1 年前3Hello 算法 1.2.0 简体中文 C++ 版
GitHub 仓库。 3. 阶段三:搭建知识体系。在学习方面,我们可以阅读算法专栏文章、解题框架和算法教材,以不断丰富 知识体系。在刷题方面,可以尝试采用进阶刷题策略,如按专题分类、一题多解、一解多题等,相关的 刷题心得可以在各个社区找到。 如图 0‑8 所示,本书内容主要涵盖“阶段一”,旨在帮助你更高效地展开阶段二和阶段三的学习。 第 0 章 前言 www.hello‑algo.com 9 logRecur(int n) { if (n <= 1) return 0; return logRecur(n / 2) + 1; } 对数阶常出现于基于分治策略的算法中,体现了“一分为多”和“化繁为简”的算法思想。它增长缓慢,是 仅次于常数阶的理想的时间复杂度。 ?(log ?) 的底数是多少? 准确来说,“一分为 ?”对应的时间复杂度是 ?(log? ?) 。而通过对数换底公式,我们可以得到具有 ,元素之间是一对一的顺序关系。 ‧ 非线性数据结构:树、堆、图、哈希表。 非线性数据结构可以进一步划分为树形结构和网状结构。 ‧ 树形结构:树、堆、哈希表,元素之间是一对多的关系。 ‧ 网状结构:图,元素之间是多对多的关系。 图 3‑1 线性数据结构与非线性数据结构 3.1.2 物理结构:连续与分散 当算法程序运行时,正在处理的数据主要存储在内存中。图 3‑2 展示了一个计算机内存条,其中每个黑色方0 码力 | 379 页 | 18.48 MB | 10 月前3面向亿行 C/C++ 代码的静态分析系统设计及实践-肖枭
PLDI 2018: 去掉路径 遍历分析中的冗余 ICSE 2019:路径遍历内 存泄漏分析的多项式算法 需求2:误报率要低 方法1: 数据驱动的改进循环 降低 误报率 标注反馈 优化 代码扫描 新增分析器 淘汰分析器 感知误报率 数据驱动的开发管理 方法2: 高低搭配 高危,误报率偏高的高价值检查器 搭配其他误报率低的检查器 避免重要问题被忽略的同时降低 “感知误报率” 红黑榜鼓励参与者 降低感知误报率 用数据风控的方式管理 总结:代码评审中的静态分析 无需额外操作,不改变程序员习惯的流程 只分析变化的代码引起的问题 使用频次高,可形成数据驱动的分析器改进和 代码质量监控 推动规范落地和培训教育新员工 提高人工评审效果 零培训成本强制使用 基于gitlab的自动代码评审演示0 码力 | 39 页 | 6.88 MB | 1 年前3Hello 算法 1.2.0 繁体中文 C++ 版
作者:靳宇棟(@krahets) 程式碼審閱:宮蘭景(@Gonglja) Release 1.2.0 2024‑12‑06 序 兩年前,我在力扣上分享了“劍指 Offer”系列題解,受到了許多讀者的鼓勵與支持。在與讀者交流期間,我 最常被問到的一個問題是“如何入門演算法”。漸漸地,我對這個問題產生了濃厚的興趣。 兩眼一抹黑地刷題似乎是最受歡迎的方法,簡單、直接且有效。然而刷題就如同玩“踩地雷”遊戲,自學能 ”從這個意義上看,這本 書並非完全“免費”。為了不辜負你為本書所付出的寶貴“注意力”,我會竭盡所能,投入最大的“注意力” 來完成本書的創作。 本人自知學疏才淺,書中內容雖然已經過一段時間的打磨,但一定仍有許多錯誤,懇請各位老師與同學批評 指正。 本書中的程式碼附有可一鍵執行的原始檔,託管於 github.com/krahets/hello‑algo 倉庫。 動畫在 PDF 內的展示效果有限,可訪問 www 從巧奪天工的匠人 技藝、到解放生產力的工業產品、再到宇宙運行的科學規律,幾乎每一件平凡或令人驚嘆的事物背後,都隱 藏著精妙的演算法思想。 同樣,資料結構無處不在:大到社會網絡,小到地鐵路線,許多系統都可以建模為“圖”;大到一個國家,小 到一個家庭,社會的主要組織形式呈現出“樹”的特徵;冬天的衣服就像“堆疊”,最先穿上的最後才能脫下; 羽毛球筒則如同“佇列”,一端放入、一端取出;字典就像一個“雜湊表”,能夠快速查找目標詞條。0 码力 | 379 页 | 18.79 MB | 10 月前3C++高性能并行编程与优化 - 课件 - 01 学 C++ 从 CMake 学起
GNU gcc g++ gfortran LLVM clang clang++ flang 多文件编译与链接 • 单文件编译虽然方便,但也有如下缺点: 1. 所有的代码都堆在一起,不利于模块化和理解。 2. 工程变大时,编译时间变得很长,改动一个地方就得全部重新编译。 • 因此,我们提出多文件编译的概念,文件之间通过符号声明相互引用。 • > g++ -c hello.cpp -o hello PUBLIC test) # 为 myexec 链接刚刚制作的库 libtest.a • 其中 PUBLIC 的含义稍后会说明( CMake 中有很多这样的大写修饰符) 为什么 C++ 需要声明 • 在多文件编译章中,说到了需要在 main.cpp 声明 hello() 才能引用。为什么? 1. 因为需要知道函数的参数和返回值类型:这样才能支持重载,隐式类型转换等特性。例 如 show(3) ,如果声明了 库就是受到他启发(完全是头文件组成) 6. fmtlib/fmt - 格式化库,提供 std::format 的替代品(需要 -DFMT_HEADER_ONLY ) 7. gabime/spdlog - 能适配控制台,安卓等多后端的日志库(和 fmt 冲突!) • 只需要把他们的 include 目录或头文件下载下来,然后 include_directories(spdlog/include) 即 可。 • 缺点:函数0 码力 | 32 页 | 11.40 MB | 1 年前3
共 24 条
- 1
- 2
- 3