,已生成直接返回 没有生成则生成6位验证码 调用短信服务发送短信 发送成功,将code保存至Redis,失效时间60s 代码实现如下: /** * 发送验证码业务逻辑层 * @author zjq...AssertUtil.isNotEmpty(phone, "手机号不能为空"); // 根据手机号查询是否已生成验证码,已生成直接返回 if (!...== null, "该手机号未注册"); AssertUtil.isTrue(diners.getIsValid() == 0, "该用户已锁定,请先解锁"); } 控制层创建相关接口...全局异常配置 添加全局异常处理类,代码如下: /** * 全局异常处理类 * @author zjq */ @RestControllerAdvice @Slf4j public class GlobalExceptionHandler...= null, "用户名已存在,请重新输入"); // 注册 // 密码加密 userDTO.setPassword(DigestUtil.md5Hex(
事实上,在编译时无法识别处理null的任何错误,会导致运行时NullPointerException。...---- 根据 Javadoc for NullPointerException,当应用程序在需要对象的情况下尝试使用null时抛出它,例如: 调用null对象的实例方法 访问或修改空对象的字段 取null...null引用的方法调用。...如果客户端代码在不检查 null参数的情况下调用此方法 ,则 FindBugs将在编译时生成警告。 4.2.使用静态代码分析 开发人员通常依靠IDE来编写Java代码。...readName()).collect(Collectors.toList()); } else{ returnCollections.emptyList(); } } 因此,我们在调用此方法时避免了客户端执行空检查的需要
代码过度嵌套的结果是只有原作者才能读懂,接盘侠一脸茫然。...并非每行代码都会抛出错误,只要将会抛出错误的业务放在一个独立的方法即可。...} catch ( Exception e) { //TODO } } 封装多个参数 如果方法参数将超过3个,建议放在类中包装起来,否则再增加参数时,由于语义的强耦合会导致调用方语法错误...看看例子: 例1: 判断集合是否为空: CollectionUtils.isEmpty(null): true CollectionUtils.isEmpty(new ArrayList()): true...CollectionUtils.isEmpty({a,b}): false 例2: 判断集合是否不为空: CollectionUtils.isNotEmpty(null): false CollectionUtils.isNotEmpty
代码过度嵌套的结果是只有原作者才能读懂,接盘侠一脸茫然。...并非每行代码都会抛出错误,只要将会抛出错误的业务放在一个独立的方法即可。...} catch ( Exception e) { //TODO } } 封装多个参数 如果方法参数将超过3个,建议放在类中包装起来,否则再增加参数时,由于语义的强耦合会导致调用方语法错误...@Getter 使用方法同上,区别在于生成的是getter方法。 @ToString 注解在类,添加toString方法。...({a,b}): false 例2: 判断集合是否不为空: CollectionUtils.isNotEmpty(null): false CollectionUtils.isNotEmpty(new
org.apache.commons.lang3.StringUtils; 开始使用的是com.mysql.jdbc中的 StringUtils.isNullOrEmpty,,,结果导致在我进行查询的时候各种错误...,而是做了相应处理,例如,如果输入为null则返回也是null等,具体可以查看源代码)。...(String str) 判断某字符串是否为空,为空的标准是str==null或str.length()==0 下面是StringUtils判断是否为空的示例: StringUtils.isEmpty...(null) = true StringUtils.isEmpty(“”) = true StringUtils.isEmpty(” “) = false //注意在StringUtils中空格作非空处理...isEmpty(String str) 下面是示例: StringUtils.isNotEmpty(null) = false StringUtils.isNotEmpty(“”) = false
随着数据量的不断上涨,项目需要快速处理数据成为了第一要务,对于数据统计的严格性要求不高。...MongoDb应运而生,MongoDb是典型的文档性的数据库,对于保存多层级的数据比较方便,同时MongoDb更强调用户的访问速度,采用的是若一致性,对于数据请求提供一个“大约”的数字,以求更快处理数据...所以说mongoDb是快速处理大数据的一个选择。...@Indexed - 用于字段,表示该字段需要如何创建索引 @DBRef - 用于字段,以表示它将使用com.mongodb.DBRef进行存储。...; Object[] values = null; if (EmptyUtil.isNotEmpty(param)) { params = new
().getSimpleName() + "." + key + " == null"); } //如果不是getter方法...则直接返回 2.通过config通过反射拿到方法method()数组 3.对method()数组进行遍历,或者方法的名称 4.如果方法的名称是getter方法,则获取getter方法上的注解参数信息,从而拿到它的...key,从而拿到value值 5.通过配置获取value值,而value值是通过调用method.invoke()反射的底层方法获取的。...} else { //做暴露操作 doExport(); } exported(); } 1.取消暴露服务,则直接返回 2.进行bootstrap处理...实现上则是通过反射获取目标对象的getter 方法,并调用该方法获取属性值。然后再通过 getter 方法名解析出属性名,比如从方法名 getName 中可解析出属性 name。
= null) { data.put("refreshToken", token.getRefreshToken().getValue()); }...) { throw new UsernameNotFoundException("用户名或密码错误,请重新输入"); } // 初始化登录认证对象...接下来我们构建一个用户微服务并通过调用授权认证服务实现登录和退出。 用户微服务构建 用户服务相关pom依赖如下: <?xml version="1.0" encoding="UTF-8"?...= restTemplate.postForEntity(oauthServerName + "oauth/token", entity, ResultInfo.class); // 处理返回结果...如有错误❌疑问欢迎各位指出。 主页:共饮一杯无的博客汇总 保持热爱,奔赴下一场山海。
以后点点点就OK了 在本小节中,将介绍如何通过拦截HTTP请求,通过录制的方式形成测试用例 首先,我们来尝试一下如下的一个简单场景 1)调用MeterSphere的某个无参GET接口 2)录制该接口的请求和返回...){ log.info("请求为空"); return; } HttpServletRequest request...GET方法,并且断言该接口调用成功。...带参的POST请求 类似的,我们通过一个登录请求来展示如何拦截并实现带参POST请求的录制回放。...setAttribute("authenticate", UserSource.LOCAL.name()); return userService.login(request); } 对于入参是这样定义的 @Getter
有些状态字段,比如:orderStatus有:-1(未下单),0(已下单),1(已支付),2(已完成),3(取消),5种状态。...那么,如何才能不丢失精度呢?...所以在这里强烈推荐一下apache common3中的StringUtils类,它里面包含了很多实用的判空方法:isEmpty、isBlank、isNotEmpty、isNotBlank等,还有其他字符串处理方法...,可能为null,需要判空的。...list.stream().map(User::getId).collect(Collectors.toList()); 因为mapper底层已经处理过的,它不会出现空指针异常。
然后,调用 Stream 的 listen 方法并传递要在连接状态更改时调用的函数。该函数必须接受一个类型为 ConnectivityResult 的参数。...在函数内部,您可以处理连接状态发生变化时要执行的操作。确保您在不再使用时取消订阅,这可以在 dispose 方法中完成。 ConnectivityResult?...使用 InternetAddress.lookup 为了检查设备是否可以访问互联网,您可以尝试执行地址查找。在 Flutter 中,可以通过使用 dart:io 包来完成。...因此,您需要通过传递有效且可访问的主机来调用该方法。如果结果不为空且不出错,则表示查找成功,设备已连接到互联网 bool?...如果给定的地址无效,您也会得到同样的错误。
FleaObjectPool 内嵌了GenericObjectPool作为内部对象池实例,用于存储实际的对象;同时它实现 java.io.Closeable,用于处理对象池的关闭。...closeFleaObjectPool() 方法关闭对象池isClosed() :是否对象池实例已经关闭【true : 对象池实例已关闭】getFleaObject() :从对象池中获取一个对象实例【...每当对象池需要一个新的 FleaJPAQuery 实例时,就会调用此方法。这里创建了一个新的 FleaJPAQuery 实例,并将其包装在 DefaultPooledObject 中返回。...destroyObject(PooledObject p) :- 当一个 FleaJPAQuery 对象从对象池中移除并且不再需要时(例如,当对象池被关闭或达到其最大容量时),会调用此方法...null; criteriaQuery = null; if (CollectionUtils.isNotEmpty(predicates)) { predicates.clear
只要实现方和调用方遵循规范,可以避免不必要的空值判断,这充分体现了阿里的“新六脉神剑”提倡的“因为信任,所以简单”。...如果采用 Setter 方法赋值,编译器会提示错误并要求修复。...userList.isEmpty()) { // TODO: 处理代码 } 精简: if (CollectionUtils.isNotEmpty(userList)) { // TODO...此外,此规则同样适用于简化映射关系的 switch 语句。...11.1.删除已废弃的代码 删除项目中的已废弃的包、类、字段、方法、变量、常量、导入、注解、注释、已注释代码、Maven包导入、MyBatis的SQL语句、属性配置字段等,可以精简项目代码便于维护。
如果是事件响应,可以使用dalegation处理,但是jquery validation插件并不支持类似dalegation的机制,这令两者的兼容面对一个死结。...isNotEmpty规则的应用场景 简单来说,isNotEmpty规则存在的唯一目的,是保证进入页面之后初始状态没有错误提示信息。因为formsy的在表单创建成功之后立即进行验证。...,此时isNotEmpty规则返回false,显示isNotEmpty错误提示文案,但是我们不想让用户看到这个提示,所以将次文案设置为空字符串,这就是为何this.state.emptyError初始值为...可能会有人疑惑为何this.setState({emptyError: '不能为空'});没有触发组件的重绘?...根据这个API的说明,我们可以进行这样的判断:如果input控件是原始的,那么它的错误提示便是空白的,用户便看不到错误提示。一旦组件的setValue被调用,便将错误提示替换为正常的值。
chatsList.isEmpty()) {// 如果存在聊天数据 int size = 0; String lastMsg = null; if (Str.isNotEmpty...communicateService.getById(communicate.getId()); if (communicateDB.getStatus() == 2) // 如果其他线程已更新状态...userInfoService; String defaultImg = ConfigLoader.loader.getString("user_default_img"); } Spring异步观察者事件处理...e.getMessage()); } } @Autowired CommunicateHandle communicateListener; } 直接将数据push到缓存中,在Spring事件监听里已经做了处理...communicateService.getById(communicate.getId()); if (communicateDB.getStatus() == 2) // 如果其他线程已更新状态
getEmbedUrl对用户传入的url进行正则匹配,因为我们传入的是个正常的Youtube视频,所以这里是没有问题的,然后调用setDefaultParam函数对传入的其他参数进行处理。...为空则设置默认值。...能传递_template了,接下来看下是如何取模板和渲染模板的。...跟进,发现会拼接/WEB-INF/classes,而且其中也是调用了normalize对传入的路径进行过滤。。 ? 这里还是可以用../跳一级目录。 尝试读取一下.....获取到URL对象之后,继续回到之前的getResourceAsStream,可以看到,当返回的url不为null时, 会调用url.openStream()获取数据。 ?
parserContext) { BeanDefinitionRegistry registry = parserContext.getRegistry(); //注册注解配置处理器...registerBeans(registry, DubboBootstrapApplicationListener.class); } /** * 注册注解配置处理器...//在具有指定参数的指定对象上,调用此方法对象表示的基础方法。...this.getClass().getSimpleName() + ", please make sure every property has getter...override ", e); } } //添加环境变量配置信息 private void appendEnvironmentProperties() { if (parameters == null
因为当你已经开始想知道springboot如何集成es的时候,说明你已经过了了解elasticsearch的阶段。...你往数据库修改一条,同时也修改一下es,这种方式的有点就是操作简单,只需要在调用mysql的dao的同事,调用一下es的增删改查即可。...缺点是要处理二者的同步性问题,比如往mysql插入成功,往es插入失败的情况的处理。...数据同步 基本的方法都有了,下面就是数据同步了,我们需要在所有的对数据库有增删改操作的地方,同时去操作es,这一部分可以分散在代码的各个角落,所以推荐大家通过aop去处理,去定义对应的切面,在切面中统一处理...我这里利用了消息队列,主要原因是想做成异步,因为有些操作比较本身已经比较耗时了,所以不想在操作后,还去等待es的处理结果,所以直接扔到队列里,由队列异步处理: 发送到队列代码: // 同步es mqService.sendEs
constraint 可以附加到字段,getter 方法,类或者接口上面。对于一些特定的需求,用户可以很容易的开发定制化的 constraint。...异常统一捕获处理,省去每个@Valid后都跟着处理BindingResult /** * 数据校验处理 * @param e * @return */ @...(也没有特别的错,只是 result 是接不到值。)。...参数的解析器 HandlerMethodArgumentResolver resolver = getArgumentResolver(parameter); // 调用解析器获取参数...= null; log.error(fieldError.getField() + ":" + fieldError.getDefaultMessage()); // 将错误的参数的详细信息封装到统一的返回实体
需要分片的和不需要分片的文件处理时机。这两种都需要考虑,才能不漏掉相应的文件处理。 2、事件发布的代码 在掌握了事件的发布时机后,我们就知道了在处理文件上传时的程序中如何切入事件的发布。...在上面小节中,我们介绍如何发布Spring的Event,同时以一个大文件的上传为例,具体的介绍了如何进行文件上传事件的发布。...本节接着在上面的例子中,重点讲解在事件发布后,如何进行事件的监听以及具体的业务回调处理机制。通过本节可以掌握在实际业务中进行灵活的业务扩展和定制。...."); } } } catch (Exception e) { sys_user_logger.error("文件上传事件监听发生错误."...4、实际处理实例 下面我们结合实际场景来看一下具体的实现及调用过程。
领取专属 10元无门槛券
手把手带您无忧上云