Atea - Hero's Grave

面向对象,开源,框架,敏捷,云计算,NoSQL,商业智能,编程思想。

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  40 随笔 :: 0 文章 :: 28 评论 :: 0 Trackbacks

2008年7月18日 #

有2台linux服务器,一台布apache(A)和tomcat应用程序(B),一台布solr管理平台(C)。

发现的bug为:
前台访问A,A转发给B,B再访问C,访问失败。

经试验,web server和app server不能放到一台服务器上,否则通过apache代理,app server调用solrj会因获取不到连接而失败。

目前跟踪调查到
org.apache.solr.client.solrj.impl.CommonsHttpSolrServer
->
org.apache.commons.httpclient.HttpClient
->
org.apache.commons.httpclient.MultiThreadedHttpConnectionManager

httpclient的版本是3.1,怀疑是MultiThreadedHttpConnectionManager自定义的池出的问题。
网上搜了搜,没什么相关资料。最近太忙,没精力刨根问底了。暂时改了solrj源码,使用了默认的new HttpClient()
有谁也遇到类似问题并解决了,或知道怎么回事,麻烦告知一下。

PS:
solr更新这么迅速,为啥不把httpclient升级一下

posted @ 2012-02-29 16:45 Atea 阅读(321) | 评论 (0)编辑 收藏

最近又折腾起了activemq。见Failover的文档没有中文的,就顺手给翻了:

Apache ActiveMQ - The Failover Transport Options

Option Name Default Value Description
initialReconnectDelay 10
第一次重连的时间间隔(毫秒)
maxReconnectDelay 30000
最长重连的时间间隔(毫秒)
useExponentialBackOff true
重连时间间隔是否以指数形式增长
backOffMultiplier 2.0
指数的值
maxReconnectAttempts -1 >= AMQ v5.6
0 < AMQ v5.6,
自版本5.6起:-1为默认值,代表不限重试次数;0代表从不重试(只尝试连接一次,并不重连)
5.6以前的版本:0为默认值,代表不限重试次数
所有版本:如果设置为大于0的数,代表最大重试次数
startupMaxReconnectAttempts 0
初始化时的最大重连次数。一旦连接上,将使用maxReconnectAttempts的配置
randomize true
使用随机链接(注:达到负载均衡的目的)
backup false
提前初始化一个未使用连接,以便进行快速失败转移
timeout -1
设置发送操作的总计最大超时时间(毫秒)
trackMessages false
在重连过程中缓存消息
maxCacheSize 131072
缓存的最大字节数
updateURIsSupported true
设定是否可以动态修改broker uri(自版本5.4起)

posted @ 2011-12-28 10:35 Atea 阅读(2963) | 评论 (0)编辑 收藏

     摘要: 标题起的有些大,仅代表自己和身边一些人从业这几年来的感悟:P  阅读全文
posted @ 2011-09-01 15:31 Atea 阅读(2749) | 评论 (5)编辑 收藏

现象:
JDBC执行 UPDATE DB_NAME.TABLE_NAME SET COLUMN_NAME xxxx;
然后操作并不计入mysql binlog,主从复制失效。

发生条件:
1、MySQL 5.1 (理论上5.1+)
2、SQL语句指定库名/跨库执行,之前没有指到这个库下面(use DATABASE_NAME )
3、MySQL主从配置没有加--replicate-wild-do-table=db_name.%

解决办法:
在主从配置文件内加入参数
--replicate-wild-do-table=db_name.%

参考文档:
MySQL官方文档
posted @ 2011-06-24 16:47 Atea 阅读(519) | 评论 (0)编辑 收藏

     摘要: VJET JavaScript IDE 是一个Eclipse插件,提供了整套的Javascript开发环境:语法提示、自动补全、高亮、编辑纠错、debug等。
比起Aptana来,VJET更加轻量,速度也更快。  阅读全文
posted @ 2011-06-08 13:48 Atea 阅读(10345) | 评论 (1)编辑 收藏

     摘要: JDK1.5引入的泛型,减少了类型强转的代码,增加了编译检查,提高了代码的健壮性。
