首页
学习
活动
专区
圈层
工具
发布

这么烂的代码,谁写的?!

这么烂的代码,谁写的? 每个程序员都会发出这样的灵魂拷问。 烂代码可能是祖传的,上一代程序员写的,可能是离职的程序员写的,可能是同事写的,更悲催的是,可能就是你自己写的!...如此循环两周,直到确保神秘的flag组合通过所有测试。 然后为你的更改再添加上百个测试,保证别人不会破坏。 是不是很疯狂?  你也可以看看你手头的代码,看看最早的作者是谁,经历了多少个版本。 ...内在的是代码质量, 外在的是对外表现的行为是否符合预期,不符合就是Bug了。  祖传代码的外在质量是不错的,毕竟是经过血与火的考验的。   ...这些都是自己赖以生存的技能,不能因为祖传代码烂,自己写的代码更烂!  重构和测试不分家, 把自己的单元测试写好,把功能测试做好,必要的话请测试人员帮个忙。 ...我知道的一些优秀源码有这些:JUnit,Redis,SQLite,  Spring等。  这写代码现在都很庞杂了,看起来很累,最好去找他早期的源码,要简单得多,并且基本架构还在。

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

    这代码谁写的,卡我半小时!

    小伙伴们在平时的开发过程中,都经历过这种情况吧:别人的代码运行好好的,自己 CV 过来却发现有问题,折腾了半天最后发现问题出在少数几行代码上。...那么来看题目描述: 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。...那么怎么去搜索其它的路径呢? 从当前叶子节点返回到它的父节点! 这个过程就是回溯的过程,因此我们需要保存之前的状态。 用什么数据结构保存呢? 栈!...5、在搜索过程中,一直搜索到叶子节点 1、把当前的节点值添加到栈中,栈中保存的就是从根节点到当前节点的路径 2、将当前访问节点的值累加到 value 上 6、如果搜索到了叶子节点,判断一下 value...// node 为正在遍历的节点 // value 为栈中各个节点值的总和 // targetSum 为目标路径的和 // stack 存储该路径上的所有节点 /

    45810

    正经人谁写 Junit 啊!

    开发流程 这也太敏捷了 你的单元测试呢? 测了几个功能? 代码覆盖率多少? 哦,你说这些啊,我从来不写单元测试! 惊!...Java 开发手册 当然实际工作中不可能是这样的,再来看看我一般使用的分层: ? 差不多这样吧! 2 单元测试 至于单元测试,一般情况下,是很少写。(除非无奈,一般人都不写吧!) 不会吧!不会吧!...还有人写单元测试,单元测试不就是为了代码扫描的时候通过一下嘛? 其实,单元测试是有要求的! ?...下面来看看单元测试的使用姿势! 3 单元测试的使用 既然对项目进行了分层,那肯定要每一层都要测试到。所以就一起看看我最近学到的单元测试的新知识!...姿势四:使用断言 除了上面介绍的注解之外,还需要注意 Assert 断言的使用。 ? 一般情况下默认的 Assert 就可以满足使用,当然复杂情况的断言可以使用 Mockito 框架提供的断言。

    86410

    霉霉 vs AI:谁的歌词写的更好

    翻译 | AI科技大本营(rgznai100) 参与 | Shawn 从小到大我一直都是Taylor Swift的死忠粉。上初中时,我的 iPod Nano 里播放最多的就是《Speak Now》。...上周霉霉放出了新专辑《Reputation》的首支单曲,为了第一时间听到,作为死忠粉的我苦苦熬了好几天夜。...但是霉霉一贯动人的歌词和好听的旋律哪去了?这首歌怎么充满了仇恨和复仇呢? 上周,我想看看机器学习(ML)能否拯救一下霉霉的歌?...以下就是我得到的结果(一点也没改,直接从复制粘贴的): 歌词1 歌词2 上图是机器直接生成的两首样本歌,每首大约 900 个单词。 读了这些生成的歌词,我的结论是霉霉绝对比机器学习写得更好。...,这是我从网上找到的。

    88950

    霉霉 vs AI:谁的歌词写的更好

    翻译 | AI科技大本营(rgznai100) 参与 | Shawn 从小到大我一直都是Taylor Swift的死忠粉。上初中时,我的 iPod Nano 里播放最多的就是《Speak Now》。...上周霉霉放出了新专辑《Reputation》的首支单曲,为了第一时间听到,作为死忠粉的我苦苦熬了好几天夜。...但是霉霉一贯动人的歌词和好听的旋律哪去了?这首歌怎么充满了仇恨和复仇呢? 上周,我想看看机器学习(ML)能否拯救一下霉霉的歌?...以下就是我得到的结果(一点也没改,直接从复制粘贴的): 歌词1 歌词2 上图是机器直接生成的两首样本歌,每首大约 900 个单词。 读了这些生成的歌词,我的结论是霉霉绝对比机器学习写得更好。...,这是我从网上找到的。

    85070

    谁动了我的Linux?原来history这么强大!

    在平时 Linux 操作过程中,很多命令是重复的,你一定不希望大量输入重复的命令。如果你是系统管理员,你可能需要对用户操作进行审计,管理好 Linux 命令历史记录显得非常重要。...今天我们来介绍一下,在 Linux 使用 history 来减少重复命令的几个实用技巧。 1 基本原理 ?...Linux 命令的历史记录,会持久化存储,默认位置是当前用户家目录的 .bash_history 文件。...当 Linux 系统启动一个 Shell 时,Shell 会从 .bash_history 文件中,读取历史记录,存储在相应内存的缓冲区中。 我们平时所操作的 Linux 命令,都会记录在缓冲区中。...history 命令提供了很方便的管理功能,合理去配置和管理历史记录,可以让你的 Linux 系统更加健壮和安全。

    2.1K30

    正经人谁写接口文档呀,快来让不正经的swagger帮你写吧

    前言 首先要说一下为啥要使用swagger,兄弟们都知道,如今俺们程序员最不喜欢的四件事就是“写文档,写注释,别人不写文档,别人不写注释” 试想一下,当你累的一批,写完了程序并且调试完bug之后...,这时前端兄弟找你写一下接口文档,此时你的内心。。。。...使用 注解说明 这里先介绍一下swagger部分的注解,基本上这些就够用了。...标注在具体的接口方法上,表明方法的作用,展示在接口文档中 @ApiOperation notes 标注在具体的接口方法上,表明方法的具体作用,展示在接口文档中 Model 注解 可设置属性 使用说明...总结 swagger可以帮我们节省一部分写文档的时间,而且很方便前端程序员进行对接,到现在就完成了swagger的基础使用,是不是蛮简单的,快动手试试吧

    23610

    谁创建谁销毁,谁分配谁释放——JNI调用时的内存管理

    在QQ音乐AndroidTV端的Cocos版本的开发过程中,我们希望尽量多的复用现有的业务逻辑,避免重复制造轮子。...第一种做法,是在Java类的构造函数中,调用Native层的构造函数,分配Native Heap的内存空间,之后,在Java类的finalize方法中调用Native层的析构函数,回收Native Heap...不在JNI的包装类的构造函数中初始化Native层对象,尽量写成open/close的形式,在open的时候初始化Native资源,close的时候释放,finalize作为最后的保险再检查释放一次。...换言之,对象的生命周期交给Cocos管理,我们需要关心对象的析构过程。 一种简单有效的做法,是在C++的构造函数中,实例化Java层的对象,在C++的析构函数中释放Java层对象。...上述方法中,Java层对象的生命周期是跟随Native层对象的生命周期的,Native层对象的生命周期结束时会释放对于Java层对象的持有,让GC去回收资源。

    5.2K60

    Power BI | 都AI时代了,谁还写文档嘛!

    原创内容 No.766 Power BI | 都AI时代了,谁还写文档嘛! 咱就是说,文档这玩意,写了真的有人会看么?!...图片由夸克AI绘制 最近刚好被抓去干了一些整理文档的工作,讲真,有点烦人,这都AI时代了,谁还要写文档嘛!作为一个懒人,我是真的讨厌这种类似的工作,这不搞点自动化都不符合我的人设,马上安排起来!...文档这种东西真的是,让我写文档的时候我很不情愿写,但是别人给我东西没有文档的时候我急得骂人。所以说,无痛写文档真的是打工人的刚需!...: 1 文档总览 这个部分通常情况下没法找AI代劳,不过好在人工去写似乎不是什么非常困难的事情,还算比较简单。...一个好的文档能产生非常大的积极作用,但是吧,这写文档本身的耗时也太多了,怎么想都是不合算的嘛,尤其是系统架构与数据模型这一块,整理起来还是非常费劲的。

    54210

    linux平台下的写文件刷新

    c语言libc库自带的fflush和linux的sync、fsync、fdatasync,字面上都是刷新缓冲区数据到磁盘(当然,fflush还可以刷新缓冲区数据到标准输入、输出以及错误输出)。...一、c语言fflush和linux的sync、fsync、fdatasync的区别 1.接口基本不同 fflush是libc库中提供的函数,平台无关,只有在你使用到c语言的标准文件(FILE)操作时,...当我们向文件写入数据时,内核通常会先将数据复制到页告诉缓存中,然后将这些缓存页的地址排入队列,晚些时候再写入磁盘。这种方式被称为延迟写。...1、sync和fsync、fdatasync的区别 sync只是将页高速缓存中所有修改过的块的地址排入写入队列,然后返回,他并不等待实际写磁盘操作结束。...fsync、fdatasync只对参数fd指定的一个文件起作用,并且等到写磁盘结束才返回。 这两个系统调用一般用于数据库这样的应用程序,这种应用需要确保修改过的块立即写到磁盘上。

    4.8K50

    Google眼镜:谁的福音谁的噩梦

    在07年诞生iPhone,08年出现Android的时候,也很难想象我们通过手机APP能做这么多事。巧合的是,安卓最初的设计初衷也是为了做一个可以联网的相机。后来却与IOS一起引爆移动互联网。...所以,最期待Google Glass的除了极客用户外,就是摩拳擦掌跃跃欲试的开发者。 Google Glass仍然秉承Google开放的意志。...普通眼镜,镜架最轻的8-9克,一般不超过30克;镜片也是20-100克左右。眼镜整体重量一般低于100克的,最轻的不到30克。...这个人群催生了规模庞大的眼镜行业和近乎奢侈的近视手术行业。 笔者戴的眼镜在一家来自中国台湾的普通连锁眼镜店中算最低端眼镜,价格接近1k。周围的朋友戴的眼镜价格不菲。...结语: Google眼镜来了,如果它真的不负重托,既能取代眼镜,还能取代手机的话,这将是传统眼镜和手机的噩梦;短期来看,它是手机的一个伴侣,是我们的第二幅“按需佩戴”而不是“随时随地佩戴”的智能眼镜

    94650

    深入理解 linux磁盘顺序写、随机写

    一、前言 ● 随机写会导致磁头不停地换道,造成效率的极大降低;顺序写磁头几乎不用换道,或者换道的时间很短 ● 本文来讨论一下两者具体的差别以及相应的内核调用 二、环境准备 组件 版本 OS Ubuntu...O 完成的总时长 bw :吞吐量 iops :每秒 I/O 的次数 四、同步写测试 1)同步随机写 主要采用fio作为测试工具,为了能够看到系统调用,使用strace工具,命令看起来是这样 先来测试一个随机写...随机读每一次写入之前都要通过lseek去定位当前的文件偏移量 2)同步顺序写 用刚才的方法来测试顺序写 root@wilson-ubuntu:~# strace -f -tt -o /tmp/write.log...由于顺序读,不需要反复定位文件偏移量,所以能够专注于写操作 五、slat指标 从上面的测试,我们在fio的测试报告中,并没有发现slat的身影,那是由于上述都是同步操作,对同步 I/O 来说,由于 I/...O 提交和 I/O 完成是一个动作,所以 slat 实际上就是 I/O 完成的时间 异步顺序写,将同步顺序写的命令添加-ioengine=libaio: root@wilson-ubuntu:~# fio

    5.5K10

    Parrot OS 和Kali Linux 谁与争锋?

    在平时的文章中,表哥为大家介绍的最多的便是Kali Linux了。...本文为大家介绍一款同样优秀的安全系统Parrot 关于 Parrot是一个基于 Debian 的、面向安全的 Linux 发行版,具有一系列专为渗透测试、计算机取证、逆向工程、黑客攻击、隐私、匿名和加密而设计的实用程序...Parrot Home是一款非常轻便的供日常使用和隐私保护系统。它专为喜欢鹦鹉外观和感觉的休闲用户而设计。...启动虚拟机 但在最新的6.1版本中,并没有在虚拟机安装的选项,而是直接启动。...不管是Kali Linux也好,还是Parrot也罢,都是非常适合网络安全、以及安全审计的小伙伴。根据自己的需要选择适合你的,才是最好的。 ‍

    66700

    Linux基础(烧写系统)

    某些情况下,我们可能会因为间歇性的脑残和手贱导致把粤嵌开发板GEC210的系统给搞死,比如在某神秘原因的驱使下,众目睽睽地删掉系统的关键性目录,然后目光呆滞地面对被格掉的板子,束手无策,默默流泪。...今天我就是来挽救这些失足青年的。 ? 首先,面对kernel或者文件系统出问题的板子,我们有两种办法来挽救,第一是使用SD卡,第二是使用USB接口+fastboot。...在开发板中的uboot菜单中按下 u(use fastboot),将会出现如下画面: ? 这时会出现发现新硬件,选择从指定位置安装,然后找到刚刚下载的并且已经解压了的USB驱动目录即可。...下载 fastboot 工具:http://pan.baidu.com/s/1o8IkQIA(含uboot和内核) 运行 fastbooot.zip 解压出来的批处理文件 linux_auto.bat...就像用U盘装windows系统一样,将SD启动卡插入板子的SD卡插槽,然后将启动顺序拨码开关拨到SD卡启动处,开机启动即可自动把SD卡中安装好的系统烧写到板子上。

    3.4K30

    SDNNFV与LSO的博弈 谁取代谁?

    可是2015年初上演的思科和惠普的“泰坦之战”却揭开SDN的撕B大战。 对于这些撕B我一直都是乐见其争,毕竟撕撕更健康,这些撕B大战对于未来网络核心技术的落地还是都大有裨益的。...首先,我非常同意LSO的愿景是相当吸引人的。...但是,我认为LSO更像是自动化的服务编排系统,它的目标是替代传统的OSS/BSS;它提出了新的网络管理需求,使得以SDN、NFV等为代表的未来网络技术有了更明确的落地方向。...无论是NFV或是SDN,当他们提供第三类网络的基本构建模块时,所关心的是网络元素功能和控制,而不关心企业或个人实际购买的连接服务。这是MEF的标准化服务编排能效力的地方。...服务编排管理着连接服务的整个生命周期:履行、控制、性能、保证、使用和分析。它拥有一层或一个域的所有服务的详细清单,为服务提供商和在其他层操作的内部系统之间的信息交换提供必要的API。

    1.3K90

    进化的竞争:机器与人谁淘汰谁?

    越来越多的工作将被机器替代,那人做什么呢?这是一场人机器的进化竞争,进化的速度决定未来的命运——谁为谁工作?看近期的几篇文章 机器人抢饭碗,人们该怎么做?...而在某些领域,技术进步的同时也让生产有了更高的效率。...人们都希望生活在富足的环境中:拥有房子、安全和陪伴孩子的机会,但人类学家已经指出现在得到这些物质享受并非难事。 事实上,人们现在实际的资源需求要远小于现在的工作量,我估计这甚至还不到真正需求的1%。...在Cadieu最新的测试中,他发现目前的电脑已经可以“媲美”猴子大脑了。 他们将传感器连在猴子脑部的视觉处理部位,并让猴子看一系列的图像,并观察脑部的活动状况。...他的意思是:人工智能可能会导致人类的灭亡。 当你为人工智能技术的飞速发展而欢呼雀跃的时候,你是否想过这可能并不是一件好事?

    627100

    RAG、LLM、AI Agent到底谁是谁的谁?

    比如你问ChatGPT关于2024年奥运会的信息,它可能会给你一个不太准确的答案,因为它学习的资料总是滞后一段时间的。 我曾经测试过一个LLM,让它分析一家公司的最新财报。...结果它给了我一个"专业"的分析,但当我查看那家公司的最新公告时,发现数据完全不匹配。这就像你问一个博学的教授今天股市怎么样,他给你的答案可能是昨天或者上周的信息。...这就是LLM的现状:思考能力一流,但信息来源有限。 二、RAG:给书呆子配了个图书管理员 RAG技术的出现,就像是给这个博学的书呆子配了一个专业的图书管理员。 这个管理员的工作是什么?...LLM负责思考和推理,RAG负责提供准确的信息,AI Agent负责具体的执行。这就像一个完美的工作团队:聪明的头脑、丰富的信息源、强的执行力。 当然,这个过程也充满挑战。...但不管怎样,这代表着我们正在进入一个真正的AI时代——不是某个单一技术的炫技,而是多技术协同的智慧应用。 未来已来,只是分布不均。

    11911
    领券