MySQL字符集设置
MySQL 对字符集的支持可以细到四个层次:服务器(server)、数据库(database)、数据表(table)和连接(connection)。指定时还能落到一个库、一张表、一列该用什么字符集。 传统程序建库建表往往不配这么细,用的是默认值;默认不对,查询和入库就会乱码。 一、相关系统变量 • …
MySQL 对字符集的支持可以细到四个层次:服务器(server)、数据库(database)、数据表(table)和连接(connection)。指定时还能落到一个库、一张表、一列该用什么字符集。 传统程序建库建表往往不配这么细,用的是默认值;默认不对,查询和入库就会乱码。 一、相关系统变量 • …
计算机只认识 0 和 1。无论在内存还是外存,我们看到的文字、图片、视频,在机器里都是二进制。不同字符对应二进制的规则,就是字符编码;编码的集合称为字符集。 要准确处理各种文字,必须先编码。常见的有 ASCII、GB***、Unicode。 一、ASCII 编码 ASCII(American Sta…
通常说的数据库,就是数据的集合:磁盘上的一些文件,或内存里的一批数据。我们常说的 MySQL、SQL Server,其实是数据库管理系统,负责存储,并提供查询和更新。 MySQL 是开源的关系型数据库,支持 SQL、子查询、存储过程、触发器、视图、索引、事务、锁、外键约束和影像复制等。它和 Orac…
读文件时 read 读到末尾会返回 -1。但 Socket 通讯里从 InputStream 读数据,对端还没关流、暂时又没有数据时,read 会一直阻塞,只有关闭流才会返回 -1。 所以下面这种「读到 -1 才停」的写法,在 Socket 上很容易卡住: while ((len = in.read…
java.util.zip 包提供了对文件压缩和解压缩的处理类,它们继承自字节流 OutputStream 和 InputStream。 GZIPOutputStream 和 ZipOutputStream 可分别把数据压成 GZIP 和 Zip 格式;GZIPInputStream 和 ZipIn…
Java 从 JDK 1.5 才有枚举,和泛型一样是后来补上的特性。晚加的语法要向后兼容,编译器会帮源码做很多事(类型擦除、桥接方法、foreach、装箱拆箱),术语叫语法糖。枚举也走这条路:表面是 enum,底下是 java.lang.Enum 子类。 1.5 增加了抽象类 java.lang.E…
要理解 volatile 为什么能保证可见性,先看 Java 内存模型:变量在主内存,线程在工作内存里操作拷贝,线程之间不能直接读对方工作内存。 在此模型下会出现缓存一致性问题(两个线程对 i++ 最终得到 11 而不是 12)。并发编程要同时抓住原子性、可见性、有序性,再看 volatile 能做…
CAS(Compare and Swap)和 ConcurrentHashMap 经常绑在一起问:一个是硬件级的无锁更新,一个是并发 Map 怎么既线程安全又比整表锁更快。 JDK 5 之前同步几乎全靠 synchronized:竞争时上下文切换多、持锁会把别人挂起、还可能优先级倒置。volatil…