强烈推荐十本好书

2014年11月10日 6 条评论 3,353 人阅读    

上周三(2014年11月5日)公司搞入职培训,所讲的一些东西和我关注的东西有点“不谋而合”,感觉很爽;周四蔡导(当然就是讲师了)把讲座的PPT群发到技术部邮件组里,参与讨论时,我就询问想推荐一些书,看大家感不感兴趣,结果不少人回应很“激烈”。到周五(2014年11月7日)在公司技术群里求推荐好书,又掀起来一波热潮。大家推荐了不少好书。中国向来是礼仪之邦,正所谓来而不往非礼也!D瓜哥也来推荐一些书。

上面是废话,下面开始转入正题。

推荐原则

从去年找工作,甚至再往前,从上大学开始,到现在为止,翻过不少书(好多没看完,姑且叫翻吧),运气还算不错,确实遇到一些不错的好书,值得反复阅读,细细品味。不过,一次太多,容易把人吓着,所以,暂且推荐十本吧。

另外,这次的介绍主要是面向公司内部同事,考虑到公司所用技术方向,也为了照顾大多数人,推荐的书籍大部分不限于某一语言。不过,因为本人几乎一直从事Java开发,所以,相对来说可能稍微侧重一些;另外,因为从来没有从事过PHP的开发(为了优化博客,折腾Wordpress不算),所以不推荐专门的PHP相关书籍。

最后一个,也是最重要的原则:D瓜哥看过、试过之后有一种“醍醐灌顶”的“顿悟”感。(当然,D瓜哥水平有限,所以“顿悟”的可能比较频繁。这个,牛人、大拿可以直接飞过去了。呵呵)

一、《大话设计模式 》

先说明一下,这本书的代码是用C#实现的,搞C#的人可以先高兴一下。

不过,代码都很浅显易懂,可以很方便地“迁移”到其他语言了。所有的技术人员都可以高兴一下了。哈哈

引用本书中的一句话:如果说数学是思维的体操,那么设计模式就是 阅读全文…

简易Java(14):ComparableComparator

2014年11月9日 没有评论 197 人阅读    

ComparableComparator是Java核心API提供的两个接口(interface)。从它们的名字就可以看出,他们用于比较对象的大小。但是,确切来说,它们到底是什么呢?以及它们直接有什么不同之处呢?接下来的两个例子来回答这个问题。这个简单的例子就是比较两种HDTV的尺寸。当阅读完下面的代码,你就知道如何使用ComparableComparator

1、Comparable

一个类实现Comparable接口,是为了可以让其自身的对象和其他对象进行比较。类本身必须实现这个接口,为的是可以和它自己的实例进行比较。要求实现的方法是compareTo()。下面的 阅读全文…

分类: Java, 挨踢(IT) 标签: ,

简易Java(13):Java中的null到底为何方神圣?

2014年11月3日 1 条评论 246 人阅读    

让我们从下面这行代码开始:

String x = null;

上面这句话到底做了什么?

在回答这个问题之前,我们需要先回顾一下什么是变量以及什么是变量值?一个常见的比喻是变量就类似一个箱子。就像你可以使用箱子盛放东西一样,你能用变量存放变量值。当你声明一个变量时,你就需要设置它的类型。

Java中主要分为两种数据类型:基本类型和引用类型。声明为基本类型的变量存储变量值;声明为引用类型的变量存储引用。在 阅读全文…

分类: Java, 挨踢(IT) 标签: ,

Java垃圾回收(1):入门

2014年10月29日 没有评论 592 人阅读    

在Java,内存空间的分配和回收都是有Java虚拟机的垃圾回收进程自动完成的。这点和C语言不同,在Java中,不需要开发人员专门垃圾回收相关的代码。这是使Java流行起来的众多原因之一,并且帮助开发人员写出了更好的Java应用。

接下来,将通过四篇文章来介绍Java垃圾回收的一些基础知识。

  1. Java垃圾回收入门
  2. Java垃圾回收的工作原理
  3. 常见的四种Java垃圾收集器
  4. Java垃圾回收的监控与分析

