摘要:
在 Java 应用程序中,时间对象是使用地比较频繁的对象,比如,记录某一条数据的修改时间,用户的登录时间等应用场景。在传统的 Java 编程中,大部分的程序员都会选择使用 java.uti.Date 这个类型的类来表示时间(这个类可不是什么善类)。 在现代化互联网的使用场景中,由于前后端分离的原因, 阅读全文
摘要:
有时可能需要复制一个对象的属性到另一个对象,使用 Spring 的 BeanUtils 工具类可以很容易实现,但是这样复制的属性如果是对象的话,可能会导致不安全的共享,为此,可以通过为每个属性对象实例化对应的对象来达到这一目的 具体代码如下所示: import com.google.common.c 阅读全文
摘要:
构建者模式(即 Builder 模式),该设计模式的主要目的是将一个复杂对象的构建和它的构造表示分离,使得对象的构建更加简单和可读。 构建者模式的结构一般如下图所示: 各个组件的介绍如下: AbstractBuilder:一个为创建 Product 对象各个部件的抽象接口 ConcreateBuil 阅读全文
摘要:
本文主要是摘抄 APUE 中 IPC 部分的内容 IPC(Inter Process Communication)进程间通信,是指在进程之间进行通信的一种方式,本文将简要介绍一下在 Unix 中存在的一些 IPC 方式,以及如何选择合适的 IPC 管道 管道是 Unix 系统 IPC 的最古老的形式 阅读全文
摘要:
问题描述 在 Java 中,对于两个对象的对比,如果没有重写 equals 方法,那么将会默认使用 Object 默认的 equals 方法来比较两个对象。这种比较方式是通过比较两个对象的内存地址是否是一致的来进行判断的 然而,假设这么一种需求:比对两个对象的所有字段,同时使用某种形式记录不同的字段 阅读全文
摘要:
如果用标准分区在硬盘上创建了文件系统,为已有的文件系统添加额外的空间是一件十分痛苦的事情。只能在已有的硬盘上的可用空间范围内调整分区大小,如果硬盘空间不够的话,就只能换一个大容量的硬盘,然后手动将已有的文件系统移动到新的硬盘上。 这个时候可以通过将另外一个硬盘上的分区加入已有的文件系统,动态地添加存 阅读全文
摘要:
和一般的比较字符串的方式不同,Rabin-Karp 查找算法通过对子字符串进行 hash,如果在原有字符串中找到了 hash 值相同的字符串,那么继续比较是否是需要查找的字串,一般来讲,如果 hash 操作做的很好的话,那么一般一次匹配就是待查找的子串 基本思想 长度为 \(M\) 的字符串对应着一 阅读全文
摘要:
在分布式场景中,如何生成一个全局的唯一 ID ?由于是通过多台机器并行运算,因此一般的时间戳、UUID 都不是很可靠。为此,Twitter 提出了一种名为 “雪花算法” 的算法来生成分布式全局唯一 ID 的算法 算法介绍 “雪花算法” 生成的 ID 为 \(64\) 位整数,其中,前 \(41\) 阅读全文
摘要:
出现原因 如果需要从一个文件描述符中读取数据,然后将数据写入到另一个文件描述符时,可以按照如下的阻塞 IO : while ((n = read(STDIN_FILENO, buf, BUFFER_SIZE)) > 0) { if (write(STDOUT, buf, n) != n) { fpr 阅读全文
摘要:
简介 在 Unix 或者类 Unix 文件系统中,每个文件(或者目录,目录也被视为文件)都有自己的所属对象和一个与之相关的 Unix 用户组关联,可以通过设置对应的文件的权限标记指定对于所属用户、所属组以及其他用户的、读、写和可执行权限。如果通过组的方式对文件权限进行修改,那么将会使得当前组内的所有 阅读全文