首页 文章 精选 留言 我的

精选列表

搜索[轻量版],共10006篇文章
优秀的个人博客,低调大师

dbVisitor 5.4.0 发布,高度兼容 MyBatis 的 ORM 框架

介绍 dbVisitor 是一个全功能数据库访问 ORM 工具,提供对象映射、丰富的类型处理、动态 SQL、存储过程、 内置分页方言 20+、 支持嵌套事务、多数据源、条件构造器、INSERT 策略、多语句 / 多结果。并兼容 Spring 及 MyBatis 用法。 它不依赖任何其它框架,因此可以很方便的和任意一个框架整合在一起使用。 依赖 <dependency> <groupId>net.hasor</groupId> <artifactId>dbvisitor</artifactId> <version>5.4.0</version> </dependency> 不兼容更新​ 新增:SelectKeyHandler 类新增参数标识是 before 调用还是 after 调用 新增:KeySeqHolder 增加 onBefore/onAfter 方法用于标识调用阶段 优化:LambdaTemplate Map 模式下不在依赖任何数据库元信息, 至此 dbVisitor 不会查询任何数据库元信息数据 优化:重写 InsertLambda 的逻辑可以有效处理 Entity 和 Map 两个模式下的差异点 移除:PhoenixDialect 方言 新增​ 新增:@BindTypeHandler 注解方便使用自定义 TypeHandler 新增:URITypeHandler、URLTypeHandler 两个 TypeHandler 及Types.DATALINK 和 Types.ROWID JDBC Type 支持 新增:h2/db2/derby/hive/hsql/impala/informix/sqllite/sqlserver/达梦/虚谷数据的关键字字典文件 新增:mapper 文件级可以配置 useDelimited 属性 新增:lambdaUpdate UpdateExecute 接口中增加一组 Condition 方法 新增:DalRegistry 增加两个 hasScope 方法,用于判断某个 scope 是否存在 新增:Lambda Delete/Insert/Select/Update for Map 支持 MappingOptions选项 优化​ 移除 dbVisitor generate 相关未完成的功能和代码 优化:升级 cobble 包版本为 4.5.4 优化:IncludeRule 逻辑使其拼出的 SQL 不在出现多余的空格 优化:lambdaUpdate/Delete/Query 兼容 tableMapping 没有匹配到任何列的极端情形 优化:Mapping 逻辑减少 TableDefaultInfo 的构建次数 优化:dtd/xsd 验证逻辑调整,entity 的 table 属性是可选的,如果省略 table 配置则实体类必须标有 @Table 注解 优化:针对 H2 2.2.220 版本的兼容性问题 优化:单元测试代码,提升覆盖率/修复测试Case问题,目前 834 个单元测试全部正常,行覆盖率提升到 77%,类覆盖率提升到 92% 优化:DalSession 在调用 createMapper 时候不必强制要求 Mapper 接口必须标记 @xxMapper 注解,它会自动探测 DalRegistry 优化:ExecuteInvocationHandler 逻辑针对接口 default 调用实现参考 mybatis 兼容 java8 和 java9 修复​ 修复:报错内容不正确,始终是空指针异常的问题(社区用户 aqnghu 贡献) 修复:lambdaInsert 当自增列配置为不参与 insert 时自增数据不回填的问题 修复:mapper 文件级 MappingOptions 不生效的问题(优先级顺序为:table -> mapper 文件级 -> 全局) 修复:Oracle 使用 InsertLambda 批量 insert 失败的问题 修复:SqlXmlForReaderTypeHandler 类无法正常工作的问题 修复:BaseMapper 接口中 updateById 会强制把 id 也带上的问题

优秀的个人博客,低调大师

试试国产的 Solon v1.10.7

