ES2015提出了Promise,同时基于Promise的异步开发将开发者中回调地狱中解救出来。但在没有原生支持的环境下,需要借助Promise/A+之类的库来实现Promi...
ES2015提出了Promise,同时基于Promise的异步开发将开发者中回调地狱中解救出来。但在没有原生支持的环境下,需要借助Promise/A+之类的库来实现Promi...
传统的JavaScript异步通常基于回调实现,但回调方式有两个重要的缺点: 不便于调试:由于回调函数是基于事件队列实现的,当回调方法条用时,其外部调用函数并不在函数执行栈中...
在上一篇博客CSS3 3D相册一文中可以看到,实现该3D效果的关键在于: 利用transform改变各个元素位置 利用transition增加动态效果 利用perspecti...
利用CSS3中的animation,可以实现很多很炫的效果。今天就来利用animation属性完成如上图所示的加载效果。 1 基本构图 首先来完成基本的构图: 可以将上述图形...
今天来做一个基于CSS3 3D属性的3D相册效果。 1 基本布局 首先来完成基本布局,从效果图中可以看到,所有图片一开始均位于同一位置,然后经过不同的角度的旋转以及平移到不同...
由于JavaScript不是典型的面向对象语言,因而在实现一些经典的设计模式上也与一般语言存在差异,本文主要介绍在JavaScript中如何实现常用的设计模式。 1. 单例模...
在JavaScript中,函数原型链是最强大也是最容易让人迷惑的特性。长期以来对于prototype和__proto__的一知半解导致在实际开发中经常遇到难以排查的问题,所以...
前端页面开发中经常需要实现消息气泡样式,比如: 实际上上述两种效果实现起来,并不复杂,接下来我们就来实战一下。 1. 构建消息框 消息框主体很简单,一个div,设置一下背景颜...
1. 水平居中 1.1. transform居中 通过transform居中的核心思想是让居中元素先通过margin-left属性向右移动50%,然后再利用transform...
1. float布局 最简单的三栏布局就是利用float进行布局。首先来绘制左、右栏: 此时可以得到左右两栏分布: 接下来再来看中间栏如何处理。我们知道对于float元素,其...
1 addrinfo addrinfo结构内容如下: 1.1 ai_family ai_family指定了地址族,可取值如下: 1.2 ai_socketype 1.3 ai...
上一篇博客我们介绍了InstantRun的初始化逻辑,接下来我们来看下在运行时阶段,InstantRun是如何加载修改的代码的。 上一篇博客的末尾我们介绍了InstantRu...
Android Studio 2.0开始支持 Instant Run 特性, 使得在开发过程中能快速将代码变化更新到设备上。之前,更新代码之后需要先编译一个完整的新Apk,卸...
最近被keep keepnames keepclassmembers等几个混淆规则搞得晕头转向,看起来虽然简单,但用起来却经常跟自己预想的一样。所以决定放弃看他人总结的博客,...
volatile关键字就是Java中提供的另一种解决可见性和有序性问题的方案。对于原子性,需要强调一点,也是大家容易误解的一点:对volatile变量的单次读/写操作可以保证...
1 线程的状态 Java中线程中状态可分为五种:New(新建状态),Runnable(就绪状态),Running(运行状态),Blocked(阻塞状态),Dead(死亡状态)...
Synchronized是Java中实现进程同步最简单的一种方式,Synchronized主要有以下三个作用: 保证互斥性 保证可见性 保证顺序性 接下来我们就来看下Sync...
并发编程是Java程序员最核心的技能之一,同时也是掌握难度最大的一部分。我们都知道Java中提供了各种异步机制,但无论是notify wait、synchronized...
上一篇博客中,我们提到AQS的队列管理是基于CLH锁队列实现的,所以首先我们来看下CLH锁队列。 1 CLH锁队列 CLH锁队列本质上是一个基于链表的FIFO自旋锁队列,队列...