|
2006年2月11日
一、为啥不去听别人分享? 1、觉得对现有工作无关 2、工作任务重,没空 3、没目的,随大流 4、觉得别人一次讲太多,记不住 5、任务性分享,不感兴趣 二、为啥自己不主动分享? 1、觉得内容少,不想分享 2、无主题,主题窄 3、压力大,硬凑PPT 4、工作任务压着,没空想分享 5、目的性太强,没想其他东西 三、主动分享或听分享的好处? 1、扩大个人影响力 2、锻炼自己的总结能力 3、巩固自己对某一方面东西的认识 4、迫使自己学点东西 5、培养自己考虑问题的全面性 6、学习演讲技巧
摘要: 1.目的
mysql的列是固定的,不支持存储如Map 结构的数据,但现在我们的需求是希望有一个 ext Map的扩展列,可以存储Map结构的数据,并且可以在mysql里面进行运算.(即schema free)。所以解决方案是创建一个map_get()函数,可以根据key得到对应的value 阅读全文
摘要: 因为需要使用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. 升级再回滚的过程。
阅读全文
摘要: 单机应用内,在进程内部,我们可以使用ThreadLocal传递应用上下文的方式. 当前的 Spring Secrucity , Spring TransactionManager, Log4J MDC, Struts2 ActionContext等等应用场景随处可见.
但在是分布式系统下,由于不是在同一个进程内,所以无法使用ThreadLocal. 那么什么是分布式ThreadLocal呢?就是将一个系统中的ThreadLocal信息可以传递至下一个系统,将两者的调用可以关联起来。如对应用有一个调用,我们生成一个请求ID (traceId),在后面所有分布式系统调用中,可以通过这个traceId将所有调用关联起来,这样查找调用日志都将十分方便. 阅读全文
摘要: 我们知道,大家提倡面向接口编程,但凡事都有个度,当滥用,那么面向接口完全流于形式。 阅读全文
摘要: 现大家使用的ibatis,hibernate,spring jdbc的sql日志信息,有一点个缺点是占位符与参数是分开打印的,如果想要拷贝sql至PLSQL Developer客户端直接执行,需要自己拼凑sql。而log4jdbc是在jdbc层的一个日志框架,可以将占位符与参数全部合并在一起显示,方便直接拷贝sql在PLSQL Developer等客户端直接执行,加快调试速度。 阅读全文
摘要: 本次新版本发布最主要的更新内容是生成器的加强,并且之前已经发布了rapid-generator独立版.
此次升级保证模板的兼容性.后续rapid-framework的发行版将不直接提供rapid-generator的源码在项目中,以便以后大家编写的模板都可以在一个生成器引擎中运行. 阅读全文
(本方法属于作者经验总结出该模式)
Holder模式的主要功能是将一些Bean可以转为静态方法调用.方便使用.
适用于一些系统只存在单例(singleton)并且 十分常用 的基础服务对象.这些基础服务如果每次使用spring注入,只会增加无谓的代码及一些不确定性.
示例如下:
BeanValidatorHolder.validate(bean) // HibernateValidator一般系统只有一个
CacheHolder.get("key") //如Memcached,应用系统也只有一个对象
ApplicationContextHolder.getBean("userInfoService");
与singleton相比特点
- 一个Holder只能持有一个对象
- Holder一般是持有接口,所以你可以方便的改变实现
- 配合spring完成Holder初始化
用于持有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 |
功能 |
BeanValidatorHolder |
用于持有Hibernate Validator |
SpringValidatorHolder |
用于持有Spring Validator |
ApplicationContextHolder |
用于持有Spring ApplicationContext? |
CacheHolder |
用于持有Cache |
MessagePublisherHodler |
用于持有类似JMS消息中心的消息发送 |
MessageSourceHolder |
持用MessageSource?,用于国际化 |
MailerHolder |
用于邮件发送的Mailer |
ConfigHolder |
用于持有配置,需要动态刷新的参数使用,请查看文章保持类的无状态 |
SecurityManagerHolder |
用于权限控制的SecurityManager |
摘要: 使用JSP的都知道jsp:include指令,可以include其它jsp页面或者servlet。
而如果你不是使用JSP,而是使用模板引擎如Freemarker,Velocity。有该功能也将十分方便。 阅读全文
摘要: 既然可以用如此简单的方法达到我们的目的,为何要搞出那么复杂的方案. (简单就是美) 阅读全文
摘要: 1.SOA存在的目的?
2.为什么说SOA是一种风格?
3.SOA解决了服务集成(依赖)问题 阅读全文
摘要:
新增插件:
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操作
阅读全文
摘要: 网上搜索了一番,用于控制flex UI组件的权限的框架只有chimp相近一些.
但是不喜欢他的基于flex annotation的权限控制方式.遂决定自己写一套flex权限控制框架。
如果你熟悉作者的另外一套javascript 表单验证框架rapid-validation,将会对下面的使用方式有似曾相识的感觉。
阅读全文
摘要: flex3只支持两种语言,en_US,ja_JP
而flex4中则支持多国语言,所以可以将flex4中的%FLEX_HOME%\frameworks\locale\zh_CN拷贝至flex3中。 阅读全文
摘要: 在google code上编写wiki文档你最担心的是什么:
1. 版本不好控制,在线同时只能浏览一个版本号的wiki页面
2. 不能提供离线版本
现在使用这个工具,可以将google wiki直接下载为本地的html ,并且与wiki相关的资源,如 css ,js ,图片都可以一同下载 并且与在线浏览的效果一样 .
还提供与ant的集成,直接与构建脚本相结合.
阅读全文
摘要: 我们都知道,在网上我们很容易找到一个HTML模板,但是想要寻找一个Flex,那是少之又少。 本项目的目的是推动大家一起共享一些好用的模板,推动flex在国内的发展。 阅读全文
摘要: 一.功能介绍
1.将前一个模板的输出,变成一个变量,后一个模板可以通过变量引用前一个模板的输出
2.整个管道下的模板都在同一个context中,即模板间可以相互引用变量
将管道操作与我之前扩展的模板继承相结合,即可打造一个完美的页面布局框架.
阅读全文
摘要: 与我之前的扩展freemarker类似,现新增加三个指令:block,override,extends
一.目的
1.父模板页面定义好布局,子模板可以重定义布局中的部分内容
2.使模板可以实现类似"类"的继承关系,并不限继承层次 阅读全文
摘要: 现扩展freemarker,新增加三个指令: @extends,@block,@override
一.目的
1. 父模板页面定义好布局,子模板可以重定义布局中的部分内容
2. 使模板可以实现类似"类"的继承关系,并不限继承层次
阅读全文
摘要: RESTful服务中很重要的一个特性即是同一资源,多种表述.
即
/user/123.xml 将返回xml格式数据
/user/123.json 将返回json格式数据
/user/123.html 将返回html格式数据
阅读全文
摘要: 使用过python django模板的应该清楚,django里面有一个激动人心的功能就是模板可以使用类的继承关系。 即模板是可以继承的,并且不限继承的层次。
如
1. child.html extends base.html
2. grandchild.html extends child.html
这样,我们在base.html中定义好html布局,然后在“子类”(我们这样称呼吧)重定义需要父页面内容即可 阅读全文
摘要: 在对数据库水平分区的情况下,面对多个数据库,想要生成一个唯一性的主键这是一个问题。 阅读全文
摘要: 虽然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靠拢 阅读全文
摘要: 为公司讲解的一个PPT,相关内容如下
CAP原则
BASE策略
异步(MessageQueue)
数据库
数据的水平切分及垂直切分
数据库读写分离
避免分布式事务
反范式的数据库设计
负载均衡
DNS负载均衡
反向代理负载均衡
LVS
缓存
数据库缓存
服务器缓存/页面缓存/数据缓存/静态化
反向代理缓存
HA
Session
Share Nothing Architecture架构
浏览器优化
浏览器缓存/CDN/小图片合并
分布式文件系统
阅读全文
摘要: (注:以下代码是基于ibatis3 beta4的扩展,ibatis3正式版如果实现改变,将会继续跟进修改)
iBatis3默认使用的分页是基于游标的分页,而这种分页在不同的数据库上性能差异不一致,最好的办法当然是使用类似hibernate的基于方言(Dialect)的物理分页功能。
iBatis3现在提供插件功能,通过插件我们可以编写自己的拦截器来拦截iBatis3的主要执行方法来完成相关功能的扩展。 阅读全文
摘要: 为了使flex客户端能够直接调用服务端的spring bean,SBI提供的此种功能,SBI使用DispatchServlet代理转发MessageBrokerServlet的请求,增加了一些无用的类及相关配置,
而其实完成相同的功能,最简只需两个类即可. 阅读全文
摘要: springmvc_rest的示例使用,包含通过/userinfo/1, /userinfo/1.json,/userinfo/1.xml 来查看html,json, xml三种数据
ibatis3的示例及基于方言(Dialect)的分页使用 阅读全文
摘要: 现编写了ibatis3的代码例子.
一.首先我们来看现在的xml mapper关于增删改查的编写
阅读全文
摘要: 由于下一版本的rapid-framwork需要集成spring RESTful URL,所以研究了一下怎么搭建. 并碰到了一下问题。
springmvc 3.0 中增加 RESTful URL功能,构造出类似javaeye现在的URL。 阅读全文
摘要: 赶在国庆之前发布一个版本,庆祝国庆,:)
更新内容:
提升:
XsqlBuilder支持Object作为filters
PageRequest.filters使用范型
新特性:
支持Ibatis的分页Dialect
新增其它数据库的jdbc分页Dialect 阅读全文
摘要: 对于一个异步的方法调用,我们需要异步的得到调用结果,通常我们会使用Listener模式,用于监听方法异步调用的结果.
但应用该方法在实际使用中其实并不灵活.
阅读全文
摘要: 在一些特殊的场合,我们可能需要使用异步的IO来大幅提高性能. 阅读全文
摘要: 使用hadoop的shell命令进行hdfs的操作十分不方便,最好的办法当然是将hdfs映射为本地文件系统. 而通过实现WebDav Http协议, 结合WebDav的众多客户端,可以将hdfs映射为windows或是linux的本地文件系统.而使用api存储文件时,也将对应用透明,如使用本地文件系统一样使用hdfs. 阅读全文
摘要: 问题:
1.Hibernate碰到延迟加载的属性访问时如果session被关闭则抛出LazyInitializationException
2.Hibernate中的one-to-many等关联关系在序列化时如果没有控制,则将整个数据库都有可能被全部序列化
3.过多的使用DTO/ValueObject解决这个问题.
解决办法:
对Entity对象生成一个动态代理,拦截getXXXX()方法,如果访问的是延迟加载的属性,则return null,而不抛出LazyInitializationException,递归生成属性的代理,只要碰到未延迟加载的属性,而序列化会自动停止.避免将整个Entity序列化传播,导致可能序列化整个数据库的问题.
阅读全文
摘要: 简单介绍
基于Flex(Cairngorm MVC+BlazeDS) + Spring + Hibernate的Full Stack开发框架
并提供基于契约的零配置编程
项目网站:http://www.pomer.org.cn 阅读全文
摘要: 该版本主要增加的相关文档导航,及一些模板及目录的调整
项目Home: http://code.google.com/p/rapid-framework/ 阅读全文
摘要: 特性列表:
动态构造sql条件语句,提供sql拼接与使用占位符两种方式,
数据类型的修饰,
对SQL注入攻击的防范, 阅读全文
摘要: 基于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的增删改查及列表页面
阅读全文
摘要: 本代码生成器的特性
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)
阅读全文
摘要: javaeye现在使用的表单验证框架就是这个,现正式更名并发布新版本为rapid-validation-v1.0.0
特性简介:
简洁,快速的验证语法
无需编写验证提示信息(当然也支持自定义提示信息)
错误消息在指定地方显示
支持组合验证
Ajax支持
基于prototype.js
支持国际化
易于扩展
基于标准的Html属性(class)添加验证,易于其它标准的jsp taglib集成
特殊应用场景支持,如:密码确认,结束日期必须大于开始日期
完整详细的单元测试,保证框架质量 阅读全文
摘要: 传统的JS压缩(删除注释,删除多余空格等)提供的压缩率有时还是不尽不意,
幸亏现在的浏览器都支持压缩传输(通过设置http header的Content-Encoding=gzip),
可以通过服务器的配置(如apache)为你的js提供压缩传输,
或是appfuse中使用的GZipFilter使tomcat也提供这种能力
现在的问题是这种动态的压缩会导致CPU占用率过高,
现在我想到的解决辨法是通过提供静态压缩(就是将js预先通过gzip.exe压缩好)
阅读全文
摘要: 演示地址: http://cleanmine.cosoft.org.cn/validation/example/valid.html
使用validation.js的好处: 避免编写提示信息,避免编写javascript,快速
增加validate-ajax以支持ajax验证,
增加validate-pattern直接通过正则表达式的认证,
修改validate-equlas以验证密码与确认密码的问题,
增加less-than与great-than的验证以支持开始日期与结束日期相比较的问题,
增加validation之间内部依赖的支持,
阅读全文
摘要:
增加min-value-number验证,例: 最小值为10.1 = min-value-10.1
增加max-value-number验证,例: 最大值为-100.1 = min-value--100.1
增加长度范围validate-length-range-minLength-maxLength验证,例: 最小长度为1,最大长度为10:validate-length-range-1-10
增加整型数字范围validate-int-range-minValue-maxValue验证,例: 5至20 : validate-int-range-5-20
增加浮点数字范围validate-float-range-minValue-maxValue验证,例: 1.1至10 : validate-float-range-1.1-10
增加min-length-number验证,例: 最小长度为10 = min-length-10
增加max-length-number验证,例: 最大长度为10 = max-length-1 阅读全文
竟然将Google Toolbar放到Google主页上 真是丑不堪言
崇尚简洁的Google被人糟踏成这样`````````
这是我上次提的问题,没人解决只好自己解决了 http://www.hibernate.org.cn/viewtopic.php?t=18254&highlight=
使用Hibenate的Inteceptor,监听对象变化发送邮件通知,也是Hibernate Inteceptor的一个应用 提供对"Task","UserStory","Iteration","Project","Integration"的邮件通知,测试通过版本xplanner-0.7b4
以下是对xplanner的更改: xplanner更改: com.technoetic.xplanner.mail.EmailMessageFactory: 增加默认构造函数 com.technoetic.xplanner.mail.EmailMessageImpl: 将发送邮件的contentType改为 text/html; gb2312 com.technoetic.xplanner.db.hibernate.XPlannerSessionFactory: 将openSession(XPlannerInteceptor)改成openSession(HibernateInterceptorImpl) 补丁: patch.HibernateInterceptorImpl: 监听Entity的变化,对UserStory与Task等的变化进行邮件通知 需要设置属性: xplanner.application.url=http://testmachine:7070/xplanner :邮件通知的链接地址 xplanner.mail.smtp.host=mainserver.listener.com.cn 邮件服务器主机地址
xplanner项目主页: http://www.xplanner.org 源码下载: http://fisheye.codehaus.org/viewrep/xplanner 补丁下载: http://www.hibernate.org.cn/download.php?id=1642
|