FengZH的博客

  • 首页

  • 标签

  • 分类

  • 归档

Trie 树(前缀树)

发表于 2019-07-30 | 分类于 数据结构

简介

Trie 树,又叫字典树、前缀树、单词查找树,是一种多叉树结构。如下图:

阅读全文 »

类的加载机制

发表于 2019-07-29 | 分类于 Java

类加载过程

当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过加载、连接(包括验证、准备、解析)、初始化这几个步骤来对该类进行加载。如无意外,JVM通常会连续完成这几个步骤,所以这几个步骤统称为类加载或类初始化。

阅读全文 »

EventBus 源码分析

发表于 2019-07-28 | 更新于 2020-02-04 | 分类于 Android

前言

EventBus 是一款针对 Android 优化的发布-订阅事件总线。它简化了应用程序内各组件间的通信,开销小,代码更简洁,以及将发送者和接受者解耦。

本文将从源码的角度分析 EventBus 的实现原理,分析版本为 EventBus-3.0.0。

阅读全文 »

okio 的使用及源码分析

发表于 2019-07-22 | 分类于 Android

简介

okio 补充了 java.io 和 java.nio 的内容,使得数据访问、存储和处理更加便捷。本文将简单介绍一下 okio 的使用以及基于 okio-1.17.0 版本,对 okio 的源码进行分析,最后总结一下 okio 的优点。

阅读全文 »

二叉树的 dfs 和 bfs(java 实现)

发表于 2019-07-21 | 分类于 数据结构

定义

二叉树的 dfs

dfs(Depth-First-Search),即深度优先遍历。从根开始,一路往下遍历,遍历到底再返回,找到下一未访问的点,继续往下遍历,直到所有点都遍历完毕。如果是先访问左孩子的话,和前序遍历是一样的。

阅读全文 »

okhttp3源码分析(三):复用连接池

发表于 2019-07-19 | 分类于 Android

前言

向服务器发起请求时,header 部分如果有 Connection: keep-alive,表示客户端和服务器之间保存长连接,这个连接是可以复用的。长连接在 HTTP/1.1 中默认开启。

连接的复用可以提高性能。没有连接复用的话,发起 http 请求时要先建立 TCP 连接,然后传递数据,最后再释放连接。如果同一个客户端在某段时间进行频繁的请求操作,这时频繁的创建和释放连接会导致性能低下。而如果可以连接复用,那么在 timeout 空闲时间内,连接不会关闭,这样就可以减少连接的创建和释放,大幅提高性能。

在 okhttp 中,也有一个复用连接池 ConnectionPool,可以进行连接复用。本文将会从源码分析 okhttp 的复用连接池,以下代码基于 okhttp-3.10.0。

阅读全文 »

okhttp3源码分析(二):五大拦截器

发表于 2019-07-18 | 更新于 2019-07-19 | 分类于 Android

前言

拦截器是 okhttp 的精髓,okhttp 的网络请求过程其实就是通过一条拦截器链来完成的,这体现了责任链模式。本文将分析 okhttp 拦截链中各拦截器的作用,代码基于 okhttp-3.10.0。

阅读全文 »

okhttp3源码分析(一):网络请求过程

发表于 2019-07-18 | 更新于 2019-07-19 | 分类于 Android

前言

okhttp作为一个强大的网络请求框架,网络请求是它的核心。okhttp的网络请求有两种:同步请求和异步请求。本文将基于okhttp-3.10.0分析这两种请求的过程。

阅读全文 »

Glide源码分析:图片加载过程

发表于 2019-07-16 | 分类于 Android

前言

本文将针对Glide的图片加载过程,从对最简单的Glide.with(this).load(url).into(imageView)出发,对Glide的源码进行分析,以下代码基于Glide-4.9.0。

阅读全文 »

LeetCode 148题:排序链表(快排和归并排序)

发表于 2019-07-16 | 分类于 算法

题目描述

在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。

阅读全文 »
1…345…9
FengZH

FengZH

阳光总在风雨后!坚持就是胜利!
82 日志
6 分类
33 标签
GitHub E-Mail
© 2019 – 2020 FengZH
|
0%