- 博客(162)
- 资源 (1)
- 收藏
- 关注
原创 CompletableFuture中join与get的区别
使用 get() 时需要注意处理 InterruptedException 和 ExecutionException。如果需要对异常进行更细粒度的控制,比如区分执行异常和取消异常,或者需要设置超时,那么应该使用 get()。如果希望代码更简洁,并且不介意直接处理原始异常,那么 join() 是一个更好的选择。在实际开发中,根据需求选择合适的方法。如果想简单地获取结果而不关心具体的异常类型,join() 通常更为方便。
2024-09-24 16:33:03 420
原创 Gradle Wrapper 工作流程、生成、更新
这个工作流程确保了项目构建的一致性,无论开发者的本地环境中是否已经安装了 Gradle,或者安装的是哪个版本的 Gradle。通过这种方式,Gradle Wrapper 简化了项目的构建过程,并减少了因环境差异导致的构建问题。
2024-07-17 21:54:51 580
原创 Gradle Wrapper 介绍
Gradle Wrapper是Gradle构建工具的一个功能,它允许用户在没有全局安装Gradle的情况下构建项目。Gradle Wrapper通过一个轻量级的脚本(gradlew或)和一个JAR文件()来实现这一点。这些文件一起工作,以便在执行构建任务时自动下载并配置指定版本的Gradle运行时环境。
2024-07-11 21:55:53 622
原创 Gradle 介绍
Groovy 是一种基于 JVM(Java 虚拟机)的动态语言,它结合了 Python、Ruby 和 Smalltalk 的许多强大特性。简洁和易读Groovy 的语法设计使得代码更加简洁和易于理解,与 Java 相比,Groovy 的语法更为灵活和自然,支持闭包、动态类型、DSL(领域特定语言)等特性。与 Java 的互操作性Groovy 可以直接使用 Java 类库,与 Java 代码混合编写,无需额外的接口或转换,这使得 Groovy 成为 Java 平台上的一种强大补充和扩展。动态语言特性。
2024-07-11 21:34:32 942
原创 Maven 仓库
坐标和依赖是构件在 Maven 世界中的逻辑表示方式,构件的物理表示方式是文件,Maven 通过仓库来统一管理这些文件。有了仓库之后,无需手动引入构件,我们直接给定构件的坐标即可在 Maven 仓库中找到该构件。:这个仓库是由 Maven 社区来维护的,里面存放了绝大多数开源软件的包,并且是作为 Maven 的默认配置,不需要开发者额外配置。:私服是一种特殊的远程 Maven 仓库,它是架设在局域网内的仓库服务,私服一般被配置为互联网远程仓库的镜像,供局域网内的 Maven 用户使用。
2024-07-10 21:50:56 633 1
原创 maven 依赖冲突
保留了 1.5 版本的 X,但是这个版本的 X 删除了 1.0 版本中的某些类。如果高版本修改了低版本的一些类或者方法的话,这个时候就能直接保留高版本了,而是应该考虑优化上层依赖,比如升级上层依赖的版本。不过,你也可以发现。这两条依赖路径上有两个版本的 X,为了避免依赖重复,Maven 只会选择其中的一个进行解析。这两条依赖路径上有两个版本的 X,为了避免依赖重复,Maven 只会选择其中的一个进行解析。根据路径最短优先原则,X(1.0) 会被解析使用,也就是说实际用的是 1.0 版本的 X。
2024-07-10 21:39:55 977
原创 Maven 介绍
Apache Maven 的本质是一个软件项目管理和理解工具。基于项目对象模型 (Project Object Model,POM) 的概念,Maven 可以从一条中心信息管理项目的构建、报告和文档。文件,我们可以定义项目的坐标、项目依赖、项目信息、插件信息等等配置。文件,我们可以定义项目的坐标、项目依赖、项目信息、插件信息等等配置。文件,位于根目录中,包含项目构建生命周期的详细信息。文件,位于根目录中,包含项目构建生命周期的详细信息。每一个 Maven 工程都有一个。每一个 Maven 工程都有一个。
2024-06-20 22:56:24 551
原创 Shell中执行.sh文件的常见方式
这种方式会在当前Shell会话中执行脚本,而不是在一个新的子Shell中执行。适合于需要在当前环境中设置环境变量或导入函数的情况。在Shell中执行.sh文件有几种常见的方式,具体取决于你希望如何执行这个脚本文件。以上是一些常见的执行.sh文件的方式。选择哪种方式取决于你的具体需求和脚本的设计。明确使用bash解释器来执行脚本文件。在当前Shell会话中执行脚本文件。使用sh解释器执行脚本文件。这种方式适合于需要频繁执行的脚本文件。作为开头时,这种方式是适当的。这会使脚本每天的午夜执行。
2024-06-18 23:04:59 1234
原创 String.compareTo()方法详解
是一种高效且直接的方式来比较字符串的字典顺序。理解其工作原理对处理字符串排序和比较非常有帮助。更多消息资讯,请访问昂焱数据。
2024-06-15 13:52:36 1243
原创 postgresql 创建函数
这些只是 PostgreSQL 中函数返回数据的几种常见方式。函数的返回类型可以根据需求进行自定义,并且可以返回更复杂的数据结构,例如数组、JSON 或自定义类型。函数可以返回不同类型的数据,包括标量值、表和记录。具体返回哪种类型的数据取决于函数的定义和实现。函数可以返回单个标量值,如整数、浮点数、字符串等。关键字声明返回的记录结构。函数可以返回一个记录,它是一组字段的组合。函数可以返回一个表,即一组行和列。声明来指定返回的表结构,并使用。
2024-06-14 09:14:18 341
原创 Bigdecimal 除法用法
在开发中遇到了一个Bigdecimal的问题,在此记录一下。指定其保留位数。见修改代码。代码中使用了 BigDecimal 做精确计算,在做除法时,系统抛出 “ Non-terminating decimal expansion;因为BigDecimal 是不可变的、任意精度的有符号十进制数,所以可以做精确计算。但在除法中,准确的商可能是一个无限长的十进制扩展;例如,1 除以 3 所得的商。
2024-06-04 16:10:04 710
原创 sql 学习基础篇
组相关的信息:(统计信息) count,sum,max,min,avg 分组的标准)在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据在selecte统计函数中的字段,不能和普通的字段放在一起;B:right (outer) join: 右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。A、left (outer) join: 左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。10、说明:几个简单的基本的sql语句。
2024-05-25 11:31:39 420
原创 精选AI工具分享
基于ChatGLM2模型开发,支持多轮对话,具备内容创作、信息归纳总结等能力。ChatGPT 回答的内容长度有限制,如果超出后,只会显示一部分(看下图)、excel、csv、markdown、txt等文件,所有格式简直通吃,世界第一搜索引擎硬刚ChatGPT的第一把斧头。与excel聊天,支持excel计算,排序等。堪称目前最好的文档类工具,没有之一。被驯化过的ChatGPT内核。营销软文,自媒体稿件小助手。通过聊天创建和修改思维导图。目前一枝独秀,独步天下。通用ChatGPT,你就把它当人一样对话,
2024-05-16 22:26:54 249
原创 Java 集合概述
Java 集合,也叫作容器,主要是由两大接口派生而来:一个是Collection接口,主要用于存放单一元素;另一个是Map接口,主要用于存放键值对。对于CollectionListSetQueueMap。
2024-05-12 22:38:55 336
原创 CountDownLatch 详解
其原理主要基于一个计数器,该计数器在初始化时设定一个值,每当一个线程完成了自己的任务后,计数器的值就会减一,当计数器的值变为零时,所有等待的线程都会被唤醒。CountDownLatch 主要用于解决一个或多个线程需要等待其他线程完成某些操作后才能执行的场景,例如多个线程同时进行数据加载,但需要等待所有数据加载完毕后再进行后续处理,这时就可以使用 CountDownLatch 来实现线程间的协调与同步。的作用允许 count 个线程阻塞在一个地方,直至所有线程的任务都执行完毕。
2024-05-10 09:23:29 771
原创 如何配置线程池大小
🌈 拓展一下(参见:issue#1737open in new window):线程数更严谨的计算的方法应该是:最佳线程数 = N(CPU 核心数)∗(1+WT(线程等待时间)/ST(线程计算时间)),其中 WT(线程等待时间)=线程运行总时间 - ST(线程计算时间)。如果设置的线程池数量太小的话,如果同一时间有大量任务/请求需要处理,可能会导致大量的请求/任务在任务队列中排队等待执行,甚至会出现任务队列满了之后任务/请求无法处理的情况,或者大量任务堆积在任务队列导致 OOM。
2024-04-30 15:16:38 803
原创 线程池命名
初始化线程池的时候需要显示命名(设置线程池名称前缀),有利于定位问题。这样的,没有业务含义,不利于我们定位问题。默认情况下创建的线程名字类似。
2024-04-28 00:29:43 545
原创 线程池处理任务的流程、步骤
如果任务执行过程中发生异常,线程池可以根据配置进行异常处理,比如记录日志、重启线程等。这些步骤可以根据具体的线程池实现和需求进行调整和扩展。线程执行完任务后,不会被销毁,而是重新放回线程池,以备下次使用。分配的线程从任务队列中取出任务,并执行任务的代码逻辑。线程池管理器根据任务队列的情况分配线程来执行任务。当不再需要线程池时,可以关闭线程池,释放资源。任务被放置在线程池的任务队列中等待执行。将任务提交给线程池管理器。
2024-04-27 22:49:55 448
原创 统一建模语言UML图
Unified Modeling Language(统一建模语言,UML)是一种用于软件系统设计和建模的标准化语言。它提供了一套图形化的符号和约定,用于描述软件系统的结构、行为和交互,以及系统与外部环境之间的关系。UML通常用于面向对象的软件开发,但也可以应用于其他领域的系统建模。
2024-04-21 23:22:42 554
原创 系统边界图
系统边界图是系统工程和软件工程中的一种图形化工具,用于描述系统与外部世界之间的交互和界限。它展示了系统的组成部分以及这些组件如何与外部实体进行通信和交互。系统边界图通常包括系统内部的各个组件、外部实体以及它们之间的通信路径和数据流动。这种图形化的表示方式能够帮助开发人员和利益相关者更清晰地理解系统的结构和功能,有助于指导系统设计、开发和测试工作。
2024-04-15 22:09:38 1603
原创 Java8 新特性实战--Date-Time API
这是对从常用的时间实例来对比 java.util.Date 和新 Date 有什么区别。用的代码该改改了。
2024-04-01 22:23:48 447
原创 Java8 新特性实战--Interface 函数式接口
java 8引入了函数式接口的概念,,也称 SAM 接口,即 Single Abstract Method interfaces,有且只有一个抽象方法,但可以有多个非抽象方法的接口。函数式接口可以使用Lambda表达式来创建该接口的对象,从而简化了代码。通过函数式接口,Java 8引入了函数式编程的特性,使得在处理一些简单的逻辑时更加简洁和优雅。注解,但其内部包含多于一个抽象方法,则编译器会产生一个错误。注解,但是只要符合函数式接口的定义就是函数式接口,与是否有。方法中调用了传入的函数式接口的。
2024-03-30 23:35:52 350
原创 Java8 新特性实战--Interface
Oracle 于 2014 发布了 Java8(jdk1.8),诸多原因使它成为目前市场上使用最多的 jdk 版本。为了不脱离队伍太远,对Java8新特性做一些总结梳理。它较 jdk.7 有很多变化或者说是优化,比如 interface 里可以有静态方法,并且可以有方法体,这一点就颠覆了之前的认知;数据结构里增加了红黑树;还有众所周知的 Lambda 表达式等等。本文不能把所有的新特性都给大家一一分享,只列出比较常用的新特性给大家做详细讲解。更多相关内容请看。
2024-03-30 11:15:46 462
原创 Java transient 关键字
修饰的字段不会被序列化,因此在反序列化时,这些字段将被赋予默认值,而不是之前序列化时的数值。修饰敏感数据字段可以确保数据在序列化时不被泄露,但在反序列化后需要手动处理这些字段,以防止数据丢失或出现意外情况。在 Java 中,如果某个字段不想被序列化(即不希望被写入到序列化的数据流中),可以使用。关键字可以灵活控制哪些字段需要被序列化,但需要注意序列化与反序列化带来的影响,并在设计中合理使用。,因此在对象序列化时,该字段的内容不会被写入序列化的数据流中,从而保护敏感数据不被序列化保存。
2024-03-23 23:00:37 420 1
原创 Java 构造方法
在Java中,构造方法(Constructor)是一种特殊类型的方法,用于初始化对象。构造方法与类同名,没有返回类型(包括void),并且在创建对象时被自动调用。
2024-03-18 22:11:51 865
原创 面向对象三大特征封
封装是指将数据和操作数据的方法(即行为)捆绑在一起,形成一个独立的、对外部隐藏内部细节的单元。通过封装,可以限制对数据的访问,并确保数据的完整性和安全性。继承是指一个新类(子类)可以继承一个已有类(父类)的属性和方法,从而实现代码的重用和扩展。子类可以通过继承获取父类的特性,并且可以根据需要添加新的属性和方法或者修改已有的属性和方法。继承特点多态是指同样的消息作用于不同的对象上会产生不同的结果。通过多态,可以用统一的接口来操作不同的对象,从而提高代码的灵活性和可扩展性。
2024-03-18 20:26:13 832
原创 什么是字节码?采用字节码的好处是什么?
HotSpot 采用了惰性评估(Lazy Evaluation)的做法,根据二八定律,消耗大部分系统资源的只有那一小部分的代码(热点代码),而这也就是 JIT 所需要编译的部分。字节码通常不针对特定的硬件平台,而是针对虚拟机设计的,它不面向任何特定的处理器,只面向虚拟机。Java 程序运行时相对来说还是高效的(不过,和 C、 C++,Rust,Go 等语言还是有一定差距的),而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。
2024-03-13 20:41:46 1141
原创 Java 语言“编译与解释并存”
因此,Java 的执行过程实际上是一个编译与解释相结合的过程:首先将源代码编译成字节码,然后在运行时通过 JVM 进行解释执行,并且在需要时进行即时编译优化。Java 语言被称为“编译与解释并存”的原因在于它采用了一种特殊的执行方式,即先编译成字节码(bytecode),然后由 Java 虚拟机(JVM)来解释执行这些字节码。:JVM 在运行时负责将字节码文件解释成特定平台的机器码,然后执行。:为了提高性能,JVM 还会对频繁执行的字节码进行即时编译,将其编译成本地机器码,以便直接在硬件上执行。
2024-03-10 23:31:32 377
原创 Java 语言有哪些特点
虽然相对于一些编译型语言会有一定的性能损失,但通过虚拟机和即时编译器等技术,Java 在性能上取得了较好的平衡。:Java 是一种面向对象的编程语言,支持封装、继承和多态等面向对象的特性。:Java 设计简洁、易读易写,摒弃了一些复杂和冗余的特性,使得初学者能够快速入门。:Java 拥有庞大的开源社区和丰富的开源项目,提供了大量的开源库、框架和工具,加快了开发速度,并且可以共享和学习他人的经验。:Java 内置了对多线程编程的支持,提供了线程相关的类和方法,开发人员可以方便地创建和管理多线程应用程序。
2024-03-10 23:15:12 397
原创 自增自减运算符 i++,++i,i--,--i小窍门
在写代码的过程中,常见的一种情况是需要某个整数类型变量增加 1 或减少 1,Java 提供了一种特殊的运算符,用于这种表达式,叫做自增运算符(++)和自减运算符(--)。
2024-03-10 11:13:58 673
原创 Java 方法的类型
实例方法属于类的实例,必须通过类的实例(对象)来调用。实例方法可以访问和修改对象的实例变量,也可以调用其他实例方法。大多数情况下,我们编写的方法都是实例方法。:静态方法属于类本身,可以直接通过类名来调用,无需创建类的实例。静态方法不能直接访问实例变量和实例方法,但可以访问类的静态变量和调用其他静态方法。通常用于定义工具方法或者与整个类相关的操作。:抽象方法没有方法体,只有声明而没有实现。它必须出现在抽象类中,抽象类本身不能被实例化,因此抽象方法只能通过子类来实现。
2024-03-10 10:58:31 1278
原创 Java 可变长参数
从 Java5 开始,Java 支持定义可变长参数,所谓可变长参数就是允许在调用方法时传入不定长度的参数。可变长参数允许方法接受任意多个相同类型的参数,在方法内部可以将这些参数视为数组来处理。Type...可变长参数只能作为方法的最后一个参数,一个方法最多只能有一个可变长参数。当调用带有可变长参数的方法时,可以向方法传递任意数量的实参,编译器会将这些实参封装成数组,并传递给方法内部进行处理。如果没有实参传递给可变长参数,那么该参数将被视为长度为 0 的数组。
2024-03-09 11:05:19 666
原创 Java 静态变量
在 Java 中,静态变量(也称为类变量)是指被声明为 static 关键字的变量,它们属于类而不是实例。静态变量在类加载时被初始化,且所有实例共享同一份静态变量副本。静态变量可以通过类名直接访问,而不需要创建类的实例。// 静态变量// 静态常量// 静态代码块(用于初始化静态变量)static {// 初始化静态变量dataType表示静态变量的数据类型;是静态变量的名称;是静态常量的名称,使用final关键字修饰;value是静态变量或常量的初始值;
2024-03-07 22:36:41 2298
原创 continue、break 和 return 的区别是什么?
continuebreak和return同样是用于控制程序流程的关键字,它们有不同的作用和用法。
2024-03-05 21:27:41 394
原创 程序设计规范
"8C" 设计规范是指在设计过程中的八个约束和限制,即Constraints,包括性能(Performance)、成本(Cost)、时间 (Time)、可靠性( Reliability)、安全性( Security)、合规性 (Compliance)、技术性 (Technology)、兼容性( Compatibility)。在设计中,"How" 的内涵非常广泛,它包括了设计的创意灵感如何转化为实际作品、设计师如何运用设计工具和技术来实现创意、以及实际生产制作过程中的工艺和材料选择等方面。
2024-03-05 20:52:11 667
最新版的mybatis-3.4.5jar包和源码
2017-09-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人