![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
、YongTing
这个作者很懒,什么都没留下…
展开
-
HashMap源码分析
原文:彤哥读源码https://www.cnblogs.com/tong-yuan/p/10638912.htmlHashMap采用key/value存储结构,每个key对应唯一的value,查询和修改的速度都很快,能达到O(1)的平均时间复杂度。它是非线程安全的,且不保证元素存储的顺序;继承体系HashMap实现了Cloneable,可以被克隆。HashMap实现了Seria...原创 2019-04-03 16:41:13 · 106 阅读 · 0 评论 -
Synchronized和ReentrantLock的区别
相似点:这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如果一个线程获得了对象锁,进入了同步块,其他访问该同步块的线程都必须阻塞在同步块外面等待,而进行线程阻塞和唤醒的代价是比较高的(操作系统需要在用户态与内核态之间来回切换,代价很高,不过可以通过对锁优化进行改善)。功能区别:这两种方式最大区别就是对于Synchronized来说,它是java语言...原创 2019-04-13 18:13:51 · 137 阅读 · 0 评论 -
Java的参数传递是「按值传递」还是「按引用传递」?
答:是按值传递。Java 语言的参数传递只有「按值传递」。1、基本数据类型的参数先来看一下基本数据类型的参数按值传递的例子:TransferTest.javapublic class TransferTest { public static void main(String[] args) { int num = 1; System.out...原创 2019-04-18 17:31:08 · 116 阅读 · 0 评论 -
牛客网扒下来的java面筋
原文链接:https://www.nowcoder.com/discuss/167046Java【阿里】阿里数据部门Java研发工程师(2020校招暑期实习)一面 https://www.nowcoder.com/discuss/179941【阿里、腾讯、头条、英特尔、星环、视源】四跨考生的面经合集(阿里、腾讯、头条、英特尔、星环、视源) https://www.nowcoder.com...原创 2019-04-19 15:07:29 · 1656 阅读 · 0 评论 -
DateUtils日期操作工具类
DateUtils常用方法1.1.常用的日期判断isSameDay(final Date date1, final Date date2):判断两个时间是否是同一天; isSameInstant(final Date date1, final Date date2):判断两个时间是否为同一毫秒1.2.日期的基本操作String转Date DateUtils.parseDate...原创 2019-04-24 16:17:48 · 4414 阅读 · 0 评论 -
java反射笔记
一、概述1. 简介Java反射(Reflection)机制就是在运行状态中,对于任意一个类,都能够知道这个类的属性和方法。对于任意一个对象能够调用它的任意一个属性和方法。这种动态获取的信息和动态调用对象的方法的功能称为Java语言的反射机制。Java程序中一般的对象的类型都是在编译期就确定下来的,而Java反射机制可以动态地创建对象并调用其属性,这样的对象的类型在编译期是未知的。所以...原创 2019-04-24 16:55:32 · 307 阅读 · 1 评论 -
JAVA锁的膨胀过程和优化
1,自旋锁自选锁其实就是在拿锁时发现已经有线程拿了锁,自己如果去拿会阻塞自己,这个时候会选择进行一次忙循环尝试。也就是不停循环看是否能等到上个线程自己释放锁。这个问题是基于一个现实考量的:很多拿了锁的线程会很快释放锁。因为一般敏感的操作不会很多。当然这个是一个不能完全确定的情况,只能说总体上是一种优化。举个例子就好比一个人要上厕所发现厕所里面有人,他可以:1,等一小会。2,跑去另外的地方上...原创 2019-04-20 13:54:30 · 222 阅读 · 0 评论 -
java的强引用、弱引用、软引用、虚引用
原文:http://www.cnblogs.com/gudi/p/6403953.html1、强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下:Object obj=new Object(); // 强引用 当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终...原创 2019-04-25 16:53:26 · 116 阅读 · 0 评论 -
单例模式的几种写法
懒汉式 public class Singleton { private static Singleton instance; private Singleton() { } public static Singleton getInstance() { if (instance == null) { inst...原创 2019-03-27 10:12:26 · 526 阅读 · 0 评论 -
JVM整理_初级篇
本文具体讲述4个方面Java GC机制1,内存是如何分配的;2,如何保证内存不被错误回收(即:哪些内存需要回收);3,在什么情况下执行GC以及执行GC的方式;4,如何监控和优化GC机制。Java内存区域 在Java运行时的数据区里,由JVM管理的内存区域分为下图几个模块:1,程序计数器(Program Counter Register):程序计数器是一个比较小的...原创 2018-08-20 16:24:31 · 101 阅读 · 0 评论 -
理解java反射
官方说法:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。在回答面试官的时候适当结合自己的理解即可。实现反射的步骤: 1.获取Class类 2.通过Class创建对象 3.获取类中的方法 4.获取类中的属性,属性值或类型三种方式如...原创 2019-03-19 16:22:09 · 109 阅读 · 0 评论 -
刨根问底String,StringBuilder,StringBuffer的区别
运行速度快慢为:StringBuilder > StringBuffer > String String最慢的原因: String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。以下面一段代码为例:1 String str="abc";2 Syst...原创 2019-03-19 16:31:01 · 124 阅读 · 0 评论 -
先、中、后(递归,非递归)二叉树
import com.ccut.aaron.stack.LinkedStack;public class BinaryTree { //前序遍历递归的方式 public void preOrder(BinaryTreeNode root){ if(null!=root){ System.out.print(root.getData()+...原创 2019-03-19 20:07:43 · 139 阅读 · 0 评论 -
ConcurrentHashMap源码分析
添加元素public V put(K key, V value) { return putVal(key, value, false);}final V putVal(K key, V value, boolean onlyIfAbsent) { // key和value都不能为null if (key == null || value == null) thr...原创 2019-03-20 17:30:47 · 205 阅读 · 0 评论 -
谈谈synchronized
synchronized的三种应用方式:修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁。synchronized作用于实例方法所谓的实例对象锁就是用synchronized修饰实例对象中的实例方法,注意是实例方法不...原创 2019-03-21 11:33:53 · 189 阅读 · 0 评论 -
volatile面试中怎么回答
当一个变量定义为 volatile 之后,将具备两种特性: 1.保证此变量对所有的线程的可见性,这里的“可见性”,如本文开头所述,当一个线程修改了这个变量的值,volatile 保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新。但普通变量做不到这点,普通变量的值在线程间传递均需要通过主内存(详见:Java内存模型)来完成。 2.禁止指令重排序优化。有volatile修饰的变...原创 2019-03-22 10:42:48 · 2398 阅读 · 1 评论 -
不使用synchronized和lock,CAS实现一个线程安全的单例模式
package com.example.demo;import java.util.concurrent.atomic.AtomicReference;public class Singleton { private static final AtomicReference<Singleton> INSTANCE = new AtomicReference<Si...原创 2019-05-06 18:03:37 · 480 阅读 · 0 评论