描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302475415
本书既可作为高等院校本/专科计算机相关专业的程序设计课程教材,也可作为Java技术的培训教材,是一本适合广大计算机编程爱好者的学习教材。
目录
第1章Java开发入门1
1.1Java概述1
1.2JDK的使用 2
1.2.1JDK的安装2
1.2.2JDK的目录介绍2
1.3环境变量4
1.3.1path环境变量4
1.3.2classpath环境变量5
1.4个Java程序6
1.4.1编写个Java程序6
1.4.2Java程序的运行机制7
1.5Eclipse的安装与使用 7
1.5.1Eclipse的安装与启动8
1.5.2Eclipse进行程序开发9
第2章Java编程基础14
2.1Java的基本语法14
2.1.1Java代码的基本格式14
2.1.2Java中的注释14
2.1.3Java中的标识符15
2.1.4Java中的关键字15
2.2Java中的变量16
2.2.1变量的定义16
2.2.2变量的数据类型16
2.2.3变量的类型转换17
2.2.4变量的作用域19
2.3Java中的常量19
2.4Java中的运算符20
2.4.1算术运算符20
2.4.2赋值运算符212.4.3比较运算符22
2.4.4逻辑运算符22
2.4.5运算符的优先级24
2.5选择结构语句24
2.5.1if条件语句24
2.5.2switch条件语句27
2.6循环结构语句29
2.6.1while循环语句29
2.6.2do…while循环语句30
2.6.3for循环语句31
2.6.4循环嵌套32
2.6.5跳转语句33
2.7方法34
2.7.1方法的概念34
2.7.2方法的重载35
2.8数组37
2.8.1数组的定义37
2.8.2数组的常见操作38
2.8.3Arrays工具类41
2.9String类和StringBuffer类42
2.9.1String类42
2.9.2StringBuffer类44
2.10包装类46
第3章面向对象47
3.1面向对象的概念和特征47
3.2类与对象47
3.2.1类与对象的关系47
3.2.2类的定义48
3.2.3对象的创建48
3.2.4类的封装49
目录Java自学宝典3.3构造方法51
3.3.1构造方法的定义51
3.3.2构造方法的重载53
3.4this关键字54
3.5static关键字56
3.5.1静态变量56
3.5.2静态方法57
3.5.3静态代码块58
3.6类的继承59
3.6.1继承的概念 59
3.6.2重写父类方法59
3.6.3super关键字61
3.7抽象类和接口63
3.7.1抽象类63
3.7.2接口65
3.8多态67
3.8.1多态概述67
3.8.2对象的类型转换69
3.8.3匿名内部类71
3.9异常72
3.9.1异常的概念72
3.9.2常见的异常类73
3.9.3try…catch和finally74
3.9.4throws关键字75
3.10访问控制77
第4章集合类78
4.1初识集合78
4.1.1集合概述78
4.1.2Collection接口简介79
4.2List接口79
4.2.1List接口简介79
4.2.2ArrayList集合80
4.2.3Iterator接口81
4.2.4foreach循环82
4.2.5泛型83
4.3Set接口84
4.3.1Set接口简介84
4.3.2HashSet集合84
4.4Map接口85
4.4.1Map接口简介85
4.4.2HashMap集合86
4.4.3Properties集合87
第5章输入/输出 89
5.1I/O流概述89
5.2字节流89
5.2.1字节流的概念89
5.2.2字节流的读/写操作91
5.2.3文件的复制93
5.2.4字节流的缓冲区94
5.2.5字节缓冲流95
5.3字符流96
5.3.1字符流的概念96
5.3.2字符流的读/写操作97
5.3.3字符缓冲流98
5.3.4转换流99
5.4File类100
5.4.1File类的常用方法100
5.4.2遍历目录下的文件101
5.4.3删除文件及目录102
第6章多线程103
6.1线程概述103
6.2线程的创建103
6.2.1继承Thread类103
6.2.2实现Runnable接口105
6.2.3Thread类和Runnable接口对比分析106
6.3线程的状态和转换109
6.4多线程同步110
6.4.1线程安全110
6.4.2同步代码块112
6.4.3同步方法113
第7章网页开发基础115
7.1HTML技术115
7.1.1HTML简介115
7.1.2单标记和双标记117
7.1.3文本控制与文本样式标记117
7.1.4图像标记118
7.1.5表格标记119
7.1.6表单标记121
7.1.7列表标记和超链接标记124
7.1.8
7.2CSS技术127
7.2.1CSS简介 127
7.2.2CSS样式的引用方式127
7.2.3CSS选择器和常用属性130
7.3JavaScript基础133
7.3.1DOM相关知识133
7.3.2JavaScript概述134
7.3.3JavaScript的使用139
第8章Java Web概述142
8.1Web开发的相关知识142
8.1.1C/S与B/S体系结构142
8.1.2Web资源143
8.2XML基础144
8.2.1XML概述144
8.2.2XML语法145
8.2.3DTD约束146
8.2.4Schema约束149
8.3HTTP152
8.3.1HTTP概述152
8.3.2HTTP请求消息153
8.3.3HTTP响应消息156
8.4Tomcat158
8.4.1Tomcat简介158
8.4.2Tomcat的安装和启动158
8.4.3Tomcat中的Web应用159
8.4.4在Eclipse中配置Tomcat161
第9章Servlet基础 165
9.1Servlet概述165
9.2Servlet开发入门166
9.2.1Servlet接口及其实现类166
9.2.2实现个Servlet程序167
9.2.3Servlet的生命周期172
9.3Servlet虚拟路径映射的配置173
9.3.1Servlet的多重映射173
9.3.2Servlet映射路径中使用通配符174
9.3.3默认Servlet175
9.4ServletConfig和ServletContext176
9.4.1ServletConfig接口176
9.4.2ServletContext接口178
第10章请求和响应182
10.1请求和响应概述182
10.2HttpServletRequest对象183
10.2.1获取请求行信息的相关方法183
10.2.2获取请求消息头的相关方法185
10.3HttpServletRequest应用186
10.3.1获取请求参数186
10.3.2通过Request对象传递数据189
10.3.3解决请求参数的中文乱码问题190
10.4RequestDispatcher对象的应用191
10.4.1RequestDispatcher接口191
10.4.2请求转发191
10.5HttpServletResponse对象193
10.5.1发送状态码相关的方法193
10.5.2发送响应消息头相关的方法194
10.5.3发送响应消息体相关的方法195
10.6HttpServletResponse应用195
10.6.1解决中文输出乱码问题195
10.6.2实现请求重定向197
第11章JSP技术201
11.1JSP概述201
11.1.1JSP201
11.1.2个JSP文件的创建201
11.1.3JSP运行原理203
11.2JSP的脚本元素和注释204
11.2.1JSP脚本元素204
11.2.2JSP注释206
11.3JSP指令207
11.3.1page指令207
11.3.2include指令208
11.4JSP隐式对象209
11.4.1隐式对象的概述209
11.4.2out对象210
11.4.3pageContext对象211
11.4.4exception对象213
11.5JSP动作元素215
11.5.1动作元素215
11.5.2动作元素215
11.6JSP开发模型217
11.6.1JavaBean217
11.6.2JSP设计模式218
第12章Cookie和Session221
12.1Cookie对象221
12.1.1Cookie221
12.1.2Cookie API222
12.1.3显示用户上次访问的时间223
12.2Session对象225
12.2.1Session225
12.2.2HttpSession API226
12.2.3Session超时管理227
12.2.4实现用户登录228
第13章EL表达式和JSTL238
13.1EL表达式238
13.1.1EL概述238
13.1.2EL中的标识符238
13.1.3EL中的保留字239
13.1.4EL中的变量239
13.1.5EL中的常量239
13.1.6EL中的运算符240
13.1.7EL隐式对象243
13.2JSTL248
13.2.1JSTL248
13.2.2JSTL的配置和测试249
13.2.3JSTL中的Core标签库250
第14章Servlet高级257
14.1Filter257
14.1.1Filter概述257
14.1.2实现个Filter程序258
14.1.3Filter映射261
14.1.4Filter链264
14.1.5FilterConfig接口267
14.1.6统一全站编码269
14.2Listener273
14.2.1Servlet事件监听器概述273
14.2.2统计当前在线人数274
第15章jQuery框架278
15.1jQuery概述278
15.1.1jQuery278
15.1.2jQuery的下载与使用278
15.2jQuery选择器280
15.2.1基本选择器280
15.2.2层次选择器282
15.2.3过滤选择器284
15.2.4表单选择器293
15.3jQuery的事件处理296
15.3.1常用事件296
15.3.2页面加载事件296
15.3.3事件绑定与切换297
15.4jQuery的Ajax操作299
15.4.1Ajax概述299
15.4.2jQuery的Ajax操作300
第16章MySQL和JDBC 306
16.1数据库基础知识306
16.1.1数据库概述306
16.1.2MySQL的安装与配置306
16.1.3MySQL的图形化工具307
16.2MySQL的基本使用309
16.2.1数据库的基本操作309
16.2.2表的基本操作310
16.2.3数据的基本操作313
16.2.4单表查询314
16.3MySQL的多表操作320
16.3.1外键约束320
16.3.2内连接322
16.3.3外连接323
16.3.4子查询324
16.4JDBC技术简介326
16.5JDBC常用API327
16.5.1Driver接口327
16.5.2DriverManager类327
16.5.3Connection接口327
16.5.4Statement接口327
16.5.5PreparedStatement接口328
16.5.6ResultSet接口329
16.6实现个JDBC程序329
16.7数据库连接池334
16.7.1数据库连接池334
16.7.2DataSource接口334
16.7.3C3P0数据源335
第17章Struts2框架入门 338
17.1Struts2简介338
17.1.1Struts2概述338
17.1.2Struts2的下载 339
17.1.3Struts2的使用339
17.2Struts2入门340
17.2.1个Struts2程序340
17.2.2Struts2的执行流程分析345
第18章Struts2的核心配置348
18.1struts.xml文件的配置348
18.1.1struts.xml文件348
18.1.2常量配置349
18.1.3包配置350
18.1.4包含配置350
18.2Action的配置351
18.2.1实现Action控制类351
18.2.2配置Action352
18.2.3使用通配符353
18.3Action访问Servlet API354
18.3.1通过ActionContext访问354
18.3.2通过ServletActionContext访问358
18.4Action处理请求参数360
18.4.1属性驱动360
18.4.2模型驱动364
18.5Result结果类型365
18.5.1配置Result365
18.5.2预定义的结果类型366
18.5.3dispatcher结果类型367
18.5.4redirect结果类型368
第19章Struts2的拦截器 370
19.1拦截器简介370
19.1.1拦截器概述370
19.1.2拦截器的配置371
19.2Struts2的内建拦截器373
19.2.1内建拦截器的介绍373
19.2.2内建拦截器的配置375
19.3自定义拦截器376
19.3.1实现自定义拦截器376
19.3.2使用拦截器实现权限控制377
第20章Struts2的标签库 385
20.1Struts2标签库概述385
20.1.1Struts2标签库的分类385
20.1.2Struts2标签的使用386
20.2Struts2的控制标签386
20.2.1、、标签386
20.2.2标签386
20.3Struts2的数据标签389
20.3.1标签389
20.3.2
20.3.3标签390
20.3.4标签390
20.3.5
20.4Struts2的模板和主题392
20.5Struts2的表单标签393
20.5.1表单标签的公共属性393
20.5.2标签394
20.5.3标签394
20.5.4标签394
20.5.5标签395
20.5.6标签395
20.5.7标签396
20.5.8标签397
20.5.9标签398
20.5.10标签399
20.5.11标签400
20.5.12标签400
20.6Struts2的非表单标签401
第21章Struts2的OGNL和值栈403
21.1OGNL403
21.1.1OGNL概述403
21.1.2OGNL表达式404
21.1.3使用OGNL访问对象方法和静态方法408
21.2值栈412
21.2.1值栈的意义412
21.2.2值栈的内部结构413
21.2.3值栈在开发中的应用415
21.2.4通过EL访问值栈的数据420
第22章Struts2的文件上传和下载 421
22.1文件上传421
22.1.1文件上传的概述421
22.1.2单个文件上传423
22.1.3限制文件的大小和类型426
22.2文件下载428
22.2.1文件下载的概述428
22.2.2文件下载429
22.2.3中文文件的下载431
第23章Hibernate框架入门435
23.1Hibernate概述435
23.2Hibernate下载和目录介绍435
23.3个Hibernate程序437
23.3.1编写Hibernate程序437
23.3.2测试Hibernate程序441
23.4Hibernate的运行机制447
23.5Hibernate的核心文件448
23.5.1.hbm.xml映射文件 448
23.5.2hibernate.cfg.xml配置文件452
23.6Hibernate的核心API454
23.6.1Configuration454
23.6.2SessionFactory454
23.6.3Session455
23.6.4Transaction456
23.6.5Query457
23.6.6Criteria459
第24章Hibernate的持久化对象状态和一级缓存 462
24.1Hibernate持久化对象的状态462
24.1.1持久化对象的状态及状态转换462
24.1.2演示持久化对象的状态转换463
24.2Hibernate的一级缓存467
24.2.1一级缓存467
24.2.2Hibernate的快照技术469
24.2.3一级缓存常用操作470
第25章Hibernate的关联关系映射474
25.1关联关系映射474
25.1.1三种关联关系474
25.1.2一对多关联关系映射475
25.1.3多对多关联关系映射481
25.2关联关系中的反转与级联485
25.2.1反转操作485
25.2.2级联操作487
第26章Hibernate的检索方式493
26.1Hibernate检索方式的概述493
26.1.1导航对象图检索方式 493
26.1.2OID检索方式493
26.1.3HQL检索方式493
26.1.4QBC检索方式494
26.1.5本地SQL检索方式495
26.2HQL检索495
26.2.1指定别名495
26.2.2投影查询496
26.2.3动态实例查询497
26.2.4条件查询498
26.2.5分页查询501
26.3QBC检索502
26.3.1组合查询502
26.3.2分页查询504
第27章Hibernate的事务处理和二级缓存506
27.1事务506
27.1.1事务的特性506
27.1.2事务的隔离级别506
27.2Hibernate的事务处理507
27.2.1事务的配置507
27.2.2悲观锁508
27.2.3乐观锁514
27.3Hibernate的二级缓存516
27.3.1二级缓存的原理和分类516
27.3.2二级缓存的并发访问策略 517
27.3.3二级缓存的常用插件518
27.3.4二级缓存的配置和使用518
第28章Spring框架入门522
28.1Spring基本知识522
28.1.1Spring框架概述522
28.1.2Spring的体系结构523
28.1.3Spring的下载及目录结构524
28.2Spring的IoC容器526
28.2.1BeanFactory526
28.2.2ApplicationContext526
28.3编写个Spring程序527
28.4依赖注入530
第29章Spring中的Bean533
29.1Bean的配置533
29.2Bean的实例化534
29.2.1构造器实例化534
29.2.2静态工厂方式实例化536
29.2.3实例工厂方式实例化538
29.3Bean的作用域540
29.3.1作用域的种类540
29.3.2singleton作用域540
29.3.3prototype作用域541
29.4Bean的生命周期542
29.5Bean的装配方式543
29.5.1基于XML的装配543
29.5.2基于Annotation的装配546
29.5.3自动装配550第30章面向切面编程(Spring
AOP)55230.1Spring AOP概述552
30.2手动代理552
30.2.1JDK动态代理553
30.2.2CGLIB代理 556
30.3声明式工厂Bean559
30.3.1Spring通知类型559
30.3.2声明式Spring AOP559
30.4AspectJ562
30.4.1基于XML的声明式562
30.4.2基于Annotation的声明式566
第31章Spring事务管理571
31.1Spring JDBCTemplate 571
31.2Spring事务管理的三个核心接口573
31.3Spring声明式事务管理574
31.3.1基于XML方式574
31.3.2基于Annotation方式580
第32章SSH框架整合584
32.1准备整合环境584
32.1.1数据库环境584
32.1.2配置Struts2环境584
32.1.3配置Spring环境586
32.1.4配置Hibernate环境588
32.2Spring与Hibernate整合590
32.3Spring与Struts2整合594
32.4测试框架分层的整合597
32.5验证事务是否生效600
32.5.1测试事务只读方法600
32.5.2测试事务回滚602
第33章学生信息管理系统603
33.1系统概述603
33.1.1系统的功能模块603
33.1.2系统架构设计604
33.2数据库设计605
33.3系统环境搭建611
33.4员工登录模块618
33.4.1系统登录618
33.4.2实现登录拦截628
33.4.3注销用户630
33.5人力资源部模块630
33.5.1部门管理631
33.5.2职务管理639
33.5.3员工管理649
33.6教学部模块656
33.6.1课程类别656
33.6.2班级管理664
序言
传智播客和“黑马程序员”江苏传智播客教育科技股份有限公司(简称传智播客)是一家专门致力于培养高素质软件开发人才的科技公司,“黑马程序员”是传智播客旗下的高端IT教育品牌。
“黑马程序员”的学员多为大学毕业后,想从事IT行业,但各方面条件还不成熟的年轻人。“黑马程序员”的学员筛选制度非常严格,筛选制度包括了严格的技术测试和自学能力测试,还包括性格测试、压力测试、品德测试等。百里挑一的残酷筛选制度确保了学员质量,并且降低了企业的用人风险。
自“黑马程序员”成立以来,其教学研发团队一直致力于打造精品课程资源,不断在产、学、研三个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,有针对性地出版了计算机系列教材五十多种,制作了教学视频数十套,发表各类技术文章数百篇。
“黑马程序员”不仅斥资研发IT系列教材,还为高校师生提供以下配套学习资源与服务。
为大学生提供的配套服务
1. 专业的辅助学习平台“博学谷”(http://yx.boxuegu.com),专业老师在线为您答疑解惑。
2. 针对高校学生在学习过程中存在的压力等问题,我们还面向大学生量身打造了“播妞”。播妞不仅致力于推行快乐学习,还会有定期的助学红包雨,同学们快来添加播妞微信/QQ:208695827。
3. 高校学生也可以扫描右方二维码,加入播妞粉丝团,获取学习资源,与播妞一起快乐学习。
为IT教师提供的配套服务
针对高校教学,“黑马程序员”为IT系列教材精心设计了“教案 授课资源 考试系统 题库 教学辅助案例”的系列教学资源,高校老师请关注码大牛老师微信/QQ: 2011168841,获取教材配套资源,也可以扫描右方二维码,加入专为IT教师打造的师资服务平台——教学好助手,获取“黑马程序员”教师教学辅助资源相关动态。
本书发展及概要
Java语言自问世以来,已有二十多年的历史,与之相关的Web技术和应用也发展得非常快。在当下的网络时代,Java Web技术更是无处不在,无论是大型互联网的开发,还是小型企业应用,都有Java Web技术的身影。通常所说的Java Web是指所有用于Web开发的Java技术总称,这些技术主要包括Servlet、JSP、JDBC和一些框架技术等。对于一个想从事Web开发的人员来说,学好Java Web技术知识就变得尤为重要。
为什么要学习《Java自学宝典》
作为一本自学教材,重要也是难的一件事就是要将一些非常复杂、难以理解的编程思想和问题简单化,让读者能够轻松理解并快速掌握。《Java自学宝典》采用基础知识与案例相结合的编写方式,通过基础知识的讲解和典型案例的巩固,可以很容易地帮助初学者学以致用。
本书讲解了从Java基础到框架应用所涉及的各种技术。读者不但能够通过自学的方式对这些技术的使用有一定的了解,还能应用这些技术开发出实际可用的功能。为了帮助读者掌握企业中应用多的框架技术,本书在后还讲解了一个项目实战案例——学生信息管理系统。
如何使用本书
本书共分为33个章节,接下来分别对每个章节进行简单介绍,具体如下。
第1章主要是Java语言的入门讲解,主要内容包括Java的相关特性、JDK的安装和使用、环境变量的配置、个Java程序的编写、Java的运行机制以及Eclipse的安装和使用。学习本章时,读者要熟记Java的特性,掌握Java开发环境的搭建,能独立编写一个简单的Java程序,并了解Java的运行机制以及Eclipse开发工具的使用。
第2章主要讲解学习Java所需的基础知识,主要内容包括Java语言的基本语法、常量和变量的定义、常见运算符的使用、选择结构语句和循环结构语句的概念及其使用、方法的基本概念、数组的相关操作等基础知识点。对于本章中的语法知识,读者要熟练掌握,以便为后续章节的学习打下基础。
第3章详细讲解Java面向对象的知识,内容主要包括面向对象的封装、继承、多态和抽象等内容。学习本章时,读者要着重理解Java面向对象的思想、了解类与对象的关系、掌握构造方法中静态方法及this等关键字的使用,读者尽量在理解面向对象三大特性的基础上多动手练习书中的代码编写。
前言Java自学宝典
第4~6章主要讲解Java中集合、I/O和多线程的知识。在学习这几章时,读者要熟练掌握常用集合类和输入/输出流的使用,以及创建多线程的两种方式。
第7章主要介绍开发Web页面时使用的基础技术知识,包括HTML、CSS和JavaScript的基础知识。学习本章时,要求读者对HTML CSS JavaScript基础知识形成大致的了解,并能够通过这些知识实现页面大多数的功能。
第8章讲解Java Web开发的一些基础技术,包括XML、HTTP和Tomcat服务器的使用等。学习本章时,读者只需要熟悉XML的语法、约束以及HTTP的请求消息和响应消息的知识,并能够掌握如何在Eclipse中使用Tomcat。
第9~14章主要讲解Java Web中几个十分重要的核心技术,主要内容包括Servlet技术、请求和响应对象的应用技术、会话及会话技术、JSP技术、EL表达式和JSTL的使用技术等。学习这几章时,读者要着重掌握Servlet和JSP的使用,熟悉HttpServletResponse对象和HttpServletRequest对象的使用,掌握使用Cookie和Session保存信息,能够使用EL表达式和JSTL获取和输出信息,并能够使用过滤器和监听器实现特定的功能。
第15章讲解Web开发时常用的JavaScript库——jQuery。学习本章时,读者要熟练掌握jQuery的选择器和Ajax的使用。
第16章主要讲解Java数据库应用开发的相关知识,主要包括MySQL数据库和JDBC的使用。学习本章时,读者需要重点掌握MySQL数据库及单表的增、删、改、查操作和多表的查询操作,熟悉JDBC的常用API,掌握JDBC操作数据库的步骤,并掌握数据库连接池的使用。
第17~22章对Struts2框架进行详细讲解,主要内容包括Struts2框架的入门程序编写、执行流程的分析、核心配置文件的介绍、拦截器和标签库的使用、OGNL和值栈的使用,以及Struts2的文件上传和下载。学习这几章时,读者要重点掌握Struts2的核心配置文件编写以及拦截器和标签库的使用,熟悉OGNL表达式和值栈的应用,并能使用Struts2进行文件上传和下载。
第23~27章对Hibernate框架进行详细讲解,主要内容包括Hibernate的入门程序编写、核心配置文件介绍、常用API的使用、持久化对象的状态、缓存、关联关系映射、常用的检索方式以及Hibernate的事务处理等。学习这几章时,读者要着重掌握如何使用Hibernate增、删、改、查操作数据库,熟悉映射文件和配置文件中的配置信息,熟悉持久化类的几种状态及转换方式,掌握常用的两种关联关系及反转和级联的操作,掌握HQL和QBC检索方式的使用。
第28~31章对Spring框架进行详细讲解,主要内容包括Spring的IoC、Bean以及AOP的相关知识。学习这几章时,读者要重点掌握Spring的IoC容器配置以及依赖注入的两种方式,要熟悉实例化Bean和装配Bean的三种方式,掌握Spring AOP程序的编写,并熟悉Spring的事务处理机制。
第32章主要讲解SSH框架整合。学习本章时,读者要熟练掌握SSH框架的整合过程,并学会如何测试整合是否成功。
第33章讲解的是一个基于SSH框架的实战项目——学生信息管理系统。学习本章时,读者要熟悉项目各个模块的功能,并能够独立按照教材中的步骤编写功能代码。当读者熟悉教材中讲解的功能后,可自行按照所提供的其他功能页面,完善学生信息管理系统。
上述的这些章节按照不同的学习阶段,可以分为四个部分,即基础篇、Web篇、框架篇和实战篇。其中第1~6章为基础篇,第7~16章为Web篇,第17~31章为框架篇,第32~33章为实战篇。在学习过程中,读者一定要亲自实践书中的案例代码。如果读者不能完全理解书中所讲的某个知识点,建议读者先不要纠结于该知识点,可以先往后学习。通常来讲,对各种知识的学习逐渐深入后,前面看不懂的知识点一般就能理解了。如果读者在动手练习的过程中遇到问题,建议多思考,理清思路,认真分析问题发生的原因,并在问题解决后多总结。
致谢
本教材的编写和整理工作由传智播客教育科技股份有限公司完成。主要参与人员有吕春林、陈欢、韩永蒙、马丹、金鑫、潮康、杜宏、梁桐、王友军、冯佳等,全体人员在这近一年的编写过程中付出了很多辛勤的汗水,在此一并表示衷心的感谢。
意见反馈
尽管我们尽了的努力,但教材中难免会有不妥之处,欢迎各界专家和读者朋友们来信来函给予宝贵意见,我们将不胜感激。您在阅读本书时,如发现任何问题或有不认同之处,可以通过电子邮件与我们取得联系。
请发送电子邮件至[email protected]。
黑马程序员
2017年7月于北京
评论
还没有评论。