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

进阶优质代码捷径

分离 这里分离是指关注点分离,也就是我们常说单一职责. 也就是一个类,只有一个引起它变化原因....这一原则即可以应用到代码解耦上,也可以应用于业务拆分 以下面告警系统中节选代码为例 反例: 整个类中既要处理既要处理告警类型逻辑,又有告警发送逻辑 public class AlertSystem...抽象 抽象是指关心是能做什么,而不关心怎么做. 常用抽象方式就是接口....例如,现在业务上需要使用异步消息中间件,那我们就可以抽象出来一个接口,调用方只需关心这个接口就行了,而不用关心具体是用kafka或者RocketMq实现....~~ 其实这三种非常实用原则,在spring也是有体现 分离: controller, service, dao 抽象: service接口, mapper 注入: @Autowire, @Resource

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

    优质牛肋骨

    枚举从最高位开始,之后枚举每一位数,直到达到指定位数为止。 枚举每一位后,需要判断当前位数和高位数组合数是否为质数,只有如此才能满足条件。...举例说明对于 7331 枚举过程: 第一位为 7,是质数,枚举下一位; 第二位为 3,和高位数组合为 73 是质数,枚举下一位; 第三位为 3,和高位数组合为 733 是质数,枚举下一位; 第四位为...由上述例子可知,最高位必定取值为 \set{ 2, 3, 5, 7 },且后续添加数不能为偶数(从 1 枚举到 9 后续再判断也可以)。...因此,递归每一层,枚举剩余位从 0 开始枚举到 9 与高位数组合判断。 若组合数为质数,则递归到下一层,否则跳过。 最终满足组合数直接输出即可。.../ i; i ++){ if(x % i == 0) return 0; } return 1; } int sum(int u, int x){ // 求高位数

    96420

    优质题解」DNA

    这道题地址,想尝试小伙伴可以来试哦: https://www.dotcpp.com/oj/problem1115.html 思路: (这里A,B就是题目中a,b); 1.总思路,把整个DNA输出变成得到每一行...,然后输出; 2.首先得到DNA第一行,用字符数组记录; 3.第一行DNA宽度就是A,即字符数组有效长度为A,且第一行DNA型式都是第一个字符和最后一个字符都是'X' 中间为空格; 4.交换X...输出变成每一行输出; 7.输出第一行,交换后; 8.再次递归处理,直到输出所有行; 9.每组DNA输出行数等于A*B-(B-1);(即DNA行数,也就是递归次数,题目例子中如上图输出4组,就是...X和它前面的空格交换; 2.交换时,必须先记录第一个位置(p)X,和最后一个位置(q)X; 3.然后让(p)位置X,等于它后面的空格,让(q)位置X等于它前面的空格; 4.然后再把前面记录X,...放到它们各自交换了空格上; if(p==A-1&&q==0) 这句代码,表示交换了一个来回了,需要重置p,q; 交换实现代码: 这样交换是因为:当交换到图中,绿色标记X位置时,会导致,它前后交换不正确

    59120

    优质题解」出圈

    这道题地址,想尝试小伙伴可以来试哦: https://www.dotcpp.com/oj/problem1160.html 思路: 解题思路:(原:1047: C语言程序设计教程(第三版)课后习题10.5...)在1047 基础上,把报数数m改为自己输入,同时改为多组测试数据,并且输出带换行符; 思路一:(公式法) 思路二(循环链表法) 1:创建长度为n循环链表(单链表最后一个结点与首结点连接...,不是头结点); 2:链表结点包括编号和next指针; 3:从首结点p开始报数(p=p->next),但是只报数到离开结点前一个结点,然后删除它后面的结点,更新报数第一个结 点...了,因为删除过程中,头结点next被删除的话,头结点next指向不安全地方,就不要用它了; 以上就是链表实现过程,要挑战自己可以弄一个单链表实现,再厉害一点可以顺序表,但顺序表不推荐, 1....顺序表删除要移动大量元素 2.报数到最后一个之后,返回第一个实现过程复杂,需要用下标关系,很容易晕; 注意事项: 每个结点删除后都要free了,输出留下来那个人之后也要把它free了,

    57620

    开发常用优质开源项目

    接口管理工具 YApi 官网:https://github.com/YMFE/yapi YApi是由去哪网前端团队开源一款接口管理工具,功能强大,可以轻松自己部署。...部署可以参考这篇文章:https://www.jianshu.com/p/a97d2efb23c5 Rap2 官网:https://github.com/thx/rap2-delos Rap2是由阿里妈妈前端团队开源一款接口管理工具...Eolinker 官方网站 开源地址 较推荐版本1.0版 较纯净 文档管理 ShowDoc ShowDoc就是一个非常适合IT团队在线文档分享工具,它可以加快团队之间沟通效率。...没有在线调试接口功能 官网:https://www.showdoc.cc/help?...github.com/star7th/showdoc Git代码管理 Gitea Vue.js UI组件库 iView 即时通讯框架 t-io:百万级即时通讯框架 iNotify.js:JavaScript 实现浏览器系统通知

    56810

    优质题解」台球碰撞

    这道题地址,想尝试小伙伴可以来试哦: https://www.dotcpp.com/oj/problem1075.html 思路: 这个问题涉及到球在二维平面内受边界限制斜向运动,在写程序之前有几个问题要考虑...:   a.我们最终所求是球心坐标,而球与球桌碰撞时实际上是球边界与球桌边界发生碰撞,并不是球心发生碰撞,因此在研究这个问题时为了简化模型,可以将球转化为球心质点,并建立新坐标系来研究球心运动...我们以原坐标系点(R,R)作为新坐标系原点(0,0)建立新坐标系,这样新坐标系中球心运动范围长l和宽w都会相对于原先L,W分别减小2R,如图所示:   b.现在我们在二维平面内新坐标系下研究球心质点运动...由于题目给出角度a是任意,球可能是向任意方向运动,因此这里我们利用三角函数将球运动分解为水平方向和竖直方向,可以看出在整个运动过程中球在水平和竖直方向上运动速率(这里不指带有方向速度,速度方向可能在在碰撞后掉头...而数轴上质点移动范围只有10,我们注意到如果质点发生10x2=20位移,那么质点将会回到初始位置,因此在某个方向上边界范围两倍实际上是一个运动周期,发生 24 位移也就是发生 4 位移。

    75540

    如何找到优质房源?

    为了帮助用户根据评分找到优质房源,现在领导要你找出分数(满分10分)在0-5分,5-7分,7-9分,9分及以上分别有多少。...根据分数所在区间进行分组,以下是一个简单示意图 image.png 这里会有两个常见误区: 1)分组就想到用group by,但是在这里是不行。...因为平时使用groupby分组字段是我们直接用字段,而这里分数并不是我们最终分组区间字段0-5、5-7这样。...如果直接用分组(group by),就会把相同分数分为一组,与我们要求分数段是不相符。 2)看到条件就想到用where,但是在这里是多条件情况。...涉及到“多条件判断”问题,要想到《猴子从零学会SQL》里讲过条件判断语句case when,完整用法如下: image.png 翻译过来就是 当字段1 >值1,取新值1 ;当字段1 <值1,取新值

    82100

    优质代码十条建议

    优质代码十条建议 1.- DRY: Don’t repeat yourself. DRY 是一个最简单法则,也是最容易被理解。...它意 味着,当我们在两个或多个地方时候发现一些相似的代码时候,我们需要把他们共性抽象出来形一个唯一新方法,并且改变现有的地方代码让他们以一些 合适参数调用这个新方法。....- 良好命名规范 使用不错统一命名规范可以让你程序变得更容易阅读和维护,当一个类,一个函数,一个变量名字达到了那种可以“望文生义”境界话,我们就可以少一些文档,少一些沟通。....- 创建大量单元测试 单元测试是最接近BUG地方,也是修改BUG成本最低地方,同样也是决定整个软件质量好坏成败地方。....- 经常重构你代码 软件开发是一种持续发现过程,从而让你代码可以跟上最新实际需求变化。所以,我们要经常重构自己代码来跟上这样变化。

    48910

    垃圾代码和优质代码区别?

    几个业务场景中重构示例 请求顺序依赖 在这种场景中,首先还是业务复杂度决定了代码复杂度。...首先我们来看一个在前端和node都有可能出现一个简单例子: 我们有 A, B, C, D 四个请求获取数据函数(函数自己实现), C 依赖 B 结果,D 依赖 ABC 结果,最终输出 D 结果...折磨人 if else 可能存在下面一些问题 过多嵌套 逻辑处理冗余 没有做好防御编程(错误处理 直接来一个代码例子,这是一个获取背景颜色方法,但是随着业务不断变化,背景颜色来源越来越多,在一些业务人员处理下可能是这样...建立明白代码虽然是给计算机运行,但最终还是人看。不仅仅是没有 bug 就行了,这样心智模型。 建立业务与代码质量同等重要思考模型。避免因为时间导致不得不这么写代码。...(写代码时候,不仅仅正向,反向判断也需要思考) 合理拆分成独立函数。明确输入输出,错误处理等在函数内部处理。

    50010

    不可错过优质深度学习课程

    我研究了 Class Central 开源项目,从中整理出一份深度学习课程清单:其中 27 个在线课程(其中 12 个是完全免费),课程内容涵盖深度学习基础到当今最前沿研究。 ?...在该课程中,你将从第一步——如何构建一个适合深度学习在线 GPU 服务器,一直到构建高技术、高度实用计算机视觉模型,自然语言处理和推荐系统。本课程免费。 精选评论(匿名):“本课程十分棒。...我一次次惊喜发现,他不仅在课堂上讲解过去一年内问世成果,甚至一周内新内容…而且你能使用现实中数据通过参加 Kaggle 比赛练习。...该课程不同于以往在线课程形式,但其组织者(包括深度学习领域杰出人物 Bengio 和 LeCun等)和课程讲师使这个系列成为深度学习优质课程。该课程免费。 ?...与 Siraj Raval 一起,Udacity 提供了对这领域系统介绍。通过每周视频,独家项目,以及专家反馈和审查,使你掌握这个改变未来技术基础知识。

    991100

    如何写出优质干净代码

    编写干净代码并不是一件容易事情,这需要尝试不同技巧和实践。 作为一名开发者,编写一手干净代码很重要. 先列举出编写干净代码一些好处,再提出6个技巧用于编写干净代码,供开发者进行参考学习。...写干净代码好处 先来了解编写干净代码一些好处。其中一个主要好处是,干净代码可以减少花在阅读上时间和理解代码时间。凌乱代码会减慢任何开发人员速度,使开发者工作变得更加困难。...另一方面,干净代码通常就没有这个问题。假设前面的例子是相反情况,以前代码是干净和优雅,那么理解它需要多长时间?...的确,编写和保持干净代码并不意味着应该忽略任何改进它机会,我认为应该始终对目前做法保持可改进态度,并努力寻找改进机会。...这个技巧是关于变量、函数和方法有意义名称。“有意义”是什么意思?有意义名字是描述性足够多名字,而不仅仅是编写者自己才能够理解变量、函数或方法。

    75520

    优质题解」排队买票

    N = K 考虑当 N = K 时特殊情况,即有 2N 个小孩,其中N个小孩带钱为1元,另外N个小孩带钱为2元。...N > K 当 N > K 时,无法直接用卡特兰数求解,这时我们可以换一种思维:无法直接求出合法排队方式数,那就先求出非法排队方式数,再用总排队方式数减去,即得合法排队方式数: 总排队方式数:...(M 全排列)种排队方式。 非法排队方式数: 我们考虑一下非法排队方式有什么特征: (1) 前 2P 个小孩组成一个合法排队,且持有 1 元小孩和持有 2 元小孩数量相等,皆为 P。...),使得前 2Q 个小孩构成一非法排队(换言之,如果对于任意正整数 Q,总有:前 2Q 个小孩构成队列是合法,那么这个队列本身也是合法。)...公式为: 合法排队方式数: 合法排队方法数就等于总方法数减去非法方法数: 代码实现:

    62810

    写出优质Java代码4个技巧

    如果对所有代码进行了同样优化,那么最终结果就是浪费了90%优化,因为优化过以后代码运行得频率并不多。因为没有目标而做优化所耗费时间,都是在浪费时间。...需要注意是,在现有瓶颈中花费时间百分比很可能会增加,因为剩下瓶颈是暂时不变,而且随着目标瓶颈消除,整个执行时间应该会减少。...2、由于是基本数据类型,因此不能调用状态代码上方法 在第一种情况下只是简单创建了一个特定常量来表示特殊整数值,但并没有对方法或变量进行限制,因此使用值可能会超出定义范围。...响应代码,但是由于服务器端也没有限制客户端必须提供有效整数。...虽然我们必须做改变数量是相等,但变化性质却是完全不同

    53810

    如何挑选优质光模块?

    俗话说得好“一分钱一分货”,要想物有所值,货比三家绝对是优质买家必经之路!对于光模块采买如何发挥火眼睛睛实力?今天就让我们来道一道这里面的精髓!...在长期高温工作下,不断地损耗光器件寿命,所以拆装光器件,虽然价格具有非常大优势,但是在使用中存在着很大通信隐患,导致信号传输中断,极大浪费了通信系统后期维护成本和时间。...PCB制作从激光成像,高精度阻抗测试,易天光通信PCB合作伙伴都沉淀了15~20年经验,这些细节为产品在应用环境中遮风挡雨。...精密电路设计,合理电阻/电容布局才能提升产品性能(有图有真相)。 金手指作为信号传递使者,由众多金黄色导电触片组成,易天光通信金手指镀金要求:0.38um 硬金,具有高强度抗插拔耐性。...俗话说得好,金碑银碑不如客户口碑,客户说好才是真的好。易天光通信客户通过高强度插拔测试,证明我司光模块插拔次数能控制在10000次左右,保障产品更持久使用。

    77640

    如果选择优质股票

    考察是公司核心竞争力,考察时间应该用N年为单位而不是1年,因为反复无常经济周期会在短时间产生影响比较大。...3.和公司规模相比,这家公司研究发展努力有多大效果? 考察是公司研究团队培养、组织分配和产出。 4.这家公司有没有行业平均水平销售团队?...再大再优秀公司也会遇到发展难题,领导层开诚布公这些信息和解决方案才是最重要。 15.这家公司管理是否具备毋庸置疑正直诚信和问题?...卖出时机: 如果选择到是一只优质股,基本没有卖出时机,要长线持有,除非公司遇到重大问题。...5.不要计较蝇头小利 如果你确定你选择是一只优质股票,那么20块买入和21块买入是没区别的,要长远看,把精力放在更重要事情上。

    43410

    最新10个优质Python开源项目

    来源:Python程序员 ID:pythonbuluo 在过去一个月中,我们对近250个Python开源项目进行了排名,选出了前十。 我们比较了在此期间有新发布或是重大发布项目。...第3名 Som-tsp: 使用自组织地图技术解决旅行中销售员所遇到问题 [Github上点赞数:432个] ?...第5名 Icecream(冰淇淋):甜甜,奶油般柔滑打印调试 [Github上点赞数:530个] ?...第8名 Unimatrix: 可以模拟电影《黑客帝国》中终端显示Python脚本。默认使用半角片假名Unicode字符,但可以使用自定义字符集 [Github上点赞数:558个] ?...如果你喜欢这种方式,请按照您编程技巧阅读我们网站上每日最佳文章。

    71280

    6个编写优质干净代码技巧

    编写干净代码并不是一件容易事情,这需要尝试不同技巧和实践。问题是,在这个问题上有太多实践和技巧,因此开发人员很难进行选择,所以要把这个问题简化一下。...其中一个主要好处是,干净代码可以减少花在阅读上时间和理解代码时间。凌乱代码会减慢任何开发人员速度,使开发者工作变得更加困难。...的确,编写和保持干净代码并不意味着应该忽略任何改进它机会,我认为应该始终对目前做法保持可改进态度,并努力寻找改进机会。...这个技巧是关于变量、函数和方法有意义名称。“有意义”是什么意思?有意义名字是描述性足够多名字,而不仅仅是编写者自己才能够理解变量、函数或方法。...关于编写干净代码一些想法 今天讨论这六种做法,可能不是影响最大,也可能不是最重要,但这些是经验丰富开发人员最常提到,这也就是我选择它们原因。

    719100

    解锁设计优质API五种秘籍

    目前,几乎所有的软件需求都需要通过API来提供相应解决方案,其中包括:支付类API、通信类API、以及传输类API等数千种。那么我们该如何设计并构建出一个优质API呢?...下面,我们将和您深入讨论设计优质API所应当注意五个方面: 缩短宝贵时间 将您文档置于网站主页 在API中保证抽象一致性 设计面向未来API 妥善管理好潜在变更 1.缩短宝贵时间...一个优质API应当能够缩短开发人员宝贵时间(TtV)。...2.将您文档视为网站主页 由于在您首页上就能获取API相关文档,因此开发人员可以将其加入浏览器书签、或放置到显著位置。...希望上述五种实践“秘籍”,能够帮助您构建属于自己优质API,并能给开发者带来不俗体验。

    67310
    领券