badqiu

XPer
随笔 - 46, 文章 - 3, 评论 - 195, 引用 - 0
数据加载中……

2006年12月4日

工作中为什么不想听分享及不想分享?

一、为啥不去听别人分享?

1、觉得对现有工作无关

2、工作任务重,没空

3、没目的,随大流

4、觉得别人一次讲太多,记不住

5、任务性分享,不感兴趣

 

二、为啥自己不主动分享?

1、觉得内容少,不想分享

2、无主题,主题窄

3、压力大,硬凑PPT    

4、工作任务压着,没空想分享

5、目的性太强,没想其他东西

 

三、主动分享或听分享的好处?

1、扩大个人影响力

2、锻炼自己的总结能力

3、巩固自己对某一方面东西的认识

4、迫使自己学点东西

5、培养自己考虑问题的全面性

6、学习演讲技巧

posted @ 2014-02-11 15:47 badqiu 阅读(1977) | 评论 (6)编辑 收藏

mysql map_get function,用于解析map结构数据,根据key返回相对应value

     摘要: 1.目的

mysql的列是固定的,不支持存储如Map 结构的数据,但现在我们的需求是希望有一个 ext Map的扩展列,可以存储Map结构的数据,并且可以在mysql里面进行运算.(即schema free)。所以解决方案是创建一个map_get()函数,可以根据key得到对应的value  阅读全文

posted @ 2012-12-14 10:50 badqiu 阅读(1860) | 评论 (0)编辑 收藏

hadoop 集群升级失败记录

     摘要: 因为需要使用hadoop与hbase结合使用,所以需要为hadoop hdfs升级使用append写模式。需要对现有的hadoop 0.20.1 升级至0.20.205.0; 升级过程简单的使用 hadoop namenode -upgrade 从 -18 version => -32version(这个是dfs/name/current/VERSION).但我们发现0.20.205跟hive不兼容,所以又安装facebook的hadoop版本(-30版本)。

整个升级流程简单来说就是: dfs/name/current/VERSION -18 => -32 => -30. 升级再回滚的过程。
  阅读全文

posted @ 2011-12-12 20:30 badqiu 阅读(3065) | 评论 (2)编辑 收藏

分布式应用上下文(Distributed ThreadLocal)

     摘要: 单机应用内,在进程内部,我们可以使用ThreadLocal传递应用上下文的方式. 当前的 Spring Secrucity , Spring TransactionManager, Log4J MDC, Struts2 ActionContext等等应用场景随处可见.
但在是分布式系统下,由于不是在同一个进程内,所以无法使用ThreadLocal. 那么什么是分布式ThreadLocal呢?就是将一个系统中的ThreadLocal信息可以传递至下一个系统,将两者的调用可以关联起来。如对应用有一个调用,我们生成一个请求ID (traceId),在后面所有分布式系统调用中,可以通过这个traceId将所有调用关联起来,这样查找调用日志都将十分方便.  阅读全文

posted @ 2011-01-04 19:56 badqiu 阅读(2284) | 评论 (3)编辑 收藏

接口滥用问题

     摘要: 我们知道,大家提倡面向接口编程,但凡事都有个度,当滥用,那么面向接口完全流于形式。  阅读全文

posted @ 2010-10-11 17:33 badqiu 阅读(2132) | 评论 (2)编辑 收藏

log4jdbc日志框架介绍

     摘要: 现大家使用的ibatis,hibernate,spring jdbc的sql日志信息,有一点个缺点是占位符与参数是分开打印的,如果想要拷贝sql至PLSQL Developer客户端直接执行,需要自己拼凑sql。而log4jdbc是在jdbc层的一个日志框架,可以将占位符与参数全部合并在一起显示,方便直接拷贝sql在PLSQL Developer等客户端直接执行,加快调试速度。  阅读全文

posted @ 2010-08-20 14:07 badqiu 阅读(5285) | 评论 (8)编辑 收藏

