
面试
文章平均质量分 63
NO Exception?
分享内容!
展开
-
Volatile字段
Java内存模型规定,将所有的变量都存放在主内存中,当线程使用变量时,会把主内存里面的变量复制到自己的工作空间中,线程读写变量时操作的是自己工作内存中的变量。可以使用volatile来实现内存的可见性。使用synchronized太笨重,因为它会带来线程上下文的切换开销。volatile确保对一个变量的更新对其他线程马上可见。线程在写入变量时不会把值缓存到寄存器或者其他地方,而是直接刷新到主内存。不能保证操作的原子性。使用场景:1.写入变量值不依赖变量的当前值2.读写变量值没有加锁不能保证原子性原创 2021-07-19 19:31:18 · 164 阅读 · 0 评论 -
AlertDialog,popupWindow,Activity区别
AlertDialog 是非阻塞式对话框;而PopupWindow 是阻塞式对话框。AlertDialog 弹出时,后台还可以做事情;PopupWindow 弹出时,程序会等待,在PopupWindow 退出前,程序一直等待,只有当我们调用了 dismiss() 方法的后,PopupWindow 退出,程序才会向下执行。我们在写程序的过程中可以根据自己的需要选择使用 Popupwindow 或者是 Dialog.区别:PopupWindow 没有新建,而是通过 WMS 将 View 加到 DecorV原创 2021-07-14 18:45:42 · 245 阅读 · 0 评论 -
Android 性能优化-网络优化
1. Network Profiler只支持httpurlconnection 和okhttp 请求开启高级分析 run --edit configure —profiling2.charlesjava 开发wirestetho可以查看设备的数据库 、网络请求、精准获取流量设置–流量管理抓包工具:只允许APP联网trafficStats api18以上重启以来的流量数据NetworkStatsManager api23 以后监测流量的方案NetworkStatsManager原创 2021-07-09 16:36:30 · 459 阅读 · 0 评论 -
Android 性能优化-线程优化
在某一刻,只有一个线程占用一个CPU,处理任务。多线程是多个任务被CPU闪速切换执行任务。分时调度模式:轮流获取、均分CPU时间。抢占式调度模型:优先级高的获取1.HandlerThread自带消息循环,串行执行,长时间运行,不断获取任务。2.IntentSerivice优先级高,不容易被杀死3.AsyncTask4.线程池对线程进行命名。便于管理和查找重视优先级5 Rxjava6. 监控创建Thread监控创建Thread,避免滥用thread。可以使用Hook手段 Dexpo原创 2021-07-08 22:29:59 · 327 阅读 · 0 评论 -
android性能优化--布局加载原理
1.背景:了解布局加载原理有利于项目中的优化布局,同时更能学习到源码级别对于布局逻辑的原理。2.源码分析2.1.Activity.class首先我们从主界面activity入口开始。setContentView(R.layout.activity_main);public void setContentView(@LayoutRes int layoutResID) { this.getDelegate().setContentView(layoutResID);} public原创 2020-09-15 22:42:52 · 388 阅读 · 0 评论 -
Android 性能优化-内存优化
1.查询SELECT 列名称 FROM 表名称SELECT 列名称 FROM 表名称 WHERE 列 运算符 值1.1 andSELECT * FROM Persons WHERE FirstName=‘Thomas’ AND LastName=‘Carter’1.2 orSELECT * FROM Persons WHERE firstname=‘Thomas’ OR lastname=‘Carter’2.排序以哪个列进行排序SELECT Company, OrderNumber FRO原创 2021-07-07 14:11:27 · 1005 阅读 · 0 评论 -
Java 的 char 是两个字节,是怎么存 Utf-8 的字符的?
1.string可以有多长内容?2.char数据保存到utf-83.方法分派原创 2020-08-24 22:23:37 · 704 阅读 · 1 评论 -
string可以有多长内容?
目录Git运行前的配置1.add2.git status 确认文件处于什么状态。3.git diff 比较文件的差异4.忽略文件5.跳过使用暂存区域6.移除文件7.提交历史Git运行前的配置配置用户名和邮箱$ git config --global user.name "John Doe" $ git config --global user.email johndoe@example.com文本编辑器$ git config --global core.editor emacs差异分析工原创 2021-06-30 16:44:11 · 613 阅读 · 0 评论 -
JetPack --ViewModel 使用
16 html解析 xml解析 悬浮头部 FlowLayout原创 2020-05-13 20:31:23 · 233 阅读 · 0 评论 -
java 泛型的理解
简介编写的代码可以被不同的对象类型所重用。泛型的本质是参数化类型。所操作的数据类型被指定为一个参数。比如:集合类 linkedlist出现:有许多原因促成了泛型的出现,而最引人注意的一个原因,就是为了创建容器类。泛型好处:类型安全:提高java程序的类型安全,编译时期就可以检查出类型不正确导致的类型转换异常,消除强制类型转换。分类泛型有三种形式:泛型类、泛型方法、泛...原创 2020-04-22 17:51:34 · 345 阅读 · 0 评论 -
开线程影响哪块内存及Java内存原理
1.平衡二叉树对于任意一个节点,左子树和右子树的高度差不能超过1.2 AVL3.2-3树4.红黑树5.并查集 union Find原创 2021-06-25 11:03:10 · 256 阅读 · 0 评论 -
并发集合了解哪些
1.header 请求头 OkHttpClient okHttpClient = new OkHttpClient(); // 创建client对象 Request request = new Request.Builder() .header("name","xxxx") // 添加header .url(food_url).build(); // 创建 请求数据的参数对象 Call call = ok原创 2020-05-27 17:05:25 · 656 阅读 · 0 评论 -
事件分发机制
11 事件分发机制、自定义view原创 2020-04-29 20:24:56 · 515 阅读 · 0 评论 -
HashTable源码解析
18 夜间模式原创 2020-05-13 20:32:08 · 305 阅读 · 0 评论 -
为什么重写equals必须重写hashCode
1 项目流程、项目文档原创 2020-04-18 20:34:50 · 496 阅读 · 0 评论 -
关于ClassLoader原理 类加载机制 双亲委派模型
1.依赖implementation 'cn.jzvd:jiaozivideoplayer:6.2.9'<cn.jzvd.JZVideoPlayerStandard android:id="@+id/videoplayer" android:layout_width="match_parent" android:layout_height="200dp" /&g...原创 2020-03-18 11:54:15 · 635 阅读 · 0 评论 -
并发集合了解哪些
事件分发类型相关方法ActivityViewGroupView事件分发dispatchTouchEvent√√√事件拦截onInterceptTouchEventX√X事件消费onTouchEvent√√√事件分发主要涉及三个方法:dispatchTouchEvent-事件分发;onInterceptTouchEvent ...原创 2019-10-28 17:29:54 · 242 阅读 · 0 评论 -
java基础-内部类
1.概念将一个类的定义放在另一个类的定义内部,叫内部类。public class Outer { String name; class Inner{ String iName; }} Outer outer = new Outer(); Outer.Inner inner = outer.new Inner();内部类可以访问外围类的方法和字段,就像自己拥有它们似的,带来许多方便。所以内部类自动拥有原创 2021-04-11 22:40:47 · 783 阅读 · 0 评论 -
抽象类和接口的区别
1.简介在Andrroid开发中,Retrofit是当下最热的一个网络请求库,Retrofit其实我们可以理解为OkHttp的加强版,它也是一个网络加载框架。底层是使用OKHttp封装的。准确来说,网络请求的工作本质上是OkHttp完成,而 Retrofit 仅负责网络请求接口的封装。它的一个特点是包含了特别多注解,方便简化你的代码量。并且还支持很多的开源库(著名例子:Retrofit + RxJava)。Retrofit和OkHttp都是square公司写的.特别注意:准确来说,Retrofit 是原创 2020-05-28 16:31:39 · 906 阅读 · 0 评论 -
关于 Synchronized和Lock 详解
1.需要掌握的注解字段Get PostUrlQuery QueryMap Field FieldMapPath Body Part MulltiPartHeader Headers FormUrlEncoderetrofit的简单实现:依赖:implementation 'com.squareup.retrofit2:retrofit:2.5.0'implementation 'com.squareup.retrofit2:converter-gson:2.1.0'权限: <us原创 2020-05-28 16:38:20 · 844 阅读 · 0 评论 -
对象创建过程
对象创建过程1.检查类是否存在2.为对象分配内存空间3.为分配的内存空间分配零值4.给对象设置其他-5.执行构造函数1.检查类是否存在当虚拟机执行new关键字时,首先去运行时的常量池去 查找对象引用指向的对象是否被虚拟机加载,如果没有加载,进行类的加载过程、解析和初始化。如果加载,进行下一步操作。2.为对象分配内存空间当类元信息被加载之后,我们就可以从常量池找到对应的类元信息,通过类元信息来确定类型和后面需要申请的内存大小。3.为分配的内存空间分配零值对象的内存分配完成后,还需要将对象原创 2021-04-26 10:36:43 · 242 阅读 · 0 评论 -
垃圾收集机制原理
1、说说Glide中的with方法Glide是一个比较高效的第三方加载图片的框架,不用担心内存溢出的问题。当我们加载一张大图,Glide不会直接将图片的完整尺寸全部加载到内存中,而是会自动判断ImageView的大小,然后只将ImageView计算出来的大小图片像素加载到内存中,帮助我们节省内存的开支。它的核心代码是Glide.with(this).load(url).into(imageVi...原创 2020-04-21 11:04:00 · 5713 阅读 · 0 评论 -
android--面试集锦
四大组件activity 获取栈内activity启动模式“singleTask” 在task里始终保持一份activity对象,且清楚当前activity的上面的对象。“singleInstance” 创建一个新的task,activity 在task里始终保持一份,该 Activity 始终是其任务中的唯一 Activity。自定义view性能优化启动优化布局优化内存泄漏缓存机制frameworkandroid消息机制socket http设计模式jni插件化开发原创 2021-03-17 15:02:50 · 428 阅读 · 1 评论 -
JVM 内存区域 开线程影响哪块内存
一.简介OkHttp是一个高效的HTTP客户端,它有以下默认特性:支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接连接池减少请求延时透明的GZIP压缩减少响应数据的大小缓存响应内容,避免一些完全重复的请求当网络出现问题的时候OkHttp依然坚守自己的职责,它会自动恢复一般的连接问题,如果你的服务有多个IP地址,当第一个IP请求失败时,OkHttp会交替尝试你配置的其他IP,OkHttp使用现代TLS技术(SNI, ALPN)初始化新的连接,当握手失败时会回退到TLS 1.原创 2020-05-27 16:43:49 · 1207 阅读 · 0 评论 -
关于面试
接口抽象类区别懒加载快速排序事件分发链表相邻互换原创 2020-11-08 20:29:48 · 77 阅读 · 0 评论