自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

网鱼的栈

恐惧源于无知

  • 博客(207)
  • 收藏
  • 关注

转载 Http代理、OKHttp路由选择

Http代理okhttp中的代理与路由OkHttp3中的代理与路由http://www.voidcn.com/article/p-ptwnoubo-bom.html深入理解OkHttp3(3):Connectionshttps://zhuanlan.zhihu.com/p/26553169OkHttp深入学习(二)——网络https://blog.csdn.net/evan_man/article/details/51180863OKHttp源码解析(四)--中阶之拦截器及调

2020-12-24 14:25:43 459

转载 使用wireshark分析TLS

原文链接:https://www.cnblogs.com/lv6965/p/7859925.html1.基本概念SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据

2020-12-22 11:03:37 2784

转载 浅谈SSL/TLS工作原理

浅谈SSL/TLS工作原理为了保证网络通信的安全性,需要对网络上传递的数据进行加密。现在主流的加密方法就是SSL (Secure Socket Layer),TLS (Transport Layer Security)。后者比前者要新一些,不过在很多场合还是用SSL指代SSL和TLS。先来回顾一下网络通信加密的发展过程,假设A和B之间要网络通信。远古时代--远古时代自然是民风淳朴,路不拾遗,夜不闭户。A要发数据给B,根本不用担心窃听和篡改,直接发就好了。上古时代-..

2020-12-16 19:57:52 436

转载 DNS报文格式解析(非常详细)

原文地址:http://c.biancheng.net/view/6457.htmlDNS 分为查询请求和查询响应,请求和响应的报文结构基本相同。DNS 报文格式如图所示。上图中显示了 DNS 的报文格式。其中,事务 ID、标志、问题计数、回答资源记录数、权威名称服务器计数、附加资源记录数这 6 个字段是DNS的报文首部,共 12 个字节。整个 DNS 格式主要分为 3 部分内容,即基础结构部分、问题部分、资源记录部分。下面将详细地介绍每部分的内容及含义。基础结构部分DN..

2020-11-20 18:27:04 15799 3

转载 双频WiFi手机的网速为何那么快?看完这篇你就懂了

