摘要:
背包 定义 背包是一种不支持从中删除元素的集合类型。 使用场景 帮助用例收集元素并迭代遍历所有收集到的元素。迭代的顺序不确定并且与用例无关。 典型用例 求平均值和方差 先进先出队列 定义 先进先出队列(或简称队列)是一种基于先进先出(FIFO)策略的集合类型。 使用场景 在应用程序中使用队列的主要原 阅读全文
摘要:
Java同步块用来标记一个方法或一个代码块为同步的。Java同步块可以用来避免竞态。 Java同步关键字 在 Java 中使用 来标记同步块。一个同步块是同步在某些对象上。同一个对象上的所有同步块只能有一个线程执行里面的代码。其他线程试图进入同步块都会被阻塞,直到同步块中的现成离开同步块。 可以用来 阅读全文
摘要:
布局优化 布局优化的思想很简单,就是尽量减少布局文件的层级。 如何进行布局优化呢?首先是删除布局中无用的空间和层级,其次有选择地使用性能较低的 ViewGroup,比如 RelativeLayout 的性能比起 LinearLayout 和 FrameLayout 就不是很好。 利用 Relativ 阅读全文
摘要:
API | 背包 | | | | | | public class Bag implements Iterable | | | Bag() | 创建一个空背包 | | void add(Item item) | 添加一个元素 | | boolean isEmpty() | 背包是否为空 | | in 阅读全文
摘要:
Java 内存模型内部原理 JVM 中的 Java 内存模型将内存分为线程栈和堆。 JVM 中的每一个线程都有自己的线程栈。线程栈包含方法的信息,也叫调用栈。 线程栈也包含调用栈中的方法的局部变量。线程创建的局部变量对其他县城来说是不可见的。 类型是基本类型的局部变量(boolean,byte,sh 阅读全文
摘要:
算法:即适用计算机解决问题的方法。 数据结构:即便于算法操作的组织数据的方法。 我们关注的大多数算法都需要适当地组织数据,而为了组织数据就产生了数据结构。 学习算法的主要原因是它们能解决非常多的资源,甚至能够让我们完成一些本不可能完成的任务。无论在任何应用领域,精心设计的算法都是解决大型问题最有效的 阅读全文
摘要:
竞态之发生在多线程访问相同的资源,同时有一个或多个线程写入东西到资源。相反,如果是多线程读取资源的话,反而不会发生竞态。比如 一旦 实例创建,你就不能改变它的值。ImmutableValue 是不可变的。你能做的只有通过 读取它的值。 如果你要对 进行操作,可以通过返回一个新的 实例来实现,比如 引 阅读全文
摘要:
能够同时被多个线程安全地调用的代码,就是线程安全。如果一段代码是线程安全的,就说明它没有竞态。竞态只会在多线程更新共享资源的时候出现。所以,知道 Java 在执行的时候是共享了什么资源是很重要的。 局部变量 局部变量存储在每个线程自己的栈中。也就是说局部变量不会再多个线程中共享。也意味着本地的基本类 阅读全文
摘要:
竞态和临界区 当多个线程写入相同资源的时候,可能会发生问题。但是,如果数据没有变化的话,多个线程读取相同资源倒是没有问题。 下面有个例子,如果多个线程同时处理的话就会发生问题 有可能出现两个线程通知执行了 Counter.add() 方法,这时候就会出现问题。这就是竞态。这个 add() 方法就是临 阅读全文
摘要:
华为手机有个奇怪的地方,当我使用USB连上电脑之后,手机里的SD卡就无法使用了,导致一些需要用到SD卡的应用无法运行。那么能不能不用USB线,仅通过WIFI进行远程调试?当然可以。 下面是几个步骤 启动ADB服务 在CMD中输入 启动一下ADB服务 插上手机 使用USB 连接手机和电脑,然后再CMD 阅读全文