本文是该系列的第一篇文章。将介绍几个 阅读全文…

简易Java(12):如何高效检查一个数组中是否包含某个值?

2014年9月29日 没有评论 32,990 人阅读    

如何检查一个数组(未排序)中是否包含某个特定的值?在Java中,这是一个非常有用并又很常用的操作。同时,在StackOverflow中,有时一个得票非常高的问题。在得票比较高的几个回答中,时间复杂度差别也很大。在下面的例子中,D瓜哥将展示每个方法花费的时间。

1、不同的实现方式

1) 使用List

/**
 * Coder:D瓜哥,http://www.diguage.com/
 */

public static boolean useList(String[] arr, String targetValue) {
    return Arrays.asList(arr).contains(targetValue);
}

2) 使用 阅读全文…

分类: Java, 未分类 标签: , ,

MySQL远程访问设置终极解决方案

2014年8月28日 没有评论 2,664 人阅读    

数据库对于服务端开发人员来说,几乎就是左膀右臂。几乎每一个服务端开发人员都要和数据库打交道。而MySQL又以其开源免费,小巧玲珑,简单易用,功能强大占据中国数据库使用份额的半壁江山。从去年接触到Vagrant以来,Vagrant以其方便易用深深吸引了D瓜哥。为了尽可能地和生产环境保持尽可能的一致性,减少不必要的问题的发生,Vagrant+Ubuntu+MySQL几乎是绝配。

MySQL允许远程访问的设置

  1. 注释bind-address = 127.0.0.1

    >cd /etc/mysql
    >sudo vim my.cnf
    

    阅读全文…

简易Java(09):创建字符串应该用字面量还是构造函数?

2014年7月4日 没有评论 287 人阅读    

Java中,可以通过下面两个方法来创建一个字符串:

/**
 * Coder:D瓜哥,http://www.diguage.com/
 */

String x = "abc";
String y = new String("abc");

用双引号和用构造函数有什么区别呢? 阅读全文…

分类: Java, 挨踢(IT) 标签: ,

简易Java(11):细说Java中的lengthlength()

2014年7月3日 没有评论 228 人阅读    

首先,在开始正文之前,请你快速回答如下问题:

在不使用任何IDE自动补全的情况下,如何获取一个数组的长度?以及,如何获取一个字符串的长度?

这个问题,我问过初级和高级,两个不同层次的开发人员。他们都不能准确而自信地回答这个问题。当IDE提供方便的代码自动补全功能时,它也会带来“理解肤浅”的问题。在这篇文章中,D瓜哥将给大家介绍几个关于Java数组的关键概念。

上述问题的正确答案是: 阅读全文…

分类: Java, 挨踢(IT) 标签: ,

简易Java(10):Java字符串的“引用传递”

2014年5月27日 没有评论 415 人阅读    

前面有说明“图解Java字符串的不可变性”,后面有解释“为什么Java中的字符串是不可变的? ”。还有一篇与时俱进的substring()方法在JDK6和JDK7中的异同 ”。下面,上演第四篇“Java字符串的‘引用传递’”。

这也是一个Java中的一个经典问题。很多类似的问题在StackOverflow被提出。同样有很多不完整甚至不正确的回答。如果不深入思考,这问题很简单。但是,如果我们稍微深究一下,那么她却显得很“迷人”。

1、一段有趣而诡异的代码 阅读全文…

分类: Java, 挨踢(IT) 标签: , ,

简易Java(08):为什么Java中的字符串是不可变的?

2014年5月23日 没有评论 830 人阅读    

“图解Java字符串的不可变性”中,介绍了在Java中字符串是不可改变的。但是,大家有没有想过“为什么字符串是不可变的?”今天就来给大家解释一下这个问题。

通过substring()方法在JDK6和JDK7中的异同 ”这篇文章,让D瓜哥看到,对于字符串的处理也是与时俱进。所以,如果发现下文中如有已经过时之处,请及时指出。D瓜哥也会及时更正的。

这是面试中经常被问到的老问题了。在Java中,将字符串设计成不可变是又很多原因的。一个好的回答需要建立在 阅读全文…