![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
cag_are_god
哈哈哈
展开
-
《java并发编程实战》FutureTask详解
FutureTask详解1 基本概念1.1 Callable与FutureRunnable封装一个异步运行的任务,可以把它想象成为一个没有参数和返回值的异步方法。Callable与Runnable类似,但是有返回值。Callable接口是一个参数化的类型,只有一个方法call。public interface Callable { V call()转载 2017-03-30 17:21:08 · 796 阅读 · 0 评论 -
Java asList方法使用
import java.util.Arrays; import java.util.List; /** * * 本类演示了Arrays类中的asList方法 * 通过四个段落来演示,体现出了该方法的相关特性. * * (1) 该方法对于基本数据类型的数组支持并不好,当数组是基本数据类型时不建议使用 * (2) 当使用asList()方法时,数组就和列表链接转载 2016-05-09 17:00:50 · 703 阅读 · 0 评论 -
Java 文件字节字符数据转换
package io;//: io/BufferToText.java//Converting text to and from ByteBuffersimport java.nio.*;import java.nio.channels.*;import java.nio.charset.*;import java.io.*;/* * 转换数据: * 缓冲器容纳的是普通的字节,为原创 2016-05-09 16:44:09 · 651 阅读 · 0 评论 -
Java 新I/O 通道和缓冲器
package io;import java.nio.*;import java.nio.channels.*;import java.io.*;/* * 三种类型的流用以产生可写的,可读的,可读可写的通道。 * getChannel()将会产生一个FileChannel通道,可以向他传送用于读写的ByteBuffer,并且可以锁定文件的某些区域用于独占式访问。 * 将字节放于Byt原创 2016-05-09 16:12:11 · 656 阅读 · 0 评论 -
Java 标准I/O重定向
package io;import java.io.*;/*标准I/O重定向 * 下面程序将标准输入附接到文件上,并将标准输出和标准错误重定向到另一个文件。 * 程序开头存储了对最初的System.out对象的引用,并且在结尾将系统输出恢复到该对象上*/public class Redirecting { public static void main(String[] arg原创 2016-05-09 15:18:49 · 277 阅读 · 0 评论 -
基本的文件输出
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;import java.io.StringReader;import static net.mindview翻译 2016-05-09 11:09:04 · 240 阅读 · 0 评论 -
Java 文本文件读写工具类
下面的TextFile类包含static 方法可以像简单字符串那样读写文本文件,并且可以创建一个TextFile对象,它用一个ArrayList来保存文件的若干行。package io;import java.io.*;import java.util.ArrayList;import java.util.Arrays;import java.util.TreeSet;import原创 2016-05-09 10:30:08 · 3394 阅读 · 0 评论 -
java 多线程异常捕获
package concurrency;import static net.mindview.util.Print.*;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.ThreadFactory;/* * 捕获线程翻译 2016-05-19 11:04:27 · 335 阅读 · 0 评论 -
java 并发多线程的声明
package concurrency;import static net.mindview.util.Print.*;import java.util.concurrent.TimeUnit;/* * InnerThread1 创建了一个扩展自Thread的匿名内部类,并且在构造器中创建了这个内部类的实例 * * InnerThread2在构造器中创建了一个匿名Thread子类,并翻译 2016-05-19 09:45:58 · 313 阅读 · 0 评论 -
JDBC连接数据库(1)
/* * Driver 是一个接口:数据库厂商必须提供实现的接口。能从其中获取数据库连接。 * 可以通过Driver的实现类对象获取数据库连接。 * 加入MySQL驱动程序。 * 在当前目录下新建lib目录。 * build path --》add to BuildPath*/ public void testDr原创 2016-06-05 12:42:05 · 382 阅读 · 0 评论 -
JDBC连接数据库之批量处理(4)
批量处理JDBC语句提高处理速度1.当需要成批插入或者更新记录时。可以采用Java的批量更新的机制,这一机制允许多条语句一次性提交给数据库批量处理。通常情况下比单独提交处理更有效率JDBC的批量处理语句有包括下面两个方法:——addBatch(String):添加需要批量处理的SQL语句或是参数;——executeBatch();执行批量处理语句;2通常我们会遇到两种批量执行的原创 2016-06-05 14:19:36 · 446 阅读 · 0 评论 -
《java并发编程实战》第六章 Executor和ExecutorService总结
接口 Java.util.concurrent.ExecutorService 表述了异步执行的机制,并且可以让任务在后台执行。壹個 ExecutorService 实例因此特别像壹個线程池。事实上,在 java.util.concurrent 包中的 ExecutorService 的实现就是壹個线程池的实现。ExecutorService 样例这里有壹個简单的使用Java 实现翻译 2017-03-29 17:09:46 · 355 阅读 · 0 评论 -
《java并发编程实战》第五章闭锁和栅栏
先说两点都知道的: 1.CountDownLatch减计数,CyclicBarrier加计数。 2.CountDownLatch是一次性的,CyclicBarrier可以重用。 闭锁是一种同步工具类,可以延迟线程的进度直到其到达终止状态,当闭锁到达结束状态后,将不会再改变状态。闭锁可以用来确保某些活动直到其他活动都完成后才继续执行。 countDown方法递减计翻译 2017-03-29 09:28:42 · 241 阅读 · 0 评论 -
JDBC连接数据库之编写通用的Dao(7)
Dao.java:package com.atguigu.common;import java.sql.Connection;import java.sql.SQLException;import java.util.List;/** * 访问数据的 DAO 接口. * 里边定义好访问数据表的各种方法 * @param T: DAO 处理的实体类的类型. */publ原创 2016-06-05 16:02:45 · 703 阅读 · 0 评论 -
JDBC连接数据库之DBUtils简单使用(6)
Apache——DBUtils简介commons-dbutils是Apache组织提供的一个开源JDBC工具类库,它是对JDBC的简单封装。API介绍:——org.apache.commons.dbutils.QueryRunner——org.apache.commons.dbutils.ResultSetHandler——工具类 org.apache.comm原创 2016-06-05 15:53:24 · 426 阅读 · 0 评论 -
JDBC连接数据库之连接池(5)
传统的模式是:-在主程序中(servlet,beans中)建立数据库连接-进行sql操作,-断开数据库连接这种模式开发存在的问题:-普通的JDBC数据库使用DriverManager来获取,每次向数据库建立连接的时候都要将Connection加载到内存中在验证用户名和密码(得花费0.05s~1s的时间)。需要数据库连接的时候,就像数据库要求一个,执行完成后在断开连接。这样的原创 2016-06-05 15:31:46 · 968 阅读 · 0 评论 -
从查询出来的结果集获取Blob数据(以图片为例)
从数据库中读出文件类型为Blob文件:Connection conn=null;PrepatedStatement pstmt=null;ResultSet resultSet=null;try{connection=JDBCTools.getConnection();String sql="Select id,name customerName,email,birth f原创 2016-06-05 13:59:22 · 5269 阅读 · 1 评论 -
JDBC连接数据库反射实现O/R映射(2)
测试preparedStatement public void testPreparedStatement(){ Connection connection=null; PreparedStatement preparedStatement=null; try{ connection =JDBCTools.getConnection();原创 2016-06-05 13:14:39 · 1967 阅读 · 0 评论 -
JDBC连接数据库之从结果集中获取对象(3)
测试利用反射返回List对象的数据。 public List getForList(Class clazz, String sql, Object... args) { List list = new ArrayList(); Connection connection = null; PreparedStatement preparedStatement = nul原创 2016-06-05 13:43:39 · 1228 阅读 · 0 评论 -
Java的动态代理
代理是基本的设计模式之一,设计模式的关键就是封装修改,Java的动态代理可以动态的创建代理,并动态的处理对所代理方法的调用。package lu.typeinfo;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Prox原创 2016-04-21 20:30:22 · 320 阅读 · 0 评论 -
Java 数组
一.数组的基本概念数组可以看成是多个相同类型数据组合,对这些数据的统一管理。数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组的元素可以是任何数据类型,包括基本类型和引用类型。C和C++中的数组都可以分配在栈上面,而JAVA中的数组是只能分配在堆上面的,因为JAVA中的数组是引用类型。二.一维数组一维数组的声明方式有2种:格式一:转载 2016-05-04 10:51:42 · 289 阅读 · 0 评论 -
Java 枚举类型
package enumered.menu;/* * 在一个接口的内部,创建实现该接口的枚举,以此将元素进行分组,可以达到将枚举元素分类组织的目的。*/public interface Food { enum Appetizer implements Food { SALAD, SOUP, SPRING_ROLLS; } enum MainCourse implemen原创 2016-05-13 19:01:46 · 253 阅读 · 0 评论 -
匿名内部类浅谈
在很多时候,我们需要在类的内部初始化一个静态的Map或者List,然后保存一下常量值提供给类内部方法使用。 我们通常的做法是: 首先初始化一个Map的静态变量。 然后在静态块添加常量值: private final static Map CONSTANT = new HashMap(); static { CONSTANT.put("1",转载 2016-04-13 10:36:53 · 399 阅读 · 0 评论 -
为什么匿名内部类参数必须为final类型
首先,这关系到java对象中的生命周期的问题。基础数据类型和引用变量(不是被引用的对象)做局部变量时(这里是和做为变量成员变量区别,它们作为成员变量后就作为对象的一部分和对象的生命周期相同了);它们的生命中周期是有作用域的,它没有受生命周期影响这一说,但是同样在这一作用域创建的对象的生命周期并不受作用域的限制。局部变量的生命周期与局部内部类的对象的生命周期的不一致。转载 2016-04-13 09:42:44 · 343 阅读 · 0 评论 -
内部类的访问权限
当生成一个内部类对象时,此对象与制造它的外围对象之间就有了一种联系,所以他能访问其外围对象的所有成员,而不需要任何特殊条件。内部类还拥有其外围类的所有元素的访问权。package lu.innerclasses;import static lu.utils.Print.*;import java.util.Random;/* * Sequence是一个固定大小的Ob翻译 2016-04-12 18:58:08 · 874 阅读 · 0 评论 -
java继承多态方法调用测试
package lu.test;/* * a1.show(b):调用的是A中show(A) * a1.show(c)调用的是A中show(A) * a1.show(d)调用的是show(D) 正常调用本类方法。 * a2.show(b)调用A.show(A) 方法show(B)并未被重写故调用的是父类的方法。转载 2016-04-08 16:17:52 · 633 阅读 · 0 评论 -
java 多态性理解
Java中多态性的实现什么是多态面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引翻译 2016-04-08 15:29:35 · 296 阅读 · 0 评论 -
Java工厂设计模式
package lu.interfaces;import static lu.utils.Print.*;/*工厂方法设计模式 * 在工厂对象上调用的是创建方法,而该工厂对象将生成接口的某个实现的对象。 * 通过这种方式,我们的代码将完全与接口的实现分离,这就使得我们可以透明地将某个实现替换为另一个实现。*/interface Service{void method1();翻译 2016-04-12 15:10:53 · 654 阅读 · 0 评论 -
Java接口嵌套
package lu.nesting;import static lu.utils.Print.*;import lu.nesting.A.DImp2;/* * 接口可以被实现为private,(相同的语法既适用于嵌套接口也适用于嵌套类) * 好处:A.DImp2只能被其自身使用。你无法说他实现了一个private接口D,实现private接口只是一种方式, * 他可以强制翻译 2016-04-12 13:56:41 · 816 阅读 · 0 评论 -
继承初始化顺序
package testThis;/* * 在TestInitialization上运行Java时,所发生的第一件事就是试图访问其main()方法, * 于是加载器开始启动并找出起类的编译代码(在.class文件中)。在加载过程中,编译器注意到含有基类(由extends得知), * 于是继续进行加载。注意管是否打算产生基类对象,这都要发生。如果还有基类则依次类推。 * 导出类的翻译 2016-04-07 18:44:31 · 359 阅读 · 0 评论 -
通配符(1)
package lu.generics;import static lu.utils.Print.*;//创建一个Apple数组,并将其赋值给一个Fruit引用。这是有意义的,因为Apple数组也应该是一个Fruit数组。//但是如果实际数组类型是Apple[],你因该只能在其中放置Apple或Apple的子类型,这是在编译器和运行时都可以工作。class Fruit{}翻译 2016-04-27 10:17:19 · 501 阅读 · 0 评论 -
通配符(2)
class Fruit{}class Apple extends Fruit{}/* * 不能把一个涉及Apple容器的泛型付给一个涉及Fruit的 泛型 * Apple的List将持有任何类型的Fruit,Apple的 List在类型上不等价于Fruit的List * 即区分容器的类型和容器持有的类型。*/public class NonCorvariantGeneric翻译 2016-04-27 10:28:56 · 412 阅读 · 0 评论 -
java 对缺乏潜在类型机制的补偿 :反射
package lu.generics;import static lu.utils.Print.*;import java.lang.reflect.Method;/* * 通过反射,CommunicateReflectively.perform()能够动态地确定所需要的方法是否可用并调用他们。 * 他甚至能够处理Mime只有一个必须的方法这一事实,并能够部分实现其目标。翻译 2016-05-02 14:36:48 · 698 阅读 · 0 评论 -
java 对象序列化
/*对象序列化: * 将那些实现了Serializable接口的对象转换成一个字节序列,并能够将这个字节完全恢复为原来的对象。*/class Data implements Serializable{ private int n; public Data(int n){this.n=n;} public String toString(){return Integer.toString(翻译 2016-05-12 09:17:24 · 229 阅读 · 0 评论 -
java 内存映射文件
package io;//Creating a very large file using mapping.//{RunByHand}import java.nio.*;import java.nio.channels.*;import java.io.*;import static net.mindview.util.Print.*;/*内存映射文件允许修改那些因为太大而不能放入内翻译 2016-05-10 14:22:40 · 923 阅读 · 0 评论 -
Java Buffer类详解
Buffer 类是 java.nio 的构造基础。一个 Buffer 对象是固定数量的数据的容器,其作用是一个存储器,或者分段运输区,在这里,数据可被存储并在之后用于检索。缓冲区可以被写满或释放。对于每个非布尔原始数据类型都有一个缓冲区类,即 Buffer 的子类有:ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuf转载 2016-05-10 14:07:07 · 15196 阅读 · 0 评论 -
构造器内部的多态方法行为
package com.lu.test;import static lu.utils.Print.*;/* * 在任何构造器内部,整个对象可能只是部分形成——我们只知道基类对象已经进行初始化。 * 如果构造器只是在构建对象过程中的一个步骤,并且该对象所属的类是从这个构造器所属 * 的类导出的,那么导出部分在当前构造器正在被调用的时刻仍旧是没有被初始化的。然而, * 一个动态翻译 2016-04-11 10:46:04 · 620 阅读 · 0 评论 -
局部内部类之内部类和匿名内部类比较
package lu.innerclasses;import static lu.utils.Print.*;/* * 局部内部类不能有访问说明符,因为他不是外围类的与部分;但是他可以访问当前代码块的常量,以及此外围类的所有成员。 * 局部内部类的名字在方法外是不可见的,那为什么任然使用局部内部类而不使用匿名内部类呢? * 唯一的理由是,我们需要一个已命名的构造器,或者需要重载翻译 2016-04-14 14:49:59 · 343 阅读 · 0 评论 -
内部类可以被覆盖吗
package lu.innerclasses;import static lu.utils.Print.*;/* * 默认的构造器是编译自动生成的,这里调用基类的默认构造器。 * 当继承了某个外围类的时候,内部类并没有发生什么神奇变化。这两个内部类是完全独立的两个实体。*/class Egg{private Yolk y;protected class Yolk{翻译 2016-04-14 11:00:18 · 363 阅读 · 0 评论 -
java继承时初始化的执行顺序
(一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用比如main方法就必须是静态的 这是程序入口两者的区别就是:静态代码块是自动执转载 2016-04-06 21:17:02 · 445 阅读 · 0 评论