心经

心经原文:
观自在菩萨,行深般若波罗蜜多时,照见五蕴皆空,渡一切苦厄。

舍利子!色不异空,空不异色;色即是空,空即是色;受想行识,亦复如是。

舍利子!是诸法空相,不生不灭,不垢不净,不增不减。

是故空中无色,无受想行识,无眼耳鼻舌身意,无色声香味触法,无眼界,乃至无意识界。

无无明,亦无无明尽,乃至无老死,亦无老死尽,无苦集灭道。无智亦无得。

以无所得故,菩提萨埵,依般若波罗蜜多故,心无罣碍,无罣碍故,无有恐怖, 远离颠倒梦想,究竟涅槃。

三世诸佛,依般若波罗蜜多故,得阿耨多罗三藐三菩提。

故知般若波罗蜜多,是大神咒,是大明咒,是无上咒,是无等等咒,能除一切苦,真实不虚。

故说般若波罗蜜多咒,即说咒曰︰揭諦揭諦,波罗揭諦,波罗僧揭諦,菩提娑婆呵。

Developer Weekly 14

从零开始写数据库:500行代码实现 LSM 数据库
从零开始写KV数据库:基于哈希索引
Java 日志框架冲突问题排查与总结
使用 Rust 构建分布式 Key-Value Store
Open source racing game developed by everyone willing
Flink教程
聊聊MyBatis缓存机制
Caching of MyBatis query results
Understanding LSM Trees: What Powers Write-Heavy Databases
You Complete Me
Magician | 异步非阻塞的网络协议解析包
CAP 定理解读
HTTP 安全标头快速参考
Java 堆外内存、零拷贝、直接内存以及针对于NIO中的FileChannel的思考
Redis高级客户端Lettuce详解
你真的了解Flink Kafka source吗?
Understanding Java Microbenchmark Harness or JMH Tool
Lessons Learned While Implementing a B+Tree
Pogreb – key-value store for read-heavy workloads
Replicate your Key Value Store across your network, with consistency, persistance and performance.
Hello World剧情分析
分布式哈希表 (DHT) 和 P2P 技术
IPFS白皮书 中文版
使用Apache Druid进行海量数据的存储与查询
实时统计分析系统-Apache Druid
异地多活paxos实现:Multi-Master-Paxos-3

龟虽寿

神龟虽寿,犹有竟时。螣蛇乘雾,终为土灰。老骥伏枥,志在千里。烈士暮年,壮心不已。盈缩之期,不但在天。养怡之福,可得永年。幸甚至哉,歌以咏志。

store ip ranges in Redis

store ip ranges in Redis

It depends if you consider your IP ranges can overlap or not. If not, the solution is quite simple:

      use a collection of hash to store providers data
      use a zset to index the max value of your ranges
      retrieve the (unique) range whose max value is greater than an IP
      check the the min value of this range is lower than the IP

Example:

Here are my providers. Each of them are identified with an id. Please note I could add more properties attached to each provider:

hmset providers:1 name P1 min 3232235786 max 3232235826
OK
hmset providers:2 name P3 min 1232235786 max 1232235826
OK
hmset providers:3 name P3 min 2232235786 max 2232235826
OK
hmset providers:4 name P4 min 4232235786 max 4232235826
OK

Each time a provider is added in the system, an index must be maintained (manually: this is Redis, not a relational database). Score is the max value, member is the id of the range.

zadd providers:index 3232235826 1 1232235826 2 2232235826 3 4232235826 4
(integer) 4
zrange providers:index 0 -1
1) "2"
2) "3"
3) "1"
4) "4"

Now to query the unique range corresponding to an IP address, you need 2 roundtrips:

zrangebyscore providers:index 3232235787 +inf LIMIT 0 1
1) "1"
hgetall providers:1
1) "name"
2) "P1"
3) "min"
4) "3232235786"
5) "max"
6) "3232235826"

Then the client program just has to check that your IP is greater or equal than the minimum address of the returned range.

Developer Weekly 12

This is strictly a violation of the TCP specification

每个程序员都应该知道的内存知识 (带你走读Ulrich Drepper的经典论文)

Introduction to Apache Flink for Spark Developers : Flink vs Spark

Flink 源码分析 — StreamExecutionEnvironment

An iterative algorithm to generate high quality triangulated images.

代码的马斯洛金字塔

(1)第一层:正确(Correct)

代码是否执行预期的工作?是否考虑了边缘情况?是否经过充分测试?是否有可维护性?是否有可接受的性能?

(2)第二层:安全(Secure)

代码是否存在漏洞?数据是否安全存储?个人识别信息(PII)是否得到正确处理?是否对用户的输入进行了全面的验证?

(3)第三层:可读(Readable)

代码是否易于阅读和理解?测试足够简洁吗?变量、函数、类的名称是否适当?使用领域模型是否可以清晰地映射现实世界,以减少认知负担?是否使用一致的编码风格约定?

(4)第四层:优雅(Elegant)

代码是否利用了众所周知的编程模式?能否更简单简洁地实现所需的功能?你会为编写这些代码感到兴奋吗?你为这些代码感到骄傲吗?

(5)第五层:利他主义(Altruist)

别人能否从这些代码学到东西?这些代码是否会激励其他工程师进行改进?它是否会让世界变成一个更好的地方?

程序员修炼之路

线程的中断(Lock与synchronized)

Go treemux + go-pg realworld example application

论语 <先进>

子路、曾皙、冉有、公西华侍坐。子曰:“以吾一日长乎尔,毋吾以也。居则曰:“不吾知也!’如或知尔,则何以哉?”子路率尔而对曰:“千乘之国,摄乎大国之间,加之以师旅,因之以饥馑;由也为之,比及三年,可使有勇,且知方也。”夫子哂之。“求!尔何如?”对曰:“方六七十,如五六十,求也为之,比及三年,可使足民。如其礼乐,以俟君子。”“赤!尔何如?”对曰:“非曰能之,愿学焉。宗庙之事,如会同,端章甫,愿为小相焉。”“点!尔何如?”鼓瑟希,铿尔,舍瑟而作。对曰:“异乎三子者之撰。”子曰:“何伤乎?亦各言其志也。”曰:“莫春者,春服既成。冠者五六人,童子六七人,浴乎沂,风乎舞雩,咏而归。”夫子喟然叹曰:“吾与点也!”三子者出,曾皙后。曾皙曰:“夫三子者之言何如?”子曰:“亦各言其志也已矣。”曰:“夫子何哂由也?”曰:“为国以礼,其言不让,是故哂之。”“唯求则非邦也与?”“安见方六七十如五六十而非邦也者?”“唯赤则非邦也与?”“宗庙会同,非诸侯而何?赤也为之小,孰能为之大?”

继续阅读“论语 < 先进>”