
我使用visualVM连接多线程Java应用程序,线程有4个状态,即运行,休眠,等待,监视.这种监控状态意味着什么?等待和监视器有什么区别?
我有以下代码行来比较String.str1不等于str2,这是可以理解的,因为它比较了对象引用.但那么为什么s1等于s2?
String s1 = "abc";
String s2 = "abc";
String str1 = new String("abc");
String str2 = new String("abc");
if (s1==s2)
System.out.println("s1==s2");
else
System.out.println("s1!=s2");
if (str1==str2)
System.out.println("str1==str2");
else
System.out.println("str1!=str2");
if (s1==str1)
System.out.println("str1==s1");
else
System.out.println("str1!=s1");
Run Code Online (Sandbox Code Playgroud)
输出:
s1==s2
str1!=str2
str1!=s1
Run Code Online (Sandbox Code Playgroud) 我的项目中有成千上万的单元测试,我想从命令行中选择一个或几个单元测试.这样做的命令是什么?
我现在在linux机器上.我有这将运行一些Linux命令,例如Java程序ps,top,list或free -m.
在Java中运行命令的方法如下:
Process p = Runtime.getRuntime().exec("free -m");
Run Code Online (Sandbox Code Playgroud)
我如何通过Java程序收集输出?我需要处理输出中的数据.
我有以下代码,我的目标是以GMT+0毫秒为单位返回时间.但为什么我总是得到我当地的时区millisec?
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
Calendar cal2 = Calendar.getInstance();
System.out.println("Time zone id is:"+cal.getTimeZone().getID()+";time in millisec:"+cal.getTimeInMillis());
System.out.println("Time zone id is:"+cal2.getTimeZone().getID()+";time in millisec:"+cal2.getTimeInMillis());
Run Code Online (Sandbox Code Playgroud)
输出
为时区ID为:GMT;以毫秒为单位的1332740915154
时间:时区ID为:Europe/Helsinki;以毫秒为单位的时间:1332740915154
为什么不同的时区以毫秒为单位给出SAME值?
我想如果是,GMT+0那么它应该是毫秒与本地时区的不同值.
并发Hashmap可以解决在hashmap中看到的同步问题.因此,如果我们使用hashmap同步键工作,添加和删除会很快.如果mulitple线程检查concurrentHashMap大小,那么检查hashmap大小呢?我们还需要同步关键词:如下所示:
public static synchronized getSize(){
return aConcurrentHashmap.size();
}
Run Code Online (Sandbox Code Playgroud) 我正在使用Eclipse + MAT插件.我可以看到一个.hprof文件堆历史记录,我拿了两个我的Java应用程序的快照.我希望当我比较两个堆转储时,我可以确定哪些对象实例增加了很多,以便我可以识别内存泄漏的可能性.
netbean能做到吗?
嗨:我有一个多线程Java应用程序.目前的线程大小已经是100.我们目前正在使用4核CPU.但正如人们在不久的将来看到的那样,CPU内核将增加一倍,甚至达到32个内核.为了充分利用核心,我们需要增加线程池大小.但是你可能知道(也许我错了),当有100个线程时Java很好,但是当线程是200,500,1000个线程时可能存在性能问题.然后我们应该使用其他编程语言,例如scala.我的担心合理吗?
我正在阅读一篇博客,将 EFK(日志系统)集成到 centos 7.4 中的 k8s 中。有以下说明:
# mkdir ~/es_data
# chmod g+rwx es_data
# chgrp 1000 es_data
# chown 1000 -R es_data
# ls -l /root/es_data/
total 8
drwxrwxr-x 2 1000 1000 4096 Jun 8 09:50 ./
drwx------ 8 root root 4096 Jun 8 09:50 ../
Run Code Online (Sandbox Code Playgroud)
我以 root 身份登录。说明说,如果我执行 chgrp 1000 es_data 和 chown 1000 -R es_data,则导演的所有者和组将为 1000。但是当我按照说明操作时:
我看到以下内容:
drwxr-xr-x. 2 master16g master16g 6 Jul 11 15:27 es_data
Run Code Online (Sandbox Code Playgroud)
所有者和组显示为计算机主机名master16g。
有人能给我提示一下这里发生了什么吗chgrp 1000 and chown 1000?
我正在学习k8s。我的问题是如何让k8s像minikube命令“minikube get service xxx --url”那样获取服务url呢?为什么我问是因为当 pod 关闭并再次启动/创建/启动时,不需要通过访问服务 url 来更改 url。当我将 pod 部署为 NodePort 时,我可以使用主机 IP 和端口访问 pod,但是如果重新启动/再次创建它,端口会发生变化。
我的情况如下图所示:我有
one master(172.16.100.91) and
one node(hostname node3, 172.16.100.96)
Run Code Online (Sandbox Code Playgroud)
我创建如下 pod 和服务,hellocomm 部署为 NodePort,helloext 部署为 ClusterIP。hellocomm 和 helloext 都是 spring boot hello world 应用程序。
docker build -t jshenmaster2/hellocomm:0.0.2 .
kubectl run hellocomm --image=jshenmaster2/hellocomm:0.0.2 --port=8080
kubectl expose deployment hellocomm --type NodePort
docker build -t jshenmaster2/helloext:0.0.1 .
kubectl run helloext --image=jshenmaster2/helloext:0.0.1 --port=8080
kubectl expose deployment helloext --type ClusterIP
[root@master2 shell]# kubectl get service -o wide
NAME …Run Code Online (Sandbox Code Playgroud) java ×7
kubernetes ×2
centos ×1
concurrency ×1
equals ×1
jvm ×1
linux ×1
maven ×1
performance ×1
process ×1
profiling ×1
scala ×1
string ×1
unit-testing ×1