如何高效地工作

0

http://www.inc.com/ilya-pozin/7-things-highly-productive-people-do.html

Here are his tips for staying productive:

  1. 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.
  2. 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如此描述:

Read more...

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...

Go to Top