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

聊聊编程

这个数字经常用来标识新分配但是还未初始化内存;在嵌入式系统,也常常用它来表示程序崩溃或者出现了死锁,比如运行在 32 位 PowerPC 处理器上 IBM RS/6000 系统、Mac OS 系统...[image-20220309211502573.png] 到网上查了一会,得到结论竟然是:没什么理由,它是一个 “”! 所谓,就是毫无理由、凭空出现、也不需要去解释其含义常量。...[image-20220309211300096.png] 我把这些代码拿给我朋友一看,他嘲笑道:人家大佬写,而你写,只能叫烂代码。...[image-20220309211328542.png] 的确,除非是上面那些大佬 / 前辈公认、约定俗成外,我们在平时写代码时候,尽量不要使用,它会严重影响代码可读性。...除了上面提到外,我还在网上看到了一些有实际意义,比如现代 3D 游戏之父约翰·卡马克在雷神之锤: i = 0x5f3759df - ( i >> 1 ); 完全不敢相信,上面这行代码竟然可以快速计算一个数字平方根倒数

99831

消除JAVA编程味道

,并以外围实例为参数并从中复制数据.然后用writeReplace方法在序列化之前将外围类实例变成了序列化代理,并在外围类ReadObject方法抛出异常,防止伪造.最后在ReadResolve方法构造外围类实例...或者正常访问锁定域中,或者放到并发集合 当多个线程共享可变数据时,每个读或者写线程都必须执行同步,否则就会造成活性失败和安全性失败 避免过度同步 为了避免活性失败和安全性失败,在一个被同步方法或者代码块...为了继承而设计类会有一些实质性限制,需要消除自用特性:case将每个可覆盖方法代码移到一个私有的辅助方法....无法使用,remove/转换/平行迭代 了解和使用类库 随机Random.nextInt(N) java.lang,java.util,java.io,Collection Framework/concurrent...在细节消息包含能捕获失败信息 大量描述信息没有意义,一个推荐做法,在异常构造器而不是字符串细节引入这些消息 努力使失败保持原子性 1,在操作之前检查参数有效性 调整计算顺序使得任何可能失败计算在对象修改之前发生

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

总结关于【代码味道】

在百分之九十九场景,要把方法变小,将方法适合集中部分,提炼出来形成一个新方法。...02 代码重复 使用IDEA小伙伴应该都知道,如果你代码存在重复,那么重复代码颜色会变,把鼠标放上去就会提示你存在多个一毛一样代码,建议你使用同一块代码。 解决办法:把共同代码块提取出来。...这也是因为代码需要起名字地方太多了:类名,方法名,常量名,变量名…… 解决办法:最好是开发时候搞一个常见命名单词库,要什么单词先去里面查一下,是否已经存在了。...对于不存在,大家一起商量着怎么命名,确定了后将其写到单词库。久而久之,大家就形成习惯了,后面有新人来接手老代码时候,对于有歧义单词就可以直接查看单词库。...05 过多或者无注释 网上流行一句话:请保证你代码有效期更长一点。如果关键地方不写注释,即使是自己写代码,很多时候回溯也会一时半会想不起来那到底是个什么东东。

45620

如何识别和解决 Java 代码味道

