Java 中的 volatile

volatile 是轻量级的 synchronized,其在多处理器中保证了共享变量的可见性,即当一个线程修改一个共享变量时,另一个线程会读到这个修改的值。但 volatile 不能保证原子性(例如自增操作),详细的说明将会在下文进行展开。保证并发程序正确执行还需要做到有序性,满足以上三个原则,才能够正确的执行并发程序。而本文将对 volatile 关键字进行详细解释,结合具体例子的同时说明 volatile 关键字的使用场景。

Java 容器之 HashTable

前文对 JDK1.8 中的 HashMap 的在原理实现以及相关操作进行了说明,介绍了基于数组(Node)+链表(尾插)+红黑树的数据结构,以及resize()的过程。而本文将介绍与 HashMap 较为相似的HashTable,同样也是基于数组(Entry)+链表实现的,但HashTable是线程同步的(synchroinzed),在某些方面又有一些区别,下面将分别介绍。

KMP 算法

KMP 算法适用于求解字符串匹配的问题,网上有许多文章对它都有详细的解释,之前在学习数据结构的时候也对该算法有些了解,但一直没怎么总结。先将其进行回顾,并写下此文,以作备忘。

Java 容器之 HashMap

HapMap 中的 get 和 put 方法在 O(1) 的时间内即可完成,如此快速存取方式到底是怎么实现的?本文将对 HashMap 中的主要方法(get、put、resize)进行说明,对应的版本为 JDK 1.8。不过,为了更加详细的了解 HashMap 的优化过程,同时也会与 JDK 1.7 中的 HashMap 进行比较,从而对 HashMap 有一个较为全面的认识。

MySQL 的基本概念与使用

本文将介绍 MySQL(My Structured Query Language)数据库的基本概念与以及在日常开发中的使用,包括对数据的增删改查操作、子查询、联结表、组合查询、存储过程、游标、触发器、事务管理等知识的总结。

Java 中的对象与引用

更好的理解 Java 中的 对象引用 是面向对象技术的前提,本文旨在讨论如何理解它们的含义以及它们之间的关系。如有错误,还请指出。