rapid-framework v3.9新版本发布

     摘要: 本次新版本发布最主要的更新内容是生成器的加强,并且之前已经发布了rapid-generator独立版.
此次升级保证模板的兼容性.后续rapid-framework的发行版将不直接提供rapid-generator的源码在项目中,以便以后大家编写的模板都可以在一个生成器引擎中运行.   阅读全文

posted @ 2010-07-21 22:41 badqiu 阅读(2187) | 评论 (1)编辑 收藏

Holder模式

(本方法属于作者经验总结出该模式)

Holder模式的主要功能是将一些Bean可以转为静态方法调用.方便使用.

适用于一些系统只存在单例(singleton)并且 十分常用 的基础服务对象.这些基础服务如果每次使用spring注入,只会增加无谓的代码及一些不确定性.

示例如下:

BeanValidatorHolder.validate(bean) // HibernateValidator一般系统只有一个
CacheHolder.get("key") //如Memcached,应用系统也只有一个对象
ApplicationContextHolder.getBean("userInfoService");

与singleton相比特点

  • 一个Holder只能持有一个对象
  • Holder一般是持有接口,所以你可以方便的改变实现
  • 配合spring完成Holder初始化

示例1.CacheHolder?

用于持有Cache对象

1.1在spring中初始化

<bean class="cn.org.rapid_framework.util.holder.CacheHolder">
    <property name="cache" ref="memcacheCacheImpl"/>
</bean>

1.2使用 CacheHolder?使用

CacheHolder.add("key","cache_value","1h");
//do something

1.3实现

public class CacheHolder implements InitializingBean{
    private static Cache cache;
   
public void afterPropertiesSet() throws Exception {         if(cache == null) throw new IllegalStateException("not found 'cache' for CacheHolder ");     }             public void setCache(Cache c) {         if(cache != null) throw new IllegalStateException("CacheHolder already holded 'cache'");         cache = c;     }
   
public static Cache getCache(){         return cache;     }
//省略了其它N多cache静态方法    
public static void add(String key, Object value, String expiration) {         cache.add(key, value, parseDuration(expiration));     }
   
public static void cleanHolder() {         cache = null;     }        }

其它可以存在的Holder

holder 功能
BeanValidatorHolder 用于持有Hibernate Validator
SpringValidatorHolder 用于持有Spring Validator
ApplicationContextHolder 用于持有Spring ApplicationContext?
CacheHolder 用于持有Cache
MessagePublisherHodler 用于持有类似JMS消息中心的消息发送
MessageSourceHolder 持用MessageSource?,用于国际化
MailerHolder 用于邮件发送的Mailer
ConfigHolder 用于持有配置,需要动态刷新的参数使用,请查看文章保持类的无状态
SecurityManagerHolder 用于权限控制的SecurityManager

posted @ 2010-06-22 22:01 badqiu 阅读(2858) | 评论 (3)编辑 收藏

为velocity,freemarker提供jsp:include功能

     摘要: 使用JSP的都知道jsp:include指令,可以include其它jsp页面或者servlet。

而如果你不是使用JSP,而是使用模板引擎如Freemarker,Velocity。有该功能也将十分方便。  阅读全文

posted @ 2010-06-13 19:41 badqiu 阅读(3337) | 评论 (3)编辑 收藏

系统参数的动态刷新,只需一个原则:保持类的无状态

     摘要: 既然可以用如此简单的方法达到我们的目的,为何要搞出那么复杂的方案. (简单就是美)  阅读全文

posted @ 2010-05-25 00:43 badqiu 阅读(2024) | 评论 (5)编辑 收藏

SOA架构的目的及价值

     摘要: 1.SOA存在的目的?
2.为什么说SOA是一种风格?
3.SOA解决了服务集成(依赖)问题  阅读全文

posted @ 2010-05-05 19:03 badqiu 阅读(2434) | 评论 (2)编辑 收藏

rapid-framework发布新版本: v3.5

     摘要:
