08 2017 档案
摘要:【深入Java虚拟机】之八:Java垃圾收集机制 对象引用 Java中的垃圾回收一般是在Java堆中进行,因为堆中几乎存放了Java中所有的对象实例。谈到Java堆中的垃圾回收,自然要谈到引用。在JDK1.2之前,Java中的引用定义很很纯粹:如果reference类型的数据中存储的数值代表的是另外
阅读全文
摘要:【深入Java虚拟机】之七:Javac编译与JIT编译 编译过程 不论是物理机还是虚拟机,大部分的程序代码从开始编译到最终转化成物理机的目标代码或虚拟机能执行的指令集之前,都会按照如下图所示的各个步骤进行: 其中绿色的模块可以选择性实现。很容易看出,上图中间的那条分支是解释执行的过程(即一条字节码一
阅读全文
摘要:【深入Java虚拟机】之六:Java语法糖 语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家Peter.J.Landin发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。Java中最常用的语法糖主要有泛型、变长参数、条件编
阅读全文
摘要:【深入Java虚拟机】之五:多态性实现机制——静态分派与动态分派 方法解析 Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址。这个特性给Java带来了更强大的动态扩展能力,使得可以在类运行期间才能确
阅读全文
摘要:【深入Java虚拟机】之三:类初始化 类初始化是类加载过程的最后一个阶段,到初始化阶段,才真正开始执行类中的Java程序代码。虚拟机规范严格规定了有且只有四种情况必须立即对类进行初始化: 遇到new、getstatic、putstatic、invokestatic这四条字节码指令时,如果类还没有进行
阅读全文
摘要:【深入Java虚拟机】之四:类加载机制 类加载过程 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。它们开始的顺序如下图所示: 其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初
阅读全文
摘要:【深入Java虚拟机】之四:类加载机制 类加载过程 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。它们开始的顺序如下图所示: 其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初
阅读全文
摘要:【深入Java虚拟机】之二:Class类文件结构 平台无关性 Java是与平台无关的语言,这得益于Java源代码编译后生成的存储字节码的文件,即Class文件,以及Java虚拟机的实现。不仅使用Java编译器可以把Java代码编译成存储字节码的Class文件,使用JRuby等其他语言的编译器也可以把
阅读全文
摘要:http://liuwangshu.cn/java/jvm/1-runtime-data-area.html 前言 本来计划要写Android内存优化的,觉得有必要在此之前介绍一下Java虚拟机的相关知识,Java虚拟机也并不是三言两语能够介绍完的,因此开了Java虚拟机系列,这一篇文章我们来学习J
阅读全文
摘要:Java多线程系列--“JUC线程池”06之 Callable和Future Callable 和 Future 简介 Callable 和 Future 是比较有趣的一对组合。当我们需要获取线程的执行结果时,就需要用到它们。Callable用于产生结果,Future用于获取结果。 1. Calla
阅读全文
摘要:Java多线程系列--“JUC线程池”04之 线程池原理(三) 本章介绍线程池的生命周期。在"Java多线程系列--“基础篇”01之 基本概念"中,我们介绍过,线程有5种状态:新建状态,就绪状态,运行状态,阻塞状态,死亡状态。线程池也有5种状态;然而,线程池不同于线程,线程池的5种状态是:Runni
阅读全文
摘要:Java多线程系列--“JUC线程池”02之 线程池原理(一) ThreadPoolExecutor简介 ThreadPoolExecutor是线程池类。对于线程池,可以通俗的将它理解为"存放一定数量线程的一个线程集合。线程池允许若个线程同时允许,允许同时运行的线程数量就是线程池的容量;当添加的到线
阅读全文
摘要:Java多线程系列--“JUC线程池”01之 线程池架构 概要 前面分别介绍了"Java多线程基础"、"JUC原子类"和"JUC锁"。本章介绍JUC的最后一部分的内容——线程池。内容包括:线程池架构图线程池示例 转载请注明出处:http://www.cnblogs.com/skywang12345/
阅读全文
摘要:Java多线程系列--“JUC锁”11之 Semaphore信号量的原理和示例 Semaphore简介 Semaphore是一个计数信号量,它的本质是一个"共享锁"。 信号量维护了一个信号量许可集。线程可以通过调用acquire()来获取信号量的许可;当信号量中有可用的许可时,线程能获取该许可;否则
阅读全文
摘要:Java多线程系列--“JUC锁”10之 CyclicBarrier原理和示例 CyclicBarrier简介 CyclicBarrier是一个同步辅助类,允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。因为该 barrier 在释放等待线程后可以重用,所
阅读全文
摘要:Java多线程系列--“JUC锁”09之 CountDownLatch原理和示例 CountDownLatch简介 CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 CountDownLatch和CyclicBarrier的区别(0
阅读全文
摘要:Java多线程系列--“JUC锁”08之 共享锁和ReentrantReadWriteLock ReadWriteLock 和 ReentrantReadWriteLock介绍 ReadWriteLock,顾名思义,是读写锁。它维护了一对相关的锁 — — “读取锁”和“写入锁”,一个用于读取操作,另
阅读全文
摘要:Java多线程系列--“JUC锁”06之 Condition条件 概要 前面对JUC包中的锁的原理进行了介绍,本章会JUC中对与锁经常配合使用的Condition进行介绍,内容包括:Condition介绍Condition函数列表Condition示例转载请注明出处:http://www.cnblo
阅读全文
摘要:Java多线程系列--“JUC锁”04之 公平锁(二) 释放公平锁(基于JDK1.7.0_40) 1. unlock() unlock()在ReentrantLock.java中实现的,源码如下: 说明:unlock()是解锁函数,它是通过AQS的release()函数来实现的。在这里,“1”的含义
阅读全文
摘要:【Java并发编程实战】 “J.U.C”:ReentrantLock之一简介 ReentrantLock介绍 ReentrantLock是一个可重入的互斥锁,又被称为“独占锁”。 顾名思义,ReentrantLock锁在同一个时间点只能被一个线程锁持有;而可重入的意思是,ReentrantLock锁
阅读全文
摘要:【Java并发编程实战】 “J.U.C”:锁,lock 在java中有两种方法实现锁机制,一种是在前一篇博客中(【java7并发编程实战】 线程同步机制:synchronized)介绍的synchronized,而另一种是比synchronized更加强大和领过的Lock。Lock确保当一个线程位于
阅读全文
摘要:根据修改的数据类型,可以将JUC包中的原子操作类可以分为4类。 1. 基本类型: AtomicInteger, AtomicLong, AtomicBoolean ;2. 数组类型: AtomicIntegerArray, AtomicLongArray, AtomicReferenceArray
阅读全文
摘要:Java多线程系列--“基础篇”11之 生产消费者问题 概要 本章,会对“生产/消费者问题”进行讨论。涉及到的内容包括:1. 生产/消费者模型2. 生产/消费者实现 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3480016.html 1. 生产/消费
阅读全文
摘要:Java多线程系列--“基础篇”10之 线程优先级和守护线程 概要 本章,会对守护线程和线程优先级进行介绍。涉及到的内容包括:1. 线程优先级的介绍2. 线程优先级的示例3. 守护线程的示例 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3479982.
阅读全文
摘要:Java多线程系列--“基础篇”08之 join() 概要 本章,会对Thread中join()方法进行介绍。涉及到的内容包括:1. join()介绍2. join()源码分析(基于JDK1.7.0_40)3. join()示例 转载请注明出处:http://www.cnblogs.com/skyw
阅读全文
摘要:Java多线程系列--“基础篇”06之 线程让步 概要 本章,会对Thread中的线程让步方法yield()进行介绍。涉及到的内容包括:1. yield()介绍2. yield()示例3. yield() 与 wait()的比较 转载请注明出处:http://www.cnblogs.com/skyw
阅读全文
摘要:Java多线程系列--“基础篇”05之 线程等待与唤醒 概要 本章,会对线程等待/唤醒方法进行介绍。涉及到的内容包括:1. wait(), notify(), notifyAll()等方法介绍2. wait()和notify()3. wait(long timeout)和notify()4. wai
阅读全文
摘要:【Java并发编程实战】 synchronized 在我们的实际应用当中可能经常会遇到这样一个场景:多个线程读或者、写相同的数据,访问相同的文件等等。对于这种情况如果我们不加以控制,是非常容易导致错误的。在java中,为了解决这个问题,引入临界区概念。所谓临界区是指一个访问共用资源的程序片段,而这些
阅读全文
摘要:Java多线程系列--“基础篇”02之 常用的实现多线程的两种方式 概要 本章,我们学习“常用的实现多线程的2种方式”:Thread 和 Runnable。之所以说是常用的,是因为通过还可以通过java.util.concurrent包中的线程池来实现多线程。关于线程池的内容,我们以后会详细介绍;现
阅读全文
摘要:【java并发编程实战】 线程基本概念 线程状态图 说明:线程共包括以下5种状态。1. 新建状态(New) : 线程对象被创建后,就进入了新建状态。例如,Thread thread = new Thread()。2. 就绪状态(Runnable): 也被称为“可执行状态”。线程对象被创建后,其它线程
阅读全文
摘要:Java基础知识你知道多少? Java特性 Java三大特性:封装,继承,多态 Java 抽象类与接口 Java 浅拷贝和深拷贝 Java static和final Java 内部类、静态内部类、匿名内部类 Java 强制类型转换 java 实现多重继承 Java - equals方法 Java 字
阅读全文
摘要:Java提高篇(三四) fail-fast机制 在JDK的Collection中我们时常会看到类似于这样的话: 例如,ArrayList: 注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器会尽最大努力抛出 ConcurrentMod
阅读全文
摘要:Java提高篇(三三) Map总结 一、Map概述 首先先看Map的结构示意图 Map:“键值”对映射的抽象接口。该映射不包括重复的键,一个键对应一个值。 SortedMap:有序的键值对接口,继承Map接口。 NavigableMap:继承SortedMap,具有了针对给定搜索目标返回最接近匹配项
阅读全文
摘要:Java提高篇(三二) List总结 前面LZ已经充分介绍了有关于List接口的大部分知识,如ArrayList、LinkedList、Vector、Stack,通过这几个知识点可以对List接口有了比较深的了解了。只有通过归纳总结的知识才是你的知识。所以下面LZ就List接口做一个总结。推荐阅读:
阅读全文
摘要:Java提高篇(三一) Stack 在Java中Stack类表示后进先出(LIFO)的对象堆栈。栈是一种非常常见的数据结构,它采用典型的先进后出的操作方式完成的。每一个栈都包含一个栈顶,每次出栈是将栈顶的数据取出,如下: Stack通过五个操作对Vector进行扩展,允许将向量视为堆栈。这个五个操作
阅读全文
摘要:java提高篇(三十) Iterator 迭代其实我们可以简单地理解为遍历,是一个标准化遍历各类容器里面的所有对象的方法类,它是一个很典型的设计模式。Iterator模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构。 对于这两种方式
阅读全文
摘要:Java提高篇(二八) TreeSet 与HashSet是基于HashMap实现一样,TreeSet同样是基于TreeMap实现的。在《Java提高篇(二七) TreeMap》中LZ详细讲解了TreeMap实现机制,如果客官详情看了这篇博文或者多TreeMap有比较详细的了解,那么TreeSet的实
阅读全文
摘要:红黑树(一)之 原理和算法详细介绍 R-B Tree简介 R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。 红黑树的特性:(1)每个节点或者是黑色,或者是红色。(2)根节
阅读全文
摘要:Java提高篇(二七) TreeMap TreeMap的实现是红黑树算法的实现,所以要了解TreeMap就必须对红黑树有一定的了解,其实这篇博文的名字叫做:根据红黑树的算法来分析TreeMap的实现,但是为了与Java提高篇系列博文保持一致还是叫做TreeMap比较好。通过这篇博文你可以获得如下知识
阅读全文
摘要:Java提高篇(二六) hashCode hashCode的作用 要想了解一个方法的内在原理,我们首先需要明白它是干什么的,也就是这个方法的作用。在讲解数组时(java提高篇(十八) 数组),我们提到数组是java中效率最高的数据结构,但是“最高”是有前提的。第一我们需要知道所查询数据的所在位置。第
阅读全文
摘要:HashMap多线程并发问题分析 多线程put后可能导致get死循环 从前我们的Java代码因为一些原因使用了HashMap这个东西,但是当时的程序是单线程的,一切都没有问题。后来,我们的程序性能有问题,所以需要变成多线程的,于是,变成多线程后到了线上,发现程序经常占了100%的CPU,查看堆栈,你
阅读全文
摘要:java提高篇(二四) HashSet 一、定义 HashSet继承AbstractSet类,实现Set、Cloneable、Serializable接口。其中AbstractSet提供 Set 接口的骨干实现,从而最大限度地减少了实现此接口所需的工作。Set接口是一种不包括重复元素的Collect
阅读全文
摘要:java提高篇(二五) HashTable 在java中与有两个类都提供了一个多种用途的hashTable机制,他们都可以将可以key和value结合起来构成键值对通过put(key,value)方法保存起来,然后通过get(key)方法获取相对应的value值。一个是前面提到的HashMap,还有
阅读全文
摘要:java提高篇(二三) HashMap HashMap也是我们使用非常多的Collection,它是基于哈希表的 Map 接口的实现,以key-value的形式存在。在HashMap中,key-value总是会当做一个整体来处理,系统会根据hash算法来来计算key-value的存储位置,我们总是可
阅读全文
摘要:java提高篇(二二) LinkedList 一、概述 LinkedList与ArrayList一样实现List接口,只是ArrayList是List接口的大小可变数组的实现,LinkedList是List接口链表的实现。基于链表实现的方式使得LinkedList在插入和删除时更优于ArrayLis
阅读全文
摘要:java提高篇(二一) ArrayList 一、ArrayList概述 ArrayList是实现List接口的动态数组,所谓动态就是它的大小是可变的。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。 每个
阅读全文
摘要:java提高篇(二十) 集合大家族 在编写java程序中,我们最常用的除了八种基本数据类型,String对象外还有一个集合类,在我们的的程序中到处充斥着集合类的身影!java中集合大家族的成员实在是太丰富了,有常用的ArrayList、HashMap、HashSet,也有不常用的Stack、Queu
阅读全文
摘要:java提高篇(十八) 数组之一:认识JAVA数组 一、什么是数组 数组?什么是数组?在我印象中的数组是应该这样的:通过new关键字创建并组装他们,通过使用整形索引值访问它的元素,并且它的尺寸是不可变的! 但是这只是数组的最表面的东西!深一点?就是这样:数组是一个简单的复合数据类型,它是一系列有序数
阅读全文
摘要:java提高篇(十六) 异常(一) 一、为什么要使用异常 首先我们可以明确一点就是异常的处理机制可以确保我们程序的健壮性,提高系统可用率。虽然我们不是特别喜欢看到它,但是我们不能不承认它的地位,作用。有异常就说明程序存在问题,有助于我们及时改正。在我们的程序设计当做,任何时候任何地方因为任何原因都有
阅读全文
摘要:java提高篇(十四) 字符串 首先我们要明确,String并不是基本数据类型,而是一个对象,并且是不可变的对象。查看源码就会发现String类为final型的(当然也不可被继承),而且通过查看JDK文档会发现几乎每一个修改String对象的操作,实际上都是创建了一个全新的String对象。 字符串
阅读全文
摘要:java提高篇(十三) equals()方法总结 equal和==区别 ==比较对象基于内存引用,两个引用完全相同返回true Java 语言里的 equals方法其实是交给开发者去覆写的,让开发者自己去定义满足什么条件的两个Object是equal的。 所以我们不能单纯的说equals到底比较的是
阅读全文
摘要:java提高篇(九) 实现多重继承 接口 多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而我们知道Java为了保证数据安全,它只允许单继承。有些时候我们会认为如果系统中需要使用多重继承往往都是糟糕的设计,这个时候我们往往需要思考的不是怎么使用多重继承,而是您的设计是否存在问题.但
阅读全文
摘要:java提高篇(十一) 强制类型转换 在java中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论的后者,也就是引用数据类型的强制类型转换。 在Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需要强制转换。因为子类拥有比父类更多的属性、更强的功能,所以父类
阅读全文
摘要:java提高篇(八) 详解内部类 概念 可以将一个类的定义放在另一个类的定义内部,这就是内部类。 为什么要使用内部类?在《Think in java》中有这样一句话:使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没
阅读全文
摘要:java提高篇(七) 关键字static static 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个“伪全局”的概念,在Java中static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,当然也可以修饰代码块。 Java把内存分为栈内存和堆内存,其中栈内存
阅读全文
摘要:一看就懂的,java深拷贝浅拷贝 将一个对象的引用复制给另外一个对象,一共有三种方式。第一种方式是直接赋值,第二种方式是浅拷贝,第三种是深拷贝。所以大家知道了哈,这三种概念实际上都是为了拷贝对象啊。 1、直接赋值 好,下面我们先看第一种方式,直接赋值。在Java中,A a1 = a2,我们需要理解的
阅读全文
摘要:java提高篇(五) 抽象类与接口 抽象类 抽象类体现了数据抽象的思想,是实现多态的一种机制。它定义了一组抽象的方法,至于这组抽象方法的具体表现形式有派生类来实现。同时抽象类提供了继承的概念,它的出发点就是为了继承,否则它没有存在的任何意义。所以说定义的抽象类一定是用来继承的,同时在一个以抽象类为节
阅读全文
摘要:java提高篇(一) 理解java的三大特性之封装 概念: 封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的
阅读全文
摘要:TCP详解(3):重传、流量控制、拥塞控制…… 数据传输 在TCP的数据传送状态,很多重要的机制保证了TCP的可靠性和强壮性。它们包括:使用序号,对收到的TCP报文段进行排序以及检测重复的数据;使用校验和来检测报文段的错误;使用确认和计时器来检测和纠正丢包或延时。 在TCP的连接创建状态,两个主机的
阅读全文
摘要:TCP详解(2):三次握手与四次挥手 TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接,就好像你给别人打电话,必须等线路接通了、对方拿起话筒建立了连接才能相互通话。 TCP三次握手的过程为: 第一
阅读全文
摘要:TCP详解(1):简介与数据包 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议 应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据
阅读全文
摘要:网络 TCP&UDP知识 TCP基础知识(一)简介与数据包 TCP基础知识(二)三次握手与四次挥手 TCP基础知识(三)重传、流量控制、拥塞控制
阅读全文
摘要:从Android代码中来记忆23种设计模式 1 单例模式 单例模式可以说是最容易理解的模式了,也是应用最广的模式之一,先看看定义吧。 定义:确保单例类只有一个实例,并且这个单例类提供一个函数接口让其他类获取到这个唯一的实例。 什么时候需要使用单例模式呢:如果某个类,创建时需要消耗很多资源,即new出
阅读全文
摘要:Java虚拟机(一)结构原理与运行时数据区域 1.2 Java虚拟机执行流程 当我们执行一个Java程序时,它的执行流程是怎样的呢?如下图所示 从上图可以看到Java虚拟机与java语言没有什么必然联系,它只与特定的二进制文件:Class文件有关。 2.Java虚拟机结构 这里所讲的体系结构,是指的
阅读全文
摘要:Application Not Responding 在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭
阅读全文
摘要:Android 内存溢出解决方案(OOM) 整理总结 在内存引用上做些处理,常用的有软引用、弱引用 在内存中加载图片时直接在内存中作处理,如:边界压缩 动态回收内存 优化Dalvik虚拟机的堆内存分配 自定义堆内存大小 内存优化核心思想:减少内存使用,能不new的不new,能少分配的少分配。因为分配
阅读全文
摘要:[译]Android内存泄漏的八种可能(上) Android防止内存泄漏的八种方法(下)。 Static Activities 在类中定义了静态Activity变量,把当前运行的Activity实例赋值于这个静态变量。如果这个静态变量在Activity生命周期结束后没有清空,就导致内存泄漏。因为st
阅读全文
摘要:Android内存泄露——全解析和处理办法 内存泄露 说到内存泄露,就不得不提到内存溢出,这两个比较容易混淆的概念,我们来分析一下。 内存泄露:程序在向系统申请分配内存空间后(new),在使用完毕后未释放。结果导致一直占据该内存单元,我们和程序都无法再使用该内存单元,直到程序结束,这是内存泄露。 内
阅读全文
摘要:Android控件TextView的实现原理分析 为什么要规定所有与UI相关的操作都必须在主线程中执行呢?我们知道,这些与UI相关的操作都涉及到大量的控件内部状态以及需要访问窗口的绘图表面,也就是说,要大量地访问控件类的成员变量以及窗口绘图表面里面的图形缓冲区,因此,如果不将这些与UI相关的操作限定
阅读全文
摘要:TextView源码解析 绘制过程
阅读全文
摘要:Android富文本编辑器(一):基础知识 目前主流的基于Android富文本开发方式思路如下: 基于TextView图文混排 使用方式: TextView textView = new TextView(context); textView.setText(Html.fromHtml(“xxxxx
阅读全文
摘要:浅谈 MVP in Android https://www.jianshu.com/p/4736ebe1114b 鸿洋大神写的,MVP模式的基础介绍 传统MVP的弊端: MVP需要创建太多的类和接口,并且每次通信都需要繁琐的通过接口传递信息 软解决,那就要动动脑子,稍微优雅的解决了 对于逻辑简单的页
阅读全文
摘要:Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM) 彻底理解JAVA动态代理 class文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,
阅读全文
摘要:Android网络编程(八)源码解析OkHttp后篇[复用连接池] 1.引子 在了解OkHttp的复用连接池之前,我们首先要了解几个概念。 TCP三次握手 通常我们进行HTTP连接网络的时候我们会进行TCP的三次握手,然后传输数据,然后再释放连接。 TCP三次握手的过程为: 第一次握手:建立连接。客
阅读全文
摘要:Okhttp-wiki 之 Interceptors 拦截器
阅读全文
摘要:Android核心分析之AMS App和AMS(SystemServer进程)还有zygote进程分属于三个独立的进程 App与AMS通过Binder进行IPC通信,AMS(SystemServer进程)与zygote通过Socket进行IPC通信。 打开一个APP Launcher Launche
阅读全文
摘要:最近博客: 最近放了很多只有链接的文章,基本上我都认真看了,但觉得看完还是要实践一下。 陆续会小总结下各个文章里的内容,在个人学习项目里给出个demo 个人学习项目:LLab 计划: 学习RxJava和缓存方面的内容 深一层地理解retrofit2,okhttp3,dagger2,Glide的源码
阅读全文
摘要:Android缓存学习入门 你不知道的Retrofit缓存库RxCache Android图片缓存之初识Glide Android高效加载大图、多图解决方案,有效避免程序OOM 【Android框架】深入浅出理解DiskLruCache的实现原理(上) Android DiskLruCache 源码
阅读全文
摘要:一种基于Glide图片加载框架的Android RichText实现
阅读全文
摘要:Android TextView中显示图片的4种方式
阅读全文
摘要:retrofit请求直接返回string 有个需求是直接用retrofit去get网页得到html,不创建对象。 用上面文章讲的方法,直接返回ResponseBody ICollection:
阅读全文
摘要:setUserVisibleHint-- fragment真正的onResume和onPause方法
阅读全文
摘要:取得手机屏幕大小DisplayMetrics的应用
阅读全文
摘要:知乎爬虫之2:爬虫流程设计(附赠爬出的数据库) 爬虫带你逛知乎(上篇) 如何更好的收藏和保存知乎上看到的精华内容? 如何对知乎内容进行爬虫? 如何用爬虫爬取知乎专栏信息? 【python爬虫】爬取知乎收藏夹内所有问题名称地址保存至Mysql 手把手教学 Android用jsoup解析html 初识J
阅读全文
摘要:https://www.kancloud.cn/alex_wsc/android-deep2/413386 http://wiki.jikexueyuan.com/project/deep-android-v2/activity.html
阅读全文
摘要:Glide的一些用法(一)(写了一下午,其实几乎涵盖完了,欢迎收藏) Android图片缓存之初识Glide
阅读全文

浙公网安备 33010602011771号