草庐IT

原来 GitHub 不仅能学代码,还有这些东西

我是风筝,公众号「古时的风筝」,专注于Java技术及周边生态。文章会收录在JavaNewBee中,更有Java后端知识图谱,从小白到大牛要走的路都在里面。大家好,我是风筝。今天介绍几个很有意思的github开源项目,看过之后就会发现,github果然深意暗藏。github作为一个若隐若现(有时墙有时不墙)的网站,对于程序员来说,再熟悉不过了,绝大多数时候,我们到上面都是为了学习高质量的源代码,或者一些实用、稳定的框架或者工具包。有同学说,那在github若隐期间怎么访问github呢,办法还是有很多的,但即便现在网络已经这么发达了,还是有一部分同学不知道,为了让各位能顺利打开我接下来介绍的这几

LRU 居然翻译成最近最少使用?真相原来是这样!(附力扣题解)

前言相信有很多同学和我一样,第一次碰到LRU(LeastRecentlyUsed)的这个解释「最近最少使用」都不知道是什么意思,用汤家凤老师的话来说:我真的感到匪夷所思啊!最近是表示时间,最少是表示频度,拆开来都知道,但是合在一起就不知道是什么意思了。经过一番搜索后,我发现这可能是国内一些专业名词的通病:翻译问题。甚至百度百科对LRU的解释也是这样:LRU是LeastRecentlyUsed的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t,当须淘汰一个页面时,选择现有页面中其t值最

LRU 居然翻译成最近最少使用?真相原来是这样!(附力扣题解)

前言相信有很多同学和我一样,第一次碰到LRU(LeastRecentlyUsed)的这个解释「最近最少使用」都不知道是什么意思,用汤家凤老师的话来说:我真的感到匪夷所思啊!最近是表示时间,最少是表示频度,拆开来都知道,但是合在一起就不知道是什么意思了。经过一番搜索后,我发现这可能是国内一些专业名词的通病:翻译问题。甚至百度百科对LRU的解释也是这样:LRU是LeastRecentlyUsed的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t,当须淘汰一个页面时,选择现有页面中其t值最

【Raspberry Pi / 树莓派】哦!原来这个也是多媒体计算机啊!!

CM4Media是一款基于 RaspberryPi/树莓派 ComputeModule4,由EDATEC设计的多媒体电脑。SPECIFICATIONS分类特点处理器BroadcomBCM2711quad-coreCortex-A72(ARMv8)64-bitSoC@1.5GHzH.265(HEVC)(upto4Kp60decode),H.264(upto1080p60decode,1080p30encode)OpenGLES3.1,Vulkan1.0内存1GB/2GB/4GB/8GBLPDDR4-3200SDRAM储存Onboard0GB/8GB/16GB/32GBeMMC1xmicroSDC

【Raspberry Pi / 树莓派】哦!原来这个也是多媒体计算机啊!!

CM4Media是一款基于 RaspberryPi/树莓派 ComputeModule4,由EDATEC设计的多媒体电脑。SPECIFICATIONS分类特点处理器BroadcomBCM2711quad-coreCortex-A72(ARMv8)64-bitSoC@1.5GHzH.265(HEVC)(upto4Kp60decode),H.264(upto1080p60decode,1080p30encode)OpenGLES3.1,Vulkan1.0内存1GB/2GB/4GB/8GBLPDDR4-3200SDRAM储存Onboard0GB/8GB/16GB/32GBeMMC1xmicroSDC

K8S原来如此简单(六)Pod调度

我们前面部署的pod调度取决于kube-scheduler,它会根据自己的算法,集群的状态来选择合适的node部署我们的pod。下面我们来看下如何来根据我们自己的要求,来影响pod的调度。定向node调度有时候我们想将pod调度到某一些node上,比如csharp开发的程序,调度到某一些node,java开发的程序调度到另一些node,这时候我们可以选择定向调度。定向调度需要用到我们前面说的label,具体做法就是将node打上指定的label,然后在定义pod/deployment的时候根据nodeselector指定nodenode1添加labelkubectllabelnodesk8s-

K8S原来如此简单(六)Pod调度

我们前面部署的pod调度取决于kube-scheduler,它会根据自己的算法,集群的状态来选择合适的node部署我们的pod。下面我们来看下如何来根据我们自己的要求,来影响pod的调度。定向node调度有时候我们想将pod调度到某一些node上,比如csharp开发的程序,调度到某一些node,java开发的程序调度到另一些node,这时候我们可以选择定向调度。定向调度需要用到我们前面说的label,具体做法就是将node打上指定的label,然后在定义pod/deployment的时候根据nodeselector指定nodenode1添加labelkubectllabelnodesk8s-

K8S原来如此简单(八)ServiceAccount+RBAC

ServiceAccountServiceAccount是给运行在Pod的程序使用的身份认证,Pod容器的进程需要访问APIServer时用的就是ServiceAccount账户。ServiceAccount仅局限它所在的namespace,每个namespace创建时都会自动创建一个defaultserviceaccount。创建Pod时,如果没有指定ServiceAccount,Pod则会使用defaultServiceAccount。 通过以下命令可以查看我们前面创建chesterns这个namespace下的serviceaccount与对应的secretkubectldescribe

K8S原来如此简单(八)ServiceAccount+RBAC

ServiceAccountServiceAccount是给运行在Pod的程序使用的身份认证,Pod容器的进程需要访问APIServer时用的就是ServiceAccount账户。ServiceAccount仅局限它所在的namespace,每个namespace创建时都会自动创建一个defaultserviceaccount。创建Pod时,如果没有指定ServiceAccount,Pod则会使用defaultServiceAccount。 通过以下命令可以查看我们前面创建chesterns这个namespace下的serviceaccount与对应的secretkubectldescribe

K8S原来如此简单(七)存储

emptyDir临时卷有些应用程序需要额外的存储,但并不关心数据在重启后仍然可用。例如,缓存服务经常受限于内存大小,将不常用的数据转移到比内存慢、但对总体性能的影响很小的存储中。再例如,有些应用程序需要以文件形式注入的只读数据,比如配置数据或密钥。临时卷就是为此类用例设计的。因为卷会遵从Pod的生命周期,与Pod一起创建和删除,所以停止和重新启动Pod时,不会受持久卷在何处可用的限制。 下面我们就通过一个临时卷,让一个pod中的两个容器实现文件共享。apiVersion:v1kind:Podmetadata:name:emptydirpodnamespace:chesternsspec:con