【译】怎样开发一个高度可定制的产品

你可曾听过:“我真的很喜欢你的产品,除了一些小的细节点”?然后CIO(首席信息官)推出一个必须有的需求清单,这清单中的数百个需求点需要添加到你的了不起的产品中。你可曾听过或者甚至说过:“同志们,我们将签署一个高利润的合同,但是。。。”?然后客户期望的额外的功能变成了开发工程师的头痛点。

所以,尽管现在你的产品能满足顾客的需求,但怎样才能让你的产品远离顾客潜在的有风险的想法?怎样才能在已有无数加载项的情况下,维系一个产品技术设计的最高水平,来让其在特定的方式下起作用?这些为成熟的解决方案提供可靠且突出支持的基础性需求,将面临多少挑战?

在商业世界,产品定制是一种越来越可取的要求和一些[......]

全文阅读

javascript的apply()和call()

作为业务的前端开发,有时候看一些代码的时候碰到apply和call方法会觉得很纳闷,好好的一个函数执行,非要写成这样,看了网上的一些事例代码还是没真正理解其不得不用的场景。直到最近自己碰到一个不得不用apply方法的场景,才真正理解了apply和call的作用。

直接看代码:

在这段代码里面,我达到的目的是:通过传递worker对象的make方法的方式来让boss选择生产出那种产品,boss的chooseWorker方法的参数是make方法。我本来期望传给chooseWorker方法的参数如果是foodWorker的m[......]

全文阅读

【译】使用 Lombok 减少你的样板代码

Lomok是一个用来简化java代码开发的java库。这篇文章主要解决getters/setters、重写equals、hashCode、toString以及构造函数的编写问题。如果用普通的java编写方式,一定很繁琐。当你看到Lombok项目时,它会让你觉得一身轻松。

使用 Lombok 减少你的样板代码

1. 不用再写getters\setters方法了

比如下面的pojo类,用普通的方式写会是这样:

当写这些getters/setters方法时,我开始慢慢讨厌java了。

使用Lomok的方式来写会是这[......]

全文阅读

一点数据库访问优化的思考

最近碰到了老是数据库连接池爆满的情况,于是调研了下应用中的代码存在哪些问题,哪些地方可以优化,于是又了下面的一点思路,欢迎抛砖。

核心思路是:减少单页面请求数据库的sql数量,缩短单url请求数据库的时间。

平时开发时养成性能优化的思维模式能大大减少后期性能优化的成本,因为开发过程中,很多业务和实现细节了然于胸,如果此时就考虑性能优化,就能始终保持最大化整个应用的性能(当然前提是,如果你没那么急的话)。

数据库访问优化

数据库访问优化

&nb[......]

全文阅读

fastjson解析大文件时抛出java.lang.ArrayIndexOutOfBoundsException: -1

最近发现偶尔出现fastjson解析大文件时抛出java.lang.ArrayIndexOutOfBoundsException: -1异常。可以我是按照官方的中的实例代码来写的,如下的代码:

所以非常不解,我自己单独写代码解析json文件又没有问题,在应用跑了一段时间后,就突然出现这个问题。由于fastjson的代码没有深入阅读,而且异常还不是每次都能碰到,因此没有查到直接原因。但同事发现换个api来解析就不抛出异常了,因此在这里记录下,下次朋友类似的情况,也可以按照种方式来解决。代码这样改:
[crayon-59c23[......]

全文阅读

【译】编写自定义的Velocity指令

本文将使用Apache Velocity API来编写自己的行内指令和块指令。以实现truncate()为例,即实现一个velocity的展示工具方法,用来对长字符串做截断。

在velocity中有两种指令:行内指令和块指令。行内指令在模板中仅有一行vm代码,而块指令有一段代码块同时以#end标签结尾。如下面所示的,第一个为行内指令,第二个为块指令:

编写行指令

为了声明你自定义的指令,你需要在velocity配置文件(比如:velocity.pro[......]

全文阅读

优秀的IT技术网站收集

技术开发相关的网站很多,信息多得看不过来,很多优秀的技术网站和博客很难出现在搜索引擎的第一二页,而且很多好的原创文章都是英文的,干货实在是太多了,下面列举了一下:

1. jquery插件库

http://www.jq22.com/

2. spring框架官方文档

http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/

3. 一个不错的java文章网站

http://www.jayway.com/category/java/page/2/

4. java相关的比较有[......]

全文阅读

【译】JVM的默认参数

如果在META-INF/MANIFEST.MF文件里面设置了Main-Class属性,那么你就可以很方便的通过java -classpath myapp.jar Main命令甚至更简洁的java -jar myapp.jar命令,来启动java虚拟机。这些命令会使用默认的设置来启动JVM。

要想看到JVM执行时使用在使用哪些参数以及其各参数默认值,可以使用这个命令:

java -XX:+PrintFlagsFinal -version

如果这些参数还不够全,你可以打开几个开关:

java -XX:+Unlo[......]

全文阅读

[译]生产环境中异常堆栈丢失的解决方案

今天我发现生产环境日志中有许多NullPointerException 没有堆栈。我们发现,当一些异常抛出的足够多时,JIT编译器会优化掉异常堆栈。下面的代码可以重现异常堆栈丢失的问题。我们的代码跑在jdk 1.6上(小版本号不记得了)

用下面的命令运行上面代码,异常丢失的情况就出现了(异常栈的长度从2变为了0):

javac NpeThief.java && java -classpath . NpeThief
javac NpeThief.java && java[......]

全文阅读

ExceptionInInitializerError和NoClassDefFoundError和ClassNotFoundException的区别

ExceptionInInitializerError和NoClassDefFoundError

以前碰到几次NoClassDefFoundError异常,网上都说是因为静态语句块出现异常导致,但是我总是无法通过自己编写得简单事例代码重现(我自己写的代码总是抛出ExceptionInInitializerError,而不是NoClassDefFoundError),直到最近从其他文章看到了一段重现代码才了解了。先看下面可以抛出NoClassDefFoundError异常的代码:

可以看到,Bar和Foot两个写到一个文件F[......]

全文阅读