随笔 - 32, 文章 - 1, 评论 - 5, 引用 - 0
数据加载中……

2010年11月23日

利用反射打印测试JavaBean

/**
  * 测试方法
  *
  * @param obj
  * @return
  */
 public static StringBuffer testPOJO(Object obj) {
  Class cls = obj.getClass();
  Field[] fields = cls.getDeclaredFields();
  StringBuffer resultBuf = new StringBuffer();
  try {
   for (int i = 0; i < fields.length; i++) {
    String fieldName = fields[i].getName();
    Class fieldType = fields[i].getType();
    Method method;
    if (fieldType.equals(boolean.class)) {
     method = cls.getMethod("is" + genMethodName(fieldName));
    } else {
     method = cls.getMethod("get" + genMethodName(fieldName));
    }
    Object res;
    if ((res = method.invoke(obj)) != null) {
     String result = res.toString();
     resultBuf.append("[" + fieldName + "] = " + result + "\n");
    } else {
     resultBuf.append("[" + fieldName + "] = NULL \n");
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  return resultBuf;
 }
 
 public static String genMethodName(String fieldName) {
  String firstWord = fieldName.substring(0, 1);
  String others = fieldName.substring(1, fieldName.length());
  return firstWord.toUpperCase() + others;
 }

posted @ 2011-10-12 16:34 colorfire 阅读(385) | 评论 (0)编辑 收藏

转 淘宝2011.9.21校园招聘会笔试题

原链接 http://blog.csdn.net/hackbuteer1/article/details/6823329

一、单选题
1、我们有很多瓶无色的液体,其中有一瓶是毒药,其它都是蒸馏水,实验的小白鼠喝了以后会在5分钟后死亡,而喝到蒸馏水的小白鼠则一切正常。现在有5只小白鼠,请问一下,我们用这五只小白鼠,5分钟的时间,能够检测多少瓶液体的成分(C)
A、5瓶                     B、6瓶                           C、31瓶                               D、32瓶

2、若某链表最常用的操作是在最后一个结点之后插入一个结点和删除最后一个结点,则采用()存储方式最节省时间?
A、单链表                   B、带头结点的非循环双链表                       C、带头节点的双循环链表                D、循环链表

3、如果需要对磁盘上的1000W条记录构建索引,你认为下面哪种数据结构来存储索引最合适?()
A、Hash Table                      B、AVL-Tree                      C、B-Tree                 D、List

4、可用来检测一个web服务器是否正常工作的命令是()

A、ping                      B、tracert                          C、telnet                           D、ftp

只有C可以测试Web主机的网页服务器是否工作正常,假设该服务器的网页服务器使用的是默认端口,则可以使用命令telnet hostname 80 来测试其是否工作。

5、下面哪个操作是Windows独有的I/O技术()
A、Select                           B、Poll                               C、IOCP                               D、Epoll

6、IPV6地址包含了()位
A、16                               B、32                                C、64                              D、128

7、数据库里建索引常用的数据结构是()
A、链表                         B、队列                       C、树                             D、哈希表

8、在公司局域网上ping www.taobao.com没有涉及到的网络协议是()

A、ARP                          B、DNS                               C、TCP                         D、ICMP

DNS是将域名www.taobao.com映射成主机的IP地址,ARP是将IP地址映射成物理地址,ICMP是报文控制协议,由路由器发送给执行ping命令的主机,而一个ping命令并不会建立一条TCP连接,故没有涉及TCP协议。

二、填空题
1、http属于(应用层)协议,ICMP属于(网络层)协议。
2、深度为k的完全二叉树至少有(2^(k-1))个结点,至多有(2^k-1)个结点。
3、字节为6位的二进制有符号整数,其最小值是(-32)。

4、设有28盏灯,拟公用一个电源,则至少需有4插头的接线板数(9)个。

第一个板4个口,此后每增加1个板会消耗1个原来的口,总的只增加3个口,故N个接线板能提供 1+3*N个电源口

三、综合题
1、有一颗结构如下的树,对其做镜像反转后如下,请写出能实现该功能的代码。注意:请勿对该树做任何假设,它不一定是平衡树,也不一定有序。
  1 1
  / | \ / | \
  2 3 4 4 3 2
  /|\ /\ | | / \ / | \
  6 5 7 8 9 10 10 9 8 7 5 6

  答:以孩子、兄弟的存储结构来存储这棵树,使之成为一颗二叉树,然后对二叉树进行链表的转换。

 

  1. typedef struct TreeNode  
  2. {  
  3.     int data;  
  4.     struct TreeNode *firstchild;  
  5.     struct TreeNode *nextsibling;  
  6. }TreeNode,*Tree;  
  7.   
  8. void MirrorTree(Tree root)  
  9. {  
  10.     if(!root)  
  11.         return ;  
  12.     if(root->firstchild)  
  13.     {  
  14.         Tree p=root->firstchild;  
  15.         Tree cur=p->nextsibling;  
  16.         p->nextsibling=NULL;  
  17.         while(cur)  
  18.         {  
  19.             Tree curnext=cur->nextsibling;  
  20.             cur->nextsibling=p;  
  21.             if(p->firstchild)  
  22.                 MirrorTree(p);  
  23.             p=cur;  
  24.             cur=curnext;  
  25.         }  
  26.         root->firstchild=p;  
  27.     }  
  28. }  
  29.   
  30. int main(void)  
  31. {  
  32.     TreeNode *root=(TreeNode *)malloc(sizeof(TreeNode));  
  33.     Init();  
  34.     MirrorTree(root);  
  35.     OutPut();  
  36. }  
2、假设某个网站每天有超过10亿次的页面访问量,出于安全考虑,网站会记录访问客户端访问的ip地址和对应的时间,如果现在已经记录了1000亿条数据,想统计一个指定时间段内的区域ip地址访问量,那么这些数据应该按照何种方式来组织,才能尽快满足上面的统计需求呢,设计完方案后,并指出该方案的优缺点,比如在什么情况下,可能会非常慢?

 

答:用B+树来组织,非叶子节点存储(某个时间点,页面访问量),叶子节点是访问的IP地址。这个方案的优点是查询某个时间段内的IP访问量很快,但是要统计某个IP的访问次数或是上次访问时间就不得不遍历整个树的叶子节点。答:

或者可以建立二级索引,分别是时间和地点来建立索引。

四、附加题
1、写出C语言的地址对齐宏ALIGN(PALGNBYTES),其中P是要对齐的地址,ALIGNBYTES是要对齐的字节数(2的N次方),比如说:ALIGN(13,16)=16
  1. ALIGN(P,ALIGNBYTES) ( (void*)( ((unsigned long)P+ALIGNBYTES-1)&~(ALIGNBYTES-1) ) )  
2、在高性能服务器的代码中经常会看到类似这样的代码:
typedef union
{
  erts_smp_rwmtx_t rwmtx;
  byte cache_line_align_[ERTS_ALC_CACHE_LINE_ALIGN_SIZE(sizeof(erts_smp_rwmtx_t))];
}erts_meta_main_tab_lock_t;

erts_meta_main_tab_lock_t main_tab_lock[16];

请问其中用来填充的cache_line_align的作用是?

3、在现代web服务系统的设计中,为了减轻源站的压力,通常采用分布式缓存技术,其原理如下图所示,前端的分配器将针对不同内容的用户请求分配给不同的缓存服务器向用户提供服务。
  分配器
  / | \
  缓存 缓存 ...缓存
  服务器1 服务器2 ...服务器n

1)请问如何设置分配策略,可以保证充分利用每个缓存服务器的存储空间(每个内容只在一个缓存服务器有副本)

2)当部分缓存服务器故障,或是因为系统扩容,导致缓存服务器的数量动态减少或增加时,你的分配策略是否可以保证较小的缓存文件重分配的开销,如果不能,如何改进?

3)当各个缓存服务器的存储空间存在差异时(如有4个缓存服务器,存储空间比为4:9:15:7),如何改进你的策略,按照如上的比例将内容调度到缓存服务器?

posted @ 2011-10-10 10:19 colorfire 阅读(304) | 评论 (0)编辑 收藏

safari 地址栏中url两遍

环境:mac os 10.6.6,safari 5.0.5

现象:
在地址栏中输入url提交后,地址栏中地址竟然又被复制一次。 e.g 输入http://www.baidu.com/回车提交变为http://www.baidu.comwww.baidu.com,而以数字结尾的例如http://sparklet.net/?p=207则访问正常。

问题解决:
该问题实际是由于代理导致,之前使用web代理上网,后来web服务器我给关掉了,但代理忘记改回来,结果导致这种奇怪现象。不知道是不是safari的bug。
总结:blogjava的文档输入太难用了,分类也不方便。

posted @ 2011-05-18 22:36 colorfire 阅读(267) | 评论 (0)编辑 收藏

zz码字-电信行业体制内

第一段:回顾历史
     先说几个例子:
     80年达大家忙着找后门进国企的时候,庆幸找个铁饭碗的时候,全国有几人会想到10年
后国企就大规模破产;
     90年代大家忙着往北电等外企跑的时候,觉得无比光荣有面子,全国有几人会想到10年
