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

Java代码评审歪诗!让你写出更加优秀代码!

验-言 公共方法都要做参数校验,参数校验不通过明确抛出异常或对应响应码: Java Bean验证已经是一个很古老技术了, 会避免我们很多问题; 在接口中也明确使用验证注解修饰参数和返回值, 作为一种协议要求调用方按验证注解约束传参...-勋 不要在循环中调用服务,不要在循环中数据库等跨网络操作; 频-品 写每一个方法时都要知道这个方法调用频率,一天多少,一分多少,一秒多少,峰值可能达到多少,调用频率高一定要考虑性能指标,考虑是否会打垮数据库...日-日 打印日志和设定合理日志级别,如有必要要添加if条件限定是否打印日志,在日志中使用JSON序列化,生成长字符串toString()都要做if限定打印,否则配置日志级别没达到,也会做大量字符串拼接...偶-偶 认识系统之间耦合关系,通过同步数据来做两个系统之间交互是一种很强耦合关系,会使数据接收方依赖于数据发送方数据库定义,如果发送方想改数据结构,必须要求下游接收方一起修改;通过接口调用是一种常见系统耦合关系...考虑各种边界条件输出, 比如运单号查询服务, 要考虑用户输入错误运单时怎么返回, 有边界查询条件, 如果用户查询条件超过边界了, 应该返回什么; 为失败做设计,如果出问题了有降级应对方案。

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

京东资深架构师代码评审歪诗

: 不要在循环中调用服务,不要在循环中数据库等跨网络操作 频: 写每一个方法时都要知道这个方法调用频率,一天多少,一分多少,一秒多少,峰值可能达到多少,调用频率高一定要考虑性能指标,...,如有必要要添加 if 条件限定是否打印日志,在日志中使用 JSON 序列化,生成长字符串 toString() 都要做 if 限定打印,否则配置日志级别没达到,也会做大量字符串拼接,占用很多 gc...另外一定要通过log4j打印日志而不是直接把日志打印到控制台。...偶: 认识系统之间耦合关系,通过同步数据来做两个系统之间交互是一种很强耦合关系,会使数据接收方依赖于数据发送方数据库定义,如果发送方想改数据结构,必须要求下游接收方一起修改;通过接口调用是一种常见系统耦合关系...考虑各种边界条件输出,比如运单号查询服务, 要考虑用户输入错误运单时怎么返回,有边界查询条件,如果用户查询条件超过边界了, 应该返回什么 为失败做设计,如果出问题了有降级应对方案。

4.7K30

异步,同步,阻塞,非阻塞程序实现

如果是同步,线程会等待接受函数返回值(或者轮函数结果,直到查出它返回状态和返回值)。如果是异步,线程不需要做任何处理,在函数执行完毕后会推送通知或者调用回调函数。...yzh start # 等待1s 打印 yzh is over 打印 zhh start # 等待1s 打印 zhh is over 阻塞后果 上面的代码,如果调用次数很多,则最后一个人要等待之前所有的人阻塞结束...在web项目中,这是很可怕。所以我们需要引入非阻塞。非阻塞就是为了让一个响应操作,不影响另一个响应。否则,当A用户在访问某个耗时巨大网页时,B用户只能对着白板发呆。...它能让响应神奇变成: 打印 yzh start 打印 zhh start # 等待1s左右 打印 yzh is over 打印 zhh is over 这个异步sleep函数,似乎在单进程下,让每个函数互相不影响...上面的代码中,在一个while循环中timer状态。由于timer存在于wait中。所以需要把timer“提取”出来。

7.5K10

JAVA语言程序设计(一)04747

; //第六行代表打印输出语句,万年不变 } } //第三行第三个单词必须和所在文件名称完全一样,大小写也要一样。...//public class 后面代表定义一个类名称,类是java当中所有源代码基本组织单位 关键字概念与特征 完全小写字母 根据编辑器去分。。...类 接口 Lambda 基本数据类型 字符串不是基本类型,而是引用类型 浮点型可能只是一个近似值,并非精确数据范围与字节数不一定相关,列:float 浮点数当中默认是double...基本数据类型:byte、char、int、short 引用数据类型:String、enum枚举 switch语句很灵活、遇到break结束 坏结构基本组成部分,一般可以分成四部分 初始化语句:在坏开始最初执行...,而且只做唯一一次 条件判断:如果成立,则坏继续,不成立坏退出 坏体:重复做事情内容,若干行语句 步进语句:每次坏之后要进行扫尾工作,每次坏结束都要这样 for坏 while

