这么烂的代码,谁写的? 每个程序员都会发出这样的灵魂拷问。 烂代码可能是祖传的,上一代程序员写的,可能是离职的程序员写的,可能是同事写的,更悲催的是,可能就是你自己写的!...如此循环两周,直到确保神秘的flag组合通过所有测试。 然后为你的更改再添加上百个测试,保证别人不会破坏。 是不是很疯狂? 你也可以看看你手头的代码,看看最早的作者是谁,经历了多少个版本。 ...内在的是代码质量, 外在的是对外表现的行为是否符合预期,不符合就是Bug了。 祖传代码的外在质量是不错的,毕竟是经过血与火的考验的。 ...这些都是自己赖以生存的技能,不能因为祖传代码烂,自己写的代码更烂! 重构和测试不分家, 把自己的单元测试写好,把功能测试做好,必要的话请测试人员帮个忙。 ...我知道的一些优秀源码有这些:JUnit,Redis,SQLite, Spring等。 这写代码现在都很庞杂了,看起来很累,最好去找他早期的源码,要简单得多,并且基本架构还在。
我本来以为只是一位幽默的程序员的小玩笑,但后来查阅资料才知道,上图的这段代码竟是 C++ 的 hash_map 源码!而作者使用这个特殊的英文单词也是 “别有用心”。...fileSize > 1073741824) { ...doSomething } if (num > 2147483647) { printf("you lose"); } 这几个值都是我们写代码时经常用的...我把这些代码拿给我朋友一看,他嘲笑道:人家大佬写的魔数叫魔数,而你写的,只能叫烂代码。...的确,除非是上面那些大佬 / 前辈公认的、约定俗成的魔数外,我们在平时写代码的时候,尽量不要使用魔数,它会严重影响代码的可读性。...“来了来了,我再给你写几个魔数(烂代码)!”
小伙伴们在平时的开发过程中,都经历过这种情况吧:别人的代码运行好好的,自己 CV 过来却发现有问题,折腾了半天最后发现问题出在少数几行代码上。...那么来看题目描述: 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。...那么怎么去搜索其它的路径呢? 从当前叶子节点返回到它的父节点! 这个过程就是回溯的过程,因此我们需要保存之前的状态。 用什么数据结构保存呢? 栈!...5、在搜索过程中,一直搜索到叶子节点 1、把当前的节点值添加到栈中,栈中保存的就是从根节点到当前节点的路径 2、将当前访问节点的值累加到 value 上 6、如果搜索到了叶子节点,判断一下 value...// node 为正在遍历的节点 // value 为栈中各个节点值的总和 // targetSum 为目标路径的和 // stack 存储该路径上的所有节点 /
开发流程 这也太敏捷了 你的单元测试呢? 测了几个功能? 代码覆盖率多少? 哦,你说这些啊,我从来不写单元测试! 惊!...Java 开发手册 当然实际工作中不可能是这样的,再来看看我一般使用的分层: ? 差不多这样吧! 2 单元测试 至于单元测试,一般情况下,是很少写。(除非无奈,一般人都不写吧!) 不会吧!不会吧!...还有人写单元测试,单元测试不就是为了代码扫描的时候通过一下嘛? 其实,单元测试是有要求的! ?...下面来看看单元测试的使用姿势! 3 单元测试的使用 既然对项目进行了分层,那肯定要每一层都要测试到。所以就一起看看我最近学到的单元测试的新知识!...姿势四:使用断言 除了上面介绍的注解之外,还需要注意 Assert 断言的使用。 ? 一般情况下默认的 Assert 就可以满足使用,当然复杂情况的断言可以使用 Mockito 框架提供的断言。
翻译 | AI科技大本营(rgznai100) 参与 | Shawn 从小到大我一直都是Taylor Swift的死忠粉。上初中时,我的 iPod Nano 里播放最多的就是《Speak Now》。...上周霉霉放出了新专辑《Reputation》的首支单曲,为了第一时间听到,作为死忠粉的我苦苦熬了好几天夜。...但是霉霉一贯动人的歌词和好听的旋律哪去了?这首歌怎么充满了仇恨和复仇呢? 上周,我想看看机器学习(ML)能否拯救一下霉霉的歌?...以下就是我得到的结果(一点也没改,直接从复制粘贴的): 歌词1 歌词2 上图是机器直接生成的两首样本歌,每首大约 900 个单词。 读了这些生成的歌词,我的结论是霉霉绝对比机器学习写得更好。...,这是我从网上找到的。
在平时 Linux 操作过程中,很多命令是重复的,你一定不希望大量输入重复的命令。如果你是系统管理员,你可能需要对用户操作进行审计,管理好 Linux 命令历史记录显得非常重要。...今天我们来介绍一下,在 Linux 使用 history 来减少重复命令的几个实用技巧。 1 基本原理 ?...Linux 命令的历史记录,会持久化存储,默认位置是当前用户家目录的 .bash_history 文件。...当 Linux 系统启动一个 Shell 时,Shell 会从 .bash_history 文件中,读取历史记录,存储在相应内存的缓冲区中。 我们平时所操作的 Linux 命令,都会记录在缓冲区中。...history 命令提供了很方便的管理功能,合理去配置和管理历史记录,可以让你的 Linux 系统更加健壮和安全。
在对网络连接或特定于应用程序的问题进行故障排除时,首先要检查的事情之一应该是系统上实际使用了哪些端口,以及哪个应用程序正在侦听特定的端口。...该说明适用于所有基于Linux和Unix的操作系统,例如macOS。 什么是监听端口 网络端口由其编号,关联的IP地址和通信协议(例如TCP或UDP)的类型标识。...,重要的几列是: Proto-套接字使用的协议。...,可提供有关进程打开的文件的信息。...在Linux中,所有内容都是文件。你可以将套接字视为写入网络的文件。
前言 首先要说一下为啥要使用swagger,兄弟们都知道,如今俺们程序员最不喜欢的四件事就是“写文档,写注释,别人不写文档,别人不写注释” 试想一下,当你累的一批,写完了程序并且调试完bug之后...,这时前端兄弟找你写一下接口文档,此时你的内心。。。。...使用 注解说明 这里先介绍一下swagger部分的注解,基本上这些就够用了。...标注在具体的接口方法上,表明方法的作用,展示在接口文档中 @ApiOperation notes 标注在具体的接口方法上,表明方法的具体作用,展示在接口文档中 Model 注解 可设置属性 使用说明...总结 swagger可以帮我们节省一部分写文档的时间,而且很方便前端程序员进行对接,到现在就完成了swagger的基础使用,是不是蛮简单的,快动手试试吧
在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去回收资源。
在07年诞生iPhone,08年出现Android的时候,也很难想象我们通过手机APP能做这么多事。巧合的是,安卓最初的设计初衷也是为了做一个可以联网的相机。后来却与IOS一起引爆移动互联网。...所以,最期待Google Glass的除了极客用户外,就是摩拳擦掌跃跃欲试的开发者。 Google Glass仍然秉承Google开放的意志。...普通眼镜,镜架最轻的8-9克,一般不超过30克;镜片也是20-100克左右。眼镜整体重量一般低于100克的,最轻的不到30克。...这个人群催生了规模庞大的眼镜行业和近乎奢侈的近视手术行业。 笔者戴的眼镜在一家来自中国台湾的普通连锁眼镜店中算最低端眼镜,价格接近1k。周围的朋友戴的眼镜价格不菲。...结语: Google眼镜来了,如果它真的不负重托,既能取代眼镜,还能取代手机的话,这将是传统眼镜和手机的噩梦;短期来看,它是手机的一个伴侣,是我们的第二幅“按需佩戴”而不是“随时随地佩戴”的智能眼镜
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指定的一个文件起作用,并且等到写磁盘结束才返回。 这两个系统调用一般用于数据库这样的应用程序,这种应用需要确保修改过的块立即写到磁盘上。
可是2015年初上演的思科和惠普的“泰坦之战”却揭开SDN的撕B大战。 对于这些撕B我一直都是乐见其争,毕竟撕撕更健康,这些撕B大战对于未来网络核心技术的落地还是都大有裨益的。...首先,我非常同意LSO的愿景是相当吸引人的。...但是,我认为LSO更像是自动化的服务编排系统,它的目标是替代传统的OSS/BSS;它提出了新的网络管理需求,使得以SDN、NFV等为代表的未来网络技术有了更明确的落地方向。...无论是NFV或是SDN,当他们提供第三类网络的基本构建模块时,所关心的是网络元素功能和控制,而不关心企业或个人实际购买的连接服务。这是MEF的标准化服务编排能效力的地方。...服务编排管理着连接服务的整个生命周期:履行、控制、性能、保证、使用和分析。它拥有一层或一个域的所有服务的详细清单,为服务提供商和在其他层操作的内部系统之间的信息交换提供必要的API。
一、前言 ● 随机写会导致磁头不停地换道,造成效率的极大降低;顺序写磁头几乎不用换道,或者换道的时间很短 ● 本文来讨论一下两者具体的差别以及相应的内核调用 二、环境准备 组件 版本 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
越来越多的工作将被机器替代,那人做什么呢?这是一场人机器的进化竞争,进化的速度决定未来的命运——谁为谁工作?看近期的几篇文章 机器人抢饭碗,人们该怎么做?...而在某些领域,技术进步的同时也让生产有了更高的效率。...人们都希望生活在富足的环境中:拥有房子、安全和陪伴孩子的机会,但人类学家已经指出现在得到这些物质享受并非难事。 事实上,人们现在实际的资源需求要远小于现在的工作量,我估计这甚至还不到真正需求的1%。...在Cadieu最新的测试中,他发现目前的电脑已经可以“媲美”猴子大脑了。 他们将传感器连在猴子脑部的视觉处理部位,并让猴子看一系列的图像,并观察脑部的活动状况。...他的意思是:人工智能可能会导致人类的灭亡。 当你为人工智能技术的飞速发展而欢呼雀跃的时候,你是否想过这可能并不是一件好事?
某些情况下,我们可能会因为间歇性的脑残和手贱导致把粤嵌开发板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.5 对上争取资源的能力 三、对下负责 3.1 对下属的成长负责 3.2 对下属工作负责 3.3 对团队目标负责 3.4 对团队文化负责 管理的本质不是谁管谁,而是谁帮谁,是管理期望,是相互赋能 运维就要无所不知...我认为管理的本质不是谁管谁,而是谁帮谁,是相互赋能 现在的90后越来越难管理了!,当今天再讲出这样的话的时候,猛然回头,其实最小的90后,今天也已经31岁了,一眨眼已是人到中年。...充分授权是对执行人的充分信任。谁愿意一直活在被监视中呢? 你说呢? 能担任下属的职业教练 其次,个人最少需要在某些方面,最少有一方面在团队中是最拔尖的。在关键时候,能授命于危难中。...其次,能为下属的成长起到点睛之笔的角色。 制定团队计划的能力 目标管理的能力 优秀的沟通协调能力 如上这些能力都是管理人必备的技能。...如果公司的文化是冰冷的,部门的文化可以有一定的温度。 透明,开放,包容,学习型的组织是互联网公司文化的主体,这样的文化组织更容易打胜仗打硬仗。 团队成员之间并不一定只是工作和同事的关系。
本文章盘点了 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 的适用度。
摸着你的良心,你有没有在文章的introduction里面煞有介事的介绍过某基因,你写“xxx基因是在人体中分布广泛、高表达且高保守的基因/蛋白,主要参与XXX等生物学过程”,套路,都是套路!...小编曾经也没头脑的写过这样的话,如今开始学了生信,好奇心就愈发控制不住了,那么我们到底凭什么才能明目张胆的下结论,认为一个基因是高丰度的呢?...今天以以下这篇有趣的文章为因子,我们来探索一下判定基因丰度的方法吧! ?...小声比比,这篇文章非常精彩哦~你是不是做过很多实验结果和主流的研究结果是矛盾的,做出来的结论和CNS文章的结论相反(泪流满面)。...MALAT1其实是一个抑癌基因,前人使用的小鼠MALAT1缺陷模型,虽然MALAT1的表达缺失了,但MALAT1相邻基因的表达上调,正是这 上调的MALAT1相邻基因造成了促癌的后果。
任何不保留此声明的转载都是抄袭。 温馨提示:如果你没有相关的从业经验,本文将会非常晦涩。 深夜,领导:“你写的接口有问题!赶紧起床瞧瞧”。 Ding!催命软件一响,你就知道,该work了。...可惜的是,这些信息,大部分都是骗人的,你看到的慢查询,并不是真正的慢查询。 从xjjdog上面的分析中,你应该很容易看出问题的症结所在:未隔离的瓶颈资源引起上游资源的连锁反应。...如何解决 增加Tomcat连接池的大小,或者增加连接池的大小,并不能解决问题,大概率还会复现。 最好的解决方式,当然是把耗时的服务和正常的服务拆分开来,比如时下流行的微服务。...慢查询相关的,从连接池中获取连接的策略,要改一下,不能一直等待,而应该采用FailFast的方式(获取连接短时间的超时也是可以的),否则症状还是一样。...聚焦基础架构和Linux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。我的个人微信,欢迎添加好友,进一步交流。
领取专属 10元无门槛券
手把手带您无忧上云