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

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

贾言 代码评审歪诗 窗外风雪再大 也有我陪伴着你 全文字数:2000字 阅读时间:5分钟 贾言 代码评审歪诗 验幻空越重 命频异长 依轮线日简 接偶正分壮 架构师说, 用20个字描述代码评审的内容...-勋 不要在环中调用服务,不要在环中做数据库等跨网络操作; 频-品 写每一个方法时都要知道这个方法的调用频率,一天多少,一分多少,一秒多少,峰值可能达到多少,调用频率高的一定要考虑性能指标,考虑是否会打垮数据库...长-昌 如果一行代码过长,要分解开来;如果一个方法过长,要重构方法;如果一个类过长要考虑拆分类; 依-依 如果调用了外部依赖,一定要搞清楚这个外部依赖可以提供的性能指标,最好约定SLA; 轮-伦 不要重复造轮子...日-日 打印日志和设定合理的日志级别,如有必要要添加if条件限定是否打印日志,在日志中使用JSON序列化,生成长字符串的toString()都要做if限定打印,否则配置的日志级别没达到,也会做大量字符串拼接...做法2的好处是将不同类型的逻辑解耦,各自发展,不会相互影响,如果添加类型也不必影响现有类型逻辑。

5.4K20

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

贾言验幻空越重, 命频异长。 依轮线日简, 接偶正分壮。言欢空月虫, 明勋品宜昌。 依伦先日贱, 洁偶正粉妆。 贾言 架构师说, 用20个字描述代码评审的内容, 自省也省人。...,避免下标越界异常 重: 不要写重复代码,重复代码要使用重构工具提取重构 命频异长 - 明勋品宜昌 命: 包 / 类 / 方法 / 字段 / 变量 / 常量的命名要遵循规范,要名副其实,...: 不要在环中调用服务,不要在环中做数据库等跨网络操作 频: 写每一个方法时都要知道这个方法的调用频率,一天多少,一分多少,一秒多少,峰值可能达到多少,调用频率高的一定要考虑性能指标,...public void doB() { b = getB(); process(b); } } 日: 打印日志和设定合理的日志级别,如有必要要添加...service super.doBarFatherThing(b); //如果需要就调用, 不需要就不调用父类 } } 做法 2 的好处是将不同类型的逻辑解耦,各自发展,不会相互影响,如果添加类型也不必影响现有类型逻辑

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

【Java】循环语句for、while、do-while

循环语句 1.1 循环概述 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环 体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false...,从而结束 环,否则循环将一直执行下去,形成死循环。...具体执行的语句 ④循环后,循环变量的变化情况 输出10次HelloWorld do...while 循环的特点:无条件执行一次循环体,即使我们将循环条件直接写成 false ,也依然会...扩展知识点 2.1 死循环 死循环: 也就是循环中的条件永远为 true ,死循环的是永不结束的循环。例如: while(true){} 。...2.2 嵌套循环 所谓嵌套循环 ,是指一个循环的循环体是另一个循环。比如 for 循环里面还有一个 for 循环,就是嵌 套循环。

6.7K10

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

4.1.2 在 for 循环中执行更多的操作 在for循环中,可对每个元素执行任何操作。下面来扩展前面的示例,对于每位魔术师,都 打印一条消息,指出他的表演太精彩了。...下面再添加一行代码,告诉每位魔术师,我们期待他的下一次表演: magicians = ['alice', 'david', 'carolina'] for magician in magicians:...想要在打印给各位魔术师的消息后面打印一条给全体 魔术师的致谢消息,需要将相应的代码放在for循环后面,且不缩进: magicians = ['alice', 'david', 'carolina'] for...例如,你可能使用for 环来初始化游戏——遍历角色列表,将每个角色都显示到屏幕上;再在循环后面添加一个不缩进 的代码块,在屏幕上绘制所有角色后显示一个Play Now按钮。...在前面编写的程序中,只有要在for循环 中对每个元素执行的代码需要缩进。 4.2.4 循环后不必要的缩进 如果你不小心缩进了应在循环结束后执行的代码,这些代码将针对每个列表元素重复执行。

10010

FreeRTOS 任务调度 系统节拍

涉及任务时间片轮, 任务阻塞超时, 以及结束以此实现的延时函数。...由于函数是中断中调用,不要在里面处理太复杂的事情!! 节拍计数器溢出 涉及的变量, 定义在 task.c开头。...任务时间片轮 处理完延时任务后, 开始判断当前运行任务, 对应优先级链表中是否有其他任务就绪, 如果有,需要保证每个任务都能获得运行时间, 标记需要任务切换, 作为函数返回。...任务切换 #if ( configUSE_PREEMPTION == 1 ) // 允许抢占 { // 其他地方标记需要执行一次任务切换 // 所以不管前面不需要...比如, 我们在SystickCount 为 0 开始延时, 在500 返回读取数据, 再延时, 和上一个例子一样, 当 500 延时后返回, 调度原因延迟, 等到 600 才读取数据并开始下一次延时,

