有口碑的宁波网站建设信息流优化师招聘

pingmian/2026/1/23 23:49:23/文章来源:
有口碑的宁波网站建设,信息流优化师招聘,夏邑县百城建设提质网站,しょうじょ少女直播确保代码完整性 在撸业务代码时候#xff0c;经常面对的是接口的设计#xff0c;在设计之初#xff0c;我们必然要先想好入参#xff0c;之后自然会有参数的校验过程#xff0c;此时我们需要把可能的输入都想清楚#xff0c;从而避免在程序中出现各种纰漏。但是难免面面…确保代码完整性 在撸业务代码时候经常面对的是接口的设计在设计之初我们必然要先想好入参之后自然会有参数的校验过程此时我们需要把可能的输入都想清楚从而避免在程序中出现各种纰漏。但是难免面面俱到有什么办法能覆盖整个入参的校验呢我们可以考虑黑盒测试用测试用例去覆盖我们编码之前考虑测试用例如果能先设计黑盒测试的测试用例那么自然我们需要注意的校验点就出来了。我们一般都从功能测试边界测试负面测试三方面设计测试用例确保代码的完整性。 错误的处理 我们在编码过程中会遇到各种各样的异常情况我们有3中方式将错误信息床底给函数的调用者。 第一种函数的返回值来告知调用者是否出错比如我们在API设计的时候给定返回对象中有一个状态用状态引擎的方式给定调用者具体的调用成功与否并且在返回值中给定错误对象信息这种方案最大的问题是使用不方便因为我们不能直接吧计算结果给调用方同时也不能将函数的计算结果直接作为参数传递给其他函数。第二种定义一个全局变量在发生错误时候我们设置全局变量值为某个特殊值这种方法比第一种要方便因为调用者可以直接使用返回值我们可以设计一个特定的函数用来判断返回值的分析判断是否错误。这种方案也有问题在于全局变量可能被人遗忘因为N多个调用方我只关注你给的调用结果你的实现多调用方应该透明。第三种异常这是微服务调用中常用的方式当函数运行异常时候我们抛出一个自定义异常。函数调用者更具异常信息就能知道错误原因从而做相应处理。这种问题在于抛出异常会打乱正常的执行顺序对程序的性能会有影响。 数值的整数次方 案例实现函数 double powerdouble base int exponent 求base的exponent次方不能使用函数库同时不需要考虑大数问题。 在java.lang包中有pow函数可以用来求乘方以上问题求解类似于pow函数的功能初见题目其实非常简单可以用一个循环得出如下代码 public static double power(double base, int exponent){if(base 0 || base 1){return base;}if(exponent 0){return 1d;}if(exponent 1){return base;}double result 1.0;for (int i 0; i exponent; i) {result * base;}return result;}指数次幂的大小直接左幂次的乘法如上只考虑了正整数次幂显然不是正确的解法我们可以有如下优化 /*** 求解一个数base 的exponent次幂* */public static double power(double base, int exponent){if(base 0 || base 1){return base;}if(exponent 0){return 1d;}if(exponent 1){return base;}double result 1.0;for (int i 0; i Math.abs(exponent); i) {result * base;}if(exponent 0){return result;}return 1/result;}如上实现方案中已经考虑到了边界值正负次幂情况基本上是一个健全的实现方案但是还有优化的空间例如我们在double的比较中直接判断的是base 0此处是有问题的因为在计算机内标识小数的时候double和float类型小数直接用 这种方式判断是误差的我在之前价格计算遇到的问题相关文章中也有过详细的解释。修改后判断两个小数是否相等只能判断他们只差的绝对值是不是在一个很小的范围内如果相差很小可以认为相等我们将 等于判断用如下equal方法电梯 /*** 浮点数判断是否相等* */public static boolean equals(double num, double num1){if((num - num1 -0.00000001) (num - num1) 0.00000001 ){return true;}return false;}最高效率的解法在上面的解法中每次求值都需要循环exponent次在求解数值的幂次时候我们想到的了之前 递归与循环中讲到的斐波那契数列的非大众解法也是时间复杂度最低的解法我们先有如下公式 情况一 anan/2∗an/2,n为偶数a^n a^{n/2}* a^{n/2} , n为偶数 anan/2∗an/2,n为偶数 情况二 ana(n−1)/2∗a(n−1)/2∗a,n为奇数a^n a^{(n-1)/2}* a^{(n-1)/2}*a , n为奇数 ana(n−1)/2∗a(n−1)/2∗a,n为奇数 我们求解a的n次幂可以按照如上公式来解决时间复杂度是O(nlogn)因此自然的想到了递归实现方式。如下实现 /*** 实现Math.pow(a,b)* */public static double powerWithUnsignedExponent(double base, int exponent){if(base 0 || base 1){return base;}if(exponent 0){return 1d;}if(exponent 1){return base;}double result powerWithUnsignedExponent(base, exponent 1);result*result;if((exponent 1) 1){result*base;}return result;}以上我们用二分法的思想做递归并在判断奇数偶数的地方用与操作进行判断奇数的二进制位 低位必然是1偶数正好相反是 0 因此我们让原数与 1 进行与操作可以区分出奇偶性。位运算相关的知识在之前的文章 数据结构与算法–位运算中有详细介绍。 打印1 到最大的n位数 题目输入数字n 按顺序打印出从1 到最大的n为十进制数。比如输入3则打印出1,23…999。 题目看去来非常简单一个循环可以搞定我们有如下代码 /*** 打印 1 ~ n位最大整数* ex n3 1~999* */public static void print1ToMaxOfNDigits(int n){int number 1;int i 0;while(i n){number *10;}for (int i1 0; i1 number; i1) {System.out.println(i1);}}看起来是没有问题并且程序能正常执行但是这里没有考虑到整数的表示范围问题 整型数据 32 位4 个字节能标识的范围是 -231 ~ 2 32长整型数据64位8 字节能标识的范围 -263~ 264 但是以上案例中的n是没有上限的也就是我们无论用long还是int都会达到最大数据无法标识问题因此必须用其他方案来实现这次的累加可以用字符串或者字符数组来模拟累加的操作。通过以上分析我们需要解决两件事情 用字符串标识数字上的模拟加法打印用字符串表达的数字。 有如下代码 /*** 打印 1 ~ n位最大整数* ex n3 1~999* */public static void print1ToMaxOfNDigitsByChars(int n){if(n0){return;}char[] number new char[n];for (int i 0; i number.length; i) {number[i] 0;}while (!increment(number)){printCharArr(number);}}/*** 字符模拟加法*/public static boolean increment(char[] chars){boolean isOverflow false;int takeOver 0;for (int i chars.length-1; i 0; i--) {//添加进位初始为0不影响int nSum chars[i] - 0 takeOver;//1 操作if(i chars.length-1 ){nSum ;}if(nSum 10){if(i0){isOverflow true;}else {nSum - 10;takeOver 1;chars[i] (char) (0 nSum);}}else {chars[i] (char)(0 nSum);break;}}return isOverflow;}/*** 打印数字取出首字母中0* */public static void printCharArr(char[] chars){if(chars null || chars.length 0){return;}boolean begin true;for (int i 0; i chars.length; i) {if(begin chars[i] ! 0){begin false;}if(!begin){System.out.print(chars[i]);}}System.out.println();}以上代码increment实现字符串number上的 加法printCharArr负责打印。 increment 需要注意的是进位的规则实现已经数据是否越界因为我们需要打印的是N位数当 我们遍历到 第N 位的时候并且第N位的大小 10 此时触发进位规则的时候就达到了我们的最大值。 printCharArr 打印功能虽然简单但是在字符串标识的数字中必然会有前n-x位的字符是无需打印的 ‘0’ 因为我们需要将093打印成 93 才是我们程序需要的值我们用一个标志位begin 来遍历之前的所有0 当达到第一个非0 操作的时候将begin标志位设置为true。才开始打印后面的字符。 终极解法以上思路是完全可以实现的但是用字符串来实现加法的 复杂度过于高即使我们能在短时间内写出来很可能也会有纰漏我们换一种思路我们需要打印0 ~ 999 也就是一个三位字符数组每一位数组都是0~ 9 这10 中情况我们将他看成一个排列组合只要将所有情况按照排列组合的顺序打印出来就可以变相的完成累加的工作。 全排列用递归表示非常容易。数字的第一位设置0~9 然后递归设置下一位0 ~ 9依次递归到第n位。如下实现 /*** 递归打印1 ~ 最大n位整数* */public static void print1ToMaxOfNDigitsRecursively(int n){if(n 0){return;}char[] number new char[n];for (int i 0; i number.length; i) {number[i] 0;}for (int i 0; i 10; i) {number[0] (char)(i0);print1ToMaxOfNDigitsRecursively(number, 0);}}public static void print1ToMaxOfNDigitsRecursively(char[] number, int index){if(index number.length -1){printCharArr(number);return;}for (int i 0; i 10; i) {number[index 1] (char)(0 i);print1ToMaxOfNDigitsRecursively(number, index 1);}} 如上递归实现我们在递归中只有在最高位完成字符串设置的时候才开始打印index number.length -1因为我们将整个字符数组看成是一个排列的一种可能性即使这个数字是001 我们也必须设置完后面的两个 0 才开始打印。 启示录 第一个陷阱在于大数问题需要找到合适的数据结构来表示大数据问题。第二个在于时间复杂度每个算法都应该考虑时间复杂度应该思考不同的方法时间效率问题。第三个考虑问题的全面新在整数的 n次幂问题中需要考虑到非常多的边界问题很多会忽略底数为0 指数为负的情况第四个还是n次幂中对效率的需求这个数学公式的运用还是需要靠积累靠临时来想是不可能的 上一篇数据结构与算法–位运算 下一篇数据结构与算法–代码鲁棒性案例分析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/86373.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

