- 博客(86)
- 收藏
- 关注
原创 ConstraintLayout-控件设置为gone跟设置为invisible一样的效果?
时,布局不会立即重新计算和更新,需要手动触发布局更新。方法强制重新布局,确保布局系统重新计算所有控件的位置和大小。在代码中将中间的某个控件设置为。,布局在加载时就已经正确计算好了。水平排列的一行控件,互相通过。
2025-05-29 09:58:39
196
原创 Java-序列化
由于在系统底层,数据的传输形式是简单的字节序列形式传递,即在底层,系统不认识对象,只认识字节序列,而为了达到进程通讯的目的,需要先将数据序列化,而序列化就是将对象转化字节序列的过程。相反地,当字节序列被运到相应的进程的时候,进程为了识别这些数据,就要将其反序列化,即把字节序列转化为对象无论是在进程间通信、本地数据存储又或者是网络数据传输都离不开序列化的支持。而针对不同场景选择合适的序列化方案对于应用的性能有着极大的影响。
2025-02-07 17:28:59
1043
原创 JMM、volatile、synchronized、锁
早期计算机中cpu和内存的速度是差不多的,但在现代计算机中,cpu的指令速度远超内存的存取速度,由于计算机的存储设备与处理器的运算速度有几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(Cache)来作为内存与处理器之间的缓冲:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存之中,这样处理器就无须等待缓慢的内存读写了。在计算机系统中,寄存器划是L0级缓存,接着依次是L1,L2,L3(接下来是内存,本地磁盘,远程存储)。
2024-11-01 18:11:30
955
原创 AbstractQueuedSynchronizer
队列同步器AbstractQueuedSynchronizer(以下简称同步器或AQS),是用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作。并发包的大师(Doug Lea)期望它能够成为实现大部分同步需求的基础。
2024-10-31 12:36:28
630
原创 Java-阻塞队列和线程池
1)支持阻塞的插入方法:意思是当队列满时,队列会阻塞插入元素的线程,直到队列不满。2)支持阻塞的移除方法:意思是在队列为空时,获取元素的线程会等待队列变为非空。在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序整体处理数据的速度。在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。
2024-10-12 10:15:05
1156
原创 Java-并发基础
4)环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源;,Pn正在等待已被P0占用的资源。2)请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。两个线程在尝试拿锁的机制中,发生多个线程之间互相谦让,不断发生同一个线程总是拿到同一把锁,在尝试拿另一把锁时因为拿不到,而将本来已经持有的锁释放的过程。
2024-09-30 16:38:55
1018
原创 Java-多线程
线程是程序执行的一条路径, 一个进程中可以包含多条线程多线程并发执行可以提高程序的效率, 可以同时完成多项工作答:run是函数调用 和线程没有任何关系, .start会走底层 会走系统层 最终调度到 run函数,这才是线程。
2024-09-24 20:03:57
1037
原创 JNI DETECTED ERROR IN APPLICATION- unexpected jboolean value- 102
在使用 JNI(Java Native Interface)进行开发时,正确配置编译器优化参数是非常重要的,尤其是为了避免由于优化导致的意料之外的行为。C编译器优化等级设置的是。
2024-09-10 11:24:56
405
原创 Java-代理、Retrofit
静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者是继承相同父类。一般来说,被代理对象和代理对象是一对一的关系,当然一个代理对象对应多个被代理对象也是可以的。:需要实现抽象角色接口,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。静态代理,一对一则会出现时静态代理对象量多、代码量大,从而导致代码复杂,可维护性差的问题,一对多则代理对象会出现扩展能力差的问题。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。
2024-09-06 10:18:13
621
原创 Java-注解、反射、ButterKnife
Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。注解是元数据的一种形式,提供有关于程序但不属于程序本身的数据。注解对它们注解的代码的操作没有直接影响。注解本身没有任何意义,单独的注解就是一种注释,他需要结合其他如反射、插桩等技术才有意义。
2024-09-04 21:25:22
1284
原创 Java-泛型
Java泛型(generics)是JDK5中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数类型,也就是说所操作的数据类型被指定为一个参数。为了向下兼容,虚拟机其实是不支持泛型,所以Java实现的是一种伪泛型机制,也就是说Java在编译期擦除了所有的泛型信息,这样Java就不需要产生新的类型到字节码,所有的泛型类型最终都是一种原始类型,在Java运行时根本就不存在泛型信息。
2024-09-02 20:31:48
1282
原创 Android-前后台切换监听
中判断界面数量是否有新增和是否正在销毁,就可区分当前是被遮住了还是在销毁界面还是退到后台了。自然就是监听切换回前台的函数了。3、退到后台后,此时当前。
2024-07-26 12:37:19
627
原创 Python-模块、找不到已下载的模块?
模块定义别名import 模块名 as 别名# 功能定义别名from 模块名 import 功能 as 别名# 模块别名# 功能别名sl(2)新建⼀个Python⽂件,命名为,并定义testA函数。
2024-07-23 14:59:54
395
原创 Python-异常
在Python中,抛出⾃定义异常的语法为 raise 异常类对象。需求:密码⻓度不⾜,则报异常(⽤户输⼊密码,如果输⼊的⻓度不⾜3位,则报错,即抛出⾃定义异常,并捕获该异常)。# ⾃定义异常类,继承Exception# 设置抛出异常的描述信息return f'你输⼊的⻓度是。
2024-07-22 22:12:57
304
原创 Python-多态、类属性和实例属性、类⽅法和静态⽅法
类属性只能通过类对象修改,不能通过实例对象修改,如果通过实例对象修改类属性,表示的是创建了⼀个实例属性。来标识其为类⽅法,对于类⽅法,第⼀个参数必须是类对象,⼀般以。
2024-07-22 18:44:48
200
原创 Python-继承、私有权限
在Python中,可以为实例属性和⽅法设置私有权限,即设置某个实例属性或实例⽅法不继承给⼦类。设置私有权限的⽅法:在属性名和⽅法名 前⾯ 加上两个下划线 __。self.kongfu = '[古法煎饼果⼦配⽅]'print(f'运⽤class Master(object) : def __init__(self) : self . kongfu = '[古法煎饼果⼦配⽅]' def make_cake(self) : print(f'运⽤ {
2024-07-22 10:05:50
453
原创 Python-⽂件和⽂件夹的操作
readlines可以按照⾏的⽅式把整个⽂件中的内容进⾏⼀次性读取,并且返回的是⼀个列表,其中每⼀⾏的数据为⼀个元素。num表示要从⽂件中读取的数据的⻓度(单位是字节),如果没有传⼊num,那么就表示读取⽂件中所有的数据。模式:如果⽂件不存在则创建该⽂件;name:是要打开的⽬标⽂件名的字符串(可以包含⽂件所在的具体路径)。mode:设置打开⽂件的模式(访问模式):只读、写⼊、追加等。注意:此时的 f 是 open 函数的⽂件对象。2. r 模式:如果⽂件不存在则报错。作⽤:⽤来移动⽂件指针。
2024-07-18 20:05:37
842
原创 Python-对象、默认函数
注意:打印对象和self得到的结果是⼀致的,都是当前对象的内存中存储地址。中的self参数,不需要开发者传递,python解释器会⾃动把当前的对象引。当使⽤print输出对象的时候,默认打印对象的内存地址。对象属性既可以在类外⾯添加和获取,也能在类⾥⾯添加和获取。⽅法,那么就会打印从在这个⽅法中 return 的数据。⽅法,在创建⼀个对象时默认被调⽤,不需要⼿动调⽤。当删除对象时,python解释器也会默认调⽤。self指的是调⽤该函数的对象。创建对象的过程也叫实例化对象。⽅法的作⽤:初始化对象。
2024-07-12 17:03:08
301
原创 Python- lambda、⾼阶函数
将传⼊的函数变量func作⽤到lst变量的每个元素中,并将结果组成新的列表(Python2)/迭代器(Python3)返回。函数式编程⼤量使⽤函数,减少了代码的重复,因此程序⽐较短,开发速度较快。注意:这⾥的可变参数传⼊到lambda之后,返回值为元组。注意:两种⽅法对⽐之后,发现,⽅法2的代码会更加简洁。需求:⼀个函数完成计算任意两个数字的绝对值之和。需求:计算 list1 序列中各个数字的累加和。计算的结果继续和序列的下⼀个元素做累积计算。传⼊的参数func必须接受2个参数。序列中各个数字的2次⽅。
2024-07-11 15:40:55
453
原创 Android手机拍照或从本地相册选取图片设置头像-高版本适配
GitHub传送门新增FileProvider图片裁减需要的临时权限Android 10只能读取自己APP目录下的文件可以添加requestLegacyExternalStorage解决
2024-07-04 16:31:23
669
原创 grep使用
这里的-name "*.java"表示搜索所有扩展名为.java的文件,-exec后跟命令执行,{}代表每个找到的文件名。如果你想使用正则表达式搜索,可以直接在grep命令中使用。在需要检索的目录里打开bash窗口可以不写android-source。这里的-r选项表示递归搜索所有子目录。表示一个或多个字母数字字符。
2024-06-28 18:32:30
385
原创 Android-悬浮窗口
在Android系统中,如果应用需要弹出一个悬浮窗口,就需要申请一项特殊权限在Android O之前的系统中申请了该权限后,再给对应的window设置悬浮窗口就可以显示出来。但是在Android O的系统中,google规定申请悬浮窗口才能显示出来,“TYPE_APPLICATION_OVERLAY”是重点。另外说一下:申请权限不能使用 requestPermissions 方法。
2024-06-27 17:42:45
994
原创 Python-运算符、公共方法、容器类型转换、推导式
注意:range()⽣成的序列不包含end数字。作⽤:将某个序列转换成元组。作⽤:将某个序列转换成列表。作⽤:将某个序列转换成集合。
2024-06-26 11:17:59
220
原创 org.jetbrains.kotlin.kapt3.base.KaptContext cannot access class Context
升级Android studio后报错。
2024-06-20 11:09:25
1404
原创 Python-元组
元组特点:定义元组使⽤⼩括号,且逗号隔开各个数据,数据可以是不同的数据类型# 多个数据元组# 单个数据元组t2 = (10,)注意:如果定义的元组只有⼀个数据,那么这个数据后⾯最好也添加逗号,否则数据类型为唯⼀的这个数据的数据类型t2 = (10,)t3 = (20)
2024-06-18 18:13:05
281
原创 Python-列表
注意:reverse表示排序规则,reverse = True 降序, reverse = False 升序(默认)列表追加数据的时候,直接在原列表⾥⾯追加了指定数据,即修改了原列表,故列表为可变类型。如果append()追加的数据是⼀个序列,则追加整个序列到列表。需求:查找⽤户输⼊的名字是否已经存在。
2024-06-14 17:11:43
327
原创 Python03-字符串
center():返回⼀个原字符串居中对⻬,并使⽤指定字符(默认空格)填充⾄对应⻓度 的新字符串,语法和ljust()相同。rjust():返回⼀个原字符串右对⻬,并使⽤指定字符(默认空格)填充⾄对应⻓度 的新字符串,语法和ljust()相同。注意:capitalize()函数转换后,只字符串第⼀个字符⼤写,其他的字符全都⼩写。join():⽤⼀个字符或⼦串合并字符串,即是将多个字符串合并为⼀个新的字符串。所谓修改字符串,指的就是通过函数的形式修改字符串中的数据。split():按照指定字符分割字符串。
2024-06-11 20:21:15
617
原创 鸿蒙DevEco Studio 4.1 Release-模拟器启动方式错误
4、任务管理器里面有没有qemu进程,单独启动提示找不到glib-2.0-0.dll,单独下载dll,放置到系统目录后重启电脑,再启动qemu,提示无法正常启动。1、“windows虚拟机监控程序平台”、"虚拟机平台"已开启。目录:File-> Settings-> SDK。目录:File-> Settings-> SDK。5、卸载System-image再重新安装。Size on Disk 显示1.0MB。6、卸载Emulator再重新安装。2、CPU虚拟化已启用。没有权限查看处理指导。
2024-05-08 10:33:47
2664
16
原创 DevEco Studio 3.1.1 Release没有代码补全提示
3、在菜单栏File->Close Project,关闭工程,然后在向导页面,通过Open Project打开原工程。Ctrl+Alt+S), –> 打开设置对话框。在 Basic 上点击右键,去除原来的 Ctrl+空格 绑定,然后添加 Alt+/ 快捷键。接着在右边的树型框中选择 Main menu –> Code –> Completion.移除原来的Cycle Expand Word 的 Alt+/ 快捷键绑定。目前官网最新版就是3.1.1 Release。在左侧的导航框中点击 KeyMap。
2024-05-07 18:03:28
521
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人