8 (905) 200-03-37 Владивосток
с 09:00 до 19:00
CHN - 1.14 руб. Сайт - 21.13 руб.

[设计模式就该这样学 基于经典框架源码和真实业务场景+全栈技能修炼 软件架构设计模式与应用框架之间的区别]

Цена: 3 424руб.    (¥162)
Артикул: 623732148896

Вес товара: ~0.7 кг. Указан усредненный вес, который может отличаться от фактического. Не включен в цену, оплачивается при получении.

Этот товар на Таобао Описание товара
Продавец:品悦轩图书专营店
Адрес:Пекин
Рейтинг:
Всего отзывов:0
Положительных:0
Добавить в корзину
Другие товары этого продавца
¥148.53 138руб.
¥ 290 229.14 841руб.
¥ 99 64.31 359руб.
¥581 226руб.


[基本信息.jpg]

[书名:设计模式就该这样学] 

[定价:118.00元]

[出版社: 电子工业出版社]

[ISBN:9787121392085]

[版次:1]

[定价:118]

[出版时间:2020-07-01]


[书名: 全栈技能修炼:使用Angular和Spring boot打造全栈应用]

[出版时间: 2019年9月]

[定价: 109.00元]

[开本: 16开]

[是否是套装: 否]

[出版社名称: 电子工业出版社]



[内容简介.jpg]

[书名:设计模式就该这样学] 

[本书从软件架构设计的通用技能UML开始,重点介绍常用的类图和时序图;然后介绍软件架构设计常用的七大原则;接着结合JDK、Spring、MyBatis、Tomcat、Netty等经典框架源码对GoF的23种设计模式展开分析,并结合作者多年]&[ldquo;踩坑填坑]&[rdquo;和]&[ldquo;教学答疑]&[rdquo;经验,用深刻、全面、通俗、生动、有趣、接地气的方式结合真实业务场景分析每种设计模式,治愈]&[ldquo;设计模式选择困难症]&[rdquo;;之后介绍4种常用的新设计模式;后总结软件架构、设计模式与应用框架之间的区别。]

[如果你已经有编程经验,那么你一定要学一遍设计模式;如果你是资深工程师或者架构师,那么本书将颠覆你以前的认知;如果你觉得设计模式晦涩难懂,那么本书一定能让你醍醐灌顶;如果你看框架源码总是力不从心,那么本书就是]&[ldquo;内功心法]&[rdquo;。]


[书名: 全栈技能修炼:使用Angular和Spring boot打造全栈应用]

[本书涉及很多平台、框架和类库等,主要有前端使用的Angular,后端使用的Spring Boot框架、Spring Security安全框架,数据库涉及MongoDB、Elasticsearch和Redis。此外,还会学习函数式编程、响应式编程(RJS)、Redu等理念,Swagger、JaVers等工具及Rest、WebSocket、微服务等概念。一本书是无法深入这些技术细节的,这也不是本书的目标。希望通过本书,可以帮助读者开启一扇门,真正掌握这些让人眼花缭乱的编程语言、框架、平台、IDE等技术背后的编程思想。]



[目录.jpg]

[书名:设计模式就该这样学] 

[1篇 ]&[nbsp;软件设计前奏篇]

[1章 ]&[nbsp;重新认识UML2]

1.1&[nbsp;UML的定义2]

1.2&[nbsp;UML应用场景2]

1.3&[nbsp;UML基本构件简介3]

1.3.1&[nbsp;事物3]

1.3.2&[nbsp;关系5]

1.3.3&[nbsp;图6]

[2章 ]&[nbsp;设计模式常用的UML图7]

2.1&[nbsp;类图7]

2.1.1&[nbsp;继承关系8]

2.1.2&[nbsp;实现关系8]

2.1.3&[nbsp;组合关系9]

2.1.4&[nbsp;聚合关系10]

2.1.5&[nbsp;关联关系11]

2.1.6&[nbsp;依赖关系12]

2.1.7&[nbsp;类关系记忆技巧14]

2.2&[nbsp;时序图15]

