- 博客(30)
- 收藏
- 关注
原创 针对面试线程池
1、什么是线程池?线程池是指在初始化一个多线程应用程序过程中创建一个线程集合,然后在需要执行新的任务时重用这些线程而不是新建一个线程(提高线程复用,减少性能开销)。线程池中线程的数量通常完全取决于可用内存数量和应用程序的需求。然而,增加可用线程数量是可能的。线程池中的每个线程都有被分配一个任务,一旦任务已经完成了,线程回到池子中然后等待下一次分配任务。2、为什么要用线程池?本质上来讲,我们...
2019-12-15 11:48:57 170
原创 OKHTTP(面试二)
1、OkHttp 建立连接的过程,主要涉及到的几个类包括 StreamAllocation、RealConnection 以及 HttpCodec。2、首先在RetryAndFollowupIntercept 中创建 StreamAllocation 对象,到 Connection 中创建 RealConnection 和 HttpCodec,3、OkHttp 中的连接由RealConnec...
2019-11-22 15:41:45 673
原创 okhttp原理(面试一)
// 构建okHttpClient,相当于请求的客户端,Builder设计模式 OkHttpClient okHttpClient = new OkHttpClient.Builder() .readTimeout(5, TimeUnit.SECONDS) .build(); // 构建一个请求体,同样也是Builder设计模式 Request...
2019-11-21 23:20:29 6682
原创 Android组件化与插件化的差别在哪里,该怎么选型?
面试官: 组件化如何实现,组件化与插件化的差别在哪里,该怎么选型?心理分析:面试官从架构层次 了解求职者是否用过 模块化 组件化 和插件化,在过去经验有没有运用过这些技术到项目中,这道题属于一个连环炮。求职者该格外小心求职者:应该从App开发的需求来定义技术选型,分别说说模块化,组件化 插件化的优势和区别单工程模式问题:1、实际业务变化非常快,但是单一工程的业务模块耦合度太高,牵一发而动...
2019-11-07 09:41:21 1532
原创 LruCache原理
LruCache(Least Recently Used)算法的核心思想就是最近最少使用算法。他在算法的内部维护了一个LinkHashMap的链表,通过put数据的时候判断是否内存已经满了,如果满了,则将最近最少使用的数据给剔除掉,从而达到内存不会爆满的状态。一. LruCache基本原理LRU全称为Least Recently Used,即最近最少使用。由于缓存容量是有限的,当有新的数据...
2019-11-07 09:39:09 1042
原创 StringBuilder>StringBuffer>String详细学习
String:public final class String implements java.io.Serializable, Comparable<String>, CharSequence{}被声明为 final class,除了hash这个属性其他属性都声明为final,因为它的不可变性,例如拼接字符串时候会产生很多无用的中间对象,如果频繁的进行这样的操作对性...
2019-11-07 09:35:51 113
原创 LinkedHashMap原理
LinkedHashMap是hashmap和链表的结合体,通过链表记录元素的顺序和连接关系,通过hashmap来存储数据,可以控制元素被遍历的时候输出的顺序(按访问顺序,还是按照插入顺序)。元素被保存在一个双向链表中,默认的遍历顺序是插入顺序来遍历,通过构造函数的accessOder来控制是否按照访问顺序来遍历,linkedHashMap总是将最近访问的元素放在队列的尾部,所以第一个元素就是最...
2019-11-07 09:33:49 1463
原创 Android APK反编译 apktool、dex2jar 和 jd-gui使用教程
Android APK反编译 apktool、dex2jar 和 jd-gui使用教程工具介绍新版本apktool用法dex2jar工具包的使用安装 jd-gui#最近在研究Android的混淆,需要验证混淆是否成功,就需要apk的反编译了,所以记录下apk反编译的相关工具与使用教程,大家一起学习进步。工具介绍apktool作用:主要查看res文件下xml文件、AndroidManifes...
2019-05-13 20:25:53 2191
原创 Android Studio 3.0 NDK开发转 CMake编译
1.下载好组件:2.弄好CMakeList.txt如果没有,就创建一个新的项目,从里面拷贝出来。弄好以后将其放进以下文件夹:3.没有的话就创建一个项目,copy进来4.将准备使用的C文件copy到Main目录下的cpp文件夹,如果没有,创建一个。5.将文件拷贝到app文件夹下,打开编辑,如果只是换个编译方式,将add_Library{}下面的内容全部删除掉,同时add_Libr...
2018-11-02 17:50:20 438
原创 从Fragment跳转到Activity然后返回到指定的fragment页面
现在有这么一个需求:有两个fragment,分别为FA和FB依附在MainActivity,从FA跳转到页面ActivityC后,点击某个按钮进行一些逻辑后跳转到指定的FB页面。1.从FA跳转到页面ActivityC在startActivityForResult(intent, requestCode);方法前面加 getActivity().可以让FA的宿主MainActivity启动目标...
2018-10-25 10:40:16 11097 2
原创 RecyclerView滑动到指定的position位置不准确解决方案
RecyclerView滑动到指定的position位置不准确解决方案 my_recycler_view.scrollToPosition(i); LinearLayoutManager mLayoutManager = (LinearLayoutManager) my_recycler_view.getLayoutManager();...
2018-10-10 09:39:31 12267 2
原创 ButterKnife源码解析
1.使用ButterKnife首先在项目的build添加 implementation 'com.jakewharton:butterknife:8.4.0'就ok了。 2.我们直接上代码吧public class SideslipDeletActivity extends AppCompatActivity { @BindView(R.id.my_recyclerV...
2018-04-22 21:31:01 279
原创 android触摸事件传递机制
一次完整的事件传递主要包括三个阶段:事件的分发、拦截、消费。 1.分发(Dispatch):事件的分发对应着dispatchTouchEvent方法public boolean dispatchTouchEvent(MotionEvent event)2.拦截(Intercept):事件的拦截对应着onInterceptTouchEvent方法,这个方法只在ViewGroup及其子类...
2018-04-12 16:45:22 192
原创 Android线程间通信机制
借用别人的图如下: 1.Message 线程间通信就是在传递消息,Message就是消息的载体。常用的有四个字段: arg1 , arg2 , what ,obj 。源代码如下: /** * User-defined message code so that the recipient can identify * what this message is a...
2018-04-09 09:44:18 412
原创 JAVA反射
反射:就是通过class文件对象,去使用该文件中的成员变量,构造方法,成员方法。 Class类: 成员变量 Field 构造方法 Constructor 成员方法 Method 获取class文件对象的方式: A.Object类的getClass()方法 B.数据类型的静态属性class C.Class类中的静态方法pu...
2018-04-03 13:58:31 141
原创 类加载
1.类的加载 A.当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。 B.加载 就是指将class文件读入内存,并为之创建一个Class对象 任何类被使用时系统都会建立一个Class对象 C.连接 验证 是否有正确的内部结构,并和其他类协调一致 准备 负责为类的静态成员分配内存,并设置默认初始化 解析 将类的二进制数据中的...
2018-04-02 11:50:11 160
原创 线程、进程学习笔记
1.线程: 在同一个进程内又可以执行多个任务,而这每一个任务我就可以看出是一个线程。 线程:是程序的执行单元,执行路径。是程序使用CPU的最基本单位。单线程:如果程序只有一条执行路径多线程:如果程序有多条执行路径2.多线程有什么意义呢?多线程的存在不是提高程序执行速度,而是为了提高应用程序的使用率。 程序的执行其实就是在抢占CPU的资源,CPU的执行权。 多个进程是在抢这个...
2018-03-29 14:48:47 201
原创 APK包里面都有什么
1.APK由来的一张图片如下: 2.解压一个普通的apk如图 3.classes.dex是.des文件。 4.resources.arsc是resources resources文件。 5.AndroidManifest.xml是AndroidManifest.xml文件。 6.res是uncompiled resources。 7.META-INF是签名文件夹。他的目录如下:...
2018-03-28 16:36:35 16742
原创 android APK打包过程学习笔记分享
1.先来张图压压惊 aapt->aidl -> javac-> dx(dex)-> apkbuilder-> jarsigner-> zipalign aapt:Android资源打包工具( …\Android\sdk\build-tools\25.0.0\aapt.exe)。 打包资源文件,生产R.java文件,在这个过程中,项目中...
2018-03-28 14:06:10 224
原创 Java中的String,StringBuilder,StringBuffer三者的区别
1.先介绍一下他们三个是什么: String:是字符串常量 StringBuffer:字符串变量(线程安全) StringBuilder :字符串变量(线程不安全) 2.然后介绍一下他们的执行速度: StringBuilder > StringBuffer > String 3.为啥String的执行速度最慢呢,请听我慢慢道来: 请看先这段代码String s = ...
2018-03-27 14:51:05 189
原创 Glide框架学习
Glide是Google官方推荐的图片加载框架。 将Glide引入我们的项目中:dependencies { compile 'com.github.bumptech.glide:glide:3.7.0'}注意Glide需要用到网络功能,需要声明一下网络权限:<uses-permission android:name="android.permission.INTERNET" />基本的
2017-03-27 18:27:12 354 1
原创 plugin with id 'com.android.application' not found
在build.gradle中添加下面的代码buildscript{ repositories{ jcenter() } dependencies{ classpath 'com.android.tools.build:gradle:2.1.3' }}allprojects{ repositories{ jce
2017-03-10 10:59:03 1072
原创 Android Annotations在studio上的配置
第一步 添加代码apply plugin: 'android-apt'def AAVersion = '3.3.2' 添加代码apt "org.androidannotations:androidannotations:$AAVersion"compile "org.androidannotations:androidannotations-api:$AAVersion"apt {
2016-12-14 13:32:19 264
原创 Android vector Path Data画图详解
SVG是一种矢量图格式,是Scalable Vector Graphics三个单词的首字母缩写。在xml文件中的标签是,画出的图形可以像一般的图片资源使用,例子如下:<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:viewportHeigh
2016-11-17 13:46:45 1300 1
原创 Error:Execution failed for task ':app:prepareDebugAndroidTestDependencies'.
Studio报错Error:Execution failed for task ':app:prepareDebugAndroidTestDependencies'.> Dependency Error. See console for details.解决的办法: 在app的gradle文件中添加以下代码configurations.all { resolutionStrate
2016-11-09 17:59:10 3319
转载 Android图片压缩(质量压缩和尺寸压缩)
在网上调查了图片压缩的方法并实装后,大致上可以认为有两类压缩:质量压缩(不改变图片的尺寸)和尺寸压缩(相当于是像素上的压缩);质量压缩一般可用于上传大图前的处理,这样就可以节省一定的流量,毕竟现在的手机拍照都能达到3M左右了,尺寸压缩一般可用于生成缩略图。 两种方法都实装在了我的项目中,结果却发现在质量压缩的模块中,本来1.9M的图片压缩后反而变成3M多了,很是奇怪,再做了进一步调查终于知道原因了
2016-10-18 16:12:17 367
原创 SVN如何打tag,以及主干,分支的相互合并操作
1.给项目打 tag的步骤 1)选中项目后,点击鼠标的左键弹出对话框 选择TortoiseSVN->Branch/tag… 如图所示 点击Branch/tag后弹出如下对话框 “svn:”显示的路径是需要打tag文件的路径 “to path:”显示的路径是生成tag所在的路径 “log message”是所添加的注释 2.打branch的步骤与tag的是
2016-10-18 13:40:59 10667
原创 Android面试题(一)
简述Activity的生命周期生命周期描述的是一个类 从创建(new出来)到死亡(垃圾回收)的过程中会执行的方法.在这个过程中 会针对不同的生命阶段会调用不同的方法 这些方法包括:oncreate ondestroy onstop onstart onresume onpause 其实这些方法都是两两对应的,onCreate创建与onDestroy销毁; onStart可见与onStop不可
2016-10-10 16:07:51 326
原创 String类的常用方法(上)
本篇文章是我在学习过程中整理的,分享出来希望与大家相互学习。 String类代表字符串。 字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。例如:String str = "abc"; Java 语言提供对字符串串联符号(”+”)以及将其他对象转换为字符串的特殊支持。 字符串串联是通过 StringBuilder(或 S
2016-09-12 17:44:10 376
原创 android中shape的使用总结
android中shape的使用总结这篇博客写来是我自己学习过程中总结的笔记,也希望能给大家带来帮助,本片 shape是用来定义形状的。 shape下面的标签各自的意思: 1.solid:填充 例:<solid android:color="@color/dialog_btn"/> 2.gradient:渐变色填充 android:startColor起始颜色,android:endCo
2016-09-09 11:46:37 372
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人