后北电挂了,华为的收入一骑绝尘;
     90年代末大家觉得运营商特别体面,收入特高的时候,有几人会想到过不了几年有个玩
意叫全员营销?每年离职的人越来越多?
     21世纪初大家觉得事业单位还不错的时候,觉得起码还算稳定,全国有几人会想到几年
后事业单位改制就愈演愈烈?编制逐步取消,退休制度改革,垄断收入逐步减少,市场竞争
压力逐步加大;
     2010左右大家疯了一般地考公务员,以为肯定必须是个金饭碗,全国有几人会注意到,
很多地方的公务员聘任制已经悄然开始了。
     很多事情,我们想起来可能都不太可能,但是他曾经发生过——80年代大批人辞去公职
下海,90年代初我国政府财政濒临破产,公务员的工资是打白条,国务院都在裁员。曾经糖
烟酒公司比烟草公司高几个档次,曾经粮食局是很多地方政府里为数不多的发得出工资的单
位。曾经大家觉得去了海关就可以到处捞黑钱,曾经大家觉得运营商是个让人眼红的金饭碗
……上述这些事情发生转变一般不超过10年
  
     中国数百年来的战略眼光第一人,太祖,在1945年的最大的奋斗目标就是能搞个联合政
府,让tg能参政就心满意足了。这逆天第一人都没想到4年之后他就成为本朝太祖了。所以
,我们不应该妄加判断未来会一定会怎样怎样,政府一定不会对公务员等体制内动手。
  
  
————————————————————————————————————————
第二段:以通信业为鉴,看历史变迁对通信业体制内外的影响
     以史为镜吧,我们看看曾经90年代极为风光的体制内运营商的变迁,在20年前,地方电
信一般是当地数得上的好地方了,很多公务员也眼馋的地方。20年了,请看变迁情况。
  
1.历史及现状:
     中国的通信业是较早实现对内,对外开放的行业。在最开始,最爽的不是爱立信的员工
,虽说当时爱立信收入不低,但是跟运营商比也就半斤八两,在地方地位也高,那时候也不
存在指标问题,都是对方求着办事。
     在本世纪初,随着市场的进一步开放,竞争不断加剧,固网运营商为对付移动推出小灵
通,南网通北电信在对手地盘大打固网价格战,员工的收入是一年不如一年,指标是一年高
过一年,全员营销也是那时候出来的。不过那时候还好,起码收入高于付出。
     到了近几年,上面下的指标太高,搞的大家只能靠做假指标了(各位运营商同仁都知道
,不管是市场的还是网络的,假指标已经全面铺开了),至于说收入——欢迎论坛上这几年
所在运营商没降薪的兄弟姐妹们举手。活多钱少必加班,升职无望加薪没盼,鸡肋的工作天
天还得做。
     我们再举一个例子:设计院,运营商的三产,这些都是曾经的银饭碗,现在呢?各个地
方设计院除了四大院之外还有哪个红火的?收入、工作在当地还能称得上体面吗?
     与此相对的是,这几年设备商的收入,尤其是一线设备商的收入节节增高,我就不多评
价了。在06年,我写《通信行业求职宝典》的时候,我提了两个观点——1.看好华为;2.如
果这两年能进移动抓紧进,再过两年就没必要了。如果合适华为,那时候进华为,就算是在
国内,20来万一年也该有了。那时候进移动,现在也该是个主管了,好歹不用自己天天去一
线干指标了。至于说现在过去,那不好说。
  
2. 简要分析:
     最早,通信业的收益主要是依靠垄断地位带来的,跟个人能力无关。幸运的是,当这种
垄断被打破的时候,正好赶上了通信业高速发展的时候,行业有足够的容量来吸纳各色人等
,大家可以看到前几年被改革掉的设计院、三产在近几年都没有发生太大的冲突。但是一旦
当这个行业走下下坡路的时候,体制内的保护如果被打破,从业人员就面临巨大的风险。于
是大家可以看到近两年地方设计院改行的人越来越多,因为在继续做下去就饿死了,接触过
的一些副院长级的甚至都开始跳槽了。
     总体来说,越早被打开的行业,可能最开始会有一阵阵痛,但是后来肯定是幸福的。例
如运营商的人是幸福的,因为大家所在的企业已经初步脱离了体制内了,运营商的很多技术
人员技术水平不错,设备商愿意接受,市场人员跳出来去其它公司做市场也不错。我们现在
已经可以看到,几家运营商内部相互挖墙脚的情况已经慢慢开始了,运营商也开始初步引入
很多设备商的人。在以前,你能想到去了移动之后跳槽到电信?
    而且更关键的是:运营商的年轻人现在都还有能力,年老的人基本位置都稳定,在这种
情况运营商逐步脱离体制内,对于大家都是个好事情。想想,万一你40岁的时候,市场竞争
忽然加剧,你坐惯了20年的办公室,忽然要去搞16个小时的校园促销。。。。。
  
  
3. 看其它事业单位、体制内的行业:
    运营商的现状,只是很多体制内的一个缩影,这个缩影在近几年可以用来被很多事业单
位参考,例如出版社、医院、学校、报社等,在不久的未来,这个缩影也会被很多公务员所
参考。大家都会走过一段工作性价比降低,减员增效,然后逐步健康化的阶段。
    在这可以举几个例子,有已经发生的,有未来将会发生的。
出版社、报社:
    出版社、报社过去那绝对是个铁饭碗,现在呢?穷的出版社一月发2、3K工资,在市场上
听不到声音,市场化的出版社有的编辑富的冒油,有人饿的要死,国内的出版行业基本已经
脱离了体制内。报社就更不用说了,除了一些党报,别的哪家还有体制内的影子?就算党报
,现在很多地方的党报也已早不如当年的红火了。
医生:
    未来,我们会看到医生的现状会大幅改变,现在的现状是医院基于体制内和体制外游走
,搞的又国企又市场化,导致底层累死,管理层爽呆,其实就是运营商前两年的缩影。再过
3、4年,下一轮医疗改革真正开始的时候,我们会看到跳槽、裁员、创业会成为医院的常态
,有能力的医生收入会大幅提高,出入行的医生也不会像现在这样承担很多变态的任务,但
是对于服务态度、责任心的要求肯定也会提高很多。
学校:
    再举一个例子,学校,现在的幼儿教育由于早些年政府退出的早,导致现在的幼儿园教
育发展的比中小学发展的快多了。大家不用光看上幼儿园难、贵,但是对比中小学的僵化程
度,应该说幼儿教育的质量已经一骑绝尘了,比什么中小学、高校的教育强了好几倍。至于
说收入,很多地方小学老师的收入可真比不上幼儿园老师的收入。高中教育由于政府不负担
,很多地方开展的也比初高中教育好多了,当然教师的工作强度肯定也大了很多。
    至于说高校的改革,可能要很久很久,毕竟盖大学太费钱了。。。
————————————————————————————————————————
  
  第三段:细看运营商、公务员变迁的幕后——剩余价值的分配取决于生产关系
  
     我国是一个“民主集中制”的体制,这也是我国生产关系的一个特点,民主咱不讨论,
不过集中倒是很常见。权力、资源控制在一小部分企业和人手中,,虽说这两年在改善,但
是改善的步伐这两年是越来越小。
     这也造成了一个浮在表面的现象——公务员、央企的部分员工性价比远高于那些不占据
资源的行业。但这其实只是一个表象,实际上我国的资源、权力不是集中在政府、央企中,
而是集中在某一小群人中。这是一个非常明显的金字塔结构。
     这种生产关系,是体制内幸福或痛苦的根源。
  
1.行业、企业的兴衰难确定:
    某个部委、行业、央企的兴衰甚至只是因为某几个人的争夺,只是因为某一个人的失败
或者得势,虽然这一个人的背后是一群人乃至百万、千万人的利益,但是他败了大家就败了
,他赢了大家就赢了。
    这样的例子在中国有很多,已经确定了像糖烟酒公司和烟草局,粮食局和中储粮,联通
和网通,几大发电集团,不确定的像电监会和电网,工信部和某部委。败了,从上到下所占
据的权力、资源逐步被剥夺走,胜了,鸡犬升天。
  
    运营商最早的改革来自哪??????????很多年轻的byr都不知道,第一波真正的
改革来自各个部委对于电信业高额利润的垂涎!原来的邮电总局扛不住这种压力。联通为什
么叫联通?是因为十几个部委、央企联合成立的,所以叫联合通信,是一批电信圈外的人对
电信圈蛋糕的逼抢。当时大家也不太会玩游戏规则,哪知道成立个什么银监会之类的,邮电
总局一直在被动接招,电信业一步步地沦为各类人等洗钱地方。
    还可以举的一个例子是:原联通和网通的合并,这个是个非常具有代表性的案例了,跟
