Java核心技术
文章平均质量分 95
亲爱的朋友,我想和你分享一些关于Java核心技术的文章。这些文章涵盖了Java语言的各个方面,从基础语法到高级编程技巧,让你深入了解Java的奥秘。无论你是初学者还是有一定经验的开发者,这些文章都将为你提供重要的参考和指导。希望你能喜欢这些文章,并从中获得更多的启示和帮助。
凡夫贩夫
独立开发者,服务范围:软件定制;技术方案编写;技术咨咨询;
展开
-
一篇文章带你彻底搞懂Unicode、UTF-8、GB2312、GBK之间的关系
这是一篇深入浅出的技术文章,详细介绍了GBK、GB2312和UTF-8三种常见字符编码的特点及彼此之间的关系。通过阅读本文,你将了解到这些编码的背景、原理以及在实际应用中的差异和优势。无论你是初学者还是有一定编码基础的开发者,本文都能帮助你更好地理解字符编码的重要性,并为你在多语言环境下的开发工作提供宝贵的指导原创 2024-02-18 14:38:52 · 22053 阅读 · 0 评论 -
基于策略模式和简单工厂模式实现zip、tar、rar、7z四种压缩文件格式的解压
这篇技术文章深入探讨了基于策略模式和简单工厂模式实现四种常见压缩文件格式的解压方法。通过阅读该文章,你将了解到如何利用这两种设计模式来实现灵活、可扩展的解压功能,同时适应不同的压缩文件格式。如果你对设计模式和文件处理感兴趣或刚好碰到类似的情况,那么这篇文章绝对值得一读。它会为你打开一个新的思路,并帮助你提升在软件开发中的技能和效率。最近我遇到了一个需求,需要上传一个压缩包文件,其中包含目录和文件。上传成功后,后台会自动解压该文件,并保持压缩包内目录和文件的结构不变,然后将该结构渲染到页面上。这个需求其实相对原创 2023-12-29 18:21:15 · 1646 阅读 · 1 评论 -
掌握iText:轻松实现固定pdf模板的动态数据填充
如果你在工作中需要处理大量的PDF表单,那么使用iText5实现固定PDF模板的动态数据填充,将是一种非常有效的方法。这篇技术文章详细介绍了如何使用iText5库来读取已有的PDF模板,并动态地填充表单数据,生成最终的表单文件。通过这种方法,你可以大大提高工作效率,同时保证表单的格式和布局的统一性。无论你是企业员工、自由职业者还是个人用户,都可以从中受益。如果你想要掌握这种有用的技术,不妨看看这篇文章,相信会对你有所帮助。在工作和生活中,很多人都会遇到需要填写各种业务表单的情况。这些表单可能是申请表、报销单原创 2023-12-24 12:13:16 · 2484 阅读 · 2 评论 -
掌握Guava的并发工具:轻松应对复杂并发场景
Guava提供了一些丰富的并发工具,帮助开发者更好地处理并发编程中的问题。例如,Guava提供了ListenableFuture、CountDownLatch、CyclicBarrier等工具。这些工具对Java并发包(java.util.concurrent)进行了扩展,使其功能更强大,使用更方便。具体来说,其中ListenableFuture是Guava对Java Future的扩展,它允许你注册回调函数,当Future的计算结果可用时,这个回调函数会被执行。CountDownLatch和Cyclic原创 2023-12-21 18:28:16 · 1137 阅读 · 2 评论 -
掌握Guava的IO操作工具:让你的文件处理更简单、高效
Guava是一个Google开发的Java库,其中包含了大量实用的工具类,其中就包括IO操作工具类。这些IO操作工具类可以极大地简化Java IO编程,提高代码的可读性和可维护性。通过使用这些工具类,我们可以更加方便地进行文件处理、流处理和资源访问等操作。原创 2023-12-21 18:23:35 · 1236 阅读 · 0 评论 -
掌握Guava字符处理工具:让你的代码更易读、高效
Guava 提供了丰富的字符处理工具类,让你能够轻松进行字符匹配、转换、拆分、连接和转义等各种操作。这些实用工具类不仅提供了常见的字符处理功能,而且还为你提供了更高效、更简洁的方式来处理字符串。无论是需要对字符串进行灵活的匹配和过滤,还是需要对字符串进行快速的连接和拆分,Guava 的字符处理工具类都能满足你的需求。无需编写繁琐的逻辑代码,你可以直接使用这些工具类来完成各种字符处理任务,让你的代码更加清晰、简洁和易于维护。无论是在日常开发中还是在处理大量文本数据时,Guava 的字符处理工具类都能够为你提供原创 2023-12-16 17:35:43 · 1118 阅读 · 3 评论 -
掌握Guava集合工具:简化复杂集合操作,让代码更优雅
无论你是初级开发者还是经验丰富的Java工程师,掌握Guava类库的集合工具将成为你代码中的一把利剑。在这篇技术文章中,我们将深入探索Guava集合工具的使用方法、独特特点以及广泛的应用场景。通过学习如何优雅地处理Java集合,你将能够提升代码的可读性、简化复杂的集合操作,并在性能方面获得巨大的提升。无论你是想要解决数据结构问题,还是寻求更高效的代码实现方式,本文都将为你提供宝贵的指导和实用技巧。不容错过的一篇文章,让我们一起探索Guava集合工具的奇妙世界!原创 2023-12-14 23:33:13 · 964 阅读 · 1 评论 -
掌握iText:轻松处理PDF文档-高级篇-添加页眉和页脚
本文介绍了如何使用iText编程库为PDF文档添加自定义的页眉和页脚。通过指定位置、大小、字体和颜色等属性,你可以将文本、图像或其他元素添加到每一页的固定位置,实现专业、可读的自定义页眉和页脚效果。这对于需要批量处理大量PDF文档或需要更精细控制的用户来说非常适用。文章提供了详细的代码示例和依赖配置,帮助你快速上手。如果你想要为PDF文档添加页眉和页脚,这篇文章会给你带来很大的帮助。原创 2023-12-14 23:18:32 · 2484 阅读 · 0 评论 -
掌握iText:轻松处理PDF文档-高级篇-加密和解密
iText作为一个功能强大、灵活且广泛应用的PDF处理工具,在实际项目中发挥着重要作用。通过这些文章,读者可以深入了解如何利用iText进行PDF的创建、编辑、加密和提取文本等操作,为日常开发工作提供了宝贵的参考和指导。掌握iText:轻松处理PDF文档-基础篇掌握iText:轻松处理PDF文档-进阶篇。原创 2023-12-12 19:39:03 · 1606 阅读 · 4 评论 -
掌握iText:轻松处理PDF文档-高级篇-添加水印
可能你会经常遇到类似的场景, 为了保护敏感信息和版权,需要在PDF文件上添加水印,在类似这样的需求上再作一个延伸,可能就是两种情况:第一种,程序在处理数据后,生成新的pdf文档的同时增加水印;第二种,pdf文档已经存在,需要在导出的时候,给已经存在的pdf文档增加水印。那么这两种需求,如果使用iText5,应该怎么实现呢?原创 2023-12-12 19:25:36 · 3887 阅读 · 1 评论 -
掌握iText:轻松处理PDF文档-进阶篇
下载字体:从字体天下网下载一个字体,需要注意的是在商业应用中版权问题,就下载这个吧,看着不错;使用自定义的字体也很简单,即在使用字体之前要先注册一下,注册完成后就可以使用了。@Testtry {document.add(new Paragraph("白日依山尽,黄河入海流。", font));document.add(new Paragraph("欲穷千里目,更上一层楼。", font));原创 2023-12-10 21:27:30 · 1962 阅读 · 1 评论 -
掌握iText:轻松处理PDF文档-基础篇
iText是一个强大的PDF处理库,可以用于创建、读取和操作PDF文件。它支持PDF表单、加密和签署等操作,同时支持多种字体和编码。maven的中央仓库中的最新版本是5.X,且iText5不是完全免费的,但是基础能力是免费使用的,不过需要遵循AGPLv3协议。iText7是iText5的后继版本,相比之下有更好的性能和更全面的PDF支持。在实际开发中,可以根据需求选择不同的iText版本。原创 2023-12-10 21:16:19 · 2208 阅读 · 0 评论 -
深入了解Java 8日期时间新玩法:DateTimeFormatter与ZoneOffset的使用
在这篇文章中,我们将深入探讨Java中的DateTimeFormatter和ZoneOffset类的功能和使用方法。这些类是在Java 8中引入的新的日期时间API的一部分,它们为我们提供了更灵活、更易用的日期和时间处理能力。尽管这些类在Java 8中已经出现,但是对许多开发人员来说,它们可能仍然相对陌生。因此,本文旨在帮助读者更好地理解这些类的基本概念、核心方法和实际应用场景。通过本文的介绍,您将了解如何使用DateTimeFormatter和ZoneOffset类来处理日期时间,以及如何在实际开发中应原创 2023-12-07 16:26:57 · 1594 阅读 · 1 评论 -
深入了解Java 8日期时间新玩法之Year、YearMonth、MonthDay、DayOfWeek
Java 8中,Year类是一个不可变、线程安全的类,用于表示和操作年份。它主要用于处理与年份相关的日期和时间操作,例如获取当前年份、创建指定年份的Date对象等。YearMonth类代表一个特定的年和月,可以表示任何合法的年和月组合,例如2020-02。它主要用于处理与年和月相关的日期和时间操作。在Java 8中,MonthDay是一个非常实用的类,它用于处理只有月和日的信息,而没有年和其他时间信息的情况。这可以用于处理生日、纪念日和星座等周期性问题。Java 8中的DayOfWeek是一个不可变的、线程原创 2023-12-07 16:16:13 · 1387 阅读 · 0 评论 -
深入了解Java Duration类,对时间的精细操作
Duration 是 Java 中表示时间段的类,用于计算两个时间点之间的间隔。它包含秒(seconds)和纳秒(nanos)两个部分,可以表示毫秒及更小的时间单位。与 Java 中的其他时间类不同,Duration 不包含毫秒这个属性。与Period类相比,Duration类和Period类都用于表示时间段,但它们在表示的时间单位和使用方式上有所不同。Period类主要用于表示年、月、日等较大的时间单位,而Duration类主要用于表示更小的时间单位,例如毫秒、纳秒等。此外,Period类提供了一些方法来原创 2023-12-04 18:55:07 · 5564 阅读 · 2 评论 -
深入了解Java Period类,对时间段的精确控制
在Java中,Period类是用于表示时间段或周期的类。它通常用于日期和时间的计算和操作,可以方便地处理年、月、日等时间单位。下面是一个如何定义Period的示例:Period类适用于需要进行日期和时间计算的场景,特别是需要处理年、月、日等时间单位的计算。例如,可以用于计算两个日期之间的时间段、进行日期的增减操作、获取时间段中的年月日信息等。原创 2023-12-04 18:45:25 · 2134 阅读 · 1 评论 -
深入了解Java8新特性-日期时间API之ChronoUnit、ChronoField
ChronoUnit和ChronoField都是Java 8中引入的与日期和时间相关的类,它们的功能和应用场景有所不同。- ChronoUnit是一个枚举类,它定义了很多表示时间单位的枚举值,例如年、月、日、小时、分钟、秒等。ChronoUnit基于TemporalUnit接口实现,可以扩展标准时间单位集。它适用于多个日历系统,因此可以用于不同日历系统之间的转换。ChronoUnit提供了基于时间单位的加减运算方法,可以用于计算日期时间的差异或者进行日期的推算。此外,ChronoUnit还可以用于格式化和原创 2023-11-30 19:26:23 · 2263 阅读 · 1 评论 -
深入了解Java8新特性-日期时间API之TemporalAdjusters与TemporalAdjuster
TemporalAdjusters与TemporalAdjuster的作用在于提供了一种统一的、类型安全的方式来处理日期时间的操作。在过去的版本中,Java的日期时间API主要依赖于Calendar类,但这个类在处理复杂的日期时间操作时显得不够灵活和类型安全。TemporalAdjusters的出现弥补了这一缺陷,使得日期时间操作更加简洁、易用和类型安全。TemporalAdjusters的意义在于它为Java日期时间API注入了更多的活力,使其更加适应现代应用程序的需求。通过TemporalAdjust原创 2023-11-30 18:54:19 · 1710 阅读 · 2 评论 -
深入了解Java8新特性-日期时间API之TemporalQuery、TemporalQueries
TemporalQuery是Java 8中用于时间查询的一个函数式接口,它允许用户对日期和时间进行查询。TemporalQuery接口中定义了一些方法,比如queryFrom(TemporalAccessor temporal),该方法允许用户从给定的时间对象中查询特定的时间信息。TemporalAccessor是一个时间访问器,它提供了一些方法来访问时间信息,比如get(ChronoField field),getLong(ChronoField field),query(TemporalQuery原创 2023-11-29 18:55:12 · 220 阅读 · 1 评论 -
深入了解Java8新特性-日期时间API之ZonedDateTime类
ZonedDateTime是Java 8中引入的一个不可变且线程安全的数据类型,用于表示带有时区的日期和时间。与LocalDateTime相比,ZonedDateTime可以存储时区信息,并能够处理模糊的本地日期时间。ZonedDateTime可以表示从本地时间线LocalDateTime到即时时间线Instant之间的日期和时间。两个时间线之间的差异是UTC /格林威治的偏移量,由ZoneOffset表示。在两个时间线之间转换涉及使用从ZoneId访问的ZoneId计算偏移量。ZonedDateTim原创 2023-11-29 18:48:07 · 2517 阅读 · 1 评论 -
深入了解Java8新特性-日期时间API:OffsetDateTime类
OffsetDateTime是Java 8中引入的一个不可变且线程安全的日期时间数据类型,用于表示带有时区偏移的日期和时间。因为它是一种不可变的数据类型,所以在进行比较或传递时不会发生变化。OffsetDateTime可以表示从本地时间线LocalDateTime到即时时间线Instant之间的日期和时间。两个时间线之间的差异是UTC /格林威治的偏移量,由ZoneOffset表示。在两个时间线之间转换涉及使用从ZoneId访问的ZoneId计算偏移量。在处理带有时区偏移的日期和时间时,使用OffsetD原创 2023-11-28 16:43:08 · 2248 阅读 · 0 评论 -
深入了解Java8新特性-日期时间API:LocalDateTime类
LocalDateTime 是 Java 8 中引入的一个新的日期时间 API,它表示一个没有时区的日期时间对象,是不可变且线程安全的。LocalDateTime 通常用于需要同时表示日期和时间,但不涉及时区的场景。LocalDateTime、LocalDate和LocalTime都是Java中用于表示日期和时间的数据类型,但它们在功能和使用上有一些重要的区别。在使用 LocalDateTime 时,有一些注意事项需要特别注意,了解这些限制和注意事项可以确保正确有效地使用它原创 2023-11-28 14:42:26 · 1655 阅读 · 1 评论 -
深入了解Java8新特性-日期时间API:LocalTime类
Java 8引入了一个非常重要的,用于处理时间的类:LocalTime。LocalTime可以表示一天中的时间,不包括日期信息。它提供了各种方法来处理时间,例如获取当前时间、设置时间、获取小时、分钟、秒等。它在以下场景中特别有用:- 时间计算和操作:LocalTime可以用于执行各种时间计算,如获取当前时间、增加或减少时间、计算两个时间的差等。- 日程安排和提醒:如果你需要设置一个特定的时间进行任务或活动,例如会议、约会或闹钟,LocalTime可以用来表示这个特定的时间。原创 2023-11-26 18:28:39 · 1093 阅读 · 1 评论 -
深入了解Java8新特性-日期时间API:LocalDate类
Java 8的LocalDate类是Java日期和时间API的一部分,没有时间和时区的概念,是线程安全的,用于表示不包含时间的日期,位于java.time包下。适用场景- 日期处理:LocalDate类适用于只需要处理日期的场景,而不考虑时间部分。例如,记录生日、纪念日、账单日等。- 日期计算:可以使用LocalDate类进行日期的加减运算,例如计算两个日期之间的天数、月数或年数。- 日期格式化:可以使用LocalDate类和DateTimeFormatter类进行日期的格式化操作,将日期转换为指定的原创 2023-11-23 20:24:47 · 699 阅读 · 1 评论 -
深入了解Java8新特性-日期时间API之总篇
Java 8时间API提供了更简单、更强大和更灵活的日期和时间处理能力。Java 8之前的日期和时间处理主要依赖于Date和Calendar类,这些类在使用上存在一些不便,例如需要手动进行时区转换,以及对日期的各种操作(如增加天数、获取下一个工作日等)需要编写较复杂的代码。原创 2023-11-23 18:22:00 · 151 阅读 · 1 评论 -
深入了解Java 8 新特性:Optional类的实践应用
Java 8中的Optional类是一个容器类,用于解决null值引发的问题,并提供了一种更安全的方式来处理值可能为null的情况。Optional类的主要目的是为了解决空指针异常(NullPointerException)的问题。在Java中,使用null值是一种常见的做法,但是这可能会导致运行时异常,特别是在进行对象引用的操作时。Optional类提供了一种方式来更明确地处理可能为null的值,从而避免出现NullPointerException。原创 2023-11-22 14:55:57 · 265 阅读 · 0 评论 -
深入了解Java 8 新特性:Stream流的实践应用(二)
Java Stream可以应用于各种数据处理的场景,包括但不限于数据筛选与过滤、映射操作、排序操作、聚合操作、收集操作和遍历操作等。使用Stream可以简化代码、提高可读性和可维护性,并提高系统的性能和效率。Stream 的应用场景1.数据筛选与过滤:Stream提供了filter方法,可以根据指定的条件筛选出符合要求的元素。在处理大量数据时,使用Stream可以避免手动编写循环和if语句的繁琐工作,使代码更加简洁易读。2.映射操作:Stream的map方法可以将元素映射为其他对象。例如,可以将一个字符串列原创 2023-11-21 19:03:51 · 349 阅读 · 2 评论 -
深入了解Java 8 新特性:Stream流的实践应用(一)
Java的Stream是Java 8 引入的一个新特性,它提供了一种简洁、优雅的方式来处理集合数据。Stream允许你将集合中的元素进行过滤、映射、排序等操作,并将结果转换为一个新的集合。并且使用Stream,你可以将一个集合转换为一个流,然后对这个流进行各种操作,最后将结果收集到一个新的集合中。这种处理方式非常适合处理大量数据,因为它允许你在内存中一次只处理一个或一小批数据,而不是一次性加载整个数据集到内存中。因此Stream是java8新增特性中一个非常有用且强大的。它的核心特性:声明性:Strea原创 2023-11-21 18:51:19 · 555 阅读 · 1 评论 -
深入了解Java 8 新特性:lambda表达式进阶
Java 8中的Lambda表达式是一种匿名函数,它允许你将函数作为方法参数进行传递,或者把代码更简洁地定义在你的应用程序里。另外Java的函数式编程就是Lambda表达式,java的函数式接口的有一个明显特征:有且仅有一个抽象方法的接口。下面是一些常见的Java内置的函数式接口梳理,掌握这些内置的函数式接口是相当有必要的,因为作为一种更简洁、更灵活和更易于维护的编程方式,这在很多的java相关的框架技术中有大量的应用,相信有喜欢钻研源码小伙伴应该深有体会。原创 2023-11-18 18:07:26 · 341 阅读 · 2 评论 -
深入了解Java 8 新特性:lambda表达式基础
Java 8中的Lambda表达式是一种匿名函数,它允许你将函数作为方法参数进行传递,或者把代码更简洁地定义在你的应用程序里。另外Java的函数式编程就是Lambda表达式,java的函数式接口的有一个明显特征:有且仅有一个抽象方法的接口。原创 2023-11-18 17:51:58 · 174 阅读 · 2 评论