|
2008年8月13日
一、为啥不去听别人分享? 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/ 阅读全文
|