1.7K40

负载均衡调度算法大全

负载主机可以提供很多种[负载均衡]方法,也就是我们常说的调度方法或算法: 轮(Round Robin) 这种方法会将收到的请求循环分配到服务器集群中的每台机器,即有效服务器。...基于这个前提,轮调度是一个简单而有效的分配请求的方式。然而对于服务器不同的情况,选择这种方式就意味着能力比较弱的服务器也会在下一轮循环中接受轮,即使这个服务器已经不能再处理当前这个请求了。...image 加权轮(Weighted Round Robin) 这种算法解决了简单轮调度算法的缺点:传入的请求按顺序被分配到集群中服务器,但是会考虑提前为每台服务器分配的权重。...因此,如果一个服务器负载过大,权重会通过系统透明的作重新调整。和加权轮调度方法一样,不正确的分配可以被记录下来使得可以有效的为不同服务器分配不同的权重。...加权响应(Weighted Response) 流量的调度是通过加权轮方式。加权轮中所使用的权重是根据服务器有效性检测的响应时间来计算。每个有效性检测都会被计时,用来标记它响应成功花了多长时间。

6.3K30

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

如果是同步,线程会等待接受函数的返回值(或者轮函数结果,直到查出它的返回状态和返回值)。如果是异步,线程不需要做任何处理,在函数执行完毕后会推送通知或者调用回调函数。...一个讲的是消息方式,一个讲的是线程状态。 线程在同步调用下,也能非阻塞(同步轮非阻塞函数的状态),在异步下,也能阻塞(调用一个阻塞函数,然后在函数中调用回调,虽然没有什么意义)。...非阻塞就是为了让一个响应的操作,不影响另一个响应。否则,当A用户在访问某个耗时巨大的网页时,B用户只能对着白板发呆。 在tornado中,有一个gen.sleep函数。...场景二:轮非阻塞 实现非阻塞场景,关键在于函数不能阻塞住当前线程。也就是说,要启用新的线程让系统帮忙调度,或者以自己的方式确保所有任务都能被调度(比如yield切换来切换去)。...上面的代码中,在一个while循环中timer的状态。由于timer存在于wait中。所以需要把timer“提取”出来。

7.5K10

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

基于这个前提,轮调度是一个简单而有效的分配请求的方式。然而对于服务器不同的情况,选择这种方式就意味着能力比较弱的服务器也会在下一轮循环中接受轮,即使这个服务器已经不能再处理当前这个请求了。...加权轮 Weighted Round Robin: 这种算法解决了简单轮调度算法的缺点:传入的请求按顺序被分配到集群中服务器,但是会考虑提前为每台服务器分配的权重。...和加权轮调度方法一样,不正确的分配可以被记录下来使得可以有效地为不同服务器分配不同的权重。...当所有服务器的负载低于管理员定义的下限时,负载主机就会自动切换为加权轮方式来分配请求;如果负载大于管理员定义的下限,那么负载主机又会切换回自适应方式。...加权响应 Weighted Response: 流量的调度是通过加权轮方式。加权轮中 所使用的权重 是根据服务器有效性检测的响应时间来计算。

6.6K30

《深入浅出Dart》事件循环和协程机制

事件循环从事件队列中取出一个事件。 如果是微任务(如 Future.then() 回调函数),将微任务添加到微任务队列中。...如果是宏任务(如定时器事件、IO 事件、用户交互事件等),将宏任务添加到宏任务队列中。 事件循环首先处理微任务队列中的所有微任务,确保微任务在当前事件循环中优先执行。...'); }); // 添加一个 IO 事件 File('data.txt').readAsString().then((data) { print('IO event: $data...Future.then() 回调 当一个 Future 完成时,可以使用 Future.then() 方法添加回调函数。这些回调函数会被添加到微任务队列中,并在当前事件循环中的微任务阶段执行。...Future 的完成,并在当前事件循环中的微任务阶段恢复执行。

30210

App性能优化浅谈

我们应用程序的需要随机读写的数据就存在RAM中,Android手机之所以会比较耗内存,这跟Android后台的处理有关,我们知道Android应用是使用Java开发的,运行Java需要有虚拟机,说明每开启一个应用都会创建一个虚拟机...Android 通知界面渲染和重绘的时间要在16ms内完成,如果超过16ms,就会导致丢帧,也就是我们常说的卡顿。...优化点: 避免OverDraw 优化布局层级 避免过多无用嵌套 使用标签重用layout 使用延迟加载 Hierarchy View进行层级分析 具体的使用方法,这里不介绍了...不要在循环当中声明临时变量,不要在环中捕获异常。 如果对于线程安全没有要求,尽量使用线程不安全的集合对象。 使用集合对象,如果事先知道其大小,则可以在构造方法中设置初始大小。...最后 写这篇文章的出发点也是对Android性能优化有个比较清楚的认识,任何事情都不可能一蹴而就,需要渐进,对一个初学者你谈优化很不现实,我们先把基本的做好,再去考虑相应的优化,笔者也在不断学习当中