Java 国产的轻量级应用开发框架。可用来快速开发 Java 应用项目。主框架仅 0.1 MB。Helloworld: @Controller public class App { public static void main(String[] args) { Solon.start(App.class, args); } @Get @WebSocket @Mapping("/hello") public String hello(@Param(defaultValue = "world") String name) { return String.format("Hello %s!", name); } } 相对于 Spring Boot 和 Spring Cloud 的项目: 启动快 5 ~ 10 倍。 (更快) qps 高 2~ 3 倍。 (更高) 运行时内存节省 1/3 ~ 1/2。 (更少) 打包可以缩小到 1/2 ~ 1/10;比如,300Mb 的变成了 23Mb。 (更小) 基于服务 name 进行注册发现 与 k8s svc 相互对应 支持 Service Mesh 架构部署方案 同时支持 jdk8, jdk11, jdk17, jdk19 本次更新: 新增 wood-cloud-plugin 插件 优化 easypoi-solon-plugin 插件 优化 activerecord-solon-plugin 插件,增加 模板 + mapper 风格支持(由用户 糊搞 pr) 优化 Solon.cfg().getList() 实现排序支持 修复 solon.boot.smarthttp 插件,websocket 的 sesion.uri() 里没带 queryString 的问题 恢复 @Init(index) 手动控制属性 恢复 @Inject(required) 属性支持,默认为 true,且仅对配置注入有效 调整 solon.auth 使用 AuthAdapterSupplier 时,未找到匹配则抛异常 调整 solon.config 配置的文件不存在时,不出异常 调整 solon.schedule 任务取消的操作逻辑 升级 snakeyaml 为 1.32 升级 graphql 为 18.3 升级 snack3 为 3.2.44 升级 water 为 2.9.0 进一步了解 Solon: 《想法与架构笔记》 《生态预览》 《与 Spring Boot 的区别?》 《与 Spring Cloud 的区别?》 项目仓库: gitee:https://gitee.com/noear/solon github:https://github.com/noear/solon

优秀的个人博客,低调大师

就用国产框架:Solon v1.10.2

相对于 Spring Boot 和 Spring Cloud 的项目: 启动快 5 ~ 10 倍。 (更快) qps 高 2~ 3 倍。 (更高) 运行时内存节省 1/3 ~ 1/2。 (更少) 打包可以缩小到 1/2 ~ 1/10;比如,90Mb 的变成了 9Mb。 (更小) 基于服务 name 进行注册发现 与 k8s svc 相互对应 支持 Service Mesh 架构部署方案 支持 jdk8, jdk11, jdk17 本次更新: 完善 solon.serialization.fastjson2 插件 增加 solon.config 配置项(与 solon.extend.config 同) 增加 nami.Invocation::target 用于获取代理 增加 solon.schedule 插件动态修改调度时间的支持 优化 solon-test 插件的注解处理 优化 solon.data 插件 tag 的缓存时间处理 插件 solon.config.yaml 升级 snakeyaml 为:1.30 插件 solon.serialization.snack3 升级 snack3 为:3.2.35 插件 solon.serialization.fastjson 升级 fastjson 为:1.2.83 插件 solon.serialization.fastjson2 升级 fastjson2 为:2.0.12 插件 solon.boot.undertow 升级 undertow 为:2.2.19.Final 插件 nami.channel.socketd.rsocket 升级 rsocket 为:1.1.2 插件 nami.channel.socketd.netty 升级 netty 为:4.1.68.Final 插件 nami.channel.http.hutool 升级 hutool 为:5.8.5 插件 mybatis-solon-plugin 升级 mybatis 为:3.5.10 插件 grpc-solon-plugin 升级 grpc 为:1.49.0 插件 dubbo3-solon-plugin 升级 dubbo3 为:3.0.11 进一步了解 Solon: 《想法与架构笔记》 《生态预览》 《与 Spring Boot 的区别?》 《与 Spring Cloud 的区别?》

优秀的个人博客,低调大师

试试国产的 Solon v1.10.1