新增插件:
flex_cairngorm: 基于cairngorm mvc的flex插件,代码生成器生成的在线demo
freemarker_html_view: 基于freemarker的html视图,用于不喜欢jsp的同学使用

v3.5更新内容:
扩展jsp,freemarker,velocity的模板可以相互继承,打造替换sitemesh,struts tiles的布局框架.
freemarker,velocity实现管道操作来进行布局
新增分页方言: SQLServer2005Dialect
spring事务配置采用@Transactional替换xml配置
jdbc增加了sql生成工具,用于进一步封装spring jdbc操作
  阅读全文

posted @ 2010-03-24 19:39 badqiu 阅读(1981) | 评论 (1)编辑 收藏

Flex flex企业级UI权限控制

     摘要: 网上搜索了一番,用于控制flex UI组件的权限的框架只有chimp相近一些.
但是不喜欢他的基于flex annotation的权限控制方式.遂决定自己写一套flex权限控制框架。
如果你熟悉作者的另外一套javascript 表单验证框架rapid-validation,将会对下面的使用方式有似曾相识的感觉。
  阅读全文

posted @ 2010-02-25 17:32 badqiu 阅读(3141) | 评论 (2)编辑 收藏

flex国际化

     摘要: flex3只支持两种语言,en_US,ja_JP
而flex4中则支持多国语言,所以可以将flex4中的%FLEX_HOME%\frameworks\locale\zh_CN拷贝至flex3中。  阅读全文

posted @ 2010-02-08 16:09 badqiu 阅读(3296) | 评论 (0)编辑 收藏

新工具: 能够将google code的wiki下载为离线html

     摘要: 在google code上编写wiki文档你最担心的是什么:

1. 版本不好控制,在线同时只能浏览一个版本号的wiki页面

2. 不能提供离线版本



现在使用这个工具,可以将google wiki直接下载为本地的html ,并且与wiki相关的资源,如 css ,js ,图片都可以一同下载 并且与在线浏览的效果一样 .
还提供与ant的集成,直接与构建脚本相结合.
  阅读全文

posted @ 2010-02-04 15:18 badqiu 阅读(1691) | 评论 (0)编辑 收藏

欢迎加入flex模板共享计划

     摘要: 我们都知道,在网上我们很容易找到一个HTML模板,但是想要寻找一个Flex,那是少之又少。 本项目的目的是推动大家一起共享一些好用的模板,推动flex在国内的发展。  阅读全文

posted @ 2010-02-01 18:11 badqiu 阅读(2414) | 评论 (0)编辑 收藏

扩展freemarker,velocity,实现模板的管道操作

     摘要: 一.功能介绍
1.将前一个模板的输出,变成一个变量,后一个模板可以通过变量引用前一个模板的输出
2.整个管道下的模板都在同一个context中,即模板间可以相互引用变量

将管道操作与我之前扩展的模板继承相结合,即可打造一个完美的页面布局框架.

  阅读全文

posted @ 2010-01-12 21:03 badqiu 阅读(1701) | 评论 (1)编辑 收藏

扩展Velocity,实现模板的继承

     摘要: 与我之前的扩展freemarker类似,现新增加三个指令:block,override,extends
一.目的
1.父模板页面定义好布局,子模板可以重定义布局中的部分内容
2.使模板可以实现类似"类"的继承关系,并不限继承层次  阅读全文

posted @ 2009-12-28 20:55 badqiu 阅读(3459) | 评论 (0)编辑 收藏

扩展freemarker,实现模板的继承

     摘要: 现扩展freemarker,新增加三个指令: @extends,@block,@override
一.目的
1. 父模板页面定义好布局,子模板可以重定义布局中的部分内容
2. 使模板可以实现类似"类"的继承关系,并不限继承层次
  阅读全文

posted @ 2009-12-22 23:47 badqiu 阅读(3769) | 评论 (1)编辑 收藏