最近,手机市场上双WiFi一词走红,很多旗舰手机都称自家搭载了双WiFi,网速会更快。那它的原理是什么呢?今天就为大家解析一下。首先,一定要注意,双频WiFi和双路WiFi可不是一回事!双频WiFi,顾名思义,是两个频率。手机具有双频WiFi功能,就可以搜索和使用2.4Ghz和5Ghz频段的WiFi信号。目前全球能够提供实时双频WiFi技术连接双频AP的仅高通一家,所有的双频WiFi手机是基于高通实时双频WiFi技术。这个方案可以让手机同时连入两个WiFi连接(2.4GHz + 5GH.

2020-11-06 17:46:52 1179

转载 AOP切面编程

Android AOP面向切面编程详解Android AOP:最简单&粗暴(使用与原理)讲解AspectJ——切入点语法(3)之捕获类和对象构造上的连接点AspectJ自定义注解之埋点(三)

2020-11-06 17:41:49 89

转载 OKHttp全系列解析

OKHttp全解析系列(一) -- HTTP基础OKHttp全解析系列(二) -- OkHttp 简介OKHttp全解析系列(三) -- OkHttp 请求流程介绍OKHttp全解析系列(四) -- 线程池和消息队列OKHttp全解析系列(五) --OKHttp的缓存机制OKHttp全解析系列(六) --OKHttp的连接与请求OKHttp全解析系列(七)-OKHttp中的Route和RouteSelectorOKHttp全解析系列(八) --Retrofit+RxJava+OK

2020-10-30 18:03:15 197

转载 使用CDN后的http请求处理流程

CDN是什么?

2020-10-27 18:15:38 797

转载 解决AS build报错乱码问题

https://blog.csdn.net/weixin_37826412/article/details/105555837

2020-07-16 09:44:43 3199

原创 Glide学习笔记

Glide最全解析比较全面的介绍Glide使用,通过源码分析执行流程,自定义模块,图片转换等功能关于bitmap的缓存处理方面的知识:Glide篇_01关于Bitmap缓存Glide缓存机制缓存源码分析关于bitmap的复用处理方面的知识:Glide(四):强大的图片缓存池和复用机制解析复用流程简单来说,缓存是将数据存储起来,下次需要时就不用重新加载数据,直接拿来即用,作用是加快加载速度、避免相同的数据占用空间,降低内存占用;复用的意思是重新使用,将已经不..

2020-06-29 17:34:29 133

转载 Bitmap优化

原文地址:Android性能优化(五)之细说Bitmap例如:使用Pixel手机拍摄4048x3036像素(1200W)的照片,如果按ARGB_8888来显示的话,需要48MB的内存空间(4048*3036*4 bytes),这么大的内存消耗极易引发OOM。本篇文章就来说一说这个大胖子。1. Bitmap内存模型Android Bitmap内存的管理随着系统的版本迭代也有演进:1.在Android 2.2(API8)之前,当GC工作时,应用的线程会暂停工作,同步的GC会影响性能。而A.

2020-06-18 16:52:16 236

转载 HTTPS 原理分析——带着疑问层层深入

原文地址:HTTPS 原理分析——带着疑问层层深入HTTPS随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS 协议。大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL 、非对称加密、 CA证书等,但对于以下灵魂三拷问可能就答不上了:为什么用了 HTTPS 就是安全的? HTTPS 的底层原理如何实现? 用了 HTTPS 就一定安全吗?本文将层层深入,从原理上把 HTTPS 的安全性讲透。HTTPS 的实现原理.

2020-06-03 15:51:48 183

转载 Activity的启动流程,如何判断当前activity所在进程已经启动了

startActivity启动过程分析https://blog.csdn.net/luoshengyang/article/details/6689748看完这两篇干货,应该一清二楚了。是否启动应用进程的分支在ActivityStackSupervisor#startSpecificActivityLocked方法内部通过判断当前activity对于的进程名的ProcessRecord是否存在来判断进程是否启动(android-cts-7.1_r20 tag)public fin.

2020-06-01 15:24:42 1760

转载 为什么systemServer进程与zygote进程的通信是使用socket而不是binder?

Android Framework层学习——为什么SystemServer进程与Zygote进程通讯采用Socket而不是Binder一些讨论:

2020-05-30 17:23:34 5206 5

原创 OkHttp3原理解析

概览-Okhttp3 研究总结 (面试)主要原理解析-OKHttp原理(线程池、拦截器链、连接池、缓存管理、连接复用、连接清理规则)拦截器解析dispatcher的三个任务队列的作用解析链接复用池解析

2020-05-23 15:34:00 255

转载 建造者模式Builder

一篇文章就彻底弄懂建造者模式(Builder Pattern)背景当一个类的内部数据过于复杂的时候(通常是负责持有数据的类,比如Config、VO、PO、Entity...),要创建的话可能就需要了解这个类的内部结构,还有这些东西是怎么组织装配等一大坨乱七八糟的东西,这个时候就会增加学习成本而且会很混乱,这个时候就想啊想一种什么法子来管理一下这个类中的数据呢,怎么在创建的时候让它按部就班的来,并且代码可读性很好别让我看花了眼啊,我要的东西也能都很好设置进来,这就是Builder模式的应用场景,Bu

2020-05-22 16:22:10 165

转载 EventBus原理

EventBus 使用(全面分析,细节提醒)Android EventBus源码分析,基于最新3.1.1版本,看这一篇就够了!!EventBus 原理解析EventBus运用发布-订阅模式,需要进行注册和反注册,在接收事件的方法上需要添加@Subcribe注解,且方法参数有且只有一个,参数类型是自定义的object对象。在订阅者类中,需要执行1、EventBus.getDault().register(this); --->获取this对象的类信息,通过反射获取包含注解的方法,..

2020-05-20 15:17:49 178

转载 模块化/组件化开发

Android组件化/模块化开发(一)Android组件化/模块化开发(二)

2020-05-20 15:04:39 145

原创 android滑动冲突解决方案

参考资料:Android TouchEvent之requestDisallowInterceptTouchEventAndroid事件分发机制及滑动冲突解决方案1、同方向,根据业务需要进行拦截2、不同方向,根据滑动距离进行拦截其中拦截方式:1)内部拦截:在父容器的onInterceptTouchEvent方法中处理down,up,move事件2)外部拦截:子元素重写dispatchTouchEvent,处理down,up,move事件,通过调用parent的requestDisa