商丘网站制作推广网站建设是指

通过上一篇文章的介绍,我们已经了解到了在CorelDRAW中如何自定义设置默认字体,相关阅读可参阅:CDR X8设置文字为默认字体。其实在CorelDRAW软件中给用户提供方式不止是一种,本文将介绍更多关于设置默认字体的方法。1. 打开CorelDR…

自己怎么用h5做网站国家信息公示系统

glibc提供了backtrace这个库函数,可以用来打印call stack。比如我们可以在程序中注册常见的一些signal,比如SIGSEGMENT, SIGPIPE,然后在这些信号的回调函数中,利用backtrace打印出call stack,这样debug就非常的方便。 …

网站开发系统设计苏州网站制作计划

文章目录 生成随机值生成随机数生成范围内随机数生成自定义类型随机值从一组字母数字字符创建随机密码从一组用户定义字符创建随机密码 总结 生成随机值 rust中官方并没有像以他语言一样,rust并没有官方并没有提供生成随机数的工具,所以我们要借助rand包…

电子政务和网站建设工作的总结seo关键词优化平台

测量矩阵的基本概念 在压缩感知(Compressed Sensing,CS)理论中,测量矩阵(也称为采样矩阵)是实现信号压缩采样的关键工具。它是一个通常为非方阵的矩阵,用于将信号从高维空间映射到低维空间&…

