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

别人写代码做修改这样保证正确性

详细方案设计别人写代码做修改,做详细设计时,第一步要做充分评估改动影响;第二步画流程图梳理改动前后调用链和数据流,列出修改点;第三步定好测试关键案例,确保结果正确性。...很多方案设计中,往往没有将这一步规划到明确流程中去,草率实施,日后出现问题根源。 具体要怎么做呢?举个例子来说,之前做过很多http接口,常有需求说要在返回值里添加字段。...第一境界表达本意高瞻远瞩,立志高远。在读代码这件事,可以理解为了解基本框架结构和代码基本实现功能。第二境界刻苦钻研深入过程。第三境界顿悟,了解之前梳理中没有想明白或忽略细节或问题。...制定测试案例 评估影响和逻辑梳理,关键案例其实已经出来了,这个阶段个整理阶段。同时,也是从另外视角,看看是否能达到“蓦然回首”境界,补齐之前逻辑疏漏。...另外一条,说缺少非空判断。这个非空加了,底层加了非空判断。逻辑没有问题。但是他觉得代码上层不加,语义不连贯。觉得逻辑应该内聚,自己做好事情不应该让上层来做。

1K20

Magento 2中文手册之常见概念解析

event 事件 magento1.x就存在,也是过去很多系统使用程序注入方式,与Joomlaplugin和Drupalhook一样。...使用event必须系统主动提供对应事件名,例如“登录”,“登出”,“购买后”等。 plugin 插件 很多系统使用相同术语,但意思各不相同,plugin各种系统实现也不一致。...UI component 系统后台几乎所有内容都从javascript中加载到页面,并且难以通过view找到相关模板代码,这是因为后台使用一套统一UI component,很多元素重用,例如grid...它们也是由一堆XML来声明,用都是默认模板,搞后台功能避不开UI component,官方文档也不丰富,从默认组件代码来研究它如何使用。...所有webapi通过webapi.xml来声明,Repositorywebapi功能实现部分。webapi不只是用于第三方系统,magento2购物过程中也会通过webapi完成购物过程。

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

处理 NFT 预售 — 链下白名单

为什么不使用 链预售/白名单 对于如何处理 NFT 空投预售清单,有很多不同策略。...为什么不使用默克尔树 我们寻找更有效方法,出现了很多使用 Merkle 树情况。 进行了大量研究并了解了它们工作原理后,我们决定采用 Merkle Tree 路线。...使用优惠券使我们能够使用相同方法处理所有这些,而无需重复代码添加任何自定义复杂逻辑。 将在下面扩展这些: Authors 我们作者通过为 Humans 提交 Bios 来换取免费铸币。...觉得现在指出我们优惠券不包含随机数好时机,你会看到它在大多数实现中使用。...因为销毁机制涉及调用 Opensea 合约 safeTransferFrom() 方法,所以传递优惠券唯一方法附加 data 字段中。

1.1K20

PHP开发者必备50个库框架【2019】

撸了今年阿里、头条和美团面试,有一个重要发现.......>>> ? 2019年最受欢迎50个PHP开源项目,汇智网翻译整理。...GitHub Stars: 14.9k+ 网址:https://github.com/composer/composer 6、Guzzle Guzzle一个PHPHTTP客户端,它使得PHP代码中发送...GitHub Stars: 7.5k+ 网址:https://github.com/cakephp/cakephp 14、whoops Whoops一个PHP错误处理框架,开箱即用。...GitHub Stars: 5.5k+ 网址: https://github.com/deployphp/deployer 25、Magento2 Magento2一个先进、功能丰富电子商务解决方案...GitHub Stars: 4k+ 网址:https://github.com/typecho/typecho 36、Lychee Lychee一个美观易用照片管理系统,你可以部署自己服务器

5.2K30

阅读《代码整洁之道》总结

多年工作中,屡次被别人代码苦不堪言,回想起当年留下代码,肯定也坑害了后来同僚。...建议先把业务弄清楚,组织会议定下常用业务领域单词,禁止组员各自发明。比如代码里使用canteen表示饭堂,那就不要再发明DinnerHall,既啰嗦又误导同僚。...曾经看到某位同事一段代码嵌套达到9层,他自己再去维护时候都看晕了。代码过度嵌套结果只有原作者才能读懂,接盘侠一脸茫然。...,在编译自动为属性生成构造器、getter/setter、equals、hashcode、toString方法 举例如下: @Setter 注解类或字段,注解为所有字段生成setter方法,注解字段只为该字段生成...@Getter 使用方法同上,区别在于生成getter方法。 @ToString 注解类,添加toString方法。

52640

看似简单但容易忽视编程常识