2020-05-20 15:00:33 234

转载 Android webview安全漏洞

原文链接:https://www.jianshu.com/p/3a345d27cd42webview缓存机制,原文链接:https://www.jianshu.com/p/5e7075f4875f

2020-05-20 14:34:03 456

转载 Activity的启动流程及启动预览窗口

https://www.jianshu.com/p/5573d4044758一张图展示:原图地址:https://upload-images.jianshu.io/upload_images/2828107-50880c336e7ff625.jpeg

2020-05-12 10:44:43 328

转载 使用choreographer的FramCallback实现帧率监听

原文地址:https://blog.csdn.net/u013493809/article/details/62215250

2020-05-11 15:33:46 994

转载 LinkedBlockingQueue原理

1、简介上篇我们介绍了ArrayBlockingQueue的相关方法的原理,这一篇我们来学习一下ArrayBlockingQueue的“亲戚”LinkedBlockingQueue。在集合框架里,想必大家都用过ArrayList和LinkedList,也经常在面试中问到他们之间的区别。ArrayList和ArrayBlockingQueue一样,内部基于数组来存放元素,而LinkedBlockingQueue则和LinkedList一样,内部基于链表来存放元素。LinkedBlockingQueu.

2020-05-09 10:49:02 469

转载 FragmentTransaction与Fragment生命周期的关系

原文出处:https://segmentfault.com/a/1190000000650573在Android中,对Fragment的操作都是通过FragmentTransaction来执行。而从Fragment的结果来看,FragmentTransaction中对Fragment的操作大致可以分为两类:显示:add() replace() show() attach() 隐藏:rem...

2020-04-08 15:28:40 605

转载 Java线程的6种状态及切换

Java中线程的状态分为6种。1.初始(NEW):新创建了一个线程对象,但还没有调用start()方法。2.运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此时处于就绪状态...

2020-02-29 14:30:32 125

原创 Mac上阅读android源码

首先,需要下载源码,android的源码是通过repo管理的。1. repo是什么?repo是一种代码版本管理工具,它是由一系列的Python脚本组成,封装了一系列的Git命令,用来统一管理多个Git仓库。2. 为什么要用repo?因为Android源码引用了很多开源项目,每一个子项目都是一个Git仓库,每个Git仓库都有很多分支版本,为了方便统一管理各个子项目的Git仓库,需要一...

2020-02-05 20:01:10 1583 1

转载 设计模式之责任链模式

https://www.cnblogs.com/ysw-go/p/5432921.html原文:责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。Tomcat...

2019-05-08 16:06:15 192

转载 Android中include标签的使用及注意事项

include标签是用来解决布局复用的,它可以和其他布局(LinearLayout等)一样可以设置layout_属性,设置的layout属性会覆盖include包裹的父布局的属性,一般建议不要在include中设置layout属性。原文include标签可以实现在一个layout中引用另一个layout的布局,这通常适合于界面布局复杂、不同界面有共用布局的APP中,比如一个APP的顶部布局...

2019-05-07 10:38:46 4947

原创 layout_weight属性的用法和意义

一直没理解在LinearLayout中的layout_weight属性的意义,使用的时候都是将子控件的layout_width或者layout_height设置为0,然后在设置layout_weight的权重值,以至于在被问到如果设置了layout_width为具体的值时对layout_weight的影响时一脸懵逼。然后看到了这篇文章,终于豁然开朗。原来layout_weight属性的意义就是...

2019-05-07 10:01:02 43732 5

原创 多个任务在IntentService中是如何被顺序执行的

使用过IntentService的都清楚,这是一个继承自Service,内部实现了HandlerThread来进行异步处理任务。因为Service默认是运行在主线程的,通过内部启动一个HandlerThread,和一个关联了该thread的handler来将该service得到的intent放入到线程中执行。我们实现时候,创建一个继承自IntentService的类,只需要实现其中的onHandl...

2019-04-17 19:33:26 1847

转载 AIDL跨进程通信中的,传递自定义类型参数的修饰符in,out,inout的区别