企业网站网上推广的途径网站开发有哪些类型

一、 数据规范化 1.1 数据规范化的概念 定义 数据规范化是数据库设计中的一种方法,通过组织表结构,减少数据冗余,提高数据一致性和降低更新异常的过程。这一过程确保数据库中的数据结构遵循一定的标准和规范,使得数据存储更加高…

网站建设所用软件手机网页游戏排行榜2021前十名

总览 Exchanger类在线程之间传递工作和回收使用的对象方面非常有效。 AFAIK,它也是最少使用的并发类之一。 但是,如果您不需要GC,则使用ArrayBlockingQueue进行日志记录会更简单。 交换器类 Exchanger类对于在两个线程之间来回传递数据很有…

网站搭建南京微信平台商城开发

背景:润乾报表 win上面的项目直接上传到linux 上,但预览&下载报表时乱码如果含有斜线的单元格或统计图的报表在网页上发布时,统计图或斜线单元格里的汉字会变成小方框,此时往往是服务器端操作系统的中文安装包没有装全&#x…

如何做网站规范网站升级中

前言 在很多第一人称或者第三人称射击游戏的单人模式中,玩家的乐趣往往来源于和各式各样的AI敌人的战斗。而战斗的爆发很多时候是因为这些AI在“看见”玩家后就会立即做出反应,比如开火、呼叫同伴、躲藏或者逃跑等。 所以这些AI到底是如何探测&#xff0…