曾不止遇到过很多有年编程经验程序员,犯下类似的错误,也见过很多年轻同学,反复强调纠正后,逻辑还是会漏洞百出,这几年,我会经常组织组里面的同学对代码进行走读,总结这些编码中逻辑错误,很大一部分也是因为编程逻辑背后思考不够...,判断似乎还算比较严谨,其实这段代码只是看到了眼前要做事情,但是并没有看到整体逻辑,为什么这么说呢,请看下面几行代码,也许会引发最这个简单问题新思考。...一般称这种代码代码盲目容错,看上去这行代码很健壮,不会报错,但是不报错,不能影响错误客观存在性,错会还是会存在,遇到错误时候,我们应该首先想到恢复这个错误,对容错问题,需要进行非常深入很全局思考才能做决定...上面的代码能正常满足当前业务需求,但是业务复杂,比如业务我们有了新需求,需要对发放优惠券规则进行调整,调整会后规则为,增加白名单可以不是VIP也要发优惠券,或者这个用户用户UID是以00...如何将能力和业务解耦,对这个问题理解,首先得把这个能力定义出来,这里暂且定义为这个能力为发优惠券(其实定义一个能力最难做事情,深思考,会发现这个问题难到需要重新思考人生,这里不拉开篇幅讲了

62230

SpringBoot中处理校验逻辑两种方式,真的很机智!

平时开发接口时候,常常会需要对参数进行校验,这里提供两种处理校验逻辑方式。一种使用Hibernate Validator来处理,另一种使用全局异常来处理,下面我们讲下这两种方式用法。...@ApiModelProperty(value = "品牌故事") private String brandStory; //省略若干Getter和Setter方法... } 然后添加品牌接口中添加...首先自定义一个校验注解类FlagValidator,然后添加@Constraint注解,使用它validatedBy属性指定校验逻辑具体实现类; /** * 用户验证状态是否指定范围内注解...全局异常处理 使用全局异常处理来处理校验逻辑思路很简单,首先我们需要通过@ControllerAdvice注解定义一个全局异常处理类,然后自定义一个校验异常,当我们Controller中校验失败...优缺点 使用全局异常来处理校验逻辑优点比较灵活,可以处理复杂校验逻辑。缺点我们需要重复编写校验代码,不像使用Hibernate Validator那样只要使用注解就可以了。

1.1K20

神奇 SQL ,同时实现小计与合计,阁下该如何应对

关于 小计与合计 ,大家肯定不会陌生,甚至很熟悉   或多或少都实现过这样功能,尤其涉及到报表统计时候, 小计与合计 绕不过去坎   那有哪些实现方式了,我们今天就来盘一盘   GROUP...BY + 应用程序汇总   先通过数据库层面的 GROUP BY 得到小计,类似如下   然后通过程序代码对 商品类别 小计进行一个合计   敢断定,这种方式肯定是大家用最多方式,因为就是这么用...如果非要较真的话,这么说也有道理,但是假若我们展现层(比如前端)将 Null 当 合计 处理了?   为什么不说在后端将 Null 处理成 合计 ?   ...    你们不要怀疑是不是套娃,请把怀疑去掉,就是套娃!...,能够得到像从小计到合计,从最小聚合级开始,聚合单位逐渐扩大结果 GROUP BY ROLLUP(ware_category) ,那么结果就是以 ware_category 归类 小计 加上这些

18110

帮Nginx升级,报错却是OpenSSL?

行吧,这有阿里云优惠券和腾讯云优惠券,你说哪家优惠券?留言发你哟。)...01 - make OpenSSL 当然你可能想使用 update 方式来实现 OpenSSL 升级,但是很遗憾,尝试之后发现,并不能正常升级,查看源版本发现 1.0.1f 就是最高版本了...这它喵都是什么文档,到底还有没有谱啊! ? 不行,这不可能就一个人错,中文搜索不行,还不能用英文么? 但然而结果就是,还是搜到了最终解决结果,万万想不到居然中文。...03 - 更新 Nginx 服务配置 申请证书 阿里云/腾讯云都有免费CA证书服务。这有阿里云优惠券和腾讯云服务器优惠券,留言发你。...仔细一看,这个路径为什么会是 /www/error + /443,难道配置路径错了?这也不应该啊,没升级之前,都是可以正确访问吖。 行吧,还是面向百度编程一下吧!

2.1K70

聊聊与流式计算故事

优惠券计算服务逻辑:每个城市每个酒店使用优惠券规则并不相同,当运营人员修改规则之后,触发优惠券计算服务,计算完成之后,用户下单使用优惠券时会呈现最新规则。...解决问题快感,一直追求。 当我把笔记本电脑放平桌上,很兴奋,同时灵台一片澄清:优惠券计算服务核心 Storm ,那么需要先了解 Storm 整体概念。...通过阅读源码,发现因为线程模型不够好,应用在部署多个节点后,每个节点只能有两个线程执行拉取酒店信息。 怎么处理呢?原有代码优化可行吗?...非常幸运,大概一周间,就重构完了。 重构完成并不意味着结束,怎么验证呢 ?当时采取了两种方式: 代码评审 拉着优惠券计算服务同事,一起 review 代码 。...阅读优惠券计算服务代码中,发现两个问题: 流式计算逻辑中有大量网络 IO 请求,主要是查询特定酒店数据,用于后续计算; 每次计算需要查询基础配置数据,它们都是从数据库中获取。

