自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 java并发编程之读写锁

参考: 【Java并发】ReadWriteLock读写锁的使用

2020-05-26 15:36:07 14 0

原创 Java的AQS

参考: AQS 浅谈Java的AQS AQS详解(面试)

2020-05-25 15:29:03 21 0

原创 Java中String s = new String(“abc”)和Stirng s = “abc”的区别

参考: Java| String s=new String(“abc”)和Stirng s = "abc"的区别

2020-05-24 12:34:02 25 0

原创 Java字符串String的+和+=的原理

1.String str = new String(“abc”) 创建了几个对象? 参考: 字符串String的+和+=及循环操作String的原理

2020-05-24 12:33:03 21 0

原创 Java多线程之阻塞队列与线程池

参考: JAVA并发编程下的阻塞队列与线程池

2020-05-22 17:49:55 83 0

原创 JAVA中CAS与ABA

参考: JAVA中CAS-ABA的问题解决方案AtomicStampedReference

2020-05-21 16:52:45 36 0

原创 Java核心技术卷一 14.5.12 线程局部变量

前面几节中, 我们讨论了在线程间共享变量的风险。有时可能要避免共享变量, 使用ThreadLocal 辅助类为各个线程提供各自的实例。 例如,SimpleDateFormat 类不是线程安全的。 假设有一个静态变量: public static final SimpleDateFormat dat...

2020-05-21 16:23:54 28 0

原创 ThreadLocal

ThreadLocal的使用场景: 在并发编程中时常有这样一种需求:每个线程都需要存取一个同名变量,但每个线程中该变量的值均不相同。 ThreadLocal的原理: 在每个线程中存储一个变量的副本,这样在每个线程对该变量进行使用的时候,使用的是该线程的局部变量,从而保证了线程的安全性以及高效性。 ...

2020-05-20 18:36:00 38 0

原创 死锁的产生以及如何避免死锁

什么是死锁? 所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局(互相等待),当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。 我们举个例子来描述,如果此时有一个线程A,按照先获得锁a再获得锁b的的顺序获得锁,而在此同时又有另外一个线程B,按照先获得锁b再获得锁a的顺序获...

2020-05-14 14:36:53 72 0

原创 Java线程中yield与join方法的区别

yield()方法:让当前运行线程回到可运行状态,以允许具有相同优先级的其他线程获得运行机会。因此,使用yield()的目的是让相同优先级的线程之间能适当的轮转执行。但是,实际中无法保证yield()达到让步目的,因为让步的线程还有可能被线程调度程序再次选中。即在大多数情况下,yield()将导致...

2020-05-12 18:14:37 36 0

原创 动态代理与静态代理

参考: 静态代理和动态代理的区别和联系 java 代理 理解原理及实现 Java的三种代理模式 Java 动态代理详解 JAVA面试50讲之9:动态代理的原理是什么?

2020-05-12 00:35:11 42 0

原创 Java语言高级特性——注解与反射

注解 Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。 注解是元数据的一种形式,提供有关于程序但不属于程序本身的数据。注解对它们注解的代码的操作没有直接影响。 注解声明 声明一个注解类型 Java中所有的注解,默认实现 Annotation 接口:...

2020-04-30 19:07:32 36 0

原创 synchronized原理(自旋锁,锁消除,锁粗化,偏向锁,轻量级锁)

参考: synchronized原理及优化,(自旋锁,锁消除,锁粗化,偏向锁,轻量级锁)

2020-04-13 10:47:26 119 0

原创 详解Java的对象

参考: [1] Java特种兵,3.5 - 浅析Java对象的内存结构 [2] Java并发编程的艺术,2.2.1 - Java对象头 [3] 深入理解Java虚拟机,2.3.2 - 对象的内存布局 java对象在内存中的结构(HotSpot虚拟机) Java对象结构与锁实现原理及MarkWord...

2020-04-11 16:04:21 74 0

原创 Java并发编程的艺术 2.2 synchronized的实现原理与应用

2.2 synchronized的实现原理与应用 在多线程并发编程中synchronized一直是元老级角色,很多人都会称呼它为重量级锁。但是,随着Java SE 1.6对synchronized进行了各种优化之后,有些情况下它就并不那么重了。本文详细介绍Java SE 1.6中为了减少获得锁和释...

2020-04-11 13:07:05 49 0

原创 深入理解Java虚拟机 2.3 HotSpot虚拟机对象探秘

2.3 HotSpot虚拟机对象探秘 介绍完Java虚拟机的运行时数据区之后,我们大致知道了虚拟机内存的概况,读者了解 了内存中放了些什么后,也许就会想更进一步了解这些虚拟机内存中的数据的其他细节,譬如它们是如何创建、如何布局以及如何访问的。对于这样涉及细节的问題,必须把讨论范围限定在具体的虚拟机...

2020-04-10 16:12:52 46 0

原创 Java的Class类

参考: Java语言中的Class类

2020-04-06 19:52:41 48 0

原创 JVM方法区

参考: 【了解】JVM的Class对象的存储位置和作用【方法区:类型信息。堆:Class对象】 JVM 系列 - 内存区域 - 方法区(六)

2020-04-05 18:37:50 189 0

原创 Thinking in Java 第14章 类型信息(type information)

14.6 反射:运行时的类信息 如果不知道某个对象的确切类型,RTTI可以告诉你。但有一个限制:这个类型在编译时必须已知,这样才能使用RTTI识别它,并利用这些信息做一些有用的事。换句话说,在编译时,编译器必须知道所有要通过RTTI来处理的类 假设你获取了一个指向某个并不在你的程序空间中的对象的...

2020-04-05 14:42:25 76 0

原创 TCP的三次握手与四次挥手

重学TCP/IP协议和三次握手四次挥手 TCP的三次握手与四次挥手理解及面试题(很全面)