spring REST中的内容协商(同一资源,多种展现:xml,json,html)

     摘要: RESTful服务中很重要的一个特性即是同一资源,多种表述.


/user/123.xml 将返回xml格式数据

/user/123.json 将返回json格式数据

/user/123.html 将返回html格式数据
  阅读全文

posted @ 2009-12-21 14:36 badqiu 阅读(7616) | 评论 (2)编辑 收藏

在jsp中实现"类"的继承关系

     摘要: 使用过python django模板的应该清楚,django里面有一个激动人心的功能就是模板可以使用类的继承关系。 即模板是可以继承的,并且不限继承的层次。

1. child.html extends base.html
2. grandchild.html extends child.html
这样,我们在base.html中定义好html布局,然后在“子类”(我们这样称呼吧)重定义需要父页面内容即可  阅读全文

posted @ 2009-12-09 18:19 badqiu 阅读(2706) | 评论 (4)编辑 收藏

数据库sharding下的主键生成策略

     摘要: 在对数据库水平分区的情况下,面对多个数据库,想要生成一个唯一性的主键这是一个问题。  阅读全文

posted @ 2009-11-23 18:31 badqiu 阅读(1774) | 评论 (1)编辑 收藏

rapid-framework发布v3.0 版本

     摘要: 虽然spring 3.0及ibatis3还未发布,但rapid里面的集成基本已经成型,正式版发布会继续跟进.
以下是changelog
新增插件

springmvc_rest : spring restful插件,现基于springmvc3.0 rc1版本,并且rc1还有一个bug,现rapid自带一个类手工修复

ibatis3 : 现在跟随ibatis3 beta5版本,扩展实现了基于dialect的分页

rapid_mailer : 基于spring mail的邮件发送插件,向ruby on rails的mailer靠拢  阅读全文

posted @ 2009-11-11 19:42 badqiu 阅读(1498) | 评论 (0)编辑 收藏

大规模网站架构ppt

     摘要: 为公司讲解的一个PPT,相关内容如下



CAP原则
BASE策略
异步(MessageQueue)
数据库
数据的水平切分及垂直切分
数据库读写分离
避免分布式事务
反范式的数据库设计
负载均衡
DNS负载均衡
反向代理负载均衡
LVS
缓存
数据库缓存
服务器缓存/页面缓存/数据缓存/静态化
反向代理缓存

HA
Session

Share Nothing Architecture架构
浏览器优化
浏览器缓存/CDN/小图片合并
分布式文件系统

  阅读全文

posted @ 2009-11-06 10:01 badqiu 阅读(2856) | 评论 (7)编辑 收藏

ibatis3基于方言的分页

     摘要: (注:以下代码是基于ibatis3 beta4的扩展,ibatis3正式版如果实现改变,将会继续跟进修改)


iBatis3默认使用的分页是基于游标的分页,而这种分页在不同的数据库上性能差异不一致,最好的办法当然是使用类似hibernate的基于方言(Dialect)的物理分页功能。
iBatis3现在提供插件功能,通过插件我们可以编写自己的拦截器来拦截iBatis3的主要执行方法来完成相关功能的扩展。  阅读全文

posted @ 2009-10-20 09:04 badqiu 阅读(3945) | 评论 (5)编辑 收藏

与Spring BlazeDS Integration相比,更简单的实现来调用spring bean

     摘要: 为了使flex客户端能够直接调用服务端的spring bean,SBI提供的此种功能,SBI使用DispatchServlet代理转发MessageBrokerServlet的请求,增加了一些无用的类及相关配置,
而其实完成相同的功能,最简只需两个类即可.  阅读全文

posted @ 2009-10-14 22:04 badqiu 阅读(3018) | 评论 (2)编辑 收藏

spring3.0的springmvc_rest及ibatis3的在线示例及demo下载,根据url查看不同格式的数据

     摘要: springmvc_rest的示例使用,包含通过/userinfo/1, /userinfo/1.json,/userinfo/1.xml 来查看html,json, xml三种数据