2.6K30

经验分享:如何快速定位问题(BUG)

掉下眼泪 不止内存泄漏 让夜夜不眠 不止你需求 明天还要改多久 你攥着手 让感到为难 善变需求 发布总是半夜 回滚永远错误(Bug)随时暴漏 困扰着心头 作为程序员...为什么会员价 0 元不正确呢?因为我们系统中做了限制,会员价必须大于 0 元。 案例 3:优惠券领取不了了,弹窗显示“领取失败,该优惠券仅限新人领取”! 详细描述:这是一个领取优惠券功能。...用户可以通过该活动领取优惠券。用户领取优惠券,页面弹窗提示:”领取失败,该优惠券仅限新人领取“。同时,测试大佬反馈说,这个账号就是一个新人账号,刚刚注册用户。...这个时候,一般做法去查日志。如果日志中有错误信息,我们便可以根据错误信息快速定位到 Bug 所在具体代码。那如果这个时候也没有错误信息呢?嗯...想想,好像也没有别的办法了。...唉,写代码爽,出问题泪汪汪。那只能查这个 VO 在哪里被用到了,然后去代码里查了。 案例 3:案例 3:优惠券领取不了了,弹窗显示“领取失败,该优惠券仅限新人领取”!

4.7K30

阅读《代码整洁之道》总结-各种技巧分享

多年工作中,屡次被别人代码苦不堪言,回想起当年留下代码,肯定也坑害了后来同僚。...建议先把业务弄清楚,组织会议定下常用业务领域单词,禁止组员各自发明。比如代码里使用canteen表示饭堂,那就不要再发明DinnerHall,既啰嗦又误导同僚。...曾经看到某位同事一段代码嵌套达到9层,他自己再去维护时候都看晕了。代码过度嵌套结果只有原作者才能读懂,接盘侠一脸茫然。...,在编译自动为属性生成构造器、getter/setter、equals、hashcode、toString方法 举例如下: @Setter 注解类或字段,注解为所有字段生成setter方法,注解字段只为该字段生成...@Getter 使用方法同上,区别在于生成getter方法。 @ToString 注解类,添加toString方法。

98440

优秀工程师必备技能之如何高效阅读源码

接下来分享一下阅读 RocketMQ 源码一些经历,尽量让上述理论具有画面感。 2.1 了解 RocketMQ应用场景 MQ使用场景比较清晰,它两大基本职责解耦与削峰填谷。...阅读Netty源码就遇到了难题,当时刚刚写完Netty内存泄露检测,准备开始研究内存分配机制, 这一块儿非常抽象,涉及数据结构复杂,需要掌握二叉树与数组之间如何映射、牵扯到大量位运算等等,让探究其原理寸步难行...1、向“度娘”求救 阅读源码可以将看不懂代码直接COPY一小段到百度上去搜索,可能会有大牛已经对这些代码做过解读,能起到指点作用。...思考与质疑是源码阅读一个升华,比如我在看Sentinel 熔断对其提出质疑。 一个“用户信息查找”服务,被部署到了三个机器。 ?...本质这是因为熔断错误率被定义到了服务级别 :服务 -> 熔断错误率 在对这个问题进行思考时候,认为配置熔断规则时候,需要细化,应该把熔断错误率定义到资源组级别:[服务 , 机器] -> 熔断错误

30510

Javaweb-案例练习-5-商品数量修改和合计金额实现

商品数量和小计修改实现 前面一篇完成了添加购物功能,这篇来完善购物车页面上,修改商品数量和小计这两处地方代码。...- +写onclick事件,调用一个js方法,例如changeNum(id,num) 2. 跳转到一个servlet去处理这个减一还是加一 3. 把金额回显到小计这一列。...servlet方法中,其中一个参数肯定是Book.id, 第二个参数购买数量num,这个num也需要从session中拿到。...小计金额代码实现 小计金额需要根据数量和价格进行变动,这里价格固定,数量变化。很简单就是数量乘价格就是小计金额。...这个很简单,就是地址传过去,让num=0,这样后台servlet就会处理,和上面逻辑一样。 cart.jsp中找到这个红色X,大概93行位置跳转地址改成这样。

1.1K20

面试官考Redis中缓存穿透、缓存雪崩和缓存击穿? 拿捏!!!

