自定义注解
首先需要创建几个注解用于使用RPC
EnableTensorRPC
开启RPC服务
RpcRegister
将接口注册为一个服务
RpcService
用于标注该接口是一个远程服务
首先需要创建几个注解用于使用RPC
EnableTensorRPC
开启RPC服务
RpcRegister
将接口注册为一个服务
RpcService
用于标注该接口是一个远程服务
给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。
输入:
11110
11010
11000
00000
输出: 1
Read More...在Java原生使用NIO(epoll)
中,会存在一个著名的bug
——epoll
空轮训导致CPU出现100%的情况出现
这里需要深入跟踪一下NioEventLoop
类的实现
之前在参与nacos
的开发过程中,有不少同学都在问,为什么我在nacos console
中将服务进行下线了,但是这个被下线的服务还是可以被调用到,这不太符合官方宣称的秒级上下线特点呀。经过进一步询问发现,那些存在说实例下线后依旧可以对外提供服务的问题,有一个共同的特点——都有rabbion
这个负载均衡的组件。因此本文将从两个方面探讨这个问题:nacos
的秒级上下线的实现方式以及rabbion
的实例更新机制导致实例上下线感知延迟
1 | class BeatProcessor implements Runnable { |
1 | ({ElementType.TYPE, ElementType.METHOD}) |
通过Spring
的注解Scope
可以知道,对于Bean
的使用方位有四种——singleton
、prototype
、session
、request
,那么这几种Bean
的使用范围是如何实现的呢?首先要看Spring
中的一个重要的接口——BeanDefinition
因为存在某些需求,我的服务不想注册到服务发现中心去,我只是想安安静静的做一个索取者,我只想获取可以调用的服务而已
在nacos-client中,如果要获取服务实例,那么会调用这个方法
1 | // String queryList(String serviceName, String clusters, int udpPort, boolean healthyOnly) |
在这个方法中看到了一个参数udpPort
,等等会用到;这个方法最终调用的HTTP-URL为/v1/ns/instance/list
,接着去看nacos-naming-server
对应的该controller
做了什么事情
或许会有疑问,为什么早先的cp
模式的Zookeeper
或者AP
模式的Eureka
,都只有支持CAP
理论下大家常用的AP
实现或者CP
实现,而nacos却能够两个都实现呢?
其实CAP
理论,仅仅是针对分布式下数据的一致性而言,如果你对于数据的一致性要求不高,可忍受最终一致性,那么AP
模式的Eureka
就可以满足你了,如果说你对数据的一致性要求很高,那么就使用CP
模式的Zookeeper
,而追其根本,并不是说Eureka
是AP
的,或者说Zookeeper
是CP
的,而是他们存储的数据的一致性,满足AP
或者CP
,因此也就不难实现在一个组件中实现AP
模式与CP
模式共存
1 | "consistencyDelegate") ( |
今天收到阿里云的警告邮件,告知我的实例当前CPU
负载过高,当时就奇怪了,怎么实例负载过高了?于是登录的服务器查看当前CPU
以及系统负载情况,果真CPU
当前负载为百分之百,并且是自己部署上去的Java
应用程序,于是开始进行错误信息定位
jps or lsof -i:{port}
得到目前Java程序的PIDps -mp <PID> -o THREAD,tid,time
进行打印所有的线程信息状态CPU
占用率较高的线程tid
printf "%x\n" tid
得到线程的16进制表示jstack <PID> > xxx.txt
将当前Java
程序的线程栈打印出来,然后根据上面得到的线程的16进制表示,定位到具体的线程进行具体分析如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。
这道题可以采用二分查找插入位置来做,因为是数据流的形式,我只要确保上次一插入操作的结果有序,那么利用二分查找插入位置,每次排序的时间复杂度均为O(log(N))
Read More...