- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 RMI 服务器,需要通过模拟多个客户端的流量生成器每秒发送数千个请求进行测试。
我想做的是与 this 类似的事情但使用 RMI。
基本上,如果服务器达到饱和,则停止接受/处理请求,以便它可以继续处理当前的请求。
这可能吗,还是我真的需要使用套接字来实现此目的?
提前致谢。
编辑:我还需要知道有多少请求在某个地方被拒绝(可能是客户端或服务器端)
最佳答案
RMI 为您提供了一种控制服务器套接字创建的方法,如果您控制客户端-服务器套接字的创建,您可以决定是否为传入请求提供服务,当然您可以监视服务的拒绝。这里需要扩展ServerSocket。而如果你想拒绝“方法调用请求”,可以使用代理对象。
public class T {
public static void main(String[] a) throws IOException {
Queue<Socket> socks = new ConcurrentLinkedQueue<>();
Registry registry = LocateRegistry.createRegistry(1099);
IserverImpl roImpl = new IserverImpl();
IService ro = Proxy.newProxyInstance(registry.getClass().getClassLoader(),
new Class[]{IService.class},
(proxy, method, args) -> {
if (isServerSaturationReached()) {
logRejection(method);
throw ReqRejectedByServerException();
}
return method.invoke(roImpl, args);
});
Remote expRO = UnicastRemoteObject.exportObject(ro, 1100, null,
new RMIServerSocketFactory() {
@Override
public ServerSocket createServerSocket(int port) throws IOException {
return new MyServerSocket(port, socks);
}
});
registry.bind("ro", expRO);
Thread socksMgr = new Thread() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(30000);
int sSize = socks.size();
for (int i = 0; i < sSize; i++) {
final Socket s = socks.remove();
try {
// server side RMI socket will be closed if client close socket
if (!s.isClosed())
socks.offer(s);
} catch (Exception e) {
e.printStackTrace();
}
}
sSize = socks.size();
if (isServerSaturationReached(sSize))
for (int i = 0; i < sSize / 10; i++) {
try {
final Socket sockToReject = socks.remove();
reject(sockToReject); // sockToReject.close();
logRejection(sockToReject);
} catch (IOException e) {
}
}
} catch (InterruptedException e) {
return;
}
}
}
};
socksMgr.setPriority(Thread.MAX_PRIORITY);
socksMgr.setDaemon(true);
socksMgr.start();
}
public static class MyServerSocket extends ServerSocket {
private Queue<Socket> socks;
public MyServerSocket(int port, Queue<Socket> socks) throws IOException {
super(port);
this.socks = socks;
}
@Override
public Socket accept() throws IOException {
while (!super.isClosed()) {
Socket a = super.accept();
if (isServerSaturationReached(socks.size())) {
reject(a); // a.close();
logRejection(a);
//...
} else {
socks.offer(a);
return a;
}
}
throw new SocketException("Socket is closed");
}
}
}
关于Java RMI : Rejecting requests when saturation is reached,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27132622/
我有一个 Canvas ,其中包含透明背景上的艺术。我像这样降低饱和度: boardCtx.fillStyle = "rgba(0, 0, 0, 1.0)"; boardCtx.globalCompo
我想写一小段程序来启动线程,以线性方式消耗可用的 RAM 内存,直到达到一定水平,然后停止(理想情况下,暂停直到“足够”的内存被释放,然后继续创建线程, 依此类推。) 我尝试了以下操作,但是 list
让我们看一下颜色#a94442 hsl(1, 44%, 46%): 现在,如果我在 less 中执行 saturate(#a94442, 100%),我会得到 #eb0500 hsl(1, 100%,
在 GIMP 中,我可以轻松地改变色调和饱和度。例如下图是原图和色相-90、饱和度100后的最终效果。 我如何继续从 Python PIL 获得相同的结果? 原图 最终图片 最佳答案 您可以结合使用
我编写了一个简单的程序来实现 SSE 内在函数,用于计算两个大(100000 或更多元素)向量的内积。该程序比较了以传统方式计算的内积和使用内在函数计算的执行时间。一切正常,直到我在计算内积的语句之前
我有这个将类型族映射到类型级列表的最小工作示例(从 singletons 库中挑选): {-# language PolyKinds #-} {-# language DataKinds #-} {-
我有一个 RMI 服务器,需要通过模拟多个客户端的流量生成器每秒发送数千个请求进行测试。 我想做的是与 this 类似的事情但使用 RMI。 基本上,如果服务器达到饱和,则停止接受/处理请求,以便它可
下面的函数成功改变了图片的对比度和亮度。 Bitmap bmp; ImageView alteredImageView; ... public void drawAlteredImage(float
这个问题与最新版本的 Java 有关。 30 个生产者线程将字符串推送到抽象队列。一个写入器线程从同一个队列弹出并将字符串写入驻留在 5400 rpm HDD RAID 阵列上的文件。数据以大约 11
我正在做一些 3D 图形,我有一片开阔的海洋。对于这个海洋,我有一个矩阵代表海洋特定矩形部分的海况(即波浪高度)。海洋的其余部分是平坦的。我的问题是,我控制的有波浪的海位于开阔平坦海的中间,网格边缘的
我想用HSL (Hue Saturation Lightness)颜色模型(圆柱形)。也许我错过了它,但我找不到根据该方案返回颜色的函数。 hcl来自 colorspace包使用色度而不是饱和度。我想
我是 HealthKit 框架的新手,想要实时了解血流中的氧饱和度。 引用: https://github.com/coolioxlr/watchOS-2-heartrate 从这个存储库中,我尝试查
我根据这些注释在 Matlab 中编写了反向传播算法:http://dl.dropbox.com/u/7412214/BackPropagation.pdf 我的网络采用长度为 43 的输入/特征向量
在iOS 5的UIColor中有这个方法: - (BOOL)getHue:(CGFloat *)hue saturation:(CGFloat *)saturation brightness:(CGF
我正在使用以下函数来“更改”UIColor 的饱和度、亮度和 alpha: //UIColor *color = [self color:[UIColor redColor] saturation:0
也许“饱和”是错误的词,但基本上我的 Dispatch 线程一直很忙,因为我有大量的 UI 更新。 在此之前,我一直遵循(并享受)我所说的 vanilla MVVM 设计模式。我用来指导我的开发的关键
我可以用 RGB 值设置 uicolor: [UIColor colorWithRed:0.53 green:0.37 blue:0.11 alpha:1.00]; 我可以用 hsb 值设置 uico
为了在 CSS 中添加“磨砂玻璃”效果,您只需使用 backdrop-filter: blur(20px) saturation(180%)。在 Flutter 中创建背景过滤器很简单,看起来应该与此
如果我在下面的代码中插入 HSB 值 0.667, 1, 1,它应该返回蓝色。但是,它返回红色。我已经使用 rgb-to-hsb 转换器验证了 0.667 应该是蓝色调。使用此方法的不同值似乎总是会返
我正在学习使用 Swift for iOS 中的控件。我正在尝试构建一个简单的应用程序,该应用程序使用 Slider 通过 UIColor 类调整屏幕的背景颜色。 // function is cal
我是一名优秀的程序员,十分优秀!