为什么做不了自己的网站y-m-d WordPress

AttributeError: ‘set’ object has no attribute ‘items’ 出现这个问题,原因可能是定义的header有问题 正确如下: header{“key”:“value”} 如果是直接在请求数据中复制,很有可能会忽略键和值的冒号。

电商的网站开发订单返利功能湖南外贸网站建设

文章目录一、前置准备1. 技术选型2. 创建vue项目二、Rem 布局适配2.1. px转rem2.2. 设置 rem 基准值2.3. 配置vue.config.js2.4. 重置样式表2.5. 配置样式表2.6. 安装less2.7. 注册less2.8. 代码中使用三、vant安装/配置/测试3.1. 安装vant-ui3.2. 引入与注册3.3. vant测试四、…

网站开发平面设计师岗位要求关键词推广和定向推广

简介: K8s 取其精华去其糟粕,是我们程序员应该做的事情。 K8s设计模式 Kubernetes是一个具有普遍意义的容器编排工具,它提供了一套基于容器构建分布式系统的基础依赖,其意义等同于Linux在操作系统中的地位,可以认为是…

创业网站怎么做域名注册哪个好

正常情况下是没有手机上画电子围栏的,公共平台上我也没找到,所以走了一个歪点子,就是给地图添加点击事件,记录点的位置,在画到电子围栏上就是添加电子围栏了,如果只是显示电子围栏就简单了 一、多边形电子…

购物网站开发所用技术台州网站建设方案咨询

数组结构赋值 let [a,b][1,2] //交换两个变量的值 let[a,b][b,a] //扩展运算符的运用 let[a,...b][1,2,3]  //有默认值 右侧的参数等于undefined,默认值生效 let[a3,b][1,2] 对象结构赋值 let {a:a,b:b}{a:1,b:2};let {a,b}{a:1,b:2}let{a,...b}{a:1,b:2,c:3}

行政审批网站建设规范软件开发3000人天报价标准

这三点是webpack优化策略的一部分,具体解释如下: 优化正则匹配(Test):在webpack的配置中,test属性是一个正则表达式,用于匹配需要应用该loader的文件的扩展名。在您提供的代码中,te…

网站制作学校要的相城区公司网站建设

0:前言 🪧 什么情况需要数据库? 1 大规模的数据需要处理(比如上千上万的数据量)2 需要把数据信息存储起来,无论是本地还是服务上,而不是断电后数据信息就消失了。 如果不是上面的原因化,一般…

做网站会遇到哪些问题宁波网站建设i sp.net

通过编程实现PDF转PPT的功能,可以自动化转换过程,减少手动操作的工作量,并根据需要进行批量转换。将PDF文件转换为PPT文档后,可以利用PPT的丰富功能和动画效果,达到更好的演示效果。 在Java中,我们可以使用…

网站后端技术有哪些网站开发设计怎么找客户

Netty的ChannelFuture在Netty中的所有的I/O操作都是异步执行的,这就意味着任何一个I/O操作会立刻返回,不保证在调用结束的时候操作会执行完成。因此,会返回一个ChannelFuture的实例,通过这个实例可以获取当前I/O操作的状态。Chann…

信息管理系统网站开发教程江苏省建设招标网站

场景是这样,假设有一台设备会触发类型为Alarm的告警信号,并把信号添加到一个Queue结构中,每隔一段时间这个Queue会被遍历检查,其中的每个Alarm都会调用一个相应的处理方法。问题在于,检查机制是基于多线程的&#xff0…

龙岗网站建设网站制作微信官方网站怎么进入

一、学习目标 了解如何在图片中加入文字了解如何使用鼠标进行图像绘制 二、了解如何通过鼠标进行图像绘制 2.1 了解putText方法的使用 putText方法接收图像,文字内容, 坐标 ,字体,大小,颜色,字体厚度这…

网站开发毕设设计论文建设网站的

作者 | 小枣君来源 | 鲜枣课堂2021年,全球5G网络建设和发展取得了不俗的成绩。根据GSA于8月发布的数据,已有70多个国家及地区的超过175家运营商,推出了5G商用服务。还有285家运营商,正在投资部署5G。中国的5G建设步伐,…