java
文章平均质量分 79
zhouzhihao_07
在郑州发展android,需要合作的联系吧。(有创意创业的,投资的都可以合作)
展开
-
Android 线程池源码详解(一)
newCachedThreadPool(可缓存线程池):这是一个可缓存的线程池,它可以根据需要创建新的线程,当线程闲置时间超过一定时间后,这些线程会被回收。这种线程池适合处理突发的、短时间的任务,因为它可以快速扩展和收缩,但可能不适合需要长时间运行的任务,因为它可能会频繁地创建和销毁线程。因为一个cpu核心同一时间只能被一个线程持有,+1是为了防止任务中断,比如偶发的线程缺页中断,等其他原因导致的任务暂停,那么cpu就出现空闲时间,多一个来充分利用这个时间)直接使用CAS获取,避免阻塞。原创 2023-09-06 21:37:51 · 189 阅读 · 0 评论 -
java锁杂谈
如在操作的数据上加上版本version属性,每次操作版本递增,在取得数据的同时获取版本属性,在操作完数据后保存前,将之前的版本号与当前的版本号进行对比,如果一致则进行更新操作,否则代表数据以被修改,重试更新操作。重量级锁是指当锁为轻量级锁的时候,另一个线程虽然是自旋,但自旋不会一直持续下去,当自旋一定次数的时候,还没有获取到锁,就会进入阻塞,该锁膨胀为重量级锁。但是需要注意的是,在使用读写锁时,需要考虑锁的粒度和性能问题,避免因为锁的过多或者过少导致程序的性能下降或者数据不一致。原创 2023-09-05 17:36:54 · 167 阅读 · 0 评论 -
Hashmap源码详解
接着putVal函数的逻辑走,注释里面写了逻辑,table就是前面所说的Hashmap里面的数组,item就是链表的节点Node,还有一个数组下标用 index = (n - 1) & hash 来计算的原因,因为n是table的长度,是2^N,所以 这里的(n-1)就是11111,这样的,那么(n-1)&hash就是取hash的后N位,这样的下标index一定小于2^N ,不会下标数组越界。链表:一种在物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。原创 2023-08-27 12:29:14 · 136 阅读 · 0 评论 -
Java反射机制,动态代理,hook以及在Retrofit源码中的应用
Java的反射机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。然后我们回过头来看反射机制是 基础,动态代理里面也是用反射来实现的,动态代理对类里面的所有方法统一动态加入操作代码,java使用更多是对接口的,是生成了你想往里面塞的代码,hook把hook对象勾出来,换成自己想塞进去的,是一种手法。1.1.3使用对象.getClass() 方法,返回对象所属的类的 Class 对象。原创 2023-08-11 11:00:21 · 782 阅读 · 0 评论 -
Java三大特性,设计的六大原则的理解
抽象不应该依赖细节;封装的目的是隐藏类的内部实现细节,将类的内部状态和行为进行封装,使得外部代码无法直接访问和修改类的内部数据,只能通过类提供的公有接口(也称为类的方法)进行间接访问和操作。1.封装 指的是将类的成员变量(属性)和成员方法(方法)隐藏起来,通过使用访问修饰符(如private、public、protected等)来限制外部对类的直接访问,从而保护类的内部状态和行为。3.多态 指的是父类可以引用接受不同子类的对象实例,父类调用相同的方法,由于子类对方法的实现不同,产生不同的行为。原创 2023-07-26 20:29:49 · 267 阅读 · 0 评论 -
Android 面试java知识小结
三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同 [1]。-1 转换成二进制是 1000 0001 反码是符号位不变,其他取反 1111 1110 补码是 反码加1 那就是 1111 1111了,需要提醒的是正数的原码,反码,补码,一样。在计算机中,8位带符号二进制数的取值范围是[-128, 127],所以在Java中,byte类型的取值范围也是[-128, 127]。在Java中,byte类型的数据是8位带符号的二进制数。原创 2022-10-10 15:24:33 · 706 阅读 · 0 评论