大家在使用软件时基本上都遇到过乱码的问题,这是因为字符的编码和解码方式不一致导致的。由于计算机只认二进制数据,因此程序在存储、处理、传输字符时,需要将字符转化成二进制数据。通俗来讲,编码就是将字符转化为二进制数据,解码就是将二进制数据转化为字符。
Java 8 vs Java 17 垃圾收集器
伴随 Java 版本的更新,垃圾收集器(GC,Garbage Collection)也在不断迭代优化。从经典的 Serial,到划时代的并发收集器 CMS、再到全新思路设计的 G1、以及最新的低延迟收集器 Shenandoah、ZGC。虽然垃圾收集器的技术在不断进步,但没有最好的收集器,只有更合适的收集器。
Java 8 vs Java 17 新特性
从 1995 年 JDK Beta 发布至今,Java 已迭代了 18 个大版本。其中 Java 8、11、17 为长期支持(LTS,Long-term support)的版本。 根据 JRebel 2022 年提供的报告,大部分人还在使用 Java 8,其次是 Java 11,但随着 Java 17(2021.09) 的发布,Java 将迎来新的格局。
数据压缩与霍夫曼编码
数据压缩能够实现是因为多数现实世界的数据都有冗余。无损数据压缩通常利用了统计冗余,这样就能更加简练地、但仍然完整地表示发送方的数据,如行程长度编码(Run-length encoding)、霍夫曼编码(Huffman coding)。而在很多情况下,数据会包含比必要的还多的信息。例如,一张分辨率过高的照片,其中的细节肉眼可能已无法识别。若舍弃这些人类无法察觉的细节,就可以用更小的数据量来提供与原始数据相差无几的感官体验,这属于有损压缩。