但在某些情况,泛型检查会出乎意料的“丢失”,由此可引发难以发现的bug。  阅读全文
posted @ 2011-05-31 10:31 Atea 阅读(679) | 评论 (0)编辑 收藏

如果别人只是读取数据,FOR UPDATE就不会锁定资源不让他们读
sum,count等函数为表锁
null不等于任何值,包括它自己
尽量不要使用LONG型字段,而考虑使用CLOB
与不可重复读的区别在于:在幻像读中,已经读取的数据不会改变,只是与以前相比,会有更多的数据满足你的查询条件
客户端发出的语句(如INSERT INTO)是原子性的
应慎用IMMEDIATE约束。一条语句可能会使表中的各行暂时“不一致”,这是很自然的。
一般认为,用更新级联来修改主键是很不好的做法
应手动给外键加索引,否则会引起子表的表锁。
优化期会对视图的来源表使用查询。所以,对视图加索引不如直接对来源表进行索引优化。

无法通过频繁提交来“节省”undo空间,所以没有必要在循环中提交。
1、事务的粒度(时长)应设计的尽可能小(短)
2、事务不是稀缺资源,所以不要在循环中提交
以上2个说法都正确,并不矛盾:
Re1: 事务过大,会在rollback时消耗大量资源
Re2: 循环提交会频繁IO

性能调优,应首先尝试减少查询的运行时间,其次再考虑设置参数等。
查询中最好手动加上order by
索引组织表(IOT)是存储在索引结构中的表,适合OLAP应用。IOT不存在主键的空间开销,因为索引就是输据。
位图索引适用于高度重复而且通常只读的数据(在OLTP中慎用,涉及到并发性)。在读密集的环境中能很好的工作,但极不适用于写密集环境。
仅当要通过索引访问表中很少的一部分行(很小的一个百分比)时,才使用B*索引。每个唯一约束应该至少有一个确实唯一的NOT NULL列。B*树索引不会对一个完全为NULL的项加索引。

http://atealxt.appspot.com/article/20110317/book_read_note_oracle_database_9i10gand11g_programming_techniques_and_solutions.html
posted @ 2011-03-17 22:19 Atea 阅读(440) | 评论 (0)编辑 收藏

     摘要: 使用"help" -> "Check for Updates", 选择所有eclipse插件,升级。
升级完重启时,发生错误,IDE启动失败,报错。


解决办法:
修改文件 "ECLIPSE_HOME\configuration\config.ini"。  阅读全文
posted @ 2011-03-09 16:17 Atea 阅读(1785) | 评论 (0)编辑 收藏

     摘要: 限于自己的水平还未达到DBA级别,只能先以应用为主的角度读了。
也许过几个月再回来重读,会有另一番心得。

笔记包含索引、事务与锁、备份及其他四类。
  阅读全文
posted @ 2011-02-28 23:16 Atea 阅读(522) | 评论 (0)编辑 收藏

从今天开始,把读书时做的标注集中地做个摘抄,在加深印象的同时也能全面地了解一下自己在读该书时的侧重点及收获。
首先,逐步地把以前的整理出来:)

  • 细节应该依赖于抽象
  • 在包的依赖关系图中不允许存在环
  • 如果在迭代结束的时候,90%的任务已被完成,但没有一个素材是被完全完成的,这将是噩梦一般的情景
  • SINGLETON模式强制结构上的单一性。它防止创建出多个对象实例。相反,MONOSTATE模式则强制行为上的单一性,而没有强加结构方面的限制。
  • VISITOR模式如同一个矩阵
  • Builder模式着重于一步步构造一个复杂对象,而Abstract Factory着重于多个系列的产品对象。Builder在最后的一部返回产品,而对于Abstract Factory来说,产品是立即返回的。
http://atealxt.appspot.com/article/20110209/reading_notes_agile_software_gof.html
posted @ 2011-02-09 23:27 Atea 阅读(335) | 评论 (0)编辑 收藏

