自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 @Async结合CompletableFuture实现主线程阻塞,CompletableFuture并发执行任务

项目开发中经常会遇到业务需要多任务处理的场景,比如目前我除了的业务就是如此。我要提供给客户端一个批量查询第三方数据的接口,由于是调用第三方的接口,相应时间受到网络环境的影响,如果需要查询的的数据过多,响应时间就会很长,所有这里使用异步处理,但是需要阻塞主线程,拿到所以数据后由主线程进行处理再返回给用户,是个时候就需要使用多线程的工具,@Async结合CompletableFuture实现主线程阻塞,CompletableFuture并发执行任务。

2024-01-30 19:21:31 440

原创 @Async导致获取Bean异常‘com.sun.proxy.$Proxy124‘

您在使用@Service注解的类上使用@Async注解时,Spring会为该类创建一个代理对象,以便在调用异步方法时能够在后台执行。这就是为什么您在使用SystemContext.getBean(“wechatPayServiceImpl”, PaymentService.class)获取bean时得到了com.sun.proxy.$Proxy124类型的代理对象而不是WechatPayServiceImpl类型的实际对象。

2024-01-30 16:12:07 403

原创 排查及处理hibernate自动更新(无缘故的)实体数据及表数据的根本问题,hibernate脏读更新,注意非常实用

排查及处理hibernate自动更新(无缘故的)实体数据及表数据的根本问题,hibernate脏读更新,注意非常实用

2023-07-20 18:57:53 1013

原创 三步搞定OOM内存溢出,记一次使用Arthas处理OOM内存溢出问题java.lang.OutOfMemoryError: Java heap space

记录一次典型的OOM内存溢出问题,使用了Arthas和jvisualvm分析并查找问题的根源,三步搞定OOM内存溢出

2023-03-10 18:19:00 5081 2

原创 史上最强java的poi工具excel操作工具easyexcel

https://www.yuque.com/easyexcel/doc/easyexcel阿里开源组件,牛到不行!!!!!

2020-06-23 18:06:00 711

原创 java之jvm内存模型

2020-05-02 01:46:37 148

原创 java内存结构

2020-05-01 21:08:13 130

原创 java线程的等待与唤醒demo演示park,wait

