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

最佳编码实践:搞砸代码10种方法

以下是Susan正文:   写代码是一个富有创意但又可能让人思想麻痹任务,不管你是否喜欢你工作,你总会找一些捷径,但遗憾是,大部分捷径都违反了最佳编码实践原则,这些捷径要么会产生BUG,要么会导致数据出错...包括一个else子句并不难,并且还可以提供一层额外错误捕捉机会,你可以显示一般性错误,用户知道预期决定或行动不会发生,或是通过日志记录下来,用电子邮件发送给管理员或内部开发人员,总之想事件引起注意...,一个未执行else子句比多个选择更好。...2、goto是一个有效语句,我经常使用它   Goto是一个有效语句,但使用不当会产生难以驾驭代码,而且会隐藏错误和拙劣程序设计,当你不能想出一个更好策略时,不要轻易使用goto语句,当你真正需要一个简单重定向程序流时可以使用它...◆ 使用IsNull()确定一个表达式是否为空,你不能对空使用比较操作符,如var=Null或varNull,直接比较总是返回空(T-SQL有时会返回False)。

2.1K40

烦人数据不一致问题到底怎么解决?——通过“共识”达成数据一致性

小明1号倒下了还有千千万万个小明X号在坚守岗位,理想中全天候24小时提供服务~。高可用本质是通过相同数据存储多个副本,并都可对外提供服务。...比如每个小明X号都有一本《按摩指法白皮书》,谁请假了都可以由其它小明X号提供相同按摩服务。...好比如何所有的小明X号收到都是《按摩指法白皮书Ⅱ》,而不是其它,并且把原来那本销毁掉。...虽然跟随者投票秉承先到先得,但是还是会遇到多个term相同候选人获得了相同票数(简称「分割投票问题」),那么进行新一轮投票,直到决出胜负为止。...聊完了数据层面的「共识」问题,我们下回再聊聊「分布式事务」问题,围绕着常见CAP、BASE理论展开。         最后如果说想成为数据一致性专家,问有没有捷径的话。

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

    直到面试被问到什么是「共享引用」,我才发现对于它一无所知...

    由上图我们可以很清楚看出,b = a 中 a 被替换成了其引用对象 'Rocky',从而 b 也成了这个对象一个引用。...实际形成效果就是变量 a 和 b 都引用了相同对象(即指向了相同内存空间)。 这种多个变量名引用了同一个对象,在 Python 中就叫做「共享引用」。...Python 先让变量 a 引用了对象 3, b 引用了与 a 同样对象,在之前例子中是 a 设置为一个完全不同对象,在这里 244 是表达式 “+“ 计算结果,其实一个道理,并不会对 b...产生什么作用。...给一个变量赋一个新,并不是替换了原先对象,实际上是这个变量去引用完全不同一个新对象,实际效果就是仅仅影响是那个被赋值变量。

    32920

    北大研究人员这次发现了AI「躺平」原因,都是数据集错!

    ---- 新智元报道   来源:arXiv 编辑:好困 【新智元导读】你有没有发现,每当AI发现了偷懒小技巧之后,就不再去学习那些有挑战问题并开始「躺平」?...AI也想「躺平」 为了模型能够提高准确性,通常会设置相应奖励,但有时候模型在前期就发现了能够获得奖励捷径」。...来自北京大学研究人员在训练语言模型时候就发现:AI虽然能回答正确,但是它搞不明白为什么答案是对,只知道遇到某类问题用这个回答就可以了。...之后,由于模型学会捷径」可用于正确回答大部分训练问题,因此剩余问题便无法激励模型继续去探索「挑战版」问题需要复杂解决方法。 有没有办法把AI「扶起来」?...除了NLP架构本身问题外,也很可能是训练过程中标准优化和资源保护结果,以及模型在短时间内以有限资源去获得结果压力。

    24220

    编程语言界第一网红JavaScript

    除数字、字符串和布尔外,变量还可存储其他类型,这将在稍后介绍;但不管存储是哪种类型,变量创建方式都相同。下面更深入地介绍如何声明变量。 ?...自我表达 要使用JavaScript准确地表达自我,需要使用表达式表达式结果,前面的代码示例就包含多个表达式,下面是其中之一: ?...还有结果为true或false表达式,这种表达式称为布尔表达式。请看下面的各个表达式,它们返回true还是false呢? ?...表达式还可能为其他几种类型,就现在而言,重点是牢记所有表达式结果都为某种:数字、字符串或布尔。下面来看看表达式都有哪些作用。...JavaScript 填字游戏 来玩一个填字游戏,放松一下心情,神经完全处于松弛状态。 ? ? ? 有没有围绕JS世界环游一圈感觉?

    66930

    强化学习读书笔记(8)上| 用表格方法规划和学习

    Models and Planning 环境模型指agent可以用来预测环境如何响应其行为任何事物。给定状态和动作,模型可以产生结果下一状态和下一奖励预测。...另一种是每次根据概率采样产生一种可能性,这种叫做采样模型(sample model)。 模型可以用来模仿或仿真真实经验。...而给定一个初始状态和策略,采样模型可以直接产出一个整个episode而分布模型可以产出所有可能episode以及他们发生概率。所有的例子中模型都是用来模仿环境来产生仿真经验。...中间栏代表了agent与环境之间基本互动,从而产生真实经验轨迹。图左侧箭头表示从真实经验中改进函数和策略直接RL。右边是基于模型流程。该模型从实际经验中学习,并产生模拟经验。...然而,过了一段时间,他们便能够找到新开口和新最佳行为。 3 Shortcut Maze ? 该图显示环境变化后常规Dyna-Q agent并未切换捷径,且从未发现捷径存在。

    1.1K30

    CC++练习题(三)

    所以,将数组 a 作为参数调用 strlen 得到结果为 255。 ---- 1、逆波兰表达式 正常表达式称为中缀表达式,运算符在中间,主要是给人阅读,机器求解并不方便。...相反,如果使用逆波兰表达式(前缀表达式)表示,上面的算式则表示为: 3 * 5 + 2 6 1 不再需要括号,机器可以用递归方法很方便地求解。...当循环变量 i 为 5 时候将访问 a[5],这个时候产生了一个数组越界错误。但问题是,为什么会产生死循环,当 i 为 5 时候,程序究竟做了什么?...因为多个线程同时运行后,CPU调度需要知道线程执行流。共享的话无法多线程了。线程切换后怎么切换回来呢?如果每个线程没有自己存储执行流栈的话,是无法实现线程切换。...答案:可重入函数是指能够被多个线程“同时”调用函数,并且能保证函数结果正确性函数。

    2.2K40

    苹果手机大小周闹钟设置

    自己也一直想着生活上有没有什么需要自动化,然后用捷径去做一个,这不,大小周闹钟就来了。 回家路上自己构想了两种实现方式。...但之前毕竟没有写过捷径,想着能不能直接写脚本,而不是自己在手机上拼命令,然后查了下发现真的有,用文字写捷径 ScPL、用 python 写捷径 WIP、用 JS 写捷径 Shortcuts JS。...,看有没有现成轮子,直接用吧。...我突然想到了一个更简单方法。 我只需要每周执行一次「开关闹钟」就可以了。比如周六闹钟,每周日执行「开关闹钟」。 第 1 周添加了一个每周六响闹钟,周六成功响了,到了周日会把这个闹钟自动关掉。...… … 哈哈,成功实现大小周闹铃,自动化命令如下。 记得添加闹钟功能时候默认是切换状态,需要改成 开/关 功能。

    2.2K20

    【笔记】《C++Primer》—— 第17章:标准库特殊设施

    正则表达式出现错误时会以regex_error异常抛出,所以使用时需要try-catch 正则表达式编译是非常慢过程,所以应该避免创建不必要表达式 正则表达式也有很多个其他类型版本,可以把string...改为char数组或wchar_t数组,wstring中,方法就是把相应函数名首字符更改,例如smatch改为cmatch表示char数组版本 正则表达式迭代器通过递增操作可以切换到下一个匹配,要注意没有递减操作...:]]匹配任意字母 +表示我们希望这部分有一个或多个匹配 *表示我们希望这部分有零个或多个匹配 .匹配任意字符 反斜杠\代表去掉特殊含义 $表示到此终止 ()可以标记出子表达式 \{d}表示单个数字...一个很常见错误就是将get,peek之类函数返回赋值给char而不是int,当读取到EOF时赋值给char得到会与int型EOF不同,这很容易产生一些错误判断 一些操作可以进行多字节未格式化...注意流并没有区分读标记和写标记,因此我们在切换读写时候需要自己保存好tell返回 tell和seek返回标记时机器相关类型,大小不一定,但是我们可以使用其中beg得到流开始处,cur得到流的当前位置

    1K20

    图机器学习 2.2-2.4 Properties of Networks, Random Graph

    也就是说图其实是随机过程一个结果,下图是给定n,p一个例子 ?...img 这个“捷径方法很类似于数值计算中“插”:把节点作为插节点,那么这里修改过边就类似”线性插“ 从图上可以看出来,想要随机创造捷径是很简单不费力。 反过来思考:聚合系数呢?...社交网络中,我朋友们互相也认识,所以聚合系数高,可是很难朋友们互相“绝交”从而聚合系数降下来。下图可以反应这个现象 ?...img 尽管到目前为止讨论Kronecker结构产生图具有一系列所需特性,但其离散性质在程度和频谱数量上会产生“阶梯效应”,这仅仅是因为单个具有较大多重性。...例如,图邻接矩阵特征度分布和分布以及主要特征向量分量分布(即“网络”)都受此影响。这些数量是多重分布,这导致具有多个重复单个

    94521

    JUnit注解与hamcrest

    在@Test注解里加上expected,是用来测试方法有没有抛出应该抛出异常,也就是专门测试异常发生,如果没有抛出相应异常,就表示这个方法是有问题,JUnit测试结果就会报出错误。...在@Test注解里加上timeout,是用于测试方法运行时间有没有超过所设定时间,如果没超时则测试结果是正确,超时了自然测试结果就是错误。 错误代码示例: ? 运行结果: ?...这个方法主要是用来比较两个变量是否相同,同样可以比较8种基本数据类型变量和Object数组对象,而且也能在参数中加字符串,以下以int类型和Object数组做一个示例: ? 运行结果: ?...这个方法是用来比较两个变量是否是不相同,不相同则没问题,相同则会报错,可以比较long、double、float基本数据类型和Object类型对象,同样可以在参数里加上一个字符串,下面以long类型和...hamcrest:   hamcrest包里方法可以Assert升级成类似于多路分支判断语句就像if esle差不多,一般下载JUnit4以上版本都会自带这个包。 ?

    52430

    正则表达式(RegEx)官方手册权威指南【Python】

    这会与 Python 字符串字面值中对相同字符出于相同目的用法产生冲突;例如,要匹配一个反斜杠字面值,用户可能必须写成 '\\\\' 来作为模式字符串,因为正则表达式必须为 \\,而每个反斜杠在普通...一个正则表达式(或RE)指定了一集与之匹配字符串;模块内函数可以你检查某个字符串是否跟给定正则表达式匹配(或者一个正则表达式是否匹配到一个字符串,这两种说法含义相同)。...这个表达式行为可以通过指定 标记 来改变。可以是以下任意变量,可以通过位OR操作来结合( | 操作符)。...如果样式里存在一到多个组,就返回一个组合列表;就是一个元组列表(如果样式里有超过一个组合的话)。空匹配也会包含在结果里。 在 3.7 版更改: 非空匹配现在可以在前一个空匹配之后出现了。...返回一个或者多个匹配子组。如果只有一个参数,结果就是一个字符串,如果有多个参数,结果就是一个元组(每个参数对应一个项),如果没有参数,组1默认到0(整个匹配都被返回)。

    5.5K20

    Deep Residual Learning for Image Recognition (ResNet)

    我们提供了非常全面的实验数据来证明,残差网络更容易被优化,并且可以在深度增加情况下精度也增加。...2.我们深度残差网络可以轻松享受深度增加带来精度增加,产生效果要远远优于以前那些网络们。...如果有一个假设:多层非线性网络层可以逐渐逼近很复杂函数,那么相当于可以假设它们同样能逼近残差函数。H(X) - X(假设输入和输出都有着相同维度)。...而用残差方法重构它,如果自身映射达到最佳,则求解可能仅仅是更新多个非线性层向零去接近自身映射。 在现实情况下,自身映射一开始就达到最优几乎是不可能事,但我们重构将有助于对此问题做预处理。...一个224x224裁切是随机抽样图像或其水平翻转,并将裁剪结果减去它平均像素[21],进行了标准颜色增强。

    1K80

    深度学习败于“捷径

    捷径”策略,模型在训练时侯往往会面临多个解决方案,而深度学习模型选择往往并不是最有效那个,而是最简单那个。...除此之外,在论文中,作者还举了一些采用“捷径策略”例子,试图从“捷径学习”中找到AI模型转向“理解”方向。...但是受影响区域之间“连接点”可能会促进成功,这些成功可以在不同应用领域产生非常有价值影响。...(2)仔细解释结果 在机器学习中发现“捷径时候,往往会发现一个看似复杂数据集存在一个简单解决方案。...这些歧视和偏见是值得关注,因为当机器学习应用于定义不清晰或有害任务时,它可能会强化不正确假设和有问题关系。捷径可以这些有问题任务看上去完全可以被解决。

    33810

    代码重构:函数重构 7 个小技巧

    println() 抽离到独立函数中(函数需要在命名上,下点功夫),这里对抽离函数命名有 2 个建议: 保持函数尽可能小,函数越小,被复用可能性越大 良好函数命名,可以调用方代码看起来上注释...,只被引用和使用一次,那么它就应该被内联和移除,避免产生过多冗余代码,从而影响阅读 4:函数替代表达式 如果你程序依赖一段表达式来进行逻辑判断,那么你可以利用一段函数封装表达式,来计算过程更加灵活被复用...0.95 : 0.98; } 总结 使用函数替代表达式替代表达式,对于程序来说有以下几点好处: 封装表达式计算过程,调用方无需关心结果是怎么计算出来,符合 OOP 原则 当计算过程发生改动,也不会影响调用方...另外引入解释变量也会分支表达式更好理解。 示例一 我们先看一段代码(我敢保证这段代码你看肯定会很头疼。。。)...& isIEBrowser && wasInitialized() && wasResized()) { // do something ... } 这样做还有一个好处就是,在 Debug 程序时候你可以提前知道每段表达式结果

    58830

    「神经网络就像任性小孩」港中文MMLab博士揭开OpenSelfSup自监督学习秘密

    运动学属性,例如头部是刚体,四肢是铰接体等,是较为确定先验,那么这就是一个低熵先验。从实验结果可以发现,在transfer到分割任务上,运动传播比运动预测更好。...1.捷径(shortcuts) 以jigsaw puzzles为例,如下图,如果我们划分patch之间紧密挨着,那么神经网络只需要判断patch边缘是否具有连续性,就可以判断patch相对位置,...图9,patch之间产生随机间隔 Solving jigsaw puzzles其他捷径还包括色差、彗差、畸变、暗角等可以指示patch在图像中相对位置信息。...解决方案除了想办法消除这些畸变外,还可以patch尽量靠近图像中心。...: paramwise_option下用正则表达式筛选出对应网络参数然后指定这些,而不需要改动代码。

    62420

    自监督学习一些思考

    运动学属性,例如头部是刚体,四肢是铰接体等,是较为确定先验,那么这就是一个低熵先验。从实验结果可以发现,在transfer到分割任务上,运动传播比运动预测更好。 ?...1.捷径(shortcuts) 以jigsaw puzzles为例,如下图,如果我们划分patch之间紧密挨着,那么神经网络只需要判断patch边缘是否具有连续性,就可以判断patch相对位置,...图9,patch之间产生随机间隔 Solving jigsaw puzzles其他捷径还包括色差、彗差、畸变、暗角等可以指示patch在图像中相对位置信息。...解决方案除了想办法消除这些畸变外,还可以patch尽量靠近图像中心。 ?...: paramwise_option下用正则表达式筛选出对应网络参数然后指定这些,而不需要改动代码。

    1.2K20

    分享 Python 常见面试题及答案(下)

    ,都会造成进程崩溃 应用: IO密集用多线程,在用户输入,sleep 时候,可以切换到其他线程执行,减少等待时间 CPU密集用多进程,因为假如IO操作少,用多线程的话,因为线程共享一个全局解释器锁...id与浅复制原来相同。...乐观锁,就是很乐观,每次去拿数据时候都认为别人不会修改,所以不会上锁,但是在更新时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制,乐观锁适用于多读应用类型,这样可以提高吞吐量...、CPU进行资源分配和调度基本单位,线程是进程一部分,是比进程更小能独立运行基本单位,一个进程下多个线程可以共享该进程所有资源 2、如果IO操作密集,则可以多线程运行效率高,缺点是如果一个线程崩溃...,都会造成进程崩溃 应用: IO密集用多线程,在用户输入,sleep 时候,可以切换到其他线程执行,减少等待时间 CPU密集用多进程,因为假如IO操作少,用多线程的话,因为线程共享一个全局解释器锁

    1.9K30

    RPA办公自动化 | power automate&飞书捷径

    自动化任务 Power Automate可以轻松地连接多个应用程序和服务,实现数据交互和流转。...三种创建入口我比较选择第二个和第三个。先看看有没有适合自己模板,如果没有就从一个连接器开始创建,相比从空白开始创建要舒适得多。...整个power automate中,人眼前一亮操作就是excel自动化。...通过飞书捷径,你可以多个步骤操作捕捉下来,并创建一个简便图标,点击图标即可自动执行这些操作。 主要功能和优势 官方一点介绍是这样: 1....跨应用协同 飞书捷径可以与其他应用进行集成,实现跨应用数据传递和协同工作。通过自定义接口,捷径可以轻松连接多个应用程序,将不同应用之间信息互通,工作更加高效。 4.

    1.2K40

    Pythonre模块 --- 正则表达式操作

    正则表达式使用反斜杠('\')来表示特殊形式,或者把特殊字符转义成普通字符。 而反斜杠在普通 Python 字符串里也有相同作用,所以就产生了冲突。...正则表达式语法 一个正则表达式(或RE)指定了一集与之匹配字符串;模块内函数可以你检查某个字符串是否跟给定正则表达式匹配(或者一个正则表达式是否匹配到一个字符串,这两种说法含义相同)。...这个表达式行为可以通过指定 标记 来改变。可以是以下任意变量,可以通过位OR操作来结合( |操作符)。...如果样式里存在一到多个组,就返回一个组合列表;就是一个元组列表(如果样式里有超过一个组合的话)。空匹配也会包含在结果里。 在 3.7 版更改: 非空匹配现在可以在前一个空匹配之后出现了。...返回一个或者多个匹配子组。如果只有一个参数,结果就是一个字符串,如果有多个参数,结果就是一个元组(每个参数对应一个项),如果没有参数,组1默认到0(整个匹配都被返回)。

    2.4K30
    领券