Java编程词典第3部分:SQL范例库概览
SQL语言基础部分,涵盖了基础的查询操作,如数据的查找、筛选和理解SQL语句的基本结构和语法。
常规数据查询模块,提供实用的查询示例,帮助开发者快速获取和理解数据表中的信息。
高级数据过滤模块深入探讨更复杂的查询条件和逻辑,如使用JOIN、GROUP BY和HAVING等高级功能。
字符串查询模块关注SQL中的字符串操作,如何使用LIKE、REGEXP等进行精确或模糊的字符串匹配。
日期查询模块则讲解如何处理日期和时间,包括日期范围查询和时间戳操作。
数据排序模块则介绍如何根据特定字段对数据进行排序,提升数据检索的效率。
模块资源库
项目资源库
Java编程词典个人版是明日科技为Java各级程序开发人员和编程爱好者开发的专业编程资源库,它提供了海量的开发资源、丰富的实例项目、灵活的查询方式、多样的学习模式,既可以帮助零基础者快速入门,又可以帮助有一定基础者快速提升开发水平,更适合各级程序开发人员随时检索查询,随时粘贴复用。Java编程词典个人版是程序开发人员的左膀右臂,软件工程师必备的专业指南。
2. java编程:怎么用JSP(javabean)上传一张图片到服务器的指定文件夹呢
先导smartupload jar包!在写form表单<input tyle="file" enctype="multipart/form-data" method="post">enctype和method别写错了!
写一个简单的吧!
<%page import="com.jspsmart.upload.*"%>
<%
SmartUpload su=new SmartUpload ();//初始化SmartUpload对象
try{ //捕获他可能出现的异常
su.upload();//执行上传
}catch(Exception ex){
ex.printStackTrace;
}
File file=su.getFile().getFile(0); //(得到单个的上传文件的信息)这里得到的File对象是你到的jar包里的com.jspsmart.upload.File类型 别写成IO 里面的File了
String filepath="upload\\"; //在这之前要在你所建项目的目录下单建一个upload文件夹
filepath+=file.getFileName();
file.saveAs(filepath,SmartUpload.SAVE-VIRTUAL);
不知道是否建了与它相对应的数据库表啊?
不懂得再玩吧!
%>
3. 如何优化java动画编程中的显示效果
Java动画编程有多种实现方法,但它们实现的基本原理是一样的,即在屏幕上画出一系列的帧来造成运动的感觉。Java多线程技术是Java动画编程中普遍运用的技术,它在控制动画程序的流程和动画的显示效果方面起着重要的作用。Java动画编程中的动画闪烁和图像残缺不全等现象,是Java程序员经常遇到的问题。本文以作者应用实例程序为基础,阐述如何运用多线程、重载Update、双缓冲和图像跟踪等技巧来解决这类问题,以达到动画显示的最佳效果。
Java多线程技术
Java多线程技术简介
目前,线程(Thread)已经为许多操作系统和应用开发系统所采用。线程是程序的单个控制流,具有顺序程序的特点。但是,线程不是一个程序,它仅仅是程序的一个执行序列。线程具有很强的并发功能,在同一时刻可以有多个线程同时处于执行状态。线程是动态的,具有一定的生命周期,分别经历从创建、执行、阻塞、直到消亡的过程。Java语言对多线程编程的支持有两种实现方法:一种是直接继承Thread类,另一种是实现Runnable接口。Thread类提供了对线程的控制方法,如start(),stop(),run()、suspend()、resume()和sleep()等方法,它们可以对线程的状态进行控制。
动画线程的设计与实现
为了每秒中多次更新屏幕,必须创建一个线程来实现动画的循环,这个循环要跟踪当前帧并响应周期性的屏幕更新要求。许多Java初学者容易犯的一个错误是将动画循环放在paint()中,这样占据了主AWT线程,而主线程将负责所有的绘图和事件处理。因此,应该生成一个独立的动画线程来完成图像的显示和更新。例如,在一个Applet框架下,当Applet启动(Start)时,生成一个动画线程;在Applet停止(stop)时,终止该动画线程以释放它所占用的CPU资源。下列程序代码(简称“C1”代码)是该动画线程的具体实现:
public void start() {
if(animatorThread==null) {
animatorThread=new Thread(this);
//开始动画线程
animatorThread.start();
}
}
public void stop(){
//停止动画线程
animatorThread=null;
}
上面终止动画线程的时候,并不是调用该动画线程的stop()方法,而是设置该动画线程为null。因为如果直接调用线程的stop()方法会强制线程终止所有的执行工作,有时会带来不好的结果。设置该动画线程为null,则在run()方法中,由于不满足循环条件,线程会自然退出。这样,也进一步优化了该动画程序。
重载update()和双缓冲技术消除闪烁
在Java中,动画发生闪烁有两个原因:一个是由于在显示下一帧画面的时候,调用了repaint()方法;而repaint()方法被调用时,要清除整个背景,然后才调用paint()方法显示画面。这样,在清除背景和绘制图像的短暂时间间隔内被用户看见的就是闪烁。另一个是由于paint()方法要进行复杂的计算,绘制每一帧花费的时间太长,图像中的各个像素值不能同时得到,使得动画的生成频率低于显示器的刷新频率,从而造成闪烁。
下面两种方法可以明显地消除或减弱闪烁。
重载update()方法
当AWT接收到一个Applet的重绘请求时,它就调用Applet的update()方法。缺省情况下,update()方法清除Applet的背景,然后调用paint()方法。重载update()方法就可以将以前在paint()方法中的绘图代码包含在update()方法中,从而避免每次重绘时将整个区域清除。既然背景不再自动清除,Java程序员需要自己在update()中完成。
双缓冲技术
另一种消除帧之间闪烁的方法是使用双缓冲技术,它在许多动画Applet中被使用。主要原理是创建一幅后台图像,将每一帧画入图像,然后调用drawImage()方法将整个后台图像一次画到屏幕上去。这种方法的优点在于大部分绘制是离屏的。将离屏图像一次绘至屏幕上,比直接在屏幕上绘制要有效得多。在创建后台图像前,首先要通过调用createImage()方法生成合适的后台缓冲区,然后获得在缓冲区做图的环境(即Graphics类对象)。
下列实例程序代码(简称“C2”代码)就是这两种方法的结合使用,双缓冲技术在重载update()方法中实现。其中,offImage是Image类的对象,offGraphics是Graphics类的对象,这两个类对象是实现双缓冲技术的关键。相关代码如下:
public void paint(Graphics g){
update(g);
}
public void update(Graphics g){
Dimension d=getSize();
//如果后台图像不存在,就创建一个后台图像
if((offGraphics==null)||(d.width!=offDimension.width)
||(d.height!=offDimension.height)) {
offDimension=d;
offImage=createImage(d.width,d.height);
offGraphics=offImage.getGraphics();
}
//擦除上一帧
offGraphics.setColor(getBackground());
offGraphics.fillRect(0,0,d.width,d.height);
offGraphics.setColor(Color.black);
//将当前的帧输出到指定的image中
for(int i=0 ; i<10 ; i++){
offGraphics.drawImage(images[i],frameNumber*5%(d.width/2)
,i*d.height/10,this);
}
//输出指定的后台图像
g.drawImage(offImage,frameNumber*5%(d.width/2),0,this);
}
双缓冲技术可以使动画平滑,但有一个缺点,要分配一个后台图像的缓冲,如果图像相当大,这将占用很大一块内存。
图像跟踪与程序的逐步完善
图像跟踪
当动画线程刚刚启动的时候,由于没有全部载入图像,屏幕上显示的画面经常是残缺不全的。这时可以使用MediaTracker或ImageOberver类对象进行图像跟踪,待图像全部载入后,再调用drawImage()方法将图像输出到屏幕上去。DrawImage()方法的第四个参数正是ImageObserver类对象,所以可以用ImageObserver类对象进行图像跟踪。在实际应用Applet程序的init()方法中实现图像跟踪,相当于在动画线程的DrawImage()方法调用以前就画了一次图像,因为动画线程的初始化过程,即init()方法是先被调用的。下列代码(简称“C3”代码)展示了init()方法使用MediaTracker类对象来实现跟踪图像的载入,代码如下:
public void init(){
tracker=new MidiaTracker(this);
for(int i=1;i<=10;i++){
image[i-1]=getImage(getCodeBase(),"image"+i+".gif");
//用MediaTracker类对象的addImage()方法跟踪图像的载入
tracker.addImage(images[i-1],0);
}
......
}
程序的进一步完善
在“C2”代码的重载update()方法中加入下列if语句,从而对MediaTracker类对象的图像跟踪方法做出判断,if语句如下:
if(!tracker.checkAll()){
//如果图像还没有装载完毕,则仅清除背景,同时输出一个状态
g.clearRect(0,0,d.width,d.height);
g.drawString("Please wait...",0,d.height/2);
return;
}
在“C1”代码的stop()方法中加入两行代码,用以释放由双缓冲技术所占用的内存资源,这时stop()方法改为:
public void stop(){
//停止动画线程
animatorThread=null;
//释放用于双缓冲的内存资源
offGraphics=null;
offImage=null;
}
程序修改到此,还有一个小问题,就是动画线程启动后,第一幅图像有时仍有残留痕迹,而不是随着图像的更新而完全擦除掉。如果想解决此问题,只要将“C2”代码中最后的for()循环和g.drawImage()方法改为如下代码就可以了。
for(int i=0;i<10;i++){
offGraphics.drawImage(images[frameNumber%10],
,frameNumber*5%(d.width),i*d.height/10,this);
}
g.drawImage(offImage,0,0,this);
保持恒定的帧速度
为了使用户观看动画时没有闪烁感,至少需要达到每秒12帧的速度。更高的帧速度会产生更平滑的动画。通常,在动画显示的每两帧之间,调用线程的sleep()方法休眠一个固定的
4. java编程中,GUI界面的一般框架有什么希望大神给写个程序实例,程序内容包括布局的应用,多个
java GUI一般,通过AWT,SWING 实现
其余比较流行的是SWT,但是它不是官方库, 并且旦核不能跨平台
//注意:
Swing, 所以很多不涉及界面组件的一些类比如布局 等Swing也可以使用
但是组件,最好不要混用, 容易出现一些组件叠加,等显示错误 比如JButton TextField等混用
//参考代码
下面使用Swing组件来实哗告现
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
//本类实现了ActionListener接口.一个ActionListener可以响应JMenuItem和JButton的动作
//本类实现FocusListener接口,一个FocusListener可以响应JTextField,JButton等
//JButton响应多个事件接口
,FocusListener{
privateJTextFieldjtf1;
privateJTextFieldjtf2;
privateJTextFieldjtf3;
privateJButtonjb1;
publicMyGuiFrame(){
//----------窗口属性乱迟明的设置----------
setTitle("窗口应用程序");//窗口标题
setSize(380,120);//窗口大小
setLocationRelativeTo(null);//窗口居于屏幕中央
setDefaultCloseOperation(EXIT_ON_CLOSE);//点击关闭窗口后退出jvm虚拟机
getContentPane().setLayout(newBorderLayout(5,3));//边界布局,水平间距5,垂直间距3
//菜单栏组件初始化
initMenu();
//主要面板的初始化
initPanel();
}
privatevoidinitPanel(){
JPaneljp=newJPanel(newFlowLayout(FlowLayout.CENTER));//流式布局
jtf1=newJTextField(8);
jtf1.addFocusListener(this);//添加焦点响应
JLabeljl=newJLabel("+");
jtf2=newJTextField(8);
jtf2.addFocusListener(this);
jb1=newJButton("=");
jb1.addActionListener(this);//添加动作响应
jb1.addFocusListener(this);//添加焦点响应
jtf3=newJTextField(8);
jtf3.setEditable(false);
jp.add(jtf1);
jp.add(jl);
jp.add(jtf2);
jp.add(jb1);
jp.add(jtf3);
getContentPane().add(jp,BorderLayout.CENTER);
}
privatevoidinitMenu(){//菜单栏的初始化和设置
JMenuBarjmb=newJMenuBar();
JMenujm1=newJMenu("系统");
JMenuItemjmi101=newJMenuItem("退出");
jmi101.addActionListener(this);//添加动作响应
JMenujm2=newJMenu("帮助");
JMenuItemjmi201=newJMenuItem("功能说明");
jmi201.addActionListener(this);
jm1.add(jmi101);
jm2.add(jmi201);
jmb.add(jm1);
jmb.add(jm2);
setJMenuBar(jmb);//设置菜单栏
}
//main方法,创建对象窗口,并且设置可见
publicstaticvoidmain(String[]args){
newMyGuiFrame().setVisible(true);
}
//动作响应处理
publicvoidactionPerformed(ActionEvente){
Stringcmd=e.getActionCommand();//根据命令来区分不同的操作
if(cmd.equals("退出")){
System.exit(0);
}
if(cmd.equals("功能说明")){
JOptionPane.showMessageDialog(this,"加法");
}
if(cmd.equals("=")){
Strings1=jtf1.getText().trim();
Strings2=jtf2.getText().trim();
if(s1.equals("")){
s1="0";
}
if(s2.equals("")){
s2="0";
}
doublenum1=Double.parseDouble(s1);//从字符串转小数
doublenum2=Double.parseDouble(s2);
jtf3.setText((num1+num2)+"");//数字类型转字符串类型
}
}
//焦点响应处理
publicvoidfocusGained(FocusEvente){//获得焦点
JComponentcmp=(JComponent)e.getComponent();//根据事件来源组件来区分不同的操作
if(cmp==jtf1||cmp==jtf2){
cmp.setBorder(BorderFactory.createLineBorder(Color.BLUE));//设置边框
}
if(cmp==jb1){
jb1.setForeground(Color.RED);//设置文字颜色
}
}
publicvoidfocusLost(FocusEvente){//失去焦点
JComponentcmp=(JComponent)e.getComponent();
if(cmp==jtf1||cmp==jtf2){
cmp.setBorder(BorderFactory.createLineBorder(Color.GRAY));
}
if(cmp==jb1){
jb1.setForeground(Color.BLACK);
}
}
}
运行效果如图
5. 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