相对于 Spring Boot 和 Spring Cloud 的项目: 启动快 5 ~ 10 倍。(更快) qps 高 2~ 3 倍。(更高) 运行时内存节省 1/3 ~ 1/2。(更少) 打包可以缩小到 1/2 ~ 1/10;比如,90Mb 的变成了 9Mb。(更小) 基于服务 name 进行注册发现 与 k8s svc 相互对应 支持 Service Mesh 架构部署方案 支持 jdk8, jdk11, jdk17 本次更新: 插件 sqltoy-solon-plugin 升级 sqltoy 为 5.2.9 插件 beetlsql-solon-plugin 升级 beetlsql 为 3.18.0 插件 solon.auth 增加多账号体系验证支持 插件 solon-test 增加 @SolonTest::args 启动参数支持 插件 mybatis-solon-plugin 增加数据源 plugins 配置节支持 插件 solon.web.staticfiles 增加 WEB-INF/static/ 做为静态文件目录支持(与 static/ 并存,二选一) 增加 BeanContainer::subBean 订阅 bean 增加 BeanContainer::subWrap 订阅 beanwrap 增加 Props::getBean(keyStarts), keyStarts 为空支持 增加 NvMap::getBean(clz) 接口支持 进一步了解 Solon: 《想法与架构笔记》 《生态预览》 《与 Spring Boot 的区别?》 《与 Spring Cloud 的区别?》 项目仓库: gitee:https://gitee.com/noear/solon github:https://github.com/noear/solon

优秀的个人博客,低调大师

运维新宠:基于Docker的Komari监控实战指南

Komari 是一款轻量级、自托管的服务器监控工具,专为追求简洁高效与数据隐私的用户设计。它通过在被监控服务器上运行一个轻量级代理程序,实时采集系统性能数据,并通过美观直观的网页界面集中展示,帮助用户轻松掌握服务器运行状态。无论是个人开发者、小型团队还是资源受限的边缘设备,Komari 都能提供低开销、高可用的监控体验。

优秀的个人博客,低调大师

灵动: 革新轻量级服务开发 | 京东云技术团队

