首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

什么是好代码,Linux大神来告诉你

我是架构精进之路,点击上方“关注”,坚持每天为你分享技术干货,私信我回复“01”,送你一份程序员成长进阶大礼包。 ? 在工作中经常有同学在讨论,到底什么是好代码?...记得某一期的TED邀请了 Linus,里面讲到了他个人对生活的品味,以及为啥有 Linux 等等。其中Linus 提到了对 “好代码”的一些看法,一起整理分享给大家。 1....Linus Torvalds 是Linux内核的缔造者,22岁他还在上大学的时候,就把Linux内核写出来了, 在他购买IBM PC的时候,第一想法是为这个PC写一个操作系统,而不是像普通人一样地去装这个系统装那个软件...Linux 内核基本上全部是C语言实现的,底层的/boot由汇编实现,大量的移位运算,按位运算,定点移位运算,速度极快!...Linus Torvalds两次改变了技术,第一次是Linux内核,它帮助互联网的发展;第二次是Git,全球开发者使用的源代码管理系统。

1.1K30

什么是“好”的平台工程?

但热炒的背后是什么? 什么是平台工程? 平台工程方法补充了 DevOps。该“平台”是一个内部环境,创建为开发人员构建和运行软件(例如应用程序、工具和工作流)的空间,且该环境安全且合规。...这些成本最常见的原因是开发人员为每个项目(甚至项目中的各个测试用例)启动单独的环境。另一个好处是,由于能够自动化在统一平台中工作的操作流程,因此能够大规模工作的可能性增加了。...解决此问题的办法是让组织构建尽可能精简的平台。平台工程团队不应从头开始构建;平台应构建在其他平台之上。...在此模型中,每个组织的平台都是定制构建的,但它位于现有、受支持、可购买的工具之上。通过这种方法,组织可以摆脱构建与购买的两难境地,并专注于微调其平台以满足其组织的需求。 它要成为常态,需要发生什么?...如果没有组织中每位开发人员的全力支持以及高级团队成员的支持,企业将无法成功实施平台工程。 为什么开发人员应该关心? 对于大型软件工程组织来说,拥有庞大而复杂的技术堆栈很容易。