如下文章用实例测试了in,out,inout的区别:Android 深入浅出AIDL(一)全文如下:前言本文主要讲述AIDL作用以及如何快速上手AIDL项目简介A [android]I [Interface]D [Definition]L [Language]Android接口定义语言。作用:方便系统为我们生成代码从而实现跨进程通讯,仅此而已。(玉刚老师...

2019-04-12 16:11:46 1389

转载 ActivityStackSupervisor,ActivityStack,ActivityRecord,TaskRecord的关系

在学习activity的启动流程的时候,经常会碰到这几个类的身影,特别是在AMS中,ActivityStackSupervisor和ActivityStack对象的调用链经常切来换去的,比叫绕。下面这篇文章就是梳理了下这几个类的关系。ActivityRecord、TaskRecord、ActivityStack以及Activity启动模式详解1.简介先来张简单的关系图:...

2019-04-11 10:50:54 4124 1

转载 Activity的启动流程分析

流程较为复杂,可参看这几篇文章:Activity启动过程分析Android Launcher 启动 Activity 的工作过程 【凯子哥带你学Framework】Activity启动过程全解析 Android进阶——Android四大组件启动机制之Activity启动过程...

2019-04-09 15:29:55 243

转载 设计模式之享元模式在handler中的运用

享元模式的基本定义和用法:简说设计模式——享元模式在使用handler的时候发现,创建message对象有两种方式,一种是直接new,一种是使用Message.obtain(),这个message的静态方法是这样实现的:private static final Object sPoolSync = new Object(); private static Message sP...

2019-04-03 11:29:14 2016

原创 线程池是如何重复利用空闲的线程来执行任务的?

在Java开发中,经常需要创建线程去执行一些任务,实现起来也非常方便,但如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。此时,我们很自然会想到使用线程池来解决这个问题。使用线程池的好处: 降低资源消耗。java中所有的池化技术都有一个好处,就是通过复用池中的对象,降低系统资源消耗。设想一下...

2019-03-29 15:18:55 9529 9

原创 实现一个类似容器里面的水慢慢上涨或者充电电量上涨的动画效果的曲折历程

题外话:文章需要配动态图gif来展示动画效果,在ubuntu下制作gif可参考这篇文章,简单方便,我精简了下步骤,如下:制作gif动画图片:https://www.cnblogs.com/bozhicheng/p/5933984.html首先用录屏工具Kazam录制一段视频,其次再用ffmpeg工具转换成gif安装ffmpeg工具:$ sudo add-apt-repository ...

2019-03-27 15:50:55 1242

转载 onResume中Handler.post(Runnable)为什么获取不到宽高?

原文地址:https://blog.csdn.net/u010019468/article/details/80007675貌似已无效。原文如下:1概述一般需求中会出现在Activity启动中需要获取Ui控件相关大小或者在界面绘制完成之后刷新数据,我们都知道在UI绘制完成之后,时机最好,不会阻塞主线程导致卡顿或者UI控件参数获取失败。也许大家使用过或 知道Han...

2019-03-19 19:09:22 924 3

转载 Android 常用换肤方式以及原理分析

原文地址:https://juejin.im/post/5b8f6dcde51d450e6a2dcadf原文内容:常用方法1.通过Theme切换主题通过在setContentView之前设置Theme实现主题切换。 在styles.xml定义一个夜间主题和白天主题:<style name="LightTheme" parent="Theme.AppCompat.Ligh...

2019-03-14 14:15:33 478

原创 Android studio进行文件对比

在平时开发中,避免不了要对同一个文件的不同版本进行代码差异的对比。比较好用的工具就是Beyond Compare,这个工具可以同时对多个文件或者整个工程代码进行对比,有差异的地方会显示出来。处理完差异后,然后又切换到代码编辑工具上开发。后来,用惯了AS后发现,对某个文件的不同版本分支的对比使用git的compare功能更方便。具体路径就是,在需要对比的文件中,鼠标右键,选择git,选择子列表下...

2019-02-20 11:12:54 8770 1

原创 SearchManager提供全局搜索服务

在适配全局搜索功能的时候发现一个类:SearchManager,从来没使用过,这个是用来查询系统内所有支持全局搜索功能的应用。相对应的服务就是SearchManagerService,类似于ActivityManagerService的作用,在系统启动的时候就启动了。一般用法就是首先获取服务:mAndroidSearchManager = (SearchManager) mContext...

2019-02-15 17:27:33 1858

空空如也

空空如也

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

TA关注的人

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