5.1K20

滚雪球学Java(17):探索循环控制:JavaSE中break与continue秘技

但在某些情况下,我们可能需要在循环中提前退出或跳过某些迭代。这时我们可以使用Java两个循环控制语句:break和continue。...循环体内语句是打印当前i值。所以,这段代码将会打印出0、1、2、3、4这五个数字,然后跳出循环。   break语句也可以嵌套使用。...例如,下面的代码演示了如何在嵌套for循环中使用break语句: outer: for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++...在内层循环中,使用 System.out.println(i + "," + j) 来打印当前 i 和 j 值。   ...因此,代码执行结果是打印出 "0,0"。 continue语句   continue语句用于跳过当前循环中剩余代码,然后开始下一次迭代。

10221

Java 基础篇】Java 异常处理指南:解密异常处理关键技巧

本篇博客将向你介绍 Java 中异常基础知识,帮助你理解什么是异常、为什么需要异常处理以及如何在代码中处理异常。 什么是异常?...在 Java 中,异常(Exception)是一种在程序执行过程中可能会发生错误或异常情况。异常可以表示各种问题,例如: 用户输入了无效数据。 文件不存在或无法访问。 网络连接中断。...IOException:用于处理输入输出操作中异常,文件读写。 SQLException:用于处理数据库操作中异常。 NumberFormatException:当字符串无法解析为数字时引发。...避免循环内异常:在循环中引发异常可能会导致性能问题,因此应该尽量避免在循环内部引发异常。...总结 异常处理是 Java 编程重要部分,它使我们能够更加健壮地编写代码,应对不可避免错误情况。通过使用异常,我们可以更好地理解和管理代码中问题,提供更好用户体验。

28220

【Rust日报】2020-05-18 Castor, WASM, Rust嵌套循环

