promise转await时小技巧
正如自然忌讳真空一样,人类是讨厌平等的。——《我是猫》 又是一个从技术推文找到的小技巧 此处将Promise函数传入,通过解构,获取到响应成功结果以及错误结果两个变量,语法简洁且便利
如何关掉Parsed mapper file日志打印
时间一直走,没有尽头,只有路口。——《摆渡人》 先说结论: 将yml配置里的mybatis-plus配置 1log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 改为 1log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl 在yml配置里新增一条 1234logging: level: root: DEBUG com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean: INFO 完整配置放在最后结尾处 为什么这样配?你是如何找到的? 首先我们搜索Parsed mapper file(因为这个日志大概率是硬编码存在于源码之中的,除非是做了日志本地化,会在配置文件里) 这里排除掉一个纯依赖模块,一个注解模块,挨个到com包搜索,在最后一个extension模块搜到了 那我们将这个类的日志级别设为INFO应该就搞定了,但是没有生效 我们打个断点,看看什么情况,等断点停到...
开源ocr库tesseract
强者容易坚强,正如弱者容易软弱。——爱默生 分享一个开源的OCR库 文档链接:https://tesseract-ocr.github.io/ 源码地址:https://github.com/tesseract-ocr/tesseract 其包含了多种编程语言
order by field
勿以己才而笑不才——房玄龄 分享一个函数field 首先在mysql内置函数的文档地址能找到这个函数: https://dev.mysql.com/doc/refman/8.0/en/built-in-function-reference.html 这里告诉我们,这个函数可以这么用,寻找第一个参数所在的下标位置,找不到为0: 1234mysql> SELECT FIELD('Bb', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff'); -> 2mysql> SELECT FIELD('Gg', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff'); -> 0 因为此处支持传入表字段 然后我们可以在查询时使用ORDER BY FIELD(字段,已存在的排好序的字段值)
idea debug小技巧
同道者相爱,同艺者相嫉——庚桑子 分享一个idea的debug小技巧 一般我们可以在断点停下时,按下ALT+F8即可打开Evaluate窗口执行表达式 但我们还可以直接按下ALT,将鼠标移动到需要执行的代码片段(会出现一个黄框) 点一下即可执行
Comparable泛型踩坑
善疑人者,人亦疑之;善防人者,人亦防之。——刘基 之前写的Comparable解决泛型限定问题 遇到了这种情况: 这是因为LocalDate没有实现Comparable<LocalDate> 而是由其实现的接口ChronoLocalDate去继承的Comparable<ChronoLocalDate> 并且LocalDate去实现的Serializable,而不是ChronoLocalDate 我们这里直接用的T extends Comparable<T>,此处传了LocalDate就是extends Comparable<LocalDate> 和实现Serializable的不是同一层级,所以我们需要指定为Comparable<? super T>,这个意思就是说允许Comparable里的类型是它的父类或者接口,具体super和extends区别可以看泛型的super和extends 改成Comparable<? super T>后,编译通过
realm.io
千万不要与同一个敌人交战过频,否则,他会把你的战术都学会的。——爱默生 分享一个数据库:https://realm.io/ java版本的github:https://github.com/realm/realm-java 这是一个旨在取代Core Data和SQLite的高性能移动数据库
CompletableFuture事务处理
男人的盟誓是女人的陷阱——莎士比亚 使用CompletableFuture进行异步任务编排时,可能会有事务的支持需求,我们这里可以使用之前我写的手动回滚、提交事务进行处理 代码案例如下,所用框架stream-query: 首先是不加事务的 123456789101112131415161718192021222324252627282930313233package io.github.vampireachao.stream.plugin.mybatisplus;import io.github.vampireachao.stream.plugin.mybatisplus.pojo.po.UserInfo;import org.junit.jupiter.api.Assertions;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringB...
js小知识
盲目的仇恨心理是很可怕的,,甚至会导致本身的毁灭——沙米亚金 这里b由于没有var、let、const等关键字定义,变成了全局变量 而a由于作用域限制,因此提示a is not defined
Jpom配置监控邮件
生活就是个缓慢受锤的过程,人一天天老下去,奢望也一天天消逝,最后变得像挨了锤的牛一样。——《黄金时代》 配置个邮箱 密码不是QQ密码,而是需要在这里点击生成授权码 别忘了顺手配一手用户邮箱 配置一个监控 测试一下,我们停掉项目,一分钟后成功发送邮件并自动重启
