Ubuntu apt-get 自动选择最快镜像

2016年1月9日 1 条评论 2,084 人阅读    

由于学习原因,最近搞了个台式机。Windows 10 已经出来一年左右了,虽然现在用的少,但是 Windows 10 肯定是未来的发展趋势。所以,直接上了 Win10 。很奇怪,感觉各种问题。(因为我另外一台笔记本就一切正常。)很多想玩的东西,在 Windows 上搞起来各种麻烦。所以,Linux 是必须的啊。由于个人偏好,比较喜欢 Ubuntu 。使用 Ubuntu 的小伙伴们都知道,按照各种工具,一条 apt-get 自动下载、编译、安装,非常方便。

Ubuntu 镜像众多,仅仅国内的就有网易、搜狐、阿里以及中科大等多个镜像。有点无从下手,不知如何选择;或者就是使用 ping 来查看每个镜像的响应时间再做选择。但是,这种方法有点麻烦。昨天 阅读全文…

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

简评《The Well-Grounded Rubyist》

2015年9月29日 没有评论 460 人阅读    

由于Ray的推荐,《The Well-Grounded Rubyist》刚刚出版没多久就让在美国出差的朋友帮我带了一本原版回来。这是我买的第二本英文原版书了。(以前买过一本,这次一下子买了两本,另一本还没看,这本算是第二本吧,哈哈)(七考四级而不过的人,被逼着看英文原版书,我容易嘛?!O(∩_∩)O哈哈~

书买来,一直放着,拖到今年七八月份才开始看,花了 阅读全文…

在Mac OSX上通过Homebrew安装PostgreSQL

2015年9月22日 没有评论 1,517 人阅读    

最近玩一个 Rails 项目,项目中使用了 PostgreSQL 数据库,正好借此也了解一下 PostgreSQL 。

对于 Ubuntu 系统,阮一峰老师的文章已经非常详细地介绍了关于 PostgreSQL 的安装使用。但是,在 Mac 上有些细节却不是很适用。在上网找资料的时候,各种资料也是零零碎碎,查找起来极不方便。正好整理成文,分享出来,方便自己,也方便需要的朋友参考。

坑已经挖好。听口令:预备,跳……

Homebrew 安装

工欲善其事,必先利其器。D瓜哥准备用 Homebrew 安装 PostgreSQL。所以,我们先来介绍一下 Homebrew 。Homebrew 可以说是 Mac 上居家旅行之必备神器!上可以装软件,下可以一键更新,实乃方便至极!

这样的神器,安装也非常简单,这么娇艳欲滴,实在让人爱不释手啊:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

其实,本来不想加上 Homebrew 的安装了 阅读全文…

分类: 挨踢(IT), 数据库 标签:

简易Java(18):属性能否重写?为什么?

2015年1月25日 8 条评论 845 人阅读    

本文将给大家介绍面向对象编程中一个基本的概念–属性隐藏(Field Hiding)。

1、Java中,属性能否被覆盖?

来让我们看看下面的这个示例代码,它创建了两个子类实例:一个被赋值给子类引用,另外一个赋值给父类引用。

package com.diguage.books.simplejava.ar18;

/**
* 属性隐藏示例
* <p/>
* Coder:D瓜哥,http://www.diguage.com/
* <p/>
* Date: 2015-01-25 19:48
*/
class Super {
  String s = "Super";
}

class Sub extends Super {
  String s = "Sub";
}

public class FieldOverriding {
  public static void main(String[] args) {
    Sub c1 = new Sub();
    System.out.println(c1.s);

    Super c2 = new Sub();
    System.out.println(c2.s);
  }
}

输出是什么呢? 阅读全文…

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

简易Java(17):Java中的实例初始化器是什么?

2015年1月11日 1 条评论 535 人阅读    

在本文中,我们先用一个例子来展示什么是实例变量初始化器(instance variable initializer)、实例初始化器(instance initializer)和静态初始化器(static initializer)。然后,再解释一下实例初始化器的工作机制。

1、执行顺序

看下面这个类,你知道哪个先执行吗? 阅读全文…

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

Java垃圾回收(4):监控与分析

2014年11月30日 2 条评论 628 人阅读    

在本节,让我们来看一看Java垃圾回收的监控与分析。然后,使用一个工具,监控一个示例应用的垃圾回收过程。如果你是个新手,最好看一下本系列的前三篇文章。你可以从“Java垃圾回收入门”开始看。

Java垃圾回收的监控和分析工具

下面是几个可用的工具。每一个可用的工具都有自己的优点和不足。使用恰当的工具,以正确的方式开展分析,可以帮助我们提高应用的性能。在本文,我们主要使用Java VisualVM。

  • Java VisualVM
  • Naarad
  • GCViewer
  • IBM Pattern Modeling and Analysis Tool for Java Garbage Collector
  • HPjmeter
  • IBM Monitoring and Diagnostic Tools for Java – Garbage Collection and Memory
  • Visualizer
  • Verbose GC Analyzer 阅读全文…
分类: Java, 挨踢(IT) 标签: , ,

Java垃圾回收(3):常见的四种垃圾收集器

2014年11月23日 没有评论 1,579 人阅读    

本节我们将介绍几种可用的Java垃圾收集器。垃圾回收是一个自动进程,它把开发人员从内存的分配与回收的杂务中解放出来。本文是“Java垃圾回收系列”的第三篇。在上一篇,也就是第二篇中,我们了解了Java垃圾回收的工作原理,这节非常有意思,我推荐你看一看。在第一篇“Java垃圾回收入门”中,我们介绍了Java虚拟机架构,堆内存模型以及Java相关的一些术语。

Java有四种垃圾收集器:

  1. Serial Garbage Collector
  2. Parallel Garbage Collector
  3. CMS Garbage Collector
  4. G1 Garbage Collector

D瓜哥注

这是四种类型的垃圾收集器。具体到每一个实现,在Oracle提供的官方JDK中就有Serial Garbage Collector、ParNew Garbage Collector、Parallel Scavenge Garbage Collector、Serial Old Garbage Collector、Parallel Old Garbage Collector、CMS Garbage Collector、G1 Garbage Collector等七种垃圾收集器。以后有机会再专门写文章做详细介绍!

四种Java垃圾收集器工作流程对比

这四种垃圾收集器每一种都有自己的优点与不足。最重要的是, 阅读全文…

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

Java垃圾回收(2):工作原理

2014年11月16日 没有评论 810 人阅读    

本文将介绍Java垃圾回收的基础知识,同时将说明它的工作原理。同时,本文还是“Java垃圾回收系列”的第二篇文章。希望您已经阅读过该系列的第一篇文章,“Java垃圾回收入门”

Java垃圾回收是一个自动管理程序所用内存的进程。通过将内存的分配与回收交给Java虚拟机来自动完成,就可以将开发人员从这些繁琐易错的工作中解放出来。

垃圾回收的启动

作为一个自动化的进程,开发人员不需要在代码中显式地启动垃圾回收进程。System.gc()Runtime.gc()是申请垃圾收集器启动垃圾回收的勾子(hook)。

开发人员通过这种请求机制就有机会来请求启动垃圾回收,但是是否启动则由Java虚拟机自己决定。垃圾收集器可以选择拒绝这个请求,所以不保证请求到来之后就肯定进行垃圾回收。是否进行垃圾回收主要是根据堆内存中Eden内存的利用情况。Java虚拟机规范将这个选择权交给了实现,所以更详细的信息还要看具体的实现细节。

现在,我们知道了, 阅读全文…

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

简易Java(16):Java中的覆盖和重载

2014年11月16日 没有评论 288 人阅读    

1、定义

对于Java初学者来说,覆盖(Overriding)和重载(Overloading)是两个非常容易混淆的概念。

重载的情况是这样的,在同一个类中,有两个甚至更多的方面,他们名称相同,但是有不同的参数列表。

覆盖的意思是,有两个同名的方法,同时还有相同的参数列表,但是却有不同的实现。其中一个存在于父类中,另外一个在子类中。

2、覆盖 vs 重载

对于覆盖和重载有几个非常重要的事实需要注意:

  1. 真实的对象类型,而不是引用变量的类型,至于哪个覆盖方法会被使用是在运行时决定的;
  2. 引用类型在编译时决定那个重载方法被使用;
  3. 多态性取决于覆盖,而不是重载。

3、覆盖示例

这里有一个覆盖的示例。阅读代码,然后 阅读全文…

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

简易Java(15):Java中equals()hashCode()之间的联系

2014年11月14日 没有评论 353 人阅读    

Hash函数

Java的最基本的父类java.lang.Object中有两个非常重要的方法定义:

public boolean equals(Object obj)
public int hashCode()

实践证明,正确理解这两个方法非常重要,尤其是向Map中添加用户自定义的对象时。即便如此,甚至有些高级开发人员有时很很难说清楚它们到底应该怎么用。在这篇文章里,我将先展示几个常见的 阅读全文…

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