- 博客(22)
- 资源 (9)
- 问答 (2)
- 收藏
- 关注
原创 LinkedList源码解析
简介一个非同步的双链表集合,双链表的数据结构示意图如下:在LinkedList内部包含一个Node的内部类,这个内部类是每一个元素的信息。private static class Node<E> { E item; Node<E> next; Node<E> prev;}从Node的代码中可以非常清楚的看到,每个元素中包含每个元素、以及上一个元素、下一个元素的指针。重要方法分析linklink 相关方法包括l..
2021-07-18 16:10:21
342
2
原创 ArrayList源码分析
目录重要属性分析属性说明关于属性的一点思考重要方法分析构造方法addaddAllremoveremoveAllensureCapacityInternaltrimToSize简介:ArrayList 是不同步的基于数组可调整大小的队列。实现所有可选的列表操作,并允许所有元素,包括null。除了实现List接口之外,该类还提供了操作内部用于存储列表的数组大小的方法。重要属性分析属性说明 transient Object[] element..
2021-07-09 18:13:46
802
原创 程序员的能力具体体现在哪些方面
程序员的优势主要从哪些方面来体现,我认为应该从以下几个方面来分析: 技术的深度和广度 技术人员无论说深度和广度是衡量一个技术人员的优势和能力都是一个重要指标,并且来讲技术的深度和广度也是作为一个技术人员的基础能力。并且有了技术的深度和广度,在技术方案选型或者排查问题解决问题才会有更多的思路和方式。 个人经验 个人经验方面分为业务经验、风险把控经验、发现问题经验。业务经验是指在所处行业中开发的业务经验累积,以及对行业的业务熟悉程度。业务经验可带来显著好处,在工作中首先可以很好的理解产品
2020-12-21 14:18:14
2633
1
原创 OkHttp 源码分析(四)请求连接流程分析
本文分为两部分,请求的建立以及连接的过程。关于请求,由浅入深从主流程开始分析,后续展开介绍各步骤内容。关于连接,详细的介绍了各个步骤以及连接池等内容
2020-09-11 22:31:13
411
原创 OkHttp 源码分析(三) 缓存策略
本文主要分析Okhttp缓存的实现,由浅入深,先从缓存的主流程开始分析,分析缓存共有8个步骤,以及简要内容。后续针对8个步骤中关键的部分进行细致分支,包括缓存的获取、存储、更新等内容
2020-09-08 20:17:51
378
原创 OkHttp 源码分析(二)拦截器的区别
拦截器的分类 拦截器是一个强大的机制,可以监视,重写,重连接等,主要是通过职责链的方式对请求进行拦截处理。SDK中包含几个默认既定的拦截器,主要有重连接、缓存等多个拦截器,以及用户自定义的应用拦截器(Application Interceptors)和网络拦截器(Network Interceptors)。 拦截器各自的优点概述 应用拦截器(Application Interceptors) 无需担心中间响应,例如重定向和重试。 即使从缓存提供HTTP响应,也总是被调用一次。..
2020-09-01 22:31:28
287
原创 OkHttp 源码分析(一)拦截器执行流程
目录拦截器启动流程代码分析拦截器怎么串行起来呢?拦截器如何停下来 拦截器启动流程代码分析 拦截器的创建初始化以及启动过程,主要有3个步骤创建拦截器集合; 创建串行职责链并放入拦截器集合以及初始索引; 启动串行拦截器;具体的执行流程如下图拦截器的主要逻辑在 RealCall.getResponseWithInterceptorChain()中Response getResponseWithInterceptorChain() throws IOException
2020-08-20 23:04:27
501
原创 关于OkHttp简述
关于OkHttpOkHttp是什么OkHttp接入要求OkHttp使用方式OkHttp与其他网络库对比OkHttp是什么先引用一段来自官方的介绍HTTP是现代应用程序网络的方式。这就是我们交换数据和媒体的方式。有效地执行HTTP可以使您的内容加载更快,并节省带宽。OkHttp是默认情况下有效的HTTP客户端:HTTP / 2支持允许对同一主机的所有请求共享一个套接字。连接池可减少请求延迟(如果HTTP / 2不可用。透明的GZIP缩小了下载大小。响应缓存可以完全避免网络重复请求。当网
2020-07-20 22:02:12
514
原创 Android Studio launch ddms error
Android Studio launch ddms error 在使用Android studio 的时候,发现在启动DDMS没有反应,再次启动的时候会弹出一个框,提示 already launched,如图 同时还有个框提示ddms启动异常了,如图: 这时尝试手动打开sdk 中的 ddms,虽然把ddms 成功启动,但是不是我想要的,我想要“
2016-07-22 14:24:05
1828
原创 TopTaskHelper 判断顶层窗口是否变化
android 从 5.0 开始 大部分rom 对于原来的ActivityManager getRunningAppProcesses() 不再支持,包括 activityManager.getRunningTasks(), 当然也有部分5.0 手机继续兼容这套API,不过大部分还是不兼容的,那么有些业务需要监听顶层窗口的变化,比如桌面悬浮窗之类的,特别工具类软件,在5.0及其以上版本其实有另一套
2016-06-29 15:48:13
1640
原创 关于地图API 使用导致内存泄漏问题
在Android 中开发 SearchPoiActivity 功能时,由于一方面是由于 不小心使用API,结果导致发生内存泄漏问题,严重的说应该是API 使用的一段时间内内存不会被释放,重复使用这个模块多次就会发生内存泄漏,具体有 LocationClient 和 PoiSearch的使用具体说明关于locationClient 在构建的时候需要传入一个Context,而一旦将 activi
2016-05-25 10:01:48
6924
原创 android 5.0 悬浮窗使用 之“有权查看应用使用情况”
之前做的悬浮窗在5.0的手机上不好用了,经过研究发现5.0上面的获取顶层应用的方式和5.0以下的应用不同,主要使用UsageStatsManager 来获取顶层应用,但是使用UsageStatsManager 之前必须手动的在设置->安全->有权查看应用使用情况 中打开开关. 下面分享下验证开关打开的方式及验证是有存在 “有权查看应用使用情况”的模块,因为有一些5.0的rom,不包含“有权查
2015-10-16 15:46:47
9245
原创 android PhoneStateListener 内存泄露的问题
android PhoneStateListener 内存泄露的问题在项目开发过程中通过ddms的堆看到内存一直持续在增长,很容易想到发生内存泄露,引用没有被释放,通过dump 最终发现是 PhoneStateListener 内部对自己有一个强引用的handler,如果是在主线程中引用的PhoneStateListener,那么他将释放不掉,引发内存泄露。 解决方法就好的是在子线程中
2015-08-08 15:39:46
1387
原创 adb server didn'n ack
电脑有的时候会出现 ’adb server didn'n ack‘ 的错误提示首先输入>adb nodaemon server找到当前占用端口例如:“cannot bind 'tcp:5037'”然后再输入>netstat -a -o | findstr "port"例如我的端口是5037 我就需要输入 “”netstat -a -o | findstr "5037"
2015-04-03 15:36:02
599
原创 Android Spinner 下拉样式 拒绝弹出
Spinner 本来是下拉组件,但有的时候经常是弹出的一个下拉组件很是恶心不对可以设置areaAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);在有manifest文件中设置 再或者直接不用setDropDownViewResource这个方法也可以
2013-10-29 10:22:08
2840
原创 Eclispe \ MyEclispe 注释配置
Eclispe \ MyEclispe 注释配置配置代码注释,方便快捷开发路径:Window->Preference->Java->Code Style->Code Template - >Comments 如图找到路径,打开edit之后显示如图可以手动的编辑,同时也可以点击 insert variab
2013-03-25 10:44:48
770
转载 Eclispe \ MyEclispe 注释标签详解
Eclispe \ MyEclispe 注释标签详解文件(Files)注释标签:/** * @Title: ${file_name} * @Package ${package_name} * @Description: ${todo}(用一句话描述该文件做什么) * @author A18ccms A18ccms_gmail_com * @date ${
2013-03-25 10:21:53
1013
原创 ADT 插件
安装adt 1.安装本地adt包 1). 首先在eclipse的安装目录中,建一个links文件夹 然后在硬盘上建一个文件夹,名称可以随意,然后在该文件夹中,建立一个以eclipse命名的文件夹,然后将下载好的ADT解压缩,将里面的features和plugins文件夹拷贝到前面建立的eclipse文件夹中。如图所示:在D盘根目录下建立ADT_plug文件夹,在ADT
2013-01-16 10:54:31
647
转载 android权限大全
权限大全访问登记属性android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限获取错略位置android.permission.ACCESS_COARSE_LOCATION,通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米
2013-01-16 10:51:57
493
转载 android 开发误区
android 开发误区1、不读Android开发文档 Android开发者网站可以很好的帮助你。很多的文档也可以通过SDK工具下载。这些文档不仅仅是Javadoc API的参考,它包括许多指南、教程、视频、培训以及其他有用的资料来创建Android应用程序。 Android训练,通过一些有用的教程示例,指导你解决特定问题或实现特定的功能。 2、不熟悉And
2013-01-16 10:47:14
589
原创 MySql使用
1.发生 ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL server时解决方法:i。 改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"
2012-06-13 17:09:44
486
编程珠玑(第2版).pdf
2014-10-29
《HTTP权威指南》高清中文版.pdf
2014-10-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人