2.2.1&[nbsp;时序图的作用15]

2.2.2&[nbsp;时序图组成元素16]

2.2.3&[nbsp;时序图组合片段17]

2.2.4&[nbsp;时序图画法及应用实践19]

[3章 ]&[nbsp;七大软件架构设计原则22]

3.1&[nbsp;开闭原则22]

3.1.1&[nbsp;开闭原则的定义22]

3.1.2&[nbsp;使用开闭原则解决实际问题23]

3.2&[nbsp;依赖倒置原则24]

3.2.1&[nbsp;依赖倒置原则的定义24]

3.2.2&[nbsp;使用依赖倒置原则解决实际问题25]

3.3&[nbsp;单一职责原则28]

3.3.1&[nbsp;单一职责原则的定义28]

3.3.2&[nbsp;使用单一职责原则解决实际问题28]

3.4&[nbsp;接口隔离原则31]

3.4.1&[nbsp;接口隔离原则的定义31]

3.4.2&[nbsp;使用接口隔离原则解决实际问题31]

3.5&[nbsp;迪米特法则33]

3.5.1&[nbsp;迪米特法则的定义33]

3.5.2&[nbsp;使用迪米特法则解决实际问题33]

3.6&[nbsp;里氏替换原则35]

3.6.1&[nbsp;里氏替换原则的定义35]

3.6.2&[nbsp;使用里氏替换原则解决实际问题36]

3.7&[nbsp;合成复用原则40]

3.7.1&[nbsp;合成复用原则的定义40]

3.7.2&[nbsp;使用合成复用原则解决实际问题40]

3.8&[nbsp;软件架构设计原则小结42]

[4章 ]&[nbsp;关于设计模式的那些事儿43]

4.1&[nbsp;本书与GOF的《设计模式》的关系43]

4.2&[nbsp;为什么一定要学习设计模式45]

4.2.1&[nbsp;写出优雅的代码45]

4.2.2&[nbsp;更好地重构项目47]

4.2.3&[nbsp;经典框架都在用设计模式解决问题58]

[2篇 ]&[nbsp;创建型设计模式]

[5章 ]&[nbsp;简单工厂模式60]

5.1&[nbsp;工厂模式的历史由来60]

5.2&[nbsp;简单工厂模式概述61]

5.2.1&[nbsp;简单工厂模式的定义61]

5.2.2&[nbsp;简单工厂模式的应用场景61]

5.2.3&[nbsp;简单工厂模式的UML类图61]

5.2.4&[nbsp;简单工厂模式的通用写法62]

5.3&[nbsp;使用简单工厂模式封装产品创建细节63]

5.4&[nbsp;简单工厂模式在框架源码中的应用66]

5.4.1&[nbsp;简单工厂模式在JDK源码中的应用66]

5.4.2&[nbsp;简单工厂模式在Logback源码中的应用67]

5.5&[nbsp;简单工厂模式扩展67]

5.5.1&[nbsp;简单工厂模式的优点67]

5.5.2&[nbsp;简单工厂模式的缺点67]

[6章 ]&[nbsp;工厂方法模式68]

6.1&[nbsp;工厂方法模式概述68]

6.1.1&[nbsp;工厂方法模式的定义68]

6.1.2&[nbsp;工厂方法模式的应用场景69]

6.1.3&[nbsp;工厂方法模式的UML类图69]

6.1.4&[nbsp;工厂方法模式的通用写法70]

6.2&[nbsp;使用工厂方法模式实现产品扩展71]

6.3&[nbsp;工厂方法模式在LOGBACK源码中的应用72]

6.4&[nbsp;工厂方法模式扩展73]

6.4.1&[nbsp;工厂方法模式的优点73]

6.4.2&[nbsp;工厂方法模式的缺点73]



[7章 ]&[nbsp;抽象工厂模式74]

7.1&[nbsp;抽象工厂模式概述74]

7.1.1&[nbsp;抽象工厂模式的定义74]

7.1.2&[nbsp;关于产品等级结构和产品族75]

