Tropo vs Twilio

At year 2009 I start using Tropo to build a voice channel of a Expert System, the system was designed with a complex rule engine, the interaction is asked to be do in a asynchronous way - the backend rule engine is able to interrupt the running call session with event. This make us having to choose Tropo, which support the asynchronous event. Of course, this product is using Java.

Continue reading Tropo vs Twilio

InfoQ 文章 Hunting Java Concurrency Bugs

http://www.infoq.com/articles/Hunting-Concurrency-Bugs-1

 

这篇文章很值得一读。

 

主要讨论了openJDK(注意文中没有说明Oracle JDK也有相同问题)自身存在的问题,以及分析问题的艰辛过程。

 

第一个问题是1.7.0_40 之前存在的多线程下造成livelock,jstack无响应。

 

第二个问题是HashMap的OOM,多线程下操作引起循环指针在序列化的情况下出现OOM。

 

这个问题出现后还好有个10G 的heapdump,文件太大不能工具直接分析,直接看文件分析可能是循环指针序列化造成的,尝试使用ObjectInputStream读出,但是由于其本机没有生产环境所有的类(造业),此路不通,最后通过unix的strings工具获得反序列化的字符串,得知是个hashmap。

他们在本机尝试多线程操作hashmap引起崩溃,重现了问题。最后将hashmap改为java.util.concurrent.ConcurrentHashMap解决问题。

 

评论中提到JCStress

http://www.oschina.net/translate/concurrency-torture-testing-your-code-within-the-java-memory-model

Continue reading InfoQ 文章 Hunting Java Concurrency Bugs

OpenJDK 和Oracle JDK 的区别

这篇 http://blog.sina.com.cn/s/blog_5cfd3adf0101a9db.html 文章讲了一些,但是不完全正确。

 

参考https://blogs.oracle.com/henrik/entry/moving_to_openjdk_as_the 这里

Oracle 基于 OpenJDK 代码创建 Reference Implementation (RI)

 

Oracle  创建RI 是基于BCL协议而openJDK是GPLv2

具体Oracle的商业限制 要看http://www.oracle.com/technetwork/java/javase/terms/products/index.html

BCL 在这里 http://www.oracle.com/technetwork/java/javase/terms/license/index.html

 

哎妈太麻烦,现在linux系统上默认装的都是OpenJDK

但是据说OpenJDK问题有点小多。

 

一般的使用Oracle JDK并不违反什么商业限制:

就我所知的JMX 用第三方查看器查看javax.management包下的或是自己开发的MBean是没有违反限制的 jvisualvm是第三方工具 jconsole是免费的;

 

但是Java Flight Recorder 和 Java Mission Control 却是要收费的,晕。

 

 

 

 

参见:

https://blogs.oracle.com/henrik/entry/moving_to_openjdk_as_the

http://blog.sina.com.cn/s/blog_5cfd3adf0101a9db.html

Continue reading OpenJDK 和Oracle JDK 的区别

JVM Heap最大内存限制

好久没写日志了……

 

最近的项目陷入了hazelcast的巨坑之中,问题之一就是hazelcast的各种内存泄露,让我绞尽脑汁,最后大家商量没得办法,只好说服让客户每月重启一次,这样他们还不至于拿锤子锤你,然后加大JVM内存。

 

先得确认一下jvm的内存限制:

http://stackoverflow.com/questions/2093679/max-memory-for-64bit-java

http://stackoverflow.com/questions/1434779/maximum-java-heap-size-of-a-32-bit-jvm-on-a-64-bit-os

 

32bit OS 1.2G就有些够呛

64bit OS + 64bit JVM 理论上是2的64次方,人家试过1000G是没得问题的。

Continue reading JVM Heap最大内存限制

屏蔽流氓站点taobao.114so.cn daohang.114so.cn 114so.cn

使用电(插入符)信真是很窝火,价格贵,速度一般,还动不动就来个DNS劫持,在网页上显示他们的广告,而且做得很隐蔽,普通用户还以为是别的网站的广告,我投诉几次,他们还装白痴,你投诉一次他们乖点,隔段又卷土重来。对于这样的垄断性流氓, 我等屁民有什么办法。

 

今天Avasta报警,关于daohang.114so.cn的,让我吓了一跳,查了一下还是电(插入符)信的劫持,网上找到一个方法

http://blog.sina.com.cn/s/blog_7557b5110101aqkf.html

修改hosts文件

C:\WINDOWS\system32\drivers\etc

127.0.0.1 taobao.114so.cn
127.0.0.1 daohang.114so.cn
127.0.0.1 114so.cn

 

Mac下

/private/etc/hosts

mac下不需要重启, ping 114so.cn测试结果为127.0.0.1就可以了

Continue reading 屏蔽流氓站点taobao.114so.cn daohang.114so.cn 114so.cn

InfoQ文章 介绍另一种开发ios程序的方式 使用RoboVM

InfoQ上文章 http://www.infoq.com/articles/unusual-ways-to-create-a-mobile-app

这种使用RoboVM的方式真还是第一次听说,基于ROboVM可以使用Java系语言,需要在MacOS上使用Eclipse来将代码预编译为目标机器的字节码(ahead-of-time compiler

 

大略看了一下,类型转换类似于jni方式,不过它自带是转换了一些IOS SDK的库。

 

如果是这样,还是直接用ObjectC吧或是Swift吧。

 

 

Continue reading InfoQ文章 介绍另一种开发ios程序的方式 使用RoboVM

Pagination


Total views.

© 2013 - 2018. All rights reserved.

Powered by Hydejack v6.6.1