这个数字经常用来标识新分配但是还未初始化的内存;在嵌入式系统中,也常常用它来表示程序崩溃或者出现了死锁,比如运行在 32 位 PowerPC 处理器上的 IBM RS/6000 系统、Mac OS 系统...[image-20220309211502573.png] 到网上查了一会,得到的结论竟然是:没什么理由,它是一个 “魔数”! 所谓魔数,就是毫无理由、凭空出现、也不需要去解释其含义的常量。...[image-20220309211300096.png] 我把这些代码拿给我朋友一看,他嘲笑道:人家大佬写的魔数叫魔数,而你写的,只能叫烂代码。...[image-20220309211328542.png] 的确,除非是上面那些大佬 / 前辈公认的、约定俗成的魔数外,我们在平时写代码的时候,尽量不要使用魔数,它会严重影响代码的可读性。...除了上面提到的魔数外,我还在网上看到了一些有实际意义的魔数,比如现代 3D 游戏之父约翰·卡马克在雷神之锤中的魔数: i = 0x5f3759df - ( i >> 1 ); 完全不敢相信,上面这行代码竟然可以快速计算一个数字的平方根的倒数
,并以外围实例为参数并从中复制数据.然后用writeReplace方法在序列化之前将外围类的实例变成了序列化代理,并在外围类的ReadObject方法中抛出异常,防止伪造.最后在ReadResolve方法中构造外围类的实例...或者正常访问锁定的域中,或者放到并发的集合中 当多个线程共享可变数据时,每个读或者写的线程都必须执行同步,否则就会造成活性失败和安全性失败 避免过度同步 为了避免活性失败和安全性失败,在一个被同步的方法或者代码块中...为了继承而设计类会有一些实质性的限制,需要消除自用特性:case将每个可覆盖方法的代码移到一个私有的辅助方法中....无法使用,remove/转换/平行迭代 了解和使用类库 随机数Random.nextInt(N) java.lang,java.util,java.io,Collection Framework/concurrent...在细节消息中包含能捕获失败的信息 大量的描述信息没有意义,一个推荐的做法,在异常的构造器中而不是字符串细节中引入这些消息 努力使失败保持原子性 1,在操作之前检查参数的有效性 调整计算顺序使得任何可能失败的计算在对象修改之前发生
在百分之九十九的场景中,要把方法变小,将方法中适合集中的部分,提炼出来形成一个新方法。...02 代码重复 使用IDEA的小伙伴应该都知道,如果你的代码存在重复,那么重复的代码颜色会变的,把鼠标放上去就会提示你存在多个一毛一样的代码,建议你使用同一块代码。 解决办法:把共同代码块提取出来。...这也是因为代码中需要起名字的地方太多了:类名,方法名,常量名,变量名…… 解决办法:最好是开发的时候搞一个常见命名单词库,要什么单词先去里面查一下,是否已经存在了。...对于不存在的,大家一起商量着怎么命名,确定了后将其写到单词库。久而久之,大家就形成习惯了,后面有新人来接手老代码的时候,对于有歧义的单词就可以直接查看单词库。...05 过多的或者无注释 网上流行一句话:请保证你的代码有效期更长一点。如果关键地方不写注释,即使是自己写的代码,很多时候回溯也会一时半会想不起来那到底是个什么东东。
作为程序员,大家都知道在软件研发的过程中,代码质量的退化是一个常见的问题,也是一个必然的现象,这种现象称之为代码坏味道,它指的是一些可能指示着更深层次问题的迹象。...识别坏味道代码坏味道的识别一般是要求开发者具备一定的代码审查能力和对设计原则相关的理解,同时也需要一定的经验和技巧,在日常编码过程中,以下三个手段是可以有助于你识别和解决坏味道:代码审查:定期组织团队成员对代码进行审查...具体的表现为:1.多个方法或类中有几乎相同的代码块2.复制粘贴修改的研发模式一般针对过长方法的解决路径如下:1.将重复的代码提取到一个公共的方法或者类中2.使用继承或者组合来共享代码我们来看看具体的代码示例...() > MAX_SIZE) { // ...}神秘代码神秘代码的坏味道一般表现为代码中存在难以理解的复杂表达式或者算法,缺乏注释或者文档说明。...具体的表现为:1.一个类的方法主要操作另一个类的属性2.一个类包含多个与另一个类紧密相关的功能一般针对过长方法的解决路径如下:1.重新组织类的结构,将羡慕的类或者属性移动到依赖它的类中2.建立新的类来封装羡慕的特征我们来看看具体的代码示例
# 前言 # 了解下魔数 什么是魔数 magic number 一般是指硬写到代码或文件中的整型常量,数值是编程者自己指定的,其他人不知道数值有什么具体意义。...小程序包也有自己的魔数,这是区别其它文件的标识。...# buf.readUInt8(13) 作用:从第13个字节开始读取一个无符号的8比特位整数值。 这里是从第13个字节读取一个字节的数据作为 lastMark ,是另一个魔数。值为 237。...# buf.readUInt32BE(5) 作用:以大端字节序从 buf 中第 5 个字节读取一个无符号的 32 位整数值。 这里代表微信文件信息列表长度值。...# 结论 微信小程序包文件的魔数为两个十六进制值 0xbe 和 0xed,使用其它文件跑脚本会报"Magic number is not correct!"错误。
坏字符规则(bad-character shift):当文本串中的某个字符跟模式串的某个字符不匹配时,我们称文本串中的这个失配字符为坏字符,此时模式串需要向右移动,移动的位数 = 坏字符在模式串中的位置...- 坏字符在模式串中最右出现的位置。...此外,如果"坏字符"不包含在模式串之中,则最右出现位置为 -1。坏字符针对的是文本串。...好后缀针对的是模式串。 ? 坏字符规则 坏字符出现的时候有两种情况进行讨论。 1、模式串中没有出现了文本串中的那个坏字符,将模式串直接整体对齐到这个字符的后方,继续比较。 ? ?...2、模式串中有对应的坏字符时,让模式串中 最靠右 的对应字符与坏字符相对。 这句话有一个关键词是 最靠右。 思考一下为什么是 最靠右? 看图! ? ? ? ?
刷过Leetcode的同学一定已经联想到了Leetcode原题第576题:出界的路径数,难度等级为中等。 给定一个 m × n 的网格和一个球。...死亡率”,归根结底,魔改版题的题眼还是算出移出边界的路径数,并不是最后问的“存活率”问题,这题只是用了一个并不是很讲究的障眼法,很有可能是该电商平台老板让手下的某个研发出道算法题招人用,而该研发已经被需求搞的晕头转向...我们再回到题目中想一想,魔改版题目并没有定义醉后随机走的步数N的范围,假设N的取值范围达到了50,我们对任意一个坐标点bfs有四个方向进行遍历,同时考虑往回走的可能性,那么复杂度达到了N的四倍,这个效率显然不会令人满意...其实就是上下左右四个方向移动过来的,而移动步数则是 N-1。...,企业就算想要“魔改”,也是万变不离其宗,多多少少都有迹可循,所以我们在刷题的过程中,应该本着宁缺毋滥的原则,真实的掌握算法核心思想,才能够做到举一反三、百战不殆。
几种常见的代码坏味道: - 重复代码 - 魔数 - 注释掉的代码和死代码 - 打印调试 - 带有数字后缀的变量 - 本该是函数或者模块的类 - 嵌套列表解析式 - 空的except块和糟糕的错误信息 坏味道代码带来的问题...2、魔数 魔数没有表明数字的目的,降低了代码的可读性,使其难以维护,而且容易出现难以察觉的拼写错误。...嵌套列表解析式(或者集合/字典解析式)在少量的代码中包含了大量的复杂性,降低了代码可读性。...优化坏味道的方法 1、重复代码 解决重复代码的方法是去重,简单地说,通过把代码放在一个函数或者循环中,使其在代码中只出现一次。 2、魔数 解决方法是使用常量替代魔数。...以上这些都算不上坏味道,因此我们在实际工作中,要识别坏味道。
之前有写过 找出数组中只出现一次的数,今天再来看下怎么找出数组中重复出现的数。 有一个长度为 n 的数组,所有的数字都在 0~n-1 的范围,现在要求找出数组中任意一个重复的数字。...思路一: 先给数组排序,然后再遍历一遍有序数组,依次比较相邻元素,就很容易能找出数组中重复的值。使用快排排序的话时间复杂度为 O(nlogn) 。...思路二: 利用空间换时间的思想,新建一个哈希表,然后遍历数组,每扫描一个元素都去哈希表里查找是否也存在该元素,如果存在,即找到一个重复的数,如果不存在,则将该元素保存到哈希表。...== i,换句话说就是不断的调整数组,使其满足 arr[i] == i,比如数组中第一个元素 arr[0] 为 4 ,那就要把元素 4 放到下标为 4 的位置上去。...推荐文章: 找出数组中只出现一次的数 我给自己配置的第一份保险 每天微学习, 长按加入一起成长.
Docker的默认网络是非常弱的,他使用的是一个虚拟网桥和container中的veth pair通信,在container中,默认是没有对外的IP的,外部主机或容器只能通过NAT,或者自定义iptable...在Container中无法正常tcpdump 理想的容器内网卡应该像VMware的NSX那样,让你’基本上’感觉不到这是个虚拟的网卡,当然,这个和Docker的初衷有点不符了。...:80:80 centos/simpleweb 这种方法简单,但也有上面所说的各种缺点 建立自己的网桥和veth pair,为每个网桥分配一个IP,每个veth对绑定一个网桥,映射进docker...并且有能与本地网络的通信 这种办法其实是对默认docker网络实现的一种升级,但是解决了原来的诸多局限,缺点是操作比较麻烦,另外容器内用tcpdump也会有问题 使用Open vSwitch Bridge...建立macvlan虚拟网卡,容器启动后用nsenter工具映射到容器的network namespace中 这种办法我觉得是最干净简洁的,而且采用macvlan,还意外获得了一种能力,就是你能在宿主机上创建子
题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。...穷举法 将数组中的每一对数字相加对比 ?
本文来自腾讯蓝鲸智云社区用户:kai 索引 0 前言 1 "魔改"支持自定义输入的select 前情提要 “魔改”第一步——找回组件的灵魂 “魔改”第二步——用户体验up?...在此,简单分享本人在SaaS开发过程中所遇到的一些前端问题,主要是关于bkui使用过程中的各种抓马瞬间~ ps:本文中所涉及组件为magicbox中的vue2.0组件。...“魔改”支持自定义输入的select 前情提要 我们需要做一个非运维类的内部工具,其中有个这样的需求: “下拉框,有固定选项,并需要支持自定义输入” 听起来挺平平无奇的对吧,我在bkui中快速找到了满足需求的...搜索一下咱们的文档,可以发现有两个,简单阅读理解一下,咱们要的是前者placeholder,后者search-placeholder是用于展开下拉框中的搜索框。...在此过程中收获颇丰,从蓝鲸各种平台能力带来的便利,到开发项目时的快速构建,不得不感慨一句蓝鲸平台真不错!
Infinity(无穷大)在 JS 中是一个特殊的数字,它的特性是:它比任何有限的数字都大,如果不知道 Infinity, 我们在一些运算操作遇到时,就会觉得很有意思。...现在我们来看看 JS 中的Infinity 属性,了解用例并解决一些常见的陷阱。...Infinity 的特性 Infinity比任何有限数都大。...如果尝试确定一个空数组的最大值或最小值,那结果后面人感到意外。 总结 JS中的Infinity表示无穷数的概念。 任何有限数均小于Infinity,而任何有限数均大于-Infinity。...比较 JS 中的无穷值很容易:Infinity === Infinity 为 true。特殊的函数Number.isFinite()确定提供的参数是否是一个有限的数字。
对这个镜像的需求是:希望在pod运行的容器内,执行docker命令,完成docker build, push等一些操作,即docker in docker。...首先,需要在容器的镜像里面也安装docker包。然后,通过挂载宿主机的/var/run/docker.sock文件,可以在容器内使用docker命令,而且是跟在当前的宿主机上执行一样。...分析原因应该是:容器里和宿主机上的docker组的id不一样导致的。 容器里: 宿主机上: 如上试验发现,容器里docker的组id是996,宿主机上的则为989。...在docker里再安装docker包的目的就是为了给docker提供一个完整的运行环境。...备注: 试验用的docker版本是17.03.2-ce,安装了docker包的容器镜像比没安装的镜像大小会多出100M。
docker system prune ,一个 should have 的功能 前一篇文章分析了docker system df的实现,这次分析下与它配套的docker system prune命令,之所以说配套...这个功能,对于用docker时间比较久的同学,必定觉得“早就该出了”,他们肯定像我一样,在没有这个官方命令的时候,用 docker rm `docker ps -a | grep -i 'exited'...ID 最后有个释放空间大小的summary 跟踪container prune功能,解析docker system prune 代码 相对docker system df的实现,由于prune的目的明确...在docker daemon中,找到真正执行container prune这个操作的方法,参见https://github.com/docker/docker/blob/master/daemon/prune.go...很希望有方法可以截取docker client发出的API,看下它的request body,便于了解细节。目前是通过看docker项目里的测试代码来了解。
我们有一个 Spring 的项目是部署在容器中的,如果不进行任何配置的话,这个项目运行的所有日子都会在容器中。 当容器重启说着终止后,上面的日志比较难进行查看。...我们希望我们的日志同时也记录在操作系统中,这么我们就不需要进入容器后才能看到日志了。 解决方案 上面的问题的解决方案就是使用 Docker 的挂在卷。...我们是使用 docker-compose.yaml 进行部署的。...句法为: /host/path :/container/path 上面的标记,冒号前面为实际的服务器的目录路径,冒号后面的是对应容器中的目录路径。...若挂载的是目录,容器目录要为空目录 若容器目录不存在,也可以挂载会自动创建 volumes基本规则->*文件夹:文件夹;文件:文件 https://www.ossez.com/t/docker/14265
之前学习docker的时候,是在windows上直接使用可执行文件安装的,最近需要在自己的服务器上安装docker,特此了解了一下如何安装,这里补一下。...这两个仓库默认包含在上面已经安装的docker-ce.repo中,不过默认是关闭的,打开它们可以使用下面命令。...安装Docker CE 2.1 安装最新版本的Docker CE $ sudo yum install docker-ce 2.2 如果你想安装特定版本的,可以按照以下的步骤 # 列出所有 $ yum...更新Docker CE 安装以上的安装流程即可,使用list列出所有可以更新的包,选择一个你想安装的。...start docker 验证docker是否运行 $ sudo docker run hello-world 如何手动更新 # 下载最新的rpm包 # 重复之前的安装步骤 # 使用yum -y upgrade
docker system是个全新的独立命令集合 docker system看起来是个很大的局,目前有以下子命令: docker system df docker system events docker...system info docker system prune 其中我特别感兴趣的是docker system df 和docker system prune这两个命令。...首先讲一下自己设想中的sharedSize是什么概念。...,它的大小就被加入它所在docker image的sharedSize。...= nil { return nil, err } // 如果这个由chainID对应的layer的引用大于1,说明该layer是共享的,计入当前image的SharedSize中,
从快排的核心操作中可以看到,如果分界值的位置刚好是 K(升序为从后往前数),那么该分界值为数组中第 K 大的数。如果分界值的位置小于 K,则继续在右子数组中按照相同的方式寻找,反之在左子数组中寻找。...循环往复,直至找到第 K 大的数。 复杂度分析: 时间复杂度:平均 O(n)。假设数组是无序的,每一次划分将数组一分为二。第一次划分时间复杂度是 O(n),第二次划分是 O(n/2)。...5.实现示例 5.1 C++ // findKthLargest 寻找数组中第 K 大的数。...K 大的数。...数组中的第K个最大元素 - leetcode
学习地址:http://www.htmleaf.com/ziliaoku/qianduanjiaocheng/201612054242.html
领取专属 10元无门槛券
手把手带您无忧上云