- 博客(53)
- 资源 (6)
- 收藏
- 关注
原创 Java 8-17核心特性全景解析之Java12
Java 12首次引入了Switch表达式作为预览特性,这是对传统switch语句的增强,使其可以作为表达式使用,并提供了更简洁的语法。Java 12引入了Shenandoah垃圾收集器作为实验性特性,它是一种低停顿时间的垃圾收集器,旨在减少GC暂停时间。Java 12添加了一套基于JMH(Java Microbenchmark Harness)的微基准测试套件,用于测试和比较JDK的性能。Java 12增强了类,添加了紧凑的数字格式化支持,可以将大数字以更易读的形式显示。Java 12引入了。
2025-03-26 18:28:40
548
原创 Java 8-17核心特性全景解析之Java11
Java 11将Java 9中引入的HTTP客户端API从孵化模块升级为标准模块,提供了现代化的HTTP客户端,支持HTTP/1.1和HTTP/2协议。Java 11为String类添加了多个实用的新方法,简化了字符串处理。Java 11允许在Lambda表达式的参数中使用var关键字,与Java 10引入的局部变量类型推断相呼应,同时可以添加注解。Java 11引入了ZGC (Z Garbage Collector),这是一个可扩展的低延迟垃圾收集器,旨在将GC停顿时间控制在10毫秒以内,无论堆大小如何。
2025-03-26 18:27:03
811
原创 Java 8-17核心特性全景解析之Java9、10
模块系统是Java 9最重要的特性,旨在解决Java平台和应用程序的可伸缩性问题,提供更好的封装性和依赖管理。JShell是Java 9引入的交互式编程环境,允许开发者快速测试Java代码片段,无需编写完整的类或方法。Java 9引入了创建不可变集合的便捷工厂方法,使创建小型集合实例更加简洁。Java 9允许在接口中定义私有方法,进一步增强了接口的封装能力,使默认方法的代码复用更加便捷。Java 9对Stream API进行了增强,添加了几个新的方法,使流处理更加灵活和强大。
2025-03-25 19:23:38
1094
原创 Java 8-17核心特性全景解析之Java8
Lambda表达式是Java 8引入的最重要特性,它为Java带来了函数式编程的能力,使代码更加简洁、可读性更强。Stream API提供了一种函数式的集合操作方式,支持串行和并行处理,极大地简化了集合操作。方法引用是Lambda表达式的一种简化形式,当Lambda表达式的内容仅仅是调用一个已存在的方法时,可以使用方法引用来替代。Java 8允许在接口中定义默认方法和静态方法,这使得接口的设计更加灵活,同时保持了向后兼容性。
2025-03-25 19:18:05
1010
原创 SpringBoot事务原理剖析
SpringBoot事务管理机制构建在Spring事务抽象之上,通过AOP实现声明式事务管理。开发者需理解事务传播行为、隔离级别以及常见的事务失效场景,才能设计出健壮的事务解决方案。在实际应用中,应根据业务特点选择合适的事务传播行为和隔离级别,避免过大的事务边界,并为关键业务操作编写完善的单元测试验证事务行为。SpringBoot事务管理广泛使用ThreadLocal机制实现线程隔离和事务上下文传播,这使得声明式事务能够优雅地工作,但也带来了多线程环境下的特殊考虑。理解ThreadLocal在事务中
2025-03-24 18:32:57
723
原创 Spring Boot事件机制详解
事件驱动架构(Event-Driven Architecture, EDA)是一种软件设计模式,其中系统组件通过事件的发布与订阅进行通信。在Spring Boot中,事件机制为应用程序提供了松耦合的组件间通信方式,使得发布者无需关心谁在监听,监听者也无需了解事件来源
2025-03-24 16:20:57
1174
原创 SpringBoot 3.0之后为什么移除了spring.factories
从SpringBoot 3.0开始,引入了基于imports文件的新机制,作为的替代方案。这些文件位于文件名对应的spring.factories中的键对于自定义的扩展点,需要提供类似的imports// 自定义扩展点加载器示例// 迁移到新机制// 或者实现自己的imports文件加载逻辑// ...// 1. 创建配置属性类// getter和setter方法// ...// 2. 创建自动配置类。
2025-03-23 13:46:15
964
原创 一文看懂Spring Boot中的事务管理:传播特性与隔离级别详解
在企业级应用开发中,事务管理是确保数据一致性和完整性的关键机制。Spring Boot作为流行的Java开发框架,提供了强大而灵活的事务管理功能。本文将深入介绍Spring Boot中事务的传播特性与隔离级别,帮助开发者更好地理解和应用这些概念。事务是一组操作的集合,这些操作要么全部成功执行,要么全部失败回滚,保证了数据的一致性。原子性(Atomicity):事务中的所有操作作为一个整体执行,要么全部成功,要么全部失败。一致性(Consistency)
2025-03-23 12:23:40
713
原创 @Lazy懒加载详解
懒加载(Lazy Loading)是一种设计模式,核心思想是延迟对象的初始化,直到真正需要使用该对象的时候才进行创建和初始化。在Spring Boot中,我们可以通过@Lazy注解来实现这一机制。
2025-03-22 15:37:55
915
原创 如何开发一个你自己的springboot-starter
Starter 是 Spring Boot 的一个核心特性,它包含了一组依赖描述,用来简化应用程序的依赖配置。使用 Starter 可以避免手动管理依赖项的版本冲突问题,同时通过自动配置机制,无需编写大量配置代码就能快速集成某项功能。当我们开发了一个通用功能模块,希望在多个项目中复用时,将其封装为 Starter 是一个很好的选择。这样其他项目只需要引入你的 Starter 依赖,就能自动获得该功能,而无需关心内部实现细节。按照惯例,我们的自定义 Starter 应该使用非官方命名方式。
2025-03-22 15:15:37
1172
原创 为什么阿里Java规范不建议使用@Autowired
为什么阿里巴巴Java开发手册不建议使用@Autowired,而是@Resource,本文给出了详细的介绍
2025-03-21 14:24:22
743
原创 Java注解处理器(Annotation Processor)详解
Java注解处理器是一个强大的工具,可以在编译时生成代码、验证API使用和提供元数据。通过与Google Auto Service结合,可以简化处理器的注册过程。注解处理器的主要优势在于它们可以在编译时捕获错误并生成高效的代码,避免运行时反射带来的性能开销。在实际应用中,注解处理器被广泛用于依赖注入框架、ORM映射、路由生成和序列化等场景,极大地提高了开发效率并减少了样板代码。
2025-03-21 14:04:56
820
原创 Lombok常用注解
Lombok是一个Java库,通过注解的方式帮助开发者减少样板代码的编写,提高开发效率。本文将Lombok常用注解分类整理,并提供详细说明和使用示例。
2025-03-19 23:26:52
1290
原创 SpringBoot常用注解
SpringBoot框架提供了丰富的注解,极大地简化了应用开发。本文将SpringBoot常用注解按功能分组,并提供详细说明和使用示例。
2025-03-19 23:21:36
1325
原创 IDEA deploy报错
Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy) on project xxx: Failed to retrieve remote metadata cn.xxx.xxx:1.0.0-SNAPSHOT/maven-metadata.xml: Could not transfer metadata cn.xxx.xxx:1.0.0-SNAPSHOT/maven-m
2021-05-27 15:03:08
1188
原创 在Springboot下使用Netty并引入redis后@Scheduled定时任务抛NoSuchMethodError异常
原因:Springboot版本为2.1.3.RELEASE, Netty版本为4.1.50.Final, 引入spring-boot-starter-data-redis依赖后, 因为其中也有Netty依赖, 但是版本只有4.1.33, 因而版本冲突导致异常解决方法:1. 将Springboot版本改为2.2.6.RELEASE2. 或将Netty版本改为4.1.33.Final<parent> <groupId>org.springframework.boo.
2020-10-10 09:43:20
585
转载 Ntrip协议简介
https://blog.youkuaiyun.com/sinat_19447667/article/details/67637167
2020-09-15 09:34:35
1067
1
原创 docker - 设置时区的几种方式
1、在Dockerfile中设置镜像时区# 设定时区ENV TZ=Asia/ShanghaiRUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone2、创建容器时设置时区将宿主机与容器的时间进行挂载-v /etc/localtime:/etc/localtime3、进入容器进行设置1)进入容器内:docker exec -it 容器名 /bin/bash 2)设
2020-07-27 10:12:41
5266
1
原创 上传文件提示The temporary upload location [/tmp/tomcat.xxxx...问题解决方案
异常描述Caused by: java.io.IOException: The temporary upload location [/tmp/tomcat.xxx.xxx/work/Tomcat/localhost/ROOT] is not valid原因spring boot应用服务启动的时候,会在tmp目录下生成一个关于tomcat的文件目录,上传的文件先要转换成临时文件保存在这个文件夹下面。由于临时tmp目录下的文件,在长时间(10天)没有使用的情况下,就会被系统机制自动删除掉,所以长时间没
2020-07-01 14:41:37
11401
转载 github提速
https://blog.youkuaiyun.com/qq_44621510/article/details/95251993
2020-06-15 14:07:37
186
原创 关闭防火墙后,启动容器报错: docker0: iptables: No chain/target/match by that name
在关闭防火墙后, 启动容器报以下错误:Error response from daemon: Cannot restart container 41d2e371d5c5: driver failed programming external connectivity on endpoint sentinel-26379 (1be5e5aa55e555d192adfcd90b0ad395683afce74087dc9d21933331d41051ea): (iptables failed: iptable
2020-05-28 16:18:36
540
原创 Redis各版本描述
Redis2.6Redis2.6在2012年正是发布,经历了17个版本,到2.6.17版本,相对于Redis2.4,主要特性如下:服务端支持Lua脚本。去掉虚拟内存相关功能。放开对客户端连接数的硬编码限制。键的过期时间支持毫秒。从节点支持只读功能。两个新的位图命令:bitcount和bitop。增强了redis-benchmark的功能:支持定制化的压测,CSV输出等功能。基于浮点数自增命令:incrbyfloat和hincrbyfloat。redis
2020-05-27 19:51:49
4568
原创 SpringCloudGateway获取请求体参数方式
1.版本说明框架版本springboot2.2.6.RELEASEspring-cloud-alibaba2.2.0.RELEASEspring-cloud-gateway2.2.0.RELEASE2.需求需要在网关打印请求日志, 其中需要获取POST请求的请求体参数3.遇到的问题按照网上查到的方案, 用在这个版本的cloud上, 全都不起作用;请求体只能读取一次, 读取之后, 后续的过滤器将无法获取请求体数据;SpringCloudGateway使
2020-05-23 21:19:02
4627
3
原创 Netty与SpringBoot使用注意点
1. 注意在Encoder、Decoder、Handler中使用注入@Resourceprivate AuthHandler authHandleServerBootstrap b = new ServerBootstrap(); b.group(bossGroup, workerGroup) .channel(NioServerSocketChannel.class) .childHandler
2020-05-20 16:29:58
422
原创 Spring Cloud通过Feign请求返回值LocalDateTime异常
问题描述:通过openFeign调用接口, 请求能达到服务, 但是返回值中含有LocalDateTime类型参数, 报以下错误:feign.codec.DecodeException: Type definition error: [simple type, class java.time.LocalDateTime]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot co
2020-05-20 16:16:59
3189
1
转载 gateway yml配置文件转成json格式
- id: admin-service uri: lb://admin-service predicates: - Path=/admin/** - Weight=service1, 90 filters: - SwaggerHeaderFilter - StripPrefix=1 - id: order-service uri: lb://order-service ...
2020-05-09 15:21:38
2083
原创 SpringCloudGateway遇到的坑
1. 启动报错: No qualifying bean of type 'org.springframework.core.convert.ConversionService原因:gateway采用的是webflux, 如果引入了含有mvc的依赖就会报错, 比如: swagger2, spring-boot-starter-web等解决方法:排除相关依赖<exclusions>...
2020-05-06 20:19:21
3819
原创 @RequestMapping和@FeignClient放在同一个接口上遇到的坑
@RequestMapping("/user/admin")@FeignClient(ServiceNameConstants.USER_ADMIN_SERVICE)public interface IUserAdminAuthApi { ...}问题:当一个接口上同时拥有@RequestMapping和@FeignClient注解时, 请求会报异常解决方法:把@RequestM...
2020-05-06 20:03:43
6234
1
原创 Android - 如何打jar包
在需要打包的module中的build.gradle中添加如下配置//Copy类型task makeJar(type: Copy) { //删除存在的 delete 'build/xxxSDK.jar' delete 'build/intermediates/packaged-classes/debug/classes.jar' //设置拷贝的文件 ...
2020-03-12 16:07:21
339
原创 使用safe-rm避免rm -rf / 危险操作
使用safe-rm避免rm -rf / 危险操作1. 下载safe-rmwget -c https://launchpadlibrarian.net/188958703/safe-rm-0.12.tar.gz2. 解压&移动&授权tar -xzvf safe-rm-0.12.tar.gzcd safe-rm-0.12mv safe-rm /usr/local/bin/r...
2020-03-06 16:46:06
779
原创 Android - JNI笔记
JNI开发流程编写Java接口(native方法)(选中需要生成C代码的Java文件)生成.c接口文件(使用javah命令生成)编写Android.mk文件编写Application.mk文件实现.c接口文件ndk-build编译so文件在src/main/libs目录下Java中使用System.loadLibrary(“Android.mk中LOCAL_MODULE的值”)加...
2020-03-04 17:18:49
361
百度瓦片图工具.zip
2020-01-19
ffmpeg-Windows版&Linux版.zip
2020-01-19
OMA-AD-SUPL-V2_1-20120529-C.en.zh-CN.pdf
2020-01-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人