/二进制代码,在提供沙盒式运行时环境同时, 可以让用户提供定制跟编程环境分离runtime....(i) } Rust语言循环没有说明iteration(i++)每一个指针步增时候情况, 也没有说明如何在(i<10)前如果步进到下一步,仅仅是让iterator走完。...("{}", x); } 关键词continue都是跟所有语言一样,在这个例子中当x>5并且x<7时候在循环中continue到下一个iteration中而不打印,这样结果是: 0 1 2 3 4...("{}", x); } 打印结果: 0 1 2 3 4 5 嵌套循环: 在很多编程语言,嵌套循环都非常诡异,比如,我们如何在一个嵌套循环中让外循环继续条件建立在内循环里呢?...("x: {}, y: {}", x, y); } } 打印: x: 0, y: 0 x: 0, y: 1 x: 0, y: 2 利用``outer`标签使得直接控制从哪个循环中断出来非常清晰

80820

第一章习题

如果程序不合法,原因何在?应该如何修正? 答:不合法。第一行和第二行输出流被分号终止了。...练习 1.10 :除了++运算符将运算对象值增加1之外,还有一个递减运算符(-)实现将值减少1.编写程序,使用递减运算符在循环中按递减顺序打印出10到0之间整数。...练习 1.11: 编写程序,提示用户输入两个整数,打印出这两个整数所指定范围内所有整数。 代码: // ConsoleApplication2.cpp : 定义控制台应用程序入口点。...1.18 : 编译并运行本节程序,给它输入全都相等值,再次运行程序,输入没有重复值。...练习 1.19 : 修改你为1.4.1 练习1.10(第11页)所编写程序(打印一个范围内数),使其能处理用户输入第一个数比第二个数小情况。

92340

java基础学习_IO流04_用户登录注册案例(IO版)、数据操作流(操作基本数据类型流)、内存操作流、打印流、标准输入输出流、随机访问流、合并流、序列化流(对象操作流)、Properties属性集

java基础学习_IO流04_用户登录注册案例(IO版)、数据操作流(操作基本数据类型流)、内存操作流、打印流、标准输入输出流、随机访问流、合并流、序列化流(对象操作流)、Properties属性集合类...:   1:用户登录注册案例(IO版)   2:数据操作流(操作基本数据类型流)(理解)   3:内存操作流(理解)   4:打印流(掌握)   5:标准输入输出流(理解)   6:随机访问流(理解)...  7:合并流(理解)   8:序列化流(对象操作流)(理解)   9:Properties属性集合类(理解)   (1)Properties类概述   (2)Properties类特有功能...cn.itcast.pojo(用户层) User.java cn.itcast.dao(接口层) UserDao.java cn.itcast.dao.impl...UserTest.java

70710

和阿里面试官互喷程序异常处理最佳实践!

而且吞二方接口异常,有些业务异常中包含错误原因(包含xxx敏感词汇、标题不能超过20个字等)无法传给上层再封装给前端,可能会造成出错后用户懵逼,被投诉。...比如用户输入了某个敏感词汇,调用二方接口时 “吞掉” 了敏感词汇业务异常提示(输入中包含 xx敏感词),用户通过技术支持咨询,开发人员要查日志才能知道具体错误原因(如果此处没打印日志,可能连日志都没得查...3 循环中异常处理问题 特别注意循环代码异常处理对程序影响。 案例1 ? 在写代码时这种场景非常常见,如果不对循环代码进行捕捉,如果循环中出现异常,后续代码则无法执行。...4 最佳实践 4.1 权衡是否吞异常 在二方服务封装时,捕捉异常,应打印出查询参数和异常详情。 实际开发中,一般都不会吞异常,遇到吞异常场景要慎重思考是否合理。...另外,正如第二部分给出范例所示,如果调用二方接口出现异常没有打印日志,将对排查问题造成很大困难。 受检异常 非受检异常 Java异常主要分为两类:受检异常和非受检异常。

50730

关于“Python”核心知识点整理大全6

: 这些命名约定有助于你明白for循环中将对每个元素执行操作。...使用单数和复数式名称, 可帮助你判断代码段处理是单个列表元素还是整个列表。 4.1.2 在 for 循环中执行更多操作 在for循环中,可对每个元素执行任何操作。...使用for循环处理数据是一种对数据集执行整体操作不错方式。...例如,你可能使用for 环来初始化游戏——遍历角色列表,将每个角色都显示到屏幕上;再在循环后面添加一个不缩进 代码块,在屏幕上绘制所有角色后显示一个Play Now按钮。...由于1处代码行被缩进,它将针对列表中每位魔术师执行一次,2所示 Alice, that was a great trick!

9310

常见负载均衡策略「建议收藏」

负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效方法扩展服务器和网络设备带宽、加强网络数据处理能力、增加吞吐量、提高网络可用性和灵活性。...基于这个前提,轮调度是一个简单而有效分配请求方式。然而对于服务器不同情况,选择这种方式就意味着能力比较弱服务器也会在下一轮循环中接受轮,即使这个服务器已经不能再处理当前这个请求了。...因此可能发生,服务器 B 服务器收到连接比服务器 A 少但是它已经超载,因为 服务器 B 上用户打开连接持续时间更长。这就是说连接数即服务器负载是累加。...所有服务器在虚拟服务上响应时间总和加在一起,通过这个值来计算单个服务物理服务器权重;这个权重值大约每 15 秒计算一次。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。...发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

6.6K30

14-1-网络芯片CH395Q学习开发-WEB服务器-网页到底是啥, web服务器是啥, 网页如何显示显示图片和视频

测试本节代码(STM32F103xxxx) 1.提供了3个程序,网页功能渐进 可以让用户彻底理解网页是神么. ? 2.用户可以使用杜邦线根据自己情况设置和连接引脚 ? 3,注意!...注意,连接路由器或者交换机时候是连接其LAN口. ? ? 5.把第一个程序下载程序到单片机 ? 正常情况下会打印模块IP地址 ? 6.在浏览器上输出这个IP地址 ?...程序说明 1.首先用户需要明白事情 想让浏览器展示网页,其实就是把网页程序代码发给浏览器....也可以输入端口号,列 192.168.0.102:8888 咱先看看下面的真实过程吧. 2,大家伙可以用TCP调试助手模拟为一个WEB服务器 开一个TCP服务器,端口号为8888,设置成自动回复网页数据...图片呢都有格式哈,列 jpeg格式图片 视频呢就是一张张图片切换显示很快,就是视频啦. 1.准备一张jpeg图片,用QQ截图,记得截小一点哈 ? 保存格式选择 jpeg ?

1.4K10

听听ChatGPT对IT行业发展和就业前景看法

== True: print(i,end=" ") 运行结果: 循环语句 和 判断语句 可以同时使用,循环里面可以嵌套判断,判断里面可以嵌套 (2)计算1-100偶数之和...for i in range(1,101): if i % 2 == 1: print("hello") continue #continue 在循环中使用与后面语句缩进无关...因此,AI技术相关职位需求将会越来越多,包括机器学习工程师、数据科学家、算法工程师等。 大数据:对数据进行整理、分析和利用能力是企业所需要。...大数据工程师、大数据分析师、数据挖掘工程师等是目前比较热门职业。 前端开发:随着移动互联网普及,前端开发在IT行业中扮演着越来越重要角色。...IT技术发展为人类生产和生活带来了前所未有的巨大变化,极大地提高了生产效率和生活品质,同时也带来了一系列社会问题,网络安全和人们隐私安全,但总的来说,IT技术发展在推动着现代社会进步和发展

12010

关于“Python”核心知识点整理大全14

不管用户输入是什么,都 将存储到变量message中并打印出来;接下来,Python重新检查while语句中条件。...在while循环中,我们在用户输入后使用一条if语句来检查变量message值。如果用户输入 是'quit'(见3),我们就将变量active设置为False,这将导致while循环不再继续执行。...如果 用户输入不是'quit'(见4),我们就将输入作为一条消息打印出来。 这个程序输出与前一个示例相同。...7.3 使用 while 循环来处理列表和字典 到目前为止,我们每次都只处理了一项用户信息:获取用户输入,再将输入打印出来或作 出应答;循环再次运行时,我们获悉另一个输入值并作出响应。...然而,要记录大量用户和信息, 需要在while循环中使用列表和字典。 for循环是一种遍历列表有效方式,但在for循环中不应修改列表,否则将导致Python难以 跟踪其中元素。

10010

SQLSERVER 存储过程 语法

(**) 一、简介:    存储过程(Stored Procedure), 是一组为了完成特定功能SQL 语句,集经编译后 存储在数据库中,用户通过指定存储过程名字并给出参数...,如果该存储过程带有参数来执行 它, 在SQL Server 系列版本中,存储过程分为两类:系统提供存储过程和用户自定义存储过程 。...用户自定义存储过程是由用户创建,并能完成 某一特定功能,:查询用户所需数据信息存储过程。   ...3.存储过程能够减少网络流量    对于同一个针对数据数据库对象操作,查询修改,如果这一操作所涉及到Transaction-SQL 语句被组织成一存储过程,那么当在客户计算机上调用该存储过程时...TRUNCATE TABLE 通过 释放存储表数据所用数据页来删除数据,并且只在事务日志中记录页释放。

2.6K20

Java】Stream流、方法引用

最后进行对结果进行打印输出。 每当我们需要对集合中元素进行操作时候,总是需要进行循环、循环、再循环。这是理所当然 么? 不是。 环是做事情方式,而不是目的。...Stream (流)是一个来自数据元素队列 元素是特定类型对象,形成一个队列。 Java Stream 并不会存储元素,而是按需计算。 数据源 流来源。...根据 Map 获取流 java.util.Map 接口不是 Collection 子接口,且其 K-V 数据结构不符合流元素单一特征,所以获 取对应流 需要分 key 、 value...备注:本小节之外更多方法,请自行参考 API 文档 逐一处理: forEach 虽然方法名字叫 forEach ,但是与 for 循环中 “for-each” 昵称不同。...该方法基本使用代码: 1.5 练习:集合元素处理(传统方式) 题目 现在有两个 ArrayList 集合存储队伍当中多个成员姓名,要求使用传统 for 循环(或增强 for

1.3K20
领券