avatar
文章
69
标签
17
分类
0
首页
时间轴
标签
分类
Hexo
首页
时间轴
标签
分类

Hexo

Android布局优化——merge的使用
发表于2021-05-19|Android
Android布局优化:< merge >的使用merge标签主要用于减少布局层数,加快视图绘制,提高UI性能 主要使用场景 当根布局为FrameLayout时 当子控件完全不需要依赖父容器时 当使用include引入另一个布局且该布局和当前布局的视图一致时,可以在子布局中使用merge 举例我们有layout1.xml和layout2.xml两个布局文件,其中layout1.xml: <FrameLayout> <include layout="@layout/layout2"/></FrameLayout> layout2.xml: <FrameLayout> <TextView /> <TextView /></FrameLayout> 最后在layout1.xml中的效果就为 <FrameLayout> <FrameLayout> <TextView /> <TextView...
死锁
发表于2021-04-26|Java基础
什么是死锁?​ 所谓死锁,就是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。 死锁产生的4个必要条件 互斥:进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占用。 请求和保持:当进程因请求资源而阻塞时,对已获得的资源保持不放。 不剥夺:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放。 换路等待:在发生死锁时,必定存在一个进程-资源的环形链 解决死锁的基本方法预防死锁 资源一次性分配:一次性分配所有资源,这样就不会再有请求了。 可剥夺资源:即某个进程获得了部分资源,但得不到其他资源的时候释放已有的资源 资源有序分配:系统给每类资源进赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反 避免死锁​ 系统在进行资源分配之前预先计算资源分配的安全性,若此次分配不会导致系统进入不安全的状态,则将资源分配给进程;否则,进程等待。 检测死锁​ 首先为每个进程和每个资源指定一个唯一的号码,然后简历资源分配表和进程等待表 解除死锁​ 当发现有进程死锁...
线程和进程的区别
发表于2021-04-26|计算机操作系统
​ 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。 ​ 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,线程自己基本很上不拥有系统资源,只拥有一点在运行中必不可少的资源,但是可与同属一个进程的其他的线程共享进程所拥有的全部资源 区别 进程和线程的主要区别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其他进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程撕掉就等于整个进程撕掉,所以多进程的程序要比多线程的程序强壮,但在进程切换时,耗费资源较大,效率较差。 一个程序至少有一个进程,一个进程至少有一个线程 线程的划分尺度小于进程,使得多线程程序的并发性高 进程在执行过程中有独立的内存单元,而多个线程共享内存,极大提高了程序的运行效率 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能独立执行,必须...
Java的GC垃圾回收算法
发表于2021-04-26|Java
GC如何判断一个对象为“垃圾”的​ Java堆内存中存放着几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还“存活”着,哪些已经“死去”。那么GC具体可以通过哪些手段来判断一个对象已经“死去”的 1、引用计数算法​ 该算法通过判断对象的引用数量来决定对象是否可以被回收,在此机制下,堆中的每个对象都存在一个引用计数器,当一个对象创建后被分配一个引用之后则对应的引用计数器+1,当引用完成后则引用计数器响应的-1,当某个对象的引用计数器为0的时候,则会被虚拟机作为垃圾进行回收,并释放其锁占用的内存空间。 优点:引用计数算法的执行效率高,程序执行所受的影响较小。 缺点:无法检测出循环引用(父对象引用子对象,子对象引用父对象),其内存空间无法被回收从而导致内存泄漏。 2、可达性分析算法​ 该算法是通过判断对象的引用链是否可达来决定对象是否会被作为垃圾进行回收。 ​ 该算法将程序的所有引用作为一张图,通过将一些GC Roots对象作为起始点,从这些节点开始向下搜索,搜索所做过的路径被称为引用链,如果某个GC Roots没有与任何...
Kotlin学习-ViewBinding的使用
发表于2021-04-16|Android•Kotlin
​ View Binding是一种功能,允许开发者更容易的编写与视图交互的代码。 ​ 一旦在一个模块中启用了View Binding,它就会为该模块中存在的每个XML布局文件生成一个绑定类 如何启用View Binding​ 在build.gradle的android{}中添加代码 buildFeatures{ viewBinding true } 如何使用View Binding在Activity中使用View Binding private lateinit var binding: ActivityMainBindingoverride fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root)} ...
leancloud获取ErrorCode方法
发表于2021-04-05|Android
在开发中不应该直接把ErrorMessage提示给用户,可以通过获取ErrorCode经过处理后提示给用户。 AVException avException = new AVException(e); int code = avException.getCode(); JSONObject errorcode = new JSONObject(); try { errorcode.put("code",code); errorcode.put("message",e.getMessage()); switch (errorcode.getInt("code")){ //在这里写处理errorcode的方法 } } catch (JSONException jsonException) { ...
三七互娱一面面试记录
发表于2021-03-28|面试记录
三七互娱一面面试记录 final可以修饰什么,有什么用? 什么时候需要用final修饰一个变量? static可以修饰什么,有什么用? String和StringBuffer和StringBuilder的区别? 说一种java中的锁? 乐观锁的实现方法? CAS自旋原理? 三次握手四次挥手过程? 最近的项目使用过哪些技术? databinding为什么能让代码中不使用findViewById()? 为什么使用okhttp? 职业规划? 毕设做的什么项目? 反问环节
Java-final关键字
发表于2021-03-26|Java基础
final作为Java中的关键字,可以用于修饰类、方法、参数和变量 final修饰类当用final修饰一个类时,标明这个类不能被继承。也就是说,如果一个类不需要有子类,类的细节不允许改变,并且确信这个类不会再被扩展,那么就可以使用final进行修饰 注意:被final修饰的类,类中的成员变量可以根据自己的实际需要设计为final。 final类中的成员方法都会被隐式的指定为final方法。 final修饰方法如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。可以将方法锁定,防止任何继承类修改它的意义和实现。 final修饰变量用final修饰的变量表示常量,只能被赋值一次,赋值后无法改变。 当final修饰一个基本数据类型时,表示该基本数据类型的值一旦在初始化后便不能发生变化 如果final修饰一个引用类型时,则再起初始化之后便不能再让其只想其他对象了,但该引用所指向的对象的内容是可以发生变化的。因为引用的值是一个地址,final要求值,即地址的值不发生变化 final修饰一个成员变量(属性),必须要显式初始化。一共有两种初始化方式:一种是在变量声明的...
Java-static关键字
发表于2021-03-26|Java基础
​ static是静态修饰符,可以用来修饰成员变量和成员方法,也可以形成静态static代码块。 static变量static修饰的变量被称为静态变量,没有用static修饰的变量被称为实例变量,两者之间的区别是: ​ 静态变量是随着类加载时被完成初始化的,它在内存中仅有一个,且JVM也只会为其分配一次内存,同时类的所有实例都共享静态变量,可以直接通过类名来访问它。 ​ 而实例变量是伴随着实例的,每创建一个实例就会产生一个实例变量,并随着实例的消失而消失。 什么时候会使用static修饰变量 当分析对象中所具备的成员变量的值都是相同的,那么这个成员就可以被static修饰。 只要数据在对象中都是不同的,就是对象的特有数据,必须储存在对象中,是非静态的。 如果是相同的数据,对象不需要做修改,只需要使用即可,不需要储存在对象中,是静态的。 static方法​ 静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能使用this或super ...
Android线程池
发表于2021-03-26|Android
Android中常见的线程池有四种,分别是FixedThreadPool、CachedThreadPool、ScheduledThreadPool、SingleThreadExecutor。 FixedThreadPool线程池是通过Executors的new FixedThreadPool方法来创建,特点是该线程池中的线程数量是固定的,即使线程处于闲置的状态,它们也不会被回收,除非线程池被关闭,当所有的线程都处于活跃状态时,新任务就处于队列中等待线程来处理。 FixedThreadPool只有核心线程,没有非核心线程 CachedThreadPool线程池是通过Executors的new CachedThreadPool来创建的它是一种线程数量不固定的线程池,它没有核心线程,只有非核心线程,当线程池中的线程都处于活跃状态,就会创建新的线程来处理新的任务,否则就会利用闲置的线程来处理新的任务。线程池中的线程都有超时机制,时长为60s,超过这个时间,闲置的线程就会被回收。这种线程池适合处理大量并且耗时较少的任务。 ScheduledThreadPool线程池是通过Executo...
1…4567
avatar
丨小小丶
文章
69
标签
17
分类
0
Follow Me
最新文章
Hello World2026-07-14
lua基础2022-08-07
C#单例模式基类2022-05-14
C#关键字之virtual2022-05-14
unityAndroid如何判断点击到的是UI界面2022-05-11
标签
Mysql unity 游戏开发 C# Kotlin Java基础 计算机操作系统 置顶 代码以外 重点 计算机网络 Android Lua 数据结构 面试记录 博客搭建 Java
归档
  • 七月 2026 1
  • 八月 2022 1
  • 五月 2022 4
  • 三月 2022 4
  • 二月 2022 2
  • 一月 2022 3
  • 十月 2021 2
  • 九月 2021 2
网站信息
文章数目 :
69
本站总字数 :
30.4k
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2020 - 2026 By 丨小小丶
鄂公网安备 42010502001368号
鄂ICP备2026035900号-1