自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 JAVA高级基础(70)---并发编程Executor简介及线程池的创建方式

并发编程--Executor我们在传统多线程编程创建线程时常常是创建一些 Runnable 对象,然后创建对应的Thread对象执行它们,但是如果程序需要并发执行大量的任务时,需要为每个任务都创建一个Thread,进行管理,这将会影响程序的执行效率,并且创建线程过多将会使系统负载过重。在Java 5 之后,并发编程引入看一堆新的启动、调度和管理线程的API。Executor框架便是Java...

2018-12-26 16:10:36 228

原创 JAVA高级基础(69)---多线程环境安全使用集合框架API

在当前 jdk 下,即使我们要求集合要保证线程安全,我们也不会在去使用 vector 和 HahsTableCollectionssynchronizedList(List<T> list) synchronizedMap(Map<K,V> m) synchronizedSet(Set<T> s)package org.lanqiao.syn.d...

2018-12-26 15:29:41 147

原创 JAVA高级基础(68)---定时任务

定时任务Timer -> TimerTask注:详细方法请查询APIschedule(TimerTask task,Date firstDate,long period)    执行任务  从什么时间开始执行    每次执行的间隔毫秒数package org.lanqiao.timer.demo;import java.text.ParseException...

2018-12-26 15:21:08 133

原创 JAVA高级基础(67)---线程同步

线程同步两种方式:使用 同步代码块、同步方法    什么情况下需要同步?当多线程并发, 有多段代码同时执行时, 我们希望某一段代码执行的过程中CPU不要切换到其他线程工作. 这时就需要同步.如果两段代码是同步的, 那么同一时间只能执行一段, 在一段代码没执行结束之前, 不会执行另外一段代码.   多线程安全问题的原因(也是我们以后判断一个程序是否有线程安全问题的依据)A:是...

2018-12-26 15:09:24 104

原创 JAVA高级基础(66)---线程的生命周期

线程的生命周期线程从创建到运行再到死亡的整个过程。在线程整个生命周期中,线程总共分为了五中状态:新建:线程对象创建 就绪:通过线程的start方法启动线程,线程就处于就绪状态,等待线程调度,获取CPU的执行权。 运行:线程获得CPU的执行权,处于运行中。 阻塞:线程在执行期间,因为某种原因(休眠,礼让,时间到达),暂时失去CPU 的执行权,等待再次获得CPU的执行权。 死亡:当...

2018-12-16 10:37:08 213

原创 JAVA高级基础(65)---线程控制方法及获取系统当前线程

线程名称设置名称:Thread(Runnable target,String name)                 getName();返回线程名称                 getId();获取线程的ID                 setName(String name);设置线程名称在创建线程时,系统会默认为每个线程分配一个名称:Thread-0  Thread...

2018-12-16 10:09:51 635

原创 JAVA高级基础(64)---使用匿名内部类实现多线程