12510
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    什么是好的R包

    本文是本学期第一篇,聊一聊什么是好的R包。这个问题源于年前一个同学,她在学习R语言,然后拿着一张总结的一些R包的图片问我:还有没有更好的包?当时就把我问蒙了,问她什么是更好的包?...她说是新更新的或者被大家所公认的包。我说你发的图里面的都是啊。。。然后就结束了对话。 ? 就是这张图 其实在她问我之前我从来也没想过什么算是“好”的包。...那么什么是好的R包呢,对于我们这些只需要用R来做生信分析的人来说,如果功力没有那么深厚,看不懂R包的源代码,确实需要找到一些普遍都在使用且坚持更新的包,不仅仅不容易出错,而且网上这些包的学习资料也更多。...其实每个月生信类的杂志都会出很多新的R包的文章,但是大部分都没什么人用。能在网上留下痕迹的都是经过大家检验的。...乱七八糟说了那么多,总结起来有以下几点:想要实现某种功能,需要科学上网,搜索别人之前造好的轮子,你能想到的大概率世界上已经有其他人做到了;多看包和函数的说明文档,里面有很多相关功能的其他函数及包的信息;

    1.2K31

    什么是好的错误消息?

    错误信息是我们在线日常生活的一部分。每次服务器故障或没有网络,或忘记在表格中添加一些信息,我们就会收到错误信息。"出错了" 是常见的做尘。但是什么出错了?发生了什么?...而且,最重要的是,我要怎么做才能修复它? 图片 那怎样写才是一个好的提示呢? 在介绍好的提示之前,我们先来看一下什么是不好的错误提示。...例如:你不能获取我的数据?我的凭证被拒绝了? 这些专业术语对用户来说并不重要,他们只想知道什么地方出了问题,如何解决。  Passing the blame: 甩锅:比如「无法连接到三方服务」。...好的错误提示 图片 Say what happened and why: 说明出错的原因:让用户清楚的知道发生错误的原因,可以通过视觉和文字的结合来完成。解释用户为什么会出现这个错误。...即使是技术原因,也要说明是我们的原因,而不是用户操作错误。比如:「由于技术上的原因,暂时无法连接到你的账户」。 Provide reassurance 提供保证:比如「你的修改已被保存到草稿」。

    1.6K30

    什么是好的编程语言?

    对于什么是好的编程语言,他发表了一篇文章分享了自己的观点。以下是他的全文: 这篇文章改编自我在 Cygni 科技峰会上的一次演讲。...那么程序语言的选择有多重要呢?有没有一种语言可以被认为是完美的? 什么是好的语言?...在学术界,关于什么是一门好语言的话题似乎相当平静,但 Tony Hoare 在 1973 年发表了一个有趣的主题演讲,名为「Hints on Programming Language design」。...我认为这听起来是一个很好的方法,尽管我还想补充一点,编程在某种程度上也应该很有趣。 随后,Tony Hoare 提出了一些好的编程语言应该具备的特性: 最重要的是简单性。...Forth 玩起来很有趣,但没什么用。我记得最清楚的是,几乎没有什么是预先定义的,你在某种程度上定义了你自己的语言。

    2.7K20

    什么是好的测试用例

    关于测试用例的话题,我之前已经写了 12 篇相关文章了 今天想说说「什么是好的测试用例」。...这个话题的争议很多,每个人的理解千差万别,比如我用搜索引擎搜索关键词「什么是好的测试用例」,百度返回 1960 万条结果,Google 返回 574 万条结果。...答复一(百度经验:https://jingyan.baidu.com/article/aa6a2c14ae7ff20d4c19c4b7.html): 1、好的测试用例应该是容易发现软件的错误(或者是能够发现以往还没有发现过的软件错误...); 2、好的测试用例要有重复性; 3、好的测试用例必须清晰地定义一个或者多个期望的结果以及测试通过和失败的标准; 4、好的测试用例是没有冗余; 5、好的测试用例能覆盖更多的测试需求 答复二(百度知道...当然,至于这个用例全集是自动化用例,还是手工用例,还是其他的方式并没有特殊要求,需要的是有这个一个集合,在需要的时候可以用上,并且能保证执行后达到的效果。

    1.2K30

    什么是好的程序员?

    C语言杂谈 什么是好的c/c++程序员? c/c++程序员就应该有c/c++程序员修养 什么是好的c/c++程序员?是不是懂得很多技术细节?还是懂底层编程?还是编程速度比较快?我觉得都不是。...对于一些技术细节来说和底层的技术,只要看帮助,查资料就能找到,对于速度快,只要编得多也就熟能生巧了。 我认为好的c/c++程序员应该有以下几方面的素质: 1、有专研精神,勤学善问、举一反三。...我看过许多程序,没有注释,没有缩进,胡乱命名的变量名,等等,等等,我把这种人统称为没有修养的程序,这种程序员,是在做创造性的工作吗?...有句话叫“字如其人”,我想从程序上也能看出一个程序员的优劣。因为,程序是程序员的作品,作品的好坏关系到程序员的声誉和素质。而“修养”好的程序员一定能做出好的程序和软件。...有个成语叫“独具匠心”,意思是做什么都要做得很专业,很用心,如果你要做一个“匠”,也就是造诣高深的人,那么,从一件很简单的作品上就能看出你有没有“匠”的特性,我觉得做一个程序员不难,但要做一个“程序匠”

    866100

    什么样的代码是好代码?

    关于什么是好代码,软件行业烂大街的名词一大堆,什么高内聚、低耦合、可复用、可扩展、健壮性等等(作者【CoderBaby】)。...一匹跑得快(运行速度快),少生病(健壮),可以驮载各类货物(可扩展),容易辨识(容易看懂),病好治(bug好发现),高大英俊的千里汗血马是也 ?...什么是好代码,不好定义,但是关于什么是代码里的"坏味道",比较容易搞清楚。...函数名能让人望名知义,看名字就知道函数的功能是啥,以至于几乎不需要多少comments最好 通常DAO层函数的命令规范是:“操作+对象+通过+啥”,如:updateUserById, insertQuarter...不知道Java社区为什么不太关注反射耗时的问题,以前写C#都会谨慎使用,C#社区有专门讨论反射优化。

    1.4K60

    【睡前碎语】什么是好的技术

    头条写的是安全,写完有点意犹未尽。想就着话题聊,不过这里又写明了叫机器学习,一咬牙一跺脚,聊一个大一点的话题。 什么是好的技术。 这是个没有标准答案的话题,甚至可能不是一个技术的话题。...操作系统安全也是我的研究内容之一,单从软件工程的角度看,早期的Android有很多一言难尽的地方,而Windows是远要成熟得多。 那为什么现在是Win11原生支持Android,而不是反过来呢?...这当然也不能说错,毕竟现在微软一个大的战略方向就是拥抱开源,不过再之前Windows在桌面端有着吊打Linux的漫长历史,而且一直把闭源保证质量作为成功的钥匙,很难说这是最后决定性的因素。...而且,很多人容易忽略的是:不同的分布情况,分布也是不同的。也就是说,某些数据分布出现的概率要远比其它大的多。 这就是我对什么是好的技术的回答。 最后,说一点安全方面的东西。...如果能,那“什么是好的技术”就很好回答了:符合未来发展方向的技术当然就是好的技术。不过,需要首先回答另一个问题: 业界下一个“爆点”在哪里? 这是个技术问题,又不是个技术问题。

    45410

    什么样的代码是好代码?

    关于什么是好代码,软件行业烂大街的名词一大堆,什么高内聚、低耦合、可复用、可扩展、健壮性等等。...一匹跑得快(运行速度快),少生病(健壮),可以驮载各类货物(可扩展),容易辨识(容易看懂),病好治(bug好发现),高大英俊的千里汗血马是也 坏味道 什么是好代码,不好定义,但是关于什么是代码里的"坏味道...",比较容易搞清楚,避免代码里的“坏味道",离好的代码就不远了,坏味道一二三及推荐做法: 代码重复 函数太长 如果太长(一般不宜超过200行,但不绝对),你自己都不太容易读懂,请不要犹豫,拆成小函数吧。...函数名能让人望名知义,看名字就知道函数的功能是啥,以至于几乎不需要多少comments最好 通常DAO层函数的命令规范是:操作+对象+通过+啥,如:updateUserById, insertQuarter...不知道Java社区为什么不太关注反射耗时的问题,以前写C#都会谨慎使用,C#社区有专门的讨论 基本类型优于装箱基本类型 基本类型更快,更省空间。

    1.3K20

    什么样的模型是好的模型?

    文章作者:途索 阿里巴巴 算法专家 内容来源:《数据分析通识》 导读:什么样的模型是好的模型?相信这是每一个数据分析师和大数据AI算法工程师都曾经默默思考过的问题。...可见,模型是现实世界的浓缩和模仿,一个好的模型,就一定是一个可以以尽可能低的成本,同时尽可能真实地反映客观世界概况的模型。...一个好的模型,应该是在一定的数据规模和数据维度的条件下,可以最接近上界的映射反应。 2. 好的模型,是一个可以反映真实业务关系的模型。 靠近数据与特征确定的上界,主要依赖模型自身通过参数的调节能力。...例如,在SVM模型中,我们会认为不同分类之间的分类超平面应该距两个分类的支持向量间的距离是相等的并且是最大的。但是为什么?这是因为我们认为两个分类间的间隔就应该如此,这是在“业务”上带入的假设。...此时参与者自我感觉良好,想知道自己身体状态不佳是为什么,表现在哪里。此时,如果模型可解释性不强,就得不到相应的衍生结论。 模型的可解释性同时也可以为接下来业务的提升与改进提供非常有意义的指导与借鉴。

    1.8K31

    好技能 | Linux中线程是如何创建的

    pthread_create 不是一个系统调用,是 Glibc 库的一个函数,所以我们还要去 Glibc 里面去找线索。首先处理的是线程的属性参数。例如前面写程序的时候,我们设置的线程栈大小。...其实线程栈是在进程的堆里面创建的。...这里的 specific 是用于存放 Thread Specific Data 的,也即属于线程的全局变量;将这个线程栈放到 stack_used 链表中,其实管理线程栈总共有两个链表,一个是 stack_used...,也就是这个栈正被使用;另一个是 stack_cache,就是上面说的,一旦线程结束,先缓存起来,不释放,等有其他的线程创建的时候,给其他的线程用。...,当前用户态的栈是指向整个进程的栈,栈顶指针也是指向进程的栈,指令指针也是指向进程的主线程的代码。

    10110

    Linux是信仰,Mac和Windows的Wsl都是好的Linux

    对于程序员而言,Linux是最适合做开发的系统,命令行工具强大,各种开发环境一行命令搞定。...这里要表扬一下网易云音乐,和百度网盘,他们的的Linux版本有PC版80%的功能。 游戏方面,Linux系统虽然可以一键安装Steam,但可玩的游戏很少,腾讯游戏也是全线不支持Linux。...Mac是最好的Linux,Wsl是最好的Linux,只有Linux做不成最好的Linux,理论上讲,Linux是最适合程序员的操作系统稳健,高效,坑少;但每个程序员又不止程序员一种角色, 程序员也可能是个视频剪辑爱好者...,是个摄影师,是一个3A游戏爱好者,此刻,纯Linux系统就完全不够用了,Windows和MacOS反而成了更好但选择,MacOS有Linux的特性,Windows支持WSL直接运行Linux,并以局域网虚拟机的形式直接挂载到...与我个人而言,Linux依然是信仰,Linux的所有发行版我都愿意尝试, 因为运行MacOS要购买昂贵的硬件,Windows的各种强制更新带来的奇妙Bug让你欲哭无泪,Linux不会欺骗你,一切皆是文件

    3.3K20

    前端-在 css 中什么是好的注释?

    所以最好的方式是让代码自说明,如此,按照代码逻辑,程序员和程序获取到的信息是一致的。...先从答案显然的开始吧,然后一步步深入到不那么好判断的。...这里有一篇文章讲到这种注释为什么不需要的原因,注释应该解释“为什么”,而不是“是什么”,即说明原因而不是说明作用(Why, not what)。...好:注解难懂的补丁性的代码 我对注释也不是总那么苛刻的,比如我就很难找到下面的注释的问题,若你曾看过normalize.css的源码,你一定会注意到它满满的注释,不得不说,真是“极好的”注释。... alert-success - Something good or successful 好的或成功的 alert-info - Something worth noting, but not

    1.7K20

    推荐系统评价:什么是好的推荐系统

    文章作者:姚凯飞 Club Factory 编辑整理:Hoh Xil 内容来源:作者授权发布 出品社区:DataFun 注:欢迎转载,转载请注明出处 什么是好的推荐系统?...2) 准确的推荐 信息分发维度,推荐就是需要准确,必然是准确的推荐是好推荐的核心要素之一。 3....2) 用户不知道什么商品存在 好的推荐系统是既可以根据用户的反馈来推荐,也可以不断帮助用户进行探索,因为用户可能不具有某个领域内的知识,好的推荐系统还需承载帮助用户发现新事物的功能。 4....Who:人物维度,则更多地去考虑用户各类信息特征,比如用户是男是女,是老是少,是新用户还是老用户,平时喜欢买什么品牌,喜欢什么品类的东西,风格如何等等,这些都是在描述这个人,现在这一类技术一般作为用户画像存在...推荐系统的优化是一个逐步迭代的过程,这一过程中需要我们进行效果的监控,从而推动策略的迭代。当然可能在迭代过程中,我们推荐系统也会随着产品发展调整目标,也可能因为产品的相关原因,停滞或停止。

    2.4K51

    什么样的网站设计称得上是好?

    好的网站设计一般都具有以下特点: 第一、好的页面设计肯定是清晰明了的。 好的页面设计,重视的是用户的体验,所以会将产品详细地介绍给用户,让用户能充分认识产品,而不是盲目地将网站的价值灌输给用户。...例如,购买过程,产品的价格设置不清晰,免费的产品,在付款的时候没有自动减少相对应的价钱,造成用户的困惑。 第二、好的网页设计是易于理解的。...如果页面设计得合理,当用户访问网站的时候,根本就不需要花费过多的时间去了解这个网站,就可以知道网站的大概内容是什么,不需要其他指引就知道下一步需要做什么。...所以,好的网站设计,会在每一个功能上给用户一些提示,一步一步指引用户,熟悉网站的操作。 第三、好的页面设计是可以使用户愉快的。...用户在网站上进行操作的时候,要告诉用户为什么会有这个操作,对每一个操作都要理解。然后将每一个操作都要诚实地展示出来,这样用户在操作过程中更加便捷。

    1.7K00

    什么是“好的”统计估计器

    我们这里用一个直观的公式来对它进行解释: MSE = Bias² + Variance 本文的目的并不是要证明这个公式,而是将他作为一个入口,让你了解统计学家如何以及为什么这样构建公式,以及我们如何判断是什么使某些估算器比其他估算器更好...用公式来概括细节虽然很直观但是并不详细,所以本文将详细解释为什么我说这个公式是正确的。...用括号这样做的原因是期望值是和/积分,所以无论我们对常数总和/积分用括号做什么,也可以对期望值做什么。这就是为什么如果a和b是常数,那么E[aX + b] = aE(X) + b。...更通俗的说法就是就是“如果有两个具有相同偏差的估计器,我们选择方差较小的一个” 还有许多不同的方法可以选择“最佳”估算器。因为“好”的属性包括无偏性、相对效率、一致性、渐近无偏性和渐近效率等等。...-方差权衡是关于什么的。

    74340

    什么是 Linux 里的 Systemd

    一、什么是 systemd?Systemd 是 Linux 系统中的一个系统和服务管理器。它负责初始化系统、管理系统服务、维护系统状态、控制系统资源,并提供一系列其他功能来简化系统管理。...Systemd 的设计初衷是解决这些问题。它通过并行启动服务、基于依赖关系的服务管理以及更强大的日志记录功能,大大提升了系统的性能和可维护性。...统一的服务管理接口:Systemd 提供了统一的 systemctl 命令来管理系统服务,无论是启动、停止、重启还是查看状态,都可以通过相同的接口完成。这种一致性简化了系统管理员的工作。...问题背景在采用 systemd 之前,该公司使用的是传统的 System V init 系统。...六、结语Systemd 作为 Linux 系统中的一个核心组件,已经成为现代 Linux 发行版中的标准系统管理工具。

    6810

    一张图理解什么是好的设计层次

    创建设计的第一步是设计分割,设计分割的依据是数据流。设计分割的结果是将设计划分为特定的功能单元,从而使得不同的设计者并行工作,同时每个功能单元可封装为相对独立的IP,实现设计复用。...设计分割时需要考虑的一个重要因素是定义设计层次(Design Hierarchy)。...尽可能使逻辑边界上的数据路径是寄存器输入/寄存器输出 对于包含关键路径的层次边界,要使其输出为寄存器输出,这样可将该路径封装于特定的模块或边界之内。...对位于边界的数据路径寄存还可获得一个好处:调试时易于跟踪。 下图是一个很好的例子,解释了什么是好的设计层次。可以看到模块的输入输出都做了寄存处理;时钟模块放置在设计的顶层。...同时,对顶层的输入输出寄存器使用了综合属性SHREG_EXTRACT,并将其值设置为“no”。目的是保证这些寄存器不会被综合为基于LUT的移位寄存器。

    72440
    领券