0%

在实际开发场景中,我们需要导入数据库中的数据可能包含重复的行(row)。当然如果在建表时,对数据表中相应的字段进行限制的话,则有可能不会出现这样的问题。

接下来,我们谈一谈,如果数据库中已有重复的数据行,我们该如何把它们找出来,并将这些数据行删除。

Read more »

最近在看 『Refacting to Patterns』,结合之前看的 Test Driven-Practical TDD and Acceptance TDD for Java Developers 提到的测试驱动开发(TDD)。虽然早些时候,我已经有对一些设计模式有一定了解,但只有对创建型的设计模型有所应用,比如Singleton、Builder、Factory、AbstractFactory。而其他的行为型和结构型的设计模型,只有在阅读一些源代码的时候偶尔才有看到,如 Java 集合框架中使用的 Iterator 模式,然而自己却很少使用。

为了更好地执行 TDD 过程中的重构,以及看懂优秀项目的源代码,我觉得我有必要开始重新更深入地学习设计模式。

单例模式,即 Gof (Gangs of Four)设计模式中创建型(Creational)设计模式之一。用于限制类的实例化,它只允许当前 JVM 执行上下文中只能拥有限制类的一个实例。从定义来看,似乎它的实现应该比较简单,但是在实际实现时,它有许多需要注意的点。在 Java 中,光它实现方式现已有许多种。因此,本文将介绍单例模式的实现方法,简单分析每一种方法的优缺点,最后,再说明应用单例模式时可能遇到的问题以及相应解决办法。

Read more »

集合(Collection),顾名思义,是一组对象。当需要处理任何的一组对象的时候,我们不可避免地要与集合打交道。集合也存在于几乎所有编程语言中,因此 Java 也不例外,为了开发人员能够更高效地处理集合数据,Java 提供了一个集合框架 (Collections framework),它由一系列接口以及实现类组成,提供了不同类型的集合:List, Set, Map, Queue, Deque 等。

这些随时可用的集合类可以帮助解决许多非常常见的问题,帮助处理一组同构和异构对象。其中集合涉及的常见操作有添加(add),删除(delete),排序(sorting),搜索(searching)以及一些操作集合的较复杂的算法。Java 的集合框架为这些操作提供了透明化的支持。

Read more »

    不同与归并排序mergeSort,快排序不需要使用额外的数组来辅助进行排序,但是这并不意味着快排序就属于原地排序 (in-place)。

    快排序递归时需要使用栈空间,当执行递归函数调用时,需要将当前执行函数的状态压入线程栈中,递归调用完成后再一层层返回。快排序不属于原地排序,那么有没有方法进行优化呢?

Read more »

在 Java 中通过 new 关键字等其他方式在堆(heap)上创建对象是一个比较耗费资源的操作。 Java 在封装类(Wrapper classes)上使用内部缓存来使封装类的某些常用值使用更高效。

String 类一样,Java 中的封装类都是不可变的(immutable)。Java 中的封装类与 String 类一样同样提供了类似的缓存池机制。这其实也是一个普遍的操作,对于较昂贵的资源创建操作,使用缓存来处理在其他地方也非常常见,如数据库连接池、线程池等。

Read more »

了解JDK, JRE, JVM之间的区别JVM是如何工作的?什么是类加载器(class loaders), 解释器(interpreter)和及时编译器(JIT compilers)

Read more »

引入

gpg is the OpenPGP part of the GNU Privacy Guard (GnuPG). It is a tool to provide digital encryption and signing services using the OpenPGP standard.
gpg features: complete key management and all the bells and whistles you would expect from a full OpenPGP implementation.

GnuPG(GPG) 是 基于OpenPGP(由 RFC4880 定义,也被称为PGP)的一个完整的和免费的实现.我们可以使用GPG来对我们的数据和通信进行加密(encrypt)和签名(sign), 它具有通用的密钥管理系统,以及各种公钥目录的访问模块. 我们可以很容易地使用GPG提供的命令行工具(当前它还提供不同平台下的图形界面工具frontends,以及库文件libraries)与其他的应用进行结合.同时还对S/MIMESSH(Security Shell)提供支持.

Read more »