你见过哪些有趣的代码注释?

开发是一项漫长且枯燥的过程,我看到过很多有趣的代码注释,有的让我会心一笑,有的甚至隐藏在源代码中。我们一起来见识这些大神级的作品。

1
#define true false
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
* │Esc│ │ F1│ F2│ F3│ F4│ │ F5│ F6│ F7│ F8│ │ F9│F10│F11│F12│ │P/S│S L│P/B│ ┌┐ ┌┐ ┌┐
* └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ └┘ └┘ └┘
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
* │~ `│! 1│@ 2│# 3│$ 4│% 5│^ 6│& 7│* 8│( 9│) 0│_ -│+ =│ BacSp │ │Ins│Hom│PUp│ │N L│ / │ * │ - │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │{ [│} ]│ | \ │ │Del│End│PDn│ │ 7 │ 8 │ 9 │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┤ + │
* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │: ;│" '│ Enter │ │ 4 │ 5 │ 6 │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ ├───┼───┼───┼───┤
* │ Shift │ Z │ X │ C │ V │ B │ N │ M │< ,│> .│? /│ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │
* ├─────┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ E││
* │ Ctrl│ │Alt │ Space │ Alt│ │ │Ctrl│ │ ← │ ↓ │ → │ │ 0 │ . │←─┘│
* └─────┴────┴────┴───────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
*/
1
2
3
4
5
6
7
8
9
10
11
12
/**
* You may think you know what the following code does.
* But you dont. Trust me.
* Fiddle with it, and youll spend many a sleepless
* night cursing the moment you thought youd be clever
* enough to "optimize" the code below.
* Now close this file and go play with something else.
*
* 你可能会认为你读得懂以下的代码。但是你不会懂的,相信我吧。
* 要是你尝试玩弄这段代码的话,你将会在无尽的通宵中不断地咒骂自己为什么会认为自己聪明到可以优化这段代码。
* 现在请关闭这个文件去玩点别的吧。
*/
1
2
3
4
/* C89/C99 say they're macros.  Make them happy.  */
#define stdin stdin
#define stdout stdout
#define stderr stderr

Read More
Share Comments

iOS中对时间的理解

经常出现的8小时

在代码中写到关于时间的问题时经常遇到一个惹人烦的8小时问题,这个就是因为我们是在东八区 ,而有时候后端返给我们的时间是零时区的时间,东八区比零时区要早8小时,比如现在东八区是中午十二点,零时区就是凌晨四点,那么我们就需要把零时区的时间转化为东八区的时间。
首先看一个例子,获取当前时间字符串:

1
2
3
4
5
6
7
//通过[NSDate date]返回的一定是零时区的时间NSDate *date = [NSDate date];
NSLog(@"date时间 = %@", date);
//如果没有规定formatter的时区,那么formatter默认的就是当前时区,比如现在在北京就是东八区,在东京就是东九区
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
//最结尾的Z表示的是时区,零时区表示+0000,东八区表示+0800[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
//使用formatter转换后的date字符串变成了当前时区的时间NSString *dateStr = [formatter stringFromDate:date];
NSLog(@"字符串时间 = %@", dateStr);

输出:

1
2
2018-05-31 14:43:07.011223+0800 TimeDemo[4674:167771] date时间 = 2018-05-31 06:43:07 +0000
2018-05-31 14:43:07.011777+0800 TimeDemo[4674:167771] 字符串时间 = 2018-05-31 14:43:07 +080

很重要的一点就是,[NSDate date]返回的是零时区的时间!返回的是零时区的时间!返回的是零时区的时间!

打印结果前面的时间是北京时间,为2018-05-31 14:43:07.011223,而通过[NSDate date]得到的时间是2018-05-31 06:43:07 +0000,后面的+0000就表示了这个时间是零时区的时间,这个时间对应的东八区的时间就是2018-05-31 14:43:07.011223 +0800了。这两个时间是同一个时间,只不过时区不一样。

Read More
Share Comments

Hello World

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Read More
Share Comments

HTTP中Get和Post的区别

HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。

1.根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。

  • 所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。
    • 注意:这里安全的含义仅仅是指是非修改信息。
Read More
Share Comments