AQS是一个同步器的基础类,里面的关键字段: //如下关键字段都是volatile类型 /** * Head of the wait queue, lazily initialized. Except for * initialization, it is modified only via method setHead. Note: * If head exists, its waitStatus is guaranteed not to be * CANCELLED. */ private…
备注:博文仅仅是学习过程中的零散记录,后期整理. AbstractQueuedSynchronizer的简单介绍可以网上搜索,简单了解字段作用. 示例代码,分析获取锁的过程: import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class AQS { public static void main(String[] args) { Lock lock = n…
前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的IO流-入门篇>,希望对大家有帮助,谢谢 由于Java的IO类有很多,这就导致我刚开始学的时候,感觉很乱,每次用到都是上网搜,结果每次用完就忘: 后来沉下心去看书学习,才明白都是有规律的: 这里先做个简单的介绍,作为入门级教程,后面还有很多要学习的,有空再整理吧. 简介 文件IO流,主要有两种方式 字节流:基于普通的Java对象,仅适用于Java程序之间的读写 字符流:基于普通的文本字符串,不仅适用于Java程序之间的读写,也适用于Ja…
前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的集合List - 入门篇>,希望对大家有帮助,谢谢 简介 说实话,Java中的集合有很多种,但是这里作为入门级别,先简单介绍第一种集合List,如下图所示 正文 List是一种有序集合,和数组的行为非常相似,但是比数组灵活: 因为数组是长度固定的,而List的长度是动态分配的. 数组的概览 既然LIst是基于数组实现的,那么在介绍List之前,我们先来熟悉一下Java的数组吧(简单过一下,毕竟用的不多了) 数组对象有一个length属性…
前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的映射Map - 入门篇>,希望对大家有帮助,谢谢 简介 前面介绍了集合List,这里开始简单介绍下映射Map,相关类如下图所示 正文 Map是一种存储键值对的数据集合,键以散列或者树形结构进行存储: 为什么会设计Map接口呢? 假设我们有一个员工类,里面有Id属性和姓名等其他信息,现在我们把所有员工都存到List里,然后要找出Id为001的员工,你会发现,你需要从List中遍历每个对象,然后取出Id进行比较: 你会发现这种查找法效率很低…
前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的集合Set - 入门篇>,希望对大家有帮助,谢谢 简介 前面介绍了集合List,映射Map,最后再简单介绍下集合Set,相关类如下图所示 正文 Set从外面看像List(都是存储单一数据的集合),只不过存储的数据不会有重复: 但是里面却是Map映射(因为它内存存储是基于Map结构实现),这也是为什么把Set放到Map后面来说的原因. Set和Map有什么关系呢? 因为Map的键不会有重复,所以Set就利用了Map的这个特点,将其作为内部…
1.下载redis服务器端程序: 在redis.io官网完成服务器端程序下载:可下载安装版或解压版,此处我下载的是解压版,下载完成后解压. 2.配置redis密码,开启redis服务端 在redis.windows.conf中搜索requirepass,找到#requirepass 行,在下面新建一行,设置自己的redis访问密码. 此处我们配置密码为“redis” requirepass redis 然后CMD进入解压后的目录.开启redis服务端: 3.新建maven quick start…
Redis是一个开源的,先进的 key-value 存储可用于构建高性能,可扩展的 Web 应用程序的解决方案. Redis官方网网站是:http://www.redis.io/,如下: Redis 有三个主要使其有别于其它很多竞争对手的特点: Redis是完全在内存中保存数据的数据库,使用磁盘只是为了持久性目的:  Redis相比许多键值数据存储系统有相对丰富的数据类型:  Redis可以将数据复制到任意数量的从服务器中:  Redis优点 异常快速 : Redis是非常快的,每秒可以执行大约…
运算符,顾名思义就是用于运算的符号,比如最简单的+-*/,这些运算符可以用来进行数学运算,举个最简单的栗子: 已知长方形的长为3cm,高为4cm,求长方形的面积. 好,我们先新建一个项目,命名为Rectangle. 然后右键src文件夹,新建一个package,命名为pers.frank.rectangle. 这里补充说明一下包的命名规则,相信很多人都知道,包命名的时候用去www域名反写,加上项目名称,但实际上,那一般是用于公司项目的命名方式,对于不同项目,有着不同的命名规则. indi :个体…
什么是大数值?用脚趾头想也知道,当然是"大"的数值(233).Java中有两个用于表示大数值的类,BigInteger和BigDecimal,那到底能表示多大的数值呢?理论上,可以表示任意长度,任意精度,想要多大,就能有多大. 为什么要用大数值?理由很简单,当整数跟浮点数的精度不能满足要求时,就需要用更大或者精度更高的类型,这时候大数值就应运而生了. short的取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1). int的取值范围为(-2147483…