自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(759)
  • 资源 (28)
  • 论坛 (2)
  • 收藏
  • 关注

原创 Android线程间通信

1.Handler机制runOnUiThread方法View.post方法2.HandlerThread3.IntentService4.AsyncTask参考:http://developer.android.com/reference/android/os/Handler.htmlhttps://developer.android.google.cn/reference/android/os/Handler.html

2020-11-29 16:09:11 5

原创 Android进程间通信

下图引用《Android开发艺术探索》的总结:https://developer.android.google.cn/guide/components/processes-and-threadsAndroid 多进程通信Android多进程实现,一个APP多个进程Android中的多进程模式Android进程间通信 - 几种方式的对比总结Android进程间通信的几种方式...

2020-11-29 16:00:04 3

原创 Windows查看指定端口被哪个进程占用

1.打开CMD命令行,输入 netstat -ano|findstr “端口号” 查看进程,不要漏掉双引号:netstat -ano|findstr "端口号"以查找 8989 端口为例,通过 Netstat 可以找到是 PID 为 31684 的进程占用了 8989 端口:2.使用Tasklist查看对于 PID 的进程名:tasklist|findstr "PID号"可以看到是 java.exe 进程占用了该端口:如果我们想结束该进程,可以在任务管理器(详细信息)内找到该进程,可直接

2020-11-29 15:17:23 12

原创 OkHttp原理解析之面试题分析

面试中通常是问些问题考察你对OkHttp的原理是否有深入理解。如何使用OkHttp发送网络请求并将结果更新至UI的方式使用AsyncTask + OkHttp的同步请求使用OkHttp的异步请求+runOnUiThread方法或者Handler可否介绍一下OkHttp的整个异步请求流程OkHttp对于网络请求都有哪些优化,如何实现的OkHttp框架中都用到了哪些设计模式单例模式:(建议用单例模式创建OkHttpClient)OkHttpClient, 可以通过 new OkHttp

2020-11-28 19:03:39 17

原创 OkHttp原理解析之请求服务器拦截器

五、请求服务器拦截器CallServerInterceptor,利用HttpCodec发出请求到服务器并且解析响应生成Response。先讲解一个新的请求头:Expect: 100-continue,这个请求头一般出现于上传大容量请求体或者需要验证服务器是否愿意接收请求体。即代表了客户端需要先询问服务器是否愿意接收请求体数据。OkHttp的做法:如果服务器允许则返回100,客户端继续发送请求体;如果服务器不允许则直接返回给用户。同时服务器也可能会忽略此请求头,一直无法读取应答,此时抛出超时异

2020-11-28 17:42:27 13

原创 OkHttp原理解析之连接拦截器

目标:DNS解析SSL握手与加密HTTP代理:普通代理与隧道代理SOCKS代理前置知识分析OkHttp的连接拦截器ConnectInterceptor之前,先来学习预备知识,包括代理和DNS。代理:不使用代理的情况(普通http请求)使用HTTP代理的情况(使用HTTP代理时又分为发送Http请求,发送Https请求的情况)使用SOCKS代理的情况DNSDNS原理下面进行详细讲解。代理普通http请求(即不使用代理)http请求报文:GET /v3/weathe

2020-11-28 17:39:25 21

原创 OkHttp原理解析之缓存拦截器

三、缓存拦截器CacheInterceptor,在发出请求前,先判断是否有命中的缓存。如果命中则可以不发请求,直接使用缓存着的响应(当然要经过一系列的验证来判断这个缓存着的响应是否的确可以直接使用)。 (只会存在Get请求的缓存,Post请求不会被缓存)步骤为:1、从文件缓存中获得对应请求的响应缓存2、创建CacheStrategy ,创建时会判断是否能够使用缓存或发起网络请求,在CacheStrategy 中存在两个成员:networkRequest与cacheResponse,分别代表需要发起网

2020-11-28 17:35:33 12

原创 OkHttp原理解析之桥接拦截器

二、桥接拦截器BridgeInterceptor,连接应用程序和服务器的桥梁,我们发出的请求将会经过它的处理才能发给服务器,比如设置请求内容长度,编码,gzip压缩,cookie等,获取响应后保存Cookie等操作。这个拦截器相对比较简单,功能总结起来就是:补全请求与响应后处理。补全请求头:请求头说明Content-Type请求体类型,如:application/x-www-form-urlencoded、multipart/form-dataContent-Length/

2020-11-28 17:32:38 6

原创 OkHttp原理解析之重试及重定向拦截器

