分类 Java 中的文章

Java的char类型和Unicode

最近注意到 Java 中char类型占用2个字节(16位长),而 Unicode 的编码范围是U+000000-U+10FFFF(21位长),两者之间有怎样的关系呢? Unicode简介 Unicode是一个字符集,它对世界上大部分的文字系统进行了整理、编码,为每一个字符而非字形定义唯一的整数,这个整数称为码点(Code Point)。 20世纪80年代,为了给全世界所有的文字字符统一编码,出现了两个标准化组织: 国际标准化组织(ISO),是于1984年创建ISO/IEC JTC1/SC2/WG2工作组。试图制定一份“通用字符集”(Universal Character Set,简称UCS),并最终制定了ISO 10646标准。 统一码联盟(Unicode Consortium),由Xerox、Apple等软件制造商于1988年组成,并且制定了Unicode 标准。 后来他们发现对方的存在,大家为着相同的目的工作。于是在 1991 年,他们开始合并双方的工作成果,并为创立一个单一编码表而协同工作。虽然实际上两者的字集编码相同,但实质上两者确实为两个不同的标准。Unicode 1.1 对应于 ISO 10646-1:1993,Unicode 3.0 对应于 ISO 10646-1:2000,Unicode 3.2 对应于 ISO 10646-2:2001,Unicode 4.0 对应于 ISO 10646:2003,Unicode 5.0 对应于 ISO 10646:2003 及附录 1–3。 Unicode 平面 当前的 Unicode 字符分为17组编排,每组称为一个平面(Plane),而每一个平面拥有65536(即$2^{16}$)个码点。然而当前只用了少数平面。在表示一个 Unicode 的字符时,通常会用“U+”然后紧接着一组十六进制的数字来表示这一个字符。 平面 始末字符值 中文名称 英文名称 0号平面 U+0000 - U+FFFF 基本多文种平面 Basic Multilingual Plane,简称BMP 1号平面 U+10000 - U+1FFFF 多文种补充平面 Supplementary Multilingual Plane,简称SMP 2号平面 U+20000 - U+2FFFF 表意文字补充平面 Supplementary Ideographic Plane,简称SIP 3号平面 U+30000 - U+3FFFF 表意文字第三平面 Tertiary Ideographic Plane,简称TIP 4号平面 至 13号平面 U+40000 - U+DFFFF (尚未使用) 14号平面 U+E0000 - U+EFFFF 特别用途补充平面 Supplementary Special-purpose Plane,简称SSP 15号平面 U+F0000 - U+FFFFF 保留作为私人使用区(A区) Private Use Area-A,简称PUA-A 16号平面 U+100000 - U+10FFFF 保留作为私人使用区(B区) Private Use Area-B,简称PUA-B UTF UTF是 Unicode/UCS Transformation Format 的缩写,是将 Unicode 码点映射到唯一字节序列的算法,根据映射方法的的不同,有 UTF-8、UTF-16 和 UTF-32 等具体的编码格式。……

阅读全文

敏感词检测

使用前缀树匹配的方法实现的敏感词检测工具类。原始的代码出自此处。 我在原始代码的基础上加了一些自己的修改,主要是去掉了@SuppressWarnings({ "rawtypes", "unchecked" })警告和修改最大匹配检测方式的实现。以下是完整代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 import java.……

阅读全文

一些Java实用代码片段

分布式id生成——雪花算法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 import java.……

阅读全文