论坛里很多人的老板的老板甚至直系老板都有关系。如果老板是原联通的,那么整个省里面
联通的都爽了,如果是原网通的,呵呵,那么网通的自然。。。
    现在电网很红火,那是赶上想分拆的时候遭遇了电力短缺、冰灾、美国大停电等事件(
NND,冰灾的时候明显体现的是通信业的三家重复建设对于通信的保障作用,非得被人家电
网说成得一家来做才能保障用电安全),现在又赶上换届,再加上既得利益集团的强大。如
果有一天,国网的领导保不住外人对于电网的垂涎,最终被拆分,那么电网行业就会重演电
信业走过的老路。别说啥电网不会被拆分,本地网不适合重复建设,这是胡扯,当年拆分电
信的时候也这么说,连那么激进的阚凯力老师都说本地网得保留,是门槛。结果现在南方县
城里面联通、移动的宽带铺的火热朝天。大家的工资也降得本冷到底。
  
    记住,上述事情跟你个人,跟你所在团队等无关,只跟你们公司、行业的几个人有关系

  
2.个人前途发展
    体制内的特性决定资源倾斜在上层,因此导致了领导的首要事情是取得他的领导的认可
,这样才能要到更多的资源。这样自己才有前途。而非体制内,一个市场化的地方,领导要
考虑的是如何激活员工的活力,让员工努力地为他从客户那获得资源。
    这是体制内领导对待员工和他领导的不同态度的根本原因。这也可以解释,为什么某些
看似市场化的企业,如IBM等,大家为啥绕着领导转的原因,因为在这些企业,员工的作用
不是最重要的,最重要的是你的老板能给你批下来什么样的折扣,这导致你这个单子能成还
是不能成。
    再举个例子,CMCC利润、收入年年增加,员工薪水月月降薪,王建宙宁赠友邦,不予家
奴。因为家奴影响不了他的升迁,友邦影响他的位置,于是我们看到卓望、12580等一个个
洗钱工具的诞生,看到全国各地B类员工的离职率都开始持续上升。
    国网的降薪搞了好几年了,员工不同意,有个P用,老大需要搞定的是他老大的意见。很
可能某次突然降薪只是因为某人看到一篇新闻,随口跟国网老大提起了这事,国网老大就把
这个P当作谕旨去执行了。
    你在体制内的前途完全寄托在你的领导身上,而你的领导的前途也完全寄托在他的领导
身上,你是凭借喝酒、干活、拍马屁、文体等哪项能上位,完全取决于你的领导的喜好。当
然,现在领导选拔看能力的越来越多了。
  
3. 升迁
    上一个可以解释你未来如何升迁。你的大部分工作,依靠的还是上面领导的支持,依靠
的是上层的资源倾斜。今年能否完成指标,最重要的并不是下面员工的能力。CMCC的都知道
,要想哪个业务大发展,列入今年的KPI指标就行了,12580不就靠这个吗。
    而领导的喜好是不好琢磨的,再说,万一换个领导怎么办?当然,我们可喜地看到,注
重业绩的领导越来越多了。
  
4. 收入:
    不谈公司好坏,不谈前途,不谈行业是否兴衰。在同样的情况下,收入也很不确定。由
于历史原因,体制内的工资一直未能市场化,工资都不高,主要是靠奖金、补贴等活。这带
来一个结果是员工的收入非常不稳定,员工今年的收入完全看老板敢不敢发钱,而不是看公
司、部门、个人的业绩如何。
    BMCC,李跃来了大家都爽了一把,ZJMCC,大家都得骂娘。同样是税务,上海的税务部门
底层员工真是得用清廉、辛苦来形容了。
  
灰色收入:
    前几天职版有个帖子说某省直的公务员收入,lx很多兄弟回帖说这是实情,很多围观的
群众表示存在众多灰色收入等。我想说的是:
第一,你有足够的权力才有灰色收入。你手里一年就100万预算,你能拿多少灰色收入?收
了你还得孝敬上面。有花钱权力的公务员才占公务员队伍的百分之几?
第二,就算有,你敢拿吗?我开公司两年了,遭遇过好几任税务工商,有熟的大家私下聊到
,除非特高(几百万的)或者特少的(给盒月饼),否则谁敢拿,为了几万丢掉饭碗,不值
。底层公务员等压力现在还是很大的,一个底层员工哪敢咋样,大家都想着到了处长那一级
就敢钱,但是到了处长那一级又有他的顾虑,又想接着再往上去。谁都有谁的顾虑,有机会
拿黑钱的还是少数。
  
历史背景:
    90年年代初期地方公务员都快发不出工资了,也就是因为90年代后期政府发明了卖地财
政,这几年公务员才跟着沾光。近几年中央公务员明显不如地方公务员收入高,不就是因为
卖地财政吗?
    年轻的师弟师妹们可以翻翻历史资料,找老人问问,问问这几年公务员热门单位的变迁
,或者看看近二十年大型贪污案件高发的部门就知道了。
    最早哪最热门?海关、税务,因为当时国家能收上来钱的就这几个地方,出事率也最高
。现在呢?海关、税务是被看的最死的。接着受贿案出事最高的就变成了国土局等部门。
     收入是很不透明且难以估量的,未来一旦卖地财政破产,行政收费取消,地方公务员的
收益很难保障。
  
5.压力:
     任务指标非正常化,超高、没有必要的指标到处都是。
     体制内并不是一个以股东收益、市场效率为导向的地方,而是以政治为导向的一个地方
,因此很多指标是只能提高不能降低,不管这个指标是否合理。因此做假指标是各个地方最
常见的情况。不管是哪,大家面临的共同事情就是研究如何造假指标,上面的领导也心知肚
明。
     这导致大家的压力来源很不正常,有些地方可能1、2年都很轻松,但是可能换了个领导
之后,下的都是一些非常指标,生活会变得异常充实。
  
  
—————————————————————————————————————————
  
第四段:展望未来,风险与机遇——生产力决定生产关系  
    说了上面这么多,并不是说体制内完全不好,只是列举一些风险,希望大家别总是听信
水木那些“我同学、我亲戚、我朋友”的言论,多去了解事情的历史,背后的原因,未来的
走向,而不是盯着眼前那么短暂的几年时光。在过去的二十年里,绝大部分体制内一旦被推
向市场,就基本走向了衰败,垄断保护带来的绝对不会是高效。因此事业单位和央企的前途
都不会那么清晰。
     而对于公务员而言,收益到底未来会怎样?我不好做太多的评判,生产关系改革并不是
论坛讨论的内容,我真写了就该被删楼了,只方便就下面几点评述一下。
  
1、收益:
     公务员其实也只是一份职业,警察等都只是一种职业,这份职业的优越性取决于从业人
员掌控的资源和受管制的内容。财务部、税务、海关等都是大家认为能掌控很多资源的地方
,但是现在他们受到的管制、监管却极为严格。虽然这种监管是来自上层,而不是来自人民
,但是也导致了绝大部分底层员工获得高额收益的机会是少数的。除非你掌控的资源不受监
管。
  
2、职业化:
     这几年去税务、工商、公安局、法院办事,我发现很多地方职业化了许多,基本都是公
事公办,敲诈、态度不好等现象基本不存在——当然,前提是你没有特别大的油水。当然,
二三线城市可能不是这个样子。
     政治改革的不断深化,最起码让大部分公务员比以前像个职业人士了。
  
3、稳定性:
     央企、事业单位的稳定性很快就会跟企业一样了——最起码对于新人而言。公务员的稳
定性鄙人不好评价,但是由于政府会一直存在,因此这种职业的稳定性还是会很高的,最起
码应该会比绝大部分行业都稳定。
     不过前提是你熟练掌握相关的技能,不会被裁掉,不管这种技能是做报表、喝酒、还是拍
马屁。
     当有一天财政破产的时候,政府依然会裁员的,这种事情在8、90年代就发生过了,因
此不用担心未来不会发生,因此还是得干好这份职业该干的事情。
  
4、上升空间:
     这个不用说了,太难了。坑少人多,如果上面没人,自己没料的就别想了。
  
  
————————————————————————————————————————
第五段:第一份工作如何尽力地去把控自己的命运
  
  
     我在《通信行业求职宝典:猎头视角》里面提出过几个观点,想做什么,能做什么,该
做什么。从理论上讲,找个合适的工作最好,求稳定的找稳定的,求高薪的找高薪的,求事业的做事业,可问题是大部分人

看不懂自己要做啥
,还有一部分人知道自己要做啥,但是不知道这个行业、企业前途如何。
     因此这里,我们谈谈如何尽量控制自己的命运——完全把控是不可能的,太祖太宗美国
总统联合国主席也做不到。
  
1、伴随你命运的东西:
     首先说一个大的话题,职业生涯中,跟你相关的是哪几点?我一般从以下几方面衡量一
个人:人格、能力、知识体系及其它方面。
a.人格
     这是一个心理学名词,主要是指人所具有的与他人相区别的独特而稳定的思维方式和行
为风格。说的通俗、简单一些,就是你的性格、做
  
事习惯。
     人格很难改,毕竟是二十多年形成的,我们只能说扬长避短,尽量去改善、规范自己不
好的地方。
b.能力
     这个主要是指学习、沟通、管理等能力。这个大家可能觉得虚,其实,呵呵,不多说了
,稍微专业的HR、leader都比较容易评判这些能力。
c.知识体系
     这个就是跟你工作等相关的东西了,例如通信知识、开发语言掌握等。
