正版图书,可开发票,请放心购买。
-
作者:
汤姆·邝(TomKwong)
-
出版社:
机械工业出版社
-
ISBN:
9787111689492
-
出版时间:
2021-09
-
装帧:
平装
-
开本:
16开
-
ISBN:
9787111689492
-
出版时间:
2021-09
售价
¥
89.16
6.9折
定价
¥129.00
品相
全新
上书时间2023-09-11
卖家超过10天未登录
手机购买
微信扫码访问
-
-
商品描述:
-
作者简介
目录
序言<br/>前言<br/>作者简介<br/>审校者简介<br/>第一部分 从设计模式开始<br/>第1章 设计模式和相关原则 2<br/>1.1 设计模式的历史 2<br/>1.1.1 设计模式的兴起 3<br/>1.1.2 关于GoF模式的更多思考 3<br/>1.1.3 在本书中我们如何描述设计模式 4<br/>1.2 软件设计原则 4<br/>1.2.1 SOLID原则 5<br/>1.2.2 DRY原则 6<br/>1.2.3 KISS原则 6<br/>1.2.4 POLA原则 7<br/>1.2.5 YAGNI原则 7<br/>1.2.6 POLP原则 8<br/>1.3 软件质量目标 8<br/>1.3.1 可重用性 8<br/>1.3.2 性能 9<br/>1.3.3 可维护性 10<br/>1.3.4 安全性 11<br/>1.4 小结 11<br/>1.5 问题 12<br/>第二部分 Julia基础<br/>第2章 模块、包和数据类型 14<br/>2.1 技术要求 14<br/>2.2 程序开发中不断增长的痛点 15<br/>2.2.1 数据科学项目 15<br/>2.2.2 企业应用程序 15<br/>2.2.3 适应增长 16<br/>2.3 使用命名空间、模块和包 16<br/>2.3.1 理解命名空间 17<br/>2.3.2 创建模块和包 17<br/>2.3.3 创建子模块 23<br/>2.3.4 在模块中管理文件 24<br/>2.4 管理包的依赖关系 24<br/>2.4.1 理解语义版本控制方案 24<br/>2.4.2 指定Julia包的依赖关系 25<br/>2.4.3 避免循环依赖 28<br/>2.5 设计抽象类型和具体类型 29<br/>2.5.1 设计抽象类型 29<br/>2.5.2 设计具体类型 33<br/>2.5.3 使用类型运算符 37<br/>2.5.4 抽象类型和具体类型的差异 39<br/>2.6 使用参数化类型 39<br/>2.6.1 使用参数化复合类型 40<br/>2.6.2 使用参数化抽象类型 42<br/>2.7 数据类型转换 43<br/>2.7.1 执行简单的数据类型转换 44<br/>2.7.2 注意有损转换 44<br/>2.7.3 理解数字类型转换 45<br/>2.7.4 重温自动转换规则 45<br/>2.7.5 理解函数分派规则 47<br/>2.8 小结 48<br/>2.9 问题 49<br/>第3章 设计函数和接口 50<br/>3.1 技术要求 50<br/>3.2 设计函数 51<br/>3.2.1 用例——太空战争游戏 51<br/>3.2.2 定义函数 51<br/>3.2.3 注释函数参数 52<br/>3.2.4 使用可选参数 55<br/>3.2.5 使用关键字参数 57<br/>3.2.6 接受可变数量的参数 58<br/>3.2.7 splatting参数 59<br/>3.2.8 第一类实体函数 60<br/>3.2.9 开发匿名函数 61<br/>3.2.10 使用do语法 62<br/>3.3 理解多重分派 63<br/>3.3.1 什么是分派 63<br/>3.3.2 匹配最窄类型 64<br/>3.3.3 分派多个参数 65<br/>3.3.4 分派过程中可能存在的歧义 67<br/>3.3.5 歧义检测 68<br/>3.3.6 理解动态分派 70<br/>3.4 利用参数化方法 71<br/>3.4.1 使用类型参数 71<br/>3.4.2 使用类型参数替换抽象类型 72<br/>3.4.3 在使用参数时强制类型一致性 73<br/>3.4.4 从方法签名中提取类型信息 74<br/>3.5 使用接口 75<br/>3.5.1 设计和开发接口 75<br/>3.5.2 处理软契约 79<br/>3.5.3 使用特质 80<br/>3.6 小结 81<br/>3.7 问题 81<br/>第4章 宏和元编程 82<br/>4.1 技术要求 83<br/>4.2 理解元编程的需求 83<br/>4.2.1 使用@time宏测量性能 83<br/>4.2.2 循环展开 84<br/>4.3 使用表达式 86<br/>4.3.1 试用解析器 86<br/>4.3.2 手动构造表达式对象 88<br/>4.3.3 尝试更复杂的表达式 90<br/>4.3.4 计算表达式 93<br/>4.3.5 在表达式中插入变量 94<br/>4.3.6 对符号使用QuoteNode 95<br/>4.3.7 在嵌套表达式中插值 96<br/>4.4 开发宏 97<br/>4.4.1 什么是宏 97<br/>4.4.2 编写第一个宏 98<br/>4.4.3 传递字面量参数 98<br/>4.4.4 传递表达式参数 99<br/>4.4.5 理解宏扩展过程 100<br/>4.4.6 操作表达式 101<br/>4.4.7 理解卫生宏 104<br/>4.4.8 开发非标准字符串字面量 105<br/>4.5 使用生成函数 107<br/>4.5.1 定义生成函数 108<br/>4.5.2 检查生成函数参数 109<br/>4.6 小结 110<br/>4.7 问题 110<br/>第三部分 实现设计模式<br/>第5章 可重用模式 114<br/>5.1 技术要求 114<br/>5.2 委托模式 114<br/>5.2.1 在银行用例中应用委托模式 115<br/>5.2.2 现实生活中的例子 119<br/>5.2.3 注意事项 120<br/>5.3 Holy Traits模式 120<br/>5.3.1 重温个人资产管理用例 121<br/>5.3.2 实现Holy Traits模式 122<br/>5.3.3 重温一些常见用法 126<br/>5.3.4 使用SimpleTraits.jl包 129<br/>5.4 参数化类型模式 130<br/>5.4.1 在股票交易应用程序中使用删除文本参数化类型 132<br/>5.4.2 现实生活中的例子 135<br/>5.5 小结 138<br/>5.6 问题 139<br/>第6章 性能模式 140<br/>6.1 技术要求 141<br/>6.2 全局常量模式 141<br/>6.2.1 使用全局变量对性能进行基准测试 141<br/>6.2.2 享受全局常量的速度 143<br/>6.2.3 使用类型信息注释变量 143<br/>6.2.4 理解常量为何有助于性能 144<br/>6.2.5 将全局变量作为函数参数传递 145<br/>6.2.6 将变量隐藏在全局常量中 145<br/>6.2.7 现实生活中的例子 146<br/>6.2.8 注意事项 147<br/>6.3 数组结构模式 147<br/>6.3.1 使用业务领域模型 148<br/>6.3.2 使用不同的数据布局提高性能 150<br/>6.3.3 注意事项 155<br/>6.4 共享数组模式 155<br/>6.4.1 风险管理用例介绍 156<br/>6.4.2 准备示例数据 157<br/>6.4.3 高性能解决方案概述 158<br/>6.4.4 在共享数组中填充数据 159<br/>6.4.5 直接在共享数组上分析数据 161<br/>6.4.6 理解并行处理的开销 163<br/>6.4.7 配置共享内存使用情况 164<br/>6.4.8 确保工作进程可以访问代码和数据 166<br/>6.4.9 避免并行进程之间的竞态 167<br/>6.4.10 使用共享数组的约束 167<br/>6.5 记忆模式 168<br/>6.5.1 斐波那契函数介绍 168<br/>6.5.2 改善斐波那契函数的性能 169<br/>6.5.3 自动化构造记忆缓存 171<br/>6.5.4 理解泛型函数的约束 172<br/>6.5.5 支持具有多个参数的函数 173<br/>6.5.6 处理参数中的可变数据类型 174<br/>6.5.7 使用宏来记忆泛型函数 176<br/>6.5.8 现实生活中的例子 177<br/>6.5.9 注意事项 178<br/>6.5.10 使用Caching.jl包 178<br/>6.6 闸函数模式 180<br/>6.6.1 识别类型不稳定的函数 181<br/>6.6.2 理解性能影响 182<br/>6.6.3 开发闸函数 183<br/>6.6.4 处理类型不稳定的输出变量 183<br/>6.6.5 使用@inferred宏 186<br/>6.7 小结 187<br/>6.8 问 187<br/>第7章 可维护性模式 188<br/>7.1 技术要求 188<br/>7.2 子模块模式 189<br/>7.2.1 理解何时需要子模块 189<br/>7.2.2 理解传入耦合与传出耦合 190<br/>7.2.3 管理子模块 191<br/>7.2.4 在模块和子模块之间引用符号和函数 191<br/>7.2.5 删除双向耦合 193<br/>7.2.6 考虑拆分为顶层模块 195<br/>7.2.7 理解使用子模块的反论点 195<br/>7.3 关键字定义模式 195<br/>7.3.1 重温结构定义和构造函数 196<br/>7.3.2 在构造函数中使用关键字参数 196<br/>7.3.3 使用@kwdef宏简化代码 197<br/>7.4 代码生成模式 198<br/>7.4.1 文件日志记录器用例介绍 199<br/>7.4.2 函数定义的代码生成 201<br/>7.4.3 调试代码生成 202<br/>7.4.4 考虑代码生成以外的选项 204<br/>7.5 领域特定语言模式 205<br/>7.5.1 L系统介绍 206<br/>7.5.2 为L系统设计DSL 207<br/>7.5.3 重温L系统核心逻辑 208<br/>7.5.4 实现L系统的DSL 210<br/>7.6 小结 215<br/>7.7 问题 215<br/>第8章 鲁棒性模式 216<br/>8.1 技术要求 217<br/>8.2 访问器模式 217<br/>8.2.1 识别对象的隐式接口 217<br/>8.2.2 实现getter函数 218<br/>8.2.3 实现setter函数 219<br/>8.2.4 禁止直接访问字段 220<br/>8.3 属性模式 220<br/>8.3.1 延迟文件加载器介绍 220<br/>8.3.2 理解用于字段访问的点符号 222<br/>8.3.3 实现读取访问和延迟加载 223<br/>8.3.4 控制对对象字段的写入访问 226<br/>8.3.5 报告可访问字段 227<br/>8.4 let块模式 228<br/>8.4.1 网络爬虫用例介绍 228<br/>8.4.2 使用闭包将私有变量和函数隐藏起来 230<br/>8.4.3 限制长脚本或函数的变量范围 232<br/>8.5 异常处理模式 233<br/>8.5.1 捕捉和处理异常 233<br/>8.5.2 处理各种类型的异常 233<br/>8.5.3 在顶层处理异常 235<br/>8.5.4 跟随栈帧 236<br/>8.5.5 理解异常处理对性能的影响 238<br/>8.5.6 重试操作 239<br/>8.5.7 异常时选用nothing 241<br/>8.6 小结 242<br/>8.7 问题 243<br/>第9章 其他模式 244<br/>9.1 技术要求 244<br/>9.2 单例类型分派模式 245<br/>9.2.1 开发命令处理器 245<br/>9.2.2 理解单例类型 245<br/>9.2.3 使用Val参数化数据类型 246<br/>9.2.4 使用单例类型进行动态分派 247<br/>9.2.5 理解分派的性能优势 249<br/>9.3 打桩/模拟模式 251<br/>9.3.1 什么是测试替身 251<br/>9.3.2 信贷审批用例介绍 252<br/>9.3.3 使用打桩执行状态验证 253<br/>9.3.4 使用Mocking包实现打桩 255<br/>9.3.5 将多个打桩应用于同一函数 256<br/>9.3.6 使用模拟执行行为验证 257<br/>9.4 函数管道模式 259<br/>9.4.1 Hacker News分析用例介绍 260<br/>9.4.2 理解函数管道 264<br/>9.4.3 设计可组合函数 265<br/>9.4.4 为平均得分函数开发函数管道 266<br/>9.4.5 在函数管道中实现条件逻辑 269<br/>9.4.6 沿函数管道进行广播 270<br/>9.4.7 有关使用函数管道的注意事项 271<br/>9.5 小结 272<br/>9.6 问题 272<br/>第10章 反模式 273<br/>10.1 技术要求 273<br/>10.2 海盗反模式 274<br/>10.2.1 I类海盗—重新定义函数 274<br/>10.2.2 II类海盗—不用自己的类型扩展 275<br/>10.2.3 III类海盗—用自己的类型扩展,但目的不同 277<br/>10.3 窄参数类型反模式 279<br/>10.3.1 考虑参数类型的多种选项 279<br/>10.3.2 评估性能 284<br/>10.4 非具体字段类型反模式 285<br/>10.4.1 理解复合数据类型的内存布局 285<br/>10.4.2 设计复合类型时要考虑具体类型 287<br/>10.4.3 比较具体字段类型和非具体字段类型的性能 288<br/>10.5 小结 289<br/>10.6 问题 289<br/>第11章 传统的面向对象模式 290<br/>11.1 技术要求 290<br/>11.2 创建型模式 291<br/>11.2.1 工厂方法模式 291<br/>11.2.2 抽象工厂模式 292<br/>11.2.3 单例模式 294<br/>11.2.4 建造者模式 296<br/>11.2.5 原型模式 297<br/>11.3 行为型模式 298<br/>11.3.1 责任链模式 298<br/>11.3.2 中介者模式 300<br/>11.3.3 备忘录模式 302<br/>11.3.4 观察者模式 304<br/>11.3.5 状态模式 305<br/>11.3.6 策略模式 306<br/>11.3.7 模板方法模式 308<br/>11.3.8 命令模式、解释器模式、迭代器模式和访问者模式 310<br/>11.4 结构型模式 310<br/>11.4.1 适配器模式 310<br/>11.4.2 组合模式 313<br/>11.4.3 享元模式 314<br/>11.4.4 桥接模式、装饰器模式和外观模式 316<br/>11.5 小结 316<br/>11.6 问题 317<br/>第四部分 进阶主题<br/>第12章 继承与变体 320<br/>12.1 技术要求 320<br/>12.2 实现继承和行为子类型化 321<br/>12.2.1 理解实现继承 321<br/>12.2.2 理解行为子类型化 323<br/>12.2.3 正方形–矩形问题 324<br/>12.2.4 脆弱的基类问题 326&a
孔网啦啦啦啦啦纺织女工火锅店第三课
开播时间:09月02日 10:30
即将开播,去预约
直播中,去观看