2014年6月 ’ 的文章存档

Java 8学习资料汇总

Java 8发布已经有一段时间,它被认为是Java 5发布以来最大的一次版本升级。Java 8提供的新特性主要集中在Java编译器、类库、开发工具以及JVM(Java虚拟机)等方面。其中,Lambda表达式、默认方法、并行API等都受到了开发者的追捧,社区上关于Java 8的学习资料如雨后春笋般出现。下面是一些优秀的学习资料汇总:

  1. Brian Goetz在Stack Overflow上的回答
    Brian是《Java并发编程实战》的作者之一,有20多年的软件咨询行业经验。Brian是JSR 335的带头者,他和他的专家团队的努力为Java 8的成功做出了重大贡献。下面是Brian在Stack Overflow上关于Java 8相关问题的一些精彩回答: 

  2. Baeldung的Java 8资料集锦
    Baeldung是一名软件开发工程师,热衷于Spring、REST、TDD等技术。他在自己的博客上总结了一些Java 8资料。地址如下:
    阅读全文

Python程序员的10个常见错误

Python简单、易学的语法可能会误导一些Python程序员(特别是那些刚接触这门语言的人们),可能会忽略某些细微之处和这门语言的强大之处。

考虑到这点,本文列出了“十大”甚至是高级的Python程序员都可能犯的,却又不容易发现的细微错误。

常见错误1:在函数参数中乱用表达式作为默认值

Python允许给一个函数的某个参数设置默认值以使该参数成为一个可选参数。尽管这是这门语言很棒的一个功能,但是这当这个默认值是可变对象mutable)时,那就有些麻烦了。例如,看下面这个Python函数定义:

>>> def foo(bar=[]):        # bar是可选参数,如果没有指明的话,默认值是[]
...    bar.append("baz")    # 但是这行可是有问题的,走着瞧…
...    return bar

 
阅读全文

在 Swift 中使用 CocoaPods

 

本文介绍如何在 Swift 项目中使用 CocoaPods 。如果你已经精通 Bridging Header 的方法,请直接跳到 “扩展 CocoaPods” 一节。

什么是 CocoaPods

CocoaPods is the dependency manager for Objective-C projects. It has thousands of libraries and can help you scale your projects elegantly. 1

从介绍看,它是主要给 Objective-C 项目用的,但是我们可以很容易地混合 Objective-C 和 Swift 到同个项目,从而利用大量的 CocoaPods 库和 Swift 漂亮舒服的语法。
阅读全文

ngxtop:在命令行实时监控 Nginx 的神器

Nginx网站服务器在生产环境中运行的时候需要进行实时监控。实际上,诸如Nagios, Zabbix, Munin 的网络监控软件是支持 Nginx 监控的。

如果你不需要以上软件提供的综合性报告或者长期数据统计功能,只是需要一种快速简便的办法去监控 Nginx 服务器的请求的话,我建议你采用一个叫 ngxtop 的命令行工具。

你马上就会发现 ngxtop 从界面和名称都借鉴了著名的top命令。ngxtop 是通过分析 Nginx 或者其他的日志文件,使用类似 top 命令的界面实时展示出来的。你可以说你知道的其他高端监控工具,但是在简洁这方面 ngxtop 无疑是最好的。简单就意味着不可替代。
阅读全文

kvm 镜像管理

# -*- coding: utf-8 -*-

import Check_Disk
import ConfigParser
import time
import sys

阅读全文

Jeff Atwood倾情推荐——程序员必读之书

a1

 

英文版:《Code Complete 2》
中文版:《代码大全(第二版)》
作者:Steve McConnell
译者:金戈  汤凌  陈硕  张菲
出版社:电子工业出版社
出版日期:2007 年8月
Jeff Atwood的推荐:Steve McConnell的这本书是软件开发领域里的《烹饪的乐趣》。如果你对这本书感兴趣,说明你热爱你现在的工作,你对你正在做的事情是认真的,并且你想不断地提升自己。Steve在这本书里指出,普通程序员每年所读的技术书籍不足一本。仅仅只需阅读这本书,你就有可能超越身边90%的程序员。这绝对是个好主意!
阅读全文

require.js 简洁入门

前言

提到require.js大多数人会说提到模块化开发,AMD等等,其实require.js并没有这么多复杂的概念,这里我就希望排除这些概念,从实用的角度来简单说一下require.js是干什么的,我们要怎么用它。

1.为什么要用require.js

大多数前端开发者都用过jquery,那么用jquery之前我们首先要把jquery加载进页面,然后在之后的js之中才可以使用$,这里面我们知道了两个道理,一个是我们不能把所有js代码都放到一个文件里,有些东西可以单独提出来成为一个模块,比如jquery。另外一个道理,一部分js是依赖另一部分js的,比如$依赖jquery文件的载入。其实require.js主要做的事情就是这两点。

当你的js项目足够大,足够复杂,依赖的库足够多,你完全需要这样一种工具去做这些js的管理,否则你的项目扩展性很差,结构很糟糕,要找到想修改的地方会很困难。
阅读全文

Web开发者职业生涯的11个阶段

Web开发者的职业生涯有许多斜坡,非常有趣。考虑这陡峭的学习曲线,你完全可以从中经历从沮丧到启发再到自以为的心态起伏。本文将会通过一些有趣的动态图来描述这其中的各个阶段。

1. 小白

noob-o

 

在职业生涯的早期,通常都不知道自己要做什么。就像离开水的鱼,每一行代码都是一个谜。Doctype? 嗯嗯?div又是虾米东西?第一个阶段是一个吓人的、可怕的但是令人兴奋的过程。是有多少可怕的语言啊,魂淡?

但是,你最大的优势也许就是你永远不知道你前面的坑有多深。学习HTML是往前迈出的一小步。
阅读全文

MySQL在大型网站的应用架构演变

可扩展性
架构的可扩展性往往和并发是息息相关,没有并发的增长,也就没有必要做高可扩展性的架构,这里对可扩展性进行简单介绍一下,
常用的扩展手段有以下两种:

  • Scale-up :  纵向扩展,通过替换为更好的机器和资源来实现伸缩,提升服务能力
  • Scale-out : 横向扩展,  通过加节点(机器)来实现伸缩,提升服务能力

对于互联网的高并发应用来说,无疑Scale out才是出路,通过纵向的买更高端的机器一直是我们所避讳的问题,也不是长久之计,
在scale out的理论下,可扩展性的理想状态是什么?

可扩展性的理想状态
一个服务,当面临更高的并发的时候,能够通过简单增加机器来提升服务支撑的并发度,
且增加机器过程中对线上服务无影响(no down time),这就是可扩展性的理想状态!
阅读全文

JavaScript Promise启示录

本篇,主要普及promise的用法。

一直以来,JavaScript处理异步都是以callback的方式,在前端开发领域callback机制几乎深入人心。在设计API的时候,不管是浏览器厂商还是SDK开发商亦或是各种类库的作者,基本上都已经遵循着callback的套路。

近几年随着JavaScript开发模式的逐渐成熟,CommonJS规范顺势而生,其中就包括提出了Promise规范,Promise完全改变了js异步编程的写法,让异步编程变得十分的易于理解。
阅读全文