Makefile 的多目录结构写法

因为最近迷上了 C 语言。所以开始进行的一些项目的编写都是采用的 C 语言。这么就会带来一个小的问题,就是 makefile 的写法问题。 比如一个目录结构是这样的: . ├── LICENSE ├── ReadMe.md ├── TODO.md ├── makefile ├── src │   ├── makefile │   └── … └── te…

如何阅读 C 语言的声明

众所周知,C 语言的一大难点就在于变量声明。 比如说如下的几个例子: char* const *(*next)(); char *(*c[10])(int **p); void (*signal(int, void(*)(int)))(int); 基本上每一个都是晦涩难懂,看了简直像杀人。但其实也是相对来会所比较简单的一个。如果熟悉编译原理,其实可以通过人脑编译器的手段来解决难懂问题。毕竟,代码也…

C 的假装 OOP 写法

之前微博上说 C 的一个好处就是没有什么是一个 void* 解决不了的,然后因为自己用 C 写一个小程序,遇到了一个问题,就是因为 C 是强类型,但是如果需要写一个相对通用的数据结构。这个稍微有点麻烦。 比如说,hashmap,我们常用的都是 <string, string> 的一个 map,于是,相对来说的话,hash 函数比较容易。但是,如果是需要实现 Java 那样的通用数据结构…

Android Webview 加载额外 CSS

这个需求也是挺好玩的。主要是因为女朋友用的一个 APP,是城市里面的一个实时公交的 APP。但是作为一个会点代码的人,一看到这么一个 APP,第一反应是,为什么这种粗制滥造的 APP 可以存活于世,而且还是政府单位发布的。 本着,吐槽一个东西,就要拿出一个比他更好的解决方案的思路,所以我就花了将近一个下午的时间。重新做了一个 APP 送给她。 其实,APP 的难度很低,主要是实现思路比较好玩。熟悉…

一场叫做研究生的游戏开始

9.1, 传统意义上,应该是开学的日子,因为是研究生,所以写一下期待下吧。确切的说,应该是 9.7 开学。 自从 4 月份辞职以来,一直是以自由身的身份在生活。一开始准备托福,但是,中期遇到了可能会相伴一生的人。所以在对之后的规划上出现了点变动。所以之后的日子都是更多的在训练自己的一些解决问题的思维能力。 不过这段时间的训练下来,总的来说还算是比较满意的。Codeforce 因为才打了两场,第一场…

吐槽 Markdown 的设计

之前一开始还是很喜欢 Markdown 的,相对来说比较的简单,从 office word 转到 mardown 的一段时间,适应了之后,写文章的速度就有了很大的提升。 但是,自从开始了编写 markdown-parser,一个 markdown 的解释器,就发现,markdown 的规范都是扯淡,并没有一个很好的官方规范性的文档和转义规范。 比如无顺序的列表,-,+,* 都可以作为前置表达符。但…

快速求出某数的所有约数

故事是这样的,有一场比赛题,本来应该是考察 DP 的,但是算法写出来之后,一值暴 TLE,我一开始以为是 C++ 的 map 是 log(n) 的复杂度,于是改成了 unorder_map 试了下,结果还是 TLE。最后花了很久定位到求约数的算法超时。 按照人惯性的思维,求一个数的约数,直接使用一个 for 就可以了。而且算法的复杂度是 O(n) 具体一点可以说是 O(sqrt(n)) 也是可以接…

字符串纠错

故这样的,之前在 Leetcode 遇到一道题:『Edit Distance』, 当时做的时候并没有太多的思考,原因也很简单,不知道这道题的算法什么时候可以用得到。 直到,最近在看搜索引擎部分的算法,在处理用户的拼写异常的时候,比如,当用户搜索 『苏州大雪』的时候,怎么能进行纠错为『苏州大学』。 亦或者,在进行爬虫数据筛选的时候,比如在 B 站进行动漫数据抓取的时候,有很多的 UP 主会对动漫的名…

搜索最近的店铺 or 找最多店铺的点

这两个问题,应该是电商网站或者说 O2O 业务中最常用的功能。在之前,我也想过该题的解决方法。 第一个问题最简单的方法就是,一个 for 遍历周围所有的数据。通过欧式距离的判断,进行从小打大的排序判断,然后推送结果给用户。但是,当商铺基数足够大的时候,似乎,每次的 O(N) 操作,都是一个不小的时间开销。于是,可以通过进行地区的划分进行优化。 比如在二维坐标系中,划分为 N * N 的正方形区域。…