d.其它方面
     这个包含很多内容,口碑、人脉、品味等。
  
2、如何掌控命运
     第一份工作对于大部分人而言是职业生涯最重要的起点,不要相信先择业后就业这种说
法,这是荒谬的。你工作几年后,你的上述四方面能力基本定型了,跳槽的时候,大家首先
就是通过你之前的工作经验来评判你,因此你找第一份工作的时候,必须要考虑到上面那四
个方面的内容培养问题。
  
a.尽量找一个适合自己人格的行业
     尽量做自己适合做,想做的事情。这个很难,第一大部分人不知道自己适合做什么,第
二大部分人不知道有哪些行业、职业。我的建议是先做排除法,然后再做选择法。先确定自
己绝对不适合做什么,在去在剩下的里面挑。
     另外,这些行业、职业一定要自己全面了解之后再决定。很多时候你觉得你适合做的职
业,当你真正做了之后会发现根本不是那么回事。
b、找一个技能短期内快速提升能力的职业、行业;找一个技能会长久提升的行业  
     如果真找到想做的职业、行业了,那么找一个合适的起点,找一个地方能让你这些技能
快速提升的地方,以便1、2年后就能跟同行们拉开差距。
     这个起点可能是大公司,也可能是小公司,这个跟你所在的行业、你所缺的东西、你职
业相关,比如说你做销售,那么在华为可能比在某些外企好,因为很多外企的销售其实就是
在忙着处理内部流程,写邮件,而不是忙着如何谈单子谈项目。你做技术,可能IBM好,有
可能某个小公司好,因为IBM可能让你养成好的职业习惯、素养,但是也可能荒废了你的快
速学习、抗压能力,小公司可能做事不规范,但是可能你能力提高的很快。
c、知识的积累有用的行业
    你的大部分技能在工作4、5年后就基本定型了,某些组织、管理能力可能在10年左右定
型,但是你的知识不会,你的收入、职位会随着你的知识、口碑等的上升而上升。
     应该找一个你N年前掌握的知识对你现在工作还会有用的行业,进入知识的积累会一直
给你带来增值的行业。这样的行业,人员的收入才会不断地增值,而不是贬值,当你体力老去的时候,行业的新入者才不会

很快替代你。你才会越来越吃香,越老越轻松,例如医生、某些行业顾问等。
     例如一些sap的顾问为啥前几年这么吃香,一方面是因为需求量暴增,另外一方面是因
为他们积累的知识不是短期内能速成的,你必须熟悉这个行业的情况、流程后才能去所sap
顾问。
  
     在这里,我很反感某些人说的“不要进入那种40岁了还要不断学习的行业”,小朋友可
以反过来想想,如果一个人40岁的时候不需要学习了,那么对于公司而言,40岁的人跟50的
岁人掌握的东西是一样的,那么公司是不是该考虑换个成本低的,年轻点的?
  
     我们需要避免的是那种40岁的时候,之前积累的知识完全无用的工作,而不是说不需要
你学习的工作。如果一份工作,不需要你学习了,那么意味着你的收入到头了,不会增长了,
你的工作也很容易被更年轻的人替代了。
d、其它方面的培养
    这个对你们而言,最要紧的就是做好现在能做的每一件事情。
  
3、其它该规避的
a、行业风险
     尽量不要进入一个在走下坡路的行业,如传统的单机硬件、软件公司,这些公司慢慢会
走向没落,你可能在这里会养成良好的职业相关,但是用不了多少年,你还是需要跳槽。与
其这样,不如当时就进入一个较为新兴的行业。
     大体可以说几个大家较为常去的行业:对于通信口,无线》有线,设备商》运营商》设
计院,对于计算机,互联网》传统软件》传统硬件,这里的互联网是一个宽泛的互联网概念
,包括B/S架构等的软件开发等。
     当然,上述只是一个宽泛的概念,指的是同level的公司,并不是说去一个某三线的设
备商强于去CMCC HQ。
b、公司内部风险
     很多公司进去的时候不确定你去什么部门,这类公司尽量避免去或者去之前谈妥,尤其
是一些公司可能产品线很多,万一你去了之后被分到一个快垮掉的产品线,你哭都来不及。
c、再补充讲一下体制内
     公务员是一份稳定的职业,是一个国家难起缺失的职业,只不过是这个机构臃肿还是精
干的问题,工作强度高还是低,收益高还是低的问题,我之前说了很多了,不重复了。
     但是某些企业、事业单位的未来的存续、前景是很值得质疑。
  
  
     最后说的是,找工作很容易,找好工作也很容易,努努力,每天刻苦15小时(留9个小
时给大家吃饭睡觉运动洗澡),去个想去的公司做想做的事情总能做到的,但是这只是人生
的起点,以后的路想过的舒服,还需要继续努力。

posted @ 2011-04-18 16:17 colorfire 阅读(282) | 评论 (0)编辑 收藏

java 数据对象测试方法

