- 博客(18)
- 收藏
- 关注
原创 问答:为什么将定义的byte数组设置得大一些再调用system.gc()方法就会被垃圾回收器回收,而设置得小一些就不会,可能是什么原因?
当你定义一个较大的byte数组并调用`System.gc()`方法时,垃圾回收器可能会将该数组标记为可回收对象,并在适当的时候进行回收。相反,当你定义一个较小的byte数组并调用`System.gc()`方法时,垃圾回收器可能认为该数组的内存占用并不是一个紧迫的问题,因此可能不会立即回收它。垃圾回收器的回收策略是基于一系列的算法和启发式规则,它会根据当前的内存使用情况和垃圾回收的成本来决定何时回收对象。需要注意的是,`System.gc()`方法只是向垃圾回收器发出建议,但并不能保证立即触发垃圾回收。
2023-06-29 17:15:37
258
1
原创 关于局部变量的垃圾回收
但如果在同一函数内部,又声明了一个新的局部变量int y,而且y的类型和大小与x相同,那么编译器可能会选择复用之前x的内存空间来存储y的值,而不再重新分配新的内存空间。然而,由于编译器的优化机制,新声明的局部变量可能会复用之前已经释放的内存空间,以提高资源利用效率。这种情况下,旧的局部变量可能没有被显式地进行垃圾回收,但其占用的内存空间已经被重新利用,从而达到了节省资源的目的。前提:如果一个局部变量出了其作用域,那么在其作用域之后声明新的局部变量就很有可能会复用过期局部变量的槽位,从而达到节省资源的目的。
2023-06-29 16:56:59
617
1
原创 jvm调优:开启了逃逸分析,但是没开启标量替换,数据是不是就在堆中了?
是的,如果没有开启标量替换,即使开启了逃逸分析,对象的数据仍然会被分配在堆中。逃逸分析只是尽可能地将对象的引用分配在栈帧中,以减少堆的使用,但对象的数据仍然需要在堆中分配空间。只有开启了标量替换,对象的数据才能被拆分成基本类型数据,分配在栈帧中,从而完全避免了在堆中分配对象。
2023-06-23 22:36:54
182
1
原创 关于hystrix和ribbon的超时时间的关系
当Ribbon设置的返回响应超时了,但是Hystrix方法调用没有超时时,最终会以Hystrix的超时时间为准,这是因为Hystrix的超时时间是在调用线程中设置的,而Ribbon的超时时间是在另一个线程中设置的。当Ribbon的超时时间到达时,它会抛出一个超时异常,但是这个异常并不会影响Hystrix的执行,因为Hystrix并没有收到响应,它会继续等待自己设置的超时时间,如果在这个时间内还没有得到响应,就会触发服务降级或熔断。
2023-05-22 20:53:15
322
原创 sentinel限制qps和限制线程数的区别
2. 限制线程数:线程数是指应用程序同时处理请求的线程数量,Sentinel可以通过设置线程数的阈值来限制应用程序的并发量,当请求的并发量超过阈值时,Sentinel会拒绝请求或者进行熔断降级等操作,从而保证应用程序的稳定性。1. 限制QPS:QPS是指每秒钟请求的次数,Sentinel可以通过设置QPS的阈值来限制应用程序的流量,当请求的QPS超过阈值时,Sentinel会拒绝请求或者进行熔断降级等操作,从而保证应用程序的稳定性。
2023-05-12 20:34:50
953
原创 linux上的naocs集群数据库可以用windows上的吗?
其中,`<Windows_IP>`为Windows的IP地址,`<Windows_MySQL_Port>`为Windows上MySQL的端口号,`<Nacos_DB_Name>`为Nacos所需的数据库名称,`<Nacos_DB_User>`和`<Nacos_DB_Password>`为Nacos所需的数据库用户名和密码。Nacos集群的数据库可以使用Windows上的MySQL数据库,只需要在Windows上安装MySQL数据库,并在Linux上配置Nacos连接Windows上的MySQL数据库即可。
2023-05-11 21:04:26
145
原创 springcloud需要注册的微服务在windows操作系统,zookeeper服务注册中心在linux操作系统的docker上运行,两个操作系统之间需要互相ping通吗,ping通的目的是什么?
如果的微服务运行在Windows操作系统上,而注册中心运行在Linux操作系统的Docker容器中,那么两个操作系统之间需要互相ping通。这是因为,微服务需要通过网络连接到注册中心,才能完成注册和发现服务的功能。如果两个操作系统之间无法互相ping通,那么微服务就无法连接到注册中心,也就无法完成注册和发现服务的功能。在Spring Cloud中,微服务需要向注册中心注册自己的信息,以便其他微服务能够发现和调用它。Zookeeper是一种常用的注册中心,它可以运行在Linux操作系统上。
2023-05-11 20:03:18
87
原创 为什么消息提供者要同时绑定消息队列的输出通道和输入通道,绑定输出通道不就行了吗
消息提供者需要同时绑定消息队列的输出通道和输入通道,是因为它需要接收来自消息队列的确认消息。当消息提供者将消息发送到消息队列的输出通道时,它需要等待来自消息队列的确认消息,以确保消息已经成功发送到消息队列中。如果消息提供者只绑定了消息队列的输出通道,那么它将无法接收来自消息队列的确认消息,从而无法得知消息是否已经成功发送到消息队列中。在AMQP协议中,消息提供者和消费者都是通过消息队列来进行通信的,消息队列作为中间件,负责将消息从提供者路由到消费者,并保证消息的可靠性和顺序性。
2023-05-10 18:36:47
74
原创 对kafaka的底层结构做功能介绍,它是怎么接收和发送消息的?
Kafka会将一个Partition中的消息均匀地分配给Consumer Group中的每个Consumer,这样就可以实现消息的负载均衡和高可用性。2. Topic:Kafka中的消息被组织成一个个Topic,每个Topic都是一个逻辑上的消息流。消息发送者将消息发送到指定的Topic,消息接收者从指定的Topic中读取消息。5. Consumer:消息的消费者,负责从指定的Topic中读取消息。5. Consumer:消息的消费者,从指定的Topic中读取消息。
2023-05-10 18:12:10
191
原创 对rabbitmq的底层架构进行功能介绍
RabbitMQ 中的 Broker 由 Exchange 和 Queue 两个部分组成,Exchange 负责接收生产者发送的消息并将其路由到相应的 Queue 中,Queue 则负责存储消息并将其发送给消费者。同时,RabbitMQ 还支持消息的持久化、消息的优先级、消息的过期时间等高级特性,可以满足各种复杂的消息传递需求。2. Exchange:消息交换机,负责接收生产者发送的消息并将其路由到相应的 Queue 中。Queue 中的消息可以被多个消费者消费,但每个消息只能被一个消费者消费。
2023-05-10 18:00:11
259
原创 在客户端用feign服务降级,且在服务端用@HystrixCommand实现服务降级,那么它们的优先级如何,2,如果此时服务端宕机了呢?
当服务端宕机时,服务注册中心会将该服务的状态标记为不可用,负载均衡器会自动将请求转发到其他可用的服务实例上,从而保证服务的可用性。同时,也可以在客户端和服务端都实现服务降级策略,当服务不可用时,可以返回预设的默认值或者错误信息,从而提高系统的容错能力。3在服务端使用@HystrixCommand注解实现服务降级时,如果客户端也配置了服务降级,那么客户端的服务降级策略会覆盖服务端的服务降级策略。1. 在使用Feign进行服务调用时,如果客户端配置了服务降级,那么Feign会优先使用客户端的服务降级策略。
2023-05-09 17:21:54
230
原创 @EnableHystrix和@EnableCircuitBreaker详解
它是在Spring Boot应用程序的主类上使用的,它会自动配置Hystrix,并将其添加到应用程序的类路径中。它是在Spring Boot应用程序的主类上使用的,它会自动配置断路器,并将其添加到应用程序的类路径中。它还允许在应用程序中使用@CircuitBreaker注解来标记需要使用断路器的方法。@EnableHystrix和@EnableCircuitBreaker都是Spring Cloud中用于开启Hystrix断路器的注解,但它们之间有一些区别。
2023-05-08 22:31:55
2053
原创 eureka的多级缓存机制
当客户端需要调用某个服务时,它会向Eureka Server发送请求,Eureka Server会从自己的缓存中查找服务实例的信息,如果缓存中没有,则会从其他Eureka Server节点或者服务实例本身获取信息,并将获取到的信息存储在自己的缓存中,以便下次快速响应请求。这样就可以大大提高服务调用的效率和可靠性。举例来说,如果Eureka客户端使用Redis作为远程缓存,那么当客户端请求服务注册表信息时,Eureka客户端会首先检查本地缓存,如果本地缓存中没有相应的信息,则会从Redis中获取信息。
2023-05-06 21:28:10
555
1
原创 操作系统(笔记)
操作系统对上层提供的三类接口(对硬件命令封装,隐藏实现细节)1:系统调用(应用程序)2:gui(用户直接对操作系统)3:命令(黑窗口)@os具有扩充性*可以对os进行再编程,封装硬件命令,提升os功能os的并行与并发*并发:一个时间段处理事件的能力*并行:同一时间点处理事件的能力(发生的时间数量(较少,如收费站)),物理极限明显(cpu数量=并行数量)os的异步性os发展历程 *手工操作阶段 *批处理阶段(监督程序(操作系统) ¥单道批处理阶段(内存中只有一道程
2023-05-06 21:12:46
101
原创 spring cloud结合es例子,结合简单的工作场景
工作场景:假设我们有一个电商网站,需要对用户的搜索行为进行记录和分析,以便提供更好的搜索体验和推荐服务。8. SearchResponse:向Elasticsearch中查询数据的响应对象,包含查询结果的各种信息,如命中数、查询耗时等。4. IndexRequest:用于向Elasticsearch中索引数据的请求对象,包含索引名称、文档id和文档内容等信息。6. SearchRequest:用于向Elasticsearch中查询数据的请求对象,包含索引名称和查询条件等信息。
2023-05-06 11:33:36
564
1
原创 redis 的aof重写操作详细解读
在重写过程中,Redis会创建一个临时文件,将所有的写操作记录到这个文件中,然后再将这个文件中的操作按照顺序重新写入到新的追加文件中。Redis使用追加文件(append-only file)来记录所有的写操作,这个文件会不断地增长,直到达到指定的大小限制。当文件大小达到一定阈值时,Redis会启动一个后台进程,将文件进行重写,去掉其中的冗余操作。需要注意的是,重写操作会占用一定的系统资源,可能会影响Redis的性能。因此,在进行重写操作时,需要根据实际情况来设置阈值和时间间隔,以平衡性能和空间的消耗。
2023-05-05 22:03:33
531
1
原创 redis两种持久化操作的介绍与对比
AOF持久化机制的实现原理是:Redis会将每个写操作都写入到一个追加文件中,当文件大小达到一定阈值时,Redis会将文件进行重写,去掉其中的冗余操作。RDB持久化机制的实现原理是:Redis会fork出一个子进程来进行持久化操作,子进程会将当前内存中的数据集写入一个临时文件中,待写入完成后,再用该文件替换旧的快照文件。因此,RDB持久化机制适用于数据集比较大,但是数据变化不频繁的场景。AOF持久化机制的缺点是:由于每个写操作都需要写入日志文件中,所以AOF持久化机制会对Redis的性能产生一定的影响。
2023-05-05 21:58:58
71
1
原创 hystrix hashboard示例代码
启动应用程序后,访问http://localhost:8080/hystrix即可进入Hystrix Dashboard页面。在页面上输入http://localhost:8080/actuator/hystrix.stream,点击"Monitor Stream"按钮即可开始监控Hystrix的各项指标。Hystrix Dashboard是Hystrix的可视化监控工具,可以实时地查看Hystrix的各项指标,例如请求的成功率、请求的响应时间、请求的并发量等等。4. 启用Hystrix。
2023-05-05 09:43:25
97
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人