2020-04-05 10:18:50 42 0

原创 Java 乐观锁和悲观锁

字节跳动面试,问了我乐观锁和悲观锁的AQS、sync和Lock,这个回答让我拿了offer

2020-04-05 10:15:44 282 0

原创 Core Java, Volume I 第 6 章 接口、lambda 表达式与内部类

▲ 接 口 ▲ 接 口 示 例 ▲ lambda 表 达 式 ▲ 内 部 类 ▲ 代 理 6.1 接口 6.2 接口示例 6.3 lambda 表达式 6.4 内部类 6.5 代理 参考: Java核心技术卷一 基础知识 第10版 ...

2020-04-02 12:54:18 53 0

原创 Android注解

参考: Android注解-看这篇文章就够了

2020-04-01 13:28:34 39 0

原创 如何查看Android系统源码

参考: 如何查看Android系统源码

2020-04-01 13:27:32 102 0

原创 ViewPager嵌套Fragment性能优化

1.ViewPager+Fragment如何管理生命周期 2.ViewPager嵌套Fragment的缓存机制 3.ViewPager卡顿性能优化

2020-04-01 13:12:13 68 0

原创 Thinking in Java 第20章 注解

注解(也成为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后的某个时刻非常方便的使用这些数据 参考: Thinking in Java 第20章 注解 Thinking in Java——注解 Thinking in Java ——第二十章-注解 ...

2020-03-31 23:46:44 32 0

原创 Core Java, Volume II 第8章 脚本、编译与注解处理

注解是那些插入到源代码中使用其他工具可以对其进行处理的标签。这些工具可以在源码层次上进行操作,或者可以处理编译器在其中放置了注解的类文件。 注解不会改变程序的编译方式。Java编译器对于包含注解的代码和不包含注解的代码会生成相同的虚拟机 指令。 参考: Java核心技术 卷二 高级特性 原书第10...

2020-03-30 22:06:42 38 0

原创 理解Java泛型中的通配符

Java泛型中的通配符机制的目的是:让一个持有特定类型(比如A类型)的集合能够强制转换为持有A的子类或父类型的集合,这篇文章将解释这个是如何做的。 这里有几个主题: 泛型集合的赋值问题 想象你有这么几个类: public class A{} public class B extends A{} p...

2020-03-29 17:52:20 34 0

原创 理解Java泛型中的桥方法

Java泛型中存在类型擦除机制,也就是说泛型在编译期间进行类型检验上做到有效安全,但是在运行当中,会将该泛型类型用限定类型(无限定的类型变量则用Object代替)代替,这种类型擦除也存在泛型方法中,但是方法的擦除带来了两个复杂的问题。   看下面代码示例: public class A<T&...

2020-03-28 03:03:01 41 0

原创 Core Java, Volume I 第8章 泛型程序设计

参考: Java核心技术 卷一 基础知识 第10版

2020-03-27 15:32:51 107 0

原创 java中的泛型

1. 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。 什么是泛型? 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此...

2020-03-27 13:37:22 61 0

原创 ViewPager设置高度为wrap_content但无法自适应的解决办法

ViewPager用的很多,主要用于展示广告条。可是高度却不能自适应内容,总是会占满全屏,即使设置android:height="wrap_content"也是没有用的。 原因是谷歌当初设计ViewPager时就是用于整个页面的左右滑动的,所以把ViewPager的高度设置为充...

2020-03-25 22:32:41 63 0

原创 解决ListView或者RecyclerView中Item布局文件设置的layout_height属性无效的问题

ListView的使用中,item是在adapter中用来显示每一个条目的数据结构,一般用一个xml文件表示其布局,但经常遇到一个问题,设置了布局文件中的高度后无效,如item的布局文件: <?xml version="1.0" encoding="utf-8...

2020-03-25 22:00:53 63 0

原创 Android流式布局FlowLayout

谷歌官方提供的flexbox-layout也可以实现流式布局:https://github.com/google/flexbox-layout github上FlowLayout的项目也很多,如:https://github.com/hongyangAndroid/FlowLayout 但是自己实...

2020-03-25 12:22:52 41 0

原创 APP网络链接

1、你可能用的客户端网络连接协议有哪些? 2、彻底理解http请求,再也不用和服务器争吵了。 3、DNS缓存污染怎么办?Android怎么实现自己的域名解析? 4、SSL/TLS关系是什么?Https的怎么保障安全通信? 5、中间人攻击怎么防? 6、Wireshark、Charles、PostMa...

2020-03-22 20:29:36 49 0

原创 IDEA插件ASM Bytecode Outline

IDEA插件ASM Bytecode Outline

2020-03-21 20:20:26 239 0

原创 Android性能优化之内存优化

1.内存抖动与内存泄漏 2.Profile、MAT工具的使用 3.内存问题常见场景

2020-03-21 20:12:35 84 0

原创 Activity的启动过程

参考: https://www.androidos.net.cn/android/9.0.0_r8/xref/frameworks/base/core/java/android/app/Activity.java

2020-03-21 13:26:02 99 0

原创 onAttachedToWindow()的调用时机

onAttachedToWindow()在整个Activity生命周期的位置 onAttachedToWindow()调用时机 onAttachedToWindow()方法的调用是在ViewRootImpl的performTraversals()方法: private void performT...

2020-03-21 12:32:11 59 0

原创 Activity的Window对象创建过程

要分析Activity中的Window的创建过程就必须了解Activity的启动过程,详细的过程参考, 。 Activity的启动过程很复杂, 最终会由ActivityThread中的performLaunchActivity()方法来完成整个启动过程, 在这个方法内部会通过类加载器创建Activ...

2020-03-21 11:26:47 733 0

提示
确定要删除当前文章?
取消 删除