小编use*_*421的帖子

通过存储在字符串中的名称调用方法而无需反射 API?

我知道,使用反射 API,我们可以通过存储在字符串中的名称来调用方法。

但是,反射 API 不能用于高性能应用程序。在我的应用程序中,方法将以非常高的速度被调用。所以,我不能使用反射 API。

那么,反射 API 的替代方案是什么?

我做了研究,发现可以使用 cglib 和其他代码生成库。

但是,我没有找到任何通过存储在字符串中的名称来调用方法的示例。

使用反射替代方案的示例也很好。

更新: 实际上我正在实现一些主从通信 API。其中,slave 将远程调用 master 方法。而且,方法调用的速率非常高(每秒大约 50 次方法调用)。因为,主机不断轮询从机以获取任何响应。那么,我应该在如此高的调用率下进行反思吗?

java reflection cglib

4
推荐指数
1
解决办法
5318
查看次数

Windows 上的 TcpWindowSize 与套接字缓冲区大小

TcpWindowSize 和 Socket Buffer Sizes 有什么区别?

我假设 TcpWindowSize 只能使用注册表设置更改,而套接字缓冲区大小可以使用 SO_SNDBUF 和 SO_RCVBUF 套接字参数更改?

network-programming tcp

4
推荐指数
1
解决办法
1257
查看次数

在Java中完成TLS握手之前accept()是否返回?

我正在使用 Java 的 SSL 库来保护我的应用程序之间的连接。我注意到SSLServerSocket.accept()即使握手失败也会返回一个套接字。

  • 这是否意味着SSLServerSocket.accept()不会等到初始握手完成?和
  • 如果没有,我如何等待握手完成并检测握手失败的客户端?或者我可以简单地开始操作新的SSLSocket,握手会在实际操作之前自动完成吗?

此外,在当前握手完成之前,写入和读取当前(重新)握手的 SSLSocket 是否会阻塞?如果不是,在握手套接字上操作是否安全?握手和应用程序数据是否会并行发送且互不影响?

java sockets ssl jsse handshake

4
推荐指数
1
解决办法
1317
查看次数

JNI的UnsatisfiedLinkError

.h文件

#include <jni.h>
#include "NativePackage_HelloWorld.h"
#include <stdio.h>

JNIEXPORT void JNICALL Java_NativePackage_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)   {
printf("Hello world!\n");
return;
}
Run Code Online (Sandbox Code Playgroud)

爪哇

package NativePackage;

public class HelloWorld {
public native void displayHelloWorld();

static {
    System.loadLibrary("hello");
}

public static void main(String[] args) {
    new HelloWorld().displayHelloWorld();
}
}
Run Code Online (Sandbox Code Playgroud)

.c文件

#include <jni.h>
#include "NativePackage_HelloWorld.h" 
#include <stdio.h>

JNIEXPORT void JNICALL Java_NativePackage_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj){
printf("Hello world!\n");
return;
}
Run Code Online (Sandbox Code Playgroud)

我已经使用编译了.c文件

gcc -I /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/include/ -I  /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/include/darwin/ -fPIC -o hello -c   HelloWorldImp.c 
Run Code Online (Sandbox Code Playgroud)

但是,尝试使用运行会java NativePackage/HelloWorld产生以下错误:

java  -Djava.library.path=NativePackage/ NativePackage/HelloWorld …
Run Code Online (Sandbox Code Playgroud)

java java-native-interface unsatisfiedlinkerror

4
推荐指数
1
解决办法
2242
查看次数

Java中的数字文字 - 八进制?

以下是java on datatypes中的一些代码:

class Test
{
    public static void main(String args[])
    {
        int i = -0777;
        System.out.println(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

上面代码的输出是-511

如果代码更改为:

class Test
{
    public static void main(String args[])
    {
        int i = -777;
        System.out.println(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出为-777.

为什么输出不同??? 这段代码背后的计算是什么?

java literals octal

4
推荐指数
1
解决办法
179
查看次数

__SOCKADDR_COMMON (sin_) 是什么意思?

我正在跟踪一段代码,其中使用预定义的 struct sockaddr_in 的作者编写的代码host_addr.sin_family = AF_INET;试图在 Linux(Ubuntu)中设置一个迷你网络服务器。但是sin_family并没有出现在struct sockaddr_in定义中的任何地方。__SOCKADDR_COMMON (sin_)定义中包含的 是否有特殊含义?

在网络服务器的源文件中,他包含<sys/socket.h>, <netinet/in.h>, <arpa/inet.h>一个使用 Linux 库的预定义库。

我发现

#define __SOCKADDR_COMMON(sa 前缀) \
sa_family_t sa_prefix##family

在他使用的linux的库文件之一中。

我不明白这个定义。一点一点的解释会很好。

如果他通过参数定义了套接字的协议,为什么他必须设置套接字地址系列?

c linux network-programming websocket

4
推荐指数
1
解决办法
2107
查看次数

Jetty "javax.net.ssl.SSLHandshakeException: no cipher suites in common"

I've looked through similar questions on this but nothing seems to match what I'm doing or the suggested fixes work.

I've got a Jetty 9.4.0 server configured from Java (JDK 1.8.0_101) which is not accepting SSL connections from Chrome or from my own Java client. Connecting from openssl s_client works.

The reported error on the Jetty side is "javax.net.ssl.SSLHandshakeException: no cipher suites in common". Chrome reports "The client and server don't support a common SSL protocol version or cipher suite." …

java ssl https jetty embedded-jetty

4
推荐指数
1
解决办法
4685
查看次数

无法将套接字转换为TLS

我想在eclipse IDE中使用java servlet发送电子邮件.这是我的代码.

    final String username = "******@gmail.com";
    final String password = "******";

    Properties props = new Properties();
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.port", "587");
    props.put("mail.smtp.ssl.trust", "smtpserver");

    Session session1 = Session.getInstance(props, new javax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(username, password);
        }
      });

    try 
    {
        if(result)
        {

            Message message = new MimeMessage(session1);
            message.setFrom(new InternetAddress("******60@gmail.com"));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(email));

            message.setSubject("Welcome To Our Bank");
            message.setText("Dear "+custname+","
                    +"\n\n Your Account has been Created Successfully."
                    +"\n\n Your Account Details Are:"
                    +"\n   User Id : …
Run Code Online (Sandbox Code Playgroud)

java ssl jakarta-mail

3
推荐指数
1
解决办法
8586
查看次数

C++编译器是否为所有成员方法生成"this"指针,或仅为那些引用成员的人生成?

C++编译器是否为所有成员方法生成隐藏的"this"指针,或仅为那些引用成员的人生成?

c++ pointers this

3
推荐指数
1
解决办法
362
查看次数

带有 readLine() 的 while 循环

这是我的问题:正常的 while 循环看起来像这样 -

while(condition){statements} 
Run Code Online (Sandbox Code Playgroud)

and 语句执行直到条件变为false并且循环结束。我对这种陈述的逻辑感兴趣:

while((a=b.readLine) != null) { ... } 
Run Code Online (Sandbox Code Playgroud)

就我而言,它用于客户端 - 服务器通信。条件有时为真,有时为真,但循环看起来像是在永远测试条件,当为真时,{}执行语句。在我看来,循环等待条件为真,然后运行语句。它是否以某种方式与方式BufferedReaderInputStreamReader工作或什么有关?此外,这个循环似乎永远不会结束,它只是等待条件成立true,然后运行语句,然后再次等待条件成立true,等等。我将感谢您的任何澄清。

java readline while-loop bufferedreader inputstreamreader

3
推荐指数
2
解决办法
1万
查看次数