- 博客(26)
- 资源 (28)
- 收藏
- 关注
原创 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 416
原创 Android进程间通信
下图引用《Android开发艺术探索》的总结:https://developer.android.google.cn/guide/components/processes-and-threadsAndroid 多进程通信Android多进程实现,一个APP多个进程Android中的多进程模式Android进程间通信 - 几种方式的对比总结Android进程间通信的几种方式...
2020-11-29 16:00:04 114
原创 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 25766 1
原创 OkHttp原理解析之面试题分析
面试中通常是问些问题考察你对OkHttp的原理是否有深入理解。如何使用OkHttp发送网络请求并将结果更新至UI的方式使用AsyncTask + OkHttp的同步请求使用OkHttp的异步请求+runOnUiThread方法或者Handler可否介绍一下OkHttp的整个异步请求流程OkHttp对于网络请求都有哪些优化,如何实现的OkHttp框架中都用到了哪些设计模式单例模式:(建议用单例模式创建OkHttpClient)OkHttpClient, 可以通过 new OkHttp
2020-11-28 19:03:39 3024
原创 OkHttp原理解析之请求服务器拦截器
五、请求服务器拦截器CallServerInterceptor,利用HttpCodec发出请求到服务器并且解析响应生成Response。先讲解一个新的请求头:Expect: 100-continue,这个请求头一般出现于上传大容量请求体或者需要验证服务器是否愿意接收请求体。即代表了客户端需要先询问服务器是否愿意接收请求体数据。OkHttp的做法:如果服务器允许则返回100,客户端继续发送请求体;如果服务器不允许则直接返回给用户。同时服务器也可能会忽略此请求头,一直无法读取应答,此时抛出超时异
2020-11-28 17:42:27 289
原创 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 1042
原创 OkHttp原理解析之缓存拦截器
三、缓存拦截器CacheInterceptor,在发出请求前,先判断是否有命中的缓存。如果命中则可以不发请求,直接使用缓存着的响应(当然要经过一系列的验证来判断这个缓存着的响应是否的确可以直接使用)。 (只会存在Get请求的缓存,Post请求不会被缓存)步骤为:1、从文件缓存中获得对应请求的响应缓存2、创建CacheStrategy ,创建时会判断是否能够使用缓存或发起网络请求,在CacheStrategy 中存在两个成员:networkRequest与cacheResponse,分别代表需要发起网
2020-11-28 17:35:33 528
原创 OkHttp原理解析之桥接拦截器
二、桥接拦截器BridgeInterceptor,连接应用程序和服务器的桥梁,我们发出的请求将会经过它的处理才能发给服务器,比如设置请求内容长度,编码,gzip压缩,cookie等,获取响应后保存Cookie等操作。这个拦截器相对比较简单,功能总结起来就是:补全请求与响应后处理。补全请求头:请求头说明Content-Type请求体类型,如:application/x-www-form-urlencoded、multipart/form-dataContent-Length/
2020-11-28 17:32:38 253
原创 OkHttp原理解析之重试及重定向拦截器
一、重试及重定向拦截器第一个拦截器:RetryAndFollowUpInterceptor,主要就是完成两件事情:重试与重定向。重试请求阶段发生了 RouteException 或者 IOException会进行判断是否重新发起请求。RouteException:catch (RouteException e) { //todo 路由异常,连接未成功,请求还没发出去 if (!recover(e.getLastConnectException(), streamAllocation,
2020-11-28 17:31:21 2141
原创 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 770
原创 计算机专业相关书籍
操作系统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 409
原创 读书相关
1.读专业书最好多读几本,选领域内的评价比较好的几本都进行阅读,因为不同作者的视角和思考方式都不一样,可能那本比较适合别人,但是这本比较适合你。2.思考一个问题的一个比较好的方式是:从历史沿革开始讲,解决这个问题最初用的是什么方法,是如何实现的,解决了哪些问题,还剩下哪些问题没有解决(一个大的问题通常可以分为几个小的问题进行解决)。这个方法有什么缺点,针对这些缺点后来人们提出了什么新的解决方法进行改进。这样对这个问题有一个系统性的认识,知道了人们对这个问题都做过哪些一系列的探索,会有非常深刻的理解,不容
2020-11-25 17:35:45 65
原创 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 165
原创 OSI七层模型
七层模型只有最下三层有实体设备,上四层都是软件层面的表示了。各层的设备:1.网络层:路由器、防火墙(硬件防火墙)、3层交换机(开启路由功能)2.数据链路层:网卡、网桥、交换机3.物理层:中继器、集线器(HUB)、网线电缆铜缆传输过程:数据在应用层,表示层和会话层时属于高层数据,到了传输层数据被封装上TCP头部,到了网络层封装上一层IP包头,继续传输到数据链路层,数据被封装上一层LLC子层的头部和MAC子层的头部信息,然后通过物理层将数据通过电信线路传输出去,接收信息则与这个规则正好相反。防火墙根
2020-11-24 17:31:01 1276
原创 Android的ServiceManager、SystemServiceManager、SystemServer、SystemService分析
ServiceManager、SystemServiceManager、SystemServer、SystemService十几个比较重要的类,他们之间是什么关系?下面进行源码分析。参考:ServiceManager,SystemServer,SystemServiceManager,SystemService—简述这个几个类的关系Android SystemServiceManager分析...
2020-11-24 16:38:28 1253
原创 Android进程保活
1.进程优先级2.保活的原理3.保活的方式当然保活不是绝对保活,只是提高保活率,要想像微信/QQ一样做到绝对保活,必须得联系各个手机厂商加入白名单,否则不可能做到绝对保活。
2020-11-23 21:41:39 159
原创 从源码角度分析Handler核心机制
看代码不要什么都看,只需要看主线代码,主线代码逻辑掌握了再选择性的看细节代码。要知道学什么,该学到什么程度,不然就是什么都会一点,什么都不精。规划好路线:1、早点进大厂,评级(需要锻炼技术)2、创业(需要锻炼技术)3、转行一定要确定好边界,不要什么都做,APP开发涉及:Java基础、UI、四大组件、性能优化、NDK、开源框架、架构、数据结构与算法、设计模式等。做APP开发就想办法做好APP开发,不要想着深入研究Linux系统开发,人的精力是有限的,做好一个方向才会精进。...
2020-11-21 23:36:03 287 1
原创 为什么基于TCP的应用需要在应用层加入心跳包机制
TCP协议不是有keep-alive机制吗,那为什么基于TCP的应用还需要自己实现一套心跳包机制?参考:为什么基于TCP的应用需要心跳包(TCP keep-alive原理分析)
2020-11-20 17:06:45 641
原创 Android运行时注解和反射技术之事件分发框架EventBus
Android通过仿写EventBus组件通信框架 掌握运行时注解+反射及事件总线通信核心原理
2020-11-20 16:14:01 420
原创 Android编译时注解技术之依赖注入框架Butterknife
仿写ButterKnife框架核心功能 掌握编译时注解+注解处理器APT生成Java代码的技术Android进阶系列8-编译时注解框架ButterKnife浅析android手动编写ButterKnife编译时注解框架Android编译时技术的进阶实战打造全自动View注入框架ButterKnife【Android进阶】——编译时技术实战,打造全自动注入框架Butter knife...
2020-11-20 16:11:43 218
原创 Java线程与线程池与阻塞队列原理
线程池策略corePoolSize:核心线程数;maximunPoolSize:最大线程数每当有新的任务加入到线程池时,第一步: 先判断线程池中当前线程数量是否达到了corePoolSize,若未达到,则新建线程运行此任务,且任务结束后将该线程保留在线程池中,不做销毁处理,若当前线程数量已达到corePoolSize,则进入下一步;第二步: 判断工作队列(workQueue)是否已满,未满则将新的任务提交到工作队列中,满了则进入下一步;第三步: 判断线程池中的线程数量是否达到了maxumunPo
2020-11-14 15:46:25 336
原创 Java线程与操作系统线程
Java线程在早期的Classic虚拟机上(JDK1.2以前),是基于一种被称为“绿色线程”(Green Threads)的用户线程实现的,但从JDK1.3起,“主流”平台上的“主流”商用Java虚拟机的线程模型普遍都被替换为基于操作系统原生线程模型来实现,即采用1:1的线程模型。操作系统支持怎样的线程模型,在很大程度想会影响上面的Java虚拟机的线程是怎么样映射的,这一点在不同的平台上很难达成一致,因此《Java虚拟机规范》中才不去限定Java线程需要使用哪种线程模型来实现。深入理解JVM(③)线程与
2020-11-13 17:47:46 148
原创 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 1147 1
原创 Handler.post()、View.post()和Activity.runOnUiThread()
Activity.runOnUiThread和View.post()也是属于线程间通信的方法。
2020-11-02 20:47:07 350
WindowManagerService相关类图.eddx
2020-03-20
WindowManagerService相关类图.eddx
2020-03-20
WindowManagerService相关类图.eddx
2020-03-19
Binder.rar
2020-03-19
A Kafka-based Ordering Service for Fabric
2019-01-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人