错误日志为:
java.lang.NullPointerException
    at oracle.jdbc.dbaccess.DBData.clearItem(DBData.java:
431)
    at oracle.jdbc.dbaccess.DBDataSetImpl.clearItem(DBDataSetImpl.java:
3528)
    at oracle.jdbc.driver.OraclePreparedStatement.checkBindTypes(OraclePreparedStatement.java:
3271)
    at oracle.jdbc.driver.OraclePreparedStatement.setNull(OraclePreparedStatement.java:
1322)
    at org.apache.commons.dbutils.QueryRunner.fillStatement(QueryRunner.java:
197)
    at org.apache.commons.dbutils.QueryRunner.batch(QueryRunner.java:
122)

也是网上搜了半天,查了不少原因,未果。
最后试着更新了一下jdbc驱动,原来是oracle较早版本的jdbc驱动bug所致。
去官网下载一个所对应oracle版本的最新jdbc驱动就OK了。

posted @ 2010-12-13 16:05 Atea 阅读(1229) | 评论 (0)编辑 收藏

     摘要: 传统的"Return to Top"置于页面底部或指定位置,点击后返回页面顶部。
但其存在诸多不便:
1、页面顶部必须定义一个相应的锚点,其本身也会占用DOM空间,很容易发生返回的不是绝对的顶部而是该锚点(滚动条会稍微向下一点,而不是在0的位置)
2、如果页面很长,想在滚动条任意处回顶部会变得难以处理。

使用jQuery能大大改善这一用户体验。本文章将能做到:
"Return to Top"在页面初始化时不显示,当移动滚动条时出现并随滚动条位置变化而变化。
点击"Return to Top"页面移动到顶部,当滚动条到顶部时"Return to Top"自动隐藏。
以上均伴有动画效果。  阅读全文
posted @ 2010-05-13 11:14 Atea 阅读(2165) | 评论 (2)编辑 收藏

     摘要:
首先来预热一下:)
System.out.println(2.00 - 1.10);
System.out.println(2.00d - 1.10d);
System.out.println(2.00D - 1.10D);

答案
// 0.8999999999999999
// 0.8999999999999999
// 0.8999999999999999
PS:JAVA Puzzlers(Puzzle 2)

那么,问题是:
一个浮点数X,存到DB里是305.35,页面显示305.34
X = ?

DB用的是MySQL,字段类型是FLOAT(8,2)
后台框架用的是Hibernate
前台显示用的是JSTL tag
  阅读全文
posted @ 2010-01-18 12:58 Atea 阅读(1679) | 评论 (0)编辑 收藏

     摘要: UltraEdit提供了正则表达式的查找与替换,灵活使用可以节省工作量

使用方法是:^(正则表达式^)
匹配的话,按使用正则表达式的数量,匹配结果为^1、^2并以此类推。  阅读全文
posted @ 2009-11-12 10:14 Atea 阅读(307) | 评论 (0)编辑 收藏

     摘要: PDF不像EXCEL那样灵活,要想处理动态数据,基本有2种方法
1、纯程序画
风险较大,可行性低
2、把模板里的动态部分单独做成模板
使用Foxit PDF Editor编辑PDF模板元素,把动态数据部分的模板按一条(一行)提取出来单独做一页,使用时动态引入。  阅读全文
posted @ 2009-10-30 15:41 Atea 阅读(605) | 评论 (0)编辑 收藏

     摘要: Spring-MVC如何使用拦截器,官方文档只给出了非注解风格的例子。那么基于注解风格如何使用拦截器呢?
基于注解基本上有2个可使用的定义类,分别是DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter。  阅读全文
posted @ 2009-09-20 20:23 Atea 阅读(7263) | 评论 (0)编辑 收藏

     摘要: XDoclet是一款开源的代码自动生成引擎,支持很多框架的代码自动生成。
而XDoclet2作为Maven2的插件,支持Hibernate3的pojo->xml的代码自动生成。配合ant与Hibernate Tool API,可以实现pojo<->xml<->db schema的相互转化。  阅读全文
posted @ 2009-08-01 22:35 Atea 阅读(1109) | 评论 (2)编辑 收藏

     摘要: 1. org.datanucleus.store.exceptions.NoTableManagedException
