java

在JAVA中通过Runtime启动一个外部进程是一个常见的做法,但是如果外部进程的输出流没有被正确的处理,往往会带来一些意想不到的结果。最近我就遇到过一次这样的问题。

在我的程序中,有这么一个功能,启动一个外部进程,获取该外部进程的输入流和输出流。这里权且将我的程序称为主程序,在主程序中启动起来的程序称做子程序。在主程序中,我们会拿到子程序的标准输入流和标准输出流,基于这两个流,主程序和子程序进行通信(不用问我为什么不用socket,这里有一堆理由~)。为了避免子程序空闲太长时间,子程序在空闲一段时间后,调用System.exit(-1)结束进程。

阅读更多

背景

不管哪种语言,特殊字符的escape都是令人头大的事情。最近,我们遇到了好几次特殊字符处理的问题,往返折腾了多次,经常是补了东墙拆了毁西墙,颇为恼火。这里,对最近我们遇到的问题做一个集中梳理,与诸君共勉。
首先介绍下我们的应用场景:客户可以通过我们的UI进行配置,生成周期执行的任务;我们在执行这些任务的时候,会将这些任务转换成groovy脚本执行。 问题就出在将配置的任务转换成groovy脚本,如果用的配置中包含了
一些特殊字符,则可能导致生成的脚本无法执行。在下文中,我将首先介绍下groovy中的字符串,然后根据我们的场景抽象一个简单的例子,并阐述我们遇到的问题,最后再来说我是如何解决我们的问题的。

阅读更多

最近,几个客户的服务器使用了新的SSL/TLS证书,导致我们的程序不能正常的和服务器进行连接,一直抛一个SSL相关的异常。而过一段时间(大概一天或者两天),我们的客户端又能正确的访问客户的服务器,很奇怪。

最近一直在研究SSL/TLS,主要是因为产品里面和https打交道的很多,而且也遇到了不少的问题。前两天又遇到一个问题,根据用户的反馈,他们更新了服务器上的SSL/TLS证书,而我们的产品,在他们切换证书后便不能成功的监控他们的服务器,而大概过一段时间(一天或两天),再不做任何修改配置的情况下,又恢复正常了。而且,有两个客户遇到了类似的问题。

阅读更多

研究storm的起因是两个老大的一段对话,然后催生了现在要做的这个小项目,其中就要用到kafka和storm。于是,开始了storm和kafka的学习之路。

阅读更多

反射是JAVA中的一个重要特性,使得JAVA 可以在运行时加载、探知、使用编译期间完全未知的classes。JAVA通过反射,可以在运行时获取一个未知的Class,并获取该Class种的方法、变量,甚至改变这些方法的访问权限,这些功能使得JAVA表现的像一个动态语言。

初窥ClassLoader

反射机制中一份非常重要的角色是ClassLoader,从名字可以知道,ClassLoader的作用时加载Class,下面是一个简单的例子,使用ClassLoader加载一个类,并创建一个实例:

阅读更多

前几天在工作的时候遇到的一个问题,使用jconsole无法登录到VBox虚拟机里面的JVM。
检查了Vbox里面的centos的防火墙设置,以及JVM的运行参数设置,都没有问题,对于JMV的参数,设置了正确的端口,在登录时也使用了正确的用户名和密码,设置尝试了不使用验证的设置都不行。而在虚拟机里面,使用jconsole是可以登录JVM的,包括虚拟机里面的以及虚拟机外面的(PC)上的jvm。

阅读更多

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×