![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java后端
文章平均质量分 68
LiuM150428
这个作者很懒,什么都没留下…
展开
-
控制台输出大量 Generating unique operation named: ***
在springboot 2 项目中使用Swagger2生成在线文档,项目启动时,出现大量类似以下日志出现这种日志的主要原因是,两个不同的类 使用@ApiOperation注解,且不同的类中存在相同的方法名(enable)导致,如// 类1,有以下代码@RestController@RequestMapping("/api/c1")@Api(tags = "接口1")public class C1Controller { @ApiOperation(value = "启用记录", no...转载 2022-03-28 11:33:19 · 535 阅读 · 0 评论 -
java.sql.SQLException: Parameter number 3 is not an OUT parameter 解决办法
java.sql.SQLException: Parameter number 3 is not an OUT parameter 解决办法转载 2021-11-24 14:38:03 · 1902 阅读 · 0 评论 -
@TableLogic注解表示逻辑删除
@TableLogic注解表示逻辑删除效果:在字段上加上这个注解再执行BaseMapper的删除方法时,删除方法会变成修改场景: 1.实体类中属性加上@TableLogic, @TableLogic private Integer dataStatus; 2.调用BaseMapper的deleteById(id)或者调用IService的removeById(id) 效果: 没有@TableLogic注解调用deleteById/...转载 2021-08-03 10:25:46 · 195 阅读 · 0 评论 -
spring之@PostConstruct
在spring项目经常遇到@PostConstruct注解,首先介绍一下它的用途: 被注解的方法,在对象加载完依赖注入后执行。此注解是在Java EE5规范中加入的,在Servlet生命周期中有一定作用,它通常都是一些初始化的操作,但初始化可能依赖于注入的其他组件,所以要等依赖全部加载完再执行。与之对应的还有@PreDestroy,在对象消亡之前执行,原理差不多,这里不做过多介绍。那么首先看下源码注释PostConstruct注释介绍总体概括如上,注意其中几个点1. 要在依赖加载转载 2021-07-23 14:18:56 · 2946 阅读 · 0 评论 -
使用Spring @DependsOn控制bean加载顺序
使用Spring @DependsOn控制bean加载顺序spring容器载入bean顺序是不确定的,spring框架没有约定特定顺序逻辑规范。但spring保证如果A依赖B(如beanA中有@Autowired B的变量),那么B将先于A被加载。但如果beanA不直接依赖B,我们如何让B仍先加载呢?控制bean初始化顺序可能有些场景中,bean A 间接依赖 bean B。如Bean B应该需要更新一些全局缓存,可能通过单例模式实现且没有在spring容器注册,bean A需要使用该缓存;因此,如转载 2021-07-23 13:59:43 · 182 阅读 · 0 评论 -
Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用
Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用从3.1开始,Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时将不再执行该方法,而是直接从缓存中获取结果进行返回。所以在使用Spring Cache的时候我们要保证我们缓存的方法对于相同的方法参数要有转载 2021-07-13 16:01:42 · 168 阅读 · 0 评论 -
String、StringBuilder、StringBuffer和StringJoiner
String、StringBuilder、StringBuffer和StringJoinerString详解 注意区分对象和对象的引用 首先来看一下我在jdk中找到的String源代码,这里只截取开头的小小一部分public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for charac转载 2021-02-22 09:59:43 · 194 阅读 · 0 评论 -
从源码角度分析 WeakHashMap 垃圾回收原理
介绍WeakHashMap自然联想到的是HashMap。确实,WeakHashMap与HashMap一样是个散列表,存储内容也是键值对。这里与HashMap类似的功能就不展开了,本文重点关注在WeakHashMap是如何做到回收数据?垃圾回收原理谈WeakHashMap回收原理得从WeakReference(弱引用)说起。大家都知道GC回收对象前提是,从根集出发的引用中没有有效引用指向该对象,则该对象就可以被回收。这里的有效引用并不包含WeakReference,虽然弱引用可以用来访问对象,但进转载 2020-11-10 10:13:00 · 105 阅读 · 0 评论 -
Java并发编程75道面试题及答案——稳了
1、在java中守护线程和本地线程区别?java中的线程分为两种:守护线程(Daemon)和用户线程(User)。任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bool on);true则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon()必须在Thread.start()之前调用,否则运行时会抛出异常。两者的区别:唯一的区...转载 2019-11-07 15:52:02 · 418 阅读 · 0 评论 -
静态代理(静待代理也被称作编译时增强)
一、引言众所周知,一旦提到AOP,相信大家都是条件反射的想到JDK代理和CGLib代理,没错,这两个代理都是在运行时内存中临时生成代理类,故而又称作运行时增强——动态代理。世间万物都不是绝对的,既然有动态代理,那么,是否有想过:是不是存在静态代理呢?二、LTW(Load Time Weaving)其实,除了运行时织入切面的方式外,我们还有一种途径进行切面织入,它可以在类加载期通过字节码...转载 2019-10-28 15:56:41 · 844 阅读 · 0 评论 -
面试题:UDP&TCP的区别
相同点UDP协议和TCP协议都是传输层协议。TCP(Transmission Control Protocol,传输控制协议)提供的是面向连接,可靠的字节流服务。即客户和服务器交换数据前,必须现在双方之间建立一个TCP连接,之后才能传输数据。并且提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。UDP(User Data Protocol,用户数据报协议)...转载 2019-10-25 17:37:00 · 166 阅读 · 0 评论 -
jdbc和jndi数据源的区别
网上关于JNDI和JDBC的定义有很多,但是都很官方不容易理解,下面是我最近查阅资料得出的心得体会。希望对你在理解上有一点点的帮助,说的不对的请指正哦JDBC看到最多的就是,JavaDatabaseConnectivity(JDBC)是一个标准的JavaAPI,它由一组类和接口组成,Java应用程序开发人员使用它来访问数据库和执行SQL语句。通俗的讲就是JDBC用来连接数据库和执...转载 2019-10-25 17:24:49 · 1079 阅读 · 0 评论 -
分布式Session共享解决方案
Session是服务器用来保存用户操作的一系列会话信息,由Web容器进行管理。单机情况下,不存在Session共享的情况,分布式情况下,如果不进行Session共享会出现请求落到不同机器要重复登录的情况,一般来说解决Session共享有以下几种方案。1、session复制session复制是早期的企业级的使用比较多的一种服务器集群session管理机制。应用服务器开启web容器的sessi...原创 2019-10-23 14:50:20 · 140 阅读 · 0 评论 -
Java 9 改进的 @Deprecated 注解
Java 9 改进的 @Deprecated 注解注解 @Deprecated 可以标记 Java API 状态,可以是以下几种:使用它存在风险,可能导致错误 可能在未来版本中不兼容 可能在未来版本中删除 一个更好和更高效的方案已经取代它。Java 9 中注解增加了两个新元素:since和forRemoval。since: 元素指定已注解的API元素已被弃用的版本。 fo...转载 2019-10-22 18:06:22 · 167 阅读 · 0 评论 -
Java中Volatile关键字详解
1.Volatile原理Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。 在访问...转载 2019-07-10 09:28:41 · 155 阅读 · 0 评论 -
线程池原理
Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? ...转载 2019-07-10 17:40:30 · 95 阅读 · 0 评论 -
彻底理解ThreadLocal以及其与Synchronized同步机制的比较
深挖过threadLocal之后,一句话概括:Synchronized用于线程间的数据共享,而ThreadLocal则用于线程间的数据隔离。所以ThreadLocal的应用场合,最适合的是按线程多实例(每个线程对应一个实例)的对象的访问,并且这个对象很多地方都要用到。 数据隔离的秘诀其实是这样的,Thread有个TheadLocalMap类型的属性,叫做threadLocals,该属性用来...转载 2019-07-15 17:22:29 · 132 阅读 · 0 评论 -
synchronized实现原理
实现原理synchronized可以保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区,同时它还可以保证共享变量的内存可见性Java中每一个对象都可以作为锁,这是synchronized实现同步的基础:普通同步方法,锁是当前实例对象 静态同步方法,锁是当前类的class对象 同步方法块,锁是括号里面的对象当一个线程访问同步代码块时,它首先是需要得到锁才能执行同步...转载 2019-07-11 15:58:17 · 111 阅读 · 0 评论 -
无锁数据结构一
lock-free什么是lock-free无锁数据结构无锁数据结构的实现主要基于两个方面:原子性操作和内存访问控制方法。下面先记录原子性操作相关知识。原子性操作原子性操作可以简单地分为读写(read and write)、原子性交换操作(read-modify-write,RMW)两部分。原子操作可认为是一个不可分的操作;要么发生,要么没发生,我们看不到任何执行的中...转载 2019-07-12 11:03:19 · 512 阅读 · 0 评论 -
无锁数据结构三:无锁数据结构的两大问题
实现无锁数据结构最困难的两个问题是ABA问题和内存回收问题。它们之间存在着一定的关联:一般内存回收问题的解决方案,可以作为解决ABA问题的一种只需很少开销或者根本不需额外开销的方法,但也存在一些情况并不可行,如两个链表实现的栈,不断在两个栈间交换节点。下面对两个问题的主流解决方法进行介绍。标签指针(Tagged pointers)标签指针作为一种规范由IBM引入,旨在解决ABA问题。从某一...转载 2019-07-12 11:04:57 · 235 阅读 · 0 评论 -
Velocity Java 模板引擎 基本语法
学习一个新技术 我们首先要了解 这个东西是什么?能做什么?怎么用?在更深层次了解就是 原理是什么? 我们就先来执行第一步 Velocity 是什么。访问velocity官网进行快速了解。http://velocity.apache.org/大致内容如下:Velocity是一个基于Java的模板引擎。它允许任何人使用简单但功能强大的模板语言来引用Java代码中定义的对象。当Velocit...转载 2019-07-17 16:03:41 · 356 阅读 · 0 评论 -
JDK 13 新特性一览
1、switch优化更新JDK11以及之前的版本:switch(day){caseMONDAY:caseFRIDAY:caseSUNDAY:System.out.println(6);break;caseTUESDAY:System.out.println(7);...原创 2019-10-10 20:09:19 · 375 阅读 · 0 评论 -
Java 运算符
Java &、&&、|、||、^、<<、>>、~、>>>等运算符在这篇文章中: Java运算符大致分为逻辑运算符(&&,||,!)、算数运算符(+, -, *, / ,+=)、位运算符(^,|,&)、其他运算符(三元运算符) &(按位与) &&(逻辑与) |(按位或...转载 2019-05-21 11:26:21 · 346 阅读 · 0 评论