Java
文章平均质量分 58
Java
shangjg3
这个作者很懒,什么都没留下…
展开
-
堆是一个完全二叉树
例如 3 , 1 , 2 {3,1,2}3,1,2 可以看作为大根堆,而 3 , 2 , 1 {3,2,1}3,2,1 亦可以看作为大根堆。小根堆的性质与大根堆类似,只不过在二叉树的结构中,根结点<子结点。例如 1 , 2 , 3 {1,2,3}1,2,3 为小根堆,1 , 3 , 2 {1,3,2}1,3,2 同样也是小根堆。若 2 ⋅ i + 2 < n 2·i+2<n2⋅i+2<n ,其右子节点的序号为 2 ⋅ i + 2 2·i+22⋅i+2 ,否则没有右子节点。原创 2024-07-01 09:49:04 · 219 阅读 · 0 评论 -
Ribbon的9种负载均衡策略
它根据每一个服务实例的运行情况先计算出该服务实例的一个权重,然后根据权重进行服务实例的挑选,这样能够调用到更优的服务实例。PredicateBaseRule 类是 ClientConfigEnabledRoundRobbinRule 类的一个子类,它通过内部定义的一个过滤器过滤出一部分服务实例清单,然后用线性轮形的方式从过滤出来的服务实例清单中选取提个服务实例。incrementAndGetModulo() 方法获取一个下标 (是先加1,然后和服务清单总数取模获取到的,不会越界),是一个不断增长的数。原创 2024-06-30 03:00:00 · 1212 阅读 · 0 评论 -
Eureka-Serve的探活机制,是如何判断一个服务不可用的?
Eureka Server不再从注册列表中移除因为长时间没有收到心跳而应该剔除的过期服务,如果在保护期内如果服务刚好这个服务提供者非正常下线了,此时服务消费者就会拿到一个无效的服务实例,此时会调用失败,对于这个问题需要服务消费者端要有一些容错机制,如重试,断路器等!实际,心跳检测机制有一定的不确定行,比如服务提供者可能是正常的,但是由于网络通信的问题,导致在90s内没有收到心跳请求,那将会导致健康的服务被误杀。服务端维护了每个实例的最后一次心跳时间,客户端发送心跳包过来后,会更新这个心跳时间。原创 2024-06-28 18:25:23 · 920 阅读 · 0 评论 -
Java基础知识-集合类
当我们创建 hashmap 时 会先创建一个数组,当我们用 put 方法存数据时,先根据 key 的 hashcode 值计算出 hash 值,然后用这个哈希值确定在数组中的位置,再把 value 值放进去,如果这个位置本来没放 东西,就会直接放进去,如果之前就有,就会生成一个链表,把新放入的值放在头部,当用 get 方法取值时,会先根据 key 的 hashcode 值计算出 hash 值,确定位置,再根据 equals 方法从该位置上的链表中取出该 value 值。di 是产生冲突的时候的增量序列。原创 2024-06-27 10:24:52 · 1023 阅读 · 0 评论 -
高性能分布式对象存储-MinIO 核心概念
该模式是Minio服务最常用的架构,通过共享一个access_key和secret_key,在多台服务器上搭建服务,且数据分散在多块(大于4块,无上限)磁盘上,提供了较为强大的数据冗余机制(Reed-Solomon纠删码)。——单机Minio服务存在单点故障,相反,如果是一个有N块硬盘的分布式Minio,只要有N/2硬盘在线,你的数据就是安全的。例如,一个16节点的Minio集群,每个节点16块硬盘,就算8台服務器宕机,这个集群仍然是可读的,不过你需要9台服務器才能写数据。原创 2024-06-11 10:28:28 · 962 阅读 · 0 评论 -
高性能分布式对象存储-MinIO多节点部署
MinIO 是一个高性能的分布式对象存储服务,它可以配置为多节点(或多服务器)模式以提供高可用性和数据冗余。以下是一个基本的多节点MinIO部署示例:确保你有多个服务器或虚拟机。 在每个节点上安装MinIO。 使用minio server命令启动多节点模式。以下是一个简单的命令行示例,展示如何在两个节点上启动MinIO实例:节点1:minio server http://192.168.1.101:9000/data http://192.168.1.101:9000/data2原创 2024-06-11 10:02:15 · 675 阅读 · 0 评论 -
SpringClould超时问题汇总
connectTimeout: 10000 # 连接超时时间(毫秒)readTimeout: 10000 # 读取超时时间(毫秒)原创 2024-05-11 11:15:00 · 529 阅读 · 0 评论 -
JSCH使用自定义连接池
4.2 使用springboot中bean的作用域prototype。2. 改造shellUtil。使用@Lookup注入方式。4. 线程安全问题解决。原创 2024-04-07 16:04:28 · 615 阅读 · 0 评论 -
Springboot中JSCH的使用
将目标服务器上文件名为src的文件下载到本地,本地文件名为dst。(注:src必须是文件,不能为目录)指定文件传输模式为mode(mode可选值为:ChannelSftp.OVERWRITE,ChannelSftp.RESUME,ChannelSftp.APPEND),并使用实现了SftpProgressMonitor接口的monitor对象来监控文件的传输进度。将本地文件名为src的文件上传到目标服务器,目标文件名为dst,若dst为目录,则目标文件名将与src文件名相同。指定文件传输模式为mode。原创 2024-04-07 15:56:43 · 1806 阅读 · 0 评论 -
SpringCloud Feign-声明性Http请求以及Hystrix-Http请求的熔断配置
1.1 概述– Feign是一个声明性web服务客户机。它使编写web服务客户机变得更容易。– 它的使用方法是定义一个服务接口并在上面添加注解。– Feign支持可插拔编码器和解码器。– Spring Cloud对Feign进行了封装,使其支持SpringMVC标准注解和。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。1.2 Feign的作用Feign旨在使编写Java Http客户端变得更容易。前面在使用时,利用。原创 2024-01-03 14:17:13 · 1099 阅读 · 0 评论 -
Java 函数式编程
在 JDK 1.8 之前,我们只能通过匿名表达式来完成类似的功能,但是匿名表达式比较繁琐,存在大量的模板代码,不利于将行为参数化,而采用 Lamdba 则能很好的解决这个问题。super T,?Stream 中最强大一个终止操作是 collect() ,它接收一个收集器 Collector 作为参数,可以将流中的元素收集到集合中,或进行分组、分区等操作。可选的返回关键字:如果主体只有一个表达式,则该表达式的值就是整个 Lambda 表达式的返回值,此时不需要使用 return 关键字进行显式的返回。原创 2023-11-04 22:46:27 · 200 阅读 · 0 评论 -
Java 反射与注解
对于数组类型的getName返回值,使用前缀`[`表示数组,有几个`[`表示是几维数组,数组类型使用简写表示:`boolean(Z)`、`byte(B)`、`char(C)`、`double(D)`、`float(F)`、`int(I)`、`long(J)`、`short(S)`、`接口和类(L)`。在 Java 中,每个已加载的类在内存中都有一份类信息,类信息对应的类是 `java.lang.Class`,每个对象都持有指向它所属类信息的引用。原创 2023-11-03 22:57:14 · 232 阅读 · 1 评论 -
Java NIO 编程
而 NIO 是面向缓冲区的,所有的读写操作都需要通过 Buffer 来完成,数据会被先写入 Buffer 中,然后再进行处理,Buffer 提供了多种方法用于操纵其中的数据,因此其在操作上更加灵活,读取速度也更加快。- 复制缓冲区的 mark、position、limit、capcaity 属性的初始值与复制时原缓冲区的 mark、position、limit、capcaity 的值相同,但这些属性与原缓冲区的属性相互独立,创建后就不再受原有缓冲区的影响;close():关闭当前 Channel。原创 2023-11-03 22:44:54 · 305 阅读 · 0 评论 -
SpringBoot升级2.7之后spring.profiles.include配置失效
SpringBoot升级2.7之后spring.profiles.include配置失效。解决方法是用spring.config.import 以配置文件名称引入。原创 2023-08-17 16:40:15 · 1790 阅读 · 0 评论 -
Java服务CPU占用率太高问题排查
pid是Java进程的进程号,interval是采样间隔时间(单位为毫秒),count是采样次数。使用jstack命令获取Java进程的线程信息。使用jstat命令查看Java进程的GC情况。pid是Java进程的进程号。原创 2023-08-16 17:14:19 · 64 阅读 · 0 评论 -
Mybatis的驼峰映射
1.Mysbatis2.0的配置方法。2.Mysbatis3.0的配置方法。原创 2023-08-16 12:55:08 · 164 阅读 · 0 评论 -
org.quartz.SchedulerConfigException: DataSource name not set
starter-quartz升级 2.5.7之后的问题。将quatz.propeties文件中。原创 2023-08-08 15:53:20 · 998 阅读 · 0 评论 -
Relying upon circular references is discouraged and they are prohibited by default
升级 Spring Boot 2.6后,因循环引用导致启动时报错的问题。原创 2023-08-08 11:32:32 · 79 阅读 · 0 评论
分享