![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 69
java
王会举
技术改变世界
展开
-
设计模式之双锁校验单例模式的理解
设计模式提供了在软件开发过程中面临的一些问题的解决方案。单例模式对于大家来说都不陌生了,单例模式也分为饿汉模式,懒汉模式,本文主要讲解的是并发情况下的单例模式 voliate+sync.原创 2021-05-28 18:27:13 · 340 阅读 · 2 评论 -
SQLDataException: Cannot determine value type from string
1 问题描述:在用mybatis查询出数据传给实体类List时,出现了Cannot determine value type from string XXX 错误.网上说是实体类字段与数据库不对应导致的. 我进行了一一对比,发现没有区别.2:解决办法在实体类添加一个无参的构造函数.就能正确运行了.以前用的都是@AllArgsConstructor进行全参的构造函数,也没遇见这个问题. 第一次遇见这么奇怪的问题.坐等大佬解答...原创 2021-04-02 17:16:29 · 2800 阅读 · 2 评论 -
SpringSecurity进行自定义登录页面
1:引入SpringSecurity jar包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>2: 在resources文件夹下的stat...原创 2020-12-30 14:22:23 · 1957 阅读 · 1 评论 -
java零碎易错知识点笔记_持续更新
1: java初始化的加载顺序为:父类静态成员变量, 父类静态代码块 ,子类静态成员变量 ,子类静态代码块 ,父类非静态成员变量,父类非静态代码块,父类构造函数,子类非静态成员变量,子类非静态代码块,子类构造函数,...原创 2020-10-09 14:26:21 · 536 阅读 · 1 评论 -
spring如何解决缓存依赖_spring的三级缓存
前言循环依赖:就是N个类循环(嵌套)引用。通俗的讲就是N个Bean互相引用对方,最终形成闭环。用一副经典的图示可以表示成这样(A、B、C都代表对象,虚线代表引用关系):注意:其实可以N=1,也就是极限情况的循环依赖:自己依赖自己另需注意:这里指的循环引用不是方法之间的循环调用,而是对象的相互依赖关系。(方法之间循环调用若有出口也是能够正常work的)可以设想一下这个场景:如果在日常开发中我们用new对象的方式,若构造函数之间发生这种循环依赖的话,程序会在运行时一直循环调用最终导致内转载 2020-10-08 10:48:20 · 950 阅读 · 2 评论 -
JVM参数解释
JVM中常用的参数Xms 起始内存Xmx 最大内存Xmn 新生代内存Xss 栈大小。 就是创建线程后,分配给每一个线程的内存大小-XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5-XX:.原创 2020-10-03 16:17:24 · 173 阅读 · 2 评论 -
redis分布式锁的简单实现
在我的上一篇博客 stringRedisTemplate实现分布式锁中,由于没有考虑到原子性的问题,所以这篇博客将简单版的分布式锁实现出来.还是老样子,学习一个技术分三步 是什么? 怎么用? 为什么?.1 什么是分布式锁?在单机应用下的并发编程中,我们通过锁(synchronized 、Lock),来避免由于竞争而造成的数据不一致问题。而分布式锁,就是为了解决分布式应用中的数据不一致问题.通常使用redis分布式锁.分布式锁的可靠性为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下原创 2020-09-29 11:55:24 · 147 阅读 · 0 评论 -
redis分布式锁的stringRedisTemplate实现
本文采用stringRedisTemplate类来实现分布式锁1:加锁 :创建lock方法(key, value) 传递过来一个key值,一个value值2:给value原创 2020-09-27 16:38:34 · 2820 阅读 · 2 评论 -
设计模式_java中的代理模式(动态代理,静态代理)
1:什么是代理模式?代理模式简单来说就是我们使用代理对象来代替对真实对象的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。2:代理模式的实现方法代理模式有两种方法: 2.1:静态代理: 静态代理中,我们对目标对象的每个方法的增强都是手动完成的, 从 JVM 层面来说,静态代理在编译时就将接口、实现类、代理类这些都变成了一个个实际的 class 文件。 静态代理实现步骤:定义一个接口及其实现类;...原创 2020-09-23 11:47:28 · 149 阅读 · 0 评论 -
JVM_ java垃圾回收机制(GC)
最新在学JVM相关的知识,就想着把知识总结一下,也方便后续的复习.1:什么是垃圾回收机制?垃圾回收机制也叫(GC): 在java虚拟机引入了GC让java程序员不用考虑对内存进行管理,而是由虚拟机自动进行管理内存.(C++因为没有GC导致开发者非常头疼与内存管理).垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存。2:JVM中的区域划分jvm由 (程序计数器,本地方法栈,虚拟机栈,堆区,方法区) 这五个部分组成.垃圾回收主要关注 虚拟机中的 堆 区,Java 内存运行...原创 2020-09-22 10:19:30 · 548 阅读 · 0 评论 -
JVM_java虚拟机之类加载机制
1 什么是类的加载?类的加载: 指的是将类的.class文件中的二进制数据读入到内存中,并转换成java.lang.Class类的一个实例..class文件:大家应该都很熟悉了, 我们写好的代码文件后缀是.java文件. 将.java文件编译后就会变成.class文件了.2:类加载的过程类加载的过程也可以称为(类的生命周期):小括号内的三部分统称为:连接 加载 -> ( 验证 -> 准备 -> 解析 ) -> 初始化 ...原创 2020-09-21 15:39:52 · 206 阅读 · 0 评论 -
@Transactional java中的事务及使用
@Transactional 是java中使用的注解形式的事务既然使用@Transactional就要理解什么是事务.下面将会详细介绍.1:什么是事务?事务(Transactional) 就是把多个要做的操作组合成一个整体.利用事务的特性来保证操作的安全性,如果一个事务做到一半出现任何错误,就会进行回滚操作.来恢复成最初的模样.2:事务的特性 (具有ACID的特性)(1) A 原子性(atomicity) : 事务是一个不可分割的工作单位,事务中的操作要么都修改,要么都不修改。...原创 2020-09-18 14:55:10 · 21711 阅读 · 0 评论 -
跨域的几种解决方案,java处理跨域,前端处理跨域
跨域目前是广大开发者经常遇到的一个问题.在此我将几种常用的解决方案介绍一下1:JSONPJSONP 是服务器与客户端跨源通信的常用方法。最大特点就是简单适用,缺点是只支持get请求,不支持post请求。1.1 Jquery版本: $.ajax({ url:'http://www.test.cn/login', type:'GET', dataType:'jsonp', //请求方式为jsonp jsonpCallback:'callback', //原创 2020-09-16 15:47:47 · 1189 阅读 · 0 评论 -
IDEA中Tomcat热部署的方法,以及解决热部署失败的原因
1:打开tomcat设置,找到Deployment2:点击+号, 选择Artifact3:选择 war exploded 为后缀的war包4:点击Server ,然后将下方两个选择为update classes and resources.5: 点击ok或者apply,此时热部署完成,快去试试吧.6:热部署失败的人, 不要用run方法启动tomcat, 要选择debug启动tomcat. 就是启动键旁边的小虫子...原创 2020-09-15 16:19:25 · 1881 阅读 · 2 评论 -
Mybatis中的sql语法之<where>标签的使用
mybatis可以动态的拼接sql,所以可以直接使用sql中的关键字where.但是直接使用where会有一个问题,请看下列代码1:正常的where语法<select id="xxx" resultType="xxx"> SELECT * FROM table where <if test="state != null"> state = #{state} </if> </select>上面的代码如果<if&g原创 2020-09-14 16:30:24 · 2540 阅读 · 0 评论 -
DTO VO DO PO 在项目中的意义
DTO VO DO PO 这四个名词代表了在不同场景下的数据对象1: DTO(Data Transfer Object):数据传输对象 指展示层与服务层进行传递数据的对象2:VO(View Object) :视图对象用于展示层,将数据封装成适合展示的对象3:DO(Domain Object):领域对象业务实体对象,项目中的实体类 类似entity、JavaBean、Model、POJO 这些4:PO(Persistent Object):持久化对象和数据表的字段相...原创 2020-09-14 13:53:53 · 756 阅读 · 0 评论 -
jar包在linux持续运行的几种形式
1:java -jar XX名字.jar这条命令只是单纯的运行jar包,关闭窗口或者断开连接,jar会自动停止运行2:java -jar XX名字.jar &多了一个& 符号,表示在可以在后台运行,但是当断开连接时,还是会停止运行3: nohupjava -jar XX名字.jar&多了一个nohup ,表示就算退出账户或者关闭连接时,jar包还是会在后台运行(可以24小时不间断哦,只要服务器不瘫痪,就会一直运行)...原创 2020-09-10 11:14:11 · 1326 阅读 · 0 评论 -
java中的锁---乐观锁与悲观锁的区别
锁,是开发中不得不掌握的一个知识点. 在面试中也会经常问到.其中乐观锁与悲观锁为最常见.首先介绍下两种锁1:乐观锁: 介绍:它的心态很好,每次别人使用它的时候,它会乐观的认为别人不修改数据,所以不加锁.极大的提高效率.适用于读比较多的场景 实现: 常用的实现方式为CAS算法:compare and swap(比较与交换) CAS实现是由三个操作数来完成的, 1:读取的变量值 M 2:旧的预期值A 3:新的修改值B (以下简称) ...原创 2020-09-09 15:43:32 · 4171 阅读 · 1 评论 -
lombok插件之@Accessors注解
@Accessors 是用来配置lombok如何产生和显示getters和setters的注解,可以用在类或方法上面。@Accessors有三个属性,分别是fluent,chain,prefix1:fluent 属性fluent设置为true,则getter和setter方法的方法名和属性名一模一样,且setter方法返回当前对象 ,该属性默认为false。@Data@Accessors(fluent = true)public class User { private Lon原创 2020-09-07 15:12:46 · 5630 阅读 · 0 评论 -
lombok插件之@Data注解
@Data注解为lombok插件中常用的一个注解,此注解在实体类上,自动提供类所有属性的get和set方法。同时还提供equals,hashCode,toString等方法.使用起来极大的减少了代码量.1:使用@Data注解的代码@Datapublic class Person { private String name; private String address; private Integer age; private String phone;}原创 2020-09-07 14:32:01 · 4868 阅读 · 2 评论