- 博客(54)
- 收藏
- 关注

原创 feign常用俩种降级方式Fallback和FallbackFactory。
Fallback 不推荐因为不能捕获异常直接返回默认降级结果,缺点:不能打印堆栈信息,不利于问题排查。FallbackFactory 推荐:可以捕获异常信息并返回默认降级结果。可以打印堆栈信息。1、 @FeignClient类url 参数不存在,value 代表服务名称, feign寻找nacos 注册的服务名称@FeignClient(value = “server-feign” ,fallbackFactory = WebFeignFallbackFactory.class)url 参数存在
2021-11-30 10:27:50
35091
1

原创 Reentrantlock锁+事务Transaction的漏洞,正常超卖场景实战!
Reentrantlock锁+事务@Transaction项目中遇到一个问题。对售出商品业务的代码加上该锁,保证不能超卖。首先分析一下,保证多线程的并发安全,1、引入锁Reentrantlock,2 、开启spring的事务管理,保证出现异常进行事务回滚。这一个开发设计的代码代码业务流程这段代码 库存 10个 执行结果 卖出 14个,直接血亏4个 没有货可就是欺诈消费者咱可担待不起!!!!package com.szj.videoblog.articleservice.service.
2021-09-03 00:36:03
1256
9

原创 List集合常用API笔记大全,排序转换
ContrastModelEntryDTO contrastModelEntryDTO1 = JSON.parseObject(a, ContrastModelEntryDTO.class);**package com.infinitus.dmm.feign;import com.alibaba.fastjson.JSON;import com.infinitus.dmm.dto.ContrastModelEntryDTO;/** * CREATE BY songzhongjin ON 202
2021-05-18 15:42:48
546

原创 Easyexcel导入导出多个sheet
EasyExcel对于导入导出的操作十分简洁,记录一下多个sheet且内容不一致的导入导出。导出下载提示:其中部分代码操作Dao层可以删除,可以自己创建ExportUserExcel 对象进行测试,思路数据映射到excel中。这里ExportUserExcel .class 映射的模板替换下面代码中的模板@AllArgsConstructor@NoArgsConstructorUser@Builder@HeadRowHeight(value = 20)public class Exp
2021-05-07 14:40:47
20365
17

原创 微信小程序获取手机号后端JAVA解密流程代码
小程序获取手机号JAVA解密流程微信官方文档获取手机号地址微信官方文档获取手机号内容步骤1.获取微信用户绑定的手机号,前端需先调用wx.login接口获取登录凭证code,https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html)2.后端接收code 调用官方接口地址GET https://api.weixin.qq.com/sns/jscode2sessio
2020-07-15 15:31:13
4783
21
原创 mysql常用语法
xgj_contract_info表将新增一个名为shop_id的列,数据类型为bigint,并带有注释“门店id”1.新增字段 BIGINT 类型。
2024-02-01 14:01:48
428
1
原创 常用教程文档地址笔记
!!!!!!!!!!!!!xxxx石xxxx衫xxxx面试题:https://gitee.com/shishan100/Java-Interview-Advanced美团技术分享多线程:https://tech.meituan.com/2020/04/02/java-pooling-pratice-in-meituan.htmlmd格式语法教程:https://www.cnblogs.com/liugang-vip/p/6337580.htmleasyExcel用法教程:https://juejin
2021-11-30 14:20:28
506
1
原创 IDEA 开发常用工具版本号、插件
idea 2019JDK 1.8mysql 5.7navicat 15Postman 9.1.5必装插件:1.【强制】代码规范检查:(Alibaba Java Coding Guidelines)2.【强制】代码格式统一:checkStyle3.【强制】快速生成getter/setter/toString等方法(Lombok)4.【强制】翻译插件,快速生成驼峰命名 (Translation)5.【强制】Myabtis框架生成sql语句方便直接查看(Mybatis Log Plugin)
2021-11-26 16:36:20
2651
原创 spring Bean加载流程
一、读取注解先通过扫描指定路径下的spring注解或者XML配置,然后将其解析并封装到BeanDefintaion这个接口的实现类中。二、bean生命周期2.1 实例化AbstractAutoWireCapableBeanFactory.doCreateBean中会调用createBeaninstance()方法,该阶段主要是从beanDefinitionMap循环读取bean,获取他的属性,然后利用反射读取对象的构造方法,进行实例化对象,此时是一个空对象在JVM堆中所有属性并未赋值。2.2 初始
2021-11-23 16:02:33
2588
1
原创 String类型常用api场景,枚举使用场景
1.Excel表格读取换行内容 默认是换行的 。场景需求处理换行符处理的数据,空格、回车、换行符、制表符 //处理的数据,空格、回车、换行符、制表符 public static void main(String[] args) { String message = "1111\n3333311"; if (message != null) { message = message.replaceAll("[\\t\\n\\r]", "")
2021-11-11 16:15:34
414
原创 logback.xml配置彩色控制台输出
<?xml version="1.0" encoding="utf-8"?><configuration> <property name="pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg %n"/> <property name="pattern-color" value="%yellow(%d{yyyy-MM-dd HH:mm:ss
2021-10-27 18:12:40
2529
原创 git常用命令、技能,回滚指定版本提交记录
git创建新分支查看所有分支: git branch -a在本地新建一个分支: git branch branchNamegit checkout -b iss53 //新创建分支并切换切换到你的新分支: git checkout branchName将新分支发布在github上: git push origin branchName在本地删除一个分支: git branch -d branchName在github远程端删除一个分支: git push origin :branchName
2021-10-27 17:33:48
439
原创 后端大文件分片上传代码实现,逻辑+源码+前端+后端
大文件分片上传项目源码 包含前后端分片上传来源:github完整项目demo (前端webUploader+后端接口 )完整地址:https://github.com/zyt1272999061/webuploader_demo分片上传接口交互说明 1. 分片上传 前端通过webUploader组件 将文件分片,后端接口接收分片文件,保存到临时路径下uuid做为文件夹保证唯一性,同一个文件每次分片的 uuid都是一样。接口参数如下:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存
2021-10-11 14:19:18
1741
2
原创 JMeter 进行压力测试并发测试步骤,及文件上传并发测试演示
使用 JMeter 进行压力测试一.前言压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使我们能根据其做出一些应对措施。所以压力测试是一个非常重要的步骤,下面我带大家来使用一款压力测试工具JMeter。下载地址官网:http://jmeter.apache.org/download_jmeter.cgi准备工作因为JMeter是使用JAVA写的,所以使用JMeter之前,先安装JAVA环境,
2021-09-29 17:55:21
23778
5
原创 Typora设置图床保存图片实现图片自动上传。
Typora 解决图片可以在网上访问问题下载Typora软件下载picGo图床软件设置github仓库来存放图片使用参考这个地址看到PicGo设置这里回来看一下下面的特别说明:https://blog.youkuaiyun.com/weixin_45965432/article/details/1089119371. 上面地址PicGo设置 特别注意 这里有坑打开运行PicGo,左侧打开【图床设置】,选择【GitHub图床】博主提供的自定义域名地址:在typora上一直打不开,经过我一直大百
2021-09-29 17:19:48
350
原创 ThreadLocal有什么作用?有哪些使用场景?
ThreadLocal有什么作用ThreadLocal 的源码,可以看到源码注释中有很清楚的解释:它是线程的局部变量,这些变量只能在这个线程内被读写,在其他线程内是无法访问的。 ThreadLocal 定义的通常是与线程关联的私有静态字段(例如,用户ID或事务ID)。ThreadLocal 是线程本地存储,在每个线程中都创建了一个 ThreadLocalMap 对象,每个线程可以访问自己内部 ThreadLocalMap 对象内的 value。通过这种方式,避免资源在多线程间共享。经典的使用场景是
2021-09-15 17:17:09
2740
2
转载 JDBC原生连接批量执行sql(特殊场景需要使用jdbc,做一个记录)
一、JDBC的批量插入JDBC批量插入主要用于数据导入和日志记录因为日志一般都是先写在文件下的等。我用Mysql5.1.5的JDBC driver 分别对三种比较常用的方法做了测试方法一,使用PreparedStatement加批量的方法Java代码package com.liby.data.collection.command.impala;import java.sql.Connection;import java.sql.DriverManager;import java.sql.P
2021-09-10 10:06:30
1189
原创 reids实现分布式锁,上锁解锁异步业务代码实现。
reids实现分布式锁由于(业务上锁和解锁异步),导致我需要使用redis 自定义锁.如果上锁和解锁是同步,推荐使用Redisson组件,解决了锁的续时,服务宕机后的死锁问题,锁的可冲入,这里有两个问题:为什么要设置锁的过期时间?锁的过期时间设置多久合适?ap方法如下[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8kxTtP3y-1631010016339)(C:\Users\Administrator\AppData\Roaming\Typora\typo
2021-09-07 18:21:24
1264
2
原创 hutool工具导入excel文件处理大文件解决OOM问题。
hutool 支持excel导入 导出 底层使用的是依赖是需要导入poi在项目中遇到excel导入问题,出现oom,由于之前使用的。第二个坑就是excel文件格式 xlsx这个才是郑正确,xls读大文件会出现不兼容日期的现象。原因是:读取excel全部内容到内存中,当文件内容几十万条 很显然会造成Jvm内存溢出。ExcelReader reader = ExcelUtil.getReader(file.getInputStream());解决方式使用:hutool提供的api,注意:在此说明其实
2021-08-31 18:19:22
8649
1
原创 ReentrantLock锁解决同步场景并发问题,保证当前只允许一个用户调用接口。
package com.infinitus.dmm.physical.service.controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import java.util.concurrent.locks.ReentrantLock;/** * @Author: 宋忠瑾 * @Des
2021-08-23 09:31:39
497
原创 mysql 索引设置语法
-- 查看索引show INDEX from `user`-- 设置多列唯一索引 表名 索引名 列名ALTER TABLE `user` add UNIQUE INDEX `user_name` (`name`,`model`) USING BTREE -- 删除索引 索引名 on 表名DROP INDEX user_name ON user
2021-08-21 16:39:23
569
原创 redis 主从 哨兵sentinel 集群 数据丢失解决方案对应
redis:来源地址:https://www.cnblogs.com/jibin0310/articles/14274607.html一.进行主备切换可能发生的问题(1)异步复制导致的数据丢失产生原因:在主从复制的过程当中,部分数据没有发送的slave,master就宕机,slave数据少于主节点解决方案:redis从2.8版本开始使用PSYNC命令代替SYNC命令来执行复制时的同步操作。PSYNC命令可分为全量同步(full resynchronization)和增量同步(partial res
2021-08-19 17:43:56
441
原创 基于sentinel实现流控和熔断,自定义 限流异常
流控 : 当QPS >N 时候,当并发线程数>N,则限制不可以调用接口QPSQPS每秒查询率(Query Per Second) 每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。对应fetches/sec,即每秒的响应请求数,也即是最大吞吐能力。并发线程数指定的线程5,并发超过6则开启限流依赖<!-- 流控熔断降级sentinel --> <d
2021-08-01 19:45:40
903
原创 微服务feign实现服务互相调用,当服务挂掉默认实现兜底方法,保证程序正常。
openfeign 组件实现服务之间互相调用上一篇讲解服务注册到nacos的案例。现在需求服务A调用服务B接口。开始 实现!!!!!!首先引入openfeign依赖 <!-- nacos动态配置 config --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-sta
2021-08-01 19:22:29
1873
3
原创 nacos服务注册与发现和动态配置,支持指定命名空间
nacos动态配置,全文每一个字都要仔细看1、pom依赖添加 仔细看看nacos依赖,如果添加上面的sprigcloud组件版本统一,下发则不需要添加。如果不会弄最简单的办法就是导入带有版本的依赖,网上教程都是上面直接不带版本的导致,初学者很懵逼,没有指定版本号导致找不到依赖。2、配置文件编写bootstrap.yml看到这里你已经成功一半了这里的配置文件,大致如下,部分可以不写已标注注释3、配置nacos上编写配置文件yml格式综上所述 此时我们登陆nacos后台:配置我们的远程配 配置文件名 应该叫什么
2021-07-24 18:18:53
2738
原创 myabtis plus使用封装IService接口,批量新增批量删除等功能
官方文档地址,方法列出来了,但是没有写使用案例,今天我分享一下非常通用的做法1.当时我想使用这个批量的功能,发现百度查询的文章都没有讲清楚。今天分享一下,避免掉坑。第一步 业务service接口层 extends <实体类>第二步 业务serviceImpl层 extends ServiceImpl<mapper类,实体类>这里是引用ServiceImpl 这个类是mybatis plus 提供的基类。封装了很多方法提供我们使用。上代码接口层public in
2021-07-16 18:06:05
1840
原创 Java将字符串反转,正读和反读一样又称“回文串“,比如“aqa“,“noon“,代码实现判断是否是回文串。
答案:如下package com.infinitus.dmm;/** * @Author: 宋忠瑾 * @Description: 字符串反转 思路使用字符串下标 进行拼接比较 * @Date: Create in 11:08 2021/7/7 */public class test { public static void main(String[] args) { boolean flag = test("noon"); System.out.
2021-07-07 11:47:58
433
原创 docker快速部署mysql并初始化数据生成镜像,上传到自己镜像仓库。
文件夹内容1、准备mysql脚本2、Dockerfile文件内容FROM mysql:5.7WORKDIR /docker-entrypoint-initdb.dADD init.sql .进入当前文件夹路径 .代表当前文件夹寻找Dockerfile文件docker bulid -t mysql-3300 .运行 mysql 用户名root指定密码123456docker run -p 3300:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql-3
2021-07-06 23:33:38
709
4
原创 docker使用Dockerfile构建镜像启动项目。
1.首先准备一个文件夹 内容如下docker-web 放入index.html ,启动成功后可以访问index.htmlDockerfile 内容如下#利用FROM 基准镜像FROM tomcat:latest#进入webappsWORKDIR /usr/local/tomcat/webapps#将项目放入ADD docker-web ./docker-web2.上传到linux系统中3.进入到这个路径下 执行Dockerfile 命令取名one表示名称 2.0表示版本
2021-07-06 13:44:40
1174
原创 docker安装nacos+使用mysql持久化。
1.docker方式部署nacos#拉取镜像nacos[root@VM-4-11-centos ~]# docker pull nacos/nacos-server下载完成成功一半,启动nacos,指定8848端口。[root@VM-4-11-centos ~]# docker run -d --name nacos -p 8848:8848 -e PREFER_HOST_MODE=hostname -e MODE=standalone nacos/nacos-server此时打开浏览器 ip
2021-07-05 23:50:57
869
2
原创 linux系统部署安装mysql真实案例,防止踩坑。
解决:如何快速在CentOS7下安装MySQL开始下载步骤,无需任何准备工作,使用linux 本身的yum命令简单明了。网上太多的坑了,各种安装方式总是会出现缺斤少两的情况,导致我浪费了几个小时,特此做一个三分钟安装教程。#登录linux终端下载并安装yum repository[root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm[root@localh
2021-07-05 10:32:06
115
3
原创 redis自增Id俩种方式,基于AOF持久化操作,基于内存不使用任何持久化,
1、上代码,基于aof持久化方式 always每发生一次写的操作都记录到日志中,这里可以优化成aof+rdb(优势:rdb是按照时间分片来保存数据成功后,将会删除aof 的日志,再重启后会快速恢复数据也不会丢失) @Autowired private StringRedisTemplate redisTemplate; //自增并获取自增结果值. 网上通用的方法 //因为你要考虑宕机情况,内存数据丢失没有写进磁盘的情况,所以基于aof持久化, public Long inc
2021-07-01 10:05:06
470
原创 如何讲述一个项目
先讲产品的背景,产品解决了什么问题,产品怎么用,产品的部署架构是怎么样的,代码架构是怎么样的,最后挑选一些关键点再来在代码层面说说它是怎么实现
2021-06-11 15:22:29
515
1
原创 自定义时分秒
/** * 初始化 时间日期格式设置 * * @param time 时间 * @return 时间 */public Date dateCustom(Date time, int hours, int minute, int second) { Calendar cal = Calendar.getInstance(); cal.setTime(time); //时 cal.set(Calendar.HOUR_OF_DAY, hours); //分
2021-06-10 16:08:53
225
原创 多线程使用案例,解决多线程@Autowired无法注入接口方法。
1.controller层, 我这是一个同步任务接口,我这里批量同步考虑到如果使用多线程可以解决进程阻塞的问题,使用多个同步任务并行处理。2.service层2.1第一个方法是调用线程,参数是一个list使用for循环依次往线程池添加任务。2.2第二个是一个Runnable 线程的run()调用的方法进行封装了这也是出现线程无法@Autowired的问题来源,注解使用了,但是执行代码发现报空指针,所以这个注入没有生效。如何解决往下看。3.Service层实现 implements Physi
2021-06-01 11:33:01
2194
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人