一、重试及重定向拦截器第一个拦截器:RetryAndFollowUpInterceptor,主要就是完成两件事情:重试与重定向。重试请求阶段发生了 RouteException 或者 IOException会进行判断是否重新发起请求。RouteException:catch (RouteException e) { //todo 路由异常,连接未成功,请求还没发出去 if (!recover(e.getLastConnectException(), streamAllocation,

2020-11-28 17:31:21 14

原创 DNS域名解析系统

为什么需要DNS人们习惯使用主机名,比如www.yahoo.com、www.facebook.com等,但路由器喜欢数字格式的IP地址。需要DNS把主机名翻译为IP地址。DNS 的过程①用户主机上运行着DNS的客户端。Windows用户可以打开任务管理器,在服务那一栏可以看到名为DNS Client的运行着的后台服务。②浏览器从接收到的url中抽取出域名,就是访问的主机名,比如:www.baidu.com,并将这个主机名传送给DNS应用的客户端③DNS客户端向DNS服务器发送一份查询报文,报

2020-11-25 21:59:12 25

原创 计算机专业相关书籍

操作系统Operating Systems: Three Easy Pieces官方地址:http://pages.cs.wisc.edu/~remzi/OSTEP/作者: Remzi Arpaci-Dusseau / Andrea Arpaci-Dusseau豆瓣:Operating Systems豆瓣评分:9.7Operating Systems : Principles and Practice作者: Thomas Anderson / Michael Dahlin豆瓣:Operati

2020-11-25 17:52:14 23

原创 读书相关

1.读专业书最好多读几本,选领域内的评价比较好的几本都进行阅读,因为不同作者的视角和思考方式都不一样,可能那本比较适合别人,但是这本比较适合你。2.思考一个问题的一个比较好的方式是:从历史沿革开始讲,解决这个问题最初用的是什么方法,是如何实现的,解决了哪些问题,还剩下哪些问题没有解决(一个大的问题通常可以分为几个小的问题进行解决)。这个方法有什么缺点,针对这些缺点后来人们提出了什么新的解决方法进行改进。这样对这个问题有一个系统性的认识,知道了人们对这个问题都做过哪些一系列的探索,会有非常深刻的理解,不容

2020-11-25 17:35:45 19

原创 用户态与内核态

参考:内核态(内核空间)和用户态(用户空间)的区别和联系这个系列讲的也挺好的:Windows核心编程入门:7 用户态到内核态的穿越

2020-11-25 16:54:39 17

原创 DNS原理

DNS是:①一个由分层的DNS服务器实现的分布式数据库;②一个使得主机能够查询分布式数据库的应用层协议。DNS 服务器通常是运行 BIND (Berkeley lnternet Name Domain) 软件 [BIND 2012 ]的UNIX 机器。DNS 协议运行在 UDP 之上,使用 53 号端口。DNS 使用了大量的 DNS 服务器 ,它们以层次方式组织,并且分布在全世界范围内。没有一台 DNS 服务器拥有因特网上所有主机的映射。有 3 种类型的 DNS 服务器: 根 DNS 服务器、顶级域

2020-11-24 19:07:58 18

原创 OSI七层模型

七层模型只有最下三层有实体设备,上四层都是软件层面的表示了。各层的设备:1.网络层:路由器、防火墙(硬件防火墙)、3层交换机(开启路由功能)2.数据链路层:网卡、网桥、交换机3.物理层:中继器、集线器(HUB)、网线电缆铜缆传输过程:数据在应用层,表示层和会话层时属于高层数据,到了传输层数据被封装上TCP头部,到了网络层封装上一层IP包头,继续传输到数据链路层,数据被封装上一层LLC子层的头部和MAC子层的头部信息,然后通过物理层将数据通过电信线路传输出去,接收信息则与这个规则正好相反。防火墙根

2020-11-24 17:31:01 6

原创 Android的ServiceManager、SystemServiceManager、SystemServer、SystemService分析

ServiceManager、SystemServiceManager、SystemServer、SystemService十几个比较重要的类,他们之间是什么关系?下面进行源码分析。参考:ServiceManager,SystemServer,SystemServiceManager,SystemService—简述这个几个类的关系Android SystemServiceManager分析...

2020-11-24 16:38:28 8

原创 Android进程保活

1.进程优先级2.保活的原理3.保活的方式当然保活不是绝对保活,只是提高保活率,要想像微信/QQ一样做到绝对保活,必须得联系各个手机厂商加入白名单,否则不可能做到绝对保活。

2020-11-23 21:41:39 7

原创 一个完整的HTTPS请求过程

说说一个完整的HTTPS请求过程。

2020-11-22 15:56:08 41

原创 一个完整的HTTP请求过程

参考:一个完整的HTTP请求过程详细

2020-11-22 15:55:26 13

原创 从源码角度分析Handler核心机制

看代码不要什么都看,只需要看主线代码,主线代码逻辑掌握了再选择性的看细节代码。要知道学什么,该学到什么程度,不然就是什么都会一点,什么都不精。规划好路线:1、早点进大厂,评级(需要锻炼技术)2、创业(需要锻炼技术)3、转行一定要确定好边界,不要什么都做,APP开发涉及:Java基础、UI、四大组件、性能优化、NDK、开源框架、架构、数据结构与算法、设计模式等。做APP开发就想办法做好APP开发,不要想着深入研究Linux系统开发,人的精力是有限的,做好一个方向才会精进。...

2020-11-21 23:36:03 41 1

原创 为什么基于TCP的应用需要在应用层加入心跳包机制

TCP协议不是有keep-alive机制吗,那为什么基于TCP的应用还需要自己实现一套心跳包机制?参考:为什么基于TCP的应用需要心跳包(TCP keep-alive原理分析)

2020-11-20 17:06:45 11

原创 Android运行时注解和反射技术之事件分发框架EventBus

Android通过仿写EventBus组件通信框架 掌握运行时注解+反射及事件总线通信核心原理

2020-11-20 16:14:01 5

原创 Android编译时注解技术之依赖注入框架Butterknife

仿写ButterKnife框架核心功能 掌握编译时注解+注解处理器APT生成Java代码的技术Android进阶系列8-编译时注解框架ButterKnife浅析android手动编写ButterKnife编译时注解框架Android编译时技术的进阶实战打造全自动View注入框架ButterKnife【Android进阶】——编译时技术实战,打造全自动注入框架Butter knife...

2020-11-20 16:11:43 9

原创 Java线程与线程池原理

线程池策略corePoolSize:核心线程数;maximunPoolSize:最大线程数每当有新的任务加入到线程池时,第一步: 先判断线程池中当前线程数量是否达到了corePoolSize,若未达到,则新建线程运行此任务,且任务结束后将该线程保留在线程池中,不做销毁处理,若当前线程数量已达到corePoolSize,则进入下一步;第二步: 判断工作队列(workQueue)是否已满,未满则将新的任务提交到工作队列中,满了则进入下一步;第三步: 判断线程池中的线程数量是否达到了maxumunPo

2020-11-14 15:46:25 18

原创 Java线程与操作系统线程

Java线程在早期的Classic虚拟机上(JDK1.2以前),是基于一种被称为“绿色线程”(Green Threads)的用户线程实现的,但从JDK1.3起,“主流”平台上的“主流”商用Java虚拟机的线程模型普遍都被替换为基于操作系统原生线程模型来实现,即采用1:1的线程模型。操作系统支持怎样的线程模型,在很大程度想会影响上面的Java虚拟机的线程是怎么样映射的,这一点在不同的平台上很难达成一致,因此《Java虚拟机规范》中才不去限定Java线程需要使用哪种线程模型来实现。深入理解JVM(③)线程与

2020-11-13 17:47:46 16

原创 OkHttp原理解析

官方地址:https://square.github.io/okhttp/简介:由Square公司贡献的一个处理网络请求的开源项目,是目前Android使用最广泛的网络框架。从Android4.4开始HttpURLConnection的底层实现采用的是OkHttp。特点:支持HTTP/2并允许对同一主机的所有请求共享一个套接字通过连接池,减少了请求延迟默认通过GZip压缩数据响应缓存,避免了重复请求的网络请求失败自动重试主机的其他ip,自动重定向OkHttp原理解析OkHttp 3.1

2020-11-12 17:39:12 133

原创 LinkedHashMap原理及源码解析

参考:图解LinkedHashMap原理

2020-11-09 20:56:08 49 1

原创 Handler.post()、View.post()和Activity.runOnUiThread()

Activity.runOnUiThread和View.post()也是属于线程间通信的方法。

2020-11-02 20:47:07 11

原创 Android性能优化—ANR问题分析

Android性能优化—ANR问题分析

2020-10-30 17:20:52 8

原创 Android性能优化—卡顿与布局优化

Android性能优化—卡顿与布局优化

2020-10-30 17:19:57 9

原创 Android性能优化—屏幕适配方案

像素(px)含义:通常所说的像素,就是CCD/CMOS上光电感应元件的数量,一个感光元件经过感光,光电信号转换,A/D转换等步骤以后,在输出的照片上就形成一个点,我们如果把影像放大数倍,会发现这些连续色调其实是由许多色彩相近的小方点所组成,这些小方点就是构成影像的最小单位“像素”(Pixel)。简而言之,像素就是手机屏幕的最小构成单元。单位:px(pixel),1px = 1像素点一般情况下UI设计师的设计图会以px作为统一的计量单位。绝对单位 1px 全天下所有的1px都是一样大的相对:1%.

2020-10-28 16:50:06 115

原创 Android性能优化—apk瘦身

1.代码2.资源方面3.动态库APK的结构包含以下目录:assets/: 包含了应用的资源,这些资源能够通过AssetManager对象获得。lib/: 包含了针对处理器层面的被编译的代码。这个目录针对每个平台类型都有一个子目录,比如armeabi, armeabi-v7a, arm64-v8a, x86, x86_64和mips。res/: 包含了没被编译到resources.arsc的资源。META-INF/: 包含CERT.SF和CERT.RSA签名文件,也包含了MANIFES

2020-10-25 18:51:33 124

原创 Android性能优化—存储优化

Android 存储方式SharedPrefence,存储简单的配置数据等SQLite,存储复杂的关系型数据File,一般存储日志文件,本地文件缓存, protobuf ,7zContentProvider,跨进程数据访问,一般和SQLite结合使用,把数据提供给其他app进程使用。网络存储 , 网络存储 涉及到序列化/反序列化(protobuf,xml,json)SharedPrefenceSharedPrefence的commit和applyapply没有返回值,而commit返回b

2020-10-24 17:14:18 211 4

原创 Android性能优化—Android电量优化

手机耗电的根本原因是软件电能电能(J) = 电功率P(W) * 时间t(s)电功率P(W) = 电压U(V) * 电流I©电量Q© = 电流I(A) * 时间t(s)电池说明代表的含义是什么?mAh表示电量,Wh表示电能,即在提供稳定电压3.7V的情况下,可以提供稳定电流1700mA一个小时,即我们在测试的过程中给手机提供恒定的电压,只需获取电流值就可以量化手机的功耗如何获取电量的值测试方法通过Android API获取re

2020-10-24 16:17:24 51

原创 Android Drawable

Drawable 是开发中经常用到的一个概念,我们经常用它去设置 View 的背景,背景可以一个颜色值,也可以是一张资源图片,还可以是一个自定义的 Drawable(shape、selector和layer-list等)等等。这篇文章就简单说下 Drawable 与 View 的关系,同时结合代码,简要分析一下 Drawable 如何作用于 View。Drawable 介绍官方介绍:A Drawable is a general abstraction for “something that can

2020-10-23 21:58:58 27

原创 SharedPreference

参考:反思|官方也无力回天?Android SharedPreferences的设计与实现

2020-10-22 23:30:35 12

原创 Android性能优化—Bitmap的内存管理与长图加载

1.如何计算Bitmap所占内存?2.Bitmap在内存中的缓存管理3.长图加载需要注意的地方Bitmap–位图如何得到 bitmap 对象?Bitmap 是 Android 系统中的图像处理中最重要类之一。Bitmap 可以获取图像文件信息,对图像进行剪切、旋转、缩放,压缩等操作,并可以以指定格式保存图像文件。有两种方法可以创建 Bitmap 对象,分别是通过 Bitmap.createBitmap() 和 BitmapFactory 的 decode 系列静态方法创建 Bitmap 对象。

2020-10-21 20:22:55 58

原创 Android性能优化—代码结构设计模式优化

一道面试题BAT招聘面试题:你能手写一个单例设计模式吗?分析一下它是怎样工作的。你能熟练使用哪些设计模式?并分析一下设计模式的重要性BAT招聘需求:Baidu:https://www.zhipin.com/job_detail/ef45ee4fcc18bca41Xx52NW1EFs~.html?ka=search_list_2阿里:https://www.zhipin.com/job_detail/c74b2b035fe446ae1Xd42t61Elo~.html?ka=search_li

2020-10-20 21:56:50 49

原创 Android性能优化—内存抖动和内存泄漏

LMK;抖动、泄漏与溢出流畅不卡内存抖动短时间内有大量对象创建销毁,它伴随着频繁的GC。比较典型的就是字符串的拼接造成内存抖动。比如:String str = "";for(int i=0; i<10; i++) { str += i;}+=操作会编译成StringBuilder,然后调用StringBuilder的append方法进行拼接。所以这里会创建10个StringBuilder对象,每执行一次+操作都会新创建一个StringBuilder对象。优化方法:Stri

2020-10-18 21:04:20 394 1

原创 Android面试之性能优化篇

参考:Android面试之性能优化篇

2020-10-18 17:12:16 30

DataSet对象

介绍 DataSet对象例子,亲自运行过,没有问题初学者参考

2014-03-24

SqlDataReader

介绍 SqlDataReader对象例子,亲自运行过,没有问题初学者参考

2014-03-24

SqlCommand_ExecuteNonQuery方法

SqlCommand_ExecuteNonQuery方法,亲自运行过,没有问题初学者参考

2014-03-24

SqlCommand_ExecuteScalar方法

SqlCommand_ExecuteScalar方法,亲自运行过,没有问题初学者参考

2014-03-24

SqlCommand_Parameters

SqlCommand_Parameters属性用法例子,亲自运行过,没有问题初学者参考

2014-03-24

最小生成树算法详解

详细的最小生成树全解,讲述金典的最小生成树算法,全面掌握最小生成树算法

2013-05-11

WindowManagerService相关类图.eddx

Activity,Window,DecorView,ViewRootImpl,WindowManager,WindowManagerImpl,WindowManagerGlobal,WindowManagerService相关类图

2020-03-20

WindowManagerService相关类图.eddx

Activity,Window,DecorView,ViewRootImpl,WindowManager,WindowManagerImpl,WindowManagerGlobal,WindowManagerService相关类图

2020-03-20

WindowManagerService相关类图.eddx

Activity,Window,DecorView,ViewRootImpl,WindowManager,WindowManagerImpl,WindowManagerGlobal,WindowManagerService相关类图

2020-03-19

Binder.rar

Binder实例,client进程调用server进程的a+b函数,用server进程返回结果给client进程。 Binder跨进程通信相关的client进程,Proxy,BinderProxy,Binder驱动,Binder,Stub,server进程的时序图

2020-03-19

Android系统启动流程.xmind

Android系统启动流程的思维导图,包含了Android系统的关键进程以及关键服务。。

2020-03-19

OnTouchEvent.rar

Android事件分发机制的工程Demo,包含有Android事件分发机制的流程图,方便理解Android事件分发机制。

2020-02-28

区块链与资产证券化(ABS)

介绍资产证券化abs的整体原理,以及基于区块链技术的资产证券化管理平台的优势。

2019-03-25

Ethereum代码整体框架(根据源码分析)

Ethereum代码整体框架(根据源码分析),在看以太坊源码时做的整体框架的思维导图。

2019-01-15

A Kafka-based Ordering Service for Fabric

A Kafka-based Ordering Service for Fabric,讲解fabric的基于Kafka的排序服务。

2019-01-11

区块链技术及其应用

介绍区块链技术的背景,整体技术原理,以及相关应用。

2018-11-30

白硕《企业区块链》

上海交易所前总工程师白硕 做的演讲《企业区块链》。。

2018-11-27

雷凯-北京大学深圳 -块游记-CCF+CBC2018+PPT(杭州)-20181125

2018中国区块链技术大会上,北京大学深圳研究生院副教授雷凯做的演讲

2018-11-27

区块链—形式化表示与体系结构演进--斯雪明

2018中国区块链技术大会上,斯雪明做的演讲,区块链—形式化表示与体系结构演进

2018-11-27

Bitcoin Core的debug.log ,只开启显示net类型的,用于分析

Bitcoin Core的debug.log ,只开启显示net类型的,用于分析

2018-09-04

Bitcoin Core的debug.log 用于分析,新的

Bitcoin Core的debug.log 用于分析,执行bitcoind -daemon -debug=""后输出全部类型的log

2018-09-04

Bitcoin Core的debug.log 用于分析

Bitcoin Core的debug.log 用于分析,执行bitcoind -daemon -debug=""后输出全部类型的log

2018-09-04

Bitcoin代码整体框架(根据源码分析)

Bitcoin代码整体框架(根据源码分析),基于XMIND做的比特币源码架构分析

2018-08-06

银行支付系统的SWIFT架构

银行支付系统的SWIFT架构,SWIFT作为银行间标准化的载体。

2018-07-23

区块链技术在跨境支付领域的应用研究

区块链技术在跨境支付领域的应用研究, 可供参考学习。

2018-07-23

第四章 - 密钥,地址,第五章 - 钱包

《精通比特币》第四章 - 密钥,地址 和 第五章 - 钱包 的关键知识点总结

2018-06-11

《精通比特币》第七章 高级交易和脚本

《精通比特币》第七章 高级交易和脚本 的关键知识点总结

2018-06-11

CustomHttpURLConnectionImpl

实现HttpURLConnection,创建自己想要的HttpURLConnection连接

2016-04-08

博客误删了,请帮忙恢复,谢谢

发表于 2018-11-28 最后回复 2018-11-28

为什么我的博客文章经常被删除?

发表于 2015-09-08 最后回复 2015-09-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除