JNI机制提供了名称为RegisterNatives()的JNI函数,该函数运行C/C++开发者将JNI本地函数与Java类的本地方法直接映射在一起。当不调用RegisterNatives()函数时,Java虚拟机会自动检索并将JNI本地函数与相应的Java本地方法链接在一起。但当开发者直接调用RegisterNatives()函数进行映射时,Java虚拟机就不必进行映射处理,这会极大提高运行速度,提高运行效率。
阅读全文
C/C++代码中调用Java代码的几种典型情况
需要在C/C++编写的本地应用程序中访问用Java语言编写的代码或代码库
希望在C/C++编写的本地应用程序中使用标准Java类库
当需要把已有的C/C++程序与Java程序组织链接在一起时,使用Invocation API,可以将它们组织成一个完整的程序
阅读全文
在Java中,服务器程序的基本生命周期
使用一个ServerSocket()构造函数在一个特定端口创建一个新的ServerSocket。
ServerSocket使用其accept()方法监听这个端口的入站连接。accept()会一直阻塞,直到一个客户端尝试建立连接,此时accept()将返回一个连接客户端和服务器的Socket对象。
根据服务器的类型,会调用Socket的getInputStream()方法或getOutputStream()方法,或者这两个方法都调用,以获得与客户端通信的输入和输出流。
服务器和客户端根据已协商的协议交互,直到要关闭连接
服务器或客户端(或二者)关闭连接
服务器返回到步骤2,等待下一次连接
阅读全文
基本操作Socket是两台主机之间的一个连接。它可以完成7个基本操作
连接远程机器
发送数据
接收数据
关闭连接
绑定端口
监听入站数据
在绑定端口上接收来自远程机器的连接
Java的Socket类提供了对应前4个操作的方法,后三个仅服务器需要,即等待客户端的连接
阅读全文
基本步骤使用URLconnection类的程序遵循以下基本步骤
构造一个URL对象
调用这个URL对象的openConnection()获取一个对应URL的URLConnected对象
配置这个URLConnected
读取首部字段
获得输入流并读取数据
获得输出流并写入数据
关闭连接
阅读全文
创建InetAddress对象
getByAddress(byte[] addr) static InetAddress 根据提供的IP地址创建 InetAddress
getByAddress(String host, byte[] addr) static InetAddress 根据提供的主机名和IP地址创建 InetAddress
getByName(String host) static InetAddress 根据提供的主机名创建 InetAddress
getAllByName(String host) static InetAddress[] 在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。
getLocalHost() static InetAddress 返回本地主机
getLoopbackAddress() static InetAddress 返回回送地址,在Windows系统中,采用127.0.0.1
阅读全文
Pattern类
返回类型
方法名
解释
static Pattern
compile(String regex)
将给定的正则表达式编译到模式中。
static Pattern
compile(String regex, int flags)
将给定的正则表达式编译到具有给定标志的模式中。
int
flags()
返回此模式的匹配标志。
Matcher
matcher(CharSequence input)
创建匹配给定输入与此模式的匹配器。
static boolean
matches(String regex, CharSequence input)
编译给定正则表达式并尝试将给定输入与其匹配。
String
pattern()
返回在其中编译过此模式的正则表达式。
static String
quote(String s)
返回指定 String 的字面值模式 String。
String[]
split(CharSequence input)
围绕此模式的匹配拆分给定输入序列。
String[]
split(CharSequence input, int limit)
围绕此模式的匹配拆分给定输入序列。
String
toString()
返回此模式的字符串表示形式。
阅读全文