描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302530824
产品特色
编辑推荐
本书用于Spring框架入门,以通俗易懂的方式介绍了Spring框架基础及其包含的各个模块,内容包括Spring核心模块Core、AOP、DAO、ORM、MVC、ORM框架MyBatis的使用、Spring Boot的使用、Docker入门等,*后给出一个综合实战案例。
内容简介
SSM目前是J2EE开发*常用、*流行的框架。本书将对Spring、Spring MVC、MyBatis、Spring Boot、Docker的使用进行介绍,每一章都有代码示例,便于理解每个章节的知识点,让读者掌握SSM框架,快速 上手。
全书分为11章,内容包括Spring框架用到的注解、反射,Spring框架基础,核心容器,AOP,DAO,ORM与MyBatis,Spring MVC,Spring Boot配置,Spring Boot应用,Docker入门知识,*后实现一个用户权限管理的项目案例。
本书既适合Spring框架初学者学习(需要有Java编程基础),也适合高等院校和培训学校相关专业的师生参考。
全书分为11章,内容包括Spring框架用到的注解、反射,Spring框架基础,核心容器,AOP,DAO,ORM与MyBatis,Spring MVC,Spring Boot配置,Spring Boot应用,Docker入门知识,*后实现一个用户权限管理的项目案例。
本书既适合Spring框架初学者学习(需要有Java编程基础),也适合高等院校和培训学校相关专业的师生参考。
目 录
目 录
第1章 Java基础 1
1.1 注解 1
1.1.1 什么是注解 1
1.1.2 内置注解 2
1.1.3 元注解 2
1.1.4 自定义注解 3
1.1.5 注解使用场景介绍 6
1.2 反射 7
1.2.1 反射机制 7
1.2.2 理解Class类 7
1.2.3 反射的使用 9
1.3 小结 15
第2章 Spring基础 16
2.1 Spring框架介绍 16
2.1.1 起源 16
2.1.2 简介 17
2.1.3 框架结构 17
2.2 依赖注入DI与控制反转IOC 19
2.2.1 什么是依赖注入 19
2.2.2 什么是控制反转 19
2.2.3 依赖注入的优缺点 20
2.2.4 IOC实例 20
2.3 面向切面编程 25
2.3.1 认识横切和纵切 25
2.3.2 什么是AOP 25
2.3.3 AOP原理 26
2.4 小结 29
第3章 核心容器 30
3.1 IOC容器 30
3.1.1 容器介绍 30
3.1.2 BeanFactory 30
3.1.3 ApplicationContext 35
3.2 Bean的配置 36
3.2.1 基于XML配置Bean 36
3.2.2 使用注解定义Bean 36
3.2.3 基于Java类提供Bean定义 37
3.3 Bean的注入 38
3.3.1 XML方式注入 38
3.3.2 注解方式注入 46
3.4 Bean的作用域和生命周期 47
3.4.1 Bean的作用域 47
3.4.2 Bean的生命周期 49
3.5 小结 53
第4章 Spring之AOP 54
4.1 AOP基础 54
4.1.1 AOP的引入 54
4.1.2 AOP主要概念 55
4.2 AOP实现 56
4.3 小结 66
第5章 Spring之DAO 67
5.1 JDBC详解 67
5.1.1 JDBC介绍 67
5.1.2 操作步骤 68
5.1.3 Statement的使用 68
5.1.4 使用PreparedStatement返回自增主键 70
5.1.5 使用CallableStatement调用存储过程 72
5.1.6 批处理 73
5.1.7 事务处理 76
5.2 Spring DAO模块 79
5.2.1 JdbcDaoSupport的使用 79
5.2.2 MappingSqlQuery的使用 84
5.2.3 SqlUpdate的使用 85
5.2.4 SqlFunction的使用 86
5.3 Spring事务管理 87
5.4 小结 88
第6章 MyBatis快速入门 89
6.1 ORM框架介绍 89
6.1.1 ORM框架简介 89
6.1.2 MyBatis框架介绍 90
6.1.3 MyBatis入门 90
6.2 XML配置 93
6.2.1 properties属性 93
6.2.2 settings 95
6.2.3 typeAliases 98
6.2.4 typeHandlers 99
6.2.5 配置环境(environments) 104
6.2.6 映射器(mappers) 107
6.3 XML映射文件 107
6.3.1 查询元素select 107
6.3.2 更新元素Insert、Update、Delete 109
6.3.3 可重用语句块sql 110
6.3.4 数据集映射resultMap 111
6.3.5 缓存和自定义缓存 118
6.4 动态SQL 123
6.4.1 if语句 123
6.4.2 choose (when, otherwise)语句 124
6.4.3 choose (when, otherwise)语句 124
6.4.4 foreach语句 125
6.5 逆向工程 126
6.6 分页插件pagehelper 129
6.7 小结 130
第7章 Spring之Spring MVC 131
7.1 MVC框架 131
7.1.1 MVC模式简介 131
7.1.2 MVC和设计模式区别 132
7.1.3 优缺点 132
7.2 Spring MVC处理流程 133
7.2.1 Spring MVC引入 133
7.2.2 处理流程 142
7.3 HandlerMapping的使用 149
7.3.1 RequestMappingHandlerMapping 150
7.3.2 BeanNameUrlHandlerMapping 151
7.3.3 SimpleUrlHandlerMapping 151
7.4 传递数据到Controller 152
7.4.1 URL传递数据到Controller 152
7.4.2 View传递数据到Controller 154
7.5 传递数据到View 155
7.5.1 ModelAndView 155
7.5.2 @SessionAttributes 156
7.5.3 @ModelAttribute 157
7.6 拦截器的使用 159
7.7 Ajax与Controller交互 161
7.8 小结 164
第8章 Spring Boot配置 165
8.1 Spring Boot基础 165
8.1.1 Spring Boot简介 165
8.1.2 在线安装 166
8.1.3 离线安装 166
8.1.4 创建Spring Boot项目 167
8.2 Spring Boot基本配置 169
8.2.1 定制Banner 169
8.2.2 配置文件 170
8.2.3 使用xml配置 170
8.3 Spring Boot读取配置 172
8.3.1 读取核心配置文件 172
8.3.2 读取自定义配置文件 173
8.4 Profile配置 174
8.5 日志配置 175
8.5.1 简述 175
8.5.2 Logback的使用 176
8.5.3 Log4j2的使用 179
8.6 运行原理 181
8.6.1 习惯优于配置 181
8.6.2 运行原理 182
8.7 小结 185
第9章 Spring Boot的应用 186
9.1 Spring Boot之Web 186
9.1.1 Spring Boot集成Thymeleaf 186
9.1.2 Spring Boot集成JSP 190
9.2 Spring Boot之Data 191
9.2.1 Spring Boot集成MyBatis 192
9.2.2 Spring Boot集成Redis 197
9.2.3 Spring Boot集成MyBatis使用Redis做缓存 202
9.2.4 Spring Boot集成RabbitMQ 208
9.3 Spring Boot之集成其他工具 219
9.3.1 Spring Boot集成Druid 219
9.3.2 Spring Boot定时任务 221
9.3.3 Spring Boot集成Swagger2 223
9.3.4 Spring Boot打包部署 227
9.4 小结 229
第10章 Docker入门 230
10.1 Docker基础 230
10.1.1 Docker介绍 230
10.1.2 Docker在Windows下的安装 231
10.2 Docker镜像 233
10.2.1 获取镜像 233
10.2.2 查看镜像 234
10.2.3 使用tag添加镜像标签 234
10.2.4 使用inspect查看详细信息 234
10.2.5 使用history查看镜像历史记录 235
10.2.6 镜像查找 235
10.2.7 删除镜像 236
10.2.8 创建镜像 237
10.2.9 另存和载入镜像 238
10.3 容器 239
10.3.1 新建与启动容器 239
10.3.2 守护态运行 241
10.3.3 终止容器 241
10.3.4 进入容器 242
10.3.5 容器的导入导出 243
10.4 搭建私有仓库 244
10.5 数据管理 245
10.5.1 数据卷 245
10.5.2 数据卷容器 247
10.6 端口映射与容器互联 247
10.6.1 端口映射 248
10.6.1 容器互联 249
10.7 Dockerfile 250
10.8 Docker容器Tomcat部署war包 252
10.9 小结 254
第11章 用户权限管理项目实战 255
11.1 项目基础 255
11.1.1 项目介绍 255
11.1.2 需求分析 255
11.1.3 技术选型 256
11.2 项目实现 257
11.2.1 搭建框架 257
11.2.2 数据库设计 258
11.2.3 前端框架引入 259
11.2.4 用户角色增删改查 261
11.2.5 Shiro用户权限管理 271
11.3 小结 277
第1章 Java基础 1
1.1 注解 1
1.1.1 什么是注解 1
1.1.2 内置注解 2
1.1.3 元注解 2
1.1.4 自定义注解 3
1.1.5 注解使用场景介绍 6
1.2 反射 7
1.2.1 反射机制 7
1.2.2 理解Class类 7
1.2.3 反射的使用 9
1.3 小结 15
第2章 Spring基础 16
2.1 Spring框架介绍 16
2.1.1 起源 16
2.1.2 简介 17
2.1.3 框架结构 17
2.2 依赖注入DI与控制反转IOC 19
2.2.1 什么是依赖注入 19
2.2.2 什么是控制反转 19
2.2.3 依赖注入的优缺点 20
2.2.4 IOC实例 20
2.3 面向切面编程 25
2.3.1 认识横切和纵切 25
2.3.2 什么是AOP 25
2.3.3 AOP原理 26
2.4 小结 29
第3章 核心容器 30
3.1 IOC容器 30
3.1.1 容器介绍 30
3.1.2 BeanFactory 30
3.1.3 ApplicationContext 35
3.2 Bean的配置 36
3.2.1 基于XML配置Bean 36
3.2.2 使用注解定义Bean 36
3.2.3 基于Java类提供Bean定义 37
3.3 Bean的注入 38
3.3.1 XML方式注入 38
3.3.2 注解方式注入 46
3.4 Bean的作用域和生命周期 47
3.4.1 Bean的作用域 47
3.4.2 Bean的生命周期 49
3.5 小结 53
第4章 Spring之AOP 54
4.1 AOP基础 54
4.1.1 AOP的引入 54
4.1.2 AOP主要概念 55
4.2 AOP实现 56
4.3 小结 66
第5章 Spring之DAO 67
5.1 JDBC详解 67
5.1.1 JDBC介绍 67
5.1.2 操作步骤 68
5.1.3 Statement的使用 68
5.1.4 使用PreparedStatement返回自增主键 70
5.1.5 使用CallableStatement调用存储过程 72
5.1.6 批处理 73
5.1.7 事务处理 76
5.2 Spring DAO模块 79
5.2.1 JdbcDaoSupport的使用 79
5.2.2 MappingSqlQuery的使用 84
5.2.3 SqlUpdate的使用 85
5.2.4 SqlFunction的使用 86
5.3 Spring事务管理 87
5.4 小结 88
第6章 MyBatis快速入门 89
6.1 ORM框架介绍 89
6.1.1 ORM框架简介 89
6.1.2 MyBatis框架介绍 90
6.1.3 MyBatis入门 90
6.2 XML配置 93
6.2.1 properties属性 93
6.2.2 settings 95
6.2.3 typeAliases 98
6.2.4 typeHandlers 99
6.2.5 配置环境(environments) 104
6.2.6 映射器(mappers) 107
6.3 XML映射文件 107
6.3.1 查询元素select 107
6.3.2 更新元素Insert、Update、Delete 109
6.3.3 可重用语句块sql 110
6.3.4 数据集映射resultMap 111
6.3.5 缓存和自定义缓存 118
6.4 动态SQL 123
6.4.1 if语句 123
6.4.2 choose (when, otherwise)语句 124
6.4.3 choose (when, otherwise)语句 124
6.4.4 foreach语句 125
6.5 逆向工程 126
6.6 分页插件pagehelper 129
6.7 小结 130
第7章 Spring之Spring MVC 131
7.1 MVC框架 131
7.1.1 MVC模式简介 131
7.1.2 MVC和设计模式区别 132
7.1.3 优缺点 132
7.2 Spring MVC处理流程 133
7.2.1 Spring MVC引入 133
7.2.2 处理流程 142
7.3 HandlerMapping的使用 149
7.3.1 RequestMappingHandlerMapping 150
7.3.2 BeanNameUrlHandlerMapping 151
7.3.3 SimpleUrlHandlerMapping 151
7.4 传递数据到Controller 152
7.4.1 URL传递数据到Controller 152
7.4.2 View传递数据到Controller 154
7.5 传递数据到View 155
7.5.1 ModelAndView 155
7.5.2 @SessionAttributes 156
7.5.3 @ModelAttribute 157
7.6 拦截器的使用 159
7.7 Ajax与Controller交互 161
7.8 小结 164
第8章 Spring Boot配置 165
8.1 Spring Boot基础 165
8.1.1 Spring Boot简介 165
8.1.2 在线安装 166
8.1.3 离线安装 166
8.1.4 创建Spring Boot项目 167
8.2 Spring Boot基本配置 169
8.2.1 定制Banner 169
8.2.2 配置文件 170
8.2.3 使用xml配置 170
8.3 Spring Boot读取配置 172
8.3.1 读取核心配置文件 172
8.3.2 读取自定义配置文件 173
8.4 Profile配置 174
8.5 日志配置 175
8.5.1 简述 175
8.5.2 Logback的使用 176
8.5.3 Log4j2的使用 179
8.6 运行原理 181
8.6.1 习惯优于配置 181
8.6.2 运行原理 182
8.7 小结 185
第9章 Spring Boot的应用 186
9.1 Spring Boot之Web 186
9.1.1 Spring Boot集成Thymeleaf 186
9.1.2 Spring Boot集成JSP 190
9.2 Spring Boot之Data 191
9.2.1 Spring Boot集成MyBatis 192
9.2.2 Spring Boot集成Redis 197
9.2.3 Spring Boot集成MyBatis使用Redis做缓存 202
9.2.4 Spring Boot集成RabbitMQ 208
9.3 Spring Boot之集成其他工具 219
9.3.1 Spring Boot集成Druid 219
9.3.2 Spring Boot定时任务 221
9.3.3 Spring Boot集成Swagger2 223
9.3.4 Spring Boot打包部署 227
9.4 小结 229
第10章 Docker入门 230
10.1 Docker基础 230
10.1.1 Docker介绍 230
10.1.2 Docker在Windows下的安装 231
10.2 Docker镜像 233
10.2.1 获取镜像 233
10.2.2 查看镜像 234
10.2.3 使用tag添加镜像标签 234
10.2.4 使用inspect查看详细信息 234
10.2.5 使用history查看镜像历史记录 235
10.2.6 镜像查找 235
10.2.7 删除镜像 236
10.2.8 创建镜像 237
10.2.9 另存和载入镜像 238
10.3 容器 239
10.3.1 新建与启动容器 239
10.3.2 守护态运行 241
10.3.3 终止容器 241
10.3.4 进入容器 242
10.3.5 容器的导入导出 243
10.4 搭建私有仓库 244
10.5 数据管理 245
10.5.1 数据卷 245
10.5.2 数据卷容器 247
10.6 端口映射与容器互联 247
10.6.1 端口映射 248
10.6.1 容器互联 249
10.7 Dockerfile 250
10.8 Docker容器Tomcat部署war包 252
10.9 小结 254
第11章 用户权限管理项目实战 255
11.1 项目基础 255
11.1.1 项目介绍 255
11.1.2 需求分析 255
11.1.3 技术选型 256
11.2 项目实现 257
11.2.1 搭建框架 257
11.2.2 数据库设计 258
11.2.3 前端框架引入 259
11.2.4 用户角色增删改查 261
11.2.5 Shiro用户权限管理 271
11.3 小结 277
前 言
前 言
平时我有写博客的习惯,喜欢将学到的知识点放在博客上:一是当作自己的学习笔记,将学习的内容整理之后再输出,也能够加深印象,忘记知识点时还可以快速复习;二是分享给有需要的朋友,希望各位在学习时能少走些弯路,少跳些坑。作为经常从网上索取免费资料的一员,我也要有回报的思想。
SSM框架集目前是J2EE开发最常用、最流行的框架。Spring Boot是由Pivotal团队提供的全新框架,设计目的是简化新Spring应用的初始搭建以及开发过程。Docker容器技术在现在流行的Devops流水线上也扮演着重要的角色。
在本书中,我们将对Spring、Spring MVC、MybBatis、Spring Boot、Docker的使用进行介绍,而且每个章节基本都有代码示例,基本都是与技术相关、业务相关的,例子接近生活,便于读者对每个章节的知识点加深理解,快速上手。
本书读者对象
? 熟悉面向对象编程、经验丰富又打算学习SSM、Spring Boot的其他语言从业者。
? 有意提升网站和Web应用程序开发能力的Web开发人员。
? 希望在学习完Java编程语法想基础之上进一步提高开发技能的初学者。
阅读本书不适合没有计算机基础知识的初学者,建议先学需要掌握一门Java面向对象编程语言知识,了解一下面向对象思想。
本书内容
本书共包括11章。第1章介绍Java基础,主要介绍Spring框架中常用的反射和注解技术,了解反射、注解相关概念。第2章先对Spring框架进行简单介绍,讲解Spring框架重要的IOC、AOP思想。第3章讲解Spring核心容器,介绍Bean的配置、注入方式、作用域和生命周期。第4章对AOP进行详细介绍,了解AspectJ的使用。第5章介绍Spring的DAO模块,同时了解JDBC的使用。第6章学习MyBbatis的使用,主要包括XML的配置和映射,动态SQL、逆向工程和Pagehelper的使用。第7章介绍SSM框架中的SpringMVC,了解Spring MVC的处理流程、View与Controller之间的数据传递。第8、9章主要介绍Spring Boot的相关知识以及Spring Boot配置,使用Spring Boot引入Thymeleaf、JSP、MyBbatis、Redis、Druid等工具。第10章讲述Docker基础知识以及Docker的三大核心概念,并在Docker中使用Tomcat部署war包。第11章给出了一个项目实例,对前面章节介绍的知识点进行巩固。
本书导读
学习编程步骤可以用“学、练、悟、通”4个字概括。
(1)“学”指的是接收的过程,侧重理论。本书每个章节基本都是先介绍理论知识,让读者理解知识点为什么出现、要解决什么问题、有哪些优势。
(2)“练”指的是实践的过程。没有实践只有理论属于纸上谈兵,看的时候理解,操作时无从下手,动手能力差。本书每个章节都有实例,在学习理论的过程中可以参考实例操作一遍。
(3)“悟”指的是思考的过程。练更多的是模仿,照葫芦画瓢。在练的过程中也要多思考,多问几个为什么,多归纳总结,在做项目之前可以先把整个思路在脑子里过一遍。
(4)“通”指的是举一反三的过程。实现本书的例子不难,难的是将学到的知识举一反三,灵活地运用到其他项目中。可以找一些开源项目来研究,以达到融会贯通的境界。
使用示例源码下载
本书基本每个章节都有示例,完整源码可以扫描右边二维码,如果下载有问题,请联系技术支持邮箱[email protected],邮件主题为“Spring快速入门”。要运行本书中的示例,需要安装Eclipse、Maven,并配置相关环境。
勘误与技术支持邮箱
我作者已尽最大努力确保正文和代码没有问题。可是,金无足赤,疏漏在所难免。如果书中有错误,希望您能及时反馈给我们。我们将诚挚接受广大读者的批评指正,交流邮箱为[email protected]。勘误将发布在作者博客上:https://www.cnblogs.com/5ishare/。
致谢
出书、创业卖胡辣汤、做IT讲师是我大学时的梦想。这本书的出版也算是实现了我的一个梦想,当然实现梦想离不开大家的帮助。首先要感谢夏毓彦编辑,是他发现了我,给了我机会,并给予我自始至终的指导,还为我介绍同行朋友。感谢我的两个兄弟,陈岩亮、袁伟,大学时候的“铁三角”,我们一起度过了美好的大学生活。感谢卢欣欣、王倩、崔春英、陈立勇等教过我的大学老师,正是他们的教导让我对计算机产生了兴趣。感谢身边的同事和卢艳霞同学,他们给了我坚持写下去的动力。感谢生我养我的父母,长大后才慢慢理解了他们的不易,理解了生活的不易。最后感谢所有帮助过我的人,谢谢大家!。
本书封面照片由蜂鸟网的摄影家ptwkzj先生友情提供,在此表示衷心感谢。
平时我有写博客的习惯,喜欢将学到的知识点放在博客上:一是当作自己的学习笔记,将学习的内容整理之后再输出,也能够加深印象,忘记知识点时还可以快速复习;二是分享给有需要的朋友,希望各位在学习时能少走些弯路,少跳些坑。作为经常从网上索取免费资料的一员,我也要有回报的思想。
SSM框架集目前是J2EE开发最常用、最流行的框架。Spring Boot是由Pivotal团队提供的全新框架,设计目的是简化新Spring应用的初始搭建以及开发过程。Docker容器技术在现在流行的Devops流水线上也扮演着重要的角色。
在本书中,我们将对Spring、Spring MVC、MybBatis、Spring Boot、Docker的使用进行介绍,而且每个章节基本都有代码示例,基本都是与技术相关、业务相关的,例子接近生活,便于读者对每个章节的知识点加深理解,快速上手。
本书读者对象
? 熟悉面向对象编程、经验丰富又打算学习SSM、Spring Boot的其他语言从业者。
? 有意提升网站和Web应用程序开发能力的Web开发人员。
? 希望在学习完Java编程语法想基础之上进一步提高开发技能的初学者。
阅读本书不适合没有计算机基础知识的初学者,建议先学需要掌握一门Java面向对象编程语言知识,了解一下面向对象思想。
本书内容
本书共包括11章。第1章介绍Java基础,主要介绍Spring框架中常用的反射和注解技术,了解反射、注解相关概念。第2章先对Spring框架进行简单介绍,讲解Spring框架重要的IOC、AOP思想。第3章讲解Spring核心容器,介绍Bean的配置、注入方式、作用域和生命周期。第4章对AOP进行详细介绍,了解AspectJ的使用。第5章介绍Spring的DAO模块,同时了解JDBC的使用。第6章学习MyBbatis的使用,主要包括XML的配置和映射,动态SQL、逆向工程和Pagehelper的使用。第7章介绍SSM框架中的SpringMVC,了解Spring MVC的处理流程、View与Controller之间的数据传递。第8、9章主要介绍Spring Boot的相关知识以及Spring Boot配置,使用Spring Boot引入Thymeleaf、JSP、MyBbatis、Redis、Druid等工具。第10章讲述Docker基础知识以及Docker的三大核心概念,并在Docker中使用Tomcat部署war包。第11章给出了一个项目实例,对前面章节介绍的知识点进行巩固。
本书导读
学习编程步骤可以用“学、练、悟、通”4个字概括。
(1)“学”指的是接收的过程,侧重理论。本书每个章节基本都是先介绍理论知识,让读者理解知识点为什么出现、要解决什么问题、有哪些优势。
(2)“练”指的是实践的过程。没有实践只有理论属于纸上谈兵,看的时候理解,操作时无从下手,动手能力差。本书每个章节都有实例,在学习理论的过程中可以参考实例操作一遍。
(3)“悟”指的是思考的过程。练更多的是模仿,照葫芦画瓢。在练的过程中也要多思考,多问几个为什么,多归纳总结,在做项目之前可以先把整个思路在脑子里过一遍。
(4)“通”指的是举一反三的过程。实现本书的例子不难,难的是将学到的知识举一反三,灵活地运用到其他项目中。可以找一些开源项目来研究,以达到融会贯通的境界。
使用示例源码下载
本书基本每个章节都有示例,完整源码可以扫描右边二维码,如果下载有问题,请联系技术支持邮箱[email protected],邮件主题为“Spring快速入门”。要运行本书中的示例,需要安装Eclipse、Maven,并配置相关环境。
勘误与技术支持邮箱
我作者已尽最大努力确保正文和代码没有问题。可是,金无足赤,疏漏在所难免。如果书中有错误,希望您能及时反馈给我们。我们将诚挚接受广大读者的批评指正,交流邮箱为[email protected]。勘误将发布在作者博客上:https://www.cnblogs.com/5ishare/。
致谢
出书、创业卖胡辣汤、做IT讲师是我大学时的梦想。这本书的出版也算是实现了我的一个梦想,当然实现梦想离不开大家的帮助。首先要感谢夏毓彦编辑,是他发现了我,给了我机会,并给予我自始至终的指导,还为我介绍同行朋友。感谢我的两个兄弟,陈岩亮、袁伟,大学时候的“铁三角”,我们一起度过了美好的大学生活。感谢卢欣欣、王倩、崔春英、陈立勇等教过我的大学老师,正是他们的教导让我对计算机产生了兴趣。感谢身边的同事和卢艳霞同学,他们给了我坚持写下去的动力。感谢生我养我的父母,长大后才慢慢理解了他们的不易,理解了生活的不易。最后感谢所有帮助过我的人,谢谢大家!。
本书封面照片由蜂鸟网的摄影家ptwkzj先生友情提供,在此表示衷心感谢。
崔彦威
2019年35月于深圳
评论
还没有评论。