ibatis3的示例及基于方言(Dialect)的分页使用   阅读全文

posted @ 2009-10-14 10:34 badqiu 阅读(5034) | 评论 (7)编辑 收藏

ibatis3 实例代码下载兼ibatis3优劣分析

     摘要: 现编写了ibatis3的代码例子.

一.首先我们来看现在的xml mapper关于增删改查的编写
  阅读全文

posted @ 2009-09-27 11:17 badqiu 阅读(3374) | 评论 (2)编辑 收藏

spring 3.0 应用springmvc 构造RESTful URL 详细讲解

     摘要: 由于下一版本的rapid-framwork需要集成spring RESTful URL,所以研究了一下怎么搭建. 并碰到了一下问题。

springmvc 3.0 中增加 RESTful URL功能,构造出类似javaeye现在的URL。  阅读全文

posted @ 2009-09-22 20:49 badqiu 阅读(28539) | 评论 (9)编辑 收藏

rapid-framework-v2.5.0新版本发布

     摘要: 赶在国庆之前发布一个版本,庆祝国庆,:)

更新内容:
提升:
XsqlBuilder支持Object作为filters
PageRequest.filters使用范型

新特性:
支持Ibatis的分页Dialect
新增其它数据库的jdbc分页Dialect  阅读全文

posted @ 2009-09-15 20:45 badqiu 阅读(1582) | 评论 (1)编辑 收藏

[设计模式] AsyncToken模式,替换通常的Listener模式

     摘要: 对于一个异步的方法调用,我们需要异步的得到调用结果,通常我们会使用Listener模式,用于监听方法异步调用的结果.
但应用该方法在实际使用中其实并不灵活.
  阅读全文

posted @ 2009-09-02 22:31 badqiu 阅读(1827) | 评论 (3)编辑 收藏

rapid-framework工具类介绍一: 异步IO类

     摘要: 在一些特殊的场合,我们可能需要使用异步的IO来大幅提高性能.  阅读全文

posted @ 2009-05-08 01:22 badqiu 阅读(1497) | 评论 (0)编辑 收藏

扩展hadoop hdfs,实现WebDav协议,将hdfs mount为linux本地文件系统

     摘要: 使用hadoop的shell命令进行hdfs的操作十分不方便,最好的办法当然是将hdfs映射为本地文件系统. 而通过实现WebDav Http协议, 结合WebDav的众多客户端,可以将hdfs映射为windows或是linux的本地文件系统.而使用api存储文件时,也将对应用透明,如使用本地文件系统一样使用hdfs.  阅读全文

posted @ 2008-11-24 11:21 badqiu 阅读(2776) | 评论 (0)编辑 收藏

使用动态代理解决Hibernate序列化,避免延迟加载问题.

     摘要: 问题:

1.Hibernate碰到延迟加载的属性访问时如果session被关闭则抛出LazyInitializationException
2.Hibernate中的one-to-many等关联关系在序列化时如果没有控制,则将整个数据库都有可能被全部序列化
3.过多的使用DTO/ValueObject解决这个问题.

解决办法:

对Entity对象生成一个动态代理,拦截getXXXX()方法,如果访问的是延迟加载的属性,则return null,而不抛出LazyInitializationException,递归生成属性的代理,只要碰到未延迟加载的属性,而序列化会自动停止.避免将整个Entity序列化传播,导致可能序列化整个数据库的问题.
  阅读全文

posted @ 2008-10-31 00:33 badqiu 阅读(3172) | 评论 (3)编辑 收藏

Pomer: 基于Flex(Cairngorm MVC+BlazeDS) + Spring + Hibernate的Full Stack开发框架

     摘要: 简单介绍
基于Flex(Cairngorm MVC+BlazeDS) + Spring + Hibernate的Full Stack开发框架
并提供基于契约的零配置编程

项目网站:http://www.pomer.org.cn  阅读全文

