Java运行时通过子类获取父类的泛型信息 Java泛型 在Java中,泛型是通过擦除法来实现的,这意味着无法在运行时直接获取到对象的泛型信息,因为所有的泛型参数全部会被替换为Object,例如: 1List<Person> personList = new ArrayList(); 上面这行代码在运行时与以下代码无异: 1List personList = new ArrayList(); 通过子类来保存父类泛型参数中的类型 2025-11-07 #java
Android ScrollView 子组件设置marginTop后底部内容被遮挡 问题代码 123456789101112131415161718192021222324252627282930313233343536373839404142434445<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLay 2025-10-29 #Android
使用fvm导致一些CLI工具无法找到flutter命令的解决方案 在使用fvm时由于Flutter命令需要fvm代理,例如使用如下形式:fvm flutter,除非你的环境变量设置了其中一个版本的Flutter SDK的路径,否则直接使用flutter命令会提示找不到命令。并且有些时候会遇到一些令人费解的问题,例如当你在.zshenv文件(如果你使用其他shell,可能是其他的环境变量文件)中设置了正确的Flutter SDK路径,但是尝试运行which dar 2025-07-13 疑难杂症 #Flutter
如何解决Flutter项目编译时Java版本与Gradle版本不兼容的问题 问题报错 这类问题一般都有类似这样的报错信息: 反正我是遇到这个报错很多次了,看得眼烦心烦,但是每次迫于项目的截止时间,没有仔细研究过这个问题究竟是如何产生的,基本都是网上胡乱搜一波解决方案然后顶着一堆warnings跑项目,今天彻底来解决一下这个问题 问题原因 上面的错误提示很明显,就是我们的项目使用的gradle版本与当前Flutter使用的Java版本不兼容,然而,上面引起报错的项目是用F 2025-07-12 疑难杂症 #Flutter #java
Java类加载阶段的一些细节 注意,本文所说的加载,是类加载这个过程的第一个阶段,而不是指的类加载的全部过程 加载(Loading) 从不同的来源将类文件(.class)转化为二进制流加载到内存中,来源可以是本地磁盘、jar包中的类、甚至可以从网络上动态下载类。然后会通过这个二进制流将数据转化成一个代表类的Class对象,并且在元空间中存储该类的信息 这里有一个容易混淆的概念,方法区,永久代以及元空间的关系。方法区只是一个规 2025-06-14 #java
RecyclerView缓存机制 RecyclerView之所以能支撑起大量列表项显示的场景,离不开其优秀的缓存机制 多级缓存 RecyclerView采用了多级缓存机制,按照优先级排列如下: 缓存 保存位置 一级缓存 mChangedScrap、mAttachedScrap、mCachedViews 二级缓存 mViewCacheExtension 三级缓存 mRecyclerPool 一级缓存 mC 2025-06-10 移动开发 #Android
Kotlin中的"静态方法" 在Kotlin中,弱化了静态方法这个概念,使得我们想要创建静态方法变得不那么直观,并且,有些方式创建出来的"静态方法"还不是真正的静态方法,这里一一介绍 假的静态方法 使用这类方式创建出来的"静态方法"只是在调用上看起来像是静态方法,但在jvm看来并不是 单例类 object 使用object关键字标注的类会被视为单例类,Kotlin会保证这个类在运行时不会 2025-05-02 #Kotlin
数据库索引 索引的结构 大部分DBMS都会采用B+树实现索引,这种数据结构可以提高查询时的效率,假设有如下表: PID BID AMOUNT 1001 B1 5000 1005 B2 3000 1010 B3 9000 我们可以对PID建立索引(若PID为主键,数据库会为我们自动创建索引),索引呈现出来的树结构如下: 123 [1005] / \[1 2025-05-01 #数据库
Dart Isolate入门 Dart多线程 Isolate 入门 什么是Isolate Isolate就是Dart中的多线程,之所以不称为Thread,而是称为Isolate,是因为它与传统线程的概念有所区别,见如下表格 特性 Isolate Thread 内存共享 不共享内存 可以共享内存 通信方式 ReceivePort和SendPort 共享变量或synchronized关键字 数据竞争 无数据竞 2025-03-23 杂项 #Dart #Flutter
如何检测Token是否过期 除了向服务器发起请求验证token是否过期以外,一些类型的token是直接将过期时间储存在token之中的,我们可以通过这一点在客户端本地验证token是否过期。 token的构成 token其实就是三个东西以小数点分隔开的字符串 2025-02-01 杂项