作为程序员,大家都知道在软件研发过程,代码质量退化是一个常见问题,也是一个必然现象,这种现象称之为代码味道,它指的是一些可能指示着更深层次问题迹象。...识别味道代码味道识别一般是要求开发者具备一定代码审查能力和对设计原则相关理解,同时也需要一定经验和技巧,在日常编码过程,以下三个手段是可以有助于你识别和解决味道:代码审查:定期组织团队成员对代码进行审查...具体表现为:1.多个方法或类中有几乎相同代码块2.复制粘贴修改研发模式一般针对过长方法解决路径如下:1.将重复代码提取到一个公共方法或者类2.使用继承或者组合来共享代码我们来看看具体代码示例...() > MAX_SIZE) { // ...}神秘代码神秘代码味道一般表现为代码存在难以理解复杂表达式或者算法,缺乏注释或者文档说明。...具体表现为:1.一个类方法主要操作另一个类属性2.一个类包含多个与另一个类紧密相关功能一般针对过长方法解决路径如下:1.重新组织类结构,将羡慕类或者属性移动到依赖它2.建立新类来封装羡慕特征我们来看看具体代码示例

9600

一起来探索下小程序包

# 前言 # 了解下 什么是 magic number 一般是指硬写到代码或文件整型常量,数值是编程者自己指定,其他人不知道数值有什么具体意义。...小程序包也有自己,这是区别其它文件标识。...# buf.readUInt8(13) 作用:从第13个字节开始读取一个无符号8比特位整数值。 这里是从第13个字节读取一个字节数据作为 lastMark ,是另一个。值为 237。...# buf.readUInt32BE(5) 作用:以大端字节序从 buf 第 5 个字节读取一个无符号 32 位整数值。 这里代表微信文件信息列表长度值。...# 结论 微信小程序包文件为两个十六进制值 0xbe 和 0xed,使用其它文件跑脚本会报"Magic number is not correct!"错误。

1.8K30

动画:BM 算法字符规则与好后缀规则

字符规则(bad-character shift):当文本串某个字符跟模式串某个字符不匹配时,我们称文本串这个失配字符为字符,此时模式串需要向右移动,移动位数 = 字符在模式串位置...- 字符在模式串中最右出现位置。...此外,如果"字符"不包含在模式串之中,则最右出现位置为 -1。字符针对是文本串。...好后缀针对是模式串。 ? 字符规则 字符出现时候有两种情况进行讨论。 1、模式串没有出现了文本串那个字符,将模式串直接整体对齐到这个字符后方,继续比较。 ? ?...2、模式串中有对应字符时,让模式串 最靠右 对应字符与字符相对。 这句话有一个关键词是 最靠右。 思考一下为什么是 最靠右? 看图! ? ? ? ?

1.6K20

Python算法之动态规划(Dynamic Programming)解析:二维矩阵醉汉(改版leetcode出界路径)

刷过Leetcode同学一定已经联想到了Leetcode原题第576题:出界路径,难度等级为中等。 给定一个 m × n 网格和一个球。...死亡率”,归根结底,改版题题眼还是算出移出边界路径,并不是最后问“存活率”问题,这题只是用了一个并不是很讲究障眼法,很有可能是该电商平台老板让手下某个研发出道算法题招人用,而该研发已经被需求搞晕头转向...我们再回到题目中想一想,改版题目并没有定义醉后随机走N范围,假设N取值范围达到了50,我们对任意一个坐标点bfs有四个方向进行遍历,同时考虑往回走可能性,那么复杂度达到了N四倍,这个效率显然不会令人满意...其实就是上下左右四个方向移动过来,而移动步则是 N-1。...,企业就算想要“改”,也是万变不离其宗,多多少少都有迹可循,所以我们在刷题过程,应该本着宁缺毋滥原则,真实掌握算法核心思想,才能够做到举一反三、百战不殆。

43320

揪出代码味道

几种常见代码味道: - 重复代码 - - 注释掉代码和死代码 - 打印调试 - 带有数字后缀变量 - 本该是函数或者模块类 - 嵌套列表解析式 - 空except块和糟糕错误信息 味道代码带来问题...2、 没有表明数字目的,降低了代码可读性,使其难以维护,而且容易出现难以察觉拼写错误。...嵌套列表解析式(或者集合/字典解析式)在少量代码包含了大量复杂性,降低了代码可读性。...优化味道方法 1、重复代码 解决重复代码方法是去重,简单地说,通过把代码放在一个函数或者循环中,使其在代码只出现一次。 2、 解决方法是使用常量替代。...以上这些都算不上味道,因此我们在实际工作,要识别味道。

47020

数组重复

之前有写过 找出数组只出现一次,今天再来看下怎么找出数组重复出现。 有一个长度为 n 数组,所有的数字都在 0~n-1 范围,现在要求找出数组任意一个重复数字。...思路一: 先给数组排序,然后再遍历一遍有序数组,依次比较相邻元素,就很容易能找出数组重复值。使用快排排序的话时间复杂度为 O(nlogn) 。...思路二: 利用空间换时间思想,新建一个哈希表,然后遍历数组,每扫描一个元素都去哈希表里查找是否也存在该元素,如果存在,即找到一个重复,如果不存在,则将该元素保存到哈希表。...== i,换句话说就是不断调整数组,使其满足 arr[i] == i,比如数组第一个元素 arr[0] 为 4 ,那就要把元素 4 放到下标为 4 位置上去。...推荐文章: 找出数组只出现一次 我给自己配置第一份保险 每天微学习, 长按加入一起成长.

1.7K20

Docker网络

Docker默认网络是非常弱,他使用是一个虚拟网桥和containerveth pair通信,在container,默认是没有对外IP,外部主机或容器只能通过NAT,或者自定义iptable...在Container无法正常tcpdump 理想容器内网卡应该像VMwareNSX那样,让你’基本上’感觉不到这是个虚拟网卡,当然,这个和Docker初衷有点不符了。...:80:80 centos/simpleweb 这种方法简单,但也有上面所说各种缺点 建立自己网桥和veth pair,为每个网桥分配一个IP,每个veth对绑定一个网桥,映射进docker...并且有能与本地网络通信 这种办法其实是对默认docker网络实现一种升级,但是解决了原来诸多局限,缺点是操作比较麻烦,另外容器内用tcpdump也会有问题 使用Open vSwitch Bridge...建立macvlan虚拟网卡,容器启动后用nsenter工具映射到容器network namespace 这种办法我觉得是最干净简洁,而且采用macvlan,还意外获得了一种能力,就是你能在宿主机上创建子

1.1K60

改bkui】使用bkui过程抓马瞬间

本文来自腾讯蓝鲸智云社区用户:kai 索引 0 前言 1 "改"支持自定义输入select 前情提要 “改”第一步——找回组件灵魂 “改”第二步——用户体验up?...在此,简单分享本人在SaaS开发过程中所遇到一些前端问题,主要是关于bkui使用过程各种抓马瞬间~ ps:本文中所涉及组件为magicboxvue2.0组件。...“改”支持自定义输入select 前情提要 我们需要做一个非运维类内部工具,其中有个这样需求: “下拉框,有固定选项,并需要支持自定义输入” 听起来挺平平无奇对吧,我在bkui快速找到了满足需求...搜索一下咱们文档,可以发现有两个,简单阅读理解一下,咱们要是前者placeholder,后者search-placeholder是用于展开下拉框搜索框。...在此过程收获颇丰,从蓝鲸各种平台能力带来便利,到开发项目时快速构建,不得不感慨一句蓝鲸平台真不错!

32210

关于docker执行docker命令实践

对这个镜像需求是:希望在pod运行容器内,执行docker命令,完成docker build, push等一些操作,即docker in docker。...首先,需要在容器镜像里面也安装docker包。然后,通过挂载宿主机/var/run/docker.sock文件,可以在容器内使用docker命令,而且是跟在当前宿主机上执行一样。...分析原因应该是:容器里和宿主机上dockerid不一样导致。 容器里: 宿主机上: 如上试验发现,容器里docker组id是996,宿主机上则为989。...在docker里再安装docker目的就是为了给docker提供一个完整运行环境。...备注: 试验用docker版本是17.03.2-ce,安装了docker容器镜像比没安装镜像大小会多出100M。

90120

docker 1.13docker system prune浅析

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项目里测试代码来了解。

5.7K20

centosdocker安装

之前学习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

99430

Docker 挂载卷

我们有一个 Spring 项目是部署在容器,如果不进行任何配置的话,这个项目运行所有日子都会在容器。 当容器重启说着终止后,上面的日志比较难进行查看。...我们希望我们日志同时也记录在操作系统,这么我们就不需要进入容器后才能看到日志了。 解决方案 上面的问题解决方案就是使用 Docker 挂在卷。...我们是使用 docker-compose.yaml 进行部署。...句法为: /host/path :/container/path 上面的标记,冒号前面为实际服务器目录路径,冒号后面的是对应容器目录路径。...若挂载是目录,容器目录要为空目录 若容器目录不存在,也可以挂载会自动创建 volumes基本规则->*文件夹:文件夹;文件:文件 https://www.ossez.com/t/docker/14265

1.3K20

Python随机生成

大家好,又见面了,我是你们朋友全栈君。 在Python可以用于随机生成有两种主要途径,一是random模块,另一个是numpy库random函数。...OUTLINE random模块 numpyrandom函数 总结 ---- random模块 random模块中将近有7个函数都是可以用来生成随机: ① random.random() 功能...功能:在生成这样一个整数序列随机选择一个 用法: number = random.randrange(2,10,2) # 输出:2 ⑤ random.choice...] ---- numpyrandom函数 numpyrandom函数可以调用方法主要有两种,一种是生成随机浮点数,二是生成随机整数。...① np.random.randn(a,b) 功能:生成a*b维随机,且该服从标准正太分布 用法: data = np.random.randn(5,4) # 输出: array([[-1.6101468

1.9K20
领券