7.1.3&[nbsp;抽象工厂模式的应用场景76]

7.1.4&[nbsp;抽象工厂模式的UML类图76]

7.1.5&[nbsp;抽象工厂模式的通用写法76]

7.2&[nbsp;使用抽象工厂模式解决实际问题78]

7.2.1&[nbsp;使用抽象工厂模式支持产品扩展78]

7.2.2&[nbsp;使用抽象工厂模式重构数据库连接池81]

7.3&[nbsp;抽象工厂模式在SPRING源码中的应用88]

7.4&[nbsp;抽象工厂模式扩展89]

7.4.1&[nbsp;抽象工厂模式的优点89]

7.4.2&[nbsp;抽象工厂模式的缺点90]

[8章 ]&[nbsp;单例模式91]

8.1&[nbsp;单例模式概述91]

8.1.1&[nbsp;单例模式的定义91]

8.1.2&[nbsp;单例模式的应用场景91]

8.1.3&[nbsp;单例模式的UML类图92]

8.1.4&[nbsp;单例模式的通用写法92]

8.2&[nbsp;使用单例模式解决实际问题93]

8.2.1&[nbsp;饿汉式单例写法的弊端93]

8.2.2&[nbsp;还原线程破坏单例的事故现场93]

8.2.3&[nbsp;双重检查锁单例写法闪亮登场97]

8.2.4&[nbsp;看似的静态内部类单例写法100]

8.2.5&[nbsp;还原反破坏单例模式的事故现场101]

8.2.6&[nbsp;更加优雅的枚举式单例写法问世103]

8.2.7&[nbsp;还原反序列化破坏单例模式的事故现场108]

8.2.8&[nbsp;使用容器式单例写法解决大规模生产单例的问题114]


[书名: 全栈技能修炼:使用Angular和Spring boot打造全栈应用]

[1章 技术的选型和环境搭建 1] 
[1.1 技术选型 1] 
[1.1.1 前端框架选型 2] 
[1.1.2 后端框架选型 3] 
[1.1.3 数据库选型 3] 
[1.2 环境搭建 5] 
[1.2.1 基础开发环境安装 5] 
[1.2.2 IDE 的选择 7] 
[1.2.3 字体的选择 8] 
[1.2.4 定义通用的代码格式 9] 
[1.3 工程项目的结构 10] 
[1.3.1 前端项目 10] 
[1.3.2 后端项目 13] 
[1.3.3 整体项目工程的文件结构 14] 
[2章 使用Angular快速构造前端原型 17] 
[2.1 Angular 基础概念 17] 
[2.1.1 安装 Angular CLI 17] 
[2.1.2 依赖性注入 22] 
[2.1.3 组件 27] 
[2.1.4 指令 28] 
[2.1.5 管道 30] 
[2.1.6 模块 31] 
[2.1.7 模板驱动型表单 33] 
[2.1.8 响应式表单 46] 
[2.2 Angular Material 介绍 55] 
[2.2.1 组件类别 55] 
[2.2.2 布局控件:Sidenav 57] 
[2.2.3 Fle 布局和 Angular Fle-layout 60] 
[2.2.4 封装 Header/Footer/Sidebar 62] 
[2.3 添加主题支持 78] 
[2.3.1 Material Design 中对于主题的约束 79] 
[2.3.2 主题的明与暗 79] 
[2.3.3 Angular Material 中的主题 80] 
[2.4 容器化 Angular 应用 83] 
[2.4.1 什么是容器 83] 
[2.4.2 安装 Docker 84] 
[2.4.3 镜像仓库加速 85] 
[2.4.4 创建 Angular 的 Docker 镜像 85] 
[2.4.5 启动容器 87] 
[2.4.6 使用 docker-compose 组织复杂的环境配置 88] 
[2.4.7 使用 .dockerigre 文件 91] 
[3章 何谓后端 92] 
[3.1 创建一个 Spring Boot 工程 93] 
[3.1.1 通过 Gradle 创建 93] 
[3.1.2 通过 Maven 创建 99] 
[3.1.3 通过 IDE 创建 103] 
[3.1.4 工程项目的组织 105] 
[3.2 API 的构建可以如此简单 109] 
[3.2.1 API 工程结构 109] 
[3.2.2 领域对象 111] 
[3.2.3 构造 Controller 112] 
[3.2.4 启动服务 113] 
[3.2.5 测试 API 115] 
[3.3 MongoDB 支撑的 API 116] 
[3.3.1 什么是 SQL 116] 
[3.3.2 MongoDB 的集成 119] 
3.3.3 HATEOAS 124 
3.3.4&[ldquo;魔法]&[rdquo;的背后 129] 
[3.3.5 让后端也能热更新 132] 
[3.4 容器化后端 135] 
[3.4.1 手动创建镜像 135] 
[3.4.2 使用 Gradle 自动化 Docker 任务 137] 
[3.4.3 使用 docker-compose 组合服务 141] 
[3.4.4 IDEA 中的 Gradle 支持 142] 
[3.4.5 在容器中调试 143] 
[4章 登录鉴权功能的构建 145] 
[4.1 模块化和组件化 145] 
[4.1.1 登录的领域模型构建 145] 
[4.1.2 前端页面设计 147] 
[4.2 响应式编程初探 166] 
[4.2.1 不同的视角 166] 
[4.2.2 实现一个计数器 169] 
[4.2.3 为什么要使用 R 177] 
[4.2.4 Observable 的性质 178] 
[4.2.5 RJS 的调试 180] 
[4.3 前端服务层 184] 
[4.3.1 构建]&[ldquo;伪]&[rdquo;服务 184] 
[4.3.2 构建]&[ldquo;聪明组件]” 188 
[4.3.3 路由处理 192] 
[4.4 完成忘记密码前端设计 194] 
[4.4.1 使用 RJS 打造短信验证码控件 194] 
[4.4.2 忘记密码向导]&[ldquo;笨组件]” 199 
[4.4.3 忘记密码的]&[ldquo;聪明组件]” 203 

