登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入   新用戶註冊
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / 物流,時效:出貨後2-4日

2024年11月出版新書

2024年10月出版新書

2024年09月出版新書

2024年08月出版新書

2024年07月出版新書

2024年06月出版新書

2024年05月出版新書

2024年04月出版新書

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

2023年10月出版新書

『簡體書』Spring Boot 2精髓:从构建小系统到架构分布式大系统

書城自編碼: 3077820
分類: 簡體書→大陸圖書→計算機/網絡程序設計
作 者: 李家智 著
國際書號(ISBN): 9787121328251
出版社: 电子工业出版社
出版日期: 2017-10-01
版次: 1
頁數/字數: 384/460000
書度/開本: 16开 釘裝: 平装

售價:NT$ 569

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
全球城市案例研究2023:基于网络的合作与竞争国际经验借鉴
《 全球城市案例研究2023:基于网络的合作与竞争国际经验借鉴 》

售價:NT$ 908.0
引爆:炸药、硝酸盐和现代世界的形成
《 引爆:炸药、硝酸盐和现代世界的形成 》

售價:NT$ 388.0
人类星球:我们如何创造了人类世(企鹅·鹈鹕丛书013)
《 人类星球:我们如何创造了人类世(企鹅·鹈鹕丛书013) 》

售價:NT$ 418.0
伏候圣裁:中国古代的君主与政治
《 伏候圣裁:中国古代的君主与政治 》

售價:NT$ 449.0
艺术图像学研究(第一辑)
《 艺术图像学研究(第一辑) 》

售價:NT$ 857.0
摆脱强迫的人生(修订版)
《 摆脱强迫的人生(修订版) 》

售價:NT$ 403.0
知宋·宋代之司法
《 知宋·宋代之司法 》

售價:NT$ 454.0
空间与政治
《 空间与政治 》

售價:NT$ 398.0

建議一齊購買:

+

NT$ 569
《 架构探险:轻量级微服务架构(下册) 》
+

NT$ 641
《 图解Java多线程设计模式 》
+

NT$ 569
《 架构解密:从分布式到微服务 》
+

NT$ 497
《 Spring Cloud与Docker微服务架构实战 》
+

NT$ 641
《 Spring Cloud微服务实战 》
+