import java.util.concurrent.locks.LockSupport;/** 三种线程协作通信的方式:suspend/resume、wait/notify、park/unpark */public class Demo6 { /** 包子店 */ public static Object baozidian = null; /** 正常的suspend/res...

2020-04-30 18:18:54 200

原创 线程生命周期及状态

/** * 示例2 - 多线程运行状态切换示例 <br/> */public class Demo2 { public static Thread thread1; public static Demo2 obj; public static void main(String[] args) throws Exception { // 第一种状态切换 - 新建 -&...

2020-04-30 15:04:27 189 1

原创 最全java线程池详解ThreadPoolExecutor

package com.study.hc.thread.chapter1.thread;import java.util.Collections;import java.util.List;import java.util.concurrent.LinkedBlockingQueue;import java.util.concurrent.RejectedExecutionHandler...

2020-02-23 21:11:23 148

原创 liunx安装和卸载apche

liunx安装和卸载apche一般Linux系统中自带apache 版本,但是用这个自带的版本启动时,就会出现端口被占用等各种问题,因为自带的apache版本都比较低,所以首先查看Linux中是否已有安装的低版本的apache,如果有先卸载,然后再安装。本文用的Linux是CentOS7版本。一、卸载apache已安装的软件包1、命令 rpm -qa |grep httpd ,查...

2020-01-05 23:16:47 401

原创 分布式事务解决方案RabbitMQ消息中间件,异步消息处理

分布式事务一直是集群环境和分布式架构的一个业界难点,就我目前已知的技术框架都没有完美的解决法案,本案例也只是一个模板类型的场景。场景:类似外卖下单,外卖员接单,下单server和运单server是分布式部署的。解决方案:rabbitMQ异步消息通知总体来说我认为分布式事务的痛点就是在与两个server的事务需要保证一直性,server_A失败了server_B也要做失败处理,server_A...

2019-12-09 18:47:06 941

原创 设计原则优化思路简单的模板模式

import com.service.springTest.VipCalculateService;import com.service.springTest.VipPriceService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.S...

2019-11-09 12:37:55 283

原创 springBoot加redis实现session共享单点登录

单点登录实现session共享有很多方法,主要就是session记录用户的登录票据。这里简单的介绍三种方式,并说明场景和优劣,本人推荐第三种。添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId&g...

2019-11-09 12:28:22 836

原创 spring注解切面封装并解析spring的EL表达式自定义缓存注解

import com.annotation.MyAnnotation;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.reflect.M...

2019-11-05 09:02:19 1629 1

原创 spring监听器的实现及实现原理,观察者模式,发布订阅的实现机制

import org.springframework.context.ApplicationContext;import org.springframework.context.event.ApplicationContextEvent;public class MyEvent extends ApplicationContextEvent { private String eve...

2019-11-05 09:00:57 769

原创 Java 开发中常用的 4 种加密方法。MD5加密工具类测试 base64加密工具类测试 SHA加密工具类测试 BCrypt加密工具类测试

一、工具类1, md5加密工具类2, base64加密工具类3, Bcrypt工具类二、加密测试MD5加密测试base64加密测试SHA加密测试BCrypt加密测试一、工具类1, md5加密工具类public class MD5Utils { private static final String hexDigIts[] = {"0","1","2","3","...

2019-10-18 11:22:55 312

原创 redis实现条件查询对象到哈希Spring Data Redis(Redis Repositories)与RedistempLate数据相互访问redis访问树状复杂结构目录

前几天在工作遇到了一个很恶心的问题,只这里记录下解决方案和大家一起探讨下。场景一:大致情况是这样的,在app相关的项目中对用户的账户数据进行缓存到redis,实现所有交易先对用户账户的缓存数据进行预处理,再把交易数据持久化到MySQL的业务逻辑放到消息队列中处理(为了处理并发压力)。场景二:在后台管理系统中需要对用户的账户数据做修改同时也需要对相关的缓存同步。本来以上两个场景虽然是在不同项目...

2019-10-11 00:27:46 1590

原创 springBoot切面AOP注解实现开箱即用redis分布式锁

redis实现分布式锁简单又实用,这里是一个开箱即用redis分布式锁pom文件添加除springBoot相关依赖以外的以下依赖包<!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all --> <dependency> <groupId>cn.hutoo...

2019-10-07 22:02:30 324

原创 并发编程之ReentrantLock,Condition阻塞队列,尝试锁,获取锁时限时等待,可响应中断,公平锁,同步锁

并发编程的核心简单表述就是一下三点:1.原子性所谓原子性是指在一次的操作或者多次的操作中,要么所有的操作全部都得到了执行并且不会受到任何因素的干扰而中断,要么所有的操作都不执行。i++不能保证原子性。synchronized关键字保证多个原子性操作合在一起就不是原子性操作了简单的读取和赋值操作是原子性的,将一个变量赋值给另外一个变量的操作不是原子性的由于synchronized是一种排他...

2019-10-06 20:32:44 1264

原创 spring-boot集成tkmybatis通用mapper和逆向工程mybatis-generator-core生成实体

一,引入依赖<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-conn...

2019-10-05 13:31:50 1210

原创 java8新特性lambda和stream的学习和使用

一 java8 lambda表达式用法1 什么是lambda表达式  Lambda表达式有两个特点:一是匿名函数,二是可传递。匿名函数的应用场景是:通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用Lambda表达式。lambda表达式所表示的匿名函数的内容应该是很简单的,如果复杂的话,干脆就重新定义一个函数了,使用lambda就有点过于执拗了。可传递使用场景是:就是将L...

2019-09-30 17:01:09 742

原创 java结合微信小程序实现支付,非常简单

java微信小程序demo支付只需配置支付一下参数即可运行三、实现步骤1.在小程序中获取用户的登录信息,成功后可以获取到用户的code值2.在用户自己的服务端请求微信获取用户openid接口,成功后可以获取用户的openid值https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html3...

2019-09-29 15:49:52 3959 9

原创 druid配置spring.datasource.filters导致mybatis批量更新报错sql injection violation, multi-statement not allow

这个错是druid配置开启了数据监控导致的。修改前:修改后:import com.alibaba.druid.pool.DruidDataSource;import com.alibaba.druid.support.http.StatViewServlet;import com.alibaba.druid.support.http.WebStatFilter;import com...

2019-09-25 19:09:58 6132

转载 Mybatis SQL语句控制台打印

一、普通Spring项目:修改Mybatis.xml<configuration> <settings> <setting name="logImpl" value="STDOUT_LOGGING" /> </settings></configuration>二、 SpringBoot:修改appl...

2019-05-09 11:00:30 155

原创 ajax实战:(ajax异步下载文件)请求二进制流进行处理,下载文件不跳转页面

需求管理后台需要随时下载数据报表,数据要实时生成后转换为excel下载文件不大,页面放置“导出”按钮,点击按钮后弹出保存文件对话框保存说明:第一种方法使用a标签直接可以满足大部分人需求,第二种方法纯粹是在说实现方法以及更好的操作体验,不需要(举一个需要第二种方法的例子:如果生成很慢就需要生成过程中禁用按钮,防止连续生成)用到的可以不用看解决方案方法一请求文件的接口能改为GET则可以...

2019-04-16 08:50:58 633

原创 spring cloud微服务架构入门搭建

这里写自定义目录标题spring cloud微服务架构入门搭建Spring Cloud是快速构建分布式系统的工具集spring cloud微服务架构入门搭建James Lewis是ThoughtWorks的首席顾问,也是技术顾问委员会的成员。James利用小型协作服务构建应用程序的兴趣源于大规模集成企业系统的背景。他使用微服务构建了许多系统,并且几年来一直积极参与不断发展的社区。Mart...

2018-12-02 20:26:21 418

原创 如何使用RedisTemplate访问Redis数据结构

Redis 数据结构简介Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串)、List(列表)、Set(集合)、Hash(散列)和 Zset(有序集合)。下面来对这5种数据结构类型作简单的介绍:结构类型 结构存储的值 结构的读写能力String 可以是字符串、整数或者浮点数 对整个字符串或者字符串的其中一部分执行操作;对象和浮点数执行自增(...

2018-11-18 13:26:58 227

原创 spring-data-jpa动态拼接sql语句实现动态的多表条件查询

**spring-data-jpa 动态拼接sql语句** spring-data-jpa对于简单的数据操作确实使用起来比较方便,但是对于一些比较复杂的动态的多表条件查询就不是那么简单了,对于需要些sql语句并且需要动态的添加条件的时候就得使用jpa的EntityManager来完成了.以下为以返回EasyUI分页数据为例,public interface VideoDao exte...

2018-10-05 20:45:54 52071 25

空空如也

空空如也

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

TA关注的人

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