java简单程序实例,Java程序设计案例教程
大家好,如果您还对java简单程序实例不太了解,没有关系,今天就由本站为大家分享java简单程序实例的知识,包括Java程序设计案例教程的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
java nio 开发实例
首先了解下所谓的java nio是个什么东西!
传统的并发型服务器设计是利用阻塞型网络I/O以多线程的模式来实现的然而由
于系统常常在进行网络读写时处于阻塞状态会大大影响系统的性能自Java开始引入
了NIO(新I/O) API通过使用非阻塞型I/O实现流畅的网络读写操作为开发高性能并发
型服务器程序提供了一个很好的解决方案这就是java nio
首先来看下传统的阻塞型网络 I/O的不足
Java平台传统的I/O系统都是基于Byte(字节)和Stream(数据流)的相应的I/O操
作都是阻塞型的所以服务器程序也采用阻塞型I/O进行数据的读写操作本文以TCP
长连接模式来讨论并发型服务器的相关设计为了实现服务器程序的并发性要求系统由一
个单独的主线程来监听用户发起的连接请求一直处于阻塞状态当有用户连接请求到来时
程序都会启一个新的线程来统一处理用户数据的读写操作
这种模式的优点是简单实用易管理然而缺点也是显而易见的由于是为每一个客
户端分配一个线程来处理输入输出数据其线程与客户机的比例近似为随着线程
数量的不断增加服务器启动了大量的并发线程会大大加大系统对线程的管理开销这将
成为吞吐量瓶颈的主要原因其次由于底层的I/O操作采用的同步模式 I/O操作的阻塞管
理粒度是以服务于请求的线程为单位的有可能大量的线程会闲置处于盲等状态造成I/O
资源利用率不高影响整个系统的性能
对于并发型服务器系统用在阻塞型I/O等待和线程间切换的时间远远多于CPU在内
存中处理数据的时间因此传统的阻塞型I/O已经成为制约系统性能的瓶颈 Java版本
后推出的NIO工具包提供了非阻塞型I/O的异步输入输出机制为提高系统的性能提供
了可实现的基础机制
NIO包及工作原理
针对传统I/O工作模式的不足 NIO工具包提出了基于Buffer(缓冲区) Channel(通
道) Selector(选择器)的新模式 Selector(选择器)可选择的Channel(通道)和
SelectionKey(选择键)配合起来使用可以实现并发的非阻塞型I/O能力
NIO工具包的成员
Buffer(缓冲器)
Buffer类是一个抽象类它有个子类分别对应于七种基本的数据类型 ByteBuffer
CharBuffer DoubleBuffer FloatBuffer IntBuffer LongBuffer和ShortBuffer每一个Buffer
对象相当于一个数据容器可以把它看作内存中的一个大的数组用来存储和提取所有基本
类型(boolean型除外)的数据 Buffer类的核心是一块内存区可以直接对其执行与内存有关
的操作利用操作系统特性和能力提高和改善Java传统I/O的性能
Channel(通道)
Channel被认为是NIO工具包的一大创新点是(Buffer)缓冲器和I/O服务之间的通道
具有双向性既可以读入也可以写出可以更高效的传递数据我们这里主要讨论
ServerSocketChannel和SocketChannel它们都继承了SelectableChannel是可选择的通道
分别可以工作在同步和异步两种方式下(这里的可选择不是指可以选择两种工作方式而是
指可以有选择的注册自己感兴趣的事件)当通道工作在同步方式时它的功能和编程方法
与传统的ServerSocket Socket对象相似当通道工作在异步工作方式时进行输入输出处
理不必等到输入输出完毕才返回并且可以将其感兴趣的(如接受操作连接操作读出
操作写入操作)事件注册到Selector对象上与Selector对象协同工作可以更有效率的支
持和管理并发的网络套接字连接
Selector(选择器)和SelectionKey(选择键)
各类 Buffer是数据的容器对象各类Channel实现在各类Buffer与各类I/O服务间传输
数据 Selector是实现并发型非阻塞I/O的核心各种可选择的通道将其感兴趣的事件注册
到Selector对象上 Selector在一个循环中不断轮循监视这各些注册在其上的Socket通道
SelectionKey类则封装了SelectableChannel对象在Selector中的注册信息当Selector监测
到在某个注册的SelectableChannel上发生了感兴趣的事件时自动激活产生一个SelectionKey
对象在这个对象中记录了哪一个SelectableChannel上发生了哪种事件通过对被激活的
SelectionKey的分析外界可以知道每个SelectableChannel发生的具体事件类型进行相应的
处理
NIO工作原理
通过上面的讨论我们可以看出在并发型服务器程序中使用NIO实际上是通过网络事
件驱动模型实现的我们应用Select机制不用为每一个客户端连接新启线程处理而是将
其注册到特定的Selector对象上这就可以在单线程中利用Selector对象管理大量并发的网
络连接更好的利用了系统资源采用非阻塞I/O的通信方式不要求阻塞等待I/O操作完
成即可返回从而减少了管理I/O连接导致的系统开销大幅度提高了系统性能
当有读或写等任何注册的事件发生时可以从Selector中获得相应的
SelectionKey从SelectionKey中可以找到发生的事件和该事件所发生的具体的
SelectableChannel以获得客户端发送过来的数据由于在非阻塞网络I/O中采用了事件触
发机制处理程序可以得到系统的主动通知从而可以实现底层网络I/O无阻塞流畅地读
写而不像在原来的阻塞模式下处理程序需要不断循环等待使用NIO可以编写出性能更
好更易扩展的并发型服务器程序
并发型服务器程序的实现代码
应用 NIO工具包基于非阻塞网络I/O设计的并发型服务器程序与以往基于阻塞I/O的
实现程序有很大不同在使用非阻塞网络I/O的情况下程序读取数据和写入数据的时机不
是由程序员控制的而是Selector决定的下面便给出基于非阻塞网络I/O的并发型服务器
程序的核心代码片段
import java io*//引入Java io包
import*//引入包
import java nio channels*//引入Java nio channels包
import java util*//引入Java util包
public class TestServer implements Runnable
{
/**
*服务器Channel对象负责接受用户连接
*/
private ServerSocketChannel server
/**
* Selector对象负责监控所有的连接到服务器的网络事件的发生
*/
private Selector selector
/**
*总的活动连接数
*/
private int activeSockets
/**
*服务器Channel绑定的端口号
*/
private int port
/**
*
*构造函数
*/
public TestServer()throws IOException
{
activeSockets=
port=//初始化服务器Channel绑定的端口号为
selector= Selector open()//初始化Selector对象
server=ServerSocketChannel open()//初始化服务器Channel对象
ServerSocket socket=server socket()//获取服务器Channel对应的//ServerSocket对象
socket bind(new InetSocketAddress(port))//把Socket绑定到监听端口上
nfigureBlocking(false)//将服务器Channel设置为非阻塞模式
server register(selector SelectionKey OP_ACCEPT)//将服务器Channel注册到
Selector对象并指出服务器Channel所感兴趣的事件为可接受请求操作
}
public void run()
{
while(true)
{
try
{
/**
*应用Select机制轮循是否有用户感兴趣的新的网络事件发生当没有
*新的网络事件发生时此方法会阻塞直到有新的网络事件发生为止
*/
selector select()
}
catch(IOException e)
{
continue//当有异常发生时继续进行循环操作
}
/**
*得到活动的网络连接选择键的集合
*/
Set<SelectionKey> keys=selector selectedKeys()
activeSockets=keys size()//获取活动连接的数目
if(activeSockets==)
{
continue//如果连接数为则继续进行循环操作
}
/**
/**
*应用For—Each循环遍历整个选择键集合
*/
for(SelectionKey key:keys)
{
/**
*如果关键字状态是为可接受则接受连接注册通道以接受更多的*
事件进行相关的服务器程序处理
*/
if(key isAcceptable())
{
doServerSocketEvent(key)
continue
}
/**
*如果关键字状态为可读则说明Channel是一个客户端的连接通道
*进行相应的读取客户端数据的操作
*/
if(key isReadable())
{
doClientReadEvent(key)
continue
}
/**
*如果关键字状态为可写则也说明Channel是一个客户端的连接通道
*进行相应的向客户端写数据的操作
*/
if(key isWritable())
{
doClinetWriteEvent(key)
continue
}
}
}
}
/**
*处理服务器事件操作
*@param key服务器选择键对象
*/
private void doServerSocketEvent(SelectionKey key)
{
SocketChannel client=null
try
{
ServerSocketChannel server=(ServerSocketChannel)key channel()
client=server accept()
if(client==null)
{
return
}
nfigureBlocking(false)//将客户端Channel设置为非阻塞型
/**
/**
*将客户端Channel注册到Selector对象上并且指出客户端Channel所感
*兴趣的事件为可读和可写
*/
client register(selector SelectionKey OP_READ|SelectionKey OP_READ)
}catch(IOException e)
{
try
{
client close()
}catch(IOException e){}
}
}
/**
*进行向客户端写数据操作
*@param key客户端选择键对象
*/
private void doClinetWriteEvent(SelectionKey key)
{
代码实现略
}
/**
*进行读取客户短数据操作
*@param key客户端选择键对象
*/
private void doClientReadEvent(SelectionKey key)
{
代码实现略
}
}
从上面对代码可以看出使用非阻塞性I/O进行并发型服务器程序设计分三个部分
向Selector对象注册感兴趣的事件从Selector中获取所感兴趣的事件根据不同的事件进
行相应的处理
结语
通过使用NIO工具包进行并发型服务器程序设计一个或者很少几个Socket线程就可
以处理成千上万个活动的Socket连接大大降低了服务器端程序的开销同时网络I/O采取
非阻塞模式线程不再在读或写时阻塞操作系统可以更流畅的读写数据并可以更有效地向
CPU传递数据进行处理以便更有效地提高系统的性能
看到这里相信你看了不止分钟了吧我说分钟其实就是想让大家能够轻松的读下去(鸡蛋)
好了到这里大家应该对java nio有个初步的了解了吧~~~
lishixinzhi/Article/program/Java/hx/201311/27190
需要一份500行的java程序,期末大作业,最好带详细注释。
Java生成CSV文件简单操作实例
CSV是逗号分隔文件(Comma Separated Values)的首字母英文缩写,是一种用来存储数据的纯文本格式,通常用于电子表格或数据库软件。在 CSV文件中,数据“栏”以逗号分隔,可允许程序通过读取文件为数据重新创建正确的栏结构,并在每次遇到逗号时开始新的一栏。如:
123 1,张三,男2,李四,男3,小红,女
Java生成CSV文件(创建与导出封装类)
package com.yph.omp.common.util;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.junit.Test;
/**
* Java生成CSV文件
*/
public class CSVUtil{
/**
*生成为CVS文件
*
*@param exportData
*源数据List
*@param map
* csv文件的列表头map
*@param outPutPath
*文件路径
*@param fileName
*文件名称
*@return
*/
@SuppressWarnings("rawtypes")
public static File createCSVFile(List exportData, LinkedHashMap map,
String outPutPath, String fileName){
File csvFile= null;
BufferedWriter csvFileOutputStream= null;
try{
File file= new File(outPutPath);
if(!file.exists()){
file.mkdir();
}
//定义文件名格式并创建
csvFile= File.createTempFile(fileName,".csv",
new File(outPutPath));
// UTF-8使正确读取分隔符","
csvFileOutputStream= new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(csvFile),"GBK"), 1024);
//写入文件头部
for(Iterator propertyIterator= map.entrySet().iterator(); propertyIterator
.hasNext();){
java.util.Map.Entry propertyEntry=(java.util.Map.Entry) propertyIterator
.next();
csvFileOutputStream
.write("\""+(String) propertyEntry.getValue()!= null?(String) propertyEntry
.getValue():""+"\"");
if(propertyIterator.hasNext()){
csvFileOutputStream.write(",");
}
}
csvFileOutputStream.newLine();
//写入文件内容
for(Iterator iterator= exportData.iterator(); iterator.hasNext();){
Object row=(Object) iterator.next();
for(Iterator propertyIterator= map.entrySet().iterator(); propertyIterator
.hasNext();){
java.util.Map.Entry propertyEntry=(java.util.Map.Entry) propertyIterator
.next();
/*-------------------------------*/
//以下部分根据不同业务做出相应的更改
StringBuilder sbContext= new StringBuilder("");
if(null!= BeanUtils.getProperty(row,(String) propertyEntry.getKey())){
if("证件号码".equals(propertyEntry.getValue())){
//避免:身份证号码,读取时变换为科学记数-解决办法:加 \t(用Excel打开时,证件号码超过15位后会自动默认科学记数)
sbContext.append(BeanUtils.getProperty(row,(String) propertyEntry.getKey())+"\t");
}else{
sbContext.append(BeanUtils.getProperty(row,(String) propertyEntry.getKey()));
}
}
csvFileOutputStream.write(sbContext.toString());
/*-------------------------------*/
if(propertyIterator.hasNext()){
csvFileOutputStream.write(",");
}
}
if(iterator.hasNext()){
csvFileOutputStream.newLine();
}
}
csvFileOutputStream.flush();
} catch(Exception e){
e.printStackTrace();
} finally{
try{
csvFileOutputStream.close();
} catch(IOException e){
e.printStackTrace();
}
}
return csvFile;
}
/**
*下载文件
*
*@param response
*@param csvFilePath
*文件路径
*@param fileName
*文件名称
*@throws IOException
*/
public static void exportFile(HttpServletRequest request,
HttpServletResponse response, String csvFilePath, String fileName)
throws IOException{
response.setCharacterEncoding("UTF-8");
response.setContentType("application/csv;charset=GBK");
response.setHeader("Content-Disposition","attachment; filename="
+ new String(fileName.getBytes("GB2312"),"ISO8859-1"));
InputStream in= null;
try{
in= new FileInputStream(csvFilePath);
int len= 0;
byte[] buffer= new byte[1024];
OutputStream out= response.getOutputStream();
while((len= in.read(buffer))> 0){
out.write(buffer, 0, len);
}
} catch(FileNotFoundException e1){
System.out.println(e1);
} finally{
if(in!= null){
try{
in.close();
} catch(Exception e1){
throw new RuntimeException(e1);
}
}
}
}
/**
*删除该目录filePath下的所有文件
*
*@param filePath
*文件目录路径
*/
public static void deleteFiles(String filePath){
File file= new File(filePath);
if(file.exists()){
File[] files= file.listFiles();
for(int i= 0; i< files.length; i++){
if(files[i].isFile()){
files[i].delete();
}
}
}
}
/**
*删除单个文件
*
*@param filePath
*文件目录路径
*@param fileName
*文件名称
*/
public static void deleteFile(String filePath, String fileName){
File file= new File(filePath);
if(file.exists()){
File[] files= file.listFiles();
for(int i= 0; i< files.length; i++){
if(files[i].isFile()){
if(files[i].getName().equals(fileName)){
files[i].delete();
return;
}
}
}
}
}
@SuppressWarnings({"unchecked","rawtypes"})
@Test
public void createFileTest(){
List exportData= new ArrayList<Map>();
Map row1= new LinkedHashMap<String, String>();
row1.put("1","11");
row1.put("2","12");
row1.put("3","13");
row1.put("4","14");
exportData.add(row1);
row1= new LinkedHashMap<String, String>();
row1.put("1","21");
row1.put("2","22");
row1.put("3","23");
row1.put("4","24");
exportData.add(row1);
LinkedHashMap map= new LinkedHashMap();
map.put("1","第一列");
map.put("2","第二列");
map.put("3","第三列");
map.put("4","第四列");
String path="d:/export";
String fileName="文件导出";
File file= CSVUtil.createCSVFile(exportData, map, path, fileName);
String fileNameNew= file.getName();
String pathNew= file.getPath();
System.out.println("文件名称:"+ fileNameNew);
System.out.println("文件路径:"+ pathNew);
}
}
//注:BeanUtils.getProperty(row,(String) propertyEntry.getKey())+"\t",只为解决数字格式超过15位后,在Excel中打开展示科学记数问题。
Java经典编程300例的目录
第1章 Java语言概述 1
实例001输出“Hello World” 2
实例002输出控制台传递的参数 2
实例003输出由“*”组成的三角形 3
实例004输出符号表情 5
第2章 Eclipse开发工具 6
实例005下载并运行Eclipse工具 7
实例006为Eclipse安装汉化包 8
实例007使用Eclipse注释代码 10
实例008使用Eclipse格式化代码 11
实例009安装WindowBuilder插件 12
实例010开发计算器界面 14
第3章 Java语言基础 15
实例011输出错误信息与调试信息 16
实例012从控制台接收输入字符 16
实例013重定向输出流实现程序日志 17
实例014自动类型转换与强制类型转换 19
实例015加密可以这样简单(位运算) 20
实例016用三元运算符判断奇数和偶数 21
实例017不用乘法运算符实现2×16 22
实例018实现两个变量的互换
(不借助第3个变量) 23
第4章流程控制 25
实例019判断某一年是否为闰年 26
实例020验证登录信息的合法性 27
实例021为新员工分配部门 28
实例022用switch语句根据消费
金额计算折扣 29
实例023判断用户输入月份的季节 31
实例024使用while循环语句与自增
运算符循环遍历数组 33
实例025使用for循环输出杨辉三角形 34
实例026使用嵌套循环在控制台上
输出九九乘法表 35
实例027使用while循环计算1+
1/2!+1/3!…1/20! 36
实例028使用for循环输出空心的菱形 38
实例029终止循环体 39
实例030循环体的过滤器 41
第5章数组及其常用操作 43
实例031获取一维数组的最小值 44
实例032将二维数组中的行列互换 45
实例033利用数组随机抽取幸运观众 47
实例034用数组设置JTable表格的
列名与列宽 49
实例035使用按钮控件数组实现
计算器界面 51
实例036通过复选框控件数组实现
添加多个复选框控件 52
实例037使用选择排序法对数组排序 53
实例038使用冒泡排序法对数组排序 55
实例039使用快速排序法对数组排序 57
实例040使用直接插入法对数组排序 59
实例041使用sort()方法对数组排序 61
实例042反转数组中元素的顺序 63
第6章面向对象入门 65
实例043自定义图书类 66
实例044温度单位转换工具 67
实例045成员变量的默认初始化值 68
实例046单例模式的应用 69
实例047汉诺塔问题求解 70
实例048编写同名的方法 71
实例049构造方法的应用 72
实例050统计图书的销售量 73
实例051两只完全相同的宠物 74
实例052重新计算对象的哈希码 76
实例053使用字符串输出对象 77
实例054 Java对象的假克隆 78
实例055 Java对象的浅克隆 80
实例056 Java对象的深克隆 82
实例057序列化与对象克隆 84
实例058深克隆效率的比较 87
第7章面向对象进阶 89
实例059经理与员工的差异 90
实例060重写父类中的方法 92
实例061计算几何图形的面积 93
实例062简单的汽车销售商场 95
实例063使用Comparable接口自定
义排序 96
实例064策略模式的简单应用 98
实例065适配器模式的简单应用 100
实例066普通内部类的简单应用 102
实例067局部内部类的简单应用 103
实例068匿名内部类的简单应用 104
实例069静态内部类的简单应用 105
实例070实例化Class类的几种方式 107
实例071查看类的声明 108
实例072查看类的成员 110
实例073查看内部类信息 112
实例074动态设置类的私有域 113
实例075动态调用类中方法 115
实例076动态实例化类 116
实例077创建长度可变的数组 117
实例078利用反射重写toString()方法 119
第8章字符串与包装类 121
实例079将数字格式化为货币字符串 122
实例080货币金额大写格式 123
实例081 String类格式化当前日期 125
实例082字符串大小写转换 126
实例083字符与Unicode码的转换 128
实例084判断用户名是否正确 129
实例085用户名排序 130
实例086判断网页请求与FTP请求 132
实例087判断文件类型 133
实例088判断字符串是否为数字 135
实例089验证IP地址的有效性 136
实例090鉴别非法电话号码 137
实例091将字符串转换成整数 139
实例092整数进制转换器 140
实例093获取字符串中汉字的个数 141
实例094批量替换某一类字符串 142
实例095查看数字的取值范围 144
实例096 ASCII编码查看器 145
实例097判断手机号的合法性 146
实例098用字符串构建器追加字符 147
实例099去掉字符串中的所有空格 148
实例100 Double类型的比较 149
第9章 Java集合类框架 151
范例101用动态数组保存学生姓名 152
实例102用List集合传递学生信息 153
实例103 Map集合二级联动 155
实例104不重复随机数组排序 157
实例105 for循环遍历ArrayList 159
实例106 Iterator遍历ArrayList 159
实例107 ListIterator逆序遍历ArrayList 160
实例108制作电子词典 161
实例109制作手机电话簿 162
第10章常用数学工具类 164
实例110角度和弧度的转换 165
实例111三角函数的使用 166
实例112反三角函数的使用 167
实例113双曲函数的使用 168
实例114指数与对数运算 169
实例115高精度整数运算 170
实例116高精度浮点运算 171
实例117七星彩号码生成器 173
实例118大乐透号码生成器 174
第11章错误处理 177
实例119算数异常 178
实例120数组下标越界异常 179
实例121空指针异常 180
实例122类未发现异常 181
实例123非法访问异常 182
实例124文件未发现异常 183
实例125数据库操作异常 184
实例126方法中抛出异常 185
实例127方法上抛出异常 186
实例128自定义异常类 187
实例129捕获单个异常 188
实例130捕获多个异常 189
第12章输入/输出 191
实例131显示指定类型的文件 192
实例132以树结构显示文件路径 193
实例133查找替换文本文件内容 194
实例134设置Windows系统的文件
属性 195
实例135文件批量重命名 196
实例136快速批量移动文件 197
实例137删除文件夹中的.tmp文件 198
实例138将图片文件保存到数据库 199
实例139从数据库读取图片文件 200
实例140窗体动态加载磁盘文件 201
实例141删除文件夹中所有文件 202
实例142创建磁盘索引文件 208
实例143控制台记录器 205
实例144防止创建多个字符串对象 206
实例145合并多个文本文件 207
实例146对大文件实现分割处理 208
实例147将分割后的文件重新合并 209
实例148读取属性文件单个属性值 210
实例149向属性文件中添加信息 211
实例150在复制文件时使用进度条 212
实例151从XML文件中读取数据 213
实例152读取Jar文件属性 214
实例153电子通讯录 215
实例154批量复制指定扩展名文件 217
实例155分类保存文件 218
实例156搜索指定文件夹中的文件 219
实例157实现文件锁定功能 220
实例158简单的投票软件 221
实例159压缩所有文本文件 222
实例160将压缩包解压到指定文件夹 223
实例161压缩所有子文件夹 225
实例162深层文件夹压缩包的释放 226
实例163解决压缩包中文乱码 227
实例164 Apache实现文件解压缩 228
实例165把窗体压缩成ZIP文件 229
实例166解压缩Java对象 230
实例167文件压缩为RAR文档 231
实例168解压缩RAR压缩包 233
实例169为RAR压缩包添加注释 234
实例170获取压缩包详细文件列表 235
实例171从RAR压缩包中删除文件 237
实例172在压缩文件中查找字符串 238
实例173重命名RAR压缩包中文件 239
实例174创建自解压RAR压缩包 240
第13章枚举类型与泛型 242
实例175查看枚举类型的定义 243
实例176枚举类型的基本特性 244
实例177增加枚举元素的信息 245
实例178选择合适的枚举元素 246
实例179高效的枚举元素集合 248
实例180高效的枚举元素映射 249
实例181使用枚举接口遍历元素 250
实例182使用泛型实现栈结构 251
实例183自定义泛型化数组类 253
实例184泛型方法与数据查询 254
实例185使用通配符增强泛型 256
实例186泛型化的折半查找法 257
第14章 Swing入门 259
实例187从上次关闭位置启动窗体 260
实例188始终在桌面最顶层显示窗体 261
实例189设置窗体大小 262
实例190根据桌面大小调整窗体大小 263
实例191自定义最大化、最小化和
关闭按钮 265
实例192禁止改变窗体的大小 267
实例193指定窗体标题栏图标 267
实例194设置闪烁的标题栏 269
实例195实现带背景图片的窗体 270
实例196背景为渐变色的主界面 271
实例197随机更换窗体背景 273
实例198椭圆形窗体界面 275
实例199钻石形窗体 276
实例200创建透明窗体 277
实例201信息提示对话框 278
实例202设置信息提示对话框的图标 279
实例203指定打开对话框的文件类型 280
实例204为保存对话框设置默认文件名 282
实例205支持图片预览的文件选
择对话框 283
实例206颜色选择对话框 285
实例207信息输入对话框 286
实例208定制信息对话框 287
实例209拦截事件的玻璃窗格 289
实例210简单的每日提示信息 290
实例211震动效果的提示信息 292
实例212制作圆形布局管理器 293
实例213制作阶梯布局管理器 295
实例214密码域控件简单应用 296
实例215文本域设置背景图片 297
实例216文本区设置背景图片 298
实例217简单的字符统计工具 299
实例218能预览图片的复选框 300
实例219简单的投票计数软件 301
实例220单选按钮的简单应用 302
实例221能显示图片的组合框 303
实例222使用滑块来选择日期 305
实例223模仿记事本的菜单栏 308
实例224自定义纵向的菜单栏 309
实例225复选框与单选按钮菜单项 311
实例226包含图片的弹出菜单 312
实例227工具栏的实现与应用 314
实例228修改列表项显示方式 315
实例229列表项与提示信息 316
实例230表头与列的高度设置 317
实例231调整表格各列的宽度 319
实例232设置表格的选择模式 321
实例233为表头增添提示信息 323
实例234单元格的粗粒度排序 325
实例235实现表格的查找功能 326
实例236应用网格布局设计计算
器窗体 327
第15章多线程 329
实例237查看线程的运行状态 330
实例238查看JVM中的线程名 331
实例239查看和修改线程优先级 333
实例240休眠当前线程 335
实例241终止指定线程 336
实例242线程的插队运行 337
实例243使用方法实现线程同步 339
实例244使用特殊域变量实现线程同步 341
实例245简单的线程通信 342
实例246新建有返回值的线程 344
实例247使用线程池优化多线程编程 346
实例248哲学家的就餐问题 348
第16章网络通信 350
实例249获得内网的所有IP地址 351
实例250获取网络资源的大小 352
实例251解析网页中的内容 354
实例252网络资源的单线程下载 355
实例253网络资源的多线程下载 357
实例254下载网络资源的断点续传 359
实例255建立服务器套接字 362
实例256建立客户端套接字 363
实例257设置等待连接的超时时间 364
实例258获得Socket信息 365
实例259接收和发送Socket信息 367
实例260关闭Socket缓冲 369
实例261使用Socket通信 371
实例262防止Socket传递汉字乱码 375
实例263使用Socket传递对象 377
实例264使用Socket传输图片 379
实例265使用Socket传输音频 381
实例266使用Socket传输视频 384
实例267一个服务器与一个客户端
通信 385
实例268一个服务器与多个客户端
通信 387
实例269客户端一对多通信 389
实例270客户端一对一通信 391
实例271基于Socket的数据库编程 393
实例272使用Proxy创建代理服务器 396
实例273使用ProxySelector选择
代理服务器 397
实例274聊天室服务器端 399
实例275聊天室客户端 401
第17章数据库操作 405
实例276 JDBC连接MySQL数据库 406
实例277连接SQL Server 2005数据库 407
实例278 JDBC连接Oracle数据库 408
实例279获取SQL Server指定数据
库中的数据表信息 409
实例280获取MySQL指定数据库
中的数据表名称 411
实例281查看数据表结构 412
实例282动态维护投票数据库 414
实例283 SQL Server数据备份 416
实例284 SQL Server数据恢复 419
实例285 MySQL数据备份 422
实例286 MySQL数据恢复 424
实例287动态附加数据库 425
实例288生成SQL数据库脚本 426
实例289表中字段的描述信息 429
实例290将员工信息添加到数据表 430
实例291添加数据时使用数据验证 431
实例292插入用户登录日志信息 432
实例293生成有规律的编号 433
实例294生成无规律的编号 435
实例295插入数据时过滤危险字符 436
实例296复选框保存到数据库 437
实例297把数据复制到另一张表中 438
实例298批量插入数据 439
实例299更新指定记录 440
实例300在删除数据时给出提示信息 442
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!