贾小昆的个人网站

贾小昆的个人网站

Jaqen's Personal Website

Android 性能分析工具 TraceView
在做应用启动、卡顿优化时,经常会用到 Android 性能分析工具 TraceView,这里简单介绍下 TraceView 的基础使用。 TraceView 是什么TraceView 是 Android SDK 内置的一个工具,它可以加载 trace 文件,用图形的形式展示代码的执行时间、次数及调用栈,便于我们分析。 生成 trace 文件trace 文件是 log 信息文件的一种,可以通过代码,Android Studio,或者 DDMS 生成。 使用代码生成 trace 文件在想要记录的地方调用 Debug.startMethodTracing("sample")...
程序员成长离不开的技能
很多人,在学生阶段习惯了被动、填鸭式学习,进入社会后,不知道如何去自我学习,严重限制了提升自己的知识和技能的机会。 在这个飞速发展的世界里,做一个终身学习者,自我学习的能力越强越好。 最近看了一本书《软技能: 代码之外的生存指南》,里面的一个主题,讲述了技术人员如何在新技术发展日新月异的世界里,如何快速高效学习技术,以下是我整理的「十步学习法」笔记,供大家参考。 十步学习法的基本思想就是: 要对自己要学的内容有个基本的了解:了解自己不知道什么就足矣。然后,利用这些信息勾勒出学习的范围,即需要学哪些内容,以及学成之后又会获得什么。依靠这些知识,你可以找出各种资源来帮助自己学习。最后,你们可...
如何使用 Python 爬取微信公众号文章
我比较喜欢看公众号,有时遇到一个感兴趣的公众号时,都会感觉相逢恨晚,想一口气看完所有历史文章。但是微信的阅读体验挺不好的,看历史文章得一页页的往后翻,下一次再看时还得重复操作,很是麻烦。 于是便想着能不能把某个公众号所有的文章都保存下来,这样就很方便自己阅读历史文章了。 话不多说,下面我就介绍如何使用 Python 爬取微信公众号所有文章的。 主要有以下步骤: 1 使用 Fiddler 抓取公众号接口数据 2 使用 Python 脚本获取公众号所有历史文章数据 3 保存历史文章 Fiddler 抓包Fiddler 是一款抓包工具,可以监听网络通讯数据,开发测试过程中非常有用,这里不多做介...
YUV 格式详解
一般的视频采集芯片输出的码流一般都是 YUV 格式数据流,后续视频处理也是对 YUV 数据流进行编码和解析。所以,了解 YUV 数据流对做视频领域的人而言,至关重要。 在介绍 YUV 格式之前,首先介绍一下我们熟悉的 RGB 格式。 RGBRGB 分别表示红(R)、绿(G)、蓝(B),也就是三原色,将它们以不同的比例叠加,可以产生不同的颜色。 比如一张 1920 * 1280 的图片,代表着有 1920 * 1280 个像素点。如果采用 RGB 编码方式,每个像素点都有红、绿、蓝三个原色,其中每个原色占用 8bit,每个像素占用 24bit,也就是 3 个字节。 那么,一张 1920 *...
Kotlin Koans 学习笔记
Kotlin Koans 是 Kotlin 官方推出的一系列 Kotlin 语法练习。 一共分为 6 个模块,每个模块若干任务,每个任务都有一系列单元测试,目标就是编码通过单元测试。 本文是在学习 Kotlin Koans 过程中将相关语法点做一个简单的记录。 IntroductionHello_World和大多数语言一样,第一个任务的名称就是 Hello World。这个任务很简单,就是要求 task0 函数返回一个字符串ok。 123fun task0(): String { return "OK"} Kotlin 中函数使用关键字fun声明,返回类型在...
Android 图片预览库封装
基于 PhotoView,增加手势旋转、拖动退出预览功能。 GitHub:PhotoViewEx 依赖在项目 build.gradle 中添加依赖 12345allprojects { repositories { maven { url "https://jitpack.io" } }} module 的 build.gradle 中添加依赖 123dependencies { implementation 'com.github.zywudev:PhotoViewEx:1.0.0' ...
OkHttp 源码分析(三):连接机制
前面两篇文章分别介绍了 OkHttp 的请求流程和缓存机制,最后这篇文章介绍 OkHttp 的连接机制,作为 OkHttp 源码分析的收尾。 建议将 OkHttp 的源码下载下来,使用 IDEA 编辑器可以直接打开阅读。我这边也将最新版的源码下载下来,进行了注释说明,有需要的可以直接从 Android open framework analysis 查看。 创建连接OkHttp 连接的创建是通过 StreamAllocation 对象统筹完成。 它主要用来管理两个角色: RealConnection:真正建立连接的对象,利用 Socket 建立连接。 ConnectionPool:连接...
OkHttp 源码分析(二):缓存机制
上一篇文章我们主要介绍了 OkHttp 的请求流程,这篇文章讲解一下 OkHttp 的缓存机制。 建议将 OkHttp 的源码下载下来,使用 IDEA 编辑器可以直接打开阅读。我这边也将最新版的源码下载下来,进行了注释说明,有需要的可以直接从 Android open framework analysis 查看。 在网络请求的过程中,一般都会使用到缓存,缓存的意义在于,对于客户端来说,使用缓存数据能够缩短页面展示数据的时间,优化用户体验,同时降低请求网络数据的频率,避免流量浪费。对于服务端来说,使用缓存能够分解一部分服务端的压力。 在讲解 OkHttp 的缓存机制之前,先了解下 Http...
OkHttp 源码分析(一):请求流程
这篇文章主要梳理一下 OkHttp 的请求流程,对 OkHttp 的实现原理有个整体的把握,再深入细节的实现会更加容易。 建议将 OkHttp 的源码下载下来,使用 IDEA 编辑器可以直接打开阅读。我这边也将最新版的源码下载下来,进行了注释说明,有需要的可以直接从 Android open framework analysis 查看。 基本使用我们先看一下 OkHttp 的基本使用。 12345678910111213141516171819202122232425262728293031// 1、创建 RequestRequest request = new Request.Buil...
Java 内部类总结
Java 中,可以将一个类定义在另一个类或者一个方法里面,这样的类称为内部类。 一般包含四种内部类:成员内部类、匿名内部类、局部内部类和静态内部类。 成员内部类成员内部类的定义位于另一个类的内部,形式如下: 1234567891011121314151617181920public class Outer { private String name; class Inner { Inner(){ name = "wuzy"; } private void displayNa...
avatar
贾小昆