05 2022 档案
摘要:1、不按顺序执行的代码(主要是initCourseForm的方法) <template> <div class="app-container"> <el-steps :active="1" finish-status="success"> <el-step title="填写课程基本信息"></el
阅读全文
摘要:老张爱喝茶,废话不说,煮开水。出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。 1 老张把水壶放到火上,立等水开。(同步阻塞)老张觉得自己有点傻2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那
阅读全文
摘要:进程和线程 要想了解js中的同步阻塞和异步非阻塞,首先我们要对进程和线程的基本概念有一个清楚 的了解。 进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,简单来说你的电脑每运行一个程序就是一个进程。 线程:进程的一个执行单元,是操作系统能够进行运算调度的最小单位。 一个程序至有一个进程,一
阅读全文
摘要:Java字符串工具类,例如是否空,去空,截取字符串,下划线转驼峰命名,是否包含字符串,直接上代码,以作备忘。 StringUtils.java /** * 字符串工具类 * * @author admin */public class StringUtils extends org.apache.c
阅读全文
摘要:用 Spring 的 @Transactional 注解控制事务有哪些不生效的场景? 不知道小伙伴们有没有这样的经历,在自己开心的编写业务代码时候,突然某一个方法里的事务好像失效了。然后 debug 跟踪代码时发现,自己第一步的 insert 或者 update 的数据在语句执行完毕后,数据库中并没
阅读全文
摘要:前言 spring事务失效场景可能大家在很多文章都看过了,所以今天就水一篇,看大家能不能收获一些不一样的东西。直接进入主题 spring事务失效场景以及原因 1、场景一:service没有托管给spring public class TranInvalidCaseWithoutInjectSprin
阅读全文
摘要:前言 对于从事java开发工作的同学来说,spring的事务肯定再熟悉不过了。 在某些业务场景下,如果一个请求中,需要同时写入多张表的数据。为了保证操作的原子性(要么同时成功,要么同时失败),避免数据不一致的情况,我们一般都会用到spring事务。 确实,spring事务用起来贼爽,就用一个简单的注
阅读全文
摘要:Spring事务的原理 Spring事务的本质其实就是数据库Innodb对事务的支持,没有innodb是事务支持,spring是无法提供事务支持的。真正的数据库层的事务提交和回滚是通过binlog或者redo log实现的。 对于纯jdbc操作数据库,想要用到事务,需要按照以下的步骤进行: 获取连接
阅读全文
摘要:每日一博 - 常见的Spring事务失效&事务不回滚案例集锦 2021-09-082021-09-08 11:14:27阅读 1890 文章目录 事务不生效 方法内部调用 修复方法一 : 【新加一个Service方法】 修复方法二:【在该Service类中注入自己】 修复方法三:【通过AopCont
阅读全文
摘要:参考:https://blog.csdn.net/zzhongcy/article/details/102893309 概念 事务定义 事务,就是一组操作数据库的动作集合。事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像
阅读全文
摘要:Java阿里巴巴规范提示:方法【edit】需要在Transactional注解指定rollbackFor或者在方法中显示的rollback。 # 异常的分类 先来看看异常的分类 error是一定会回滚的。 这里Exception是异常,他又分为运行时异常RuntimeException和非运行时异常
阅读全文
摘要:spring中事务处理原理 利用aop生成代理对象执行带有Transactional事务注解的方法业务逻辑.项目启动过程中会生成代理对象并将Transactional注解中的属性进行解析加载处理.在方法执行过程中如果出现异常,会根据注解配置决定是进入到事务回滚处理还是事务提交处理逻辑中,事务回滚处理
阅读全文
摘要:用的越多,不懂的就越多 why? java异常体系结构如下 Throwable类:所有的异常类,都直接或者间接的继承这个类。三个重要的方法: 堆栈跟踪是方法调用过程的轨迹,它包含了程序执行过程中方法调用的顺序和所在源代码行号。 堆栈跟踪信息从下往上,是方法调用的顺序。 Throwable类的两个直接
阅读全文
摘要:1.匿名内部类的基本格式 new 类名或接口名(){ //重写方法 }; 我们平时new一个对象的基本格式为类名或接口名 对象名=new 类名或接口名(),形式上是有区别的,但两者其实都是新建了个对象,不要被名字中有个类搞混。重写方法常见于子类继承父类和子类实现接口。 本质:一个继承该类或实现该接口
阅读全文
摘要:将类当成参数传入方法,其实就是将类的对象传入方法,如果是抽象类,其实就是将抽象类的子类的对象传入方法,如果是接口,其实就是将接口实现类的对象传入方法。 因为抽象类和接口是不能实例化成对象的,所以必须找它们的子类或实现类 1. 普通类对象当成方法参数传入 public class Person{ pu
阅读全文
摘要:一、概念 java中构造方法指的是: 与类名相同,无返回类型的方法,参数可以为空,也可以带参数。 比如一个 Dao 类,private Dao(){}这个就是无参数的构造方法。 private Dao(String name){}这个就是带参数的构造方法。 作用:用来初始化 java 类,提供类的初
阅读全文
摘要:本文参考链接:https://blog.csdn.net/Akanarika520/article/details/84927403 无参构造器也叫无参构造方法,在我们创建类时候,可以不用写构造方法,因为系统会默认给我们提供一个无参构造方法,如果我们自己写了无参构造方法,那么我们这个就将默认的覆盖了
阅读全文
摘要:问题来源:在Listener监听器中无法使用Spring容器的@Resource或者@Autowired 注解的方法注入bean,因为,在web Server容器中,无论是Servlet,Filter,还是Listener都不是Spring容器管理的,因此我们都无法在这些类中直接使用Spring注解
阅读全文
摘要:在使用EasyExcel中的读取excel时,需要使用到监听器,但是在Listener监听器中无法使用Spring容器的@Resource或者@Autowired 注解的方法注入bean,因为,在web Server容器中,无论是Servlet,Filter,还是Listener都不是Spring容
阅读全文
摘要:query 和 params 传参的区别 通过 url 传递参数控制页面显示数据的两种方式 1. query 传统问号传参 url 格式:xxx.com/product?id=123 模板内获取数据:this.$route.query.id 2. params 动态路由匹配 url 格式:xxx.c
阅读全文
摘要:axios 大家都非常的清楚,一个既可以用于客户端或者 服务端发送http请求的库。但是在前后端联调的时候有的时候会很难受,所以这里我来做一个总结。希望能帮助到有缘人。 参数的传递方式 参数传递一般有两种,一种是 使用 params, 另一种是 data的方式,有很多的时候我们看到的前端代码是这样的
阅读全文
摘要:电商大家都用过吧,下单后若未支付,通常都有一段支付倒计时,比如15分钟,若时间到了之后,还未支付的,订单将被关闭,库存将被释放。 这种业务就需要用到延迟队列的功能,将任务丢到延迟队列、设置一个延迟时间、回调函数,到了时间之后,延迟队列将回调指定的函数消费指定的任务。 下面代码是一个通用的延迟队列的实
阅读全文
摘要:线程的状态有哪几种?他们之间是如何转换的? 目录 1、线程状态分类 线程一共有六种状态,分别为New、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED,同一时刻只有一种状态,通过线程的getState方法可以获取线程的状态。 2、状态详解 Threa
阅读全文
摘要:目录 1. 前言 在我的项目中有这样一个场景:页面链接是同一个,但是可以有多个子页面,不同的时间要展示不同子页面,类似一个页面排期功能。也许你们觉得要实现这个功能比较简单,实现过程为:获取所有子页面的生效时间,对每个生效时间点创建一个定时器,每个定时器执行内容为使用新的子页面进行渲染。对于单个或者少
阅读全文
摘要:关于并发方面的,juc已帮我们提供了很多好用的工具,而谷歌在此基础上做了扩展,使并发编程更容易,这些工具放在guava.jar包中。 本文演示几个简单的案例,见一下guava的效果。 guava maven配置<dependency> <groupId>com.google.guava</group
阅读全文
摘要:环境:jdk1.8。 今天群里面刚有有人在问这块的东西,那就拿出来说一下。 本文主要用juc中的ReentrantLock来说一下公平锁和非公平锁的东西。 先理解一下什么是公平锁、非公平锁?公平锁和非公平锁体现在别人释放锁的一瞬间,如果前面已经有排队的,新来的是否可以插队,如果可以插队表示是非公平的
阅读全文
摘要:本文主要内容 4种方式实现计数器功能,对比其性能 介绍LongAdder 介绍LongAccumulator 来个需求 一个jvm中实现一个计数器功能,需保证多线程情况下数据正确性。 我们来模拟50个线程,每个线程对计数器递增100万次,最终结果应该是5000万。 我们使用4种方式实现,看一下其性能
阅读全文
摘要:java高并发系列已经学了不少东西了,本篇文章,我们用前面学的知识来实现一个需求: 在一个线程中需要获取其他线程的执行结果,能想到几种方式?各有什么优缺点? 结合这个需求,我们使用6种方式,来对之前学过的知识点做一个回顾,加深记忆。 方式1:Thread的join()方法实现代码: package
阅读全文
摘要:目录CompletableFuture是java8中新增的一个类,算是对Future的一种增强,用起来很方便,也是会经常用到的一个工具类,熟悉一下。 CompletionStage接口 CompletionStage代表异步计算过程中的某一个阶段,一个阶段完成以后可能会触发另外一个阶段一个阶段的计算
阅读全文
摘要:本文内容 介绍常见的限流算法 通过控制最大并发数来进行限流 通过漏桶算法来进行限流 通过令牌桶算法来进行限流 限流工具类RateLimiter 常见的限流的场景 秒杀活动,数量有限,访问量巨大,为了防止系统宕机,需要做限流处理 国庆期间,一般的旅游景点人口太多,采用排队方式做限流处理 医院看病通过发
阅读全文
摘要:本文内容 日志有什么用? 日志存在的痛点? 构建日志系统 日志有什么用? 系统出现故障的时候,可以通过日志信息快速定位问题,修复bug,恢复业务 提取有用数据,做数据分析使用 本文主要讨论通过日志来快速定位并解决问题。 日志存在的痛点 先介绍一下多数公司采用的方式:目前比较流行的是采用springc
阅读全文
摘要:电商接口案例讲解电商app都有用过吧,商品详情页,需要给他们提供一个接口获取商品相关信息: 商品基本信息(名称、价格、库存、会员价格等)商品图片列表商品描述信息(描述信息一般是由富文本编辑的大文本信息) 数据库中我们用了3张表存储上面的信息: 商品基本信息表:t_goods(字段:id【商品id】、
阅读全文
摘要:本文内容 了解JUC常见集合,学会使用 ConcurrentHashMap ConcurrentSkipListMap ConcurrentSkipListSet CopyOnWriteArraySet 介绍Queue接口 ConcurrentLinkedQueue CopyOnWriteArray
阅读全文
摘要:本文内容 掌握Queue、BlockingQueue接口中常用的方法 介绍6中阻塞队列,及相关场景示例 重点掌握4种常用的阻塞队列 Queue接口 队列是一种先进先出(FIFO)的数据结构,java中用Queue接口来表示队列。 Queue接口中定义了6个方法: public interface Q
阅读全文
摘要:本文内容 需要解决的问题介绍ThreadLocal介绍InheritableThreadLocal 需要解决的问题 我们还是以解决问题的方式来引出ThreadLocal、InheritableThreadLocal,这样印象会深刻一些。 目前java开发web系统一般有3层,controller、s
阅读全文
摘要:本文主要内容 JUC中的原子类介绍 介绍基本类型原子类 介绍数组类型原子类 介绍引用类型原子类 介绍对象属性修改相关原子类 预备知识 JUC中的原子类都是都是依靠volatile、CAS、Unsafe类配合来实现的,需要了解的请移步: volatile与Java内存模型 java中的CAS JUC底
阅读全文
摘要:本文主要内容 基本介绍、 通过反射获取Unsafe实例 Unsafe中的CAS操作 Unsafe中原子操作相关方法介绍 Unsafe中线程调度相关方法 park和unpark示例 Unsafe锁示例 Unsafe中保证变量的可见性 Unsafe中Class相关方法 示例:staticFieldOff
阅读全文
摘要:本文主要内容 从网站计数器实现中一步步引出CAS操作介绍java中的CAS及CAS可能存在的问题悲观锁和乐观锁的一些介绍及数据库乐观锁的一个常见示例使用java中的原子操作实现网站计数器功能 我们需要解决的问题需求:我们开发了一个网站,需要对访问量进行统计,用户每次发一次请求,访问量+1,如何实现呢
阅读全文
摘要:本文内容 ExecutorCompletionService出现的背景介绍CompletionService接口及常用的方法介绍ExecutorCompletionService类及其原理示例:执行一批任务,然后消费执行结果示例【2种方式】:异步执行一批任务,有一个完成立即返回,其他取消 需要解决的
阅读全文
摘要:本文主要内容 介绍Executor框架相关内容介绍Executor介绍ExecutorService介绍线程池ThreadPoolExecutor及案例介绍定时器ScheduledExecutorService及案例介绍Excecutors类的使用介绍Future接口介绍Callable接口介绍Fu
阅读全文
摘要:本文主要内容 什么是线程池 线程池实现原理 线程池中常见的各种队列 自定义线程创建的工厂 常见的饱和策略 自定义饱和策略 线程池中两种关闭方法有何不同 扩展线程池 合理地配置线程池 线程池中线程数量的配置 什么是线程池 大家用jdbc操作过数据库应该知道,操作数据库需要和数据库建立连接,拿到连接之后
阅读全文
摘要:本文主要内容 介绍CyclicBarrier6个示例介绍CyclicBarrier的使用对比CyclicBarrier和CountDownLatch CyclicBarrier简介CyclicBarrier通常称为循环屏障。它和CountDownLatch很相似,都可以使线程先等待然后再执行。不过C
阅读全文
摘要:本篇内容 介绍CountDownLatch及使用场景提供几个使用示例介绍CountDownLatch的使用手写一个并行处理任务的工具类 思考一个需求假如有这样一个需求,当我们需要解析一个Excel里多个sheet的数据时,可以考虑使用多线程,每个线程解析一个sheet里的数据,等到所有的sheet都
阅读全文
摘要:目录Semaphore简介Semaphore(信号量)为多线程协作提供了更为强大的控制方法,前面的文章中我们学了synchronized和重入锁ReentrantLock,这2种锁一次都只能允许一个线程访问一个资源,而信号量可以控制有多少个线程可以同时访问特定的资源。 Semaphore常用场景:限
阅读全文
摘要:本文主要内容 讲解3种让线程等待和唤醒的方法,每种方法配合具体的示例介绍LockSupport主要用法对比3种方式,了解他们之间的区别 LockSupport位于java.util.concurrent(简称juc)包中,算是juc中一个基础类,juc中很多地方都会使用LockSupport,非常重
阅读全文
摘要:本文目标 synchronized中实现线程等待和唤醒Condition简介及常用方法介绍及相关示例使用Condition实现生产者消费者使用Condition实现同步阻塞队列 Object对象中的wait(),notify()方法,用于线程等待和唤醒等待中的线程,大家应该比较熟悉,想再次了解的朋友
阅读全文
摘要:本篇文章开始将juc中常用的一些类,估计会有十来篇。 目录 synchronized的局限性 synchronized是java内置的关键字,它提供了一种独占的加锁方式。synchronized的获取和释放锁由jvm实现,用户不需要显示的释放锁,非常方便,然而synchronized也有一定的局限性
阅读全文
摘要:目录本文主要探讨一下中断线程的几种方式。 通过一个变量控制线程中断代码: package com.itsoku.chat05;import java.util.concurrent.TimeUnit;/** * 微信公众号:路人甲Java,专注于java技术分享(带你玩转 爬虫、分布式事务、异步消息
阅读全文
摘要:目录什么是线程安全?当多个线程去访问同一个类(对象或方法)的时候,该类都能表现出正常的行为(与自己预想的结果一致),那我们就可以所这个类是线程安全的。 看一段代码: package com.itsoku.chat04;/** * 微信公众号:路人甲Java,专注于java技术分享(带你玩转 爬虫、分
阅读全文