jboss eap 6.3 mysql数据源错误提示 JBAS010441

配置mysql数据源出现错误提示:
failure description: “JBAS010441: Failed to load module for driver
中文日志是无法加载模块

环境是jboss eap 6.3

网上找了n种答案,虽然不是我的问题,还是列举一下
答案1,说是版本问题,要mysql-5.1.30一下的
答案2,配置问题 eap的配置跟老版本的不太一样,得用modules
反正大家配置都差不多怎么都出不来,

我这里最后是因为这个:

看jboss自带的module.xml木有这行,去掉就好使了!!

ejb3 javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter,

ejb里面报异常 javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter,

其实就是个很简单的错误,需要引用jboss-client.jar 重点是合适的版本!
网上随便下了个jboss-client4.jar的包,一直报这个异常,其实就是缺少类

从jboss里复制一个新版本出来就好用了

mq5.9 运行异常

运行直接异常

java.lang.IllegalStateException: LifecycleProcessor not initialized – call ‘refresh’ before invoking lifecycle methods via the context:

百思不得其解,直到看到这篇
http://zhidao.baidu.com/question/367406581580356204.html

说是计算机名不不能有-和下划线_,发现这台电脑确实有下划线,觉得不会这么邪门吧。
改后重启,好了。。。。。给跪了

hibernate误区总结

回忆初学的时候开发hibernate有n多误区,大概列列以后想到再更新

1.性能误区
当我们调试的时候经常发现打印hql是n+1个查询,于是觉得1个查询比n+1个执行效率要高,特别是在初学调试的时候没开启二级缓存很明显。
其实,随着二级缓存的使用,和更多的并发,使用原生方法性能会优化很多。
当然也可以用hql和自定义的缓存策略。

2.一对多可能出现的错误
could not initialize proxy – no Session
一对多的时候设置FetchType.LAZY可能出现
网上解释有:
不使用LAZY,这个不太靠谱就不说了,而且产生连表查询,可能影响性能

靠谱的方式是web.xml设置OpenSessionInViewFilter
同时需要注意的还有要用 Hibernate 管理session
使用 SessionFactory.getCurrentSession 而不是 openSession
使用后不用手动关闭sessin,Hibernate会自己控制。
否则自己关闭了session就会报no Session的错误

同时 junit4中使用lazy测试也是可以的,不需要web.xml的OpenSessionInViewFilter配置

其他的想到再补

mongoDB ide试用

找了下ide工具
mongoVUE 1.6.9 和 Robomongo 0.8
mongoVUE 没连上,用ssh账号都没连上,而且连接过程没进度条,直接阻塞了ui线程,卡住了。
可能是配置问题,但印象很不好。

Robomongo 用ssh账号连上了,没到1.0的版本,有的地方没有按钮直接用文字代替了,不过不影响使用。登录过程也没卡住,印象很好,给个好评

Robomongo 0.8.4RC
Robomongo 0.8.4RC

angularjs post 数据格式

没太理解为毛angularjs里post数据用的json格式。。。
网上也有修改方案:
修改原来的app.js 增加:

