如何高效地工作
0http://www.inc.com/ilya-pozin/7-things-highly-productive-people-do.html
Here are his tips for staying productive:
- Work backwards from goals to milestones to tasks. Writing “launch company website” at the top of your to-do list is a sure way to make sure you never get it done. Break down the work into smaller and smaller chunks until you have specific tasks that can be accomplished in a few hours or less: Sketch a wireframe, outline an introduction for the homepage video, etc. That’s how you set goals and actually succeed in crossing them off your list.
- Stop multi-tasking. No, seriously—stop. Switching from task to task quickly does not work. In fact, changing tasks more than 10 times in a day Read more...
Servlet中getParameter()对Restlet的POST API的副作用
0最近在项目里用到了Restlet框架来搭建REST API平台,由于时间匆忙,用户认证检查都是在每个REST API的第一行代码检查(调用另一个公共API)。现在想把它移到REST框架上,除了login的REST API,其它API都需要自动检查请求中带的token是否正确。
在尝试过程中,首先直接在Restlet的ServerServlet前增加一个servlet filter,大致工作;但发现post类型的REST API无法获取form里的数据,把filter里的代码移到ServerServlet里还是不好使。于是怀疑filter里从request中取值的逻辑可能破坏了HttpServletRequest的状态,导致Restlet代码无法获取里面的Post form数据。于是一行一行删除测试,最后发现request.getParameter()有副作用。网上搜了一下,的确如此:
ServletRequest.java API如此描述:
Spring AOP总结
0
AOP是对面向对象设计的一个补充。
1 AOP中的一些基本概念
- 关注点(concern), 横切关注点(crosscutting concern), 方面(aspect)
- 连接点(join point) 程序执行过程中的一点,包括方法调用,字段访问,异常抛出,AOP会在这些点上做额外的事情。
- 增强(advice)在特定连接点执行的动作。很多AOP框架都以拦截器Interceptor的形式来表现增强。
- 前增
- 后增
- 环绕增强
- 切入点(pointcut)一组连接点的总称,用于指定某个增强应该何时被调用,切入点常用正则表达式或别的通配符语法来描述。
- 增强器(advisor)增强器是在切入点上定义的增强。
- 拦截器(interceptor) 相对于环绕增强器 Read more...
Spring IoC总结
0
1 Bean的生命周期
- 对于singleton Bean,spring能够管理它的生命周期,知道其什么时候实例化,什么时候销毁。
- 对于non-singleton Bean,spring没有管理它的生命周期,而是交给客户端自己管理,每次客户端发送一个请求就会创建一个实例。
- 如果Bean是non-singleton,则不会在spring加载的时候实例化,而是在每次用到的时候实例化。
- 如果Bean是singleton而且没有设置lazy-init="true",就在spring加载的时候实例化。如果设置了lazy就在第一次调用的时候实例化 。
The client code must clean up prototype-scoped objects and release expensive resources that the prototype bean(s) are holding. To get the Spring container to release resources held by prototype-scoped beans, try using a custom bean post-processor, which holds a reference to beans that Read more...
Spring3.1源码分析
0云计算是当前最火的技术,Hadoop/MapReduce/NoSQL都是为了适应海量数据和云计算而生的技术,而绝大多数企业应用软件似乎还在徘徊,听到的顶多是集成现有云存储到企业软件中,如BI开源产品Pentaho提供到Big Data的连接器。不过类似的消息也越来越多,传统的企业应用开始一个个都加入了云的阵营。Spring大家都熟悉,企业应用里最流行的框架,不久前被VMWare收购,如今随着VMWare的崛起,其Cloud Foundry将Spring,Rails,Node.js和scala正式带入云端。企业应用飞入云里已指日可待!
于是花了点时间,将最新的Spring3.1(支持CloudFoundry平台)的源代码过了一遍,看看它如何在虚拟化的平台发挥作用的。
1. IoC如何工作?
Read more...
CloudFoundry框架介绍
1摘自: http://qing.weibo.com/2294942122/88ca09aa330004r8.html
Read more...
JavaScript 小结
0陆陆续续学javaScript很长时间,想想直接从Java/ActionScript或其它面向对象的语言转给来,还是需要一段时间的适应的。我所在的公司以前一直用Flex,不久的将来也会完全使用HTML5/JavaScript,现将基本的概念总结如下,以便将来培训之用。主要包括这些方面:
- Function
- Function Properties
- Call and Apply
- eval
- OOP
- Object Properties
- Class Definition and Object Creation
- Public/Private Scope
- Singleton
- Static
- Extension
- Mixin
1. Function
1.1 Function Properties
arguments.length
arguments.caller
function.length
arguments.callee
function a() {
arguments.length
}
1.2 call Read more...
Hadoop学习笔记(10) Hive简介
0
1 和传统数据库的比较
读时模式vs.写时模式
传统数据库是写时模式(schema on write),即数据在写入数据库时对模式进行检查。Hive在数据加载时不进行验证,而是在查询时进行,是读时模式(schema on Read more...
Hadoop学习笔记(9) Pig简介
这节总结Pig语言的方方面面。
Pig是一种探索大规模数据集的脚本语言。
pig是在HDFS和MapReduce之上的数据流处理语言,它将数据流处理翻译成多个map和reduce函数,提供更高层次的抽象将程序员从具体的编程中解放出来。
Pig包括两部分:用于描述数据流的语言,称为Pig Latin;和用于运行Pig Latin程序的执行环境。
Pig Latin程序有一系列的operation和transformation组成。每个操作或变换对输入进行数据处理,然后产生输出结果。这些操作整体上描述了一个数据流。Pig内部,这些变换操作被转换成一系列的MapReduce作业。
Pig不适合所有的数据处理任务,和MapReduce一样,它是为数据批处理而设计的。如果只想查询大数据集中的一小部分数据,pig的实现不会很好,因为它要扫描整个数据集或绝大部分。
1. Read more...
Hadoop学习笔记(7) MapReduce的特性
这章主要总结MapReduce的高级特性,包括计数器,数据集的排序和连接。
1. 计数器
计数器是一种收集作业统计信息的有效手段,由于质量控制或应用统计。计数器还可辅助诊断系统故障。
Hadoop为每个作业维护若干内置计数器,以描述该作业的各项指标。计数器由关联任务维护,并定期(3秒)传到tasktracker,再由tasktracker传给jobtracker(5秒,心跳)。一个任务的计数器值每次都是完整传输的,而非增量值。
MapReduce允许用户编写程序定义计数器,一般是由一个Java枚举(enum)类型定义。枚举类型的名称即计数器组名称,枚举类型的字段即计数器名称。计数器在作业实例级别是全局的,MapReduce框架会跨所有的map和reduce来统计这些计数器,并在作业结束时产生一个最终的结果。
enum Temperature Read more...