MoonBit月兔编程语言 现代编程思想 第四课 多元组, 结构体,枚举类型0 码力 | 26 页 | 435.86 KB | 1 年前3
Django 官方教程翻译项目快速安装指南 创建你的第一个 Django 项目, 第一部分 创建你的第一个 Django 项目, 第二部分 创建你的第一个 Django 项目, 第三部分 创建你的第一个 Django 项目, 第四部分 创建你的第一个 Django 项目, 第五部分 创建你的第一个 Django 项目, 第六部分 创建你的第一个 Django 项目, 第七部分 进阶内容:编写可重用的应用 接下来如何学习? 快速安装指南 创建你的第一个 Django 项目, 第一部分 创建你的第一个 Django 项目, 第二部分 创建你的第一个 Django 项目, 第三部分 创建你的第一个 Django 项目, 第四部分 创建你的第一个 Django 项目, 第五部分 创建你的第一个 Django 项目, 第六部分 创建你的第一个 Django 项目, 第七部分 进阶内容:编写可重用的应用 接下来如何学习? }} 当你弄懂如何编写视图之后,就可以去看教程的 教程第四部分(zh),来学习关于表单处理和视图 类的相关内容。 创建你的第一个 Django 项目, 第三部分 - 45 - 本文档使用 书栈(BookStack.CN) 构建 创建你的第一个 Django 项目, 第四部分 创建你的第一个 Django 项目, 第四部分 编写一个简单的表单 使用通用视图:代码还是少点好 改良0 码力 | 103 页 | 1.86 MB | 1 年前3
《深入浅出MFC》2/e骨干程序。所谓骨干程序,是指Visual C++ 的工具AppWizard 所产生出来的程序代码。当然,AppWizard 会根据你的选项做出不同 的程序代码,我所据以解说的,是大众化选项下的产品。 第四篇以微软公司附于Visual C++ 光盘片上的一个范例程序Scribble 为主轴,一步一步加 上新的功能。并在其间深入介绍Runtime Type Information(RTTI)、Dynamic 验的朋友,不见得不会对本篇感到惊艳。根据我的了解,太多人使用MFC 是「只知道 这么做,不知道为什么」;本篇详细解释MFC 程序之来龙去脉,为初入MFC 领域的 读者奠定扎实的基础。说不定本篇会让你有醍醐灌顶之感。 第四篇【深入MFC 程序设计】介绍各式各样MFC 技术。「只知其然不知其所以然」 的不良副作用,在程序设计的企图进一步开展之后,愈来愈严重,最终会行不得也!那 些最困扰我们的MFC 宏、MFC 常数定义,不得一窥堂奥的MFC EXE 执行起来,并转送命令列参 数"README.TXT" 给它。 建立新进程之前,系统必须做出两个核心对象,也就是「进程对象」和「执行线程对象」。 CreateProcess 的第三个参数和第四个参数分别指定这两个核心对象的安全属性。至于第 五个参数(TRUE 或FALSE)则用来设定这些安全属性是否要被继承。关于安全属性及 其可被继承的性质,碍于本章的定位,我不打算在此介绍。 第六个参数dwCreationFlags0 码力 | 1009 页 | 11.08 MB | 1 年前3
Rust 程序设计语言简体中文版用的是宏而不是普通函数,并且宏并不总是遵循与函数相同的规则。 第三,"Hello, world!" 是一个字符串。我们把这个字符串作为一个参数传递给 println! , 字符串将被打印到屏幕上。 第四,该行以分号结尾(; ),这代表一个表达式的结束和下一个表达式的开始。大部分 Rust 代码行以分号结尾。 编译和运行是彼此独立的步骤 你刚刚运行了一个新创建的程序,那么让我们检查此过程中的每一个步骤。 的一个主要优势就是安全而简单的操纵引用。完成 当前程序并不需要了解如此多细节。现在,我们只需知道它像变量一样,默认是不可变的。因 此,需要写成 &mut guess 来使其可变,而不是 &guess 。(第四章会更全面的解释引用。) 使用 Result 类型来处理潜在的错误 我们还没有完全分析完这行代码。虽然我们已经讲到了第三行代码,但要注意:它仍是逻辑行 (虽然换行了但仍是语句)的一部分。后一部分是这个方法(method): 新概念:let 、match 、函数、使用外部 crate 等等, 接下来的几章,你会继续深入学习这些概念。第三章介绍大部分编程语言都有的概念,比如变 量、数据类型和函数,以及如何在 Rust 中使用它们。第四章探索所有权(ownership),这是 一个 Rust 同其他语言大不相同的功能。第五章讨论结构体和方法的语法,而第六章侧重解释 枚举。 41/600 Rust 程序设计语言 简体中文版 30 码力 | 600 页 | 12.99 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0语言的实战介绍,我们会构建一个猜数字游戏。 我们会站在较高的层次介绍一些概念,而后续章节将提供更多细节。如果你希望立刻就动手实 践一下,第二章是开始的好地方。第三章介绍 Rust 中类似其他编程语言的特性,第四章会学 习 Rust 的所有权系统。如果你是一个特别细致的学习者,喜欢在进入下一环节之前学习每一 个细节,你可能会想要跳过第二章,直接阅读第三章,等到你想要通过项目应用所学到的细节 时再回到第二章。 的一个主要优势就是安全而简单的操纵引用。完成 当前程序并不需要了解如此多细节。现在,我们只需知道它像变量一样,默认是不可变的。因 此,需要写成 &mut guess 来使其可变,而不是 &guess。(第四章会更全面地讲解引用。) 使用 Result 类型来处理潜在的错误 我们还没有完全分析完这行代码。虽然我们已经讲到了第三行代码,但要注意:它仍是逻辑行 (虽然换行了但仍是语句)的一部分。后一部分是这个方法(method): 新概念:let、match、函数、使用外部 crate 等等, 接下来的几章,你会继续深入学习这些概念。第三章介绍大部分编程语言都有的概念,比如变 量、数据类型和函数,以及如何在 Rust 中使用它们。第四章探索所有权(ownership),这是 一个 Rust 同其他语言大不相同的特性。第五章讨论结构体和方法的语法,而第六章解释枚举。 37/562Rust 程序设计语言 简体中文版 常见编程概念0 码力 | 562 页 | 3.23 MB | 25 天前3
C++高性能并行编程与优化 - 课件 - 17 由浅入深学习 map 容器insert_or_assign(key, val) 不覆盖写入,要用 m.insert({key, val}) 判断是否存在,用 m.count(key) 若存在则删除,用 m.erase(key) 第四章:迭代与遍历 物理格式 逻辑格式 面壁者罗辑监督你鞋习 ! 面壁者罗辑监督你鞋习 ! map 的元素类型是…… • set::value_type 是 V 。 • map ::value_type 1 == 5 × • 发现不相等,只能继续判断第二个元素是否等于 5 ? 4 == 5 × • 发现不相等,只能继续判断第三个元素是否等于 5 ? 2 == 5 × • 发现不相等,只能继续判断第四个元素是否等于 5 ? 8 == 5 × • 发现不相等,只能继续判断第五个元素是否等于 5 ? 5 == 5 √ • 发现相等,意味着我们成功找到了 5 。这时 std::find 就会返回指向第五个元素的迭代器 就是说,苦劳都是 K 的,功劳都是 V 的。就这两点区别,示意图: k k k k k k k k k k k k v v v v v v set map 第四章:哈希散列表 高效的查找离不开我 高效的查找离不开我 unordered_set 查找为什么高效 • 为什么哈希散列表 unorered_set 会比线性数组 vector 在查找这一点上更高效? 0 码力 | 90 页 | 8.76 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程CMAKE_CUDA_SEPARABLE_COMPILATION 选 项(设为 ON ),即可启用分离声明和定义的支持。 • 不过我还是建议把要相互调用的 __device__ 函数放在 同一个文件,这样方便编译器自动内联优化(第四课讲 过)。 两种开启方式:全局有效 or 仅针对单个程序 只对 main 这个程序启用: 对下方所有的程序启用(推荐): 顺便一提, CXX_STANDARD 和 CUDA_ARCHITECTURES cudaMemcpy ,他能够在 GPU 和 CPU 内存之间拷贝数据。 • 这里我们希望把 GPU 上的内存数据拷贝到 CPU 内存上,也就是从设备内存 (device) 到主机内存 (host) ,因此第四个参数指定为 cudaMemcpyDeviceToHost 。 • 同理,还有 cudaMemcpyHostToDevice 和 cudaMemcpyDeviceToDevice 。 cudaMemcpy 调度不对? 是编译器干的大好事! • 其实是编译器自作聪明优化了我们对 local_sum 的访 问,导致结果不对的。解决:把 local_sum 数组声明 为 volatile 禁止编译器优化(第四课介绍过)。 什么是线程组分歧( warp divergence ) • GPU 线程组( warp )中 32 个线程实际是 绑在一起执行的,就像 CPU 的 SIMD 那样。 因此如果出现分支(0 码力 | 142 页 | 13.52 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串会在字符串中查找字符 ‘ c’ ,不同的是他会从第 pos 个字符开始,例如 “ icatchthecat”.find(‘c’, 3) 会返回 4 ,因为是从 第 3 个字符 ‘ t’ 开始查找(人类看来是第四个),所以第一个 ‘ c’ 被略过。 • 如果 pos 所在的位置刚好就是 ‘ c’ ,那么会返回 pos ,例如 “ icatchthecat”.find(‘c’, 4) 会返回 4 。 会在字符串中查找字符 ‘ c’ ,不同的是他会从第 pos 个字符开始,例如 “ icatchthecat”.find(‘c’, 3) 会返回 4 ,因为是从 第 3 个字符 ‘ t’ 开始查找(人类看来是第四个),所以第一个 ‘ c’ 被略过。 • 如果 pos 所在的位置刚好就是 ‘ c’ ,那么会返回 pos ,例如 “ icatchthecat”.find(‘c’, 4) 会返回 4 。 第一次出现的位置,返回 ‘ s’ 所在位 置。 • 例如 “ hello”.find(“lo”) 会得到 3 ,因为找到的是开头的字符 ‘ l’ , 他是计算机认为的第 3 个字符(人类认为的第四个字符)。 • 同理也有 find(“str”, pos) 是从第 pos 个字符开始查找子字符串 “ str” ,例如 “ hellohello”.find(“lo”, 4) 会得到 8 ,因为0 码力 | 162 页 | 40.20 MB | 1 年前3
5.cgo 原理解析及优化实践线程上执行 Go 调 C ① “释放”P 并没有立即执行,需要等 sysmon 来 retake 属于优化;通常 C 很快返回 ② 获取不到 P,也会将 G 放入全局 G 队列 CPU 优化 第四部分 发现过程 needm:获取 extra M,确保 go 需要的信号没有被屏蔽 dropm:释放 extra M,恢复信号 8 个系统调用 信号处理机制 ① 向 OS 注册 sighandler pthread_key_create 执行成功才跳过 ① C 申明变量 & 赋值 ② Go 申明 import ③ ASM 中可以直接使用 revert 三次 3 月 25 日,第一次合入 5 月 18 日,第四次合入 https://go-review.googlesource.com/c/go/+/495855 ① g0 的栈空间(lo,hi)是动态指定的 ② 原来是当前 C 栈顶,增长 32k0 码力 | 45 页 | 5.74 MB | 1 年前3
Rust 语言学习笔记...................... 38 3.4.2 涉及到函数和结构体的借用检查器 ........................................... 39 第四章 面向对象编程 ............................................................................... 43 4.1 面向对象数据结构 ∩ 'b) // 成立 上面是成立的,所以可以编译通过。 3.4.2.2 结构体中的生命周期 在 struct 中 Lifetime 同样重要。关于 rust 中 struct 使用请查看第四章。 我们来定义一个 Person 结构体。 struct Person { age: &u8, } 编译时我们会得到一个 error::2:8: 2:12 error: Lifetime 同理。 其他无论在函数还是在 struct 中,甚至在 enum 中,Lifetime 理论知识都是一 样的。希望大家可以慢慢体会和吸收,做到举一反三。 第四章 面向对象编程 4.1 面向对象数据结构 4.1.1 元祖 元祖表示一个大小、类型固定的有序数据组。 let y = (2, "hello world"); let x: (i32 0 码力 | 117 页 | 2.24 MB | 1 年前3
共 119 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12













