- 浏览: 4871 次
最新评论
文章列表
有时我们会想要查看进程的内存使用、垃圾回收的一些信息,JDK有自带一些工具,可以直接用。
1. jps ,显示所有运行java的进程
2. jstat , 查看进程的实时状态,格式: jstat -[option] [pid] [times]
例 jstat -gc 12345 1000 ,表示查看进程为12345的实时垃圾回收的信息,1000ms刷新一次
option 有很多, -gcnew,-gcold,-class等等
3. jinfo, 查看进程的详细信息,格式 jinfo [pid]
如需了解用法和详细说明,可网上自行查阅。
一般在Tomcat中,可以部署多个服务,放在 webapps目录下即可,但这其实根本上是同一个服务,是共用的一个端口。如果要在不同端口上部署服务要怎么做呢?
网上查了资料,经过自己一个小时的摸索和实践,终于成功。
1、 在service.xml里添加新的service配置,注意端口号不要重复
2、 建立一个与webapps并列的目录,如webapps2,这个名字与第一步中service配置对应
3、 将webapps下的ROOT目录拷贝至webapps2
接下来启动Tomcat,就可以用不同端口访问部署在Tomcat上的服务了。
自己做的一个对象池。加了这个之后,性能确实好了很多,省下了重复创建对象的开销。
@Service
public class WebClientPool implements InitializingBean{
private Vector<WebClientWrapper> webClients=null;
@Value("${webClient.count}")
private String webClientCount;
/**
* Spring加载完后执行
*/
public void afterPropertiesSet() th ...
最近在做一个关于定时任务的项目。网上查了下,有两个比较常用的,一个是Quartz,另一个是Spring3.0后自带的Task。用Spring自带的Task做简单很多。
写一个普通的java类,然后作如下配置即可:
<task:scheduled-tasks scheduler="scheduler">
<task:scheduled ref="这里是我的java类" method="这里写需要定时执行的方法"
cron="0 0/10 * * * ...
关于Socket通信中的read和write
- 博客分类:
- Java
[size=small]read()方法需要3个参数:1)接收数据的字节数组,2)接收的第一个字节应该放入数组的位置,即字节偏移量,3)放入数组的最大字节数。read()方法在没有可读数据时会阻塞等待,直到有新的数据可读,然后读取指定的最大字节数,并返回实际放入数组的字节数(可能少于指定的最大字节数)。循环只是简单地将数据填入data字节数组,直到接收的字节数与发送的字节数一样。如果TCP连接被另一端关闭,read()方法返回-1。对于客户端来说,这表示服务器端提前关闭了套接字。
为什么不只用一个read方法呢?TCP协议并不能确定在read()和write()方法中所发送信息的界限,也就是说 ...