-
不写code的技术经理不是好经理😄
来美国6年了,基本上没有写过什么code。大多数时间就是做一些high level的 design,项目的协调,帮助解决客户问题和各种杂事。真的没有时间专心看技术,写code。 最近难得有机会,在没有打扰的情况下自己学一些东西,写一些东西,纯技术。还真的有一种欲罢不能的感觉。😂 挺好的,忽然觉得以前的那些时间是不是白白浪费了。。 作为技术经理,如果对于技术本身没有第一手的信息,特别是现在技术发展这么快的情况下,很多情况下,做出的决定,提出的方向可能就会落伍。如果组里面有很强的技术人员当tech lead还好一些,如果组里面都是年轻人,那这样的没有第一手经验的经理其实很难带出一个有效率的团队。 给自己加个油!
-
理想和现实的差距 – Redis的近似LRU
最近看一些算法题,各种时间复杂度,空间复杂度充斥脑海。O(N), O(N^2), O(NLogN)。这里拿LRU(Least Recently Used)算法来举一个例子算法和实际的差别。 这个是Leetcode里面的算法: https://leetcode.com/problems/lru-cache/. 没有兴趣的人其实也不用看,基本上就是设计一个LRU算法,保证读取和插入的时间复杂度都是O(N). 代码基本上也就100行左右,貌似很简单。但是如果看Redis的文档我们会发现这段话: https://redis.io/topics/lru-cache Redis LRU algorithm is not an exact implementation. This means that Redis is not able to pick the best candidate for eviction, that is, the access that was accessed the most in the past. Instead it will try to run an approximation of the LRU algorithm, by sampling a small number of keys, and evicting the one that is the best (with the oldest access time) among the sampled keys. 既然算法这么简单为什么Redis的默认实现不去做严格的LRU呢?其实原因很简单,为了节省空间。在传统的时间和空间复杂度里面,所有的非指数级的增长都被归纳成一个结果。比如说O(N) 和 O(2n),或者更夸张的O(100N)或者更多。这在实际中能是一样的?使用double的空间,花费double的时间,再怎么说也不一样的。
-
关于技术的学习。
最近在搭建这个网站的过程中,遇到了各种各样的问题。查阅了很多的网站。由于都是随机搜索,质量层次不齐。经常follow步骤以后还是没办法解决问题,折腾了很多时间。 忽然觉得如果有一个技术网站,如果能在提供技术文章的基础上,提供在线的技术支持,帮助解决问题,可以采用订阅是的服务,我觉得我会付费的。 是这看看能不能做起来。先共享一个刚下载的Baeldung的Spring的学习文档吧。其实去他们的网站也可以下载,只是需要订阅一下,我在这里共享一下,希望不会困扰到他们。 不知道有人需要翻译的么?留言让我知道。