成功加入购物车

去购物车结算 X
淘书宝店
  • Julia设计模式/华章程序员书库
  • Julia设计模式/华章程序员书库
  • Julia设计模式/华章程序员书库
  • Julia设计模式/华章程序员书库

Julia设计模式/华章程序员书库

举报

正版图书,可开发票,请放心购买。

  • 出版时间: 
  • 装帧:    平装
  • 开本:    16开
  • ISBN:  9787111689492
  • 出版时间: 
  • 装帧:  平装
  • 开本:  16开

售价 89.16 6.9折

定价 ¥129.00 

品相 全新

优惠 满包邮

优惠 满减券
    运费
    本店暂时无法向该地区发货

    延迟发货说明

    时间:
    说明:

    上书时间2023-09-11

    数量
    库存2
    微信扫描下方二维码
    微信扫描打开成功后,点击右上角”...“进行转发

    卖家超过10天未登录

    • 商品详情
    • 店铺评价
    手机购买
    微信扫码访问
    • 货号:
      31244917
      商品描述:
      作者简介


      目录
      序言<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

    即将开播,去预约
    直播中,去观看