/**
     * 测试方法
     * 
@param obj
     * 
@return
     
*/

    
public static StringBuffer testPOJO(Object obj) {
        Class cls 
= obj.getClass();
        Field[] fields 
= cls.getDeclaredFields();
        StringBuffer resultBuf 
= new StringBuffer();
        
try {
            
for (int i = 0; i < fields.length; i++{
                String fieldName 
= fields[i].getName();
                Class fieldType 
= fields[i].getType();
                Method method;
                
if (fieldType.equals(boolean.class)) {
                    method 
= cls.getMethod("is" + genMethodName(fieldName));
                }
 else {
                    method 
= cls.getMethod("get" + genMethodName(fieldName));
                }

                Object res;
                
if ((res = method.invoke(obj)) != null{
                    String result 
= res.toString();
                    resultBuf.append(
"[" + fieldName + "] = " + result + "\n");
                }
 else {
                    resultBuf.append(
"[" + fieldName + "] = NULL \n");
                }

            }

        }
 catch (Exception e) {
            e.printStackTrace();
        }

        
return resultBuf;
    }

posted @ 2011-04-14 17:06 colorfire 阅读(223) | 评论 (0)编辑 收藏

[aws]亚马逊云计算体验1

前些天,刚注册了AWS,EC2服务免费体验一年,配置也不错,这便宜好大。

昨天来公司登陆时发现,公司屏蔽了22端口,无奈,回家把端口改掉吧。
顺便将默认只能raskey登陆方式,改掉,重新配置ssh一下。

# 1. 关于 SSH Server 的整体设定,包含使用的 port 啦,以及使用的密码演算方式
Port 22          # SSH 预设使用 22 这个 port,您也可以使用多的 port !
              # 亦即重复使用 port 这个设定项目即可!

Protocol 2,1        # 选择的 SSH 协议版本,可以是 1 也可以是 2 ,
              # 如果要同时支持两者,就必须要使用 2,1 这个分隔了!
#ListenAddress 0.0.0.0   # 监听的主机适配卡!举个例子来说,如果您有两个 IP,
              # 分别是 192.168.0.100 及 192.168.2.20 ,那么只想要
              # 开放 192.168.0.100 时,就可以写如同下面的样式:

ListenAddress 192.168.0.100          # 只监听来自 192.168.0.100 这个 IP 的SSH联机。
                   # 如果不使用设定的话,则预设所有接口均接受 SSH

PidFile /var/run/sshd.pid      # 可以放置 SSHD 这个 PID 的档案!左列为默认值
LoginGraceTime 600     # 当使用者连上 SSH server 之后,会出现输入密码的画面,
              # 在该画面中,在多久时间内没有成功连上 SSH server ,
              # 就断线!时间为秒!

Compression yes      # 是否可以使用压缩指令?当然可以啰!
 
# 2. 说明主机的 Private Key 放置的档案,预设使用下面的档案即可!

HostKey /etc/ssh/ssh_host_key    # SSH version 1 使用的私钥
HostKey /etc/ssh/ssh_host_rsa_key  # SSH version 2 使用的 RSA 私钥
HostKey /etc/ssh/ssh_host_dsa_key  # SSH version 2 使用的 DSA 私钥

# 2.1 关于 version 1 的一些设定!

KeyRegenerationInterval 3600     # 由前面联机的说明可以知道, version 1 会使用 
                   # server 的 Public Key ,那么如果这个 Public 
                   # Key 被偷的话,岂不完蛋?所以需要每隔一段时间
                   # 来重新建立一次!这里的时间为秒!

ServerKeyBits 768           # 没错!这个就是 Server key 的长度!
# 3. 关于登录文件的讯息数据放置与 daemon 的名称!

SyslogFacility AUTH         # 当有人使用 SSH 登入系统的时候,SSH会记录资
                   # 讯,这个信息要记录在什么 daemon name 底下?
                   # 预设是以 AUTH 来设定的,即是 /var/log/secure
                   # 里面!什么?忘记了!回到 Linux 基础去翻一下
                   # 其它可用的 daemon name 为:DAEMON,USER,AUTH,
                   # LOCAL0,LOCAL1,LOCAL2,LOCAL3,LOCAL4,LOCAL5,

LogLevel INFO            # 登录记录的等级!嘿嘿!任何讯息!
                   # 同样的,忘记了就回去参考!
# 4. 安全设定项目!极重要!
# 4.1 登入设定部分

PermitRootLogin no     # 是否允许 root 登入!预设是允许的,但是建议设定成 no!
UserLogin no        # 在 SSH 底下本来就不接受 login 这个程序的登入!
StrictModes yes      # 当使用者的 host key 改变之后,Server 就不接受联机,
              # 可以抵挡部分的木马程序!
#RSAAuthentication yes   # 是否使用纯的 RSA 认证!?仅针对 version 1 !

PubkeyAuthentication yes  # 是否允许 Public Key ?当然允许啦!只有 version 2
AuthorizedKeysFile      .ssh/authorized_keys
              
# 上面这个在设定若要使用不需要密码登入的账号时,那么那个
              # 账号的存放档案所在档名!
# 4.2 认证部分

RhostsAuthentication no  # 本机系统不止使用 .rhosts ,因为仅使用 .rhosts 太
              # 不安全了,所以这里一定要设定为 no !

IgnoreRhosts yes      # 是否取消使用 ~/.ssh/.rhosts 来做为认证!当然是!
RhostsRSAAuthentication no # 这个选项是专门给 version 1 用的,使用 rhosts 档案在
              # /etc/hosts.equiv配合 RSA 演算方式来进行认证!不要使用

HostbasedAuthentication no # 这个项目与上面的项目类似,不过是给 version 2 使用的!
IgnoreUserKnownHosts no  # 是否忽略家目录内的 ~/.ssh/known_hosts 这个档案所记录
              # 的主机内容?当然不要忽略,所以这里就是 no 啦!

PasswordAuthentication yes # 密码验证当然是需要的!所以这里写 yes 啰!
PermitEmptyPasswords no  # 若上面那一项如果设定为 yes 的话,这一项就最好设定
              # 为 no ,这个项目在是否允许以空的密码登入!当然不许!

ChallengeResponseAuthentication yes  # 挑战任何的密码认证!所以,任何 login.conf 
                   # 规定的认证方式,均可适用!
#PAMAuthenticationViaKbdInt yes      # 是否启用其它的 PAM 模块!启用这个模块将会
                   # 导致 PasswordAuthentication 设定失效!
 
# 4.3 与 Kerberos 有关的参数设定!因为我们没有 Kerberos 主机,所以底下不用设定!
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosTgtPassing no
 
# 4.4 底下是有关在 X-Window 底下使用的相关设定!

X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
# 4.5 登入后的项目:

PrintMotd no              # 登入后是否显示出一些信息呢?例如上次登入的时间、地点等
             # 等,预设是 yes ,但是,如果为了安全,可以考虑改为 no !

PrintLastLog yes     # 显示上次登入的信息!可以啊!预设也是 yes !
KeepAlive yes       # 一般而言,如果设定这项目的话,那么 SSH Server 会传送
             # KeepAlive 的讯息给 Client 端,以确保两者的联机正常!
             # 在这个情况下,任何一端死掉后, SSH 可以立刻知道!而不会
             # 有僵尸程序的发生!

UsePrivilegeSeparation yes # 使用者的权限设定项目!就设定为 yes 吧!
MaxStartups 10      # 同时允许几个尚未登入的联机画面?当我们连上 SSH ,
             # 但是尚未输入密码时,这个时候就是我们所谓的联机画面啦!
             # 在这个联机画面中,为了保护主机,所以需要设定最大值,
             # 预设最多十个联机画面,而已经建立联机的不计算在这十个当中
# 4.6 关于使用者抵挡的设定项目:

DenyUsers *        # 设定受抵挡的使用者名称,如果是全部的使用者,那就是全部
             # 挡吧!若是部分使用者,可以将该账号填入!例如下列!

DenyUsers test
DenyGroups test      
# 与 DenyUsers 相同!仅抵挡几个群组而已!
# 5. 关于 SFTP 服务的设定项目!

Subsystem       sftp    /usr/lib/ssh/sftp-server


引用自:http://doc.licess.org/openssh/sshd_config.html

posted @ 2011-03-15 10:51 colorfire 阅读(459) | 评论 (0)编辑 收藏

py2exe使用说明

py2exe

posted @ 2011-03-04 16:39 colorfire 阅读(497) | 评论 (0)编辑 收藏

人性的小船

听到一个故事,10几个人在海上遇难,只有一个小船可以活命。船上什么也没有,所有人都因为几天没吃没喝而奄奄一息,但大家都坚持不喝海水,因为一旦喝了海水人脱水的速度会更快。
但是有一个年轻人,几近虚脱,为了生存终于忍不住喝了海水。。。

又过了几天,这一船人被救了。当他们被救上来的同时,发现那个喝海水的年轻人被割喉,血被吸干了。人吃人的消息不胫而走。
一船人被带进法院。是杀人、是自救?是有罪、是无罪?是人治、是法制?每个人都该有自己的判断。

最终一船人被判无罪释放。

老爸说,人这一生无非就是提出问题,然后解决问题,以及做出选择。出现了问题,要面对它解决它,不能逃避。

posted @ 2011-02-23 12:36 colorfire 阅读(1845) | 评论 (4)编辑 收藏

总结

2011年了,拿点什么来总结一下过去的2010呢?盘点一下自己这一年读过的书吧,以
供自勉。

总体感觉这一年看的书杂而不精,而且大多数的书囫囵吞枣,看完就忘了,工作中用到
还得上网去查。大牛们帮看看,给一些指导吧(我09年本科毕业,对Java和Web方面有
着比较强烈的兴趣,职业规划是成长为一名Java和web方面的技术专家)
 

《数据结构(C语言版)》:内功心法类的书,考研时读过,现在想回头温习一下,当
年辛辛苦苦看的,不能给丢的一干二净。
《计算机网络(第4版)》:看了概述、传输层和应用层。跳出了TCP/IP协议栈的范畴
来看网络基本原理。11年要重点阅读。
 

《Java面向对象编程》:孙卫琴的书,通俗易懂,个人认为Java居家必备,恨学校当
年没有选这本书作为教材。
《Think in Java(第4版)》:先读了线程那一章,赶紧把简历上精通Java改为熟悉
Java。接着读了一切皆是对象、接口、异常、RTTI章节,然后小心地把简历上熟悉
Java改为熟练使用Java。11年要重点阅读。
《设计模式:可复用面向对象软件的基础》:据说是设计模式的葵花宝典,可惜自己没
练成。书很薄,只有200来页,字字珠玑,模式的定义都很精辟,另外把模式按性质的
一个分类太妙了:creational,structural,behavioral。
《Java与模式》:在这本书上找到了设计模式的感觉,通俗易懂。
《敏捷软件开发原则、模式与实践》:冲着Robert大叔的名头去的,读了一遍,给我
的感觉是看不懂、看不懂啊。不过附录A倒是让我学会了CGI,附录C中的讽刺小品很有
意思。,大牛们都说每读一遍,感觉都不一样,11年再仔细揣摩吧。
《UML精粹:标准对象语言简明指南(第3版)》:看完忘了,不记得内容了
《UML for Java Programmers》:经典巨著,画UML图时,总参照这本书。书后咖
啡机的例子,非常震撼。
《领域驱动设计》:经典巨著,看了一点点,受益匪浅。11年要重点阅读。
《软件架构设计》:看了一遍,理解不了,只是大概弄懂了几个概念,平台、框架、垂
直架构、水平架构...以后再阅读吧
 

《编程之美》:很有意思、开动脑筋的一本书,求职必备。
《编程珠玑》:对我来说,有点难,读着很费劲,但应该能锻炼大脑吧。
《并发的艺术》:很好的一本书,看到了一直想看的并发排序、并发搜索。
 

《Head First HTML and CSS、HTMl》:简单流畅的一本书,但是内容有点过于简
单了。
《Eric Meryer谈CSS》:买书时,作为添头送的,不怎么样,仅仅看到了几个卖噱头
的CSS技巧。
《JavaScript语言精粹》:无愧于书名,JavaScript进阶必读。
《PPK谈JavaScript》:谈的很到位,JavaScript语言核心、DOM、BOM、JSON...
《JavaScript设计模式》:第一部分对JavaScript面向对象思想的讲解非常不错,
真正的主题第二部分,列举了10几种模式,但对模式的讲解感觉很生硬,有生搬硬套之
嫌,反正我是没掌握。
《AJAX实战》:总体很一般的书,门户那一章倒是帮了不少忙,当时搞Portal,从这
一章看了一些Portal的基本技术原理。
《JQuery 实战》:很不错的一本书,简洁流畅,能让你的JQuery快速起步和有力奔
跑。另外,附录中关于JavaScript语言本身的讲解,对我帮助很大。
《Web应用程序性能测试指南 》:试图展开Web性能测试的理论体系和指导方法,不
过,我的脑子或者说思维类型,对这种书完全接纳不了,看完觉得很空洞,没留下什么
在我脑子里。
《瞬间之美:Web 界面设计如何让用户心动》:同事在看,冲着书名,我也凑过去看了
看,看的时候觉得挺好玩,完了就忘了,我思维类型实在不适合搞这个。
《RESTful Web Services》:应该是自身水平问题,书里好多概念到现在都是似懂
非懂,说不清、道不明的状态。但这本书倒是提醒我要重新认识和理解WEB和HTTP协
议,问问自己,是否在项目中做到很好地分析资源,并使之符合HTTP的规范。
 

《Struts2 in Action》:没有系统地看这本书,用到的时候翻翻,造成到现在也没
系统掌握Struts2。
《精通struts 2:web 2.0开发实战》:很不咋地的一本书,没营养,没内涵,准备当
二手书卖了。
《Spring In Action》:很好的一本in action书,也比较新,按照spring 2..5
讲的。

《Hibernate in Action(第2版)》:去年过生日时哥们送的,年初看了一遍,不
少地方没看懂,尤其是事务控制那一块,因为背后的数据库事务理论不太了解,所以看
着费劲。11年工作要用到Hibernate,要重点看这本书。
 
《数据库系统概念》:看了,特想骂人,骂当年软院选书的老师,有些老师真是无良,
为了那点利益,耽误了好多学生。无论是开发人员,还是DBA,无论是想搞关系数据
库,还是NoSQL都很有必要读读这本书。
《SQL应用重构》:上半年看的,没看懂,没有任何收获,11年有空的话,就再翻翻
吧,看能不能发现点惊喜。
《高性能MySQL》:Jolt Award获奖图书,看了前3章,非常棒。11年重点看。
《MySQL技术内幕 InnoDB存储引擎》:很喜欢这本书,一个资深DBA的经验谈,行文
功力还凑合,日后如果我写书的话,估计就是这个这种风格。11年重点看。
《MySQL核心内幕》:感觉被Chinapub骗了,书评很好,但这本书实在是太烂了。当
时我还推荐一哥们买了,现在那叫一个后悔啊。

《UNIX和shell程序设计权威教程》:以后再也不买这种书了,完全扫盲贴的水平。对
VI、Sed、AWK的讲解都是点到为止。
 

《赢》:杰克·韦尔奇的指引:“找到一份好工作,此后的人生不再是劳作”,“怎样选择
一份新工作:薪水+5(人、机遇、主导权、工作内容、未来)”。打算再买几本送人。
《德川家康》:比历史还真实的小说。读了前4本,当时经常陷入情节,读到凌晨2、3
点,后来没时间读了,11年有空的话,很想再看看。

《别跟我说你懂日本》:记得有一章的名字叫“走近她,了解她,原来如此”。
《其实没有什么天才》
《郎咸平说新帝国主义在中国》
《亮剑》
 

《诗经》:随手翻了翻,很美,看完就忘了。
《拜伦 雪莱 济慈抒情诗精选集》

posted @ 2011-01-04 14:01 colorfire 阅读(212) | 评论 (0)编辑 收藏

批处理异常问题

ibatis 批处理唯一性异常,执行到事务结束。

循环第二次执行批处理时会将表锁死。

SqlMapClient smc = this.getSqlMapClient();
        
int index = 0;
        
try {
            smc.startTransaction();
            smc.startBatch();
            
            TCuBillfileChecks check 
= new TCuBillfileChecks();
            check.setTaskname(taskName);
            
for (int i = 0; i < recordList.size(); i++{
                Record record 
= recordList.get(i);
                Object    custInfo 
= pojoFactory.generatePojo(taskName, billMonth, record);
                smc.insert(taskName 
+ ".insert_custinfo", custInfo);
                
if (index ++ > batchNum) {// 记录断点
                    check.setBillname(record.getAttribute("Source_FileName"));
                    check.setFilenum(Integer.parseInt(record.getAttribute(
"RowNum")));
                    smc.update(
"T_CU_BILLFILE_CHECKS.updateByPrimaryKey", check);
                    smc.executeBatch();
                    index 
= 0;
                }

            }


            check.setBillname(recordList.get(recordList.size() 
- 1).getAttribute("Source_FileName"));
            check.setFilenum(Integer.parseInt(recordList.get(recordList.size() 
- 1).getAttribute("RowNum")));
            smc.update(
"T_CU_BILLFILE_CHECKS.updateByPrimaryKey", check);
            smc.executeBatch();
        }
 catch (Exception e) {
            e.printStackTrace();
        }
 finally {
            
try {
                smc.commitTransaction();
                smc.endTransaction();
            }
 catch (Exception e) {
                e.printStackTrace();
            }

        }

posted @ 2010-12-17 17:51 colorfire 阅读(384) | 评论 (0)编辑 收藏

osgi配置参数

仅作笔记,启动本地osgi服务
-Dccontainer=baseapp -Declipse.ignoreApp=true -Dosgi.noShutdown=true  -Dosgi.parentClassloader=app -Dorg.osgi.framework.bootdelegation=* -Dorg.osgi.framework.system.packages=javax.naming,javax.naming.spi,javax.management,javax.management.loading,javax.management.modelmbean,javax.net,javax.net.ssl,javax.crypto,javax.crypto.interfaces,javax.crypto.spec,javax.security.auth,javax.security.auth.spi,javax.security.auth.callback,javax.security.auth.login,javax.security.cert,javax.xml.parsers,javax.xml.xpath,javax.xml.transform.sax,javax.xml.transform.dom,javax.xml.namespace,javax.xml.transform,javax.xml.transform.stream,javax.xml.validation,org.xml.sax,org.xml.sax.helpers,org.xml.sax.ext,com.sun.org.apache.xalan.internal,com.sun.org.apache.xalan.internal.res,com.sun.org.apache.xml.internal.utils,com.sun.org.apache.xpath.internal,com.sun.org.apache.xpath.internal.jaxp,com.sun.org.apache.xpath.internal.objects,com.sun.org.apache.xml.internal,org.w3c.dom,org.w3c.dom.traversal,org.w3c.dom.ls,javax.sql,javax.transaction,sun.misc,javax.jms,javax.resource,javax.resource.spi,javax.resource.cci,javax.resource.spi.work,javax.transaction,javax.sql.rowset,javax.transaction.xa,javax.ejb,javax.resource.spi.endpoint,com.sun.rowset,com.sun.jdmk.comm,javax.mail,javax.mail.internet,javax.swing,javax.swing.border,javax.swing.event,javax.swing.table,javax.swing.text,javax.swing.tree,javax.xml.parsers,javax.xml.datatype,javax.xml,javax.naming,org.ietf.jgss,javax.rmi -Xms256M -Xmx800M

posted @ 2010-12-14 12:26 colorfire 阅读(538) | 评论 (0)编辑 收藏

转:让oracle跑的更快

http://blog.csdn.net/tianlesoftware/archive/2010/09/01/5854583.aspx

posted @ 2010-12-10 15:27 colorfire 阅读(160) | 评论 (0)编辑 收藏

eclipse你不知道的.classpath

题目是噱头,用的人都知道。我想说的是classpath中不太注意的classpathentry excluding。

昨天在跑junit测试时,报错提示springframe.test.jar多次加载。 nnd,前天跑还一切正常,今天切了一下版本,又切回来,就不行了。

java.lang.IllegalStateException: Unable to dynamically start generated unit test bundle
    at org.springframework.osgi.test.AbstractOnTheFlyBundleCreatorTests.postProcessBundleContext(AbstractOnTheFlyBundleCreatorTests.java:
527)
    at org.springframework.osgi.test.AbstractConfigurableBundleCreatorTests.postProcessBundleContext(AbstractConfigurableBundleCreatorTests.java:
223)
    at org.springframework.osgi.test.AbstractOsgiTests.startup(AbstractOsgiTests.java:
262)
    at org.springframework.osgi.test.AbstractOsgiTests.prepareTestExecution(AbstractOsgiTests.java:
374)
    at org.springframework.osgi.test.AbstractOsgiTests.runBare(AbstractOsgiTests.java:
203)
    at org.springframework.osgi.test.AbstractOsgiTests$
1.protect(AbstractOsgiTests.java:184)
    at junit.framework.TestResult.runProtected(TestResult.java:
124)
    at org.springframework.osgi.test.AbstractOsgiTests.run(AbstractOsgiTests.java:
181)
    at junit.framework.TestSuite.runTest(TestSuite.java:
230)
    at junit.framework.TestSuite.run(TestSuite.java:
225)
    at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:
130)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:
38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:
460)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:
673)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:
386)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:
196)
Caused by: org.osgi.framework.BundleException: Cannot 
import a package more than once "org.springframework.osgi.test"
    at org.eclipse.osgi.internal.resolver.StateBuilder.checkImportExportSyntax(StateBuilder.java:
533)
    at org.eclipse.osgi.internal.resolver.StateBuilder.validateHeaders(StateBuilder.java:
185)
    at org.eclipse.osgi.internal.resolver.StateBuilder.createBundleDescription(StateBuilder.java:
49)
    at org.eclipse.osgi.internal.resolver.StateObjectFactoryImpl.createBundleDescription(StateObjectFactoryImpl.java:
32)
    at org.eclipse.osgi.internal.baseadaptor.BaseStorage.updateState(BaseStorage.java:
1112)
    at org.eclipse.osgi.internal.baseadaptor.BundleInstall.commit(BundleInstall.java:
128)
    at org.eclipse.osgi.framework.internal.core.Framework.installWorkerPrivileged(Framework.java:
965)
    at org.eclipse.osgi.framework.internal.core.Framework$
