- 博客(128)
- 资源 (6)
- 问答 (3)
- 收藏
- 关注
原创 一分钟掌握Java所有SPI新特性(Java9-Java23)
本文详细列举了从 Java 9 到 Java 23 的所有服务提供者接口(SPI)特性,包括每个版本的具体说明和示例代码。主要特性包括 Java 9 的 java.sql.Driver 和 java.util.ServiceLoader ,Java 10 的 CurrencyNameProvider ,Java 11 的 LocaleServiceProvider ,Java 12 的 DateFormatProvider ,Java 13 的 ResourceBundleControlPro
2024-10-08 21:54:45
1871
原创 一分钟掌握 Java23 新特性
Java 23 引入的新特性和对现有特性的增强,不仅提升了语言的表达能力和灵活性,还改善了开发者的编码体验。通过这些新特性,开发者可以编写出更加简洁、高效和易于维护的代码。希望以上的说明能够帮助你更好地理解 Java 23 的新特性及其与之前版本的区别!
2024-10-08 21:09:01
1033
原创 一分钟掌握 Java22 新特性
Java 22 引入的新特性极大地增强了语言的表达能力和灵活性,尤其是在模式匹配、记录类型、外部函数和内存管理等方面。希望以上的示例和解释能够帮助你更好地理解 Java 22 的新特性!
2024-10-08 21:01:32
511
原创 一分钟掌握 Java21 新特性
Java 21 引入的这些新特性极大地增强了语言的表达能力和性能,尤其是在并发编程和与其他语言的互操作性方面。通过这些新特性,开发者可以编写出更简洁、高效和安全的代码。希望以上的示例和解释能够帮助你更好地理解 Java 21 的新特性!
2024-10-08 21:00:17
507
原创 一分钟掌握 Java20 新特性
Java 20 引入了一些重要的新特性,包括模式匹配 for `switch` 、虚拟线程、记录模式、代码片段支持以及语言增强。这些特性旨在提高开发者的生产力和代码的可维护性,同时增强 Java 在并发编程和字符串处理方面的能力。对于之前的版本,Java 20 在多个方面进行了优化和改进,确保开发者能够更高效地使用 Java 进行开发
2024-10-08 19:42:29
1073
原创 一分钟掌握 Java19 新特性
Java 19 引入了一些重要的新特性,包括模式匹配 for `switch` 、虚拟线程、记录模式、新的 `String` 方法以及多行字符串支持。这些特性旨在提高开发者的生产力和代码的可维护性,同时增强 Java 在并发编程和字符串处理方面的能力。对于之前的版本,Java 19 在多个方面进行了优化和改进,确保开发者能够更高效地使用 Java 进行开发
2024-10-08 19:41:23
510
原创 一分钟掌握 Java18 新特性
Java 18 引入了一些重要的新特性,包括对向量 API 的增强、代码片段的支持、UTF-8 作为默认字符集以及实验性的结构化并发 API。这些特性旨在提高开发者的生产力和代码的可维护性,同时增强 Java 在国际化和多线程编程方面的能力。对于之前的版本,Java 18 在多个方面进行了优化和改进,确保开发者能够更高效地使用 Java 进行开发
2024-10-08 19:40:02
380
原创 一分钟掌握 Java17 新特性
Java 17 引入的这些新特性增强了语言的表达能力和性能,帮助开发者更高效地编写和维护代码。通过封闭类、模式匹配、增强的 `switch` 表达式等新特性,Java 17 使得代码更加简洁和安全,同时也提供了更强大的性能优化能力。
2024-10-08 19:38:54
1086
原创 一分钟掌握 Java16 新特性
引入的这些新特性极大地增强了语言的表达能力和性能,帮助开发者更高效地编写和维护代码。通过模式匹配、记录、密封类等新特性,Java 16 使得代码更加简洁和安全,同时也提供了更强大的性能优化能力。
2024-10-08 19:34:30
970
原创 一分钟掌握 Java15 新特性
Java 15 引入的新特性包括文本块的正式化、密封类、隐藏类、新垃圾收集器的增强和 `instanceof` 的进一步完善。这些新特性提升了语言的灵活性和性能,同时也增强了代码的可维护性和安全性。Java 15 继续推动 Java 语言向现代化发展,满足开发者在高效编程方面的需求。
2024-09-24 21:50:48
436
原创 一分钟掌握 Java14 新特性
Java 14 引入的新特性使得编程更加灵活和高效,特别是在数据类、空指针异常处理和字符串处理方面的改进,极大地提升了开发者的编程体验。这些新特性不仅提高了代码的可读性和可维护性,也为高性能应用程序提供了更好的支持。
2024-09-24 21:42:39
1046
原创 一分钟掌握 Java13 新特性
Java 13 的新特性使得编程更加灵活和高效,特别是在字符串处理、switch 表达式和内存管理方面的改进,极大地提升了开发者的编程体验。这些新特性不仅提高了代码的可读性和可维护性,也为高性能应用程序提供了更好的支持。
2024-09-24 21:32:10
471
原创 一分钟掌握 java12 新特性
Java 12 的新特性使得编程更加灵活和高效,特别是在字符串处理、内存管理和异常处理方面的改进,极大地提升了开发者的编程体验。这些新特性不仅提高了代码的可读性和可维护性,也为高性能应用程序提供了更好的支持。
2024-09-24 21:13:13
976
原创 一分钟掌握 Java11 新特性
Java 11 的新特性使得语言更加现代化,增强了代码的可读性和可维护性,同时改善了性能和开发体验。无论是在日常编程中,还是在处理复杂的应用程序时,这些新特性都能够为开发者提供更大的便利。
2024-09-24 21:00:19
1150
原创 一分钟掌握 Java10 新特性
Java 10 引入了多项令人兴奋的新特性,包括局部变量类型推断 (var),简化变量声明;改进的 G1 垃圾回收,减少暂停时间;多重释放 JAR 支持,提升兼容性;实验性的 HTTP 客户端 API,简化网络请求处理;以及增强的文件系统支持,提升文件操作效率。这些特性显著提升了开发效率和应用性能。
2024-09-23 21:08:01
310
原创 NacosException: Request nacos server failed
NacosException: Request nacos server failed:
2022-12-14 10:25:54
5712
1
原创 Redis缓存Key过期原理和内存淘汰策略
Redis通过(Redis字典通过哈希表来实现)来存储键的过期时间,字典的键是指向RedisDb的指针(使用指针可以避免浪费),字典的值是一个毫秒的时间戳,所以当前时间大于字典值的时候这个键就过期了,就可以对这个键进行删除(删除一个键不仅要删除redisDb数据库中的键,也要删除过期字典中的键)。通过pexpireat命令来设置过期时间的命令,其他命令最终也会转换成pexpireat。给一个键设置过期时间,就是将这个键的指针及给定的到期时间戳加到过期字典中。
2022-09-15 22:14:14
873
原创 Redis解决数据一致性方案
先更新数据库,再删除缓存;先删除缓存,再更新数据库;目标就是通过重试机制来解决后删除缓存失败的情况,直到删除成功。无论是重试还是异步删除,都是最终一致性的思想。我们在使用Redis缓存时,优先选择先更新数据库,再删除缓存并且同步设置key的过期时间。在一些对数据一致性要求比较强的业务中,适当的借助MQ或者Canel来做重试。
2022-09-15 13:55:14
2849
原创 Redis存储结构之zskiplist
zskiplist是一个有序的集合,为了解决其他链表的插入、删除效率低、查询元素需要循环遍历等缺点,redis就采用了一个特殊的数据结构zskiplist(跳跃表)。它在性能上跟红黑树差不多, 同时又比红黑树的实现简单。在插入、删除、查询等操作上的时间复杂度为o(logn)。
2022-09-13 14:40:41
371
原创 Redis数据类型-zSet基本使用
- 有序且不可重复的集合- 每个元素都会关联一个 double 类型的分数。正是通过分数来为集合中的成员进行从小到大的排序 - 类似Java中的数据结构Map,其中Double类型就是给每个value元素赋予一个score(权重)- 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)- 一个集合可以存储 2 ^ 32 - 1 个元素(4,294,967,295);
2022-09-09 10:24:56
1437
原创 Redis数据类型-List-基本使用
list存储有序且可重复的集合;一个集合可以存储 2 ^ 32 - 1 个元素(4,294,967,295);由于List是一个连表结构,从头部或者尾部新增、删除贼快所以时间复杂度为,中间相对慢一点因为要先找到中间某个元素。查询需要从头开始查所以相对较慢(快速列表,详细介绍:https://blog.youkuaiyun.com/u011077966/article/details/126769333)
2022-09-08 17:56:25
580
原创 Redis存储结构之QuickList
快速列表(quicklist)是以压缩列表(ziplist)为节点的链表(linkedlist),将链表按段切分,每一段使用压缩列表进行内存的连续存储,多个压缩列表通过prev和next指针组成的双向链表。它结合了压缩列表和链表的优势,进一步压缩了内存的使用量,进一步提高了效率。
2022-09-08 17:52:38
372
原创 Redis数据类型-String-基本使用和原理
Redis是由C语言编写,在C语言中没有String的类型,所以用自定义的数据类型SDS(simple dynamic string),并将SDS作为Redis的字符串表示。SDS在旧版本中使用方式跟新版本不同,如果你看到如下描述都是旧版本:根据不同的长度的字符串定义了不同的结构,分别为:sdshdr5、sdshdr8、sdshdr16、sdshdr32、sdshdr64说明:redis在做初始化时,如果长度小于3的使用sdshdr5,小于2^8的长度使用sdshdr8,以此类推原理:数据在进行扩容的时候
2022-09-07 13:45:25
248
原创 Redis存储结构之dictht字典
属性是个数组, 数组的每个元素都是个指向dictEntry结构的指针。每个dictEntry都保存着一个键值对, 以及一个指向另一个dictEntry属性指向另一个dictEntry结构, 多个dictEntry可以通过next指针串连成链表, 从这里可以看出,dictht使用链式寻址法来解决hash冲突: 当多个不同的键拥有相同的哈希值时,哈希表用一个链表将这些键连接起来。
2022-09-06 13:45:19
588
原创 Redis存储结构之ziplist
ziplist是为了尽可能的节省存储空间,将数据进行紧凑的存储修改操作耗费性能:ziplist在内存中是高度紧凑的连续存储,这意味着它对修改并不友好,如果要对ziplist做修改类的操作,那就需重新分配新的内存来存储新的ziplist,代价很大添加和删除 ziplist 节点有可能会引起连锁更新,因此,添加和删除操作的最坏复杂度为 O(N^2),不过,因为连锁更新的出现概率并不高,所以一般可以将添加和删除操作的复杂度视为 O(N)。
2022-09-06 13:42:49
837
原创 Redis数据类型-Hash-基本使用
为哈希表 中的域 的值加上增量 。增量也可以为负数,相当于对给定域进行减法操作。如果 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。如果域 不存在,那么在执行命令前,域的值被初始化为 。对一个储存字符串值的域 执行 HINCRBY 命令将造成一个错误。本操作的值被限制在 64 位(bit)有符号数字表示之内。如果哈希表中没有域 ,那么 HINCRBYFLOAT 会先将域 的值设为 ,然后再执行加法操作。如果键 不存在,那么HINCRBYFLOAT 会先创建一个哈希表,再创建
2022-09-06 13:37:37
2037
原创 Redis数据类型-Hash-基本使用
为哈希表 中的域 的值加上增量 。增量也可以为负数,相当于对给定域进行减法操作。如果 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。如果域 不存在,那么在执行命令前,域的值被初始化为 。对一个储存字符串值的域 执行 HINCRBY 命令将造成一个错误。本操作的值被限制在 64 位(bit)有符号数字表示之内。如果哈希表中没有域 ,那么 HINCRBYFLOAT 会先将域 的值设为 ,然后再执行加法操作。如果键 不存在,那么HINCRBYFLOAT 会先创建一个哈希表,再创建
2022-09-05 15:24:33
931
原创 Redis数据类型-Set-基本使用
没有获取到交集元素时,注意:若指定集合destKey存在,它的值将会被覆盖。key与otherKeys没有获取到差值,destKey如果存在,会被删除。key与otherKey没有获取到差值,destKey如果存在,会被删除。destKey存在,它原本集合中的所有值会被清空并且替换为获取的差值。destKey存在,它原本集合中的所有值会被清空并且替换为获取的差值。例如:总计10个数,指定11个,最多返回10个。1、个数不受集合中已有数量限制。destKey不存在,直接新增。destKey不存在,直接新增。
2022-09-05 13:33:24
891
原创 Redis数据类型-Set-原理
intset的核心是一个字节数组,按照从小到大存放着set元素encoding:每个元素的编码方式,编码方式指定了一个整数元素占用多少个contents数组位int16_t 2个字节,16位的整数,范围相当于java 的 short 类型int32_t 4个字节,32位的整数,范围相当于java 的 int 类型int64_t 8个字节,64位的整数,范围相当于java 的 Long 类型length:元素数量contents:存储具体的元素,元素按照从小到大排序
2022-09-05 11:47:02
1048
原创 idea Server URL 配置修改
在创建spring boot或者spring cloud项目时,idea默认使用https://start.spring.io作为脚手架,创建完成后手动去添加相关的jar包组合。通过https://start.aliyun.com 可以直接勾选ali相关的jar包,快速的引入集成。修改如下位置:如下图:使用https://start.spring.io时如下图:使用 时如下图:...
2021-09-14 09:47:58
13666
原创 sleuth+zipkin实现链路追踪监控
sleuth:日志打印标记traceId:一条链路中可以包含多个spanId:一次请求true/false:是否需要把输入的数据展示到其他按平台上zipkin日志上报、收集展示实现步骤:1、在网关和所有的服务中添加如下jar包<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth<
2021-03-24 11:20:46
257
原创 Alibaba-Sentinel
限流的作用 保护系统避免被瞬时流量冲垮; 预防恶意请求; 根据阈值控制流量 限流指标(可以容纳的流量、已容纳的流量、可以接受的流量); 限流过程(通过算法来实现); 限流结果(处理策略); 限流算法 计数器算法; 指定周期内累加访问次数,当访问次数达到设定的阈值时,触发限流策略,当进入下一个周期时进行访问次数的清零; 滑动窗口算法; 为了解决计数器算法带来的临界值问题,所以引入了滑动窗口算法;
2020-12-23 17:52:45
393
1
原创 Alibaba-Nacos
简介解决微服务中的统一配置、服务注册于发现等问题。帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。关键特性 服务发现和健康检测 支持基于DNS和基于RPC的服务发现。 提供者:使用原生SDK、OpenAPI或一个独立的 Agent TODO 注册Service; 消费者:使用DNS或HTTP&API查找和发现服务; Nacos提供对服务实时的健康检查,阻止向不健康的主机或服务实例发送请求。
2020-12-23 17:37:44
291
原创 Alibaba-Dubbo
简介 Apache Dubbo 是一个分布式服务框架,主要实现了多个系统之间的高性能、透明化调用,简单讲就是RPC框架; 支持多种协议的服务发布:dubbo://、rest://、webservice://、thrift://; 支持多种不同的注册中心:Nacos、Zookeeper、Redis、Consul、Eureka、Etcd等; 另外还提供了服务治理功能,比如服务注册、监控、路由、容错; 集群容错 Failover Cluster:默认模式,失败自动切换
2020-12-23 16:54:17
1002
metronic.bootstrap 模板
2015-12-22
linux 环境下 ant+buld.xml 能够自动构建git项目
2018-06-07
gradle 编译spring源码报错
2016-05-27
Maven继承问题A->B->C
2016-02-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人