文件系统可以包含3种类型的对象:文件、目录和符号链接。
一个文件或路径是一个java.io.File来表示的,java7之后有了java.nio.file.Path接口。
文件操作:
文本文件 (readAllLines,write)
Files类中的read和write方法只是适用于比较小的文件。比较大的文件,需要使用流来代替。
seekableByteChannerl需要使用byteBuffer类。
ByteBuffer提供了两个put方法来写一个字节
还提供了putXXX,getXXX方法来读写缓存
把字节序列恢复为对象的过程称为对象的反序列化。
只有实现了Serializable和Externalizable接口的类的对象才能被序列化。Externalizable接口继承自 Serializable接口,实现Externalizable接口的类完全由自身来控制序列化的行为,而仅实现Serializable接口的类可以 采用默认的序列化方式 。
在网络上传送对象的字节序列。
当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。
首先来区分一下线程与并发:
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小时
原文:https://www.cnblogs.com/Shambryce/p/10633969.html