早上的时候已经谈了花园对高科技的帮助,晚上回家继续,六项指标(环境、安全、教育、卫生、交通以及地价)中,其他的已经差不多了,都在80以上了,其中安全、教育和卫生几乎是100,但是环境是全红,看了详细数据,发现水污染问题不大,建了一个水处理厂就差不多了,但是空气污染就比较困难了,把高污染工业全部铲除以后那些电厂还说有,在周边种了很多树,效果不是很明显,但是感觉更难处理的还是居住区的道路空气污染,我已经建了密布的地铁,但是保留了公交车,看来下一步就是铲除公交车系统,全部更换为地铁系统看看效果了。
早上的时候已经谈了花园对高科技的帮助,晚上回家继续,六项指标(环境、安全、教育、卫生、交通以及地价)中,其他的已经差不多了,都在80以上了,其中安全、教育和卫生几乎是100,但是环境是全红,看了详细数据,发现水污染问题不大,建了一个水处理厂就差不多了,但是空气污染就比较困难了,把高污染工业全部铲除以后那些电厂还说有,在周边种了很多树,效果不是很明显,但是感觉更难处理的还是居住区的道路空气污染,我已经建了密布的地铁,但是保留了公交车,看来下一步就是铲除公交车系统,全部更换为地铁系统看看效果了。
前段时间大致介绍了下这个测试框架,目前还没有完全完成,这里先慢慢介绍下框架得构成,这个是第一篇。
其实MockEJB提供的功能还是比较简单的,做单元测试需要我们自己写代码发布Bean,例如发布一个Session Bean:
SessionBeanDescriptor sampleServiceDescriptor =
new SessionBeanDescriptor( SampleService.JNDI_NAME,
SampleServiceHome.class, SampleService.class, new SampleServiceBean() );
mockContainer.deploy( sampleServiceDescriptor );
其实每个EJB工程都应该有现成的EJB配置文件(ejb-jar.xml、jboss.xml、jbosscmp-jdbc.xml),因此这个发布工作应该可以自动完成,思路就是自己读取那些配置文件获得EJB的配置信息。
然后就是要修改lookup的过程,由于我们的工程提供一个共通的接口来进行lookup,所以问题就演变为实现一个那个接口。对于其它的项目,应该是类似的,如果是直接使用Context的lookup,那么对于MockEJB而言就是扩展MockContext,覆盖lookup方法,先查找,找到目标就返回,没有的话尝试根据读取的EJB配置信息自动发布需要的EJB。这样,我们就在单元测试中可以直接获取EJB,而不用再进行发布了。
今天建了一个中型的城市,这次的目标是要让这个城市全优,就是环境、安全、教育、卫生、交通以及地价都是全绿,而且争取做到全满。
在左边的地方有一片高科技,但是不知道为什么慢慢的黑了很多楼,等了很长时间也没有什么改善,后来突然记起来在模拟城市中文网看到过一个帖子说其实花园对工业区也是有帮助的,因此就在那个黑的那一片选了个中间位置建了一个大型花园,效果可以说:
立竿见影
推荐大家也试试。但是大型绿地似乎效果要差一些,另外这些设施对制造业和高污染的效果不明,因为那些楼不大可能变黑,没有办法试验。
之所以要这么做是因为我们的XML肯定是合法的,不需要验证,另外我们的网络需要代理才能上网,解析的时候会很慢,不需要解析的时候运行只要不到一分钟,解析要两分钟以上,有时候甚至需要10分钟左右。
可能有人认为很简单,只需要设置DocumentBuilderFactory.setValidating(false),其实这个只能让解析器不验证DTD,解析器还是会读取DTD的,解决的方法是实现EntityResolver接口,对于我们的系统,我实现的类的代码为:
public class IgnoreDTDEntityResolver implements EntityResolver
{
public InputSource resolveEntity(java.lang.String publicId, java.lang.String systemId) throws SAXException,
java.io.IOException
{
if (systemId.equals("http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_3_2.dtd")
|| systemId.equals("http://java.sun.com/dtd/ejb-jar_2_0.dtd")
|| systemId.equals("http://www.jboss.org/j2ee/dtd/jboss_3_2.dtd"))
return new InputSource(new ByteArrayInputStream("<?xml version=’1.0′ encoding=’UTF-8′?>".getBytes()));
else
return null;
}
}
稍微说明下方法的两个参数publicId和systemId,假设DTD声明为:
<!DOCTYPE jbosscmp-jdbc PUBLIC "-//JBoss//DTD JBOSSCMP-JDBC 3.2//EN" "http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_3_2.dtd">
那么publicId为-//JBoss//DTD JBOSSCMP-JDBC 3.2//EN
systemId为http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_3_2.dtd
你可以根据自己的需要进行处理。
玩模拟城市也有段时间了,现在对于实现收支盈余完全没有问题,简单的说说我的感觉:
只要你注意这几点,实现收支盈余应该是比较容易的。
今天是最倒霉的一天了,本来昨天下载恺撒大帝四还可以下载到,但是很大,速度又慢,只下载了3%,今天再继续下的时候就没有资源了。没有办法,出去买光盘,回来安装好以后进去是黑屏,上网一查,原来我的显卡太差,这个游戏据说需要至少支持DX8的,我的只是MX400,差一大截,没有办法,换了一个其他的,印象中模拟人生系列还不错,就换了一个模拟人生合集,试了下模拟人生2宠物当家,好像不是我喜欢的类型。又试了下City Life,也不是很好玩,比模拟城市差远了。
没有办法,只能玩恺撒3了,但是经常无故退出,上网查了下,这个游戏竟然只能在Win98下运行比较好,就下载Win98的ISO,想装一个VMWare的虚拟机,下载的ISO不能自动启动,郁闷。
就这样,一天的时间完全浪费了。
今天公司很多同事去阳澄湖吃大闸蟹,为了避免堵车,我们7点15就要去公司集合,预计两个小时能到地方,结果一路顺利,不到一个小时就到了。
吃到传说中的阳澄湖大闸蟹,感觉没有什么很特殊的(据说我们能够吃到的都是其他的湖的大闸蟹,放到阳澄湖里面养几天就变成阳澄湖大闸蟹了,正宗的阳澄湖大闸蟹都出口了),和我在大连的时候吃的螃蟹差不多,不过那个时候是吃自助,随便吃,不像现在,一人只有一对,只是这一对要大一些,里面的蟹黄要多很多,蟹膏也不少。
回来的路上,他们还意犹未尽,又跑到蟹市场去买了很多,6个人买了40多对,一对要45(两只雄蟹)或者40(一雄一雌),雄的一只有六两左右。
作为湖北人,我们原来很少吃螃蟹,更多的是鱼和虾,在我小学五六年级的时候更多的是吃小龙虾,记得那个时候都是自己去池塘边钓、到河边抓以及到田里面抓,都是绿色的,吃的时候也很刁,把屁股里面的肉挤出来炸着吃。
PS:照片更新了,虽然没有什么螃蟹的
其实非常的简单,记在这里备忘。
System.getProperties().put("proxySet", "true");
System.getProperties().put("proxyHost", "10.10.10.10");
System.getProperties().put("proxyPort", "808");
公司产品要集成LDAP,可以支持5个LDAP服务器,我们要写代码定期和LDAP服务器的信息进行同步,但是每个LDAP服务器的同步周期是变化的,用户可以配置。最简单的方式就是每个LDAP起一个线程做这个工作,但是架构师不允许太多的线程,所以要用一个主线程来控制。本来负责这个功能的人要使用轮询的方式,因为他觉得用户什么时候修改那个周期是不确定的,所以要一直查。其实很简单,如果其它的地方修改了那个周期,它通知那个主线程哪个服务器的周期修改了就行,然后主线程中断休眠并重新计算应该休眠的时间。主线程大部分时间都处于休眠状态,每次都会重新计算下一次应该休眠多长时间,这样程序的性能就大大的提高了。
演示代码如下:
阅读全文
公司的一个兼职搞Crystal Report的同事要离职,但是我们最近几个要打的patch中和Crystal Report相关的问题最多,这边好像我是最熟悉的,领导找我谈话问能不能做,我说不一定,一些比较简单的可能没有问题,复杂的不一定。其实我是很不愿意搞Report的,不为别的,就是感觉做报表很烦琐,特别是用它的GUI工具,为了控制某种效果,要点击那些Formula按钮并写些脚步,要完成一个报表可能要重复这个过程十几次几十次,可能还要建几个子报表。不过现在可能避免不了,先看看能不能把这次的紧急情况应付过去把。
PS:如果有熟悉Crystal Report的朋友可以和我联系,我们要兼职或者全职搞Crystal Report的人。
© 2025 解惑
本主题由Anders Noren提供 — 向上 ↑