Java
一袖云
这个作者很懒,什么都没留下…
展开
-
Java对象的序列化和反序列化
1.基本概念 把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 2) 在网络上传送对象的字节序列。2.JDK类库中序列化APIjava.io.ObjectOutputStream代表对象输出流,它的writeObject...原创 2018-08-11 21:09:24 · 92 阅读 · 0 评论 -
利用队列同步器AbstractQueuedSynchronizer构建TwinsLock
TwinsLock在同一时刻最多支持两个线程访问,超过两个线程的访问将被阻塞,这是共享式的访问package twinslock;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.AbstractQueuedSynchronizer;import java.util.concurrent.lock...原创 2018-08-26 15:23:11 · 233 阅读 · 0 评论 -
利用队列同步器构建ReentrantLock
ReentrantLock即重入锁,支持一个线程对资源重复加锁。除此之外,该锁还支持获取锁时公平性和非公平性选择。 前面我的博客中实现的Mutex不支持重入。Synchronized关键字隐式支持重进入。 对于ReentrantLock,已经获取到锁的线程再次调用lock方法获取锁不被阻塞。 公平地获取锁就是等待时间最长地线程优先获取锁,锁的获取是顺序的。 下面是公平获取锁和非公平获取锁的...原创 2018-08-26 17:25:55 · 156 阅读 · 0 评论 -
Java 静态内部类
在Java世界里,经常被提到静态这个概念,static作为静态成员变量和成员函数的修饰符,意味着它为该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见。最近一个项目里频繁用到static修饰的内部类,再读了一下《Effective Java》才明白为什么会用static来修饰一个内部类也就是本文的中心——静态类。如果一个类要被声明为static的...转载 2018-08-23 19:32:50 · 131 阅读 · 0 评论 -
构建数据库连接池
1.下面我们就使用等待超时模式构造简单数据库连接池,模拟从连接池中获取,使用和释放连接的过程,而客户端获取连接的过程被设定为等待超时模式,在1000 ms内无法获取到可用连接将会返回给客户端一个null,设定连接池大小为10,然后通过调节客户端线程数来模拟无法获取连接的场景。 2.连接池的定义: 通过构造函数初始化最大的连接上限,通过双向队列来维护连接,调用方先调用fetchConnectio...原创 2018-08-23 23:56:03 · 166 阅读 · 0 评论 -
Parlindrome-Partitioning
class Solution {public: vector<vector<string>> partition(string s) { vector<vector<string>> res; vector<string> cur;原创 2018-08-21 21:32:39 · 212 阅读 · 0 评论 -
利用队列同步器构建独占锁
队列同步器是构建锁和其他同步组件的基础框架,他使用一个int型成员变量表示同步状态,通过内置FIFO队列来完成资源获取线程的排队工作。 同步器AbstractQueuedSynchonizer是一个抽象类,他的使用方式是继承,子类通过继承同步器并实现他的抽象方法来管理同步状态。 同步器中可以被重写的方法有: (1)protected boolean tryAcquire(int arg)//...原创 2018-08-26 00:39:17 · 124 阅读 · 0 评论