
Java
文章平均质量分 71
AncelyF
这个作者很懒,什么都没留下…
展开
-
【鸿蒙BUG】开发游戏的一个登录界面,发现鸿蒙一个BUG(小记)
在用Dialog做登录弹窗的时候,在做窗口管理的时候我会把除最上层的窗口都hide,开始调用的是DIaLog的hide方法,其它手机开始测试都没 什么问题,后来测试发现在下拉状态栏操作一些东西的时候,后面影响的Dialog在左上角给显示出来了。然后能过复现发现是在点击华为分享的时候在同意协议的时候点取消必现。无敌大BUG死坑解决方法,重写Dialog的hide方法,去掉super自己做View的隐藏,用INVISIBLE 不能用GONE原创 2022-12-07 16:18:47 · 379 阅读 · 0 评论 -
对象与垃圾回收机制
虚拟机中对象的创建过程当JVM遇到一条字节码new指令的时候,会会检查这个类是否已经被加载,如果没有加载则通过类加载机制加载对应的.class文件 加载完的.class类信息是分配在方法区的加载成功后,开始分配内存分配内存有几种方式一种是指针碰撞,这种方式使用的垃圾回收机制是带垃圾整理一种是空闲列表,这种方式 使用的垃圾回收机制是标记算法分配内存会有多线程,所以会有线程安全问题,解决方法通过CAS来处理,失败继续CAS本地线程分配缓存(每次开启一个线程就会给该线程分配一块内原创 2021-11-06 23:15:23 · 159 阅读 · 0 评论 -
从ReentrantLock的实现看AQS的原理
前言Java中的大部分同步类(Lock、Semaphore、ReentrantLock等)都是基于AbstractQueuedSynchronizer(简称为AQS)实现的。AQS简介AQS是一种提供了原子式管理同步状态、阻塞和唤醒线程功能以及队列模型的简单框架核心思想是,如果被请求的共享资源空闲,那么就将当前请求资源的线程设置为有效的工作线程,将共享资源设置为锁定状态;如果共享资源被占用,就需要一定的阻塞等待唤醒机制来保证锁分配。这个机制主要用的是CLH队列的变体实现的,将暂时获取不到锁的线程加原创 2021-10-29 15:29:22 · 188 阅读 · 0 评论 -
ThreadLocal原理详解——原来ThreadLocal是这和强大的存在
ThreadLocal定义为每一个线程提供变量的副本,实现了线程的隔离,也可以保证线程的安全性。和ThreadLocal相关类ThreadLocal内部类ThreadLocalMapThreadLocalMap.Entry ThreadLocalMap内部类Thread类ThreadLocal是一个带泛型的类public class ThreadLocal<T> {}源码分析Android中最典型用到ThreadLocal地方在Looper里public final原创 2021-10-20 09:24:29 · 775 阅读 · 0 评论 -
Android 多线程:Thread理解和使用总结
线程和进程的区别.进程:操作系统运行程序时分配资源的最小单位,进程和进程之间是相互独立的线程: cpu调度的最小单位,它必须依赖于进程.线程在运行时会占用该进程的部分资源,线程之间是可以共享该进程所拥有的全部资源.但是线程与线程之间也有自己的独立空间,称之为线程私有空间.Android中进程和线程之间的关系启动一个App就会启动一个进程,进程名为其包名。一个进程里面会启动多个线程,线程必须依赖进程多线程引发的问题线程死锁导致进程Anr 原因:因为一个进程中多线程是资源共享的, 也就是都可以原创 2021-10-19 19:21:13 · 2292 阅读 · 0 评论 -
设计模式之代理模式
代理模式分为静态代理和动态代理静态代理就拿网络请求来说先定义一个网络请求统一接口INetworkRequester 里面有一个post方法public interface INetworkRequester{ void post();}网络请求框架有很多种比如早期的 Volley 现在的Okhttppublic class OkhttpNetworkRequester implements INetworkRequester{ public void post(){ Log.i("原创 2021-10-13 01:14:09 · 115 阅读 · 0 评论 -
Java注解,反射和泛型
注解作用和意义注解又称标注,是Java1.5引入的,注解本身没有任务意义,单独的注解就是一种注释,它需要结合反射,插桩技术才能体验其用处元注解: 注解上的注解@Target(ElementType.TYPE)@Retention(RetentionPolicy.CLASS)public @interface ARouter { String path(); String group() default "";}@Target 标识的是注解在什么上,比如class,方法原创 2021-10-12 00:49:27 · 216 阅读 · 0 评论 -
深入理解JVM
JVM:它是作用是将.class文件翻译成机器码.(首先通过类加载器将.class文件加载到运行时数据区(JVM管理的内存))-->通过执行引擎,将类放在运行时数据区的数据进行解释执行或JIT执行(比如一个方法JVM发现它执行了1000次或者1万次,这样JVM认为解释执行没有意义 ,JVM就会把这些代码直接编译成本地代码提高运行速度)它有二种加载方式:第一种是全部翻译出来,这样第一次加载的时候就会用掉很长时间 .第二种是执行行到哪一行就翻译哪一行也叫解释执行.VM运行时数据区:Java虚拟机在原创 2021-05-12 22:20:43 · 235 阅读 · 1 评论 -
Android游戏应用内悬浮球(不需要申请权限)
悬浮球踩过的坑公司的SDK要写一个登录界面,里面涉及到悬浮球,但是不能申请权限。起初想到的方案是利用游戏的一个Activity,通过下面代码找到容器viewView root = activity.findViewById(android.R.id.content);然后再把悬浮球View添加进去 View root = activity.findViewById(android.R.id.content); if (root instanceof Fram原创 2020-08-03 19:12:24 · 1084 阅读 · 5 评论 -
多线程: 锁的妙用之消费者,生产者的运用
有这样一个需求,每当一个生产机器生产出一个面包的时候,要等消费者消费完了再继续生产.package com.ancely.fyw;public class FoodDemo { private String mFoodName;//物品名 private int mFoodId;//物品ID private boolean isProducted; public synchronized void putFood(String foodName) { .原创 2020-05-31 21:56:29 · 177 阅读 · 0 评论 -
多线程并发之对synchronized和Lock的简单使用
锁比如有三个线程thread-0, thread-1, thread-3三个线程同时在执行一个带锁的方法时,如果thread-0先获得了锁,那么其它二个线程就只能外面等着,直到thread-0把锁给释放了,这个时候就由其它线程去争取这个锁.生活中的例子: 现在有三个人同时都要上厕所A,B,C . A先进入到了厕所,这个时候A就会把门给锁了,B,C就要在外面等,直到A上完出来把门打开,这个时候B,C才能有一个人进去,进去后也是锁门,出来也是解锁,然后继续下一个人.锁可以解决多线程中线程安全..原创 2020-05-31 21:24:05 · 232 阅读 · 0 评论 -
Java个人对线程和进程的理解及面试相关
进程: 操作系统运行程序时分配资源的最小单位,进程和进程之间是相互独立的线程: cpu调度的最小单位,它必须依赖于进程.线程在运行时会占用该进程的部分资源,线程之间是可以共享该进程所拥有的全部资源.但是线程与线程之间也有自己的独立空间,称之为线程私有空间.讲到线程,一个进程有多个线程,所以会有多线程并发问题出现.什么是并发: 并发就好比一条高速收费口(这就相当于一个进程),假如这个入口有8个收费口,就代表着这个进程开了8个线程一直在跑. 这时并发好比在一个小时一共有多少汽车通过了这个收费口.这就原创 2020-05-26 21:01:04 · 175 阅读 · 0 评论 -
Java个人对泛型的理解(二)之通配符
Java个人对泛型的理解(一)泛型中的通配符为 ?--它会让泛型使用起来更加灵活通配符有下面几种用法1: List<?> list = new ArrayList<>();2:List<? extends Activity> list = new ArrayList<>();3:List<? super Activity> list = new ArrayList<>();第一种用法称之为非限定通配符,它的...原创 2020-05-25 02:03:30 · 211 阅读 · 0 评论 -
Java个人对泛型的理解(一)
Java中的泛型<T>作用:是将运行时的异常转到编译时来处理,代码更健壮,更简洁,更灵活,复用性强AIShoes<T> ; T为类型参数AIShoes<Nike>中的Nike为实际类型参数AIShoes<T>: 这一整个为泛型类型AIShoes<Nike>: 整个称为参数化的类型也就是ParameterizedType用法: 作用在接口之上,比如一个鞋子接口public interface IShoes<...原创 2020-05-25 00:42:59 · 276 阅读 · 0 评论