主页

Java 并发-Lock

一、Lock 简介 锁是用来控制多个线程访问共享资源的方式,在 Lock 接口出现之前,Java 程序是靠 synchronized 关键字时间锁的功能,而在 JDK 5 之后,并发包中添加了 Lock 接口来实现锁的功能,其提供了和 synchronized 关键字类似的同步功能。 Lock lock = new ReentrantLock(); lock.lock(); try{ }...

阅读更多

Java 并发-关键字

一、Synchronized 1. 使用方法 synchronized 块是 Java 提供的一种原子性内置锁,Java 中的每个对象都可以把它当作一个同步锁来使用,这些 Java 内置的使用者看不到的锁被称为内部锁,也叫作监视器锁。线程的执行代码在进入 synchronized 代码块前会自动获取内部锁,这时候其他线程访问该同步代码块时会被阻塞挂起。 具体表现为以下 3 种形式: ...

阅读更多

Java 并发-内存模型

一、JMM 抽象结构 Java 线程之间的通信由 Java 内存模型(JMM)控制,JMM 决定一个线程对共享变量的写入何时对另一个线程可见。从抽象的角度来看,JMM 定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存中,每个线程都有一个私有的本地内存,本地内存存储了该线程以读/写共享变量的副本。本地内存是 JMM 的一个抽象概念,并不真实存在,它涵盖了缓存、写缓冲区、寄存器...

阅读更多

Leetcode —「数学」系列题解

回文数 Leetcode - 9 Palindrome Number (Easy) 题目描述:判断一个整数是否为回文数。 Input: -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a ...

阅读更多

Leetcode —「哈希」系列题解

珠宝和石头 Leetcode - 771 Jewels and Stones (Easy) 题目描述:字符串 J 表示珠宝的种类,字符串 S 表示石头的种类,判断字符串 S 中的石头是珠宝的有多少块。 Input: J = "aA", S = "aAAbbbb" Output: 3 public int numJewelsInStones(String J, String S) {...

阅读更多

Leetcode —「位运算」系列题解

单一数字 Leetcode - 136 Single Number (Easy) 题目描述:给定一个非空整数数组,数组中除了一个数字只出现一次外,其它的都出现两次,找到这个单一数字。 Input: [2,2,1] Output: 1 解题思路:异或运算,同 0 异 1。 public int singleNumber(int[] nums) { int result = ...

阅读更多

Java 反射

反射(Reflection)是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性。通过 Class 获取 class 信息称之为反射。 简而言之,通过反射,可以在运行时获得程序或程序集中每一个类型的成员和成员的信息。 一、Class 类 在面向对象的世界里,万事万物皆对象。 Java 语言中只有静态的成员和普通数据类型不是...

阅读更多

Java 面向对象

面向对象三大特征 1.封装 隐藏对象的属性和实现细节,仅对外提供公共访问方式。隐藏代码的实现细节,提高安全性。 2.继承 体现在代码开发中,让代码具有层次结构。继承的主要特点是父类与子类的关系,子类可以继承父类的一些特性,如方法和变量。 3.多态 主要体现在 Java 的重载与重写上。 访问控制权限 修饰词 本类 同一个包...

阅读更多