JackPeng

Keep on going never give up

Javascript中的undefined、null、""、0值和false的区别总结

在程序语言中定义的各种各样的数据类型中,我们都会为其定义一个”空值”或”假值”,比如对象类型的空值null,.NET Framework中数据库字段的空值DBNull,boolean类型的假值false等等。在JavaScript中也有很多种的”空值”和”假值”,那么它们都有什么共同点和不同点呢? 其实标题里面我已经列出了JavaScript中所有的”空值”和”假值”,除了boolean值...

JavaScript 的 this 原理

一、问题的由来 学懂 JavaScript 语言,一个标志就是理解下面两种写法,可能有不一样的结果。 ...

promise执行顺序总结

1、 const promise = new Promise((resolve, reject)=>{ console.log(1); resolve(); console.log(2); }) promise.then(()=>{ console.log(4); }) console.log(5); 运行结果是: 1,2,5,...

将cglib动态代理思想带入Android开发

动态代理在Android实际开发中用的并不是很多,但在设计框架的时候用的就比较多了,最近在看J2EE一些东西,像Spring,Hibernate等都有通过动态代理来实现方法增强、方法拦截等需要,通过代理的方式优雅的实现AOP编程。我们今天来看看这个代理究竟是什么样子,在Android开发中如何使用它,以及将cglib动态代理思想在Android中看看如何实现。 项目...

okhttp内核剖析

Android程序员面试宝典 okhttp源码特别特别复杂,类涉及较多,导致本文非常长,我相信没有几个人能把本文看完,所以特意录制了跟文章同步的视频。 自定义控件 一分钟实现贴纸功能 一分钟实现TextView高亮 一分钟实现新手引导页 一分钟实现ViewPager卡片 一分钟实现轮播图 一分钟实现GridView拖拽 一分钟实现底部导航栏 ...

Android 面试必备 - JVM 及 类加载机制

java 内存分区 参考博客 JVM所管理的内存分为以下几个运行时数据区:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区。 程序计数器(Program Counter Register) 一块较小的内存空间,它是当前线程所执行的字节码的行号指示器,字节码解释器工作时通过改变该计数器的值来选择下一条需要执行的字节码指令,分支、跳转、循环等基础功能都要依赖它来实现。每条...

LeakCanary 内存泄露监测原理研究

"Read the fucking source code" -- linus一句名言体现出了阅读源码的重要性,学习别人得代码是提升自己的重要途径。最近用到了LeakCanary,顺便看一下其代码,学习一下。 LeakCanary是安卓中用来检测内存泄露的小工具,它能帮助我们提早发现代码中隐藏的bug, 降低应用中内存泄露以及OOM产生的概率。...

Handler后台空闲线程IdleHandler

在Android中,我们可以处理Message,这个Message我们可以立即执行也可以delay 一定时间执行。Handler线程在执行完所有的Message消息,它会wait,进行阻塞,知道有心的Message到达。如果这样子,那么这个线程也太浪费了。MessageQueue提供了另一类消息,IdleHandler。 示例代码如下: package com.example.testh...

CSS position 属性总结

CSS的position总是属性很容易让人弄混~ 为了仔细区别它们,所以今天总结一下CSS的position属性~ 下面是总结内容~ 有疏漏、错误之处敬请指出!o(^▽^)o 一、简介 定义:position属性规定元素的定位类型。 说明:这个属性定义建立元素布局所用的定位机制。任何元素都可以定位,不过绝对定位或固定元素会生成一个块级框,而不...

Java中interrupt的使用

通常我们会有这样的需求,即停止一个线程。在java的api中有stop、suspend等方法可以达到目的,但由于这些方法在使用上存在不安全性,会带来不好的副作用,不建议被使用。具体原因可以参考Why is Thread.stop deprecated。 在本文中,将讨论中断在java中的使用。 中断在java中主要有3个方法,interrupt(),isInterrupt...