[5章 构建后端API 205] 
[5.1 HyperMedia API 与传统 API 205] 
[5.1.1 领域对象 205] 
[5.1.2 API的可见控制 211] 
[5.1.3 传统的 API 实现模式 218] 
[5.2 Spring Data 中的查询 221] 
[5.2.1 基础概念]——Repository 221 
[5.2.2 查询方式 223] 
[5.2.3 复杂类型查询 226] 
[5.2.4 自定义查询 228] 
[5.2.5 自定义 Repository 229] 
[5.3 Controller 的构建 230] 
[5.3.1 改造 TaskRepo 和 UserRepo 230] 
[5.3.2 实现 Controller 231] 
[5.3.3 登录 234] 
[5.3.4 注册 235] 
[5.3.5 忘记密码**步:验证手机 236] 
[5.3.6 忘记密码二步:重置密码 244] 
[5.3.7 API 的异常处理 246] 
[5.4 构建安全的 API 接口 255] 
[5.4.1 为什么要保护 API 256] 
[5.4.2 什么是JWT 256] 
[5.4.3 JWT的生成和解析 259] 
[5.4.4 权限的设计 260] 
[5.4.5 使用 Spring Security 规划角色安全 261] 
[5.4.6 在 Spring Boot 中启用 Spring Security 265] 
[5.4.7 改造用户对象 266] 
[5.4.8 构建 JWT token 工具类 268] 
[5.4.9 如何检查任何请求的授权信息 272] 
[5.4.10 得到用户信息 275] 
[5.4.11 配置 Spring Security 277] 
[5.4.12 使用 JWT 进行 API 访问 292] 
[5.5 跨域和 API 文档 305] 
[5.5.1 跨域解决方案]——CORS 305 
[5.5.2 API 文档 309] 
[6章 前端和API的配合 322] 
[6.1 响应式的 HTTP API 处理 322] 
[6.1.1 Angular 中的 HTTP 服务 322] 
[6.1.2 Angular 的开发环境配置 323] 
[6.1.3 在前端服务中使用 HttpClient 327] 
[6.1.4 更改注册表单控件 331] 
[6.2 RJs进阶 332] 
[6.2.1 改造登录表单 332] 
[6.2.2 RJs的高阶作符 333] 
[6.2.3 合并作符 339] 
[6.3 HTTP 拦截 342] 
[6.3.1 实现一个简单的 HttpInterceptor 342] 
[6.3.2 鉴权HttpInterceptor 343] 
[6.3.3 一个日志拦截器 345] 
[6.4 Angular 路由 346] 
[6.4.1 基准锚链接 346] 
[6.4.2 Router 模块的简介 347] 
[6.4.3 获取父路由的参数 354] 
[6.4.4 获得前一个路由 354] 
6.4.5 Activated Route 354 
[6.5 安全守卫 355] 
[6.5.1 激活守卫 356] 
[6.5.2 激活子路由守卫 357] 
[6.5.3 加载守卫 358] 
[6.5.4 出守卫 359] 
[6.5.5 数据预获取守卫 359] 
[7章 后端不只是API 361] 
[7.1 缓存 361] 
[7.1.1 配置 Cache 362] 
[7.1.2 常用的缓存注解 364] 
[7.1.3 测试缓存是否生效 366] 
[7.2 Redis 作为缓存框架 368] 
[7.2.1 Redis 的安装配置 369] 
[7.2.2 在 Spring Boot 中集成 Redis 370] 
7.2.3 Redisson 373 
[7.3 使用 ElasticSearch 提升搜索性能 375] 
[7.3.1 配置 375] 
[7.3.2 构建用户查询 API 379] 
[7.4 Spring Boot Actuator 和数据审计 390] 
[7.4.1 初窥审计事件 390] 
[7.4.2 实现应用的数据审计 394] 
[7.4.3 JaVers 和 Spring Boot 集成 396] 
[7.5 WebSocket 实时通信服务 401] 
[7.5.1 HTTP 和 WebSocket 的区别和联系 402] 
[7.5.2 何时使用 WebSocket 403] 
7.5.3 STOMP 403 
[7.5.4 WebSocket 配置 404] 
[7.5.5 WebScoket 安全 406] 
[7.5.6 建立一个实时消息 Controller 409] 
[7.5.7 测试 WebSocket 409] 
[7.6 Spring Boot 的自动化测试 411] 
[8章 前端的工程化 422] 
[8.1 使用 Redu 管理状态 423] 
[8.1.1 何时需要使用 Redu 423] 
[8.1.2 Redu 的核心概念 424] 
[8.1.3 在 Angular 中使用 Redu 429] 
8.1.4 Selector—&[mdash;状态选择器 434] 
[8.2 使用 Effects管理的副作用 437] 
[8.3 使用 @ngr/entity 提升生产效率 441] 
[8.4 服务端渲染 446] 
[8.4.1 Angular Universal 的工作机理 447] 
[8.4.2 安装依赖 447] 
[8.4.3 添加服务器端渲染模块 448] 
[8.4.4 使用 de.js Epress 构建服务器 450] 
[8.4.5 服务器端渲染中出现重复请求的处理 453] 
[9章 Spring Cloud打造微服务 455] 
[9.1 微服务的体系架构 455] 
[9.1.1 服务即组件 456] 
[9.1.2 微服务架构下的组织机构变化 456] 
[9.1.3 产品化服务 458] 
[9.1.4 持续集成和持续发布 458] 
[9.1.5 监控和报警 458] 
[9.1.6 Spring Cloud 项目依赖 459] 
[9.2 配置服务和发现服务 461] 
[9.2.1 配置中心是什么 461] 
[9.2.2 发现服务 465] 
[9.3 监控服务和路由服务 472] 
9.3.1 Spring Boot Admin 473 
[9.3.2 路由服务 478] 
[9.4 微服务的远程调用 485] 
9.4.1 Feign Client 485 
[9.4.2 负载均衡 490] 
[附录A 常见云服务使用问题汇总 492]
............