自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 CompletableFuture的使用介绍, CompletableFuture与FutureTask的区别

CompletableFuture实现了CompletionStage接口和Future接口,前者是对后者的一个扩展,增加了异步回调、流式处理、多个Future组合处理的能力,使Java在处理多任务的协同工作时更加顺畅便利。 总的来说简洁了FutureTask与线程池的配合使用 没啥太大区别吧我觉得, 使用方法不一样, 多了一些方法...futureTask 创建异步任务 FutureTask<String> str...

2021-07-31 09:37:30 1650

原创 并发编程三要素

原子性:不可分割的操作,要么都成功要么都失败有序性:程序执行的顺序和代码的顺序保持一致可见性:一个线程对共享变量进行修改,另外的线程能立马看到

2021-07-28 18:37:18 563

原创 windows Docker (error getsockopt: connection refused ,使用http无法使用 docker login 登录的问题)

windows 下修改要推的地址

2021-07-28 15:49:39 460

原创 多线程插入数据开启事务,要么都成功要么都失败,PlatformTransactionManager 管理事务

spring为我们提供了事务相关的接口,PlatformTransactionManagerpublic interface PlatformTransactionManager extends TransactionManager { // 获取当前活动的事务或创建一个新事务 TransactionStatus getTransaction(@Nullable TransactionDefinition definition) throws Transactio..

2021-07-27 21:29:34 1316

原创 ClassUtils常用方法总结

获取包名getPackageName(Class<?> cls)@Testpublic void testGetPackageName(){ //获取包名 String packName = ClassUtils.getPackageName(String.class); System.out.println(packName); // = java.lang String packName2 = ClassUtils.getPackage

2021-07-26 08:37:25 567

原创 MySQLTransactionRollbackException: Deadlock found when trying to get lock

出现问题的场景: 多线程大批量插入(涉及到唯一索引, 没有插入 有则更新)锁争抢问题https://bugs.mysql.com/bug.php?id=77209解决方法有两种:添加test_id+group_id的组合索引,这样就可以避免掉index merge; 将优化器的index merge优化关闭; 加锁...

2021-07-24 12:26:07 1284 1

原创 实现拦截器HandlerInterceptor发生 Stream closed异常 处理参数 放行 而接口接受参数为null

改为filter@Componentpublic class CenterFilter implements Filter { @Value("${aicenter.key}") private String openCenterSecret; @Autowired private SignUtil signUtil; @Override public void doFilter(ServletRequest request, ServletR.

2021-07-23 10:09:45 634

原创 java 处理高并发接口 造成数据库长连接问题 自定义队列

把之前写的队列抽出来了, 这样有其他同事也有类似的场景就可以直接使用啦, 使用方法也很简单 , 直接继承就可以/** * 统一处理数据的队列 * 指定队列最大值. 当队列到达最大值时 执行execute方法, 若l分钟还没到达队列最大值也执行execute * * @param <L> */@Datapublic class UnifyStoreQueue<L> { // listener执行次数 计数器 private sta...

2021-07-16 15:43:08 622

原创 java 自定义队列 队列达到指定的容量执行方法 或者指定时间内未到达指定容量也执行

在高并发的场景下, 频繁的插入造成数据库长连接问题, 考虑的解决方案为, 定义一个队列, 当数据请求时,先把数据加载到队列中, 若到达指定的容量开多线程统一执行插入数据库操作, 若在指定的时间内, 队列未能达到指定的容量也执行, 避免一直不保存.直接上代码@Componentpublic class EventStoreQueue { // 线程数 private static final int numberOfConcurrentThreads = ...

2021-07-15 14:43:51 1363 1

原创 zuul Caused by: java.lang.NoSuchMethodError: org.springframework.boot.web.servlet.error.ErrorControl

springboot与springcloud版本冲突导致, 已解决,以下两个版本可以 <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.6.RELEASE</version> <relativePath/&gt

2021-07-14 11:37:53 2635 1

原创 微服务项目搭建

接下来的时间, 我会利用空闲时间敲一个二手商城项目,小程序方向,主要为了熟悉一下微服务项目的流程,包括前期的项目设计与项目发布主要技术栈:springboot、springCloud、redis、rabbitmq、mysql、nginx、vue+elementui、微信小程序。。。夫依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId&g.

2021-07-13 22:13:58 291 1

原创 自定义注解 通过token获取用户ID

@Target(ElementType.PARAMETER)@Retention(RetentionPolicy.RUNTIME)public @interface LoginUserId {}@Componentpublic class LoginUserHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver { @Autowired private CommUserUtil com..

2021-07-12 15:50:01 2065

原创 springboot整合redis实现发布订阅

虽然redis也能实现发布订阅, 但术业有专攻, 发布订阅还是要使用mq中间件!虽然redis实现了发布订阅(publish/subscribe)的功能,但是在通常的情况下是不推荐使用的,如果想使用消息队列这种功能,最好还是使用专业的各种MQ中间件,例如rabbitMQ,rockedMQ,activitedMQ等,本文主要讲一下不推荐使用redis的发布订阅功能的原因 第一个原因是和redis系统的稳定性有关。对于旧版的redis来说,如果一个客户端订阅了某个或者某些频道,但是它读取消...

2021-07-10 10:24:52 1574

原创 高并发处理之限流方案 RateLimiter以及阿里Sentinel

在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流缓存 缓存的目的是提升系统访问速度和增大系统处理容量 (本地, redis) 降级 降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者问题解决后再打开 (hystrix) 限流 限流的目的是通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理 (令牌桶算法)令牌桶酸防简介令牌桶算法原理如下:用户请求必须拿到令牌才代表消...

2021-07-09 16:54:34 1531

原创 java Function获取实体类字段名称

在使用LambdaQueryWrapper的时候, 使用Function的形式传递参数比较好用优雅而且不会写错, .eq(User::getAge), 正在又碰上自己要写个工具类, 就想到了也用这种形式传递参数首先看一下mybatis-plus是如何实现的大体就是利用反序列化的形式结合SerializedLambda进行获取, 尝试自己写一下首先要定一个序列化的Functionpublic interface SFunction<T, R> extends...

2021-07-07 12:11:09 1344 1

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除