技术笔记
工程实践、系统设计、编程语言和技术原理的长期笔记。
-
RedisHttpSession 的设计与实现
技术笔记前言 [RedisHttpSession][1] 是我的一个 Java 开源项目,通过将 Session 存储在 Redis 中实现多服务器间共享 Session,同时这一过程是完全透明的。主要用于支持 RESTfuls API。下面我将对其核心类进行分析,阐述它的设计以及实现细节。 RedisHt...
-
三言两语:JVM 字节码执行实例分析
技术笔记前言 最近在看《Java 虚拟机规范》和《深入理解JVM虚拟机》,对于字节码的执行有了进一步的了解。字节码就像是汇编语言,是 JVM 的指令集。下面我们先对 JVM 执行引擎做一下简单介绍,然后根据实例分析 JVM 字节码的执行过程。包括: 1. for 循环字节码分析 2. try catch f...
-
【译】JVM 进行线程同步背后的原理
技术笔记本文翻译自[How the Java virtual machine performs thread synchronization][1],内容略有删改 前言 所有的 Java 程序都会被翻译为包含字节码的 class 文件,字节码是 JVM 的机器语言。这篇文章将阐述 JVM 是如何处理线程同步...
-
三言两语:SQL 连接(join)
技术笔记前言 本文将从连接的理论和语法讲起,结合具体的例子,详细分析 SQL 连接。 之前对数据库的连接操作似懂非懂,大概知道是什么东西,但是面试笔试的时候被虐成渣,讲不清连接到底是什么。吃一堑,长一智。这就是所谓的似懂非懂, 只是单纯的看书是没用的,只有亲自动手做实验才能彻底理解什么是连接。 连接类型与条...
-
Hiho 1289 403 Forbidden(微软编程题)
技术笔记题意 allow 1.2.3.4/30 deny 1.1.1.1 allow 127.0.0.1 allow 123.234.12.23/3 deny 0.0.0.0/0 输入 ip 按顺序匹配规则,优先匹配前面的规则,如果没有规则可以匹配则视为合法。注意:掩码为 0 的时候表示匹配所有 ip。 思...
-
Java String 对 null 对象的容错处理
技术笔记前言 最近在读《Thinking in Java》,看到这样一段话: Primitives that are fields in a class are automatically initialized to zero, as noted in the Everything Is an Objec...
-
访问 NULL 指针错误背后的原理
技术笔记前言 说到 NULL 指针大家都是谈之色变,第一印象就是 NullPointerException, Segmentation fault 之类的错误。NULL 指针大部分情况下会导致程序被终止。但是其实严格来说,访问空指针会产生不可预料的结果。只不过大部分情况是程序被终止。为什么呢?接下来让我们来...
-
对抽象类与接口的一点思考
技术笔记前言 之前写了一篇文章 [简洁代码之道(1):用多态替代条件语句][1],有人问实现多态的时候为什么用抽象类而不是接口。当时写文章的时候并没有想到这个问题。后来仔细想想,这的确是个值得探讨的问题。多态可以用抽象类或者接口实现,重点是应该用哪个?更大问题是,接口和抽象类有什么本质的区别?下面我们将讨论...
-
简洁代码之道(2):避免全局可变状态
技术笔记前言 本文是我看了 [谷歌简洁代码演讲系列][1] 中的 [全局状态与单例模式][2] 之后的总结。本文的主题是:避免全局可变状态。下面我们将围绕几个问题开展讨论: 什么是全局状态 如何设计好的单例模式 如何设计好的 API 全局状态 什么是全局状态 Talk is cheap, show me t...
-
简洁代码之道(1):用多态替代条件语句
技术笔记前言 本文是我看了 [谷歌简洁代码演讲系列][1] 中的 [多态和条件语句][2] 的总结。大部分的条件语句是可以用多态代替的,本文将围绕以下问题开展: 为什么要用多态替代条件语句 多态和条件语句的使用场景 如何用多态代替条件语句 在哪里决定要创建什么子类 什么情况下使用多态 为什么要用多态替代条件...