自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

蜗牛的博客

每天向前走一点

  • 博客(25)
  • 收藏
  • 关注

原创 Java 如何解决可见性和有序性的问题

Java 内存模型我们之前说过,导致可见性的的原因是缓存,导致有序性的原因是编译优化,那么如何解决这两个问题呢?当然,最简单暴力的方法就是禁用缓存和编译优化。但是这么做的话,我们为性能所做的努力就都白费了,肯定是行不通的。问题还是要解决的,我们可以按照我们的需要有选择性的禁用缓存和编译优化。那么,问题的关键是:如何禁用?这个时候我们需要 Java 内存模型来帮助我们。Java 内存模型是个很复...

2019-03-28 23:55:28 573

原创 单例模式

定义确保某一个类只有一个实例,并且自行实例化向整个系统提供这个实例构造函数不对外开放,一般为private通过一个静态方法或者枚举返回单例对象确保单例类的对象有且只有一个,尤其是多线程的环境下确保单例类对象在反序列化时不会重新构建对象实现单例的方式饿汉模式急切初始化,没有懒加载public class Singleton { private static fi...

2019-03-26 00:14:44 122

原创 为什么并发编程容易出现问题?

为什么并发编程容易出现问题?我们的 CPU、内存、I/O 等硬件设备不断发展,但是这其中有一个无法调和的矛盾:三者之间的速度差异巨大。这种速度差异可以形象的描述为:CPU 天上一天,内存地上一年(假如 CPU 执行一条指令需要一天,内存读写内存得一年时间);内存如果是天上一天,I/O 基本是地上十年了。这种速度差异也导致了即使我们的 CPU 发展的再牛逼,整体的处理速度却取决于最慢的那位。为了均...

2019-03-24 11:36:06 489

原创 Java 虚拟机运行时数据区

程序计数器:是一块较小的内存,它可以看作是当前线程所执行的字节码的行号指示器;如果线程正在执行的是Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是native代码,这个计数器值为空(Underfined)。由于Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式实现的,在任何一个确定的时刻,一个处理器(对于多核处理器来说是一个内核)都只会执行...

2019-01-02 19:23:14 122

原创 View 的绘制笔记一

自定义绘制的四个级别Canvas 的 drawXXX系列方法及Paint 最常见的使用Paint 的完全攻略Canvas 对绘制的辅助—范围剪裁和几何变换使用不同的绘制方法控制绘制顺序Canvas.drawXXX() 系列方法、Paint 基础Canvas 类下的 drawXXX() 方法:drawColor()、drawRGB()、drawARGB() 绘制颜...

2018-08-20 16:54:56 128

原创 JavaScript 基本语法二

JavaScript 事件HTML 事件是发生在 HTML 元素上的事情,当在 HTML 页面中使用 JavaScript 时,JavaScript 可以触发这些事件。HTML 事件可以是浏览器行为,可以是用户行为。比如:HTML 页面加载完成时、HTML input 字段改变时、HTML 按钮被点击等。那么 JavaScript 可以做什么呢?HTML 事件属性可以直接执行 JavaScri...

2018-05-04 17:08:44 121

原创 JavaScript 语法笔记一

JavaScript的使用方式 标签 标签会标识 JavaScript 从哪里开始,到哪里结束。JavaScript 代码在两个标签之间。<script> document.write("<h1>这是一个标题</h1>"); document.write("<p>这是一个段落</p>")&

2018-05-03 18:37:00 130

原创 JavaScript 功能简介笔记

JavaScript 直接写入 HTML 输出流<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title> 大神教程 </title> </head> <bo

2018-05-02 17:38:20 305

原创 Kotlin 中的继承

继承Kotlin 中所有的类都有一个共同的超类 Any,对于没有超类型声明的类默认超类是 Any。看看它的源码:public open class Any { public open operator fun equals(other: Any?): Boolean public open fun hashCode(): Int public open fun...

2018-04-27 17:43:32 728

原创 Kotlin——类和属性

类Kotlin 中类的声明使用 class 关键字,如下:class Person {}类的声明由 class 关键字、类名、类头(指定其类型参数,主构造函数等)以及由花括号包围的类体构成:class 类名(类头) { 类体}class Person constructor(firstName: String) {}如果主构造函数没有任何注解或者可见性...

2018-04-26 17:32:53 608

原创 《Kotlin实战》——函数和变量

函数从一个最经典的例子:Hello World 开始。我们写一个打印输出 Hello World 的函数:fun main(args: Array<String>) { println("Hello World!")}从这个函数我们可以观察到一下几点:Kotlin 使用关键字 fun 来定义函数参数的类型是写在名称后面函数的定义可以在文件的最外层,不需...

2018-04-26 10:11:21 113

原创 IntentService源码分析—Android开发艺术探索笔记

概述IntentService 是一个特殊的 Service,它继承了 Service 并且是一个抽象类,因此必须创建它的子类才能使用 IntentService。一般我们用 Service 在后台做一些耗时操作。这个时候我们需要在 Service 中开启子线程,也要管理 Service 的生命周期。IntentService 这个类的存在就是为了简化我们这些操作的。使用这个类,我们不需要自己...

2018-03-23 14:37:01 186

原创 AsyncTask源码分析——Android开发艺术探索读书笔记

AsyncTask概述AsyncTask 是一个轻量级的异步任务类。它可以在线程池中执行后台任务,然后把执行的进度和最终结果传递给主线程并在主线程中更新 UI。三个参数AsyncTask 是一个抽象的泛型类,它提供了 Params、Progress 和 Result 这三个泛型参数。其中 Params 表示传入参数的类型,Progress 表示后台任务执行进度的类型,Result 表示...

2018-03-22 18:23:47 180

转载 Java并发编程:volatile关键字解析

Java并发编程:volatile关键字解析本文转载自:http://www.cnblogs.com/dolphin0520/Java并发编程:volatile关键字解析   volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。  volat...

2018-03-19 15:08:47 123

转载 Map 综述(一):彻头彻尾理解 HashMap

本文转载自:http://blog.csdn.net/justloveyou_/article/details/62893086摘要:  HashMap是Map族中最为常用的一种,也是 Java Collection Framework 的重要成员。本文首先给出了 HashMap 的实质并概述了其与 Map、HashSet 的关系,紧接着给出了 HashMap 在 JDK 中的定义,并结合源码分析...

2018-03-18 11:38:30 159

转载 Map 综述(二):彻头彻尾理解 LinkedHashMap

本文转载自:http://blog.csdn.net/justloveyou_/article/details/62893086摘要:  HashMap和双向链表合二为一即是LinkedHashMap。所谓LinkedHashMap,其落脚点在HashMap,因此更准确地说,它是一个将所有Entry节点链入一个双向链表的HashMap。由于LinkedHashMap是HashMap的子类,所以Li...

2018-03-18 11:37:10 163

原创 Android 消息机制源码分析

概述Android 的消息机制主要是指 Handler 的运行机制。Android 规定只有主线程可以访问 UI ,子线程中无法访问 UI。但是主线程中不建议进行耗时操作,因为这会引起 ANR。 系统为什么不允许子线程中访问 UI? 如果多线程并发访问,UI 控件处于不可控制的状态。如果对 UI 控件的访问上锁,首先上锁机制会让 UI 访问的逻辑变得复杂;其次会降低 UI 的访问效率,因为...

2018-03-09 16:30:41 148

原创 Android 消息机制—ThreadLocal

ThreadLocal:一般来说,当某些数据是以线程为作用域并且不同线程具有不同的数据副本的时候,可以考虑采用 ThreadLocal。ThreadLocal并不是一个thread,而是Thread的局部变量。是一个线程内部的数据存储类,通过它可以在指定的线程中存储数据,数据存储以后,只有在指定线程中可以获取到存储的数据,其他线程则无法获取。当使用ThreadLocal维护变量时,ThreadLo...

2018-03-08 15:24:01 185

原创 Android属性动画进阶——插值器 Interpolator

InterpolatorInterpolator就是我们平时说的插值器。插值器什么意思呢?看到这三个字还真是不太好理解它到底干嘛用的。其实它就是控制动画的变化速率的。怎么控制?根据动画的时间完成度计算动画完成度。还是不懂?比如:我们一张图片沿Y正方向平移1200像素,时间是2000毫秒。如果是匀速平移,时间在1000秒的时候时间完成度是0.5,动画完成度也是0.5,那么位移应该是0.5*120...

2018-03-06 14:54:47 457

原创 Java基础——抽象类和接口总结

抽象类:1、什么是抽象类?用关键字 abstract 修饰的类是抽象类。也可以说含有抽象方法的类称为抽象类。2、什么是抽象方法?用 abstract 关键字修饰,只有声明,没有具体实现的方法称为抽象方法。3、为什么使用抽象类?如果一个类没有足够的信息去描述一个具体的对象,需要其他的类来补充才能描述一个具体的对象,可以使用抽象类。比如,衣服这个类,我们不能具体说明衣服这个对象是什么样子,需要我们用裤...

2018-03-06 14:51:21 161

原创 Java基础——内部类总结

内部类:a、定义在其他类内部的类称为内部类,包含内部类的类称为外部类。b、内部类可以比外部类多使用三个修饰符:private、protected、static。c、编译一个含有内部类的外部类Java文件时,会生成两个 class 文件,一个是 Outter.class、一个是 Outter&Innter.class 文件。d、内部类分为成员内部类,局部内部类,静态内部类,匿名内部类。成员内...

2018-03-06 14:50:44 110

原创 Java基础——Set总结

集合可以保存数量不确定的数据以及具有映射关系的数据。数组的长度是固定的,不过集合只可以保存对象(对象的指引),而数组可以保存基本数据类型和对象。set:无序,不可重复集合:HashSet。HashSet:1、概述:向一个 HashSet 集合中存入一个元素时, HashSet 会调用该对象的 hashCode()方法得到该对象的 hashCode 值,然后根据 hashCode 值决定该对象在 H...

2018-03-06 14:48:27 348

原创 Java基础——List总结

List 概述:1、List :一个元素有序、可重复的集合。集合中每个元素都有其对应的顺序索引。List 集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。下面示例是 List 的用法。我们可以直接通过 add 方法添加元素,使用 add 方法的时候也可以根据索引值将数据插入特定位置;可以通过 set 方法修改指定索引值位置的元素;可以获取指定元素的索引值。2、List是根据 equal...

2018-03-06 14:45:36 240

原创 Java基础——Map总结

Map 概述:Map 用于有映射关系的数据,以 key-value 的形式保存。key 和 value 可以是任何类型的数据。1、key:key 是不允许重复的,意思就是同一个 Map 对象的任何两个 key 通过 equals 方法比较后应该返回false。如果我们把一个 Map 集合中所有的 key 放在一起看,它们就组成了一个 Set 集合(所有的 key 是没有顺序的,而且 key 是不可...

2018-03-06 14:39:54 240

原创 Android属性动画基础篇

1、什么是属性动画简单来说就是通过改变对象属性而形成的动画效果。2、为什么使用属性动画我们知道,在属性动画之前,Android 提供了视图动画(view Animation),而视图动画又分为帧动画(Frame Animation)和补间动画(Tween Animation)。帧动画就像我们看的影片一样,是一系列图片连贯起来播放形成的动画;补间动画是在针对 view 的一些操作...

2018-02-11 12:01:32 207

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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