1. Redis 相关
1.1 Redis的常用数据结构及底层实现
参考官方文档:https://redis.io/topics/data-types-intro
1.1.1 Redis Keys
Redis的Keys是二进制安全的,这个意味着你可以使用任意的二进制序列作为一个key,从像"foo"这样的字符串到一个JPEG文件的二进制内容,都是合法的,空字符串也是合法的key。
1.1.2 Redis常用数据结构
- Binary-safe strings (字符串)
- List: 基于linked list,可以存储字符串的列表,和插入的顺序保持一致。(列表)
- Sets: 保存无序的、唯一的字符串的集合 (无序集合)
- Sorted sets:保存有序的、唯一的字符串的集合(有序集合)
- Hashes,哈希结构,field和value都是字符串类型。
底层实现原理:
Sorted Set:通过包含了Hash Table和Skip List(跳表)的混合数据结构来实现。插入的时间复杂度O(log(N))。
1.2 Redis的持久化是怎么样实现的
1.3 Redis主从是怎么实现的
1.4 Redis主从是怎么同步的
2. MySQL相关
2.1 MySQL存储引擎
2.2 索引是什么?
2.3 B+树是什么?
2.4 分区partition是什么
3. Nginx相关
4. PHP相关
(1). 踩坑集锦:php浮点数
凡是涉及金额用浮点数的,PHP里计算一律用bcmath
要么就全部转成整数,计算完了再除以100。
php > echo intval("30.00" * 100);
3000
php > echo intval("38.00" * 100);
3800
php > echo intval("38.80" * 100);
3879
php > echo intval(bcmul("38.80", 100));
3880
php >
bcmath应该是最好的方法
(2). strtotime的坑
php > echo date("Y-m-d H:i:s", strtotime("-1 month", strtotime("2017-03-31")));
2017-03-03 00:00:00
php >
5. Golang相关
6. 消息队列
7. Web安全
7.1 SQL注入
7.2 XSS注入
7.3 CSRF
8. TCP/IP协议
9. HTTP协议
10. 操作系统内存管理,进程线程
11. Memcached
12. MongoDB
13. JavaScript jQuery React
14. Unicode字符编码校验汉字
这里是几个主要非英文语系字符范围(google上找到的):
2e80~33ffh:中日韩符号区。收容康熙字典部首、中日韩辅助部首、注音符号、日本假名、韩文音符,中日韩的符号、标点、带圈或带括符文数字、月份,以及日本的假名组合、单位、年号、月份、日期、时间等。
3400~4dffh:中日韩认同表意文字扩充a区,总计收容6,582个中日韩汉字。
4e00~9fffh:中日韩认同表意文字区,总计收容20,902个中日韩汉字。
a000~a4ffh:彝族文字区,收容中国南方彝族文字和字根。
ac00~d7ffh:韩文拼音组合字区,收容以韩文音符拼成的文字。
f900~faffh:中日韩兼容表意文字区,总计收容302个中日韩汉字。
fb00~fffdh:文字表现形式区,收容组合拉丁文字、希伯来文、阿拉伯文、中日韩直式标点、小符号、半角符号、全角符号等。
而关于中文的正则表达式, 应该是^[\u4E00-\u9FFF]+$, 和论坛里常被人提起的^[\u4E00-\u9FA5]+$很接近
需要注意的是论坛里说的^[\u4e00-\u9fa5]+$这是专门用于匹配简体中文的正则表达式, 实际上繁体字也在里面, 我用测试器测试了下'中華人民共和國', 也通过了, 当然, ^[\u4E00-\u9FFF]+$也是一样的结果
综上所述,用^[\u4E00-\u9FFF]+$来判定是否全部属于汉字。PHP代码为:
php > echo preg_match("/^[\x{4E00}-\x{9FFF}]+$/u", "中国", $matches);
1
php > echo preg_match("/^[\x{4E00}-\x{9FFF}]+$/u", "中国,", $matches);
0
php >