2. org.datanucleus.exceptions.NucleusUserException A parent cannot be established or changed once an object has been persisted.
3. java.lang.IllegalArgumentException: can't operate on multiple entity groups in a single transaction
4. 404 happened when visit online but ok in local environment
  阅读全文
posted @ 2009-06-30 15:49 Atea 阅读(516) | 评论 (0)编辑 收藏

     摘要: 地址是: http://atealxt.appspot.com/  阅读全文
posted @ 2009-06-24 15:09 Atea 阅读(544) | 评论 (1)编辑 收藏

     摘要: 替换前: aaa[code:java]bbb[/code]ccc
替换后: aaa<pre class="brush:java;">bbb</pre>ccc  阅读全文
posted @ 2009-06-12 11:11 Atea 阅读(359) | 评论 (0)编辑 收藏

     摘要: 1. pojo compile warning
2. com.google.apphosting.api.ApiProxy$CallNotFoundException
3. org.datanucleus.exceptions.NucleusUserException
4. java.lang.NoClassDefFoundError: javax/naming/NamingException
5. java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String
6. one to many relationship doesn't work   阅读全文
posted @ 2009-06-04 12:20 Atea 阅读(619) | 评论 (0)编辑 收藏

     摘要: s2dao是基于seasar2的orm框架,使用简单且功能比较强大。官方网站为http://s2dao.seasar.org/,中英日文档皆有。
如果对hibernate望而生畏,而只是寻找一个替代jdbc的工具的话,s2dao算是一个不错的选择。某种程度上来讲,s2dao可能会比较像ibatis。  阅读全文
posted @ 2009-05-07 17:08 Atea 阅读(853) | 评论 (0)编辑 收藏

     摘要: amCharts是一款前台Flash报表工具。
由于使用了Flash ,可以做出不少华丽的动画效果,使报表数据显得生动立体。  阅读全文
posted @ 2009-03-29 20:23 Atea 阅读(4256) | 评论 (0)编辑 收藏

     摘要: struts2 Action里面的getter方法会在Action结束后被自动调用。
在Ajax调用Action返回json数据等的情况,很可能给函数起个getXXX的名字,而这就可能发生错误了。  阅读全文
posted @ 2009-02-16 20:09 Atea 阅读(385) | 评论 (0)编辑 收藏

     摘要: 一段hibernate的SchemaExport,原来在win下运行正常,放到linux下就出了问题,在插入数据的时候发生了异常。
查看DB,发现表引擎是MyISAM,而不是期望的InnoDB。我的代码是在用到batch的时候(Session.flush())才出的错,查了查MyISAM的资料,应该就是这个了。  阅读全文
posted @ 2009-01-31 10:36 Atea 阅读(3866) | 评论 (2)编辑 收藏

     摘要: 本文介绍了PL/SQL的基本使用方法,包括PACKAGE、FUNCTION的书写及调用,游标的使用等。  阅读全文
posted @ 2008-12-26 20:22 Atea 阅读(347) | 评论 (0)编辑 收藏

     摘要: 今日看了《Java Concurrency in Practice》的第6.2.5章节,才知道java.util.Timer真是问题多多啊。
Timer任务执行过程中,如果下一次计时到了,会产生任务冲突问题。这在多线程的环境下会更加突出。
另外如果Timer任务执行过程中发生异常,Timer仍然会继续工作!

jdk5的java.util.concurrent.ScheduledExecutorService很好的解决了以上问题。  阅读全文
posted @ 2008-11-25 09:33 Atea 阅读(4407) | 评论 (0)编辑 收藏

     摘要: 在ORACLE中,CHAR类型的字段值会自动补足空格。所以当其作为条件时,就有可能查不出想要的数据。
如果不允许改DB设计的话,那就用RTRIM来解决吧。  阅读全文
posted @ 2008-11-11 14:45 Atea 阅读(4065) | 评论 (4)编辑 收藏

     摘要: 最近的项目使用了Prototype。
