首页编程java编程java简单程序实例,Java程序设计案例教程

java简单程序实例,Java程序设计案例教程

编程之家2026-05-23891次浏览

大家好,如果您还对java简单程序实例不太了解,没有关系,今天就由本站为大家分享java简单程序实例的知识,包括Java程序设计案例教程的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

java简单程序实例,Java程序设计案例教程

java nio 开发实例

首先了解下所谓的java nio是个什么东西!

传统的并发型服务器设计是利用阻塞型网络I/O以多线程的模式来实现的然而由

于系统常常在进行网络读写时处于阻塞状态会大大影响系统的性能自Java开始引入

了NIO(新I/O) API通过使用非阻塞型I/O实现流畅的网络读写操作为开发高性能并发

型服务器程序提供了一个很好的解决方案这就是java nio

首先来看下传统的阻塞型网络 I/O的不足

java简单程序实例,Java程序设计案例教程

Java平台传统的I/O系统都是基于Byte(字节)和Stream(数据流)的相应的I/O操

作都是阻塞型的所以服务器程序也采用阻塞型I/O进行数据的读写操作本文以TCP

长连接模式来讨论并发型服务器的相关设计为了实现服务器程序的并发性要求系统由一

个单独的主线程来监听用户发起的连接请求一直处于阻塞状态当有用户连接请求到来时

程序都会启一个新的线程来统一处理用户数据的读写操作

这种模式的优点是简单实用易管理然而缺点也是显而易见的由于是为每一个客

java简单程序实例,Java程序设计案例教程

户端分配一个线程来处理输入输出数据其线程与客户机的比例近似为随着线程

数量的不断增加服务器启动了大量的并发线程会大大加大系统对线程的管理开销这将

成为吞吐量瓶颈的主要原因其次由于底层的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

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!

string网站,string源码java运行环境软件 java开发