2.run(Framework.java:854)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.eclipse.osgi.framework.internal.core.Framework.installWorker(Framework.java:
905)
    at org.eclipse.osgi.framework.internal.core.Framework.installBundle(Framework.java:
849)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.installBundle(BundleContextImpl.java:
234)
    at org.springframework.osgi.test.AbstractOnTheFlyBundleCreatorTests.installAndStartBundle(AbstractOnTheFlyBundleCreatorTests.java:
539)
    at org.springframework.osgi.test.AbstractOnTheFlyBundleCreatorTests.postProcessBundleContext(AbstractOnTheFlyBundleCreatorTests.java:
524)
     
15 more



找了一个小时都没找到原因。
项目背景是该模块使用的是osgi框架,框架中包含spring的所有包。但是在编译时,需要单独把测试包加进来。

根据问题,我怀疑是classpath,但是如果去掉jar包引用,连编译都编译不过去。

最后翻到eclipse的.classpath文件才找到原因,classpathentry excluding这家伙被覆盖掉了。

excluding标签是保证项目在启动时不会讲指定的目录jar加载到内存,只做编译引用。

我在切换版本时,将其覆盖了。

posted @ 2010-12-09 18:24 colorfire 阅读(3210) | 评论 (0)编辑 收藏

perl读取文件

 1#!/usr/bin/perl
 2print "This is aaa file handler.\n";
 3if(open(MYFILE,"Radius20101101-001.txt")){
 4    while($line=<MYFILE>){
 5        @array=split("Identifier=",$line);
 6        @array=split("\t",$array[1]);
 7        print $array[0];
 8        print ("\n");
 9    }
10    close(FD);
11}

