自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 java基础之异常处理

异常处理: (1)异常机制可以使程序中的异常处理代码和正常业务代码分离,保证代码更加优雅,并可以提高程序的健壮性。 (2)java的异常处理机制主要依赖于try catch finally throw 和throws五个关键字。 (3)try关键字后面紧跟一个花括号括起来的代码块,简称try块,里面放置可能引发异常的代码。 (4)catch后面对应异常类型和一个代码块,用于表示该ca

2016-09-21 14:42:38 278

原创 类的加载、连接和初始化:

类的加载、连接和初始化: (1)JVM和类: 当调用某个Java命令运行某个Java程序时,该程序将会启动一个Java虚拟机进程,不管该程序有多么复杂,该程序启动了多少个线程,他们都处于该Java虚拟机进程里。同一个JVM的所有线程,所有变量都处于同一个进程里,他们都使用该JVM的内存区,当系统出现以下情况时,JVM进程将被终止: 程序运行到最后结束 程序运行到使用System.exit()

2016-09-21 14:41:07 309

原创 处理Blob类型数据:

处理Blob类型数据: (1)Blob(Binary long Object)是二进制长对象的意思,Blob通常用于存储大文件,典型的Blob内容是一张图片或者一个声音文件,由于他们的特殊性,必须使用特殊的方式来存储。使用Blob列可以把照片声音等文件的二进制数据保存在数据库里,并可以从数据库里恢复指定文件。 (2)如果需要将图片插入数据库,显然不能通过普通的SQL语句来完成,因为有一个关

2016-09-21 14:39:50 5599

原创 JDBC管理结果集