2.1K30

Thinkphp-queue自带的队列包使用分析

, work 进程就结束了,其状态会变成 terminated, 此时 listen 进程就会重新创建一个新的 work 进程并对其计时, 新的 work 进程开始消费下一个任务 单次执行:不添加 --...循环执行:添加了 --daemon参数,该模式下,work进程会循环地处理队列中的消息,直到内存超出参数配置才结束进程。当队列为空时,会在每次循环中sleep一段时间。...标签需要在安装了 thinkphp-queue 之后 手动 去 \application\tags.php 文件中添加。...ClassName类中添加一个名为 queueFailed 的方法 // 'application\\behavior\\MyQueueFailedLogger'...true; } */ ] ]; 这里,我们选择数组形式的回调方式,新增 \application\behavior\MyQueueFailedLogger 类,添加一个

2K20

【Java】Stream流、方法引用

而当我们 要对集合中的元 素进行操作的时候,除了必需的添加、删除、获取外,最典型的就是集合遍历。... 环是做事情的方式,而不是目的。另一方面,使用线性循环就意味着只能遍历一次。如果希望再次 遍历,只能再使 用另一个循环从头开始。...而这得益于 Lambda 的延迟执行特性。...这些方法可以被分成两种: 延迟方法 :返回值类型仍然是 Stream 接口自身类型的方法,因此支持链式调用。(除了终结方法 外,其余方 法均为延迟方法。)...备注:本小节之外的更多方法,请自行参考 API 文档 逐一处理: forEach 虽然方法名字叫 forEach ,但是与 for 循环中的 “for-each” 昵称不同。

1.3K20

Dubbo支持几种负载均衡策略?

随机权重调用随机权重调用是在随机调用的基础上,为每个节点分配一个权重,按照权重比例随机分配请求。这种策略可以动态调整节点权重,但是权重分配可能不够均匀,存在一定的不稳定性。...轮调用轮调用是将请求按照节点权重比例轮流分配给集群中的各个节点。这种策略可以保证每个节点都能收到请求,但是存在慢的提供者累积请求的问题,可能导致系统不稳定。...例如,可以在服务端服务级别配置 roundrobin 轮调用,而在客户端方法级别配置 leastactive 最少活跃调用数。这种配置方式可以结合不同场景和需求,实现最优化的负载均衡策略。...例如,对于高可用场景,可以选择 leastactive 最少活跃调用数或者 consistenthash 一致性 Hash 调用;对于高性能场景,可以选择 roundrobin 轮调用或者 random...同时,还需要考虑节点数量、请求量、网络延迟等因素,进行适当的权重分配和策略调整。总之,Dubbo 提供的负载均衡策略丰富多样,可以满足不同场景和需求的要求。

43530

从Vue.nextTick探究事件循环中的线程协作机制

一、背景 对vue里的nextTick()方法理解不清晰,会导致api代码滥用的现象,我查看了vue官网的说明: Vue.nextTick()用于在下次 DOM 更新循环结束之后执行延迟回调。...带着这个问题,我做了一个小测试。...五、事件循环中的线程协作 主要负责Dom渲染部分的是与js线程同处于浏览器中渲染进程下的GUI渲染线程,下面结合浏览器运行机制来描述一下事件循环过程中的线程协作机制,本文大部分浏览器相关知识来源于李兵的...六、最佳实践 1、对于vue实例跟dom双向绑定的数据更新,需要在nexttick的回调后获取更新后的dom元素。...3、操作dom的多次更新(无论是否使用vue双向绑定)应该放在同一轮事件循环的当前js执行栈或微任务中,仅调用一次渲染线程更新dom,避免放在下一轮宏任务中。

95030

「小程序JAVA实战」 小程序手写属于自己的第一个demo(六)

自己尝试的写一个小demo,用到自定义样式,自定义底部导航,页面之间的跳转等小功能。...定义文件夹+自定义页面内容 复制index文件夹为idig88,将文件夹内保留idig88.js 和idig88.wxml 精简idig88.wxml内容 新增的idig88.wxml添加到app.json...中,并添加到第一行让起第一个启动 console 可能会报错,先不用管,后面咱们会解决的,第一个主要先能出效果 了解小程序构成结构 {{motto}} 每个js都必然有Page({}) 这种结构 data就是数据,里面有多个变量如果需要在页面显示绑定的数据...PS:通过这个老铁基本的调用方式就了解了,渐进一步一步跟我一起学习吧。

97020
领券