-
为什么2.01 变成了 2.00 ,1分钱的教训不可谓不深刻
前些日子,测试提过来一个bug,说下单价格应该是 2.01,但是在订单详情中展示了2.00元。我头嗡的一下子,艹,不会是因为double 的精度问题吧~果不其然,经过排查代码,最终定位原因订单详情展示金额时,使用double 进行了金额转换,导致金额不准。我马上排查核心购买和售后链路,发现涉及资金交易的地方没有问题...11个月前 阅读287
-
一行注解优化服务层百行@Autowire代码
@Autowire可以说是我们日常开发中使用最频繁的一个注解了, 相信你在日常开发中一定看到过如下类似的代码: public class UserService { @Autowire private xxxMapper xxxMapper; @Autowire private xxx1Mapper xxx1Mapper; ...11个月前 阅读281
-
JWT,安全加密你的验证和授权信息
jwt令牌可以应用在我们很多项目开发的场景下,基本上所有的项目都会有一些验证信息以及授权信息相关的需求,目的是为了避免一些数据泄露给权限不够或者验证失败的用户,那么此时就需要jwt令牌的出场了。这里举一个例子,比如我们在用户登录功能,用户成功完成登录时,前端如果直接将后端响应来的用户信息直接保存在浏览器的...11个月前 阅读303
-
喜提一个bug,聊聊 @NotEmpty和 @NotBlank的区别
前言上个版本,测试给我提了一个bug,说一个来源字段,传个空字符串,也能更新成功,建议做一下校验。我想了一下,我的属性确实有校验呀: @NotEmpty(message = "source must not be empty") private String source; @NotEmpty 跟 StringUtils.isEmpty 校验效果是一样的,点进去源码一看,...11个月前 阅读319
-
手写一个全局事件总线?分享 1 段优质 JS 代码片段!
今天分享一段优质 JS 代码片段,实现了一个简单的事件总线(event bus)。class EventBus { constructor() { this.events = {}; } // 发布事件 emit(eventName, data) { if (this.events[eventName]) { this.ev...11个月前 阅读318
-
彻底学会路由传参的那几种方式,再也不怕被拷打了
Vue Router 传递参数详解Vue Router 支持多种方式来在不同页面间传递参数,本文将详细介绍 query 参数和 params 参数的不同传递方式,并提供一些实用技巧。Query 参数query 参数通常用于传递临时性的数据,这些数据通常出现在 URL 的查询字符串中。路径字符串拼接(不推荐)传参在路由路径后直接拼接 ?参数名...11个月前 阅读353
-
还在写普通防抖?来学点高级的吧
不会防抖?没有关系,我们先从普通防抖开始一:防抖意义及其工作原理防抖是一种函数调用的优化策略,主要用于避免在短时间内连续多次触发某个函数,从而减轻系统负担。在面试中,也是常考的前端性能优化策略,防抖的主要思想是在一系列连续的事件触发时,只在一段时间之后执行一次处理函数。如果在这段时间内又有新的事件触...11个月前 阅读318
-
vue3 + uniapp 可以直接开发鸿蒙啦!
7 月 20 号,uniapp 官网上线了 uniapp 开发鸿蒙应用的文档,标志着 Vue3 + uniapp 开发鸿蒙应用时代的开启。鸿蒙开发的支持与限制鸿蒙开发仅支持 Vue3,不支持 Vue2 和 plus,支持 nvue,nvue 编译到鸿蒙后非原生渲染。开发环境要求DevEco-Studio 5.0.3.400 以上 (DevEco-Studio 较...11个月前 阅读343
-
B站安全开发流程落地实践
一. 什么是安全开发生命周期(SDL)1.1 SDL诞生背景随着互联网技术的快速发展,网络系统及应用在给人们的生活带来巨大便利的同时,信息安全问题也逐渐成为用户和企业关注的焦点。然而,安全问题的管理和解决需要一个系统的、完整的解决方案,在缺乏有效解决方案的情况下,很容易因为开发人员的疏忽或缺乏安全设计,导...11个月前 阅读356
-
如何设计一个排行榜?看完这篇文章就爱了!
设计排行榜是一项复杂且多方面的任务,它涉及数据存储、排序算法、缓存、并发控制和性能优化等多个方面。这篇文章,我们将详细地分析几种常见的技术方案。什么是排行榜?排行榜(Leaderboard)是一种根据某个指标进行排序并展示的系统。在现实生活中,排行榜的场景特别多,下面列举常见的一些类型:游戏领域玩家积分排行榜:...11个月前 阅读415