var [你的app名字]= angular.module('[你的app名字]=', ['ngRoute','[你的controller名字]='],function($httpProvider) {
// Use x-www-form-urlencoded Content-Type
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';

/**
* The workhorse; converts an object to x-www-form-urlencoded serialization.
* @param {Object} obj
* @return {String}
*/
var param = function(obj) {
var query = '', name, value, fullSubName, subName, subValue, innerObj, i;

for(name in obj) {
value = obj[name];

if(value instanceof Array) {
for(i=0; i);

awk入门

参考文章
http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html
笔记:
1、$1 列号,可以选择输出哪列
#last -n 5 | awk ‘{print $1}’ //打印第一列
root
root
root
dmtsai
root

2、分隔符
cat /etc/passwd|awk -F ‘:’ ‘{print $1}’|awk -F ‘a’ ‘{print $1}’
默认空格分隔,没有的话可以-F设置别的分隔符

3、设置多列输出格式
last -n 5 | awk ‘{print $1″:”$2}’

4、在原来数据前增加内容,如标题
cat /etc/passwd |awk -F ‘:’ ‘BEGIN {print “name,shell”} {print $1″,”$7} END {print “blue,/bin/nosh”}’

name,shell
原来结果集...
blue,/bin/nosh

5、搜索
awk -F: ‘/root/’ /etc/passwd
其中两个”/”不能去掉,支持正则表达式

6、内置变量
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符

#awk -F ‘:’ ‘{print “filename:” FILENAME “,linenumber:” NR “,columns:” NF “,linecontent:”$0}’ /etc/passwd
filename:/etc/passwd,linenumber:1,columns:7,linecontent:root:x:0:0:root:/root:/bin/bash
filename:/etc/passwd,linenumber:2,columns:7,linecontent:daemon:x:1:1:daemon:/usr/sbin:/bin/sh
filename:/etc/passwd,linenumber:3,columns:7,linecontent:bin:x:2:2:bin:/bin:/bin/sh
filename:/etc/passwd,linenumber:4,columns:7,linecontent:sys:x:3:3:sys:/dev:/bin/sh

能显示,结果是第几行,有多少列这种信息。

7、printf
awk -F ‘:’ ‘{printf(“filename:%10s,linenumber:%s,columns:%s,linecontent:%s\n”,FILENAME,NR,NF,$0)}’ /etc/passwd
格式化字符串,c的风格

8、变量叠加
awk ‘{count++;print $0;} END{print “user count is “, count}’ /etc/passwd
root:x:0:0:root:/root:/bin/bash
……
user count is 40

带初始化

awk ‘BEGIN {count=0;print “[start]user count is “, count} {count=count+1;print $0;} END{print “[end]user count is “, count}’ /etc/passwd
[start]user count is 0
root:x:0:0:root:/root:/bin/bash

[end]user count is 40

叠加某个字段
ls -l |awk ‘BEGIN {size=0;} {size=size+$5;} END{print “[end]size is “, size}’
[end]size is 8657198

变量运算
ls -l |awk ‘BEGIN {size=0;} {size=size+$5;} END{print “[end]size is “, size/1024/1024,”M”}’
[end]size is 8.25889 M

8、if条件

ls -l |awk ‘BEGIN {size=0;print “[start]size is “, size} {if($5!=4096){size=size+$5;}} END{print “[end]size is “, size/1024/1024,”M”}’
[end]size is 8.22339 M

9、循环语句

awk中的循环语句同样借鉴于C语言,支持while、do/while、for、break、continue,这些关键字的语义和C语言中的语义完全相同。

10、数组
awk -F ‘:’ ‘BEGIN {count=0;} {name[count] = $1;count++;}; END{for (i = 0; i < NR; i++) print i, name[i]}' /etc/passwd

crontab 定时运行

*  *  *  *  *  command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令


centos中分钟用 * 不使用 */1
“, “逗号分隔代表几或几
比如 1,2 * * * * 每小时 第一分钟第二分钟各执行一次
“-“减号代表几到几
比如 1-10 * * * * 每小时 第一分钟第十分钟每分钟执行一次
“/”间隔时间
比如1-10/2 * * * * 每小时 第一分钟第十分钟每2分钟执行一次

crontab最小执行单位是分钟

缓存设计笔记

http://robbinfan.com/blog/38/orm-cache-sumup
http://www.cnblogs.com/dotey/archive/2013/03/08/2949153.html

看了下这两篇介绍缓存设计的文章。
第一篇主要以ORM的角度说,表设计粒度尽量细致,然后通过主键缓存能让效率发挥的更好。
然后发现当初我们的误区是:
在Hibernate里发现人家缓存机制吧查询转成N+1个sql,然后被吓住了, 然后就开始研究怎么写hql了,以为能优化效率
。。。多愚蠢,这样就浪费缓存机制了,而且还连表了,开发时数据小没啥问题,数据多了就瞎了。

第二篇主要的意思是
把条件查询放一个索引表中,查询id,然后再通过id查询缓存中的单元内容。
其中把id列表也缓存起来,如[1,2,3,4,5…100]用于分页。这个如果更新频率高就不太合适了,或者查询条件复杂
我觉得查询复杂的话是不是还是搜索引擎比较合适,然后搜索引擎查出来的id再去索引查单元内容。

shpinx php client在thinkphp3.2.2中的使用

在无框架demo中测试过后放到thinkphp中
我的方法是,
1、api文件重新命名为
ShpinxClient.class.php
2、增加命名空间
namespace App\Comm (放到应用的Comm目录,App是应用名字)
3、api文件路径
App\Comm
4、Controller增加命名空间
use Home\Common\ShpinxClient
5、Controller调用
public function test(){
$s=new SphinxClient();
$s->SetServer(‘localhost’,9312);

$result = $s->Query(‘aa’,’*’);
$err = $s->GetLastError();
echo $err;

echo json_encode($result);
}

遇到很扯问题,一直返回false
然后发现是Thinkphp3.2.2运行时ShpinxClient构造函数没有执行,需要
再执行下如:
public function test(){
$s=new SphinxClient();
$s->SphinxClient();
$s->SetServer(‘localhost’,9312);

$result = $s->Query(‘aa’,’*’);
$err = $s->GetLastError();
echo $err;

echo json_encode($result);
}