摘要:
一、leetcode 题目 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。 实现 LRUCache 类: LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在 阅读全文
摘要:
网上关于这个问题吵得很凶,但是仔细看过之后我更偏向认为两种说的是一样的。 首先我们来看看 TCP 协议的三次握手过程 如上图所示: 解释一下里面的英文: 里面起到作用的一些标志位就是TCP报文首部里的内容,ACK确认标志位,SYN同步标志位,ack确认号; 两端的状态CLOSED 就是连接关闭状态, 阅读全文
摘要:
我们已经知道多线程下会有各种不安全的问题,都知道并发的基本解决方案,这里对出现错误的情况进行一个实际模拟,以此能够联想到具体的生产环境中。 一、List 的不安全 1.1 问题 看一段代码: public static void main(String[] args) { ArrayList<Str 阅读全文
摘要:
一、问题 在做一个demo,因为很久没有重新用 jsp 页面直接 EL 取数据了,遇到了问题,记录一下。 简单来说就是用 EL 在 jsp 页面里面从域中用 $ 取数据: 但是浏览器对应页面的位置是空白。 也没有显示 $ 这个表达式的字符串本身。 二、前置条件: 已经引入了 jstl 和 tagli 阅读全文
摘要:
前面一篇已经介绍过了 HashMap 的源码: HashMap源码解析、jdk7和8之后的区别、相关问题分析 HashMap并不是线程安全的,他就一个普通的容器,没有做相关的同步处理,因此线程不安全主要体现在: put、get 等等核心方法在多线程情况下,都会出现修改的覆盖,数据不一致等等问题。比如 阅读全文
摘要:
一、前置知识 线程间通信三要素: 多线程+判断+操作+通知+资源类。 上面的五个要素,其他三个要素就是普通的多线程程序问题,那么通信就需要线程间的互相通知,往往伴随着何时通信的判断逻辑。 在 java 的 Object 类里就提供了对应的方法来进行通知,同样的,保证安全的判断采用隐式的对象锁,也就是 阅读全文
摘要:
一、线程池定义和使用 jdk 1.5 之后就引入了线程池。 1.1 定义 从上面的空间切换看得出来,线程是稀缺资源,它的创建与销毁是一个相对偏重且耗资源的操作,而Java线程依赖于内核线程,创建线程需要进行操作系统状态切换。为避免资源过度消耗需要设法重用线程执行多个任务。线程池就是一个线程缓存,负责 阅读全文
摘要:
一、介绍 首先, java 的锁分为两类: 第一类是 synchronized 同步关键字,这个关键字属于隐式的锁,是 jvm 层面实现,使用的时候看不见; 第二类是在 jdk5 后增加的 Lock 接口以及对应的各种实现类,这属于显式的锁,就是我们能在代码层面看到锁这个对象,而这些个对象的方法实现 阅读全文
摘要:
一、事务(数据库的事务都通用的定义) 1.1 事务定义 事务是由一步或几步数据库操作序列组成逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行。事务通常以 BEGIN TRANSACTION 开始,以COMMIT 或 ROLLBACK 操作结束: COMMIT 即提交,提交事务中所有的操作、事务 阅读全文
摘要:
内部类 内部类是指在一个外部类的内部再定义一个类。内部类的出现,再次打破了Java单继承的局限性。 内部类可以是静态 static 的,也可用 public,default,protected 和 private 修饰。(而外部顶级类即类名和文件名相同的只能使用 public 和 default)。 阅读全文