- 博客(66)
- 收藏
- 关注
原创 Kotlin集合聚合
本主题介绍了如何使用 Kotlin 集合的多种方法快速获取汇总信息,例如:元素数量统计(count)去重(distinct)求和(sum / sumOf)平均值(average)最大最小值(maxOrNull / minOrNull / maxByOrNull / minByOrNull 等)结合条件谓词和选择器函数,你可以高效地完成各种数据统计与查询操作。
2025-07-16 23:06:43
214
原创 Kotlin重写函数中的命名参数
本节内容重点讲解了在 Kotlin 中重写函数时保持参数名称一致的重要性。这不仅确保了具名参数调用的兼容性,也增强了代码的可读性和一致性。同时我们也介绍了属性重写的机制以及val和var之间的转换规则。合理命名和正确重写方法是编写干净、可维护 Kotlin 代码的关键。
2025-07-16 22:35:07
567
原创 分块(chunked) vs 滑动窗口(windowed)
特性chunked()windowed()子集合是否重叠❌ 不重叠✅ 可重叠步长控制❌ 不可指定步长✅ 可指定步长step不足长度是否保留✅ 自动保留最后一组✅ 需设定使用场景分组处理(如分页)滑动窗口分析(如模式识别、时间序列)
2025-07-16 21:10:59
143
原创 Kotlin获取集合中的元素操作
在本主题中,我们将探索一些 Kotlin 方法,这些方法可以让你更轻松地获取集合中的元素,从而帮助你更高效地操作集合。方法,就可以根据索引范围或具体的索引集合获取一个新的集合。:从最后一个元素开始,持续获取满足条件的元素,直到遇到第一个不满足条件的元素为止。:从最后一个元素开始,跳过所有满足条件的元素,直到遇到不满足条件的第一个元素为止。:从第一个元素开始,持续获取满足条件的元素,直到遇到第一个不满足条件的元素为止。:从第一个元素开始,跳过所有满足条件的元素,直到遇到不满足条件的第一个元素为止。
2025-07-16 16:52:48
307
原创 Kotlin运算符重载
在本主题中,你将学习如何为自定义数据类型定义自己的运算符实现。运算符重载是 Kotlin 提供的一个强大工具,可以让你的代码更具可读性与表现力。你只需满足函数命名、修饰符和签名的基本要求,就能为你的类型添加直观且易用的运算符。
2025-07-16 15:49:56
283
原创 Kotlin比较接口
Comparable和Comparator是非常强大的接口,可用于对对象集合进行排序。当需要对同一类的对象进行默认排序时,实现Comparable;当需要自定义排序或对不同类对象排序时,实现Comparator。Kotlin 标准库提供了许多接受Comparator的函数,使排序变得简单而高效。
2025-07-16 14:55:06
126
原创 Kotlin聚合方法
在本节中,我们学习了各种用于获取集合中值的聚合方法,包括:获取最大/最小值。获取平均值、总和。查找具有最大某个属性值的元素。使用选择器或比较器自定义排序和聚合方式。
2025-07-15 07:15:52
319
原创 Kotlin委托
委托极大提升了代码复用的便利性。相比复制粘贴已有代码,我们只需引入已有的功能对象,并把接口的实现委托给它即可。Kotlin 对委托的语言支持非常好,让这项工作简单且优雅。
2025-07-14 21:33:35
346
原创 DataClass
除了存储信息,类还应该能够比较对象、复制对象,并且方便地输出数据。和—— 用于对象比较和在集合中正确工作。—— 用于复制对象,创建一个带有部分修改的新对象。—— 用于打印对象的字符串表示,方便调试。函数 —— 用于解构声明,按属性声明顺序一一对应。但是在 Kotlin 中,你不需要自己写这些方法,只要用data class关键字就可以自动帮你实现。
2025-07-14 18:04:43
289
原创 toString
toString()函数可以将非字符串对象转换为字符串。Kotlin 中的所有类都继承了Any,因此默认拥有toString()方法。默认情况下,toString()返回的是类名和内存地址。你可以通过重写toString()自定义对象的打印方式。对于继承结构,子类可以重用或扩展父类的toString()方法。现在你已经掌握了如何使用和重写toString()方法,能够更好地进行调试和信息展示了!
2025-07-14 17:23:36
359
原创 Kotlin Map映射转换
功能方法一对一转换map()一对一+索引过滤 null 结果Map 键值转换mapKeys()多对一flatten()一对多flatMap()
2025-07-14 16:35:42
892
原创 Kotlin集合接口
Kotlin 集合提供了对数据进行各种操作的便捷方式。它们实现了接口,因此可以操作不同类型的数据。例如,你可以编写一个函数,同时打印Set和List的所有元素。我们来看看这是如何实现的。Kotlin 中集合是接口,可以通用于多种集合类型。Collection 和 MutableCollection 提供了许多通用操作方法。Map 虽然被称为集合,但并不继承自 Collection。可以编写通用函数处理 Set、List、MutableSet、MutableList 等集合类型。
2025-07-14 15:18:43
463
原创 Kotlin多态
重载(Overloading):定义同名但参数不同的方法;重写(Overriding):在子类中修改父类的方法;鸭子类型(Duck Typing):只要对象实现了某个方法,就可以被认为具备某种能力。
2025-07-14 08:35:17
710
原创 StackTrace栈跟踪
每个栈帧在 Kotlin 中由表示。MainKtMainKtMainKt:获取方法名:获取代码行号建议你查阅官方文档深入了解这个类的所有方法。val number = input.toInt() // 此处可能发生异常!本节你学习了栈追踪:Kotlin 提供的一个强大调试工具,帮助你了解程序的执行步骤,并快速定位错误。栈追踪初看可能令人困惑,但掌握之后,它是分析异常最有力的帮手之一。
2025-07-13 21:42:40
355
原创 Switch表达式
switch 表达式更简洁、易读,不易出错。它直接返回值,因此可以被赋值给变量。如果不是基于enum,必须提供default分支以确保覆盖所有情况。箭头语法->是最推荐的写法。Java 13 的yield可用于多行代码块,进一步提高灵活性。switch表达式不能使用break。switch 语句不能使用yield。
2025-07-13 13:37:27
420
原创 LocalDate的使用和方法
如你所见,LocalDate类提供了丰富且实用的方法来处理日期。它是不可变的(immutable),每个方法调用都会返回该类的新实例,所以请放心使用这些方法!
2025-07-13 12:50:20
283
原创 Kotlin文件操作
Kotlin 提供了丰富的 API 来操作文件和目录,包括遍历、复制、获取父路径等。可以使用File和Path来创建、读取、遍历文件系统。遍历时注意根目录的处理,避免空指针异常。实际编程中应加上异常处理与空值检查。
2025-07-12 21:25:35
381
原创 Kotlin文件
熟练掌握 Kotlin 中的文件层级结构处理对于开发者来说是非常重要的技能。它能显著提升你管理数据、组织文件的能力,也让应用程序的文件交互更高效、更健壮。
2025-07-12 17:12:24
674
原创 Noting
Kotlin 是一门灵活而强大的语言,具备优秀的类型系统和错误检测能力。其中Nothing类型提供了一种明确表达“永远不返回”的函数行为的方式,提升了代码可读性和安全性。而TODO函数结合Nothing类型,清楚地标记出尚未实现的功能,是团队协作或大型项目中的好帮手。Kotlin 通过这些设计增强了健壮性和开发体验。接下来,让我们通过一些练习来回顾所学内容吧!
2025-07-12 15:28:48
346
原创 Java可变参数
在 Java 中,可以使用一种特殊的语法 varargs(可变长度参数) 来向方法传递任意数量的同一类型的参数。这些参数通过在类型后面加上三个点 …numbers 表示这个方法可以接受任意数量的整数参数,包括 0 个。但调用时可以传入多个实参(如 1, 2, 3),这些实参会自动被打包成一个数组。当方法中有多个参数时,可变参数必须是最后一个参数。否则会导致语法错误。numbers 实际上在方法内部会被当作一个整型数组处理。方法定义中只有一个参数 int…这会报错,因为 varargs 不是最后一个参数。
2025-07-12 14:13:41
262
原创 Java类型推断
此功能可能存在一些争议:一方面,它可以让你的代码更简洁。另一方面,由于它没有明确指出类型,可能会对代码的可读性产生不利影响。目前,理解其基本概念就足够了。代替特定类型来强制根据分配值的类型进行自动。从 Java 10 开始,你可以使用。
2025-07-12 13:42:53
129
原创 细谈kotlin中缀表达式
你可以随时创建中缀函数,比如为了提高代码的可读性,或者创建领域特定语言(DSL)。但要记住,中缀函数调用的优先级低于算术操作符以及语言内置的其他元素,比如类型转换和。中缀函数是让代码更具可读性和可维护性的强大工具。中缀表达式能帮助你提升代码质量,扩展代码书写的可能性。记住,中缀函数调用时,接收者和参数都必须明确指定,并且在函数体内必须使用。在中缀表达式中,函数名放在参数之间,函数名本身充当操作符。参数不能是可变数量参数(vararg),且不能有默认值。必须是成员函数或扩展函数。关键字即可定义中缀函数。
2025-07-12 10:15:25
398
原创 Kotlin基础
正序(原始顺序)倒序reversed()创建副本,创建视图)随机顺序shuffled()随机打乱)这些方法提供了一种优雅且简洁的方式来重新组织集合数据。
2025-07-11 10:15:29
847
原创 MockK 简单使用
MockK 是专门为 Kotlin 设计的强大灵活的模拟库,支持 Kotlin 特有的功能(如协程、扩展函数),提供简洁易用的接口,社区活跃,维护良好。关键字含义mockk()创建一个模拟对象(Mock)every { }定义模拟对象方法的行为returns模拟方法返回指定值verify { }验证方法是否被调用过spyk()创建一个 Spy,包裹真实对象,可以调用真实方法用于模拟返回 Unit(无返回值)的方法模拟 Kotlin 中的单例对象解除对单例对象的模拟,避免影响其他测试@MockK。
2025-07-09 09:24:29
797
原创 Docker 报错及其解决方案
说明当前用户没有权限访问 Docker 守护进程(daemon),因为 /var/run/docker.sock 默认只允许 root 用户或 docker 组的成员访问。将当前用户加入 docker 组(推荐)
2025-06-26 14:48:20
274
原创 Linux常用文件目录命令
本文介绍了Linux系统中常用的文件与目录操作命令:1)目录浏览命令ls和pwd;2)目录操作命令cd、mkdir、rmdir;3)文件浏览命令cat、more、less、head、tail;4)文件操作命令cp、rm、mv、find、grep、tar。详细说明了各命令的功能、语法格式、常用参数及使用示例,例如ls -l显示详细信息、tar -czvf打包压缩文件等,涵盖了Linux系统日常文件管理的基本操作。
2025-06-05 09:31:59
1126
原创 MySql入门
数据库是数据管理的有效技术,是由一批数据构成的有序集合,这些数据被存放在结构化的数据表里。数据表之间相互关联,反映客观事物间的本质联系。数据库能有效地帮助一个组织或企业科学地管理各类信息资源。简而言之,我们的数据可以交给数据库来帮助我们进行管理,同时数据库能够为我们提供高效的访问性能。在JavaSE学习阶段中,我们学习了如何使用文件I/O来将数据保存到本地,这样就可以将一个数据持久地存储在本地,即使程序重新打开,我们也能加载回上一次的数据,但是当我们的数据变得非常多的时候,这样的方式就显得不太方便了。
2025-05-29 21:27:24
717
原创 MyBatis指定构造
MyBatis通过默认无参构造创建对象后使用反射赋值,但也可以通过resultMap中的constructor标签指定构造方法。构造参数使用idArg(主键)和arg标签定义,未传入的字段仍会通过反射赋值。这种方式允许实体类使用带参构造器进行初始化,同时保持灵活的数据映射能力。<|end▁of▁sentence|>
2025-05-21 15:38:18
162
原创 MyBatis简单使用
本文介绍了MyBatis与MariaDB数据库的集成使用方式。主要内容包括:1) 添加依赖和数据库配置;2) Mapper接口定义及SQL语句映射;3) 参数传递方式(单参数和多参数);4) 结果映射的多种实现方案,包括字段别名、@Result注解映射、复用结果映射关系以及开启驼峰命名自动转换;5) XML配置方式的示例。文章提供了从基础配置到高级映射的完整示例代码,涵盖了MyBatis操作数据库的核心功能实现。<|end▁of▁sentence|>
2025-05-21 15:35:25
196
原创 MyBatis常用方法
为了提高代码的复用性和简洁性,可以将MyBatis的初始化操作封装到一个工具类MyBatisUtils中。该工具类通过静态代码块加载MyBatis配置文件并创建SqlSessionFactory,同时提供openSession方法用于获取SqlSession对象。通过这种方式,可以简化代码,避免重复的初始化操作。此外,文章还介绍了MyBatis的注解使用、数据库配置、Mapper接口的编写,以及selectMap、selectCursor和select等查询方法的使用。这些内容帮助开发者更高效地使用MyBa
2025-05-20 19:30:44
326
原创 Mybatis面向接口编程
本文介绍了如何在MyBatis中实现Mapper接口与映射文件的绑定。首先,在UserMapper.xml文件中,通过namespace属性将映射文件与UserMapper接口绑定,并在其中定义了一个insertUser的SQL语句。接着,创建了UserMapper接口,并确保接口中的方法名与映射文件中的SQL语句id一致。然后,在MyBatis配置文件中引入UserMapper.xml映射文件。最后,通过测试类MyBatisTest进行代码实现和测试。整个过程展示了MyBatis面向接口编程的基本步骤和配
2025-05-20 19:24:41
177
原创 MyBatis入门指南
MyBatis 是一个支持定制 SQL、存储过程及高级映射的持久层框架。本文介绍了如何使用 MyBatis 查询数据库中的 user 表数据。首先,创建 user 表并插入数据,接着导入 MyBatis 依赖,编写核心配置文件和 SQL 映射文件。然后,通过加载配置文件获取 SqlSessionFactory 对象,进而获取 SqlSession 对象执行 SQL 查询,最后释放资源。此外,还介绍了 MyBatis 的面向接口编程方式,通过定义 Mapper 接口与映射文件进行关联,并展示了如何传入参数进行
2025-05-20 18:21:38
1040
原创 Java IO流进阶实战详解(含文件读写、拷贝、加密、字符集)
Java IO(输入输出)是我们日常开发中必不可少的一部分。无论是读写文件、传输数据、处理日志,IO 都是底层支持。在这篇博客中,我们将基于实际代码案例,从到FileReaderFileWriter全面解析 Java IO 的用法与底层原理,并完成以下内容:文件写入(字节/字符流)文件读取文件拷贝(大文件/小文件/文件夹)编码解码与乱码问题文件加密与解密。
2025-05-17 18:06:55
1017
1
原创 IdeaVim配置指南
IdeaVim是 JetBrains 系列 IDE(如 IntelliJ IDEA, WebStorm, PyCharm 等)中的一个插件,让你在 IDE 里使用 Vim 的按键习惯,大大提升效率。安装方法:在 IDE 中打开设置(Settings)→插件(Plugins) → 搜索IdeaVim→ 安装并重启。
2025-05-06 22:45:19
1186
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人