
个人
bb加油
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2021-12-29 云效部署Maven多模块项目
1、创建项目仓库2、创建流水线3、配置流水线配置模块名变量配置代码扫描配置镜像打包(结合Dockerfile自动打包并推送镜像)配置部署(结合脚本用Docker-Compose部署项目)4、linux脚本:拉镜像,根据参数启动不同docker-compose即可小结:就是配置参数后,传参来对不同模块打包镜像、推送镜像、执行脚本、启动项目...原创 2021-12-29 18:10:30 · 1250 阅读 · 0 评论 -
2021-09-01 小程序嵌入H5,H5内调用腾讯地图报错
需求:H5内有地图功能,再将H5嵌入小程序问题:小程序web-view标签嵌入该H5时,出现如下错误原因:没配置该域名,但也不能配置,因为配置后需要将一个验证文件放上去,这是腾讯的服务器,必然实现不了,因此就会出现这个问题无解:自己拦截自己...原创 2021-09-01 10:19:44 · 1246 阅读 · 1 评论 -
2021-08-25 雪花算法
雪花算法:分布式唯一ID生成的一种方式四部分,共64位1、符号位(1位):始终为02、时间位(41):当前时间毫秒3、标识位(10位):前五位机房ID,后五位及其ID(可根据业务修改)4、每毫秒可生成多少唯一ID(12位)相关框架百度:UidGenerator美团:Leaf学习自文章《京东二面:为什么需要分布式ID?你项目中是怎么做的?》...原创 2021-08-25 14:12:25 · 126 阅读 · 0 评论 -
2021-08-23 Redis中AOF、RDB和复制功能对过期键的处理
思考1、生成/加载RDB文件、AOF写入、AOF重写、主从复制时,对过期的key会如何处理?2、当访问过期key时,redis会如何处理?RDB文件生成、加载时对过期key的处理生成RDB文件时,会略过已过期的key加载RDB文件时,若为主服务器,会略过过期key,若为从服务器,则不会略过过期keyAOF写入过期key没被定期删除/惰性删除,AOF文件不会有任何改变定期删除:定期查询要过期的key,如果有删除该key(AOF文件中append一条DEL指令)惰性删除:已过期key存在r原创 2021-08-23 15:58:45 · 419 阅读 · 0 评论 -
2021-08-17 Mybatis-Plus仅查部分字段时需注意
使用MPselectOne且查部分字段时,一定要有一个字段不为null,否则查出来的对象为nullShop shop = shopMapper.selectOne(Wrappers.lambdaQuery(Shop.class).select(Shop::getName, Shop::getDistrict).eq(Shop::getId, shopId));因此至少需要一个非null字段,才能保证这个对象一定存在,否则就需要判断对象是否为nullShop shop = shopMapper.s原创 2021-08-17 15:38:02 · 485 阅读 · 0 评论 -
shell脚本学习
基操# 打印echo "hello world"shell变量# 声明变量 # 直接声明 firstVar="第一个变量" # 间接声明 # 循环声明变量 for file in (`ls /etc`) for file in ${ls /etc} # 使用变量:最好加上花括号,便于阅读echo ${firstVar}echo $firstVar# 声明常量:即设置变量只读(设置后尝试修改则会报错)onlyReadVar="bb"readonly onlyRe原创 2021-07-21 13:55:03 · 140 阅读 · 0 评论 -
2021-07-08 Nginx再入
强推:狂神说的Nginx链接作为一个快速入门的视频还是很好理解的Nginx作用反向代理正向代理:VPN(代理C端)反向代理:Nginx(代理S端)负载均衡轮询、加权等方式做负载均衡动静分离静态文件可以直接放在nginx下配置Nginx配置文件(nginx.conf)配置详解1、全局配置2、事件配置3、服务配置1、负载均衡upstream myItem { server 127.0.0.1:8080;}原创 2021-07-08 16:15:58 · 113 阅读 · 0 评论 -
2021-06-07 字符串转含泛型的对象
方法:hutool的JSONUtil实体@Datapublic class MyResponse<T> { private String msg; private T data;}@Datapublic class MyObj { private String name;}测试public static void main(String[] args) { MyResponse<MyObj> myResponse2原创 2021-06-07 13:40:52 · 3041 阅读 · 1 评论 -
2021-05-24 谷歌浏览器所有页面都显示崩溃
前言早上一来开谷歌直接什么页面都是崩溃状态,我笑了,什么都没动,好像上周五杀了个毒解决1、C:\Users\HUAWEI\AppData\Local\Google\Chrome下有个User Data目录,重新建一个,原来的改名2、原来的设置、书签、插件、历史记录都在User Data/Default,覆盖一下即可,不过账号那些需要重新登录下...原创 2021-05-24 09:40:12 · 614 阅读 · 0 评论 -
2021-03-10 Java包装类
Integer示例public class Test { public static void main(String[] args) { Integer a = 1; Integer b = 1; System.out.println(a == b);// true Integer c = 129; Integer d = 129; System.out.println(c == d);//原创 2021-03-10 16:31:38 · 113 阅读 · 0 评论 -
2021-01-24 SpringBoot + Spring Security + JWT 实现认证鉴权
前言1、会基本的Spring Security配置2、大概了解Spring Security原理(一条过滤器链)简单理解Spring Security就是一条过滤器链,如果你登录了,那么会有过滤器将你的认证信息解析出来并放到Security的上下文中,这样其他过滤器就通过这个认证信息来鉴权JWT配置简单描述之前由Security的过滤器来解析认证信息,现在我们自己定义一个过滤器,将携带的token解析为认证信息即可登录:登录成功后生成token// cn.mb原创 2021-02-24 15:59:33 · 531 阅读 · 0 评论 -
2021-01-22 微信小程序图片上传注意点
1、后台文件大小限制2、是否需要压缩3、如果要在小程序上展示图片,需要做内容识别校验,否则出现违规图片可能审核不通过原创 2021-01-22 10:14:00 · 513 阅读 · 0 评论 -
2021-01-20 图片压缩
前言项目中用到了华为云的ocr,但是识别速度过慢,问了客服了解到可能有几个原因 1、图片链接的话存在网络传输问题 2、图片过大问题 3、服务器网络带宽问题这里我主要处理2,因为用的是MultipartFile参数,因此考虑先压缩过后,再将图片进行ocr。方案hutool:发现hutool的工具真是够GB用了// 以下方式可以直接压缩并输出文件ImgUtil.compress(new File("原图片"), new File("输出图片"), 0.5F);// 但由于我不原创 2021-01-20 14:10:42 · 766 阅读 · 0 评论 -
2021-01-19 华为ocr
前言项目需要识别行驶证的功能,选择了华为的ocr,记录一波用法行驶证识别在线调试==(要开通该服务且图片要是行驶证)==SDK各语言SDKdemo下了SDK用AKSK那个demo即可注意点1、如果在自己项目使用,导jar的时候记得带上demo中的内容,要不然导不过来2、如果有jar冲突就自己个儿排除即可,我遇到的冲突如下...原创 2021-01-19 15:08:23 · 108 阅读 · 0 评论 -
2021-01-15 记一次微信支付订单号重复问题
问题今天系统突然出现订单号重复的问题,但通过日志观察,并没发现订单号有重复的(使用redis的incr生成),于是猜测可能是之前测试的时候用过这些订单号,但未支付的订单在商户上也查不到,所以最终只能通过代码的方式来处理。处理因为用的是第三方封装的微信支付jar,所以通过捕获其异常,如果是订单号重复,那么就重新生成订单号再次下单。雪花算法不过try-catch来处理,每次下单也是需要耗费时间的于是参考了雪花算法,据说只要是时间不回溯,编号就不会重复,可以看看这篇文章,感觉还不错原创 2021-01-15 11:37:35 · 1450 阅读 · 0 评论 -
2021-01-13过滤器、拦截器、切面区别
前言最近在搞重复请求处理,然后想到拦截器和切面都可以实现,但对于用哪种方式优点懵,查了资料后,发现其实过滤器也可以实现,于是记录一下三者的区别。过滤器、拦截器、切面区别1、执行顺序:过滤器 -> 拦截器 -> 切面2、过滤器和拦截器都是请求层面的拦截,切面是方法层面的拦截3、拦截器只在请求进入controller前执行,过滤器会在进入controller与执行后执行,切面可通过配置在方法执行前、后、环绕、异常执行4、获取参数方式:过滤器和拦截器都需要读取HttpRequest的原创 2021-01-13 14:30:17 · 1239 阅读 · 0 评论 -
2021-01-07 库存锁定问题
前言今天同事突然问我,要是一个商品我直接下单所有库存,那么是不是要等到订单取消后另一个人才可以下单,我思考了下,确实是需要限制一下,下面是我参考的方案方案:下单锁库存/支付锁库存通过淘宝测试,n件以内下单是下单锁库存,n件以上是支付锁库存这个n在后台应该是可以设置的,淘宝做这么久,肯定考虑到恶意下单的问题了不过支付锁库存会有问题,就是两个用户同时下单,而回调是分先后的,此时可能会造成一个用户支付成功,但是库存没有,这里可能就需要自动退款或其他的操作了小结目前没做这个功能,如果后续需要原创 2021-01-07 16:17:52 · 1628 阅读 · 0 评论 -
2021-01-07 mysql的一些优化
sql优化1、select 需要列 在select中最好只获取所需列,全部获取有点太多了(如果列太多)2、关闭查询缓存:这是为了避免生产中缓存失效,所以关闭缓存在测试查询时间3、explain:对索引进行优化,看有没有走我们预期的索引 force index(index name):强制走索引,放在语句最后即可4、如果使用了索引,那么要注意一些索引失效的情况,例如对索引列做函数操作、isnull判断等情况其他优化1、外部添加缓存层(redis)2、内部分库分表(mycat?听说原创 2021-01-07 09:40:57 · 143 阅读 · 0 评论 -
2021-01-05 MySQL json数据类型
前言最近同事负责的模块有用到json这个数据类型,之前没接触过,今天正好有空就记录下怎么使用。简介实际上我们存的时候还是存一个字符串,只不过我们在操作该数据类型的时候,可以通过JSON_XXX的函数来操作该字段准备一张表,插入数据CREATE TABLE `json_test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `json_str` json NULL, `json_arr` json NULL, PRIMARY KEY原创 2021-01-05 14:12:30 · 173 阅读 · 0 评论 -
2021-01-05 MP中service的saveOrUpdateBatch方法
表中存在主键1、实体主键 = null,直接插入2、实体主键 != null 查询entity entity == null -> 插入 entity != null -> 更新表中无主键无法执行批量操作原创 2021-01-05 11:41:15 · 9090 阅读 · 2 评论 -
2020-12-29 Sentinel流控规则链路方式失效
解决方案效果例子AController.testA接口调用AService.testA方法如果我们需要限制这个入口调用AService.testA的次数,则可以通过流控规则来限制在AService.testA方法上贴上@SentinelResource注解,并设置资源名及降级方法(因为此时是服务报错)后再去添加流控规则Controller、Service代码如下package cn.mb.sentinelconsumer.controller;import cn.mb.sent原创 2020-12-29 14:47:40 · 1568 阅读 · 4 评论 -
2020-12-28 微信小程序JSAPI支付的几个小问题
前言尼玛刚刚有个bug,就是早上11点下的单下午支付不了(prepay_id超时2小时,有做判断,超过2小时后重新调用下单接口),但刚刚直接订单已过期,我直接懵掉,还以为一个订单只能下一次单(但其实能下多次,只要你主要的参数不变,例如金额,订单号等),还瘠薄疯狂排查,最后发现是存储在redis中的支付参数过期时间是一天,忘记改成2小时了,我笑了。几个支付会报的错订单已过期:支付参数过期,拿着原来的参数可以再次下单订单已关闭:调用了关闭订单接口后,再下单可以下,但是扫描后就是订单已关闭原创 2020-12-28 16:47:00 · 962 阅读 · 1 评论 -
2020-12-25 RocketMQ常见问题
前言项目中有用到RocketMQ,所以思考了一波RocketMQ常见的问题。角色可能的问题Producer消息丢失Broker可用性、消息丢失Consumer消息丢失、顺序消费、重复消费Producer消息丢失场景: 假设Broker没问题,若生产者发送消息异常,且重试多次后也不成功,就会造成消息丢失方案:此处以异步发送消息为例,其有发送成功及失败回调,当成功回调中若状态不为OK/发送失败时对消息进行处理 1、将消息存储在原创 2020-12-25 13:45:08 · 258 阅读 · 0 评论 -
2020-12-22 阿里云RocketMQ接入
前言近期项目中需要RocketMQ,决定接入阿里云的,因此记录一下使用过程。链接消息队列 RocketMQ 版文档购买(略过,同事选配,买的是按量付费)买完进入后就都是0使用创建实例注意上面是创建的实例是华东1的实例若要创建公网实例,按如下切换后再创建(区别下面再讲)创建完成点击详情即可操作该实例若是按量付费,实例不用了记得删除,创建实例每天也是要钱的Topic创建Topic原创 2020-12-22 14:03:58 · 2487 阅读 · 0 评论 -
2020-12-21 Excel大量数据导入导出(Java)
前言项目中有导入导出,自己负责的是导出,这几天没什么事,就寻思怎么解决大数据量的导入导出。导出准备工作准备110W条数据(cn.mb.excelexport.ExcelExportApplicationTests#saveBatch)测试xls导出所有数据(110W)xlsx导出所有数据(110W)由上小结xls格式最多65535行数据,xlsx格式最多1048575行数据,且经测试,是每个sheet的行数限制解决:分批导出分批 ≈≈原创 2020-12-21 16:42:03 · 974 阅读 · 0 评论 -
2020-12-17 单例模式
单例模式new非原子操作原创 2020-12-17 09:18:20 · 82 阅读 · 0 评论 -
2020-12-15 Maven Version管理
前言 今天在写demo的时候,发现多模块版本号自己不知道怎么管理,于是查了一下怎么方便快捷地管理version,下面是自己的一些小结。父pom<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocatio原创 2020-12-15 15:35:14 · 433 阅读 · 0 评论 -
2020-12-11 RocketMQ学习
环境构建[版本4.7.1]各种环境配置RocketMQ此处我用的是Windows构建,拉到下面的Windows查看即可集群搭建(Windows)集群搭建参考demo一样在官网左边点进去CV然后跑一下,先看看效果控制台安装:进去往下拉第五点使用概念group|topic等参考重试/死信队列参考名称简述group将生产者/消费者进行分组,其实感觉是针对消费者设置的,但RocketMQ中生产者也需要这个参数;我觉得最主要的作用就是在集群环境下,gr原创 2020-12-11 16:14:43 · 108 阅读 · 0 评论 -
2020-12-09 @RequestBody 接收String 报xxx: Content type ‘text/xml;charset=UTF-8‘ not supported
前言最近做微信小程序支付(JSAPI支付),支付回调采用流读取方式读取回调信息,但为简便,可以通过@RequestBody直接接收字符串,在demo中测试可以,但在项目中不行(报HttpMediaTypeNotSupportedException: Content type ‘text/xml;charset=UTF-8’not supported错),因此考虑是不是消息转换器的问题。参数解析流程学习 - 参数解析流程缺失消息转换器demo中项目中思考发现原创 2020-12-09 13:16:12 · 4187 阅读 · 0 评论 -
2020-12-02 微信JSAPIV3支付
前言微信新出的V3支付接口,还没玩过,正好有做支付的需求,于是就看看怎么搞了,下面是集成第三方jar来调用的微信支付,如何使用可以查看我的另一篇文章,不过方式跟v2也是有些区别的。微信jar V2支付(含内网穿透工具)V3接口规则(个人理解)微信文档发送请求前,构造签名串,使用证书和密钥文件签名将生成签名按照规则组装后,作为请求头,发送请求整合binarywang.weixin-java-pay实现v3支付jar<dependency> <grou原创 2020-12-02 16:28:28 · 2476 阅读 · 5 评论 -
2020-12-02 整合第三方库实现微信支付(v2)
前言 最近又需要做微信小程序支付,本来是想用之前自己写的工具类,不过同事推荐了一个第三方库,用起来感觉不错,写个demo记录一下。 而且自己做的是代小程序开发,所以在回调时逻辑会有一些不同,其他大致一样。2020-12-01 一个好用的微信支付jar用法大部分用法如下: 1、创建WxPayService对象 2、创建WxPayConfig对象并配置所需参数 3、如果有对应的Request参数,则创建对应对象并设置参数 例: 退款查询参数:WxPayRefundQueryRequ原创 2020-12-02 10:58:04 · 524 阅读 · 1 评论 -
2020-12-01 一个好用的微信支付jar
前言 自己做的比较多的微信支付是小程序支付这块,不过之前都是网上看的然后自己写的一些工具类,最近了解到一个很好用的第三方库,分享给大家!Github连接<dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-pay</artifactId> <version>4.0.0</version>&l原创 2020-12-02 10:11:42 · 424 阅读 · 1 评论 -
2020-11-27 GIT分支管理
场景 这几天项目猛尼玛地更新,幸好还没开始使用,但迭代速度过快导致分支拉的有点多,在分支管理上理解还不是太够,于是自己思考了一下GIT的分支管理。分支管控1、master:生产环境 当前版本所需功能,都需要合并至该分支中2、dev:开发环境 开发分支,所有开发的功能都需要合并到该分支上; 由于目前是通过云效来部署项目,所以我们都是将该分支用于api接口测试,因此所有代码都需要合并至dev;3、feature-xxx:功能性分支 各个版本的开发,分别对应不同的分支; 如果是多功原创 2020-11-27 16:40:07 · 91 阅读 · 0 评论 -
2020-11-26 Mapstruct使用小结
依赖<dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> <version>1.4.1.Final</version></dependency><!--编译用--><dependency> <groupId>org.mapstruc原创 2020-11-26 16:47:33 · 1685 阅读 · 1 评论 -
2020-11-26 基于Hutool的Excel导出
效果流程设置列名放入数据设置一下response回写代码工具类package cn.mb.excelexport.util;import cn.hutool.poi.excel.ExcelWriter;import cn.mb.excelexport.annotation.ExportField;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRe原创 2020-11-26 16:22:01 · 397 阅读 · 0 评论 -
2020-11-23 防止恶意请求
方式一:拦截器 对IP进行请求次数限制,将次数存储在Redis中,如果次数到了则将IP放入黑名单/时间内不予以访问。拦截器demo方式二:Nginx1、配置黑名单2、配置IP访问限制次数Nginx配置原创 2020-11-23 17:21:01 · 447 阅读 · 0 评论 -
2020-11-23 Java自定义注解
场景 最近在学习切面及重复请求处理,而这些操作如果只针对某些方法生效时,可以通过自定义注解的方式,在判断方法有该注解后,才执行对应的逻辑,否则就正常执行。使用@Documented// 可被文档导出@Retention(value = RetentionPolicy.RUNTIME)// 保留状态,RUNTIME:可以通过反射读取@Target(value = {ElementType.METHOD, ElementType.TYPE})// 作用域:方法、类public @i原创 2020-11-23 10:08:54 · 97 阅读 · 0 评论 -
2020-11-20 重复请求处理
场景目前开发的是一个4S点的小程序模板,其中有预约模块,即用户可以预约洗车、保养等项目,若用户在预约的时候由于网络问题导致请求时间过长,可能会重复点击请求按钮,造成同样的预约预约了两次,因此考虑到重复请求的问题。Tip:其实写数据的操作感觉都需要处理重复请求,要不然总会操作一次DB。思考方案前端控制逻辑 请求前,参数判断后,禁用按钮 请求回调的最后一步再启用按钮问题 可以避免一部分的重复请求; 但如果极端一点,启用按钮后还是有一丢丢机会是可以再次发送同样请求的;原创 2020-11-20 18:57:20 · 182 阅读 · 0 评论 -
2020-11-09 Spring中@Async注解使用
1、配置类package cn.mb.asyncdemo.config;import cn.mb.asyncdemo.exceptionHandler.AsyncExceptionHandler;import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;import org.springframework.context.annotation.Configuration;import org.springfr原创 2020-11-09 15:45:31 · 211 阅读 · 0 评论 -
小程序调用本地接口
1、微信开发者工具配置2、修改地址为本地接口地址3、配置白名单[开放平台需要配置]原创 2020-11-06 11:53:52 · 791 阅读 · 0 评论