1、Date与时间戳转换

1、实体类:
实体类中,时间类型字段使用 Date 类型 修饰。

public class User implements Serializable {
    private static final long serialVersionUID = 621747518161198596L;
     * 用户id
    private String id;
     * 用户名称
    private String name;
     * 创建时间
    private Date createTime;
     * 更新时间
    private Date updateTime;

2、配置转换器:
目的是将,接收到前端时间戳,转换为Date类型.

public class TimeStampToDateConverter implements Converter<String, Date> {
    @Override
    public Date convert(String text) {
        Date date = null;
        if (StringUtils.isNotEmpty(text)) {
            date = new Date(Long.parseLong(text));
        return date;

3、注册转换器:
通过继承WebMvcConfigurationSupport 类,重写addFormatters方法

@Configuration
public class WebMvcRegistrationsConfig extends WebMvcConfigurationSupport {
	...
     * 添加自定义消息转换器
    @Override
    protected void addFormatters(FormatterRegistry registry) {
        // 添加时间戳转日期类型消息转换器
        registry.addConverter(new TimeStampToDateConverter());
	...

4、配置yaml:

spring:
  #统一时间返回格式
  jackson:
    #date-format: yyyy-MM-dd HH:mm:ss #返回时间戳时不进行格式化
    time-zone: GMT+8
    serialization:
      write-dates-as-timestamps: true #是否返回时间戳

2、LocalDateTime与时间戳转换

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 {
    // 注入ObjectMapper 
	@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、StringStringBuffer的区别
JAVA平台提供了两个类:StringStringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个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.DateLocalDate
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 数