package org.lanqiao.thread.demo;/* * 通过匿名内部类来显示多线程 */public class ThreadDemo { public static void main(String[] args) { new Thread() { @Override public void run() { for(int i ...

2018-12-16 09:56:01 128

原创 JAVA高级基础(63)---创建新的线程

Java程序的运行原理当使用Java命令启动一个程序的时候,JVM启动。就启动了一个进程。 main方法会执行。main方法的运行就是该进程中的一个线程(主线程)。也会启动GC,GC是后台线程(守护线程)。package org.lanqiao.thread.demo;public class ThreadDemo { public static void main(String[...

2018-12-15 11:30:40 214

原创 JAVA高级基础(62)---多线程的介绍

多线程进程:运行中的一个程序,在计算机中的一个运行路径。一个程序只能有一个进程线程:是进程的一个组成单元。在一个进程中至少有一个或一个以上的线程存在Java是最先支持多线程开发的语言之一,Java从一开始就支持了多线程能力,因此Java开发者能常遇到上面描述的问题场景。进程和线程的区别是否占有资源问题 一个进程的创建/撤销所需要的开销远远大于一个线程所需要的开销 进...

2018-12-15 11:22:22 139

原创 JAVA高级基础(61)---代理模式

代理模式静态代理代理的实现完全由程序员自己来实现 改实现只能针对特定的对象来实现代理(就是对被代理对象起到一个增强的作用。)实现步骤定义主业务的接口 实现接口 通过代理来增强主业务方法package org.lanqiao.proxy.demo;//被代理对象public class Customer implements SallTicket { @Overrid...

2018-12-14 11:37:22 127

原创 JAVA高级基础(60)---动态操作数组

使用反射来操作数组   创建数组 判断是否是数组 获取数组的长度 获取数组的类型    Array是动态创建数组和操作数组的一个类package org.lanqiao.reflectarray.demo;import java.lang.reflect.Array;public class ReflectArray { public static void main(...

2018-12-14 10:53:01 133

原创 JAVA高级基础(59)---工厂设计模式

工厂设计模式1.简单工厂构成抽象产品类:定义产品的标准和规范 具体产品类:具体实现产品的标准和规范 简单工厂类:根据需求,创建产品对象优点将产品对象的创建,不在由我们自己来new 而是由工厂来进行创建缺点是工厂和产品之间产生了高度的耦合,工厂的设计不符合类设计的开闭原则:类的扩展性不强package org.lanqiao.simplefactory.demo;...

2018-12-13 11:14:46 160

原创 JAVA高级基础(58)---简单工厂模式

工厂模式简单工厂模式 工厂方法模式 抽象工厂模式简单工厂模式简单工厂模式又称为静态工厂方法模式。从命名上就可以看出这个模式一定很简单。就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。工厂角色:这是本模式的核心,含有一定的业务逻辑和判断逻辑。在jav...

2018-12-13 10:42:05 163

原创 JAVA高级基础(57)---反射+properties

反射在实际开发中的应用properties:属性文件               文件中的内容:以键值对的形式存在                键和值都是以字符串的形式存在clas.properties:username = rootpassword=rootclassName = org.lanqiao.reflect.demo.Studentpackage org...

2018-12-13 10:28:16 267

原创 JAVA高级基础(56)---获取类的私有属性和父类及实现的接口

获取类的信息    获取构造方法     获取public属性     获取public 方法     获取该类的私有的属性和方法:getDeclaredField()/getDeclaredMethod()     获取该类的父类       获取该类实现的接口package org.lanqiao.reflect.demo;import java.io.Serializa...

2018-12-13 10:20:08 367

原创 JAVA高级基础(55)---通过Class对象获取类的构造方法并创建对象及获取普通方法并执行方法

获取类的信息             从访问权限来分                                       private                                       public                    信息的本质                                       属性           ...

2018-12-12 17:21:19 1537

原创 JAVA高级基础(54)---获取类的Class对象及类加载器

类的加载类的加载通过类加载器将一个类加载到内存中并且为每一个类生成一个Class对象类加载器负责将class文件加载到内存中,并为之生成对应的class对象。Class类Class 是final的、无公共的构造方法,由jvm和类加载来进行构造其对象。获取Class对象的方式    每个类只有一个唯一的Class对象通过Class类的静态方法:forName(...

2018-12-12 17:14:37 1363

原创 JAVA高级基础(53)---反射概述

什么是Java的反射?大家都知道,要让Java程序能够运行,那么就得让Java‘类要被Java虚拟机加载。Java类如果不被Java虚拟机加载,是不能正常运行的。现在我们运行的所有的程序都是在编译期的时候就已经知道了你所需要的那个类,并且已经被加载了。Java反射机制是在编译并不确定是哪个类被加载了,而是在程序运行的时候才加载、探知、自审。使用在编译期不知道的类。这样的特点就是反射。J...

2018-12-12 17:00:29 160

原创 JAVA高级基础(52)---非阻塞式的IO通信

非阻塞式客户端获取通道 切换非阻塞模式 分配指定大小的缓冲区 发送数据给服务端 关闭通道 服务端获取通道 切换非阻塞模式 绑定连接 获取选择器 将通道注册到选择器上, 并且指定“监听接收事件” 轮询式的获取选择器上已经“准备就绪”的事件 获取当前选择器中所有注册的“选择键(已就绪的监听事件)” 获取准备“就绪”的是事件 判断具体是什么事件准备就绪 若“接收就...

2018-12-11 15:56:05 213

原创 JAVA高级基础(51)---有反馈的阻塞式的IO网络通信

package org.lanqiao.blocking2.demo;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;import java.nio.channels.SocketCh...

2018-12-11 15:52:55 103

原创 JAVA高级基础(50)---阻塞式的IO网络通信

网络通信的三要素IP地址:可以唯一的定位到一台计算机 端口号:可以唯一的定位到一个程序 通信协议:TCP/IP  UDP阻塞式客户端获取通道 分配指定大小的缓冲区 读取本地文件,并发送到服务端 关闭通道服务端获取通道 绑定连接 获取客户端连接的通道 分配指定大小的缓冲区 接收客户端的数据,并保存到本地  关闭通道package org.lanqiao...

2018-12-11 15:48:18 107

原创 JAVA高级基础(49)---分散读取和聚集写入

分散读取和聚集写入read(ByteBuffer[] bufs);   //分散读取 write(ByteBuffer[] bufs);   //聚集写入分散读取(Scattering Reads)是指从Channle中读取的数据“分散”到多个Buffer中注意:按照缓冲区的顺序,从Channle中读取的数据依次将Buffer填满聚集写入(Gathering Writes)是指将多...

2018-12-11 15:34:39 315

原创 JAVA高级基础(48)---使用通道完成文件数据传输

通道(Channel):传输数据由 java.nio.channels 包定义的。Channel表示IO源与目标打开的链接。Channel类似于传统的“流”。只不过Channel本身不能直接访问数据,Channel只能与 Buffer 进行交互 IO 改进示意图 DMA(直接存储器访问)Java 为 Channel 接口提供的最主要实现类如下:FileChannel...

2018-12-11 15:27:38 363

原创 JAVA高级基础(47)---直接缓冲区和非直接缓冲区

直接和非直接缓冲区字节缓冲区要么是直接的,要么是非直接的。如果为直接字节缓冲区,则Java虚拟机会尽最大努力直接在此缓冲区上执行本机I/O操作。也就是说,在每次调用基础操作系统的一个本机I/O操作之前(或之后),虚拟机都会尽量避免将缓冲区的内容复制到中间缓冲区中(或从中间缓冲区中复制内容)直接字节缓冲区可以通过调用此类的 allocateDirect() 工厂方法来创建。此方法返回的缓冲区...

2018-12-11 10:31:35 181

原创 JAVA高级基础(46)---NIO之Buffer常用方法

常见实现ByteBuffer CharBuffer ShortBuffer IntBuffer LongBuffer FloatBuffer DoubleBuffer缓冲区的使用建立缓冲区,  分配容量    ByteBuffer  buf  = ByteBuffer.allocate(capacity); 装载数据:put();及其重载方法 改变缓冲区的读写模式:fli...

2018-12-11 10:04:03 143

原创 JAVA高级基础(45)---缓冲区操作

package org.lanqiao.buffer.demo;import java.nio.ByteBuffer;public class BufferDemo { public static void main(String[] args) { //开辟缓冲区 分配缓冲区 ByteBuffer buf = ByteBuffer.allocate(1024); /...

2018-12-10 15:25:35 256

原创 JAVA高级基础(44)---NIO简介及缓冲区介绍

NIOJava NIO(New IO)是从Java1.4版本开始引入的一个新的IO  API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO支持面向缓冲区的、基于通道的IO操作。 NIO将以更加高效的方式进行文件的读写操作。 NIO采取通道(Channel)和缓冲区(Buffer)来传输和保存数据,它是非阻塞式的I/O,...

2018-12-10 15:20:48 211 1

原创 JAVA高级基础(43)---数据流和打印流

数据流DataInputStream  /  DataOutputStream       数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中打印流PrintStream   为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式注:更多方法请查找APISystem.out.print();输出内容不换行 System.out.printl...

2018-12-10 14:49:53 187

原创 JAVA高级基础(42)---对象流

对象流   ObjectInputStream  /  ObjectOutputStream    要求读写的对象必须进行序列化ObjectInputStreamObjectOutputStream序列化的目的就为了对象的传输。保证传输对象的一致性。如何序列化只需要将需要序列化的类实现 Serializable 接口就可以了可以使用对...

2018-12-10 14:42:16 250

原创 JAVA高级基础(41)---RandomAccessFiled的应用

RandomAccessFile的应用断点下载 断点续传 复制一个大的文件package org.lanqiao.randomaccessfile.demo;import java.io.FileNotFoundException;import java.io.IOException;import java.io.RandomAccessFile;/* * 当下载中断的时候...

2018-12-10 14:23:37 112

原创 JAVA高级基础(40)---RandomAccessFile

RandomAccessFile随机访问文件。可以通过在创建对象的时候,指定模式:r 读模式  /  rw  写模式在其中存在指针,来定位对文件进行读写的位置getPointFile(); 获取指针位置 seek(long  pos )设置指针位置在读取文件的时候,我们要注意一问题:是否存在读取一个字符串的方式。在读的时候,要注意转换为字符串的时候的编码方式readLine(...

2018-12-10 14:19:48 134

原创 JAVA高级基础(39)---重定向流

重定向流标准输入输出流1) 标准I/O流就是指System.in、System.out、System.err这三个,分表表示标准输入流、标准输出来、标准错误流;            2) 三者默认的流节点分别是键盘、屏幕、屏幕,这也是我们频繁使用的三个I/O流;标准流重定向                                     i. static void ...

2018-12-08 16:42:56 123

原创 JAVA高级基础(38)---合并流

合并流                 SequencelnputStream  仅此一个。合并输入流,没有合并输出流package org.lanqiao.sequen.demo;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java....

2018-12-08 16:33:35 101

原创 JAVA高级基础(37)---字节数组流

字节数组流                         将字节数组转换为输入和输出流                                    ByteArrayInputStream        ByteArrayOutputStream   size(); 方法返回写入缓冲区中的字节的长度/大小     public void writeTo(Output...

2018-12-08 16:29:51 146

原创 JAVA高级基础(36)---管道流

处理流--->管道流PipedOutputStream 管道输出流、PipedInputStream 管道输入流(自带缓冲区),配合使用可以实现线程间通信使用管道实现线程间通信的主要流程如下:建立输出流 out 和输入流 in ,将 out 和 in 绑定,out 中写入的数据则会同步写入到 in 的缓冲区(实际情况是,out 中写入数据就是往 in 的缓冲区写数据,out 中没有数...

2018-12-08 10:59:24 206

原创 JAVA高级基础(35)---字符流的便捷类

FileReader  是   InputStreamReader   的便捷类   FileWriter    是   OutputStreamWriter   的便捷类其实说白了就是为了少写几个字母package org.lanqiao.filereader.demo;import java.io.File;import java.io.FileNotFoundExcepti...

2018-12-08 10:45:31 135

原创 JAVA高级基础(34)---装饰设计模式

装饰者设计模式(Decorator)类A:method();类B:继承类A  重写method();继承实现代码的扩展的弊端:增强了两个类的耦合度 受到了Java中单继承的限制。装饰者设计模式:在不改变原类的情况下,对类的功能进行扩展装饰设计模式的要求在装饰类中,必须包含被装饰对象 在扩展功能时,需要在装饰类的构造方法中对被装饰对象进行初始化 在扩展的方法中,需要通过...

2018-12-07 10:20:06 106

原创 JAVA高级基础(33)---字符缓冲流

字符缓冲流缓冲流:当我们在创建缓冲流的时候,会默认在系统内存中为当前流分配一定大小的缓冲区字符缓冲输入流特殊方法:String  readLine();每次读取一行  返回值:当前行的内容,不包括终止符(\r、\n、\r\n)字符缓冲输出流特殊方法:newLine();  输出一个行终止符  与操作系统无关  相关代码package org.lanqiao.bu...

2018-12-07 10:06:19 179

原创 JAVA高级基础(32)---字符流

字符流                              字符输入流:Reader          字符输出流:Writer   Writer(abstract)--->OutputStreamWriter--->FileWriterOutputStreamWriter (将字节转换为字符流的一个类)字符输出流需要进行flush字符流编码常用的...

2018-12-06 16:46:29 167

原创 JAVA高级基础(31)---字节缓冲流

 字节缓冲流BufferredInputStreambos.flush();//将缓冲区强制刷新bos.close();//在关闭输出流的时候,首先会执行 flush 将缓冲区的数据刷新清空,然后再关闭流。注意在使用缓冲输出流的时候,必须进行强制刷新或者closepackage org.lanqiao.buff.demo;import java.io.Buffered...

2018-12-06 16:37:47 388

空空如也

空空如也

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

TA关注的人

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