w3cschool 编程狮,随时随地学编程
下载APP
|
登录
个人中心
首页
入门教程
编程课程
特色实战
畅学全站
超全面的技术学习笔记
开始阅读
下载APP,阅读更畅快
教程目录:
Android(安卓)
Android基础知识
Handler内存泄漏分析及解决
Android内存泄漏总结
Handler、Looper、Message、MessageQueue基础流程分析
Android性能优化
ListView详解
RecyclerView和ListView的异同
AsyncTask源码分析
插件化技术
自定义控件
事件分发机制
ANR问题
Art和Dalvik的区别
Android关于OOM的解决方案
Fragment
Activity&Fragment
SurfaceView
Android几种进程
APP启动过程
图片三级缓存
Bitmap的分析与使用
热修复的原理
DesignPattern(设计模式)
面向对象六大原则
单例模式
Builder模式
原型模式
简单工厂
策略模式
责任链模式
观察者模式
JavaSE(Java基础)
Java基础知识
Java中的内存泄漏
String源码分析
Java集合框架
ArrayList源码剖析
LinkedList源码剖析
Vector源码剖析
HashMap源码剖析
HashTable源码剖析
LinkedHashMap源码剖析
JVM(Java虚拟机)
JVM基础知识
JVM类加载机制
Java内存区域与内存溢出
垃圾回收算法
JavaConcurrent(Java并发)
Java并发基础知识
生产者和消费者问题
Thread和Runnable实现多线程的区别
线程中断
守护线程与阻塞线程
synchronized
多线程环境中安全使用集合API
实现内存可见的两种方法比较:加锁和volatile变量
死锁
可重入内置锁
NIO
DataStructure(数据结构)
数组
栈和队列
Algorithm(算法)
排序
查找
《剑指Offer》面试题
two-sum
InterviewExperience(面试经验)
Alibaba
美团
豌豆荚
蜻蜓FM
新浪微博
网易杭研
ReadingNotes(读书笔记)
ReadingNotes(读书笔记)
Network(网络)
Network(网络)
OperatingSystem(操作系统)
OperatingSystem(操作系统)
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录
Android(安卓)
Android基础知识
Handler内存泄漏分析及解决
Android内存泄漏总结
Handler、Looper、Message、MessageQueue基础流程分析
Android性能优化
ListView详解
RecyclerView和ListView的异同
AsyncTask源码分析
插件化技术
自定义控件
事件分发机制
ANR问题
Art和Dalvik的区别
Android关于OOM的解决方案
Fragment
Activity&Fragment
SurfaceView
Android几种进程
APP启动过程
图片三级缓存
Bitmap的分析与使用
热修复的原理
DesignPattern(设计模式)
面向对象六大原则
单例模式
Builder模式
原型模式
简单工厂
策略模式
责任链模式
观察者模式
JavaSE(Java基础)
Java基础知识
Java中的内存泄漏
String源码分析
Java集合框架
ArrayList源码剖析
LinkedList源码剖析
Vector源码剖析
HashMap源码剖析
HashTable源码剖析
LinkedHashMap源码剖析
JVM(Java虚拟机)
JVM基础知识
JVM类加载机制
Java内存区域与内存溢出
垃圾回收算法
JavaConcurrent(Java并发)
Java并发基础知识
生产者和消费者问题
Thread和Runnable实现多线程的区别
线程中断
守护线程与阻塞线程
synchronized
多线程环境中安全使用集合API
实现内存可见的两种方法比较:加锁和volatile变量
死锁
可重入内置锁
NIO
DataStructure(数据结构)
数组
栈和队列
Algorithm(算法)
排序
查找
《剑指Offer》面试题
two-sum
InterviewExperience(面试经验)
Alibaba
美团
豌豆荚
蜻蜓FM
新浪微博
网易杭研
ReadingNotes(读书笔记)
ReadingNotes(读书笔记)
Network(网络)
Network(网络)
OperatingSystem(操作系统)
OperatingSystem(操作系统)
关闭
MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }