1、实体类:
实体类中,时间类型字段使用LocalDateTime类型
修饰。
public class User implements Serializable {
private static final long serialVersionUID = 621747518161198596L;
* 用户id
private String id;
* 用户名称
private String name;
* 创建时间
private LocalDateTimecreateTime;
* 更新时间
private LocalDateTimeupdateTime;
2、配置转换器:
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import java.io.IOException;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
@Configuration
public class LocalDateTimeSerializerConfig {
* 序列化LocalDateTime
* @return
@Bean
@Primary
public ObjectMapper serializingObjectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
JavaTimeModule javaTimeModule = new JavaTimeModule();
javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer());
javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer());
objectMapper.registerModule(javaTimeModule);
return objectMapper;
* 序列化实现
public static class LocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {
@Override
public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers)
throws IOException {
if (value != null) {
long timestamp = value.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
gen.writeNumber(timestamp);
* 反序列化实现
public static class LocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {
@Override
public LocalDateTime deserialize(JsonParser p, DeserializationContext deserializationContext)
throws IOException {
long timestamp = p.getValueAsLong();
if (timestamp > 0) {
return LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp), ZoneId.systemDefault());
} else {
return null;
3、Get类型请求处理
默认情况下,配置的LocalDateTimeDeserializer
不会对Get请求生效,需要额外再做一次配置
TimeStampToLocalDateConverter:
public class TimeStampToLocalDateConverter implements Converter<String, LocalDateTime> {
@Override
public LocalDateTime convert(String text) {
if (!StringUtils.isEmpty(text)) {
long timestamp = Long.parseLong(text);
if (timestamp > 0) {
return LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp), ZoneId.systemDefault());
} else {
return null;
return null;
4、注册转换器:
通过继承WebMvcConfigurationSupport
类,重写extendMessageConverters
方法
@Configuration
public class WebMvcRegistrationsConfig extends WebMvcConfigurationSupport {
@Resource
private ObjectMapper serializingObjectMapper;
...
* 添加自定义消息转换器
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setObjectMapper(serializingObjectMapper);
converters.add(0, converter);
@Override
protected void addFormatters(FormatterRegistry registry) {
registry.addConverter(new TimeStampToLocalDateConverter());
...
时间戳转LocalDateTIme要将时间戳转换为Java的对象,你可以使用Java 8或更高版本中的java.time包。以下是将时间戳转换为的示例代码:java上述代码中,我们首先使用方法从时间戳创建了一个Instant对象,然后使用ZoneId定义了一个时区(你可以根据需要选择不同的时区),最后,我们使用atZone()方法将Instant转换为,然后使用方法将其转换为。请确保替换示例代码中的时间戳和时区以适应你的实际需求。
因为时间戳指的是自 1970 年 1 月 1 日(00:00:00 UTC/GMT)以来的秒数,所以无论在哪个时区,同一时间获取的都是相同时间戳,可以用于跨时区。但是我们现实生活用到的本地时间是跟时区挂钩的,中国所在的时区是东八区,会比 UTC 时间快 8 个小时。时间戳是从 UTC 时间得来的,所以时间戳与本地时间的相互转换,需要根据时区来转换。
1、面向对象的特征有哪些方面
1.抽象:
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
2.继承:
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
3.封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
4. 多态性:
多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
2、String是最基本的数据类型吗?
基本数据类型包括byte、int、char、long、float、double、boolean和short。
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类
3、int 和 Integer 有什么区别
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。
原始类型封装类
booleanBoolean
charCharacter
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。
4、String 和StringBuffer的区别
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。
5、运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
6、说出Servlet的生命周期,并说出Servlet和CGI的区别。
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
7、说出ArrayList,Vector, LinkedList的存储性能和特性
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
8、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。
EJB包括Session Bean、Entity Bean、Message Driven Bea
时间转换: LocalDateTime一、long类型的timestamp(时间戳)转为LocalDateTime二、LocalDateTime转为自定义的时间格式的字符串三、时间字符串转为自定义时间格式的LocalDateTime四、LocalDateTime转为long类型的timestamp
一、long类型的timestamp(时间戳)转为LocalDateTime
public static LocalDateTime getDateTimeOfTimestamp(long timestamp.
1.时间戳装LocalDateTime,时间戳如果是字符串则先转为long
LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(System.currentTimeMillis()/1000, 0, ZoneOffset.ofHours(8));
2.Date转LocalDate
Date date = new Date();
LocalDate localDate = date.toInstant().atZone(ZoneOffset.of
这篇文章主要介绍了JAVA8新增的LocalDateTime时间的格式化,和时间戳的互相转换。以及对应的源码分析,有这完整的源码调用链。源码的执行分析。逐行对源码进行了注释,方便大家看懂。万字长文带图带代码示例,一文带你彻底了解时间类型。看完本篇文章,你将获得源码技术++,源码阅读量++,JAVA水平++。对于JAVA源码的解析希望能给你帮助。并提升阅读源码的思维。
点击上面“蓝字”关注我哦!1.前言在java8以前,或许:当你在做有关时间日期的操作时,你会想到用Date;当你在做日期、月份、天数相加减时,你会想到用Calendar;当你需要对时间日期进行格式化时,你会想到使用SimpleDateFormat或DateFormat下的其他子类;……但是,你必须知道,以上有关的时间日期操作对象,都是可变的、线程不安全的,同时,如果作为一个经常写过类似代...
4.1 编译时异常 54
实例35 除0发生的算术异常(ArithmeticException) 54
实例36 数组下标越界异常(ArrayIndexOutOfBoundsException) 55
实例37 数组元素类型不匹配异常(ArrayStoreException) 56
实例38 强制类型转换异常(ClassCastException) 56
实例39 索引越界异常(IndexOutOfBoundsException) 57
实例40 空指针异常(NullPointerException) 58
实例41 数字格式转换异常(NumberFornatException) 59
实例42 字符串索引越界异常(StringIndexOutBounds) 60
实例43 操作错误(UnsupportedOperationException) 60
4.2 运行时异常 61
实例44 找不到指定类时发生的异常(ClassNotFoundException) 62
实例45 请求的方法不存在(NoSuchMethodException) 63
4.3 try…catch捕获异常 65
实例46 try…catch捕获异常的实例 66
实例47 try…catch…finally捕获异常的实例 67
实例48 try…catch嵌套捕获异常的实例 68
4.4 throws声明异常 69
实例49 throws声明异常实例一 69
实例50 throws声明异常实例二 70
4.5 throw抛出异常 72
实例51 throw抛出异常实例一 72
实例52 throw抛出异常实例二 73
4.6 自定义异常 74
实例53 自定义异常实例一 74
实例54 自定义异常实例二 75
第5章 数组(教学视频:98分钟) 78
5.1 一维数组 78
实例55 一维数组的创建与使用 78
实例56 按相反的顺序输出 79
实例57 奇偶分组 80
实例58 找宝 81
实例59 寻找最小数 82
实例60 我的位置在哪里 83
实例61 复制数组 85
实例62 插入新元素 86
实例63 数组的合并 87
实例64 去除重复元素 88
实例65 数组求和计算 90
实例66 求最大值、最小值和平均值 91
5.2 二维数组 92
实例67 二维数组的创建与使用 92
实例68 矩阵转置 93
实例69 奇数阶幻方 94
实例70 求方阵对角线之和 96
实例71 矩阵的加法 97
实例72 矩阵的减法 98
实例73 快递报价单 99
5.3 数组的排序 101
实例74 冒泡排序法 102
实例75 数组递增排序 103
实例76 部分数组递增排序 103
实例77 选择排序法 104
实例78 快速排序法 106
第6章 字符串(教学视频:138分钟) 108
6.1 字符串类String 108
实例79 创建字符串类 108
实例80 如何使用charAt()方法计算重复字符 109
实例81 按字母顺序比较大小 110
实例82 首尾相连 111
实例83 字符串间的比较 112
实例84 字符集的解码方法 113
实例85 寻找指定字符第一次出现的位置 114
实例86 寻找指定字符最后出现的位置 115
实例87 我究竟有多长 116
实例88 替换指定的字符 117
实例89 分割字符串 117
实例90 如何使用substring()方法截取子串 118
实例91 分解字符串 119
实例92 字母大小写转换 120
实例93 去除多余的空白 120
实例94 原始数组类型的String形式 121
实例95 Java合法标识符 122
实例96 显示一周各星期的名称 123
实例97 构造空心方框 124
实例98 这一天是星期几 125
实例99 大小写互换 127
实例100 输出指定范围的素数 128
实例101 我出现了几次 129
实例102 算术表达式求值器 129
实例103 字符串对齐调整器 137
实例104 字符串的加密 139
实例105 使用正则表达式验证电话号码的格式 141
6.2 字符串缓存类StringBuffer 143
实例106 创建字符串缓存类 143
实例107 提取单个字符 144
实例108 给指定字符赋值 145
实例109 插入新的字符 146
实例110 插入新的字符串 146
实例111 获取字符串的子串 147
实例112 删除指定的字符 148
实例113 倒置字符串 149
实例114 去除重复字符 149
实例115 检查是否是回文 151
第7章 输入/输出流(教学视频:116分钟) 152
7.1 文件和目录 152
实例116 显示文件的基本信息 152
实例117 显示目录的基本信息 153
实例118 在指定的目录下创建单个文件 156
实例119 在指定的目录下创建多个临时文件 158
实例120 删除指定目录下的文件 160
实例121 移动指定目录下的文件 163
实例122 文件搜索引挚 167
7.2 字节流 169
实例123 复制指定目录下的文件 170
实例124 显示文件中的内容 173
实例125 将数据保存到指定的文件中 175
实例126 将由键盘中录入的信息保存到文件中 176
实例127 一个文件变成多个小文件 178
实例128 多个小文件合成一个文件 181
实例129 统计指定文件中的字符个数 183
实例130 对象的序列化与反序列化 185
实例131 同时显示多个文件 187
实例132 生成zip压缩文件 189
实例133 解压缩zip文件 192
实例134 生成Excel文件 194
实例135 读取Excel文件中的内容 198
实例136 生成PDF文件 199
实例137 读取PDF文件中的内容 203
实例138 用iText生成Word文件 205
实例139 利用POI读取Word文件中的内容 208
7.3 字符流 209
实例140 按顺序创建文件 210
实例141 按顺序读取文件 211
实例142 追加文件内容 211
实例143 只显示文件中指定的字符 214
实例144 读取jar包文件 215
实例145 文件的加密/解密操作 217
实例146 复制图片 219
实例147 随机读写Java类文件 221
第3篇 Java面向对象编程
第8章 面向对象(教学视频:72分钟) 226
8.1 类 226
实例148 简单的通讯录类 226
实例149 简单的长度单位转换类 227
实例150 卡车和卡车司机之间的关系 229
实例151 双色球 231
8.2 成员变量和方法 236
实例152 使用类作为成员变量 236
实例153 构造方法 237
实例154 使用静态成员变量计算内存中实例化的对象数目 239
实例155 实现加减乘除的方法 240
8.3 面向对象的设计模式 241
实例156 Singleton单例模式 242
实例157 招聘(简单工厂模式) 243
实例158 同学聚会(工厂方法模式) 244
实例159 图书展(抽象工厂模式) 246
实例160 汽车适配器(Adapter适配器模式) 248
8.4 垃圾回收 250
实例161 垃圾回收的机制 250
第9章 面向对象的四大特征(教学视频:65分钟) 252
9.1 抽象 252
实例162 求自定义几何图形的面积和周长 252
实例163 使用抽象方法实现的支票夹 254
9.2 封装 257
实例164 世界小姐参赛资格 257
实例165 自定义复数类 261
9.3 继承 264
实例166 轿车与本田的关系 264
实例167 继承关系的加载顺序 266
实例168 如何访问同名的方法或变量 268
实例169 super()方法的使用 271
实例170 this方法的使用 274
实例171 一张考试成绩单 275
实例172 银行自动存取一体机 278
9.4 多态 284
实例173 饮食文化 284
实例174 使用构造方法的重载计算课程的GPA值 287
第10章 内部类与接口(教学视频:41分钟) 290
10.1 成员内部类 290
实例175 成员内部类的使用规范 290
实例176 猜谜 292
10.2 方法内部类 294
实例177 局部内部类的使用规范 294
实例178 奖学金的评分标准 295
10.3 匿名内部类 297
实例179 匿名内部类的使用规范 297
实例180 电话与移动电话 299
10.4 静态内部类 300
实例181 静态内部类的使用规范 300
实例182 苹果的来历 302
10.5 接口 303
实例183 求n的幂数与倍数 304
实例184 商品订单 306
实例185 多功能排序 310
第11章 Java常用类(教学视频:66分钟) 315
11.1 数学Math类 315
实例186 求圆周率∏值 315
实例187 求对数值 316
实例188 使用取整函数 317
11.2 Random类的使用 318
实例189 随机数 319
实例190 验证码 322
11.3 Date类和Calendar类 324
实例191 使用Date类获取系统的当前时间 324
实例192 使用DateFormat类获取系统的当前时间 325
实例193 使用GregorianCalendar类获取系统的当前时间 326
实例194 使用SimpleDateFormat类获取系统的当前时间 329
实例195 显示某年某月某一周的信息 330
实例196 显示某年某月的信息 332
实例197 时间的设置与获取 334
实例198 万年历(农历和阳历的互换) 337
11.4 Formatter类的使用 347
实例199 时间格式转换符的使用 347
实例200 数据格式转换符的使用 349
11.5 System类的使用 351
实例201 记录程序执行的时间 351
实例202 程序的退出 352
实例203 获取程序运行环境的信息 353
第4篇 Java高级开发技术
第12章 集合(教学视频:45分钟) 358
12.1 Set 358
实例204 利用HashSet删除学生 358
实例205 不重复的随机数序列 360
实例206 运用映射的相关类(Map) 363
实例207 运用集的相关类(Set) 365
12.2 List 368
实例208 增加所需的元素 368
实例209 Iterator迭代器的使用 370
实例210 谁是幸运儿 371
实例211 自定义Queue队列 373
实例212 List、Set与Array之间的相互转换 375
实例213 二分查找法的实现方法 377
实例214 模拟操作系统的进程调度 379
实例215 利用栈将字符串逆序输出 381
实例216 动态的数组链表 382
实例217 你能猜出鱼是谁的宠物吗? 387
实例218 使用Collections类对List的排序操作 393
实例219 LinkedList的添加删除操作 395
实例220 运用Vector 397
实例221 改变Properties文件中的键值 399
第13章 多线程编程(教学视频:121分钟) 405
13.1 多线程的五种基本状态 405
实例222 启动线程 405
实例223 参赛者的比赛生活(线程休眠唤醒) 407
实例224 资源搜索并下载(线程等待和通报) 410
实例225 模拟淘宝购物买卖双方交易问题 412
实例226 携子之手 与子偕老(join) 415
实例227 线程让步(Yield) 417
实例228 会走动的钟(多线程) 419
实例229 变形金刚中的守护神(守护线程) 424
实例230 查看JVM中所有的线程的活动状况 426
实例231 模仿网络快车下载工具下载文件 428
13.2 多线程的同步与互斥 436
实例232 多线程同步方法的实例 436
实例233 ATM存取一体机(线程同步互斥) 437
实例234 我的钱哪里去了 440
实例235 门锁打不开了(死锁) 444
实例236 门锁终于被打开了(解决死锁) 446
实例237 一个死锁的例子 448
13.3 线程的优先级 451
实例238 排座位(线程优先级) 451
实例239 赛车 454
13.4 定时器 458
实例240 定时器(Timer) 458
实例241 数字定时器 459
13.5 线程连接池 462
实例242 手术任务(线程池) 462
实例243 模拟人工服务台(线程连接池) 466
13.6 线程应用实例 471
实例244 下雪的村庄 472
实例245 小飞侠 474
实例246 飞流直下 477
实例247 多线程断点续传 479
实例248 滚动的珠子 485
实例249 余额查询 489
实例250 滚动的文字 492
实例251 漂浮效果 495
实例252 监视内存的使用情况 499
实例253 璀璨的星空 501
实例254 银行和超市业务的模拟 505
第14章 泛型(教学视频:43分钟) 511
14.1 泛型基础 511
实例255 一个关于泛型的简单例子 511
实例256 带两个类型参数的泛型 513
实例257 有界类型程序示例 514
实例258 通配符使用示例 515
实例259 泛型方法使用示例 516
实例260 泛型接口示例 518
实例261 泛型实现坐标打印 519
14.2 泛型类的继承 521
实例262 继承泛型类示例 521
实例263 继承非泛型类示例 522
实例264 泛型类的类型识别示例 523
实例265 强制类型转换示例 525
14.3 擦拭 526
实例266 无限界的擦拭 526
实例267 有限界的擦拭 527
14.4 集合泛型类 528
实例268 Hashtable的泛型化 528
实例269 多功能画笔 529
第15章 网络编程(教学视频:52分钟) 534
15.1 IP地址 534
实例270 获取计算机名与IP地址 534
实例271 获取网址的IP地址 535
实例272 判断两个网址的主机名是否一样 536
实例273 测试IP的类型 537
实例274 查找主机 538
实例275 主机所支持的协议 539
15.2 URL类的使用 540
实例276 使用URL访问网页 540
实例277 URL的组成部分 541
实例278 通过指定的URL可以获取网页的源代码 542
实例279 一对多通信模式 544
实例280 自制浏览器 549
实例281 扫描TCP端口 551
实例282 TCP协议服务器 552
实例283 TCP协议客户机 553
实例284 Socket连接信息 555
实例285 Echo服务的客户端是如何实现的? 556
实例286 检测本机的服务端口 558
实例287 下载的页面不丢失链接 559
实例288 如何对网页进行重新定向 560
实例289 在Internet上搜索对象 560
实例290 LAN使用代理服务器 562
实例291 BBS论坛服务器端 567
实例292 UDP报文的发送与接收 579
第16章 数据库技术(教学视频:38分钟) 583
实例293 加载JDBC驱动程序 583
实例294 通过JDBC对数据库进行查询 584
实例295 数据库更新 585
实例296 获取数据库的基本信息 586
实例297 获取数据库对SQL支持的信息 589
实例298 处理访问数据库出现的常见异常情况 591
实例299 在Servlet中连接数据库 593
实例300 数据分页显示 595
实例301 批处理 601
实例302 事物处理 604
实例303 调用存储过程 608
实例304 连接ODBC数据库 611
实例305 数据库中图片文件的存取 614
第17章 界面设计--Swing(教学视频:88分钟) 618
17.1 Swing组件介绍及应用 618
实例306 JFrame框架的应用 618
实例307 Border的使用 619
实例308 使用Icon组件显示一张图片 620
实例309 Icon接口的应用 621
实例310 JLabel组件 622
实例311 Icon应用到JLabel中 623
实例312 JButton的使用 624
实例313 在JButton上设置快捷键 625
实例314 设置默认按钮 626
实例315 使用JCheckBox组件 627
实例316 JCheckBox事件处理 629
实例317 JRadioButton的使用 630
实例318 JComboBox的使用 632
实例319 利用ComboModel构造JComboBox 633
实例320 DefaultComboBoxModel的使用 635
实例321 建立有图像的JComboBox 636
实例322 建立可自行输入的JComboBox 637
实例323 JComboBox的事件处理 638
实例324 JTextField组件的使用 640
实例325 使用JTextArea组件 641
17.2 页面布局及事件监听 642
实例326 BorderLayout版面布局 643
实例327 FlowLayout布局管理 644
实例328 应用GridLayout设计版面 645
实例329 如何使用BoxLayout布局管理器 647
实例330 使用ActionEvent监听组件 648
实例331 使用WindowAdapter实现鼠标事件 649
实例332 使用MouseMotionListener监听鼠标 650
实例333 使用KeyListener监听键盘 652
17.3 组件的综合应用 654
实例334 计算器 654
实例335 创建树菜单 657
实例336 在节点中显示详细信息 658
第18章 Applet小应用程序(教学视频:39分钟) 662
实例337 不断变大的文字 662
实例338 灯光扫描的效果 664
实例339 字体逐渐展开的效果 666
实例340 飞舞的气球 668
实例341 逐渐浮现的图片 671
实例342 火焰边框的特效 674
实例343 局部放大效果 677
实例344 水波荡漾的效果 679
实例345 漫天飞花 682
实例346 动感影集 685
实例347 彩虹字 688
实例348 多功能按键 690
第19章 多媒体与图像处理(教学视频:51分钟) 694
19.1 多媒体 694
实例349 测试音频播放器 694
实例350 测试视频播放器 696
实例351 视频反色效果 698
实例352 实现一个录音机 703
实例353 建立一个调色板 707
19.2 图像处理 710
实例354 在计算机内存中创建一个图像 710
实例355 会移动的图像 712
实例356 将图片进行180度旋转 714
实例357 处理图像的明暗度 716
实例358 如何将彩色图转化为灰度图 721
实例359 锐化和模糊图像 724
实例360 显示一个图像的轮廓 727
实例361 如何放大及拉伸图像 730
第20章 JSP开发技术(教学视频:62分钟) 735
20.1 JSP基础 735
实例362 网页版的9×9乘法口诀 735
实例363 Java Servlet小程序 737
实例364 Servlet对表单的处理过程 738
实例365 获取/修改JavaBeans中的内容 741
20.2 JSP程序设计 743
实例366 喜连大三元 743
实例367 运气对对碰 748
实例368 文字样式统计器 752
实例369 图形统计器 754
20.3 垃圾信息投诉站 756
实例370 创建投诉表单 756
实例371 保存投诉的内容 760
实例372 实现投诉站的后台操作 762
实例373 取消投诉内容 764
实例374 站内信 767
20.4 网站在线评估系统 769
实例375 创建评估问卷 769
实例376 实现评估的后台操作 771
实例377 查看评估结果 773
第5篇 Java综合案例
第21章 模拟服务器与客户端之间的通信(教学视频:13分钟) 778
21.1 实例介绍 778
21.2 框架设计 779
21.2.1 项目的总体结构 779
21.2.2 搭建开发环境 779
21.2.3 确定项目工程目录 779
21.3 公用模块设计 780
21.4 客户端程序 780
21.4.1 客户端的工作流程 780
21.4.2 编写客户端的源程序 781
21.4.3 客户端源的程序解读 783
21.5 服务器端程序 785
21.5.1 服务器端的工作流程 785
21.5.2 编写服务器端的源程序 785
21.5.3 服务器端的源程序解读 788
21.6 小结 790
第22章 书店管理系统(教学视频:56分钟) 791
22.1 实例分析 791
22.2 系统设计 792
22.2.1 结构分析 792
22.2.2 搭建环境 792
22.2.3 创建目录 793
22.3 数据库设计 793
22.4 公用模块设计 795
22.4.1 data包中的类 795
22.4.2 util包中的类 798
22.5 用户登录模块 800
22.6 系统主界面 802
22.7 基础维护模块 804
22.7.1 图书维护 804
22.7.2 用户维护 811
22.8 借还管理模块 818
22.8.1 借书 818
22.8.2 还书 821
22.9 查询管理模块 824
22.9.1 图书查询 824
22.9.2 用户查询 826
22.10 系统管理模块 829
22.11 小结 831
4.1 编译时异常 54
实例35 除0发生的算术异常(ArithmeticException) 54
实例36 数组下标越界异常(ArrayIndexOutOfBoundsException) 55
实例37 数组元素类型不匹配异常(ArrayStoreException) 56
实例38 强制类型转换异常(ClassCastException) 56
实例39 索引越界异常(IndexOutOfBoundsException) 57
实例40 空指针异常(NullPointerException) 58
实例41 数字格式转换异常(NumberFornatException) 59
实例42 字符串索引越界异常(StringIndexOutBounds) 60
实例43 操作错误(UnsupportedOperationException) 60
4.2 运行时异常 61
实例44 找不到指定类时发生的异常(ClassNotFoundException) 62
实例45 请求的方法不存在(NoSuchMethodException) 63
4.3 try…catch捕获异常 65
实例46 try…catch捕获异常的实例 66
实例47 try…catch…finally捕获异常的实例 67
实例48 try…catch嵌套捕获异常的实例 68
4.4 throws声明异常 69
实例49 throws声明异常实例一 69
实例50 throws声明异常实例二 70
4.5 throw抛出异常 72
实例51 throw抛出异常实例一 72
实例52 throw抛出异常实例二 73
4.6 自定义异常 74
实例53 自定义异常实例一 74
实例54 自定义异常实例二 75
第5章 数组(教学视频:98分钟) 78
5.1 一维数组 78
实例55 一维数组的创建与使用 78
实例56 按相反的顺序输出 79
实例57 奇偶分组 80
实例58 找宝 81
实例59 寻找最小数 82
实例60 我的位置在哪里 83
实例61 复制数组 85
实例62 插入新元素 86
实例63 数组的合并 87
实例64 去除重复元素 88
实例65 数组求和计算 90
实例66 求最大值、最小值和平均值 91
5.2 二维数组 92
实例67 二维数组的创建与使用 92
实例68 矩阵转置 93
实例69 奇数阶幻方 94
实例70 求方阵对角线之和 96
实例71 矩阵的加法 97
实例72 矩阵的减法 98
实例73 快递报价单 99
5.3 数组的排序 101
实例74 冒泡排序法 102
实例75 数