为什么我们有两个版本的Java?
假设我有三个类:
class A
{
public void method()
{ /* Code specific to A */ }
}
class B extends A
{
@Override
public void method()
{
/*Code specific to B*/
super.method();
}
}
class C extends B
{
@Override
public void method()
{ /* I want to use the code specific to A without using B */ }
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,目标是使用 A 中的代码而不使用 B 中的代码。我认为有一种方法可以通过调用 super 方法来实现,但这也引入了 B 中的代码。
有没有办法做到这一点?
所以,正如标题可能暗示我在我的 Java 项目中遇到了一些麻烦。我想做的是这样的:
我需要做的是在 X 和 Y 之间建立连接。 例如,有人使用运行 X 的计算机,在发现过程后,他们将返回运行 Y 应用程序的计算机列表及其 IP,反之亦然。
我已经使用 UDP 广播完成了此操作,但有时会失败。电脑通过WiFi连接,所以基本上是通过路由器。在很多情况下,任何 X 计算机都可以通过我的 UDP 发现方法看到 Y 计算机,但有时不能,除非我手动指向 IP,有时甚至不会。
这是用于发现侦听特定端口的服务器的代码:
public static ArrayList<InetAddress> searchComputer() {
ArrayList<InetAddress> targets = new ArrayList<InetAddress>();
try {
c = new DatagramSocket();
c.setBroadcast(true);
byte[] sendData = "DISCOVER_PC_SERVER_REQUEST".getBytes();
try {
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, InetAddress.getByName("255.255.255.255"), 2005);
c.send(sendPacket);
} catch (Exception e) {}
Enumeration interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
NetworkInterface networkInterface = (NetworkInterface) interfaces.nextElement();
if …Run Code Online (Sandbox Code Playgroud) 我正在运行一个服务器,我有一个类型为Client的arraylist当客户端通过ServerSocket.accept()连接时,我将新的Socket传递给arraylists构造函数.这是构造函数中的所有内容
this.add(new Client(Socket client));
Run Code Online (Sandbox Code Playgroud)
我的问题是当客户端断开连接时,它会关闭Socket,但它不会删除它在arraylist中的位置,并将所有内容都移到一个位置.所以arraylist不断变大.
我可以做什么/用来解决这个问题?
有时我会运行将在所有客户端上执行的命令,这就是我将客户端存储在arraylist中的原因.
是否有更好的替代方法在服务器中存储客户端?
更新1
课程处于起步阶段.很少实施.到目前为止,答案中建议的HashMap选项最适合我.谢谢您的回复
我想在像这样的 makefile 中运行脚本
all: a b
a:
cd ~/trials; \
. ./sx.sh
b:
echo $(bn)
Run Code Online (Sandbox Code Playgroud)
sx.sh 这样做
export bn=1
Run Code Online (Sandbox Code Playgroud)
发出 make 命令时,我在终端中看不到该变量。我的目标是在针对这些脚本特定设置编译我的项目之前运行脚本。
我的计算机上的文件夹中有数千个图像,我试图找出如何检查来自给定URL的文件是否已经下载.有可能吗?
这只给我文件的大小.
URL url = new URL("http://test.com/test.jpg");
url.openConnection().getContentLength();
Run Code Online (Sandbox Code Playgroud)
对于我使用的重复文件
FileUtils.contentEquals(file1, file2)
Run Code Online (Sandbox Code Playgroud)
谢谢您的回答!
我试图尽可能高效地实施Kruskal.
对于运行时效率,使用堆或排序算法对边进行排序是否有区别?
还有哪些其他技术可以使Kruskal算法更有效地工作?
链接地址是程序执行发生的地址,而加载地址是程序实际放置在内存中的地址。
现在我很困惑程序计数器的值是什么?是加载地址还是链接地址?
linker operating-system loader computer-architecture program-counter
Linux 上可以使用哪些系统调用来删除文件?我指的不仅仅是 libc-wrapper 使用的系统调用(它又由命令行工具使用)。
除了unlink以及unlinkat哪些系统调用可用于删除 Linux 计算机上的文件?
我有一个调用服务器的Java套接字。但是,我不知道我可以在哪个地址访问服务器,因此我在多个线程中放置了几个套接字,它们尝试在一个地址上分别访问服务器。我的探究是我不想等待超时,但不知道如何正确停止套接字及其线程。
码:
socket = new Socket();
socket.connect(endpoint, timeout); // **Blocking method**
OutputStream out = socket.getOutputStream();
//Write Data here
Run Code Online (Sandbox Code Playgroud)
如何中断操作?我认为Thread.stop()样式不好,而且也无法正常工作。.NET Tcp端点具有一种非阻塞pending方法,该方法允许uinsg布尔标志,但是我找不到类似的东西
java ×7
networking ×2
sockets ×2
algorithm ×1
arraylist ×1
delete-file ×1
download ×1
duplicates ×1
file ×1
graph-theory ×1
inheritance ×1
lan ×1
linker ×1
linux ×1
loader ×1
makefile ×1
methods ×1
scripting ×1
shell ×1
system-calls ×1
time ×1
timeout ×1
udp ×1
unlink ×1
url ×1