前言 面试官考Redis中缓存穿透、缓存雪崩和缓存击穿 图片 缓存穿透 缓存穿透指客户端请求数据缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。...,都没查到,接着同一间去访问数据库,同时去执行数据库代码,对数据库访问压力过大 图片 案例 互斥锁方式解决缓存击穿 案例: 这里有个测试Demo里面有一个接口查询商铺详细信息 图片 需求:...修改根据id查询商铺业务,基于互斥锁方式来解决缓存击穿问题 图片 认识 SETNX 锁 Redis中,SETNX一个用于设置键命令,但只有键不存在才会设置成功。...' "0" 6392:0> 锁流程解析: setnx yby6Lock '锁参数随便啥都可以' 这个命令尝试Redis中设置一个键为yby6Lock值,但仅当该键不存在才设置。...del yby6Lock '释放' 这个命令用于删除键yby6Lock。分布式锁中,释放锁客户端完成对共享资源工作后应执行操作。这个命令返回整数1,表示成功删除了键。

826141

聊聊与流式计算故事

优惠券计算服务逻辑:每个城市每个酒店使用优惠券规则并不相同,当运营人员修改规则之后,触发优惠券计算服务,计算完成之后,用户下单使用优惠券时会呈现最新规则。...并不负责流式计算服务,但想要揭开 Storm 神秘面纱探索欲,同时探寻优惠券计算服务为什么会这么慢渴望,让好几天晚上没睡好。...通过阅读源码,发现因为线程模型不够好,应用在部署多个节点后,每个节点只能有两个线程执行拉取酒店信息。 怎么处理呢? 原有代码优化可行吗?...非常幸运,大概一周间,就重构完了。 重构完成并不意味着结束,怎么验证呢 ? 当时采取了两种方式: 代码评审 拉着优惠券计算服务同事,一起 review 代码 。...阅读优惠券计算服务代码中,发现两个问题: 流式计算逻辑中有大量网络 IO 请求,主要是查询特定酒店数据,用于后续计算; 每次计算需要查询基础配置数据,它们都是从数据库中获取。

2.7K20

Redis实战12-优惠券实现一人一单功能

一个用户只能抢到一个优惠券业务逻辑:我们原有业务中,订单入库之前,添加一人一单相关代码逻辑:我们同样使用JMeter并发跑下试试:设置登录状态请求头一个用户我们,来看看执行结果:异常率95%。...为什么呢?因为,我们查询数据是否存在。而不是更新数据。我们还需要分析,悲观锁代码添加范围是什么?...我们再来看看,synchronized代码块完整代码如下图:我们看到,方法加了@Transactional注解,说明这个方法事务里面的。...修改后代码如下:那么,上面代码是否存在问题呢?还是存在问题!!存在什么问题呢?事务可能不生效。为什么呢?...我们可以使用:Object proxy = AopContext.currentProxy()修改代码:1:pom文件中引入aspectj2:启动类添加开启对AspectJ支持注解3:修改我们代码逻辑

84240

Javaweb-案例练习-5-商品数量修改和合计金额实现

商品数量和小计修改实现 前面一篇完成了添加购物功能,这篇来完善购物车页面上,修改商品数量和小计这两处地方代码。...- +写onclick事件,调用一个js方法,例如changeNum(id,num) 2. 跳转到一个servlet去处理这个减一还是加一 3. 把金额回显到小计这一列。...servlet方法中,其中一个参数肯定是Book.id, 第二个参数购买数量num,这个num也需要从session中拿到。...小计金额代码实现 小计金额需要根据数量和价格进行变动,这里价格固定,数量变化。很简单就是数量乘价格就是小计金额。...这个很简单,就是地址传过去,让num=0,这样后台servlet就会处理,和上面逻辑一样。 cart.jsp中找到这个红色X,大概93行位置跳转地址改成这样。

2.4K30

你不知道Cypress系列(4) -- “PO”已死,App Action当立?

要测试这个优惠券付款成功后会出现,并且可以领取。...要么注册一个账户,用这个账户登录,充钱,添加商品,然后加购物车,然后付款,最后检查优惠券页面。 注意:测试要求是测试付款成功后优惠券页面。那么这个动作抽象一下就是 1. 付款及其前置动作 2....优惠券页面(真正测试项) 我们实际测试中,我们经常会发现,可能整个测试写了100行代码。测试付款后,检查优惠券动作只有10行代码,其它90行都是动作1,即我们花大量时间在做付款及其前置动作。...如果有一种办法,可以让我们应用程序直接到达优惠券页面,代码是不是只需要10行?是不是就避免了很多无效操作?是不是运行速度上可以更快,而且可以只关注要测试部分?...$mount('#Example-app'); // 上面正常vue代码。 // 起作用添加了如下一行。

1.1K10
领券