Java 使用 Runtime.getRuntime().exec() 以及 Process.waitFor() 调用外部指令时无限挂起

此问题出现原因在JDK document中有写明 ——

Because some native platforms only provide limited buffer size for standard input and output streams, failure to promptly write the input stream or read the output stream of the subprocess may cause the subprocess to block, and even deadlock.

大意就是output stream空间非常有限,写满了没有释放出来,waitFor()就会无限地等下去。

简单解决方法就是用个while不停从buffer中读取数据以释放缓存,高级解决办法是利用多线程类随时读取,如StreamGobbler

解决方法源自:http://www.javaworld.com/article/2071275/core-java/when-runtime-exec—won-t.html

2015.03.18
标签:
Category:数自计
100 views
No Comments

X Window环境下关闭错误报警(哔哔)声

命令行中输入xset b 0 亲测有效

2015.01.09
标签:
Category:数自计
7 views
No Comments

Mac OS X 休眠唤醒后没有声音

用上Mavericks这么久了还是有很多bug没有修复,其中休眠唤醒后没有声音就是一个比较常见的问题。这个问题在很多设备上都有,包括MacBook, iMac等等。很明显这是一个软件问题而不是设备问题,所以找售后也无济于事。

根据我个人的使用经验,这个问题一般出现在我插入耳机或者音箱时进入休眠再唤醒后。之前一直没有找到什么好办法,每次都需要重启电脑。

今天看到了这篇文章:http://www.cnet.com/how-to/how-to-reset-the-audio-system-in-os-x/ 找到了更方便的解决方案。

打开terminal输入以下代码,然后根据提示输入自己的账户密码,即可停止系统中负责声音服务。

[cce_bash]sudo killall coreaudiod[/cce_bash]

系统的后台服务会自动重新激活这个服务,一般就能解决这个问题了。

如果你更适应使用图形化界面,可以使用系统自带的Activity Monitor(也就是活动监视器)来搜索coreaudiod进程,然后退出该进程即可。

 

— update 05/19/2014

学到了新方法,似乎更好用可以解决更多种情况。还是在terminal中执行:

[cce_bash]sudo kextunload /System/Library/Extensions/AppleHDA.kext && sudo kextload /System/Library/Extensions/AppleHDA.kext[/cce_bash]

即可

2014.05.06
标签:
Category:数自计
337 views
No Comments

非常好的排序算法图形化网站

http://www.sorting-algorithms.com/

QQ20140218-1

2014.02.18
标签:
Category:数自计
73 views
No Comments

将chrome默认空白页恢复原样

chrome更新到29版后很多人表示不习惯新版空白页,恢复成老版样式其实很简单。

在chrome地址栏中输入chrome://flags/#enable-instant-extended-api进入设置页面,将高亮项下的下拉菜单选成disabled,然后点击页面底部的Relaunch Now重启浏览器即可。

2013.09.27
标签:
Category:数自计
535 views
No Comments