
java
文章平均质量分 64
锐湃
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java 文件如何重命名
Java文件重命名方法比较:1)传统File.renameTo()简单但不跨文件系统,仅返回布尔结果;2)NIO的Files.move()功能更强大,支持跨文件系统操作和异常处理,可指定覆盖选项。后者提供更详细的错误信息,推荐优先使用。两种方法都支持跨目录重命名,但Files.move()在文件存在、权限不足等情况下的处理更完善。转载 2025-08-04 17:57:16 · 3 阅读 · 0 评论 -
nio FileChannel下载写入文件示例
nio FileChannel下载写入文件示例原创 2025-08-04 09:52:50 · 42 阅读 · 0 评论 -
获取Instant毫秒值
Java/Kotlin中Instant类的toEpochMilli()方法可将UTC时间转换为Unix纪元时间的毫秒级时间戳。该方法适用于时间比较、差值计算等场景,但需注意null检查和精度问题(会截断纳秒部分)。文章提供了获取当前时间和文件创建时间毫秒值的代码示例,并解释了毫秒时间戳的含义和使用场景。对于需要更高精度的情况,建议使用getEpochSecond()结合getNano()方法计算。转载 2025-08-02 18:43:09 · 26 阅读 · 0 评论 -
ArrayList 批量删除元素removeIf方法
Java 8引入的ArrayList.removeIf()方法通过Predicate接口实现批量删除元素,比传统迭代器删除更简洁安全。该方法接收一个条件判断函数,返回布尔值表示是否删除元素。示例展示了删除列表中的偶数和字符串长度小于3的元素,以及自定义对象Person的年龄过滤。removeIf()避免ConcurrentModificationException异常,是集合批量删除的推荐方式。该方法提高了代码可读性和操作效率,适用于各种条件过滤场景。转载 2025-07-22 11:43:45 · 29 阅读 · 0 评论 -
Kotlin 中@IntDef 与@StringDef 枚举 注解
Kotlin/Java中的@IntDef和@StringDef注解用于创建类型安全的常量组。@IntDef适用于整型常量(如状态码),内存占用小;@StringDef适用于字符串常量(如颜色名称),可读性更强。两者都需配合@Retention(SOURCE)使用,提供编译时检查但无运行时保障。选择依据:数字型用@IntDef,字符串型用@StringDef,复杂逻辑用枚举类。这些注解在Android开发中能平衡类型安全与性能。转载 2025-07-09 14:31:13 · 46 阅读 · 0 评论 -
Parcelable 实现生成器
Parceler如果系统不能直接支持您的类型,您可以为其写一个Parceler映射对象。您可以使用或@WriteWith@Parcelize@Parcelize@Parcelize。转载 2025-06-11 21:44:42 · 55 阅读 · 0 评论 -
String.format格式化浮点数保留指定小数位输出字符串
摘要:文章介绍了Java中String.format()方法格式化输出的用法。常用的占位符包括:%d(整数)、%s(字符串)、%f(浮点数)。重点演示了浮点数的格式化控制,通过%.nf的方式可以精确控制小数位数,其中n代表保留的小数位数。代码示例展示了如何将3.1415926格式化为3.141593(默认6位)、3(0位)、3.1(1位)和3.14(2位)四种不同精度输出。转载 2025-06-07 10:56:00 · 77 阅读 · 0 评论 -
Android开发—APT注解处理器详解,传参
自定义注解处理器的话需要用到2个第三方库和JavaPoet,还有Java自带的AbstractProcessor。:Java内置注解处理器,注解处理器核心工作都在这个类进行。:Google开源用来自动注册我们自己的注解处理器。JavaPoet:Java代码生成器,方便我们生成Java文件;我们按照上文说的APT处理annotation的基本流程来自定义。1、定义注解,比如@Route。转载 2024-12-25 00:49:23 · 196 阅读 · 0 评论 -
Android编译时技术(一)Javassist 基础使用
所谓的Javassist,其实就是如何生成一个Class文件或者修改一个Class文件的工具,包括对Class里的成员变量或者方法进行增加或修改。相比于ASM,Javassist最大的好处就是方便,简单,不用去关心字节码操作。转载 2024-12-24 01:28:39 · 182 阅读 · 0 评论 -
android注解之APT和javapoet
前面我们已经讲过注解的基本知识,对于注解还不太了解的,可以去看一下之前的文章,android 注解详解_袁震的博客-CSDN博客。之前我们在讲注解的时候,提到过APT和JavaPoet,那么什么是APT和JavaPoet呢?下面我们来详细讲解一下。1,APT是什么?转载 2024-12-24 01:08:48 · 85 阅读 · 0 评论 -
javassisit提升反射效率
Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京技术学院的数学和计算机科学系的 Shigeru Chiba 所创建的。它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态AOP框架。Javassist(JAVA编程ASSISTant)使Java字节码操作变得简单。它是一个用Java编辑字节码的类库;它使Java程序能够在运行时定义新类,并在JVM加载时修改类文件。转载 2024-12-24 00:59:20 · 138 阅读 · 0 评论 -
The thrown exception is too generic. Prefer throwing project specific exceptions to handle error
也就是说我们自定义异常需要更细化了,那么让我们看看都有哪些异常IllegalArgumentException 非法参数异常IllegalStateException 状态异常,Java环境或Java应用程序处于不适合所请求操作的状态IndexOutOfBoundsException 数组索引越界异常转载 2024-11-22 13:46:52 · 119 阅读 · 0 评论 -
用final声明的局部变量,能提升性能吗
因为当方法执行结束时,方法内的参数和局部变量会跟着方法一起结束,都会被回收,而内部类的生命周期可能比方法长(例如:线程)。如果允许修改外部局部变量,而外部方法已经结束,变量可能已经被回收,这会导致数据不一致和不可预测的结果。由于匿名内部类可能会在不同的线程中被执行,如果允许修改外部局部变量,可能会引发线程安全问题。的局部变量编译后的 Class 文件都是一样的,因此访问效率都是一样的。,可以确保在匿名内部类中使用的变量值在其创建时就被固定下来,不会在后续发生变化。的局部变量通常不会直接带来显著的性能提升。转载 2024-08-13 10:01:23 · 72 阅读 · 0 评论 -
基础-WeakReference
这四种状态只是一种说明,实际上Reference对象并没有任何的status字段,不过作为队列中的节点,它有一个next字段,当状态为Active时,其next为null,而当其为其它状态时,next一定不为null,而是指向队列中的下一个引用,如果其本身就是队列中的最后一个元素,则next指向其自身。可见,referent属性存储了其所引用的对象,而queue这个字段是可选的,前面说到,queue的作用保存对象将被回收的引用,由垃圾回收器负责往里面添加,但如果不提供,则没有这一过程。转载 2024-06-20 09:59:56 · 346 阅读 · 0 评论 -
Java 数据结构之队列(Queue)详解
通过enqueue()方法将元素入队,dequeue()方法将元素出队,peek()方法返回队列头部元素,size()方法返回队列当前元素个数,isEmpty()方法和isFull()方法检查队列是否为空或已满。但需要注意的是,由于数组的容量是固定的,当队列已满时,无法再添加新的元素,除非进行元素的出队操作。Queue接口是Java集合框架中定义的一个接口,它代表了一个先进先出(FIFO)的队列。它是Queue接口的扩展,可以方便地实现队列、栈和双向队列的功能,并提供了丰富的方法来操作和访问队列中的元素。转载 2024-06-05 13:42:01 · 3317 阅读 · 0 评论 -
Java时区处理 TimeZone.getTimeZone(“UTC“)
通用协调时(UTC, Universal Time Coordinated),格林尼治平均时(GMT, Greenwich Mean Time) 由于历史原因,这两个时间是一样的。北京时区是东八区,领先UTC八个小时,在电子邮件信头的Date域记为+0800。UTC + 时区差 = 本地时间。转载 2024-04-24 17:47:24 · 598 阅读 · 0 评论 -
Java时间处理(UTC时间和本地时间转换)TimeZone.getTimeZone(“UTC“)
协调世界时,又称世界标准时间或世界协调时间,简称UTC(从英文“Coordinated Universal Time”/法文“TempsUniversel Coordonné”而来),是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治标准时间。本文主要对UTC、GMT、CST等时间概念做简单的介绍,比较实用的在于本文最后一个小知识点:带时区格式的时间和本地时间格式两者之间的转换方法,再次只是对简单情况做处理,如果需要处理复杂的时间转换,可以百度找一下jar包。3 CST(北京时间)转载 2024-04-24 17:45:42 · 2489 阅读 · 0 评论 -
-UTC时间及时区获取
可以采用多种方法获取,这里只简单介绍两种:直接获取零时区时间、根据本地时间计算得出。UTC时间:世界统一时间,世界标准时间又称格林尼治平时或格林尼治时间。PS:UTC时间+时区差=本地时间。转载 2024-04-24 17:32:57 · 541 阅读 · 0 评论 -
时区TimeZone.getTimeZone(“GMT-8:00“)和TimeZone.getTimeZone(“America/Los_Angeles“)的区别
2)进一步测试发现,两个时区对同一个时间进行解析获取到UTC 时间戳是不一样的,进入夏令时时后者比前者少了3600000毫秒(夏令时的值),不进入夏令时时两者则相等。版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。从上面的结果可以看到"GMT-8:00"获取不到夏令时偏移,但是"America/Los_Angeles"可以获取到夏令时偏移量。这说明java,在获取时间戳时,会根据时区里的夏令时偏移自动减去多余的偏移量,获取到正确的UTC时间戳。转载 2024-04-24 17:29:41 · 732 阅读 · 0 评论 -
ART虚拟机内存分配原理浅析
简单总结了一下art虚拟机内存分配的原理,通过这些点我们可以对安卓里这些java对象如何分配有一个简单的认知,对排查内存相关问题,研究一些内存性能优化方案建立一个基础。ART虚拟机内存分配原理浅析。转载 2024-04-10 11:13:40 · 324 阅读 · 0 评论 -
java的finalize方法
我们通常用构造器来创建对象,而Finalize正好相反,构造方法执行对象的初始化操作,finalize方法执行对象的销毁操作.那我们什么时候需要使用finalize方法呢,我们都知道Java里垃圾回收器可以回收对象使用的内存空间,但是对象可能会持有很多资源比如Socket、文件句柄等,垃圾收集器无法回收这些资源,因此你需要使用finalize方法帮助GC回收这些资源,比如关闭打开的文件或者网元资源,删除临时文件等.转载 2024-04-10 11:05:41 · 224 阅读 · 0 评论 -
File.createTempFile创建临时文件
总结:临时文件能够使用默认路径,可以避免存在创建文件是因为路径错误导致创建文件失败的问题。如果需求中需要创建一个临时文件,这个临时文件可能作为存储使用,但在程序运行结束后需要删除文件,可以使用deleteOnExit方法。createTempFile() 方法,在指定的目录下创建一个temp文件,directory 类型为File ,如果路径不存在,则创建失败。可以得知,createNewFile() 方法,根据抽象路径创建一个新的空文件,当抽象路径指定的文件存在时,创建失败。返回值为 boolean;转载 2024-02-27 19:44:26 · 2157 阅读 · 0 评论 -
使用Gson库将List转换为JSON字符串
以上是三种不同的实现方法,用于将List转换为JSON字符串。方法一手动遍历List并添加引号和分隔符,方法二使用Gson库的toJson方法,方法三适用于泛型List,使用TypeToken来处理。根据实际需求选择合适的方法使用。方法三:使用Gson库的TypeToken将List转换为JSON字符串(适用于泛型List)方法二:使用Gson库的toJson方法将List转换为JSON字符串。方法一:手动遍历List并转换为JSON字符串。转载 2024-02-22 20:01:53 · 2920 阅读 · 0 评论 -
Gson字符串数组转成List对象(包括泛型操作)
通常情况下,Server端返回的json数据应该可以一次性完全解析,但是要是遇到server返回的json里又包含json字符串就得自己再手动解析一次了。我们知道json字符串解析成模型类型很简单,但是如果要把json数组字符串解析List对象,应该怎么办呢?现在开始着手解析这个json数组字符串。转载 2024-02-22 20:00:03 · 1995 阅读 · 0 评论 -
合并两个List并去重
【代码】合并两个List并去重。转载 2024-02-18 14:40:50 · 3559 阅读 · 0 评论 -
JDK对Http协议的Keep-Alive的支持,以JDK8为例
但后来客户端的主机突然出故障。 JDK自带的HttpURLConnection,默认启用keepAlive,支持HTTP / 1.1和HTTP / 1.0持久连接, 使用后的HttpURLConnection会放入缓存中供以后的同host:port的请求重用,底层的socket在keepAlive超时之前不会关闭。 Http协议对keep-alive的支持是基于TCP连接的成功建立,而TCP协议是对Http透明的,即TCP协议的Keep-Alive与Http的Keep-Alive是无关的。转载 2024-01-24 15:09:49 · 362 阅读 · 0 评论 -
java获取文件大小的方法
通过流式方法又有两种,分别是旧的java.io.*中FileInputStream的available()方法和新的java..nio.*中的FileChannel。本以为是文件类型的原因,于是又试了大小差不多的不同类型文件,结果发现绝大多数情况下只有300M以上的文件才能获取最准确的文件大小,300M以下的都会有一定的误差!通过这种方法获取的文件大小是2147483647,很明显,这是int类型所能表示的最大值2^31-1,究其原因是因为文件的大小超过了int所能表示的最大值!转载 2024-01-09 16:27:00 · 2803 阅读 · 0 评论 -
ThreadLocal:你不知道的优化技巧,Android开发者都在用
变量的生命周期与线程的生命周期是一致的。这意味着,如果一个线程一直不结束,那么它所持有的。是一个强大的工具,它可以使得每个线程都拥有自己独立的变量副本,从而避免了线程安全问题。开发中,多线程是一个常见的话题。适用于需要在线程间传递的局部变量,但不适合作为全局变量的替代品。的原理和使用技巧,希望这些知识能够帮助你更好地理解和使用它。方法来设置和获取线程的局部变量。原理及其使用技巧, 帮助你更好的理解和使用。的原理是基于每个线程都有一个独立的。方法时,会将值存储到当前线程的。方法时,会从当前线程的。转载 2024-01-02 13:57:42 · 86 阅读 · 0 评论 -
Map集合类型排序java实现
在Java中,集合是一种常用的数据结构,用于存储和组织数据。其中,Map是一种常用的集合类型,它提供了键值对的存储方式,可以根据键快速查找对应的值。然而,Map默认是无序的,如果需要按照特定的排序规则对Map进行排序,就需要使用一些特定的技巧和方法。本文将介绍在Java中如何对Map进行排序,并提供代码示例进行说明。转载 2023-12-25 17:26:07 · 1731 阅读 · 0 评论 -
Java——LRUCache
我们的链表使用的是双向带头带尾链表,因此在定义时需要定义prev和next,并且其中存储的是键值对,因此需要定义key和val@Override'}';转载 2023-12-25 17:20:37 · 50 阅读 · 0 评论 -
把String类型的小数点格式化为保留小数点后两位 String.format
把String类型的小数点格式化为保留小数点后两位 String.format转载 2023-12-08 20:25:14 · 3025 阅读 · 0 评论 -
Cannot inline bytecode built with JVM target 11 into bytecode that is being built with JVM target 1.
解决Cannot inline bytecode built with JVM target 11 into bytecode that is being built with JVM target 1.8. Please specify proper '-jvm-target' option原创 2023-11-27 17:38:34 · 1161 阅读 · 0 评论 -
判断字符串里是否有数字
本文介绍了两种判断字符串中是否包含数字的方法,分别是使用正则表达式和循环遍历。其中,使用正则表达式可以更简洁地实现判断逻辑。根据实际需求,选择合适的方法来判断字符串是否包含数字。©著作权归作者所有:来自51CTO博客作者mob64ca12eea322的原创作品java 如何判断字符串里是否有数字。转载 2023-10-31 14:43:53 · 2008 阅读 · 0 评论 -
5种方法实现Java判断字符串是否为数字
但是,需要注意的是,由于 Double.parseDouble() 方法可以将诸如 "3.14" 这样的字符串解析为有效的浮点数,因此,该方法可能对于严格意义上的“数字”定义有些宽松。[\d]*$"]开始的字符串,这个正则表达式表示字符串的开始可以是正负号,后面跟随任意数量的数字。但是,它认为像"123 "这样的字符串是整数,而实际上" "不是数字的一部分。这种方法非常简洁,但也非常严格,它将认为像"123 "这样的字符串不是数字,尽管" "是数字的一部分。转换失败,说明字符串不是数字,返回false。转载 2023-10-31 14:38:57 · 20967 阅读 · 0 评论 -
Java中利用数组随机生成复杂字符串当作密码
Java中利用数组随机生成复杂字符串当作密码转载 2023-10-30 20:18:44 · 192 阅读 · 0 评论 -
HashSet和TreeSet如何实现去重
比如你不传入匿名对象,添加的值为String类型,就会用String中的compareTo()方法来比较两个String值是否相同,不同则添加。首先,hashSet底层是数组+链表+红黑树,在添加时,通过hashCode(),得到一个hash值,通过hash值能得到对应的索引,即在数组中的位置,如果发现table索引所在的位置没有数据,直接存放进去,如果当前索引已有数据,就进行euqals比较【遍历比较】,若比较后都不相同,就加入在后边,否则不加入。转载 2023-10-23 14:56:36 · 211 阅读 · 0 评论 -
Apache Commons IO概述
Apache Commons IO库为File IO的常见操作提供了各种实用程序类,涵盖了广泛的用例。它有助于避免编写样板代码。Apache Commons IO库提供以下类别的类 -包下的这些类提供文件和字符串比较。以下是一些例子。- 提供用于读取,写入和复制文件的实用程序方法。这些方法适用于InputStream,OutputStream,Reader和Writer。- 提供在不使用文件对象的情况下处理文件名的方法。它以类似的方式在不同的操作系统上运行。转载 2023-10-07 17:11:18 · 800 阅读 · 0 评论 -
FileUtils文件工具类详解
FileUtils是Apache Commons IO工具库的一部分,提供了许多封装好的静态方法来操作文件和文件夹,减少了我们手动实现的复杂度。通过使用FileUtils,我们可以方便地复制、移动、删除、重命名文件,以及追加/替换文件内容等操作。通过本篇文章的介绍,我们了解了FileUtils的概述,安装步骤以及常用方法的使用。使用FileUtils,我们可以方便地处理文件和目录操作,减少了手动实现的复杂度,使得编程变得更加高效、简单。FileUtils文件工具类详解_笔记大全_设计学院。转载 2023-10-07 17:08:17 · 5105 阅读 · 0 评论 -
apache commons-io
commons-io 是 Java 文件 IO『第一库』是公认的,它的功能和代码质量都是极佳的,它好到没有人想到再写一个竞品与之竞争,这么干完全是费力不讨好的做法。转载 2023-10-07 16:24:52 · 955 阅读 · 0 评论 -
使用FILEUTILS读写文件,apache commons-io FileUtils
FILEUTILS补足了JAVA读写文件的弱势转载 2023-10-07 16:20:45 · 410 阅读 · 0 评论