RUOYE文章与笔记 返回主页

RUOYE / TOPIC

java.

这个主题下的文章。

01 / NOTE

Java 引用

从内存泄漏谈起 说到 Android 的内存泄漏,就不得不提到 Java 的引用和内存回收机制,不论是面试,还是日常开发,内存泄漏都是 Android 开发者的一个重点,这起源于一个优秀的开发者对自己的规范,一个优秀的产品对用户的负责,我们开发软件时始终都会围绕着两个问题,功能和体验,丰富易用的功能…

阅读
02 / NOTE

Java 线程锁

线程锁 线程锁是什么?首先要明确一系列的概念,在操作系统中,线程之间共享同一个进程的内存,所以再多线程环境中,经常会遇到多个线程同时操作同一个变量的情况,如果是读操作还好说,但是对于写操作,很可能会出现问题。这又涉及到操作的原子性问题,只有原子性的操作在多线程中才是安全的,如 x = 5 (直接赋值…

阅读
03 / NOTE

Java ThreadLocal 原理

在操作系统中,每个进程都有自己的内存空间,而所有的线程共享同一片内存,但是有些时候开发者可能希望保存一些线程内部的数据,不与其他线程共享。如 Android 中的消息机制中的 Looper ,其对象就是一个线程私有的,每一个 Looper 对象对应着一个线程。这种需求在内存的角度是不能实现的,只能从…

阅读
04 / NOTE

Java 线程控制

Java 是一门支持多线程的语言,也提供了一些关于线程控制的方法,使开发者在做一些多线程编程的时候能够实现更加丰富的功能,下面列出常见的几种方法以及它对线程的控制情况: 1. wait() :运行 阻塞 2. notify() :阻塞 就绪 3. sleep() :运行 阻塞 4. join() :…

阅读
05 / NOTE

Java Map

在 Java 中,Map 是与 List 一样的最常用的数据结构之一,相比于 List ,Map 是一种键 值存取的数据结构,也是一种高效的查找数据方案,相较于 List 的遍历查找,Map 可以使用诸如哈希表、二叉搜索树的方式查找。Map 是一个接口,其实现主要有四个类: 1. HashMap 2…

阅读
06 / NOTE

Java Object -- 所有类的父类

Object 是 Java 中所有类的父类,即使没有显示声明,编译器也会默认加上,Object 这个父类存在的意义,大概就是给所有的类都添加几个默认的方法。为什么 Java 的开发者认为所有的类都需要这几个方法?这足以说明这几个方法的重要性,所以我认为,所有的 Java 开发者,都应该对这几个方法的…

阅读
07 / NOTE

Java 内部类

Java 内部类 Java 是一门面向对象的语言,所有功能的实现都是基于类的,类于类之间可以发生关系,如继承、实现接口,其中有一种关系叫做内部类,顾名思义,在某一个类内部定义的类叫做内部类。而内部类又可以根据定义的方式、位置、特点等,划分为四种:成员内部类、方法内部类、静态内部类和匿名内部类。 这四…

阅读
08 / NOTE

Java 静态方法与单例

一般来说,静态方法和单例模式的使用,大多使用在工具类/方法中,在需要的时候调用对应的静态方法/单例方法完成某项功能。也就是说,在功能上,它们之间是有一定的重合的,那么在实际开发的过程中,如何选择使用哪一种方式实现某个功能?要了解如何使用,首先应该了解的是它们之间的区别。 关于调用 二者都是可以直接通…

阅读
09 / NOTE

Java List

在 Java 中虽然有数组这个东西,但是保存一组数据的时候最常用的还是 List ,因为在使用数据的时候数据的长度往往是不固定的,所以要在使用之前先声明长度、并且在声明之后长度便不可变的数组,显然不是一个好的数据结构。 List 有许多实现类,常用的大致两种,ArrayList 和 LinkedLi…

阅读
10 / NOTE

Java 线程池介绍

线程 在开发应用程序的时候,是用到线程的地方很多,一般情况下应用程序都会有一个与用户交互的界面,而在用户操作程序的过程中,肯定会经常执行到一些耗时操作,如网络请求、文件处理等,如果这些操作与处理用户交互的工作处于一个线程中,肯定会导致线程堵塞,在用户看来,就是界面卡顿了,这种情况肯定会造成用户的不满…

阅读
11 / NOTE

Java 内存模型

Java 内存区域 首先,在 JVM 中会将内存区域划分成五个部分(如上所示),其中蓝色区域(方法区、堆区)是线程间共享的,绿色区域(虚拟机栈、本地方法栈、程序计数器)是线程私有的,每个线程独立的保留一份数据。各个区域存储的数据及功能如下: 方法区 方法区是线程共享的一片区域,它主要存放的是虚拟机加…

阅读
12 / NOTE

Java 移位操作

移位运算符 Java 有三种移位运算,即 (算术右移) 、 (逻辑右移) 、 算术右移,将当前操作数的二进制形式顺位右移某几位,并保持最高位与移动前一致,其余位补 0。 逻辑右移,将当前操作数的二进制形式顺位右移某几位,其余位补 0。 2 ⇔ 0000 0000 0000 0000 0000 000…

阅读