管理结果集: JDBC使用ResultSet来封装执行查询得到的查询结果,然后通过移动ResultSet的记录指针来取出结果集的内容。除此之外,JDBC还允许通过ResultSet来更新记录,并提供ResultSetMetaData来获得ResultSet对象的内容。(1)可以使用absolute() previous(0 afterLast()等方法自由移动记录指针的ResultSet被

2016-09-21 14:36:50 406

原创 JDBC编程步骤与执行SQL语句的方式

(1)JDBC编程步骤: 第一步:加载数据库驱动。通常使用Class类的forName()静态方法来加载驱动: //加载驱动 Class.forNamed(DriverClass); 其中DriverClass就是数据库驱动类所对应的字符串。例如,加载MySQL的驱动代码如下 //加载MySQL驱动 Class.forName(“com.mysql.jdbc.Driver”);第二步:通

2016-09-21 14:35:22 4310

原创 MySQL数据库与JDBC编程基础

(1)由于Java语言的跨平台性,所以使用JDBC编写的程序不仅可以实现跨数据库,还可以跨平台,具有非常优秀的可移植性。 (2)程序使用JDBC API以统一的方式来连接不同的数据库,然后通过Statement对象来执行标准的 SQL语句,并可以获得SQL语句访问数据库的结果。 (3)JDBC 全称是Java Database Connectivity,即Java数据库连接,它是一种可

2016-09-21 14:30:32 950

原创 使用MulticastSocket实现多点广播(实现多人聊天室)

使用MulticastSocket实现多点广播: (1)DatagramSocket只允许数据报发给指定的目标地址,而MulticastSocket可以将数据报以广播的方式发送到多个客户端。 (2)IP协议为多点广播提供了这批特殊的IP地址,这些IP地址的范围是:224.0.0.0至239.255.255.255. (3)MulticastSocket类时实现多点广播的关键,当Multicas

2016-09-21 14:20:14 2919 1

原创 基于UDP协议的网络编程:

基于UDP协议的网络编程: (1)UDP是一种不可靠的网络协议,他在通信两端各建立一个Socket,但这两个Socket之间没有虚拟链路,这两个Socket只是发送、接受数据报的对象。Java提供了DatagramSocket对象作为基于UDP协议的Socket,使用DatagramPacket代表DatagramSocket发送、接受的数据报。(2)UDP协议是英文 user Datagra

2016-09-21 14:13:36 674

原创 加入多线程:

加入多线程: (1)实际应用中的客户端可能需要和服务器端保持较长时间通信,即服务器端需要不断读取客户端数据,并向客户端写入数据;客户端也需要不断的读取服务器端数据,并向服务器端写入数据。 (2)在使用传统BufferedReader的readLine()方法读取数据时,在该方法成功返回之前,线程被阻塞,程序无法继续执行。考虑到这个原因,服务器端应该为每个Socket单独启动一个线程,每个线程负责

2016-09-21 14:12:19 368

原创 基于TCP协议的网络编程:

基于TCP协议的网络编程: TCP/IP通信协议是一种可靠的网络协议,他在通信的两端各建立一个Socket,从而在通信的两端之间形成网络虚拟链路。一旦建立了虚拟的网路链路,两端的程序就可以通过虚拟链路进行通信。Java对基于TCP协议的网络通信提供了良好的封装,Java使用socket对象来代表两端的通信接口,并通过socket产生的IO流来进行网络通信。(1)通过使用IP协议,从而使Intene

2016-09-21 14:10:22 514

原创 Java网络编程基础

网络编程: (1)计算机网络中实现同通信必须有一些约定,这些约定 被称为通信协议。通信协议负责对传输速率,传输代码,代码结构,传输控制步骤,出错控制等制定处理标准。为了能够让两个节点之间进行对话,必须在他们之间建立通信工具,使彼此之间能够进行信息交换。 (2)通信协议通常由三部分组成:一是语义部分,用于决定双方对话的类型;二是语法部分,用于决定双方对话的格式;三是变换规则,用于决定通信双方的应答

2016-09-21 14:08:34 240

原创 使用阻塞队列(BlockingQueue)控制线程通信:

使用阻塞队列(BlockingQueue)控制线程通信: (1)Java5提供了一个BlockingQueue接口,虽然BlockingQueue也是Queue的子接口,但它的主要用途并不是作为容器,而是作为线程同步的工具类。BlockingQueue具有一个特征:当生产者线程试图向BlockingQueue中放入元素时,如果该队列已满,则该线程被阻塞;当消费者试图从BlockingQueue中取

2016-09-21 14:05:03 731

原创 使用Condition控制线程通信:

使用Condition控制线程通信: (1)如果不使用synchronized关键字保证同步,而是直接使用Lock对象来保证同步,则系统中不存在隐式的同步监视器,也就不能使用wait() notify() notifyAll()来进行线程通信了 (2)当使用lock对象来保证同步时,Java提供了一个Condition类来保持协调,使用Condition可以让那些已经得到lock对象却无

2016-09-21 14:03:29 390

原创 线程通信(wait()、notify()、notifyAll() 方法)

线程通信:程序不能控制线程的轮换执行, 但可以通过一些机制保证线程协调运行. 传统的线程通信 Object类提供了wait(), notify()和notifyAll()三个方法实现线程通信, 它们不属于Thread类. 1. wait(): 导致当前线程等待, 直到其他线程调用该同步监视器的notify()或notifyAll()方法来唤醒该线程(也可以指定等待时间). * 调用wait()方

2016-09-21 14:01:39 2307

原创 同步锁、死锁

同步锁(lock): (1)从Java5开始,Java提供了一种功能更强大的线程同步机制–通过显式的定义同步锁对象来实现同步,在这种机制下同步锁由lock对象充当 (2)Lock提供了比synchronized方法和synchronized代码块更广泛的锁定操作,Lock允许实现更灵活的结构,可以具有差别很大的属性,并且支持多个相关的Condition对象 (3)Lock是控制多个线程对共享资

2016-09-21 13:58:17 399

原创 线程安全问题(银行取钱问题)、同步代码块、同步方法

(1)线程安全问题: 关于线程安全问题,有一个经典的问题–银行取钱问题。银行取钱可以分为以下步骤: 1.用户输入账户密码,系统判断账户密码是否匹配 2.用户输入取款金额 3.系统判断账户余额是否大于取款金额 4.如果账户余额大于取款金额,则取钱成功,如果余额小于取款金额,则取款失败//按上面的流程去编写取款程序,并使用两个线程来模拟取款操作,模拟两个人使用统一账户并发取钱的问题。此处忽略检

2016-09-21 13:56:11 3088 1

原创 改变线程优先级:

改变线程优先级:(1)每个线程执行时都具有一定的优先级,优先级高的获得较多的执行机会,优先级低的线程则获得较少的执行机会。 (2)每个线程的优先级都与创建它的父线程优先级相同,在默认情况下,main线程具有普通优先级,而main线程创建的子线程也具有普通优先级。 (3)Thread提供了setPriority(int newPriority ) getPriority()方法来设置和返回指定

2016-09-21 13:52:23 5256

原创 线程睡眠(sleep)线程让步(yield)

线程睡眠:sleep (1)如果需要让当前执行的线程暂停一段时间,并进入阻塞状态,则可以通过调用Thread类的静态方法sleep()来实现,sleep()有两种重载形式。 static void sleep(long milis):让当前正在执行的线程暂停millis毫秒,并进入阻塞状态 static void sleep(long milis,int nanos) 让当前正

2016-09-21 13:50:47 725

原创 线程的生命周期

线程的生命周期: (1)在线程的生命周期中,他要经过新建(new) 就绪(Runnable) 运行(Running) 阻塞(Blocked)和死亡(Dead)5种状态。 (2)新建和就绪状态: 当程序使用了New关键字创建了一个线程之后,该线程就处于新建状态,此时他和其他的Java对象一样,仅仅由Java虚拟机为其分配内存,并初始化成员变量的值。此时的线程对象没有表现出任何线程的动态

2016-09-21 09:01:28 257

原创 创建线程的方式

实现Runnable接口创建线程类: 实现Runnable接口创建并启动多线程的步骤: *定义Runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体。 *创建Runnable实现类的实例,并以此实例作为Thread的target来创建Thread对象,该Thraed对象才是真正的线程对象。 //创建Runnable实现类的对象 Seco

2016-09-21 08:59:09 242

原创 线程的创建和启动

线程的创建和启动: (1)Java使用Thread类代表线程,所有的线程对象都必须是Thread类或者其子类的实例。每个线程的作用是完成一定的任务,实际就是执行一段程序流(一段顺序执行的代码)。Java使用线程执行体来代替这段程序流。 (2)通过继承Thread类来创建并启动多线程的步骤如下: **定义Thread类的子类,并重写该类的run()方法,该run()方法的方法体就代表的线程需要完

2016-09-21 08:57:31 333

原创 Java进程基础

(1)进程是处于运行中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位。 (2)进程的三个特征: 独立性:进程是系统中独立存在的试图,他可以拥有自己独立的资源,每一个进程都拥有自己私有的地址空间。 动态性:进程与程序的区别在于,程序只是一个静态的指令集合,而进程是一个正在系统中活动的指令集合。 并发性:多个进程可以在单个处理器上并发执行,多个进程之间不会相互影响。

2016-09-21 08:56:39 250

原创 理解java的I/O流:

理解java的I/O流: Java的IO流是实现输入输出的基础,他可以方便的实现数据的输入输出操作,在Java中把不同的输入/输出园(键盘,文件,网络连接等)抽象描述为流(stream),通过流的方式允许Java程序使用相同的方式来访问不同的输入输出源。 Java把所有传统的流类型(类或抽象类)都放在java.io中包中,用以实现输入输出功能。 因为Java提供了这种IO流的抽象,所以开发者可

2016-09-21 08:54:56 341

原创 JavaFilter类

java 的IO通过java.io包下的类和接口来支持,在Java.io包下主要包括输入输出两种流,每种输入输出流又可分为字节流和字符流两大类。其中字节流以字节单位来处理输入输出操作,而字符流则以字符来处理输入输出操作。 除此之外,Java的IO流使用了一种装饰器的模式,它将IO流分为底层节点流和上层处理流,其中节点流用于和底层的物理存储节点直接相连,不同的物理节点获取节点流的方式可能存在一定的差

2016-09-21 08:52:52 681

原创 简单的五子棋游戏程序:

利用ImageIO读取磁盘上的位图,然后将这图绘制在AWT组件上,就可以做出更加丰富的图形界面程序: //简单的五子棋游戏程序:package com.zou;import java.awt.Dimension;import java.awt.Graphics;import java.awt.event.MouseAdapter;import java.awt.event.MouseEve

2016-09-21 08:48:47 641

原创 处理位图:

处理位图: (1)AWT也允许在组件上绘制位图。Graphics提供了drawImage()方法用于绘制位图,该方法需要一个Image参数-代表位图,通过该方法就可以绘制出指定的位图 (2)Image抽象类和BufferedImage实现类: Image类代表位图,但他是一个抽象类,无法直接创建Image对象,为此Java为他提供了BufferedImage子类,这个子子类是可以访问图像数据缓

2016-09-21 08:48:01 340

原创 Java开发一些动画

Java也可以用于开发一些动画。所谓动画,就是间隔一定时间(通常小于0.1秒)重新绘制新的图像,两次绘制的图像之间差异很小,肉眼看起来就是所谓的动画。为了实现间隔一定的时间就重新调用组件的repaint(()方法,可以借助Swing提供的Timer类,Timer类是一个定时器,他有一个如下的构造器: Timer(int delay,ActionListener listener) :每间隔del

2016-09-21 08:46:17 388

原创 AWT菜单:

AWT菜单: 与创建GUI界面的方式类似,创建AWT菜单就是将菜单条、菜单项和菜单组合在一起。 (1)AWT中的菜单由以下几个类组合而成: MenuBar 菜单条,菜单的容器 Menu 菜单组件,菜单项的容器 PopupMenu 上下文菜单组件(右键菜单组件) MenuItem 菜单项组件 CheckboxMenuItem 复选框菜单组件 MenuShortcut

2016-09-21 08:45:58 1261

原创 实现事件监听器对象的几种形式:

事件监听器是一个特殊的java对象,实现事件监听器对象有如下几种形式: 内部类形式:将事件监听器定义为当前类的内部类(如前面示例程序都是内部类的形式) 外部类形式:将事件监听器定义成一个外部类 类本身作为事件监听器类:让当前类本身实现监听器接口或继承事件适配器 匿名内部类形式:使用匿名内部类创建监听器对象。———————————————————————————————————————————

2016-09-21 08:43:41 5116

原创 事件适配器:

事件适配器: (1)事件适配器是监听器接口的空实现–事件适配器实现了监听器接口,并为该接口里的每个方法提供了实现,这种实现是一种空实现(方法体内没有任何代码的实现),当需要创建监听器时,可以通过继承事件适配器,而不是实现监听器接口。因为事件适配器已经为监听器接口的每个方法提供了空实现,所以程序自己的监听器无需实现监听器接口里的每个方法,只需要重写自己感兴趣的方法,从而可以简化实现监听器的实现类代码

2016-09-21 08:41:49 684

原创 事件处理:

事件处理: (1)为了给图形界面能够接受用户的操作,必须给各个组件加上事件处理机制,在事件处理过程中,主要涉及三类对象: Event Source(事件源) 事件发生的场所,通常就是各个组件,如按钮,窗口等 Event(事件)事件封装了GUI上特定的事情(通常就是一次用户操作),如果程序需要获得GUI上所发生事件的相关信息,都可以根据Event对象来获得 EventListener(事件

2016-09-21 08:39:06 439

原创 对话框(Dialog):

对话框(Dialog): (1)Dialog是Window类的子类,是一个容器类,属于特殊组件。对话框是可以独立存在的顶级窗口,因此用法普通窗口用法几乎完全一样,但有两点需要注意: 对话框常常依赖其他窗口,就是通常有一个parent窗口 对话框有非模式(non-modal)和模式(modal)两种,当某个模式对话框被打开之后,该对话框总是位于它依赖的窗口之上;在模式对话框被关闭之前,它依赖的窗

2016-09-21 08:36:55 773

原创 Map集合,Queue集合

Queue集合:Queue用于模拟队列这种数据结构,队列通常 是“先进先出”的容器。队列的头部保存在队列中存放时间最长的元素,队列的尾部保存在队列中存放时间最短的元素。新元素插入(offer)到队列的尾部,访问元素(poll)操作会返回队列头部的元素。通常,队列不允许随机访问队列中的元素。 ——————————————————————————————————————————————————————

2016-09-20 18:21:18 480

原创 Set集合\HashSet类\TreeSet类\EnumSet类\List集合

Set集合: Set集合不允许包含相同的元素,如果试图将两个相同的元素加入同一个Set集合中,则天剑操作将失败,add()方法返回false。 Set集合有HashSet、TreeSet、 EnumSet三个实现类。 ——————————————————————HashSet类: HashSet是Set接口的典型实现。HashSet按Hash算法来存储集合中的元素,因此具有良好的存取和查找性

2016-09-20 18:17:19 443 2

原创 使用Java8新增的Predicate操作集合

使用Java8新增的Predicate操作集合: java8为Collection集合新增了一个removeIf(Predicate filter) 方法,该方法将会批量删除符合filter条件的所有元素。import java.util.Collection;import java.util.HashSet;import javax.sql.rowset.Predicate;public c

2016-09-20 18:13:39 4089

原创 使用Java8增强的Iterator遍历集合元素

使用Java8增强的Iterator遍历集合元素 Iterator也是Java集合框架的成员,但与Collection Map不一样:Collection 、Map主要用于盛装其他对象而Iterator则主要用于遍历(即迭代访问)Collection中的元素,Iterator 也被称为迭代器。 Iterator接口里定义了如下四个方法: boolean hasNext() 如果

2016-09-20 18:12:42 3199

原创 使用Lambda表达式遍历集合:

使用Lambda表达式遍历集合: java8为Iterable接口新增了一个forEach(Comsumer action ) 默认方法,该方法需要的参数是一个函数式接口,而Iterable接口是Collection接口的父接口,因此Collection集合也可以直接调用该方法。程序示例:import java.util.Collection;import java.util.HashSet

2016-09-20 18:11:58 2664

原创 Java集合类

Java集合类是一种特别有用的工具类,可用于存储数量不等的对象,并且可以实现常用的数据结构,如栈、队列等。java集合还可以用于保存具有映射关系的数组。 java集合大致可分为Set List Queue Map 四种体系,其中Set代表无序,不可重复的集合;List代表有序、重复的集合,Map代表具有映射关系的集合,java5 又增加了Queue体系集合,代表一种队列集合

2016-09-20 18:10:36 241

原创 java正则表达式:

正则表达式是一个强大的字符串处理工具,可以对字符串进行查找、提取、分割、替换等操作。 String类里也提供了如下几个特殊的方法: (1)boolean matches(String regex) 判断该字符串是否匹配指定的正则表达式。 (2)String replaceAll(String regex,String replacement) 将该字符串中所有匹配regex的

2016-09-20 18:08:55 252

原创 BigDecimal 类

BigDecimal 类: float double容易发生精度丢失问题。为了能够精确表示、计算浮点数,java提供了BigDecimal类,该类提供了大量的构造器用于创建BigDecimal对象,包括吧一个基本数值类型变量转换成一个BigDecimal对象,也包括利用数字字符串、数字字符数组来创建。 (1)不推荐使用BigDecimal(double val) 构造器,因为该构造器具有一定

2016-09-20 18:02:43 236

《数学之美》

,数学是解决信息检索和自然语言处理的最好工具。它能非常清晰地描述这些领域的实际问题并且给出漂亮的解决办 法。每当人们应用数学工具解决一个语言问题时,总会感叹数学之美。

2015-11-05

四川大学2013年Java试卷

2013年四川大学Java期末考试试卷,可用于学生期末考试重要的复习参考资料

2015-06-19

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除