NT$ 570
《 亿级流量网站架构核心技术——跟开涛学搭建高可用高并发系统 》
編輯推薦:
1.内容丰富,涵盖Spring Boot框架、Spring MVC、视图技术、数据库访问技术,并且介绍多环境部署、自动装配、单元测试等高级特性,包括使用Spring实现RESTful架构,在Spring Boot框架下使用Redis、MongoDB、ZooKeeper、Elasticsearch等流行技术,使用Spring Session实现系统水平扩展,使用Spring Cache提高系统性能。
2.面对系统模块增加,性能和吞吐量要求增加等场景时,介绍如何平滑地用Spring Boot实现分布式架构
內容簡介:
Spring Boot是目前Spring技术体系中炙手可热的框架之一,既可用于构建业务复杂的企业应用系统,也可以开发高性能和高吞吐量的互联网应用。Spring Boot框架降低了Spring技术体系的使用门槛,简化了Spring应用的搭建和开发过程,提供了流行的第三方开源技术的自动集成。本书系统介绍了Spring Boot 2的主要技术,侧重于两个方面,一方面是极速开发一个Web应用系统,详细介绍Spring Boot框架、Spring MVC、视图技术、数据库访问技术,并且介绍多环境部署、自动装配、单元测试等高级特性;另一方面,当系统模块增加,性能和吞吐量要求增加时,如何平滑地用Spring Boot实现分布式架构,也会在本书后半部分介绍,包括使用Spring实现RESTful架构,在Spring Boot框架下使用Redis、MongoDB、ZooKeeper、Elasticsearch等流行技术,使用Spring Session实现系统水平扩展,使用Spring Cache提高系统性能。
關於作者:
李家智,出生在贵州,毕业于成都西南民族大学。现在就职于东方金科公司,担任架构师,负责公司技术产品研发。从事软件开发近20年,致力于Java和Java EE系统的架构和实现,对一切技术充满好奇,以知行合一要求自己。除了本书,也是国内流行开源Beetl模板语言和Dao工具BeetlSQL的作者。
目錄
第1章 Java EE简介
1.1 Java EE
1.1.1 Java EE架构
1.1.2 Java EE的缺点
1.2 Spring
1.2.1 Spring IoC容器和AOP
1.2.2 Spring的缺点
1.3 Spring Boot
1.4 Hello,Spring Boot
1.4.1 创建一个Maven工程
1.4.2 增加Web支持
1.4.3 Hello Spring Boot示例
1.4.4 使用热部署
1.4.5 添加REST支持
第2章 Spring Boot基础
2.1 检查Java环境与安装Java
2.2 安装和配置Maven
2.2.1 Maven介绍
2.2.2 安装Maven
2.2.3 设置Maven
2.2.4 使用IDE设置Maven
2.2.5 Maven的常用命令
2.3 Spring核心技术
2.3.1 Spring的历史
2.3.2 Spring容器介绍
2.3.3 Spring AOP介绍
第3章 MVC框架
3.1 集成MVC框架
3.1.1 引入依赖
3.1.2 Web应用目录结构
3.1.3 Java包名结构
3.2 使用Controller
3.3 URL映射到方法
3.3.1 @RequestMapping
3.3.2 URL路径匹配
3.3.3 HTTP method匹配
3.3.4 consumes和produces
3.3.5 params和header匹配
3.4 方法参数
3.4.1 PathVariable
3.4.2 Model&ModelAndView
3.4.3 JavaBean接受HTTP参数
3.4.4 @RequsetBody接受JSON
3.4.5 MultipartFile
3.4.6 @ModelAttribute
3.4.7 @InitBinder
3.5 验证框架
3.5.1 JSR-303
3.5.2 MVC中使用@Validated
3.5.3 自定义校验
3.6 WebMvcConfigurer
3.6.1 拦截器
3.6.2 跨域访问
3.6.3 格式化
3.6.4 注册Controller
3.7 视图技术
3.7.1 使用Freemarker
3.7.2 使用Beetl
3.7.3 使用Jackson
3.7.4 Redirect和Forward
3.8 通用错误处理
3.9 @Service和@Transactional
3.9.1 声明一个Service类
3.9.2 事务管理
3.10 curl命令
第4章 视图技术
4.1 Beetl模板引擎
4.1.1 安装Beetl
4.1.2 设置定界符号和占位符
4.1.3 配置Beetl
4.1.4 groupTemplate
4.2 使用变量
4.2.1 全局变量
4.2.2 局部变量
4.2.3 共享变量
4.2.4 模板变量
4.3 表达式
4.3.1 计算表达式
4.3.2 逻辑表达式
4.4 控制语句
4.4.1 循环语句
4.4.2 条件语句
4.4.3 try catch
4.5 函数调用
4.6 格式化函数
4.7 直接调用Java
4.8 标签函数
4.9 HTML标签
4.10 安全输出
4.11 高级功能
4.11.1 配置Beetl
4.11.2 自定义函数
4.11.3 自定义格式化函数
4.11.4 自定义标签函数
4.11.5 自定义HTML标签
4.11.6 布局
4.11.7 AJAX局部渲染
4.12 脚本引擎
4.13 JSON技术
4.13.1 在Spring Boot中使用Jackson
4.13.2 自定义ObjectMapper
4.13.3 Jackson的三种使用方式
4.13.4 Jackson树遍历
4.13.5 对象绑定
4.13.6 流式操作
4.13.7 Jackson注解
4.13.8 集合的反序列化
4.14 MVC分离开发
4.14.1 集成WebSimulate
4.14.2 模拟JSON响应
4.14.3 模拟模板渲染
第5章 数据库访问
5.1 配置数据源
5.2 Spring JDBC Template
5.2.1 查询
5.2.2 修改
5.2.3 JdbcTemplate增强
5.3 BeetlSQL介绍
5.3.1 BeetlSQL功能概览
5.3.2 添加Maven依赖
5.3.3 配置BeetlSQL
5.3.4 SQLManager
5.3.5 使用SQL文件
5.3.6 Mapper
5.3.7 使用实体
5.4 SQLManager内置CRUD
5.4.1 内置的插入API
5.4.2 内置的更新(删除)API
5.4.3 内置的查询API
5.4.4 代码生成方法
5.5 使用sqlId
5.5.1 md文件命名
5.5.2 md文件构成
5.5.3 调用sqlId
5.5.4 翻页查询
5.5.5 TailBean
5.5.6 ORM查询
5.5.7 其他API
5.5.8 Mapper详解
5.6 BeetlSQL的其他功能
5.6.1 常用函数和标签
5.6.2 主键设置
5.6.3 BeetlSQL注解
5.6.4 NameConversion
5.6.5 锁
第6章 Spring Data JPA
6.1 集成Spring Data JPA
6.1.1 集成数据源
6.1.2 配置JPA支持
6.1.3 创建Entity
6.1.4 简化Entity
6.2 Repository
6.2.1 CrudRepository
6.2.2 PagingAndSortingRepository
6.2.3 JpaRepository
6.2.4 持久化Entity
6.2.5 Sort
6.2.6 Pageable和Page
6.2.7 基于方法名字查询
6.2.8 @Query查询
6.2.9 使用JPA Query
6.2.10 Example查询
第7章 Spring Boot配置
7.1 配置Spring Boot
7.1.1 服务器配置
7.1.2 使用其他Web服务器
7.1.3 配置启动信息
7.1.4 配置浏览器显示ico
7.2 日志配置
7.3 读取应用配置
7.3.1 Environment
7.3.2 @Value
7.3.3 @ConfigurationProperties
7.4 Spring Boot自动装配
7.4.1 @Configuration和@Bean
7.4.2 Bean条件装配
7.4.3 Class条件装配
7.4.4 Environment装配
7.4.5 其他条件装配
7.4.6 联合多个条件
7.4.7 Condition接口
7.4.8 制作Starter
第8章 部署Spring Boot应用
8.1 以jar文件运行
8.2 以war方式部署
8.3 多环境部署
8.4 @Profile注解
第9章 Testing单元测试
9.1 JUnit介绍
9.1.1 JUnit的相关概念
9.1.2 JUnit测试
9.1.3 Assert
9.1.4 Suite
9.2 Spring Boot单元测试
9.2.1 测试范围依赖
9.2.2 Spring Boot测试脚手架
9.2.3 测试Service
9.2.4 测试MVC
9.2.5 完成MVC请求模拟
9.2.6 比较MVC的返回结果
9.2.7 JSON比较
9.3 Mockito
9.3.1 模拟对象
9.3.2 模拟方法参数
9.3.3 模拟方法返回值
9.4 面向数据库应用的单元测试
9.4.1 @Sql
9.4.2 XLSUnit
9.4.3 XLSUnit的基本用法
第10章 REST
10.1 REST简介
10.1.1 REST风格的架构
10.1.2 使用api作为上下文
10.1.3 增加一个版本标识
10.1.4 标识资源
10.1.5 确定HTTP Method
10.1.6 确定HTTP Status
10.1.7 REST VS. WebService
10.2 Spring Boot集成REST
10.2.1 集成REST
10.2.2 @RestController
10.2.3 REST Client
10.3 Swagger UI
10.3.1 集成Swagger
10.3.2 Swagger规范
10.3.3 接口描述
10.3.4 查询参数描述
10.3.5 URI中的参数
10.3.6 HTTP头参数
10.3.7 表单参数
10.3.8 文件上传参数
10.3.9 整个请求体作为参数
10.4 模拟REST服务
第11章 MongoDB
11.1 安装MongoDB
11.2 使用shell
11.2.1 指定数据库
11.2.2 插入文档
11.2.3 查询文档
11.2.4 更新操作
11.2.5 删除操作
11.3 Spring Boot集成MongoDB
11.4 增删改查
11.4.1 增加API
11.4.2 根据主键查询API
11.4.3 查询API
11.4.4 修改API
11.4.5 删除API
11.4.6 使用MongoDatabase
11.4.7 打印日志
第12章 Redis
12.1 安装Redis
12.2 使用redis-cli
12.2.1 安全设置
12.2.2 基本操作
12.2.3 keys
12.2.4 Redis List
12.2.5 Redis Hash
12.2.6 Set
12.2.7 PubSub
12.3 Spring Boot集成Redis
12.4 使用StringRedisTemplate
12.4.1 opsFor
12.4.2 绑定Key的操作
12.4.3 RedisConnection
12.4.4 PubSub
12.5 序列化策略
12.5.1 默认序列化策略
12.5.2 自定义序列化策略
第13章 Elasticsearch
13.1 Elasticsearch介绍
13.1.1 安装Elasticsearch
13.1.2 Elasticsearch的基本概念
13.2 使用REST访问Elasticsearch
13.2.1 添加文档
13.2.2 根据主键查询
13.2.3 根据主键更新
13.2.4 根据主键删除
13.2.5 搜索文档
13.2.6 联合多个索引搜索
13.3 使用RestTemplate访问ES
13.3.1 创建Book
13.3.2 使用RestTemplate获取搜索结果
13.4 Spring Data Elastic
13.4.1 安装Spring Data
13.4.2 编写Entity
13.4.3 编写Dao
13.4.4 编写Controller
第14章 Cache
14.1 关于Cache
14.1.1 Cache的组件和概念
14.1.2 Cache的单体应用
14.1.3 使用专有的Cache服务器
14.1.4 使用一二级缓存服务器
14.2 Spring Boot Cache
14.3 注释驱动缓存
14.3.1 @Cacheable
14.3.2 Key生成器
14.3.3 @CachePut
14.3.4 @CacheEvict
14.3.5 @Caching
14.3.6 @CacheConfig
14.4 使用Redis Cache
14.4.1 集成Redis缓存
14.4.2 禁止缓存
14.4.3 定制缓存
14.5 Redis缓存原理
14.6 实现Redis两级缓存
14.6.1 实现TwoLevelCacheManager
14.6.2 创建RedisAndLocalCache
14.6.3 缓存同步说明
14.6.4 将代码组合在一起
第15章 Spring Session
15.1 水平扩展实现
15.2 Nginx的安装和配置
15.2.1 安装Nginx
15.2.2 配置Nginx
15.3 Spring Session
15.3.1 Spring Session介绍
15.3.2 使用Redis
15.3.3 Nginx Redis
第16章 Spring Boot和ZooKeeper
16.1 ZooKeeper
16.1.1 ZooKeeper的数据结构
16.1.2 安装ZooKeeper
16.1.3 ZooKeeper的基本命令
16.1.4 领导选取演示
16.1.5 分布式锁演示
16.1.6 服务注册演示
16.2 Spring Boot集成ZooKeeper
16.2.1 集成Curator
16.2.2 Curator API
16.3 实现分布式锁
16.4 服务注册
16.4.1 通过ServiceDiscovery注册服务
16.4.2 获取服务
16.5 领导选取
第17章 监控Spring Boot应用
17.1 安装Acutator
17.2 HTTP跟踪
17.3 日志查看
17.4 线程栈信息
17.5 内存信息
17.6 查看URL映射
17.7 查
內容試閱
前言
Java的各种开发框架发展了很多年,影响了一代又一代的程序员,现在无论是程序员,还是架构师,使用这些开发框架都面临着两方面的挑战。
? 一方面是要快速开发出系统,这就要求使用的开发框架尽量简单,无论是新手还是老手都能快速上手,快速掌握页面渲染、数据库访问等常用技术。也要求开发框架能尽量多地集成第三方工具,以便信手拈来。最后,还希望在开发调试过程中,方便代码更改后能快速重启。
? 另外一方面,当系统模块增加,用户使用量增加时,面对这样的挑战,系统拆分成为新的架构,程序员和架构师当然不希望换掉已有的开发框架,希望能由小而美的系统过渡到大而强的分布式系统。
环顾当前Java开源世界中的流行技术框架,能同时胜任这项工作的微乎其微,Play和ActFramework 都是不错的选择,国内的Nutz和JFinal的口碑也不错。但能同时满足快速开发和分布式系统架构的框架,还是群众基础最好、功能最全、基于Spring技术的Spring Boot框架。
内容介绍
本书系统介绍了Spring Boot 2.0的主要技术,侧重于两个方面,一方面是极速开发一个Web应用系统(第1~6章,包含Spring介绍、MVC、视图技术、数据库访问技术),随后介绍了Spring Boot的高级特性(第7~9章),包括多环境部署、自动装配、单元测试等技术。另外一方面,当系统模块增加,性能和吞吐量要求增加时,如何平滑地用Spring Boot来实现分布式架构,会在本书的第10~17章介绍。
阅读本书的读者,可以是Java新手,从未使用过任何Spring技术。也可以是用过Spring,但想进一步了解Spring Boot的开发者。如果你已经使用过Spring Boot,那么本书也非常适合你全面深入了解Spring Boot。
希望读者阅读完本书后,既能轻松快速构建Web应用系统,也能掌握分布式系统架构的实现。
上半部分介绍Spring Boot的基础技术。
第1章:介绍Java EE,然后指出其缺点,引入了流行的Spring,同时也说明Spring经过这么多年发展后暴露的一些缺点,从而引出Spring Boot,并以两个简要例子作为说明。
第2章:对Spring Boot应用的开发环境做了说明,包括Java开发环境的安装和配置,Maven的安装和配置,设置国内仓库镜像,还有常用的Maven命令。本章最后介绍Spring历史以及现有开发团队,并介绍Spring框架的AOP和IoC两个核心技术
第3章:介绍MVC技术,前半部分重点介绍URL映射到Controller,以及映射到Controller 方法的参数、参数类型转化、参数验证。后半部分简单介绍MVC中的视图技术Freemaker、Beetl,以及Jackson序列化技术。Beetl和Jackson将在第4章详细介绍。
第4章:介绍笔者的开源技术Beetl后端模板引擎,作为国内流行的模板引擎之一,具有简单易学、功能性能强大、支持MVC分离开发等特点。另外一部分详细介绍Jackson的JSON序列化技术。Jackson不仅作为Spring MVC中的JSON默认工具,也是Spring Boot分布式技术中常采用的JSON序列化技术。
第5章:介绍以SQL为中心的数据库访问工具BeetlSQL,这是笔者的另外一款流行Dao工具,SQL在markdown文件中管理,内置增删改查、轻量级ORM功能、代码生成、主从支持、跨多种数据库等特点,适合那些更喜欢以SQL方式访问数据库的开发者。
第6章:介绍以面向对象为中心的数据库访问工具Spring Data JPA。本章由易到难,先从Spring Data提供的功能入手,介绍如何完成数据库简单的增删改查功能,然后引入JPA来解决应用中不可避免的复杂SQL查询。
第7章:介绍Spring Boot高级特性,如常用的Spring Boot的配置、日志配置、应用配置的读取、Spring Boot自动装配技术和Spring Boot Starter实现。
第8章:介绍如何部署Spring Boot应用,包括可执行jar,以及通过war部署到应用服务器上。应用经常面对多个环境,如开发、测试,还有准线上、线上,以及多个Demo环境,Spring Boot提供Profile来实现多环境部署。
第9章:介绍单元测试概念,以及Spring Boot下的单元测试支持,包括MVC单元测试、Mock测试,以及面向数据库应用的测试方案。
下半部分介绍与Spring Boot相关的分布式技术。
第10章:介绍RESTful风格的架构,然后介绍Spring Boot如何集成以提供REST服务,使用RestTemplate调用REST服务。本章最后也重点介绍了Swagger 3.0技术,以方便REST的接口的交流、开发和测试。
第11章:介绍MongoDB的安装和使用,然后介绍Spring Boot如何集成MongoDB,同时还介绍了如何用MongoTemplate访问MongoDB。
第12章:介绍Redis服务器的安装和使用,Redis常用的数据结构和操作命令。然后介绍Spring Boot如何集成Redis,如何使用RedisTemplate来操作Redis。本章后半部分深入介绍了RedisTemplate提供的序列化机制。
第13章:介绍Elasticsearch的安装和使用,Elasticsearch既具有全文搜索功能,也能像MongoDB那样,具备NoSQL的功能。本章介绍通过REST和Spring Data两种方式访问Elasticsearch。
第14章:介绍Spring Boot Cache,并重点介绍Redis作为分布式缓存的实现。在此基础上,改进了Redis分布式缓存,通过较少的代码实现了一个具备一二级缓存的技术方案。
第15章:Spring Boot应用水平扩展,需实现无会话状态技术,Spring Session提供了分布式会话管理,本章介绍了Nginx作为反向代理的内容,以及Spring Session的Redis实现及其源码分析。
第16章:基于第15章Spring Boot应用水平扩展技术必然带来分布式协调要求,ZooKeeper是一个广泛使用的分布式协调器。本章介绍ZooKeeper的安装和使用,对领导选取、分布式锁和服务注册三个常用功能做了重点描述,并在Spring Boot 应用中采用Curator来完成这三个功能。
第17章:Spring Boot提供了内置监控功能,使得用户通过HTTP请求就能知晓服务器的健康状态,如数据源是否可用、NoSQL服务是否可用、最近的HTTP访问的内容等监控信息。本章讲述了线程栈、内存、在线日志、HTTP访问、RequestMapping等常用监控功能。其中还讲述通过dump线程栈和内存来解决Spring Boot应用中的一些性能故障。
如何阅读本书
笔者作为一个从事Java开发17年的程序员,这里给新手一些诚恳的建议,用于帮助新手掌握Spring Boot 2.0。
建议按照本书每章的例子先模仿一遍,不要急于按照自己的项目要求去改,否则很容易知识掌握不牢固、不全面。如果遇到自己暂时无法理解的知识,也建议优先记住这些知识点。
理解完书中的知识,能运行书中提供的例子(推荐手写,或者从官网下载例子)后,可以尝试主动制造一些错误。看看Spring Boot会给你什么样的错误提示,以1.4.5节例子为例,如果去掉@RequestMapping注解,或者如果写成value="usercredit{id123}" 会怎么样,甚至将getCreditLevel改成getCreditLevelTest会有什么后果(这个改动没有任何影响)。通过主动制造错误,观察Spring Boot应用的错误信息来深入学习Spring Boot。实际上,不仅仅是学习Spring Boot,这也是学习其他框架,甚至是编程语言或者其他任何编程技术的一种窍门。
本书每章都会提及Spring Boot框架的一些接口或者关键类,不了解这些类的实现细节,你仍然可以运用Spring Boot,如果想深入掌握Spring Boot,建议阅读这些类的源代码以了解这些类的职责以及如何实现职责。可以通过IDE的快捷键打开这些类,以Eclipse 为例,用快捷键Ctrl T打开这些类去阅读Spring源码,还可以在这些类的方法中打上断点,在运行本书例子的时候,查看在断点处发生了什么来帮助你理解Spring Boot。比如在第14章中使用Redis实现分布式缓存的时候,提到了RedisCacheManager,你可以阅读这个类的源码,并在关键的getCache方法上打上断点,观察如何实现Redis缓存。
如果对于这些类还是无法理解,则可以通过搜索引擎搜索这些类,总有些博客和技术文章在讨论这些类的职责和实现方式。
谨慎对待互联网搜索结果,这是因为Spring Boot 2.0技术本身较为新,发展也较快,通过互联网搜索结果需要关注一下文章的发布日期、文章适用的版本,如果你在使用Spring Boot 2.0中遇到任何问题,也欢迎到社区进行交流,社区地址是ibeetl.com。
最后,请购买正版书籍,鼓励作者和出版社出版更好的技术书籍。
致谢
首先感谢我的妻子苗珺对我写书的大力支持,没有她的支持,我是不可能完成一本书的写作的。还有我的儿子,知道我正在做一件很重要的事情的时候就不再让我陪他聊天。
还要感谢电子工业出版社的编辑同志,给予我绝对的信任和支持,并对本书的出版做了非常多的指导,感谢你们付出的辛勤汗水。
最后要感谢的是公司和集团领导对我写书的大力支持,特别是在我需要帮助的时候委派左丽娜同事完成部分章节的编写,没有公司领导的支持,对于中国程序员来说,写一本书几乎是不可能完成的任务。
本书是我写的第一

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 台灣用户 | 香港/海外用户
megBook.com.tw
Copyright (C) 2013 - 2024 (香港)大書城有限公司 All Rights Reserved.