- 浏览: 699157 次
- 性别:
- 来自: 北京
-
最新评论
-
masuweng:
写的详细
Java中的枚举 -
zmwxiaoming:
java unix时间戳转换 -
g21121:
lhq1013 写道请问 我通过什么方式可以获取到tomca ...
tomcat优化 -
lhq1013:
请问 我通过什么方式可以获取到tomcat的qps值?
tomcat优化 -
zengshaotao:
condition的测试代码有问题,一个await的线程醒来之 ...
Java并发之Condition与Lock
文章列表
Worker是线程池中实际工作的线程,Worker是 ThreadPoolExecutor的私有内部类,它实现了 Runnable接口,所以可以作为一个线程来使用。
private final class Worker implements Runnable {
//锁
private final ReentrantLock runLock = new ReentrantLock();
//任务
private Runnable firstTask;
//完成任务数
volatile long complet ...
众所周知锁有两种:乐观锁与悲观锁。独占锁是一种悲观锁,而 synchronized 就是一种独占锁,synchronized 会导致其它所有未持有锁的线程阻塞,而等待持有锁的线程释放锁。所谓乐观锁就是,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。而乐观锁用到的机制就是CAS。
1.CAS(Compare And Set)
Compare And Set(或Compare And Swap),CAS是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数——内存位置(V)、预期原值(A ...
在并发编程中,有两个基本的执行单元:进程和线程。即使在只有单一的 CPU的计算机系统中,也有许多活动的进程和线程。因此,在任何给定的时刻,同一进程内只有一个线程在实际执行。处理器的处理时间是通过操 ...
数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列数据操作,要么完全地执行,要么完全地不执行。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。事务是数据库运行中的一个逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理。
简而言之数据库是我们操作数据库时一系列执行操作的控制单元,当我们只执 ...
Java序列化进阶篇
- 博客分类:
- 我所了解的Java
1.transient
类一旦实现了Serializable 接口即被声明为可序列化,然而某些情况下并不是所有的属性都需要序列化,想要人为的去阻止这些属性被序列化,就需要用到transient 关键字。
transient 关 ...
Java序列化基础篇
- 博客分类:
- 我所了解的Java
Java类通过实现java.io.Serializable 接口便可启用其序列化功能。实现了序列化的类的实例可以在不同的系统或JVM间传递,并且不会丢失原实例的相关状态及值。
为一个类开启序列化功能只需实现Serializable 接口即可,仅仅作为使用者可以不必了解其内部的更深层次的实现及流程,但是如果想要更好的使用序列化功能就需要与我一起详细的学习和了解它。
1.什么是Java序列化
Java类通过实现java.io.Serializable 接口以启用其序列化功能:
import java.io.Serializab ...
Java NIO 缓冲区简介
- 博客分类:
- 我所了解的Java
NIO 是New IO 的简称,从JDK1.4开始添加支持,用来解决传统IO的问题,比如并发,高效传输等。NIO作为传统IO的一个补充及优化,在解决一些传统IO无法应对的场景非常有效,而且对于NIO的掌握也对于开发人员是一种技能水平的提升,所以就同我一起来学习一下NIO的相关知识吧。
通过前文我们对于Java I/O的结构已经有了一个比较清晰的认知,Java引入了一个新包java.nio。以下是java.nio的包目录结构: java.nio 包定义了缓冲区类Buffer及相关子类,这些类适用于所有 NIO API; java.n ...
Tomcat作为一名开发人员来说已经是再熟悉不过了,我们几乎每天都会与其打交道,无论是测试还是开发,甚至是生产环境。然而我相信大部分开发和测试人员仅仅是使用Tomcat,对其更深层次的研究寥寥无几,其实我 ...
Java I/O入门
- 博客分类:
- 我所了解的Java
I/O 或称为输入/输出,指的是计算机与外部世界或者一个程序与计算机的其余部分的之间的接口。它对于任何计算机系统都非常关键,因而所有I/O 的主体实际上是内置在操作系统中的。单独的程序一般是让系统为它 ...
上一篇重点介绍的是HashMap的实现原理、设计思想与相关具体操作,本篇就深入HashMap实现中进一步了解其内部的一些算法及相关性能指标。
HashMap实例中table的length是在初始化时就被指定的,无论采用默认值还是其他指定值,table数组的大小就已经确定,随着添加元素的增多在一定时机下下会对table数组进行扩容呢。
HashMap实例通过put方法设置元素,HashMap实例首先会计算该key所对应的下标位置,然后遍历寻找该key,如果找到则直接更新,当该key为原实例中不存在时则会调用addEntry方法添加新的元素,此时M ...
java.util包中的集合类包含 Java 中某些最常用的类。最常用的集合类是 List 和 Map。List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象元素列表。List 适用于按数值索引访问元素的情形。
Map 则提供了一个更通用的元素存储方法。Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。从概念上而言,您可以将 List 看作是具有数值键的 Map。而实际上,除了 List 和 Map 都在定义 java.util 中外,两者并没有直接的联系。
...
List实现之LinkedList
- 博客分类:
- 我所了解的Java
LinkedList是List 接口的链接列表实现。实现List接口所有可选的列表操作,并且允许添加任何元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法 ...
List实现之ArrayList
- 博客分类:
- 我所了解的Java
List的主要实现类为:AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector.
大多数情况我们实现List这个接口时使用的是ArrayList这个实现类,ArrayList类是List 接口的大小可变数组的实现,所以ArrayList的字面意思就是“数组列表”的意思。ArrayList实现了List接口所有可选列表操作,并允许包括 ...
在开发过程中经常会遇到延迟加载或联动加载的情况,比如前一个下拉列表决定了后一个下拉列表的内容,这种情况在选择邮寄地址中最为常见。
下图就是京东添加收货地址的例子, 后两个select会根据上一个所选的值进行加载和联动:
我们仿照上面的例子来实现一个延迟联动加载地区的demo:
1.新建一个html页面,其中只有三个select下拉列表组件,代码如下:
省份:<select id="province" style="width: 90px;margin: 10px;& ...
List是一个有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
与 set 不同,列表通常允许重复的元素。更确切地讲,列表通常允许满足 e1.equals(e2) 的元素对 e1 和 e2,并且如果列表本身允许 null 元素的话,通常它们允许多个 null 元素。难免有人希望通过在用户尝试插入重复元素时抛出运行时异常的方法来禁止重复的列表,但我们希望这种用法越少越好。
综上所述List是一个有序、元素可重复的Co ...