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

这么烂代码,?!

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

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

这代码,卡我半小时!

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

31410

霉霉 vs AI:歌词更好

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

73150

正经人 Junit 啊!

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

61910

霉霉 vs AI:歌词更好

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

73870

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

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

1.6K30

创建销毁,分配释放——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.1K60

Google眼镜:福音噩梦

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

78150

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指定一个文件起作用,并且等到磁盘结束才返回。 这两个系统调用一般用于数据库这样应用程序,这种应用需要确保修改过块立即写到磁盘上。

3.9K50

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

SDNNFV与LSO博弈 取代?

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

1K90

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

进化竞争:机器与人淘汰

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

480100

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

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

1.5K20

做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 适用度。

53310

Pinia,Vue最好存储库!赞成?反对?

状态管理 在程序开发过程中,有很多页面需要共享一些数据,这些数据需要我们保存在程序某一个地方。管理这些数据过程就叫做状态管理。 2....4.1 id 在 Pinia 中,每一个 Store 都要有唯一名称,或者唯一id。...命名 id 方式有 2 种: 第1种:将 id 作为 defineStore 方法参数 第2种:在 defineStore 方法体内定义 id 4.2 State State 其实就是我们需要存储数据...持久化 在使用 Pinia 时,我们会发现刷新页面之后,数据又重置了,这时候我们可以使用 Pinia Persist 插件将数据持久化到本地。...我们还可以自定义存储 key 、持久化引擎和要持久化哪些数据:

17510

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

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

1.9K30

Linux 时复制机制原理

Linux 系统中,调用 fork 系统调用创建子进程时,并不会把父进程所有占用内存页复制一份,而是与父进程共用相同内存页,而当子进程或者父进程对内存页进行修改时才会进行复制 —— 这就是著名...下面我们将分析 Linux 时复制(Copy On Write) 机制原理。 虚拟内存与物理内存 进程内存可分为 虚拟内存 和 物理内存。...时复制原理 前面介绍了 虚拟内存 与 物理内存 概念,接下来将会介绍 Linux 时复制 原理。...Linux 为了加速创建子进程过程与节省内存使用原因,实现了 时复制 机制。...总结 本篇文章主要介绍了 Linux 时复制 原理,时复制 是 Linux 创建子进程高效关键所在,而且还能节省对物理内存使用。我们将在下一篇文章中对 时复制 实现进行详细分析。

1.9K31
领券