posted @ 2008-10-07 10:03 badqiu 阅读(4754) | 评论 (4)编辑 收藏

rapid-framework发布v1.0.2版本

     摘要: 该版本主要增加的相关文档导航,及一些模板及目录的调整

项目Home: http://code.google.com/p/rapid-framework/  阅读全文

posted @ 2008-08-13 11:35 badqiu 阅读(1277) | 评论 (2)编辑 收藏

动态构造sql的利器:rapid-xsqlbuider详细说明

     摘要: 特性列表:
动态构造sql条件语句,提供sql拼接与使用占位符两种方式,
数据类型的修饰,
对SQL注入攻击的防范,  阅读全文

posted @ 2008-08-07 09:26 badqiu 阅读(3661) | 评论 (12)编辑 收藏

正式发布类似rails的框架:rapid-framework

     摘要: 基于spring,struts(struts2),hibernate的web fullstack项目脚手架

一个类似 ruby on rails 的java web快速开发脚手架,本着不重复发明轮子的原则,框架只是将零散的struts(struts2)+spring+hibernate各个组件组装好在一起,并对struts及struts2进行改造,提供零配置编程,并内置一个强大的代码生成器及模板文件, 可以生成java的hibernat model,dao,manager,struts+struts2 action类,可以生成jsp的增删改查及列表页面
  阅读全文

posted @ 2008-07-29 09:08 badqiu 阅读(1078) | 评论 (3)编辑 收藏

[rapid-framework]代码生成器发布:rapid-generator-v1.0

     摘要: 本代码生成器的特性

1. 基于FreeMarker模板语言
2. 基于数据库,并支持多种数据库(mysql,sql server,oracle测试通过)
3. 半手工方式,生成的代码放在某个目录,再手工拷贝回来工作区
4. 易于做二次开发,整个生成器本身就是java源代码,源代码核心十分精简,并且鼓励你做修改代码,也可以作为任何语言的代码生成器
5. 配置简单,只有一个配置文件generator.properties
6. 以application方式运行生成器,生成不同的table直接修改相关java代码即可
7. 将文件系统的目录名称及文件名称作为生成器的一部分,模板文件的的名称与目录名称可以直接引用相关变量,如 ${basepackage}/${className}.java (${className}=Blog,则会生成Blog.java)
  阅读全文

posted @ 2008-07-22 09:09 badqiu 阅读(2472) | 评论 (7)编辑 收藏

新版本发布:基于prototype的表单验证框架,现正式更加为rapid-validation-v1.0

     摘要: javaeye现在使用的表单验证框架就是这个,现正式更名并发布新版本为rapid-validation-v1.0.0

特性简介:

简洁,快速的验证语法
无需编写验证提示信息(当然也支持自定义提示信息)
错误消息在指定地方显示
支持组合验证
Ajax支持
基于prototype.js
支持国际化
易于扩展
基于标准的Html属性(class)添加验证,易于其它标准的jsp taglib集成
特殊应用场景支持,如:密码确认,结束日期必须大于开始日期
完整详细的单元测试,保证框架质量   阅读全文

posted @ 2008-07-18 09:27 badqiu 阅读(3476) | 评论 (11)编辑 收藏

关于JavaScript的gzip静态压缩方法

     摘要: 传统的JS压缩(删除注释,删除多余空格等)提供的压缩率有时还是不尽不意,
幸亏现在的浏览器都支持压缩传输(通过设置http header的Content-Encoding=gzip),
可以通过服务器的配置(如apache)为你的js提供压缩传输,
或是appfuse中使用的GZipFilter使tomcat也提供这种能力

现在的问题是这种动态的压缩会导致CPU占用率过高,
现在我想到的解决辨法是通过提供静态压缩(就是将js预先通过gzip.exe压缩好)
  阅读全文

posted @ 2006-12-04 22:48 badqiu 阅读(2607) | 评论 (2)编辑 收藏