概念篇 1、从JDK8->JDK17 你需要知道的 从 JDK 8 升级到 JDK 17 可以让你的应用程序受益于新的功能、性能改进和安全增强。下面是一些 JDK 8 升级到 JDK 17 的最佳实战: 1.1、确定升级的必要性:首先,你需要评估你的应用程序是否需要升级到 JDK 17。查看 JDK 17 的新特性、改进和修复的 bug,以确定它们对你的应用程序是否有实际的好处。 1.2、了解 JDK 8 到 JDK 17 的变化:详细了解 JDK 8 和 JDK 17 之间的差异是非常重要的。熟悉 JDK 17 中引入的新特性、移除的特性以及可能影响现有代码的变化。 1.3、解决向后不兼容的变化 更新依赖项和框架:在升级过程中,可能会遇到一些向后不兼容和框架不兼容的变化。例如,一些 API 的使用方式可能发生了变化,或者一些方法已被废弃。在升级之前,你需要对这些变化进行仔细的检查,并相应地修改你的代码。 1.4、进行兼容性测试:在升级之前,进行兼容性测试是非常重要的。确保你的应用程序在 JDK 17 下能够正常运行,并且没有出现任何性能下降或功能问题。可以使用自动化测试工具来简化测试过程。 1.5、逐步升级:对于大型应用程序或关键系统,建议逐步进行升级。可以先将应用程序迁移到较新的 JDK 版本,如 JDK 11 或 JDK 14,然后再逐步升级到 JDK 17。这样可以降低升级过程中的风险,并使你能够逐步解决遇到的问题。 1.6、监控和优化性能:升级到 JDK 17 后,你可能会注意到一些性能改进。然而,某些代码可能会受到影响并表现出不同的行为。使用性能监控工具来检测潜在的性能问题,并进行必要的调整和优化。 1.7、 更新部署和运维流程:升级 JDK 版本后,你可能还需要更新你的部署和运维流程。例如,JDK 17 中引入了一些新的命令行工具和管理选项 2、为什么要使用jdk17? 2.1、长期支持(LTS):JDK 版本中的一些版本被标记为长期支持版本,这意味着它们将获得更长时间的支持和维护。JDK 17 是 OpenJDK 的一个 LTS 版本 2.2、生态系统支持:一些开源项目、框架和工具可能会更早地支持较新的 JDK 版本,以利用新的特性和改进。选择较新的 JDK 版本可以使你能够使用最新的工具和库,并获得更好的生态系统支持 2.3、新功能和改进:每个 JDK 版本都会引入新的功能、增强和改进 3、强强联合GraalVM GraalVM 是一种开源的 通用 虚拟机(通用: 它具有支持多种编程语言的能力 直接在 graalvm运行 不需要额外的运行时环境),具有许多特性和优势,使得它在特定的场景中成为一个有吸引力的选择。以下是一些使用 GraalVM 的原因: 3.1、高性能:GraalVM 具有优化的即时编译器,能够将 Java 程序编译成高效的机器码。在许多情况下比传统的 Java 虚拟机更快。 3.2、AOT 编译:GraalVM 可以将 Java 程序静态编译成本地机器码,这被称为 Ahead-of-Time(AOT)编译。AOT 编译可以提供更快的启动时间和更低的内存消耗,适用于一些对性能要求较高的场景。 3.3、生态系统支持:GraalVM 在开发者社区中有广泛的支持和活跃的生态系统。许多开源项目和框架已经对 GraalVM 进行了优化和集成,使得使用 GraalVM 更加方便和无缝 3.4、嵌入式支持:GraalVM 提供了嵌入式 API,允许你将 GraalVM 作为库集成到你的应用程序中。这意味着你可以将 GraalVM 作为运行时引擎嵌入到你的应用程序中,从而实现更高的灵活性和自定义性。 3.5、云原生支持:GraalVM 具有与云原生应用程序开发和部署相关的特性。它可以与 Docker 和 Kubernetes 配合使用,支持快速启动和低内存消耗,适用于云环境中的微服务架构。 实战篇 1、第一步建议先升级依赖项 如果你的项目基于java 8,在升级前最好先升级依赖项,从java 8升级到java 17是一个很大的跨越,依赖项不升级则出问题的概率会比较高,maven可以用mvn versions:display-dependency-updates命令检查依赖项更新,输出会类似这样 然后可以把依赖项升级到输出的对应版本,大部分包升级不会出问题,如果有问题,建议去出问题的依赖官方仓库寻找解决方案。这个命令是直接查询maven远程仓库,如果依赖项多的话会运行比较长的时间 或者 jdeps --jdk-internals --multi-release 17 --class-path . encloud-api.jar javax.annotation.*被移除 可以手动倒入 dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> </dependency> 常见的标记为废弃的参数 迁移前后的参数如下: 2、环境安装 2.1、Jdk环境安装 https://www.graalvm.org/downloads/ 版本对比 升级时springboot和springcloud版本对应表 https://start.spring.io/actuator/info 2.2、maven环境安装 https://maven.apache.org/download.cgi GraalVM对maven没有特定的版本要求。通常情况下,只要您使用的Maven版本足够新并支持Java 8或更高版本,就可以与GraalVM一起使用。建议您使用Maven 3.5.x 或更高版本以确保与GraalVM的兼容性 启动java器使用 GraalVM 默认编译器 Graal 运行 JVM。安装时检查Java版本: $JAVA_HOME/bin/java -version 3、二进制的生成 3.1、安装本机映像 gu install native-image 该native-image工具安装在$JAVA_HOME/bin目录中 3.2、maven构建 mvn clean package -Pnative -Dmaven.test.skip=true 4、出现的坑点 4.1、对于mac 提前安装 glibc-devel 4.2、对于 centos 提前安装 yum install centos-release-scl yum install devtoolset-8 source /opt/rh/devtoolset-8/enable yum install zlib-devel 否则编译出现 会编译失败 gcc需要升级到6.4以上 4.3、对于java 应用来说 打出来的二进制可能出现乱码 因此需要强制指定 5、模块化 初体验 git clone https://github.com/graalvm/graalvm-demos cd graalvm-demos/native-hello-module 结构图 ├── hello │ └── Main.java │ > package hello; │ > │ > public class Main { │ > public static void main(String[] args) { │ > System.out.println("Hello from Java Module: " │ > + Main.class.getModule().getName()); │ > } │ > } │ └── module-info.java > module HelloModule { > exports hello; > } mvn package $JAVA_HOME/bin/java --module-path target/HelloModule-1.0-SNAPSHOT.jar --module HelloModule $JAVA_HOME/bin/native-image --module-path target/HelloModule-1.0-SNAPSHOT.jar --module HelloModule ./hellomodule 6、编译器操作模式 Graal 作为 HotSpot JIT 编译器有两种运行模式: libgraal:Graal 编译器提前编译到本地共享库中。在这种运行模式下,共享库由 HotSpot VM 加载。编译器使用与 HotSpot 堆分开的内存,并且从一开始就运行得很快,因为它不需要预热。这是默认和推荐的操作模式。 jargraal:Graal 编译器经历与 Java 应用程序的其余部分相同的预热阶段。也就是说,在编译其热方法之前首先对其进行解释。-XX:-UseJVMCINativeLibrary使用命令行选项选择此模式。这将延迟达到最佳性能的时间。 7、本机映像构建配置 maven常用配置 <buildArgs> 如果要将其他参数传递给本机图像生成器,请<buildArgs> 在插件的配置中使用 <buildArgs> <arg>--argument</arg> </buildArgs> <skipNativeBuild> 要跳过本机图像的生成,请在插件的配置中提供以下内容: <skipNativeBuild>true</skipNativeBuild> <skipNativeTests> 要跳过本机图像编译测试的生成和执行,请在插件的配置中提供以下内容: <skipNativeTests>true</skipNativeTests> <debug> 如果要启用调试信息的生成,请在插件配置中提供以下内容: <debug>true</debug> <useArgFile> 如果要使用参数文件构建原生图像,请在插件配置中提供以下内容: <useArgFile>true</useArgFile> 8、日志记录添加到本机可执行文件 1、默认情况下,由 Native Image 生成的本机可执行文件支持通过java.util.logging.*API 进行日志记录。 2、本机可执行文件中的默认日志记录配置基于logging.properties在 JDK 中找到的文件。该文件配置了一个java.util.logging.ConsoleHandler只显示该INFO级别及以上级别的消息的文件,如果您需要额外的日志记录处理程序,则必须注册相应的类以进行反射。例如,如果您使用java.util.logging.FileHandlerthen 提供以下反射配置: { "name" : "java.util.logging.FileHandler", "methods" : [ { "name" : "<init>", "parameterTypes" : [] }, ] } 3、将以下 Java 代码保存到名为LoggerRunTimeInit.java的文件中,然后使用以下命令对其进行编译javac: import java.io.IOException; import java.util.logging.Level; import java.util.logging.LogManager; import java.util.logging.Logger; public class LoggerTest { public static void main(String[] args) throws IOException { LogManager.getLogManager().readConfiguration(LoggerRunTimeInit.class.getResourceAsStream("/logging.properties")); Logger logger = Logger.getLogger(LoggerRunTimeInit.class.getName()); logger.log(Level.WARNING"); } } 4、下载logging.properties资源文件 ( https://www.graalvm.org/docs/reference-manual/native-image/assets/logging.properties )并将其保存在与LoggerRunTimeInit.java相同的目录中。 5、构建并运行本机可执行文件 native-image LoggerTest -H:IncludeResources="logging.properties" ./LoggerTest 6、它应该产生类似于以下内容的输出: WARNING 9、使用jdk17和graalvm 你可以体验到: 1.启动时间:GraalVM 提供了 Just-In-Time (JIT) 编译和 Ahead-Of-Time (AOT) 编译的能力。AOT 编译可以将 Java 应用程序编译成本地机器码,从而加快应用程序的启动时间。相比之下,传统的 JIT 编译需要一些启动时间来进行动态编译。因此,使用 GraalVM 的 AOT 编译可能会显著减少启动时间,提高应用程序的响应性能。 2.内存占用:GraalVM 的 AOT 编译可以减少应用程序的内存占用,因为本地机器码通常比解释执行的字节码更加紧凑。这可以提高应用程序的可扩展性和资源利用率。 3.即时编译性能:GraalVM 的 JIT 编译器在某些情况下可能会提供更好的性能。它可以对热点代码进行更优化的编译,以提高执行速度。这可能在一些计算密集型任务或高并发场景中带来性能提升。 4.应用本身大小:在真实环境下占用对比 且二进制版本是已经整合5个项目的完整项目 而jar只是其中1/5 10、demo开箱即体验 经过真实项目验证的框架demo已上传至github、地址:kafka-stream 基于JDK17+springboot3.0.6+kafkaStream构成 支持 native-image打包 让您下的开心 用的舒心 欢迎大家体验 作者:京东科技 徐拥 来源:京东云开发者社区

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册