基本不用在页面写诸如onclick=***的代码了,在js最后绑定上body onload,然后把控件和事件的绑定统一写到body onload中。这样页面代码干净了不少,事件也能够得到统一管理,蛮优雅的。  阅读全文
posted @ 2008-11-04 09:59 Atea 阅读(1015) | 评论 (0)编辑 收藏

     摘要: 注意:
1. 如果bean被aop监听的话(aop:pointcut),bean的init-method是不会执行的(构造函数会执行)。
2. 如果bean是其他bean的field(ref bean),init-method和构造函数都会执行。  阅读全文
posted @ 2008-09-19 15:48 Atea 阅读(565) | 评论 (0)编辑 收藏

     摘要: 办法1:
修改eclipse_home/your_workspace/.metadata/.plugins/org.eclipse.wst.server.core/servers.xml
办法2:
Double-click the server in the Servers view to open the server editor. Then expand the Timeouts section on the right side of the editor.  阅读全文
posted @ 2008-09-03 18:07 Atea 阅读(3869) | 评论 (3)编辑 收藏

     摘要: 1."rich" textarea editor.
简单的可即时变色的iframe editor。

2.Advertisement Board.
在CSDN看到的投标项目的广告滚动条,用的是iframe + window.scrollBy,挺好玩的。
自己把源码做了点改进,加了个暂停滚动的功能。  阅读全文
posted @ 2008-08-25 18:46 Atea 阅读(2727) | 评论 (0)编辑 收藏

     摘要: 现有一程序,启动时需要分别点击执行a.bat和b.bat。每次都要双击两回,着实不方便,于是编写了一个bat文件直接来调这两个文件。  阅读全文
posted @ 2008-08-22 17:29 Atea 阅读(2070) | 评论 (0)编辑 收藏

     摘要: 网上没找到符合需求的资料,前后鼓捣了两天才弄好。
《Spring in Action》中的aop例子-吟游诗人(Minstrel)虽然生动,但代码不全,可害苦我了:<
后又结合spring reference 6.2节看了半天,才琢麽出来。  阅读全文
posted @ 2008-08-18 16:52 Atea 阅读(1980) | 评论 (0)编辑 收藏

     摘要: 笔者近期正在使用Struts2开发,在这里把个人心得小结一下。
1.重复提交问题。
2.在web page中使用for循环的问题。
3.数据的页面显示问题。
4.自定义interceptor的问题。  阅读全文
posted @ 2008-08-04 17:47 Atea 阅读(3304) | 评论 (7)编辑 收藏

     摘要: Hibernate Session获取方法大致有两种:
方法1. SessionFactory.openSession();
方法2. SessionFactory.getCurrentSession();
以前自己写代码都是用方法1取session。今天学会了方法2,以后就可以用它来提高效率了
...  阅读全文
posted @ 2008-07-28 16:57 Atea 阅读(3465) | 评论 (0)编辑 收藏

     摘要: 通过以往的学习我知道Super po = new Sub()的时候"Method is Sub's,Field is Super's"。但碰上域限定符时就又糊涂了。显然是知其然不知其所以然。
而当我用"javap -verbose"调试并分析日志的时候,我终于明白了
...  阅读全文
posted @ 2008-07-22 17:32 Atea 阅读(351) | 评论 (0)编辑 收藏

     摘要: 接上篇,下面是剩余Client端的部分代码...  阅读全文
posted @ 2008-07-18 12:23 Atea 阅读(1071) | 评论 (0)编辑 收藏

     摘要: 年初正是JavaFX热的的时候,于是便学习了相关基础编程,作了个小聊天室。
虽然NetBeans 6.0支持JavaFX集成,但Editor的完成度并不高。当时为了javafx和java class之间互相传值可真是费了不少周折:<
更多JavaFX Script™资料请见官网:https://openjfx.dev.java.net
Matrix上有不少中文资料:http://www.matrix.org.cn
主要逻辑:...  阅读全文
posted @ 2008-07-18 12:19 Atea 阅读(1069) | 评论 (0)编辑 收藏