当我第一次开始学习java GUI(swing)编程时,我所展示的方式更像是一个MVC模型,它涉及使用接口调用事物并跨类传递变量.
我最近开始以更静态的方式编程,让Jframe调用它的静态Jpanel并使用静态方法来更改组件.基本上我是静态编程所以我可以轻松地从不同的类中调用它们.
下面是一个例子:
我的主要JFrame类叫做"Home",我静态地初始化了Toolbar类:
private static Toolbar toolbar = new Toolbar();
Run Code Online (Sandbox Code Playgroud)
现在每当我想做某事时,例如改变颜色,我只是从另一个类调用:
Home.toolbar.setForeground(Color.green);
Run Code Online (Sandbox Code Playgroud)
这是一种好的编程方式吗?到目前为止,我还没有遇到任何麻烦,但是当我从中学到的人并没有这么做时,我感到很困惑.
这种编程方式有任何重大缺陷吗?有哪些替代方案?
我有一个透明的输入区域,当您单击它时,会显示发光的边框(预期),您可以编辑文本。我试图让发光的边框在您单击它时仍然显示,但使里面的文本不可编辑。
<input style='border:none; background:none;' value='TEXT'>
Run Code Online (Sandbox Code Playgroud)
添加readonly或readonly="readonly"使输入像不可编辑的 div 一样,您无法双击输入区域以将其全部选中并且不会显示发光边框。如何在不更改文本的情况下保留输入功能?
我打开了两个虚拟机,一个是监听连接,另一个是nc <ip> <port>从python子进程调用连接.我想在连接上只发送一行文本然后关闭它.我知道如何发送文件cat cat <file> | nc <ip> <port>但是如何在nc命令中发送一行文本(不使用文件)?
如果你从ArrayList<Obj>a 开始,是否有时间好处来循环ArrayList并将值放入HashMap一个有用的搜索键中?或者,ArrayList通过将它放入其中而几乎否定了你将获得的任何好处HashMap?
我假设如果你要对新的搜索执行许多搜索,你仍然可以获得一个好处HashMap,但是只有一次搜索呢?
我已将所有FlowLayout元素设置为向左浮动:
setLayout(new FlowLayout(FlowLayout.LEFT));
Run Code Online (Sandbox Code Playgroud)
但我希望最后(右手边)的那个向右浮动,我怎么能让除了一个浮动之外的所有浮动?
我正在尝试从我拥有的PCAP文件中生成software.log文件,默认bro -r my.pcap似乎会生成某些日志文件,但不是此文件。在搜索local完最后添加的内容之后,应该对其进行修复,但事实并非如此。
我有以下代码来使用密码计算 Hmacs:
public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeyException
{
String password = "password123";
SecretKeySpec keySpec = new SecretKeySpec(password.getBytes(), "HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(keySpec);
byte[] result = mac.doFinal("This is a test string".getBytes());
System.out.println(new Base64().encodeAsString(result));
}
Run Code Online (Sandbox Code Playgroud)
但我不知道如何使用密码验证它,我正在阅读此处的Java 文档,但我似乎找不到验证函数或任何内容,有关 HMAC 的部分非常短。
如何使用密码验证 HMAC?
我正在使用802.11 radiotap标头制作我自己的解析器,它指出数据包格式是这种格式,长度为2个字节:
在Wireshark中,标头的十六进制是以下形式,其中2个字节19 00是长度字段,但是Wireshark忽略尾随的00,并将其解释为legnth 25(十进制),而不是长度6400(十进制):
Wireshark如何(正确)知道正确地解释数字?
上面的链接说长度存储在little endian中,而我的系统是little endian,所以我不确定在那前面发生了什么?
我正在使用数据包捕获库,我已经将它打印出来的数据包IP地址到控制台使用它正常工作:
printf(" From: %s\n", inet_ntoa(ip->ip_src));
printf(" To: %s\n", inet_ntoa(ip->ip_dst));
Run Code Online (Sandbox Code Playgroud)
下面几行我用不同的.C文件调用一个方法,使用它传递IP地址和端口号:
addpacket(0, inet_ntoa(ip->ip_src), inet_ntoa(ip->ip_dst), ntohs(tcp->th_dport));
Run Code Online (Sandbox Code Playgroud)
方法是: void addpacket(int table, char *srcIP, char *dstIP, int port) {...}
但是在addpacket方法中我将这个打印到控制台:
printf("---------------------SRC:%s\n", srcIP);
printf("---------------------DST:%s\n", dstIP);
printf("---------------------PRT:%i\n", port);
Run Code Online (Sandbox Code Playgroud)
我得到这样的结果:
---------------------SRC:192.168.1.64
---------------------DST:192.168.1.64
---------------------PRT:60549
Run Code Online (Sandbox Code Playgroud)
其中源和目标IP地址始终相同.我找不到任何混合起来的地方.如果我在原始.C文件中将其打印到控制台,则会显示正确的IP地址,但在方法调用期间似乎混淆了一些东西.有任何想法吗?