posted @ 2010-12-01 17:37 colorfire 阅读(201) | 评论 (0)编辑 收藏

perl中神奇的split

perl的split,感觉它还是很容易让新人误会.但有很多时候,如果数据是固定标记来分隔,用他比使用正则可是方便多了.
为什么讲perl的第三个参数很神奇啦.主要在于split的第三个参数.
我们知道split是工作在列表的环境,他会装输入的数据,多分割几次,在建立结果列表,然后返回.接着,会返回第三个参数内的数据,其它的都扔弃.
第三个参数一定要非常小心,为什么,如下的程序,我们只需要前二个参数.我们注意第三个参数

#!/usr/bin/perl
while(<DATA>){
  
my ($aa, $dd= split(/\s+/, $_, 2);
    
print "$aa  || $dd ||\n";

}

__DATA__
1xxxxxxx  2xxxxxx 3xxxxxx 4xxxxx
1xxxxxxx  2xxxxxx 3xxxxxx 4xxxxx
1xxxxxxx  2xxxxxx 3xxxxxx 4xxxxx
1xxxxxxx  2xxxxxx 3xxxxxx 4xxxxx
1xxxxxxx  2xxxxxx 3xxxxxx 4xxxxx 

如果split第三个参数是写的2的话,输出如下结果
11xxxxxxx  || 2xxxxxx 3xxxxxx 4xxxxx
2||
31xxxxxxx  || 2xxxxxx 3xxxxxx 4xxxxx
4|| 
5


如果split是写的3的话,输出如下结果
11xxxxxxx  || 2xxxxxx ||
21xxxxxxx  || 2xxxxxx || 
3


这主要是因为,如果想取得前2个字段,字段记数为3.因为需要给文件切成3份.拿出前二份.不然都给最后面部分做一份了.
转自远望技术论坛。

第三个参数在大数据量情况下还是可以提高不少速度。

posted @ 2010-12-01 17:36 colorfire 阅读(960) | 评论 (1)编辑 收藏

安装perl的crc32模块

因为要写一个相关的perl脚本,需要crc32函数,默认的perl又不带,没办法只好安装一个:

  1. 下载:
    wget -c http://search.cpan.org/CPAN/authors/id/S/SO/SOENKE/String-CRC32-1.4.tar.gz
  2. 安装:
    tar zxvfp String-CRC32-1.4.tar.gz
    cd String-CRC32-1.4
    perl Makefile.PL
    make
    make test #这里没什么提示错误就恭喜了:)
    make install
  3. 使用(来自官方):

      use String::CRC32;

      
$crc = crc32(“some string”);
      
$crc = crc32(“some string”, initvalue);

      
$somestring = “some string”;
      
$crc = crc32($somestring);
      
print $crc.\n”;

      
#open(SOMEFILE, “location/of/some.file”);
      #$crc = crc32(*SOMEFILE);
      #close(SOMEFILE);

  1. 运行:
    perl t.pl
    4182587481

系统要部署到AIX平台

问题:
make编译报错,提示:cc_r not found!编译器找不到?那就手动指定一下,cc_r应该是在/usr/vac/bin目录下。
#vi MakeFile 找到CC = cc_r 改成 /usr/vac/bin/cc_r,然后执行make
提示: The license for the Evaluation version of IBM XL C/C++ for AIX, V10.1 compiler product has expired. 我去!过期了。。。这家伙还没免费的。。

另找办法,cc_r不让用就用gcc吧。
AIX Toolbox download:http://www-03.ibm.com/systems/power/software/aix/linux/toolbox/download.html 中免费下载。
傻瓜式安装 #
rpm –ivh gcc-4.2.0-3.aix5.3.ppc.rpm 
把cc_r替换为gcc,执行make编译。报错一大堆,各种的编译选项类型不符。


解决方案
网上搜的:

现在AIX自带的perl实例因为不是用gcc编译的,所以不可以在其基础上用gcc编译安装相关模块;

需要从网上下载perl的源代码,使用gcc编译安装一份新的perl实例;

现在AIX自带的perl实例因为不是用gcc编译的,所以不可以在其基础上用gcc编译安装相关模块;

需要从网上下载perl的源代码,使用gcc编译安装一份新的perl实例;


那就去perl下最新的源码包吧,http://www.perl.com/
指定编译器和目录 #sh Configure -de -Dcc=gcc –Dprefix=/opt/perl-5.10
#make
#make install

设置PATH环境变量:export PATH=/opt/perl-5.10/bin:$PATH (注意把新的perl实例的bin路径设置在前面,是因为系统中原有的perl实例还存在,可以做到优先使用新的perl实例)
#perl -version 确认一下最新的版本

然后再去编译String-CRC32吧
#perl MakeFile.pl
#make
#make install

安装完成,测试成功。这一大圈绕的。

posted @ 2010-11-29 16:41 colorfire 阅读(2236) | 评论 (0)编辑 收藏

利用Java反射读取XML配置文件

     摘要: 背景:项目配置文件分散,有FTP、文件格式、数据库等。且单个任务配置都不一样。故有了统一配置文件的想法,由统一的工具类生成配置对象。 使用:dom4j,Java ioc 首先是XML文件的定义,懒得写schema,直接手写了。配置项由于很多,且分类明确,所以一开始就打算将其分为多个Java类配置。  1<?xml version="1.0" ...  阅读全文

posted @ 2010-11-23 17:17 colorfire 阅读(788) | 评论 (0)编辑 收藏

转:JAVA处理XML文件方法比较

在平时工作中,难免会遇到把XML作为数据存储格式。面对目前种类繁多的解决方案,哪个最适合我们呢?在这篇文章中,我对这四种主流方案做一个不完全评测,仅仅针对遍历XML这块来测试,因为遍历XML是工作中使用最多的(至少我认为)。

  预备

  测试环境:

  AMD毒龙1.4G OC 1.5G、256M DDR333、Windows2000 Server SP4、Sun JDK 1.4.1+Eclipse 2.1+Resin 2.1.8,在Debug模式下测试。

  XML文件格式如下:

  <?xml version="1.0" encoding="GB2312"?><RESULT><VALUE>

  <NO>A1234</NO>

  <ADDR>四川省XX县XX镇XX路X段XX号</ADDR></VALUE><VALUE>

  <NO>B1234</NO>

  <ADDR>四川省XX市XX乡XX村XX组</ADDR></VALUE></RESULT>

  测试方法:

  采用JSP端调用Bean(至于为什么采用JSP来调用,请参考:http://blog.csdn.net/rosen/archive/2004/10/15/138324.aspx),让每一种方案分别解析10K、100K、1000K、10000K的XML文件,计算其消耗时间(单位:毫秒)。

  JSP文件:

  <%@ page contentType="text/html; charset=gb2312" %><%@ page import="com.test.*"%>

  <html><body><%String args[]={""};MyXMLReader.main(args);%></body></html>

  测试

  首先出场的是DOM(JAXP Crimson解析器)

  DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像SAX那样是一次性的处理。DOM使用起来也要简单得多。

  另一方面,对于特别大的文档,解析和加载整个文档可能很慢且很耗资源,因此使用其他手段来处理这样的数据会更好。这些基于事件的模型,比如SAX。

  Bean文件:

  package com.test;

  import java.io.*;import java.util.*;import org.w3c.dom.*;import javax.xml.parsers.*;

  public class MyXMLReader{

  public static void main(String arge[]){

  long lasting =System.currentTimeMillis();

  try{

  File f=new File("data_10k.xml");

  DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();

  DocumentBuilder builder=factory.newDocumentBuilder();

  Document doc = builder.parse(f);

  NodeList nl = doc.getElementsByTagName("VALUE");

  for (int i=0;i<nl.getLength();i++){

  System.out.print("车牌号码:" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue());

  System.out.println("车主地址:" + doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue());

  }

  }catch(Exception e){

  e.printStackTrace();

  }

  System.out.println("运行时间:"+(System.currentTimeMillis() - lasting)+"毫秒");}}

  10k消耗时间:265 203 219 172

  100k消耗时间:9172 9016 8891 9000

  1000k消耗时间:691719 675407 708375 739656

  10000k消耗时间:OutOfMemoryError

  接着是SAX

  这种处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX还比它的替代者DOM快许多。

  选择DOM还是选择SAX?

  对于需要自己编写代码来处理XML文档的开发人员来说,

  选择DOM还是SAX解析模型是一个非常重要的设计决策。

  DOM采用建立树形结构的方式访问XML文档,而SAX采用的事件模型。

  DOM解析器把XML文档转化为一个包含其内容的树,并可以对树进行遍历。用DOM解析模型的优点是编程容易,开发人员只需要调用建树的指令,然后利用navigation APIs访问所需的树节点来完成任务。可以很容易的添加和修改树中的元素。然而由于使用DOM解析器的时候需要处理整个XML文档,所以对性能和内存的要求比较高,尤其是遇到很大的XML文件的时候。由于它的遍历能力,DOM解析器常用于XML文档需要频繁的改变的服务中。

  SAX解析器采用了基于事件的模型,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。SAX对内存的要求通常会比较低,因为它让开发人员自己来决定所要处理的tag。特别是当开发人员只需要处理文档中所包含的部分数据时,SAX这种扩展能力得到了更好的体现。但用SAX解析器的时候编码工作会比较困难,而且很难同时访问同一个文档中的多处不同数据。

  Bean文件:

  package com.test;import org.xml.sax.*;import org.xml.sax.helpers.*;import javax.xml.parsers.*;

  public class MyXMLReader extends DefaultHandler {

  java.util.Stack tags = new java.util.Stack();

  public MyXMLReader() {

  super();}

  public static void main(String args[]) {

  long lasting = System.currentTimeMillis();

  try {

  SAXParserFactory sf = SAXParserFactory.newInstance();

  SAXParser sp = sf.newSAXParser();

  MyXMLReader reader = new MyXMLReader();

  sp.parse(new InputSource("data_10k.xml"), reader);

  } catch (Exception e) {

  e.printStackTrace();

  }

  System.out.println("运行时间:" + (System.currentTimeMillis() - lasting) + "毫秒");}

  public void characters(char ch[], int start, int length) throws SAXException {

  String tag = (String) tags.peek();

  if (tag.equals("NO")) {

  System.out.print("车牌号码:" + new String(ch, start, length));}if (tag.equals("ADDR")) {

  System.out.println("地址:" + new String(ch, start, length));}}

  public void startElement(String uri,String localName,String qName,Attributes attrs) {

  tags.push(qName);}}

  10k消耗时间:110 47 109 78

  100k消耗时间:344 406 375 422

  1000k消耗时间:3234 3281 3688 3312

  10000k消耗时间:32578 34313 31797 31890 30328

  然后是JDOM http://www.jdom.org/

  JDOM的目的是成为Java特定文档模型,它简化与XML的交互并且比使用DOM实现更快。由于是第一个Java特定模型,JDOM一直得到大力推广和促进。正在考虑通过“Java规范请求JSR-102”将它最终用作“Java标准扩展”。从2000年初就已经开始了JDOM开发。

  JDOM与DOM主要有两方面不同。首先,JDOM仅使用具体类而不使用接口。这在某些方面简化了API,但是也限制了灵活性。第二,API大量使用了Collections类,简化了那些已经熟悉这些类的Java开发者的使用。

  JDOM文档声明其目的是“使用20%(或更少)的精力解决80%(或更多)Java/XML问题”(根据学习曲线假定为20%)。JDOM对于大多数Java/XML应用程序来说当然是有用的,并且大多数开发者发现API比DOM容易理解得多。JDOM还包括对程序行为的相当广泛检查以防止用户做任何在XML中无意义的事。然而,它仍需要您充分理解XML以便做一些超出基本的工作(或者甚至理解某些情况下的错误)。这也许是比学习DOM或JDOM接口都更有意义的工作。

  JDOM自身不包含解析器。它通常使用SAX2解析器来解析和验证输入XML文档(尽管它还可以将以前构造的DOM表示作为输入)。它包含一些转换器以将JDOM表示输出成SAX2事件流、DOM模型或XML文本文档。JDOM是在Apache许可证变体下发布的开放源码。

  Bean文件:

  package com.test;

  import java.io.*;import java.util.*;import org.jdom.*;import org.jdom.input.*;

  public class MyXMLReader {

  public static void main(String arge[]) {

  long lasting = System.currentTimeMillis();

  try {

  SAXBuilder builder = new SAXBuilder();

  Document doc = builder.build(new File("data_10k.xml"));

  Element foo = doc.getRootElement();

  List allChildren = foo.getChildren();

  for(int i=0;i<allChildren.size();i++) {

  System.out.print("车牌号码:" + ((Element)allChildren.get(i)).getChild("NO").getText());

  System.out.println("车主地址:" + ((Element)allChildren.get(i)).getChild("ADDR").getText());

  }

  } catch (Exception e) {

  e.printStackTrace();

  }

  System.out.println("运行时间:" + (System.currentTimeMillis() - lasting) + "毫秒");}}

  10k消耗时间:125 62 187 94

  100k消耗时间:704 625 640 766

  1000k消耗时间:27984 30750 27859 30656

  10000k消耗时间:OutOfMemoryError

  最后是DOM4J http://dom4j.sourceforge.net/

  虽然DOM4J代表了完全独立的开发结果,但最初,它是JDOM的一种智能分支。它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持、XML Schema支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项,它通过DOM4J API和标准DOM接口具有并行访问功能。从2000下半年开始,它就一直处于开发之中。

  为支持所有这些功能,DOM4J使用接口和抽象基本类方法。DOM4J大量使用了API中的Collections类,但是在许多情况下,它还提供一些替代方法以允许更好的性能或更直接的编码方法。直接好处是,虽然DOM4J付出了更复杂的API的代价,但是它提供了比JDOM大得多的灵活性。

  在添加灵活性、XPath集成和对大文档处理的目标时,DOM4J的目标与JDOM是一样的:针对Java开发者的易用性和直观操作。它还致力于成为比JDOM更完整的解决方案,实现在本质上处理所有Java/XML问题的目标。在完成该目标时,它比JDOM更少强调防止不正确的应用程序行为。

  DOM4J是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的Java软件都在使用DOM4J来读写XML,特别值得一提的是连Sun的JAXM也在用DOM4J。

  Bean文件:

  package com.test;

  import java.io.*;import java.util.*;import org.dom4j.*;import org.dom4j.io.*;

  public class MyXMLReader {

  public static void main(String arge[]) {

  long lasting = System.currentTimeMillis();

  try {

  File f = new File("data_10k.xml");

  SAXReader reader = new SAXReader();

  Document doc = reader.read(f);

  Element root = doc.getRootElement();

  Element foo;

  for (Iterator i = root.elementIterator("VALUE"); i.hasNext();) {

  foo = (Element) i.next();

  System.out.print("车牌号码:" + foo.elementText("NO"));

  System.out.println("车主地址:" + foo.elementText("ADDR"));

  }

  } catch (Exception e) {

  e.printStackTrace();

  }

  System.out.println("运行时间:" + (System.currentTimeMillis() - lasting) + "毫秒");}}

  10k消耗时间:109 78 109 31

  100k消耗时间:297 359 172 312

  1000k消耗时间:2281 2359 2344 2469

  10000k消耗时间:20938 19922 20031 21078

  JDOM和DOM在性能测试时表现不佳,在测试10M文档时内存溢出。在小文档情况下还值得考虑使用DOM和JDOM。虽然JDOM的开发者已经说明他们期望在正式发行版前专注性能问题,但是从性能观点来看,它确实没有值得推荐之处。另外,DOM仍是一个非常好的选择。DOM实现广泛应用于多种编程语言。它还是许多其它与XML相关的标准的基础,因为它正式获得W3C推荐(与基于非标准的Java模型相对),所以在某些类型的项目中可能也需要它(如在Javascript中使用DOM)。

  SAX表现较好,这要依赖于它特定的解析方式。一个SAX检测即将到来的XML流,但并没有载入到内存(当然当XML流被读入时,会有部分文档暂时隐藏在内存中)。

  无疑,DOM4J是这场测试的获胜者,目前许多开源项目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J吧!

posted @ 2010-11-23 11:14 colorfire 阅读(439) | 评论 (0)编辑 收藏