文件系统能够包含3种类型的对象:文件、目录和符号连接。
一个文件或路径是一个java.io.File来表示的,java7以后有了java.nio.file.Path接口。html
文件操做:java
文本文件 (readAllLines,write)git
Files类中的read和write方法只是适用于比较小的文件。比较大的文件,须要使用流来代替。算法
seekableByteChannerl须要使用byteBuffer类。api
ByteBuffer提供了两个put方法来写一个字节
还提供了putXXX,getXXX方法来读写缓存缓存
把字节序列恢复为对象的过程称为对象的反序列化。安全
只有实现了Serializable和Externalizable接口的类的对象才能被序列化。Externalizable接口继承自 Serializable接口,实现Externalizable接口的类彻底由自身来控制序列化的行为,而仅实现Serializable接口的类能够 采用默认的序列化方式 。服务器
在网络上传送对象的字节序列。网络
当两个进程在进行远程通讯时,彼此能够发送各类类型的数据。不管是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方须要把这个Java对象转换为字节序列,才能在网络上传送;接收方则须要把字节序列再恢复为Java对象。session
首先来区分一下线程与并发:
Thread状态
Java中线程的建立常见有如三种基本形式:
1.继承Thread类,重写该类的run()方法。
2.实现Runnable接口,并重写该接口的run()方法,该run()方法一样是线程执行体,建立Runnable实现类的实例,并以此实例做为Thread类的target来建立Thread对象,该Thread对象才是真正的线程对象。
3.使用Callable和Future接口建立线程。具体是建立Callable接口的实现类,并实现clall()方法。并使用FutureTask类来包装Callable实现类的对象,且以此FutureTask对象做为Thread对象的target来建立线程。
同步
synchronized的用法
public class Thread1 implements Runnable { Object lock; public void run() { synchronized(lock){ do something } } }
public class Thread1 implements Runnable { public synchronized void run() { ..do something } }
并发
Callable
一个Callable是一个任务,它返回一个值,也可能抛出一个异常。
future模式:并发模式的一种,能够有两种形式,即无阻塞和阻塞,分别是isDone和get。其中Future对象用来存放该线程的返回值以及状态
ExecutorService e = Executors.newFixedThreadPool(3); //submit方法有多重参数版本,及支持callable也可以支持runnable接口类型. Future future = e.submit(new myCallable()); future.isDone() //return true,false 无阻塞 future.get() // return 返回值,阻塞直到该线程运行结束
高级多线程控制类
lock: 在java.util.concurrent包内。共有三个实现:
ReentrantLockReentrantLock 可重入的意义在于持有锁的线程能够继续持有,而且要释放对等的次数后才真正释放该锁。
4.容器类
- BlockingQueue阻塞队列。该类是java.util.concurrent包下的重要类,经过对Queue的学习能够得知,这个queue是单向队列,能够在队列头添加元素和在队尾删除或取出元素。相似于一个管道,特别适用于先进先出策略的一些应用场景。普通的queue接口主要实现有PriorityQueue(优先队列).
- ConcurrentHashMap高效的线程安全哈希map。请对比hashTable , concurrentHashMap, HashMap。
URL 解析:
import java.net.*; import java.io.*; public class URLDemo { public static void main(String [] args) { try { URL url = new URL("http://www.runoob.com/index.html?language=cn#j2se"); System.out.println("URL 为:" + url.toString()); System.out.println("协议为:" + url.getProtocol()); System.out.println("验证信息:" + url.getAuthority()); System.out.println("文件名及请求参数:" + url.getFile()); System.out.println("主机名:" + url.getHost()); System.out.println("路径:" + url.getPath()); System.out.println("端口:" + url.getPort()); System.out.println("默认端口:" + url.getDefaultPort()); System.out.println("请求参数:" + url.getQuery()); System.out.println("定位位置:" + url.getRef()); }catch(IOException e) { e.printStackTrace(); } } }
编译运行结果以下:
URL 为:http://www.runoob.com/index.html?language=cn#j2se
协议为:http
验证信息:www.runoob.com
文件名及请求参数:/index.html?language=cn
主机名:www.runoob.com
路径:/index.html
端口:-1
默认端口:80
请求参数:language=cn
定位位置:j2se
URLConnection 方法列表以下:
public URL getURL() 返回 URLConnection 对象链接的URL
客户端请求与服务器进行链接的时候,根据服务器的域名或者IP地址,加上端口号,打开一个套接字。当服务器接受链接后,服务器和客户端之间的通讯就像输入输出流同样进行操做。
解决方案:lock更灵活,能够自由定义多把锁的枷锁解锁顺序(synchronized要按照先加的后解顺序)
提供多种加锁方案,lock 阻塞式, trylock 无阻塞式, lockInterruptily 可打断式,还有trylock的带超时时间版本。和Condition类的结合性能更高。
问题1解决方案:私钥不保存在本地。
https://gitee.com/shamBryce/JAVA
Which of the following objects could contain the information “eastern standard time”?
(Choose all that apply.)
A .Instant
B .LocalDate
C .LocalDateTime
D .LocalTime
E .ZonedDateTime
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 150/200 | 2/2 | 20/20 | |
第二周 | 200/400 | 1/3 | 20/40 | |
第三周 | 100/500 | 1/4 | 10/50 | |
第四周 | 200/700 | 1/5 | 15/65 | |
第五周 | 1400/2100 | 1/5 | 20/85 |
计划学习时间:15小时
实际学习时间:20小时