2021年最受程序员欢迎的开发工具TOP 100名单出炉!

作者 | 丁广辉       责编 | 张红月 出品 | CSDN(ID:CSDNnews) 工欲善其事,必先利其器。这句话放到开发者的世界里也是一样的,好的开发者也需要好的开发工具。世界上那么多开发工具,总有一些是更快捷,更好用的。StackShare是一个开发者工具及服务分享平台,成立于2013年,随着开发者们的不断加入,汇集了大量的优质工具。 在过去的2021年,StackShare统计了过千万用户分享数据,汇总了600K+的技术栈使用情况,超700万对各类工具的关注度,以及数百万的开发者的评论和投票。从而颁布了2021年StackShare第八届顶级工具奖,快来看看有没有你青睐的开发工具吧。 年度最佳新兴工具 1.FastAPI 高性能的简单,可快速编码,可用于生产的网络框架,链接:https://stackshare.io/fastapi 2.GitHub Copilot 在编辑器中获取对整行或整个函数的建议,链接:https://copilot.github.com/ 3.FiglamFigma 为团队设计的在线白板,链接:https://www.figma.com/figjam/ 4.Logtail 像查询数据库一样查询日记,链接:https://logtail.com/ 5.Coder 开发人员工作区平台,链接:https://coder.com/ 6.Charts.csscss 数据可视化框架,链接:https://chartscss.org/ 7.Counter 简单并且免费的网络分析,链接:https://counter.dev/ 8.React Query 在React和ReactNative应用程序中获取、缓存和更新数据,并且不涉及任何全局状态,链接:https://react-query.tanstack.com/ 9.vscode.dev 将VS Code引入浏览器,链接:https://vscode.dev/ 10.BookStack 一个开源的wiki平台,Confluence的替代品,链接:https://www.bookstackapp.com/ 11.ThunderClient VSCode的RestAPI客户端,轻量级的Postman替代方案,链接:https://www.thunderclient.com/ 12.Quod AI 更快的找到你需要的代码,链接:https://www.quod.ai/ 13.Dendron 在VS Code上的快速开源笔记,链接:https://wiki.dendron.so/ 14.Notion API 把概念和你每天使用的工具联系起来,链接:https://developers.notion.com/ 15.Github1s 1秒钟就能用VS Code读取GitHub代码,链接:https://github.com/conwnet/github1s 16.Ocean 容器的无服务器基础架构引擎,链接:https://spot.io/products/ocean/ 17.Magic 快速构建应用程序,可定制,无密码登录,链接:https://magic.link/… Continue reading 2021年最受程序员欢迎的开发工具TOP 100名单出炉!

内存随机也比顺序访问慢,带你深入理解内存IO过程

点击上方蓝色小字,关注“涛哥聊Python” 重磅干货,第一时间送达 来源:开发内功修炼 平时大家都知道内存访问很快,今天来让我们来思考两个问题: 问题1: 内存访问一次延时到底是多少?你是否会进行大概的估算? 例如笔者的内存条的Speed显示是1066MHz,那是否可以推算出内存IO延时是1s/1066MHz=0.93ns? 这种算法大错特错。 问题2: 内存存在随机IO比顺序IO慢的问题吗?我们都知道磁盘的随机IO要比顺序IO慢的多(操作系统底层还专门实现了电梯调度算法来缓解这个问题),那么内存的随机IO会比顺序IO慢吗? 要想彻底弄明白以上两个问题,我想我们得从内存IO的物理过程中来寻找答案。 1 先给你讲个图书管理员的故事 在开始介绍枯燥的内存工作原理之前。我想先给你讲一个故事,并带你去认识一个人,图书馆的管理员。 在我们的这个故事中,你是故事的主角。你有一所房子,房子里有一个仆人,他每天帮你处理各种各样的图书数据。但是北京房价太贵,所以你的这个房子很小,只能放的下64本书。你家的马路对面,就是北京图书馆(你家房子虽然小但是地段还不错),你所需要的所有的图书在那里都可以找到。图书馆有个管理员,他负责帮你把你想要的书找出来。 图1 图书管理员的故事 好接下来,故事开始进行! 场景1: 你发现你需要编号为0的书的计算结果,你的仆人穿过马路告诉了图书管理员,告诉他请帮我把第0-63本书取出来。图书管理员帮你在电脑前查得该书在二楼。于是他,花了点时间坐电梯到了二楼。等到了二楼,他又花了点时间帮你找了出来。然后你的仆人抱着64本书放到了客厅,拿起第0本书帮你处理了起来。 场景2: 你发现你需要编号为1的书的计算结果,告诉你的仆人。你的仆人直接从客厅拿出来就可以处理了,这次你等的时间最短。 场景3: 你发现需要编号为65的书,你又告诉你的仆人。你的仆人穿过马路又去找了图书管理员。图书管理员还在二楼呢,听说这次需要65-127,这次他不用再花时间找楼层了。只是花时间找书就可以了。你的仆人把65-127的书放到了客厅(以前的0-63就都扔了),并帮你开始处理起65号书来。 场景4: 你发现你需要编号为10000的书,你告诉了你的仆人。你的仆人穿过马路去图书馆,找到了管理员。这次管理员查得你需要的书是在10楼,他得花点时间坐电梯过去。去了之后,他又得花点时间帮你找出来。 这四个场景里,我觉得你一定发现了不同情形下耗时的差异。 场景1和场景4花费的时间最多。因为图书管理员需要花时间坐电梯找楼层,需要花时间在楼内找书。 场景3次之,因为图书管理员直接就在楼层内,只需要花时间在楼内找书既可 场景2最快,因为只需要仆人帮你从客厅拿过来就好,连马路都不需要过。 之所以编造这么一个例子,是因为内存的工作方式和它太像了。接下来我们进入内存的实际分析。 2 内存物理结构 在《带你理解内存对齐最底层原理》中我们了解了内存颗粒的物理构造以及IO过程,今天我们再来复习一下。 内存是由chip构成。每个chip内部,是由8个bank组成的。其构造如下图: 图2 内存颗粒chip内部结构 而每一个bank是一个二维平面上的矩阵,前面文章中我们说到过。矩阵中每一个元素中都是保存了1个字节,也就是8个bit。 图3 bank内部物理结构 每当CPU向内存请求数据的时候,内存芯片总是8个bank并行一起工作。每个bank在定位到行地址后,把对应的行copy到row buffer。再根据列地址把对应的元素中的数据取出来,8个bank把数据拼接一下,一个64位宽的数据就可以返回给CPU了。 图4 一次内存IO的过程示意 根据上面几张图我们可以大致了解内存的IO过程,在这个过程中每一步操作之间都有一些延迟,让我们来继续了解这些延迟。 3 内存IO延迟 在《从DDR发展到DDR4,内存核心频率指标其实基本上就没太大的进步》里我们提到内存的延迟很大程度是受核心频率制约的,你也应该记得我们提到了内存延迟一般是通过CL-tRCD-tRP-tRAS四个参数来标识的。我们今天来详细理解一下这四个参数的含义: CL(Column Address Latency):发送一个列地址到内存与数据开始响应之间的周期数 tRCD(Row Address to Column Address Delay):打开一行内存并访问其中的列所需的最小时钟周期数… Continue reading 内存随机也比顺序访问慢,带你深入理解内存IO过程