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

这么烂代码,?!

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

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

    这代码,卡我半小时!

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

    34610

    正经人 Junit 啊!

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

    65210

    霉霉 vs AI:歌词更好

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

    76250

    霉霉 vs AI:歌词更好

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

    76270

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

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

    1.7K30

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

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

    9610

    创建销毁,分配释放——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去回收资源。

    4.5K60

    Google眼镜:福音噩梦

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

    82750

    linux平台下文件刷新

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

    4.1K50

    SDNNFV与LSO博弈 取代?

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

    1.1K90

    深入理解 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

    4.6K10

    进化竞争:机器与人淘汰

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

    494100

    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卡中安装好系统烧写到板子上。

    2.8K30

    管理本质不是,而是,是管理期望,是相互赋能

    2.5 对上争取资源能力 三、对下负责 3.1 对下属成长负责 3.2 对下属工作负责 3.3 对团队目标负责 3.4 对团队文化负责 管理本质不是,而是,是管理期望,是相互赋能 运维就要无所不知...我认为管理本质不是,而是,是相互赋能 现在90后越来越难管理了!,当今天再讲出这样的话时候,猛然回头,其实最小90后,今天也已经31岁了,一眨眼已是人到中年。...充分授权是对执行人充分信任。愿意一直活在被监视中呢? 你说呢? 能担任下属职业教练 其次,个人最少需要在某些方面,最少有一方面在团队中是最拔尖。在关键时候,能授命于危难中。...其次,能为下属成长起到点睛之笔角色。 制定团队计划能力 目标管理能力 优秀沟通协调能力 如上这些能力都是管理人必备技能。...如果公司文化是冰冷,部门文化可以有一定温度。 透明,开放,包容,学习型组织是互联网公司文化主体,这样文化组织更容易打胜仗打硬仗。 团队成员之间并不一定只是工作和同事关系。

    1.7K20

    做Java,还不会几个 Linux 个命令!

    本文章盘点了 Linux 运维必备 150 个命令,请配合下面的网站使用。定位你需要使用命令,然后去这个网站查询详细用法即可。...route:显示和设置linux系统路由表。 ifconfig:全拼interfaces config,通常需要以root身份登录或使用sudo以便在Linux机器上使用ifconfig工具。...在linux系统中,我们创建一个新文件或者目录时候,这些新文件或目录都会有默认访问权限,umask命令与文件和目录默认访问权限有关。...rpm(redhat package manager) 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。...逐渐受到其他发行版采用。RPM 套件管理方式出现,让 Linux 易于安装,升级,间接提升了 Linux 适用度。

    58610

    你凭啥“该基因在人体中高表达”--给你勇气,梁静茹吗?

    摸着你良心,你有没有在文章introduction里面煞有介事介绍过某基因,你“xxx基因是在人体中分布广泛、高表达且高保守基因/蛋白,主要参与XXX等生物学过程”,套路,都是套路!...小编曾经也没头脑写过这样的话,如今开始学了生信,好奇心就愈发控制不住了,那么我们到底凭什么才能明目张胆下结论,认为一个基因是高丰度呢?...今天以以下这篇有趣文章为因子,我们来探索一下判定基因丰度方法吧! ?...小声比比,这篇文章非常精彩哦~你是不是做过很多实验结果和主流研究结果是矛盾,做出来结论和CNS文章结论相反(泪流满面)。...MALAT1其实是一个抑癌基因,前人使用小鼠MALAT1缺陷模型,虽然MALAT1表达缺失了,但MALAT1相邻基因表达上调,正是这 上调MALAT1相邻基因造成了促癌后果。

    2.5K30

    速度快!背锅(技术解析)

    任何不保留此声明转载都是抄袭。 温馨提示:如果你没有相关从业经验,本文将会非常晦涩。 深夜,领导:“你接口有问题!赶紧起床瞧瞧”。 Ding!催命软件一响,你就知道,该work了。...可惜是,这些信息,大部分都是骗人,你看到慢查询,并不是真正慢查询。 从xjjdog上面的分析中,你应该很容易看出问题症结所在:未隔离瓶颈资源引起上游资源连锁反应。...如何解决 增加Tomcat连接池大小,或者增加连接池大小,并不能解决问题,大概率还会复现。 最好解决方式,当然是把耗时服务和正常服务拆分开来,比如时下流行微服务。...慢查询相关,从连接池中获取连接策略,要改一下,不能一直等待,而应该采用FailFast方式(获取连接短时间超时也是可以),否则症状还是一样。...聚焦基础架构和Linux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样味道。我个人微信,欢迎添加好友,进一步交流。

    88250
    领券