MoonBit月兔编程语言 现代编程思想 第十课 哈希表与闭包现代编程思想 哈希表与闭包 Hongbo Zhang 1 回顾 表 键值对的集合,其中键不重复 简单实现:⼆元组列表 添加时向队⾸添加 查询时从队⾸遍历 树实现:⼆叉平衡树 基于第五节课介绍的⼆叉平衡树,每个节点的数据为键值对 对树操作时⽐较第⼀个参数 2 哈希表 哈希函数/散列函数 Hash function 将任意⻓度的数据映射到某⼀固定⻓度的数据 在⽉兔的 Hash 11 3 21 13 27 检查3 0 11 3 21 13 27 检查21 0 11 21 3 13 27 检查13 0 11 21 3 13 27 21 闭包 闭包:⼀个函数及其捆绑的周边环境状态的引⽤的组合 闭包的环境状态 词法环境:与程序的结构对应,在代码定义时决定 1. fn init { 2. let mut i = 2 3. fn debug_i() { debug(i) debug_i() // 输出3 6. { 7. let i = 4 // 此i⾮彼i 8. debug_i() // 输出3 9. } 10. } 22 闭包:封装数据 我们可以利⽤闭包封装数据和⾏为 使⽤者⽆法直接获得数据,必须通过提供的函数进⾏间接操作 可以限制使⽤者的操作,对参数进⾏检验等,保证数据合法 1. fn natural_number_get_and_set()0 码力 | 27 页 | 448.83 KB | 1 年前3
C++高性能并行编程与优化 - 课件 - 16 现代 CMake 模块化项目管理指南),避免符号冲突 • 在声明和定义外面都套一层名字空间,例如此处我的子项目名是 biology ,那 我就 biology::Animal 。避免暴露全局的 Animal 。这是因为万一有个“不拘一 格”的第三方库也暴露个全局的 Animal ,两个符号就会发生冲突,由于类符号 都具有 weak 属性,链接器会随机选择一个覆盖掉,非常危险! • (关于符号的 weak 属性,以后单独开一门 C++ 课讲讲,这一课还是重点关注 function 的区别 • macro 相当于直接把代码粘贴过去,直接访问调用者的作用域。这里写的相对路径 include 和 src ,是基于调用者所在路径。 • function 则是会创建一个闭包,优先访问定义者的作用域。这里写的相对路径 include 和 src ,则是基于定义者所在路径。 https://cmake.org/cmake/help/latest/command/function function 中则是基于定义者所在路径,优先访问定义者的作用域。这里需要 set(key val PARENT_SCOPE) 才能修改到外面的变量。 第二章:第三方库 / 依赖项配置 用 find_package 寻找系统中安装的第三方库并链接他们 find_package 命令 • 常用参数列表一览: • find_package([version] [EXACT] 0 码力 | 56 页 | 6.87 MB | 1 年前3
Go Web编程节,包含“目录”,“上一节”和“下一 节”的链接。 代码 代码 代码要go fmt后提交。注释文件注明其所属章节。 如何编译 如何编译 build.go依赖markdown的一个解析包,所以第一步先 go get github.com/russross/blackfriday 这样读者就可以把相应的Markdown文件编译成html文件,执行go build build.go,执行生成的文件,就会在底目 2.6. interface 2.7. 并发 2.8. 小结 3.Web基础 3.1 web工作方式 3.2 Go搭建一个简单的web服务 3.3 Go如何使得web工作 3.4 Go的http包详解 3.5 小结 4.表单 4.1 处理表单的输入 4.2 验证表单的输入 4.3 预防跨站脚本 4.4 防止多次递交表单 4.5 处理文件上传 4.6 小结 5.访问数据库 5.1 database/sql接口 对于经常使用Unix类系统的用户,尤其对于开发者来说,从源 码安装是最方便而熟悉的。 Go标准包安装:Go提供了方便的安装包,支持Windows、Linux、Mac等系统。这种方式适合初学者,可根据自 己的系统位数下载好相应的安装包,一路next就可以轻松安装了。 第三方工具安装:目前有很多方便的第三方软件包工具,例如Ubuntu的apt-get、Mac的homebrew等。这种安 装方式适合那些熟悉相应系统的用户。0 码力 | 295 页 | 5.91 MB | 1 年前3
Laravel 5.6 中文文档的基础上继续进行优化,包括日志系统、单机任务调度、模型序列化优化、动态频率限制、广播频道类、API 资源控制器 生成、Eloquent 日期格式化优化、Blade 组件别名、Argon2 密码哈希支持、引入 Collision 扩展包等等等等。此外,所有的前端脚手架代码都已升 级到 Bootstrap 4,Laravel 底层使用的 Symfony 组件都已升级到 Symfony ~4.0 版本。 Laravel 5.6 版本的发布恰逢 function () { // }); }); 广播频道类 如果你的应用消费多个不同的频道,routes/channels.php 文件可能会变得很臃肿,所以,作为使用闭包来授权频道的替代方案,你现在可以使用 频道类。要生成一个频道类,可以使用 Artisan 命令 make:channel。该命令会将新生成的频道类存放到 app/Broadcasting 目录下: Broadcast::channel('order.{order}', OrderChannel::class); 最后,可以将频道的授权逻辑放到频道类的 join 方法。join 方法中的代码等同于之前位于频道授权闭包中的处理逻辑。当然,你还可以使用频道模 型绑定:0 码力 | 377 页 | 14.56 MB | 1 年前3
CmlPHP v2.x 开发手册
同时查询多个库 模型-MongoDB Orm详细Api 服务 视图 统一的API Html模板引擎 Blade模板引擎 锁-并发处理 缓存 语言包 日志 调试 Session自定义保存位置 框架自带的扩展包 插件 使用说明 系统挂载点 常用常量 命令行运行程序 守护工作进程 队列服务 权限管理 数据验证 1.6.24 1.6.25 1.6.26 架,支持composer、分布式数据库、分 布式缓存(异常自动容灾),支持文件、memcache、redis、apc等缓存, 支持多种url模式、URL路由[RESTful],支持多项目集成、第三方扩 展、支持插件。 CmlPHP在Model层做了缓存集成,开发者无需关注数据缓存的问题, 按照相应的API调用即可获得最大性能。从而从根本上避免了新手未 使用缓存,或缓存使用不当造成的性能不佳的问题。也杜绝了多人协 ')); //注入服务并运行应用 //要注意的是这边只是做绑定并没有真正实例化 Cml::runApp(function() { //必须绑定。系统错误及异常捕获机制 如果想使用第三方的服务 只要简单封装一个服务。实现 \Cml\Interfaces\ErrorOrException接口即可 Cml::getContainer()- >singleton('cm0 码力 | 245 页 | 720.67 KB | 1 年前3
CmlPHP v2.x 开发手册
同时查询多个库 模型-MongoDB Orm详细Api 服务 视图 统一的API Html模板引擎 Blade模板引擎 锁-并发处理 缓存 语言包 日志 调试 Session自定义保存位置 框架自带的扩展包 插件 使用说明 系统挂载点 常用常量 命令行运行程序 守护工作进程 队列服务 2 1.6.22 1.6.23 1.6.24 1.6.25 1 架,支持 composer、分布式数据库、分布式缓存(异常自动容灾),支持文件、memcache、redis、apc等缓存, 支持多种url模式、URL路由[RESTful],支持多项目集成、第三方扩展、支持插件。 CmlPHP在Model层做了缓存集成,开发者无需关注数据缓存的问题,按照相应的API调用即可获得最大 性能。从而从根本上避免了新手未使用缓存,或缓存使用不当造成的性能不佳的问题。也杜绝了多人 ')); //注入服务并运行应用 //要注意的是这边只是做绑定并没有真正实例化 Cml::runApp(function() { //必须绑定。系统错误及异常捕获机制 如果想使用第三方的服务只要简单封装一个服务。实现\Cml\Inte rfaces\ErrorOrException接口即可 Cml::getContainer()->singleton('cml_error_or_exception'0 码力 | 143 页 | 1.54 MB | 1 年前3
Laravel 6.0 中文文档务中间件、新增懒集合、优化数据库子查询、将前端脚手架提取到独 立的 Composer 包 laravel/ui、以及多个 bug 修复和可用性的提 升。 语义化版本 Laravel 框架包 laravel/framework 现在遵循语义化版本标准。这使 得框架得以和其他已经遵循该版本标准的 Laravel 扩展包保持一 致,不过 Laravel 的发布周期将保持不变。 兼容 Laravel ->orderBy('arrived_at', 'desc') ->limit(1) )->get(); Laravel UI 之前版本 Laravel 提供的典型的前端脚手架代码现在被提取到独立 的 Composer 扩展包 laravel/ui 中,这样一来可以让 UI 脚手架代 码的开发和维护与主框架分离。所以,在默认框架脚手架代码中,现 在已经剔除了 Bootstrap 和 Vue 相关代码,make:auth 学院君致力于提供优质 Laravel 中文学习资源:https://xueyuanjun.com 11 如果想要恢复之前版本的 Vue/Bootstrap 脚手架代码,可以安 装 laravel/ui 扩展包,并使用 Artisan 命令 ui 来安装前端脚手架 代码: composer require laravel/ui php artisan ui vue --auth 升级指南 重要更新概览0 码力 | 1442 页 | 14.66 MB | 1 年前3
CmlPHP v2.x 开发手册
3 10. 锁-并发处理 1.6.10 11. 缓存 1.6.11 12. 语言包 1.6.12 13. 日志 1.6.13 14. 调试 1.6.14 15. Session自定义保存位置 1.6.15 16. 框架自带的扩展包 1.6.16 17. 插件 1.6.17 1. 使用说明 1.6.17.1 框架,支持composer、分布式数据库、分布式缓存(异常自动容灾),支持文件、 memcache、redis、apc等缓存,支持多种url模式、URL路由[RESTful],支持多项目集 成、第三方扩展、支持插件。 CmlPHP在Model层做了缓存集成,开发者无需关注数据缓存的问题,按照相应的API调 用即可获得最大性能。从而从根本上避免了新手未使用缓存,或缓存使用不当造成的 性能不佳的问 ')); //注入服务并运行应用 //要注意的是这边只是做绑定并没有真正实例化 Cml::runApp(function() { //必须绑定。系统错误及异常捕获机制 如果想使用第三方的服务只要简单封装一个服务。实现 \Cml\Interfaces\ErrorOrException接口即可 Cml::getContainer()- >singleton(0 码力 | 251 页 | 973.37 KB | 1 年前3
Comprehensive Rust(繁体中文)91 17.6 Default 特徵 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 17.7 閉包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 17.8 練習:ROT13 (迴轉 30.6 實作不安全的特徵 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 30.7 安全的 FFI 包裝函式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 30.7.1 解決方案 . . . . . . . . . 235 45.3 練習:與 C++ 的互通性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 46 新增第三方 Crate 238 46.1 設定 Cargo.toml 檔案以新增 Crate . . . . . . . . . . . . . . . . . . . . . . . . 238 46.20 码力 | 358 页 | 1.41 MB | 10 月前3
Comprehensive Rust(繁体中文) 20240689 17.6 Default 特徵 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 17.7 閉包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 17.8 練習:ROT13 (迴轉 30.6 實作不安全的特徵 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 30.7 安全的 FFI 包裝函式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 30.7.1 解決方案 . . . . . . . . . 233 45.3 練習:與 C++ 的互通性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 46 新增第三方 Crate 236 46.1 設定 Cargo.toml 檔案以新增 Crate . . . . . . . . . . . . . . . . . . . . . . . . 236 46.20 码力 | 356 页 | 1.41 MB | 1 年前3
共 432 条
- 1
- 2
- 3
- 4
- 5
- 6
- 44













