怎样编写健壮的代码 怎样编写健壮的代码.png 代码的几种特性 鲁棒性Robust(健壮性) 系统在异常和危险情况下生存的关键 容错性 可移植性 反例: 脆弱、僵化、顽固且粘滞性高 如何构建高效、健壮、...稳定且可扩展的优质API 为什么使用API 模块化 减少代码重复 消除硬编码假设 解耦业务逻辑内部实现 如何做到代码健壮且优雅?...必须真正的热爱程序员这一行业,热爱coding,热爱自己的工作,热爱技术,对于写出优质健壮的代码有着强烈的愿望。...不记得是哪位大师说过,“如果你能理解程序每一个字节,那么该程序才会真正的无错” 良好的代码风格 可读性和可维护性 封装和信息隐藏 良好的软件架构设计 思路清晰的设计可获得易于理解的程序 坚持抵制草草完工的诱惑...使每一个函数达到健壮 (1)不能假定函数的输入参数是正确,必须检查函数的输入参数是否符合规则; (2)当函数的输入不符合规则时,必须告诉用户错在哪,并告诉用户如何输入正确的参数; (3)考虑代码的可读性
异常的处理 异常发生时,如果直接导致了程序的崩溃,不论对用户还是对开发者来说都是不友好的,这便要求我们在异常发生时,对异常进行处理。...try-except try 和 except 语句块可以用来捕获和处理异常,try 后面跟的是需要捕获异常的代码,except 后面跟的是捕获到异常后需要做的处理。...代码颠倒之后,在执行打开文件的代码时,发生了文件不存在的异常,所以没有执行后面的代码,后面的异常处理代码输出了 FileNotFoundError happened!。...发生异常时,finally 语句块中的代码同样得到了执行,输出了 Finally is executed! 。因此,不管有没有发生异常,finally 语句块中的代码都会被执行。...总结 位于 try 语句块中的代码都会被执行,直到遇到了异常。 except 语句块中的代码用来捕获和处理 try 语句块中的异常。 把没有异常发生时需要执行的代码放在 else 语句块中。
数据仓库是伴随着企业信息化发展起来的,在企业信息化的过程中,随着信息化工具的升级和新工具的应用,数据量变的越来越大,数据格式越来越多,决策要求越来越苛刻,数据仓库技术也在不停的发展。...日志表中的执行成功的记录和本层ETL 日志表中执行成功的记录取差集,则为本次ETL需要执行的数据。...同时, 日志数据可以很清晰的看到数据在每一层的数据处理记录,对于业务复杂的场景,可以对指定层的指定数据进行数据处理。同时,对应的日志表还会有一张error表,用来数据的异常。...数据仓库项目实施过程中需要关注的点 § 数据建模:数据仓库项目中最重要的一环,决定了是否健壮,是否性能优越,是否易扩展,是否易使用,主要分为概念建模、逻辑建模、物理建模三个阶段,一般采用维度建模中的星型模型...数据日志记录每个批次运行的数据范围,每个批次运行后的数据结果,例如:维度表的错误处理,事实表每次处理的数据量、成功量、失败量、失败的原因等。
前言: 本系列教程面向有一定编程基础的人,熟悉IDE的操作,有面向对象的基础更佳。...简介: Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。...总的来说,Python的哲学就是极简既极美。...应用场景: 网络应用(网站,后台服务) 小工具(爬虫) 缺点: 运行速度非常慢,因为Python是解释型语言,就是你的代码在运行的时候会一行一行的翻译成机器码,与C相比,这个效率要慢许多。...(不过无伤大雅,用户基本无感) 代码不能加密,发布你的Python的程序的时候,实际上就是在公布你的源码。 安装: 下载地址 下载完成之后,双击打开,这里需要注意一点: ?
健壮性(Robustness) 是指程序在遇到规范以外的输入,错误和异常时,仍能正常运行。简单来说,健壮代码的适应性很强,不会因为一些异常,就导致程序崩溃。...不健壮的前端代码体现为: 接口返回异常或报错时,页面白屏。 用户做一些非常规操作时,页面白屏。 如何写出健壮的前端代码 要写出健壮的前端代码,就要处理规范以外的输入,错误和异常。...3 写法优化 很多写法优化能提升代码健壮性。这里介绍 2 点。 1 switch 都需要有 default 来做异常或默认情况的处理。...4 第三方库的选择 使用第三库,可以减少造轮子,从而提升开发效率。但如果第三方包不健壮,用到第三方包的功能也就不健壮了。 健壮的第三方库是成熟,稳定的。...健壮性的测试方法 可以用猴子测试来测试代码的健壮性。 猴子测试(Money Test),也称搞怪测试。在软件测试中,测试者可以进行各种稀奇古怪的操作模式,用以测试软件的健壮性。
使用Go实现健壮的内存型缓存 本文介绍了缓存的常见使用场景、选型以及注意点,比较有价值。...由来 缓存是提升性能的最便捷的方式,但缓存不是万能的,在某些场景下,由于事务或一致性的限制,你无法重复使用某个任务的结果。缓存失效是计算机科学中最常见的两大难题之一。...下面将使用一个名为plt的工具对应用进行压测,plt包括参数: cardinality - 生成的唯一的URLs的数据,会影响到缓存命中率 group - 一次性发送的URL相似的请求个数,模拟对相同键的并发访问...字节缓存的最大劣势是编解码带来的开销,在热点循环中,编解码导致的开销可能会非常大。...Go有一个内置的二进制系列化格式encoding/gob,它可以帮助以最小的代价来传输数据,缺点是这种方式使用了反射,且需要暴露字段。
作者:守望先生 ID:shouwangxiansheng 如果秉承着能跑就行的态度写shell脚本,是很自在的,但是如果你想要写出健壮,可靠的shell脚本,可没那么容易。...而为了保证脚本健壮可靠,那么就需要保证脚本在一些特殊的情况及早出现,避免漏网之鱼。来看看有哪些可行的技巧。 脚本失败时即退出 可以在脚本的开头设置如下: set -e 举个例子: #!...显示未定义的变量 shell中变量没有定义,仍然是可以使用的,但是它的结果可能不是你所预期的。举个例子: //来源:公众号【编程珠玑】 //作者:守望先生#!...,如果不想这样的情况发生,那么这样设置是有帮助的。...总结 实际上最开始介绍的脚本检查工具就已经非常有效了,基本的错误都能检查出来,而其他的内容,更多的是关注于脚本调试,不放过任何一个可能的错误。 最后,还是优先推荐shellcheck工具。
多年的IT生涯,一直希望自己写的程序能够有很强的健壮性,也一直希望能找到一个高可用的标杆程序去借鉴学习,不畏惧内存溢出、磁盘满了、断网、断电、机器重启等等情况。...今天我们就一起来看看Redis的设计者,一名来自意大利的小伙,是如何打造出一个超强健壮性和高可用性的程序,从而不惧怕这些情况。...如下图所示其中有个“expires”的字典就保存了设置过期时间的键值对。而Redis的过期策略也是围绕它来进行的。 ?...三、Redis的哨兵模式——可战到最后一兵一卒的高可用集群 内存满了不会挂,服务器宕机重启也没问题。足见Redis的程序健壮性已经足够强大。...这就是Redis,一个“高可用、强健壮性”的标杆程序!
1 引言 这一系列对数据科学世界中常见的任务提供了一些代码作为参考。本文主要涵盖 Python、R、Unix、Excel、Git和Docker等语言的提示(Tips)。...Bad" for i in x] ['Bad', 'Bad', 'Neutral', 'Good', 'Good', 'Good', 'Neutral', 'Bad', 'Bad'] 3.4 一个shebang.../usr/bin/python3 在许多.py文件中,脚本顶部可能出现shebang行。它的作用是设置解释器的位置。通过在脚本顶部添加#!.../usr/bin/python3,即可在Unix系统上运行文件.py,并且系统会自动将其识别为一个Python脚本。或者,也可以将脚本作为python3 file.py运行。.../usr/bin/python3 print("Hello shebang line") 我们也可以在Unix上运行: $ ./file.py
root.left: s.append(root.left) return result 5,Leetcode-513: # leetcode-513:查找树的左下角值...self.getHeight(root.right) return max(left_height, right_height) +1 class Solution: # 这个解决方案的逻辑错误点在哪
arr = [0] * 26 for c in s: arr[ord(c) - ord('a')] += 1 # 给对应字母计数;ord()函数:返回对应的ASCII...= {} for c in s: dic[c] = dic.get(c, 0) + 1 # dict.get(key, default=None):返回指定键的值...t: str) -> bool: return sorted(s) == sorted(t) 2,Leetcode-232: # leetcode-232: 栈,队列 # 把python中的list...nums: if cnt == 0: majority = num if majority == num: # 众数的cnt...if ret < len(s): ret += 1 # 回文的中间元素可以是出现一次的元素 return ret 7,Leetcode-378
problems/climbing-stairs/ # leetcode-70: ''' 斐波那契数列问题:一共n阶台阶,倒数第一步时,无视前面怎么走,有两种走法: 1.走一步 2.走两步 两种走法的走法种数相加就是...n阶台阶的情况下的所有种数,即:f(n)=f(n-1)+f(n-2)''' class Solution: # 战胜78.16% def climbStairs(self, n: int) -...https://leetcode.com/problems/letter-combinations-of-a-phone-number/ # leetcode-17: 递归 # 列表形式: O(3^n)的时间复杂度...', 'def', 'ghi','jkl', 'mno', 'pqrs', 'tuv', 'wxyz'] if l == 1: # 当递归到digits只有一个数字时,这是一个递归的终结者...leetcode-46: # 递归(回溯法):战胜了72.70% class Solution: def __init__(self): self.res = [] # 定义类中的全局变量
object): # 同样是二分查找,这种写法超时 def mySqrt(self, x): if x <= 1: return x # 考虑到0,1的情况
3金伟强.jpg 健壮性(Robustness) 是指程序在遇到规范以外的输入,错误和异常时,仍能正常运行。简单来说,健壮代码的适应性很强,不会因为一些异常,就导致程序崩溃。...不健壮的前端代码体现为: 接口返回异常或报错时,页面白屏。 用户做一些非常规操作时,页面白屏。 如何写出健壮的前端代码 ---- 要写出健壮的前端代码,就要处理规范以外的输入,错误和异常。...3 写法优化 很多写法优化能提升代码健壮性。这里介绍 2 点。 1 switch 都需要有 default 来做异常或默认情况的处理。...4 第三方库的选择 使用第三库,可以减少造轮子,从而提升开发效率。但如果第三方包不健壮,用到第三方包的功能也就不健壮了。 健壮的第三方库是成熟,稳定的。...健壮性的测试方法 ---- 可以用猴子测试来测试代码的健壮性。 猴子测试(Money Test),也称搞怪测试。在软件测试中,测试者可以进行各种稀奇古怪的操作模式,用以测试软件的健壮性。
root.right), self.invertTree(root.left) # 递归 return root 2,Maximum Depth of Binary Tree(二叉树的最大深度
目录: 1,leetcode-200(岛屿的个数) 2,leetcode-36(有效的数独) 3,leetcode-146(LRU) 4,leetcode-10(正则表达式匹配) 5,leetcode-...64(最小路径和) 6,leetcode-322(零钱兑换) 7,leetcode-121(买卖股票的最佳时机) 8,leetcode-152(乘积最大子序列) 9,leetcode-120(三角形最小路径和...) 1,Number of Islands(岛屿的个数): 英文版:https://leetcode.com/problems/number-of-islands/description/ 中文版:https...if grid[nr][nc] == "1": self.dfs(grid, nr, nc) 2,Valid Sudoku(有效的数独...循环中,继续遍历下一个value1中的元素v elif not visited[newval]: visited[
一),二分法思想: 1,leetcode-69:Sqrt(x) (x 的平方根) 英文版:https://leetcode.com/problems/sqrtx/ 中文版:https://leetcode-cn.com...if s > x: r = res 2,leetcode-167:双指针 双指针主要用于数组,两个指针指向不同的元素
一,栈: 1,Valid Parentheses(有效的括号) 英文版:https://leetcode.com/problems/valid-parentheses/ 中文版:https://leetcode-cn.com...2,Longest Valid Parentheses(最长有效的括号) 英文版:https://leetcode.com/problems/longest-valid-parentheses/ 中文版
leetcode.com/problems/majority-element/ 中文版:https://leetcode-cn.com/problems/majority-element/ 见证python暴力的时候到了...,一行代码搞定: return sorted(nums)[int(len(nums)/2)] Missing Positive(求缺失的第一个正数) 英文版:https://leetcode.com/problems...leetcode.com/problems/reverse-string/ 中文版:https://leetcode-cn.com/problems/reverse-string/ 用python自带的函数反而是用时最少的...Reverse Words in a String(翻转字符串里的单词) 英文版:https://leetcode.com/problems/reverse-words-in-a-string/ 中文版
动态规划,回溯法,广度优先搜索(DFS) 目录: 1,Leetcode-416 2,Leetcode-17 3,Leetcode-64 4,Leetcode-7...
领取专属 10元无门槛券
手把手带您无忧上云