自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(150)
  • 资源 (7)
  • 收藏
  • 关注

原创 万般皆下品,惟有读书高

大圣此去欲何,踏南天碎凌霄,若一去不回,便一去不回。

2020-12-07 23:49:22 889 12

原创 SpringSecurity中BCryptPasswordEncoder加密原理

SB相关问题想对SB中的密码进行解密,就去了解了一下怎么解密。SB中的加密方式,是哈希算法,听说这种算法是不可逆的。那SB是怎么对密码进行验证的。百度一下,我就知道百度出来了两个名词,加密算法和哈希算法。他们都说加密算法和哈希算法是不同的概念,因为加密算法,可解密,而哈希算法,不可逆。但是SB就是用哈希算法加密的,所以说,哈希算法是加密算法。没毛病。actually,加密算法,包罗万象。加密算法包括哈希算法,对称加密算法,非对称加密算法。即:哈希算法是加密算法,但是加密算法不是哈希算法

2021-08-29 23:34:35 1475 4

原创 IDEA启动报错:Error:Abnormal build process termination

报错信息如下:Error:Abnormal build process termination: D:\weblogic\jdk1.8\bin\java.exe -Xmx700m -Djava.awt.headless=true -Djava.endorsed.dirs=\"\" -Djdt.compiler.useSingleThread=true Build process started. Classpath: D:/softLocation/IntelliJ IDEA 2019.1.3/lib

2021-08-22 23:06:44 2757 2

原创 @NotBlank注解不生效解决方法

问题:@NotBlank用于字符串的空值空串校验。但是在实体类属性A中加上注解后,Controller层的外部调用实体类,前端传参时,不传属性A,仍然可以反序列化成功,@NotBlank无效。解决:应该都知道,当@NotBlank注解用于实体类的某个属性时,Controller层的实体对象前,要搭配@Valid注解使用。但是如果加了,仍然没有效果呢?不用考虑了,肯定是版本问题,适当的升高或降低校验依赖的版本。我们引入的一般是这两个常用的:Java 和 Hibernate &

2021-08-19 23:05:43 25163 2

原创 mapstruct引入不生效:解决mapstruct与lombok二者版本冲突问题

问题:引入了mapstruct的依赖,但是转换器的实现类中,并没有该实体的get/set方法进行属性赋值。解决:版本问题,mapstruct、lombok、maven的版本不对劲。mapstruct 使用1.2.0lombok使用1.16.22是可行的。或者在pom文件中加入这样一段:升高maven-compiler-plugin的版本,同样可以解决问题。 <build> <plugins> <plugin>

2021-08-19 23:02:52 10454 4

原创 自定义注解完成校验枚举类型的三种方法。

自定义注解完成校验枚举类型的三种方法。校验枚举类--自定义的各种Enum类型校验单一枚举类校验各种枚举类校验枚举值--Integer类型校验枚举名称--String类型注解在实体类的字段上,要确定这个字段是什么类型。有三种类型:1、校验枚举类–自定义的各种Enum类型2、校验枚举值–Integer类型3、校验枚举名称–String类型使用枚举涉及到前后端数据库类型转换的问题,相比之下,Integer和String使用简单。校验枚举类–自定义的各种Enum类型校验单一枚举类仅仅作用于单个枚举

2021-08-11 23:59:10 3176 4

原创 实体类中使用枚举类作为字段类型,前后端数据库类型转换的方法

分析:在开发过程中,碰到枚举类型的字段,比如人的性别,用户的状态,订单的状态,我们往往在数据库层中使用数字 1、2等来存储数据。在后端实体定义时,字段类型使用数字类型。使用这种方法,需要对前端传来的数据进行合法性校验,业务代码上比较啰嗦,所以使用枚举类来定义字段类型为更好的选择。但是在一个实体类中使用枚举类型,有两个问题:1、前端传来的参数,如何反序列化构造这个实体,如何构造实体中的这个枚举类。2、后端使用的这个实体,如何保存到数据库中。常见的实体类中的类型String对应数据库中的varcha

2021-08-10 23:45:08 4892

原创 mybatis-plus自定义数值类型枚举类转换器

mybatis-plus自定义数值类型枚举类转换器MyBatis 内置了大部分基本类型的类型处理器,TypeHandler 类型处理器用于 JavaType 与 JdbcType 之间的转换。所以对于基本类型可以直接处理,比如默认的这些IntegerTypeHandler,BigDecimalTypeHandler基本上不会去碰她。当我们需要处理其他类型的时候,比如枚举类型,mybaits依然服务周到,提供两个常用的。EnumOrdinalTypeHandler每个枚举类中的值都自带下标,从0开始

2021-08-10 23:25:57 2713

原创 Jackson中@JsonIgnore,@JsonValue,@JsonCreator注解作用

@JsonIgnore,@JsonValue,@JsonCreator使用详解

2021-08-10 23:13:08 3528

原创 字节、位概念

​我和Jack Ma的工资平均一下,我也是身价几百亿的人了。1GB=1024MB ----- GB是千兆1MB=1024KB ----- MB是兆1KB=1024Byte ----- KB是千字节有的人喜欢看电影,下载下来,存硬盘里,当做自己的宝藏,一部电影大约两个G吧。有的人喜欢拍照,把照片上传上去,还能挣钱,一张照片大约几个MB。有的人喜欢文字,文学爱好者,一篇文章几个KB。这是我们平常打交道的单位,GB,MB,KBByte基本上就没啥计量单位了,因为他太小

2021-08-08 23:20:18 245 1

原创 MySQL中定义数值类型字段,让输入长度是怎么回事

问题在mysql建表时,对于数值类型,竟然需要我们设置数据长度?难道可以通过设置数值长度,来控制该字段的取值范围(最大值)吗?经过测试:varchar类型字段 设置长度10,那么它最大长度就是10位。YEStinyint类型字段 设置长度10,那么它最大能是10位数吗?不可以bitint类型字段 设置长度1,那么它能存19位数吗?可以bigint -2^63 (-9223372036854775808) ~ 2^63-1 (9223372036854775807)整数 8个字节

2021-08-08 22:23:59 503 1

原创 Jenkins中Maven本地仓库更新不及时,清除旧的Jar包和依赖缓存,解决构建项目报错问题。

这里写目录标题场景:原因:解决方法(心急的同学直接看最后一种方法):方法一:Jenkins手动清除旧的依赖,缓存方法二:项目配置中增加构建前脚本方法三:修改Jenkins中maven配置文件。(未测试,仅仅记录一下)方法四:强制使用远程仓库中最新的依赖(`推荐`)测试:场景:项目A依赖项目B,此时项目A可以正常构建,当我修改项目B后,并将B项目Deploy到私服,本地正常运行。此时再次使用Jenkins构建项目A,构建失败。报错信息如下: [INFO] ---------------------

2021-08-04 23:06:31 7901 8

原创 微信支付之Native付款(拿来吧你!)

开通微信企业付款到零钱业务,需要有交易流水,所以任选一种支付方式付钱。

2021-08-01 23:02:11 1741 5

原创 从基金到股票,从股票到合约,从一夜暴富到一夜暴负的惨痛经历!

目录哭了带单大师本金一万巅峰二十万58600做多59400做空裤衩都没了之一万二去兼职哭了打工几年,白干,一天亏完了。牛市做空,就是这么刚。碰到了单边行情,从59500呲溜呲溜的涨了两天半,涨到了65000,不带回调的,加上我是一百倍高杠杆,最后倒在了黎明前,看评论区的分析师们说这波可能会到70000美金,扛不住了,我只能扛到65000,然后还是割了。心疼…带单大师我在用两个平台玩,分别是gateio和fbtc,我是在fbtc平台买的,不同平台的点位和游戏规则不一样,fbtc简单一点,有想玩的

2021-04-17 21:08:16 705 8

原创 【HashMap】基本概念及扩容机制

基本概念由数组和链表组成。数组中每一个元素在java7叫entry,在java8叫node。每一个元素都是k-v结构。每一个节点都会保存自身的hash、key、value以及下个节点。工作流程1、一个元素要插入进来,首先计算key的Hash值,确定该元素的index,也就是应该插在哪个位置。2、另一个元素也要插入进来,如果两个hash值一样,就挂在上边那个元素下边,形成链表结构。3、此时另有一个元素也要插入这个index下边,如何插入这个链表呢。如何将元素插入链表中头部插入法在java

2021-02-25 22:40:04 487 3

原创 【HashMap】扩容机制中尾插法造成环形链表导致死循环问题

目录同花顺1、指针顺序不同2、头插法导致环形链表同花顺这两个不同之处,在源码上都可以体现出来。就好比,第一个,指针顺序不同。源码中,首先获取旧的数组,之后遍历。遍历的第一个就是A,之后将A放到新数组的Index位上。遍历的第二个是B,之后将B放到新数组的Index位上。慢慢的A就被挤到最下边了,形成了顺序倒置。这个是很好理解的,比较难以理解的是第二个不同。环形链表以及死循环是如何产生的。1、指针顺序不同头插法与尾插法和栈与队列非常相似。栈是先进后出,队列是先进先出。这种比喻其实是不

2021-02-13 22:24:37 3918 6

原创 【多线程】多线程及锁常见问题集合

问题集合多线程常见问题之多线程安全问题多线程常见问题之多线程乱跑传参问题多线程常见问题之多线程安全问题明确一点,不操作共享变量就不会有线程安全问题。有线程安全问题,什么时候加锁共享数据有可能同时被两个线程操作,再加锁。不能碰到多线程就想到线程安全,然后加锁。锁的前提是你操作了共享变量,如果没有共享变量,是不存在数据安全问题的,并且不能盲目的追求速度快,忽视了数据的安全,本末倒置。乱用锁的后果是性能降低或者死锁。效率和数据安全是个跷跷板,A高了,B就低,合理的运用锁,才是正解。多线程常见问题

2021-02-12 23:30:48 937 4

原创 【锁】如何实现死锁

目录1、创建死锁2、创建线程任务类3、测试结果4、总结1、创建死锁package lao.ben.juc.deadLock;import org.junit.Test;//死锁条件:两个线程互相持有对方想要的锁,对方又释放不了,就卡住了。public class DeadLock { //方法一 String xiaowang = "xiaownag"; String xiaohong = "xiaohong"; public void together1(

2021-02-11 23:29:23 2447 5

原创 【锁】乐观锁存在的问题

目录定义如何实现线程安全CAS执行流程CAS存在的问题1、循环时间太长。2、只能保证一个共享变量原子操作。3、ABA问题。定义乐观锁总是认为你不会修改我。如何实现线程安全乐观锁不加锁,通过CAS操作来实现线程安全。Compare And Swap。CAS执行流程现在要修改一个数据,执行流程如下:1、查询这个数据,得到一值。2、准备修改这个数据,修改前判断一下值变了没。3、真正修改这个数据。CAS在真正修改数据时,会判断一下这个数据的值被人改了没,乐观一点,不会被别人改的,就真正的去改。

2021-02-10 22:19:46 2801 1

原创 【锁】ReentrantLock如何实现公平锁/非公平锁

目录同花顺源码分析执行流程有什么不同说人话公平锁/非公平锁优劣公平锁非公平锁为什么非公平锁的性能优于公平锁同花顺物竞天择,优胜劣汰。源码分析直接上源码执行流程 /** * * ReentrantLock类中有三个内部类 * Sync:继承AQS * NonfairSync:继承Sync * FairSync:继承Sync */ 公平锁与非公平锁就是等待队列中的线程排队不排队的问题。非公平锁1、各个线程争夺CPU的执行权,线程小王争夺到

2021-02-09 20:39:29 3101

原创 【锁】ReentrantLock底层原理

概括ReentrantLock类里一共由三部分组成。ReentrantLock类中有三个内部类。Sync:继承AQS。NonfairSync:继承Sync。FairSync:继承Sync。ReentrantLockpackage java.util.concurrent.locks;import java.util.concurrent.TimeUnit;import java.util.Collection;public class ReentrantLock implemen

2021-02-04 00:18:15 300 2

原创 【锁】Synchronized与ReentrantLock详解

目录不是一家人,不进一家门SynchronizedJDK1.6进行了哪些优化锁的升级过程五大特性ReentrantLockAQSReentrantLock实现原理如何实现公平锁亮点不是一家人,不进一家门二者同属于可重入锁,同一个线程可以重入上锁,不同的线程进行阻塞。隐式:Synchronized,JVM系统层次,你看不到源码,是个关键字。显式:ReentranLock,JDK层次,可以看到源码。SynchronizedJDK1.6进行了哪些优化1、为了减少获得锁和释放锁带来的性能消耗引入了偏向

2021-02-03 00:01:31 340 2

原创 【锁】乐观锁和悲观锁的实现机制

目录乐观锁1、版本号机制2、CAS操作悲观锁1、synchronized2、lock乐观锁1、版本号机制数据库的MVCC机制就是这种,MVCC更加严格一点,后边增加了创建版本及删除版本两个字段。详情参考:https://blog.csdn.net/numbbe/article/details/109300087版本号机制也是CAS操作的一种,先比较再替换。比如我有一个学生表,有两个字段,饭卡余额和版本,初始化为,饭卡余额为100,版本为1。1、线程A吃饭刷了20块钱,修改余额为80,首先进行

2021-02-01 23:30:31 341 1

原创 【锁】可重入锁和不可重入锁的区别

王炸可重入锁也会导致死锁。不可重入锁容易导致死锁。两种锁都有可能导致死锁,并不是只要死锁了就是不可重入锁。不可重入锁可重入锁

2021-01-31 22:39:53 1799

原创 【锁】细数多线程中的十三种锁

目录乐观锁/悲观锁公平锁/非公平锁可重入锁/不可重入锁自旋锁偏向锁/轻量级锁/重量级锁独享锁/共享锁分段锁乐观锁/悲观锁乐观锁:每次读数据的时候都认为别人不会修改,所以不上锁,只有在写的时候判断一下别人有没有修改过。悲观锁:每次读数据的时候都认为别人会修改,所以都上锁,这样别人读数据需要阻塞等待拿到锁。公平锁/非公平锁公平锁:先等待的线程先获得锁。非公平锁:随机唤醒线程。tips:可重入锁可通过构造方法指定生成公平锁或者非公平锁。可重入锁/不可重入锁可重入锁:同一个线程,可以上两次锁就是可

2021-01-31 20:00:07 1192 3

原创 【多线程】线程池工作流程

线程池简介使用多线程编程时,线程的数量并不是越多越好,并且一直开新线程,对资源的消耗很大,你处理一段逻辑消耗的资源可能仅仅占用百分之十,而新建线程销毁线程这些生命周期就占据了资源的百分之九十。所以线程最好可以回收利用,不是说你这个线程执行了这个任务,你就可以go die了,不,你还可以继续给老板挣法拉利。线程做到了重复使用,但是不能让线程给你瞎搞吧,天天划水怎么办,光吃不干,领导们不喜欢这样的线程,所以线程池们要对你们进行管理,让你打狗不要去撵鸡。线程的生命周期线程有生命周期,线程池有状态。线程

2021-01-29 23:04:44 625

原创 【多线程】三个特性及其实现原理

同花顺数据库事务有ACID四种特性,多线程同样有三种特性。不同的数据库支持不同的事务,支持不同的特性。同样的,多线程由使用者来保证三个特性。原子性要么一起成功,要么一起失败。银行转账案例:账户A向账户B转1000,A-1000了,机器死了,B没有+1000,这就是没有原子性的后果。可见性当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。线程1执行代码 int i = 0; i = 10; 线程2执行代码 j = i 如果没有可

2021-01-29 00:16:55 445

原创 【多线程】内涵

目录同花顺多线程应用场景多线程优势线程的种类君生我未生,君死我未死(用户线程)君生我也生,君死我也死(守护线程)线程停止线程优先级同花顺有很多人对多线程很陌生,离它很遥远,没有使用过多线程。但实际上处处都有多线程的痕迹。举一个最基础的例子:Java程序的进程里至少包含两个进程,主线程也就是main()方法线程,另一个是垃圾回收机制线程。我们的java程序就不是单线程跑的。多线程应用场景1、短信验证码登录时,一般单独开一个线程去调用这个短信接口,主线程返回。2、前端经常使用的ajax发送请求

2021-01-27 23:12:10 266 1

原创 【多线程】小二上菜经典案例详解线程通信技术

目录场景场景厨师,顾客,小二。厨师和顾客两个线程任务是有关系的。顾客来了,点了鱼香肉丝,厨师就做鱼香肉丝。顾客没来,厨师就等待。厨师(线程任务类)1、等顾客。2、做菜。3、通知小二上菜。顾客(线程任务类)1、上门。2、等菜。3、吃菜。4、通知小二报菜。...

2021-01-27 00:04:24 465 1

原创 【多线程】线程通信技术

目录应用场景线程状态wait/notify应用场景两个线程任务要相互沟通,相互通知,那么就要使用线程通信技术。 比如等待唤醒机制。注意,这里是两个线程任务,而不是两个线程,两个概念一定要分清楚。其实,多个线程中,为了线程安全,使用同一个锁,已经隐约间有线程通信内味儿了。线程通讯的前提也是使用同一个锁。线程状态新建(NEW): 新new的线程(尚未启动)。运行(RUNNABLE): 正在运行的线程(已调用start)。受阻塞(BLOCKED):执行到同步代码块,没有锁,等待获取锁的线程。无

2021-01-26 22:39:21 309

原创 【多线程】卖票经典案例细述线程安全

目录场景版本一(有问题)线程任务类测试类所遇问题重复卖超卖版本二(改进)线程任务类测试类测试结果场景有三个售票窗口24小时无休的卖一百张车票。版本一(有问题)线程任务类package lao.ben.juc.ticket;public class Ticket implements Runnable { int num = 100; public void run() { while (true) { if (num > 0)

2021-01-25 21:09:29 316 1

原创 【多线程】线程安全问题简单分析

目录同花顺本质流程同步代码块/同步方法锁解决线程安全的两种方法synchronizedlock同花顺有看过有人买火车票,一个人在飞猪买,一个人在12306买,买到了同一张票。也有看到过,库存中已经没货了但是仍然卖出去了。超买,超卖,秒杀等问题就是线程安全问题。本质多个线程操作同一个共享变量。流程代码为 A->B->CA处有判断,B处有相关业务,C处有共享变量数据改变。在某个时间,有三个线程:1、线程1首先来到了A代码,接着往下执行,在执行C之前。2、线程2来到了A代码,判

2021-01-24 23:17:59 258

原创 docker安装MySQL,Redis,Tomcat,Nginx

目录a、同花顺b、安装MySQL1、拉取mysql镜像2、创建守护式容器3、进入mysql容器4、登录mysqlc、安装Redis1、拉取redis镜像2、创建redis守护式容器d、安装Tomcat1、拉取tomcat镜像2、创建tomcat守护式容器3、进入tomcat容器e、安装Nginx1、拉取nginx镜像2、创建nginx守护式容器3、nginx.conf配置文件a、同花顺不管是安装什么,统一两个步骤,拉取与创建。像复杂的操作,比如nginx.conf配置文件修改,这些就不属于安装范畴了。

2021-01-20 23:42:21 300

原创 docker镜像备份与迁移

目录同花顺压缩(镜像备份)1、容器保存为镜像文件2、镜像文件备份为tar文件解压(镜像恢复)同花顺容器是由镜像解压而成的,所以将容器压缩之后进行备份保存。将容器压缩成tar文件保存,使用的时候将tar文件解压即可。仁义道德,也是一种奢侈。压缩(镜像备份)1、容器保存为镜像文件镜像名称必须小写字母docker commit myredis myredisimg2、镜像文件备份为tar文件docker save -o myredisimg.tar myredisimg解压(镜像恢复)

2021-01-20 22:12:37 438

原创 docker镜像与容器操作

目录同花顺镜像操作增删查容器操作查增启动容器停止容器删除容器交互式容器(临时连接)守护式容器(持久连接)docker实例(创建交互式容器)docker实例(创建守护式容器)同花顺掌握了镜像操作与容器操作,docker基本就没什么东西了。镜像操作没几个命令,主要是容器操作。断剑重铸之日,其势归来之时。镜像操作增docker pull redis删删除单个镜像docker rmi {镜像id}删除所有镜像docker rmi docker images -q查docker im

2021-01-20 21:39:07 249

原创 docker组件及原理

目录年轻人,你不讲武德闪电五连鞭接化发docker服务器(注册中心)宿主机(Linux)docker客户端(引擎)镜像文件(安装包)容器(子虚拟机)混元形意太极门掌门人1、安装centos7虚拟机2、安装docker3、docker常用命令四两拨千斤年轻人,你不讲武德未使用docker:开发人员:mysql 5.7jdk 1.8redis 3.3测试人员:mysql 5.1jdk 1.7redis 3.2运维人员:mysql 5.7.2jdk13redis3.5使用docker

2021-01-19 22:40:12 361 1

原创 springboot项目集成MongoDB

mongodb-driver:monggoDB驱动包mongo官方推出的java连接mongoDB的驱动包,相当于JDBC驱动。1、引依赖 <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver</artifactId> <version>3.10.1</version> </dependency>

2021-01-17 20:27:02 895

原创 MongoDB的可视化工具Robo 3T安装

可视化工具robomongoMongodb有很多可视化工具,这里我们使用robomongo,可以访问官网:https://robomongo.org/我们可以看到有两个版本Studio 3T和Robo 3TStudio 3T是一个功能很强大的收费版。。。Robo 3T前身就是Robomongo,是一个免费的可视化工具,我们使用他可以很轻松的进行Mongodb的管理。...

2021-01-17 00:09:22 13857 2

原创 windows与docker安装MongoDB教程

安装MongoDBwindowsdocker

2021-01-15 21:39:04 937

原创 MongoDB基本概念及使用

目录使用场景MongoDB定义MongoDB特点MongoDB体系结构MongoDB数据类型安装MongoDBwindowsdockerMongoDB常用命令数据库命令查看文档修改文档插入文档删除文档可视化工具robomongomongodb-driver:monggoDB驱动包1、引依赖2、写代码(与原生JDBC连接一样)3、增删改查(对user集合进行操作)spring-boot项目1、引依赖2、修改配置文件3、创建user实体类4、创建userRepository接口5、写service,contro

2021-01-15 20:37:04 364

NativePay.zip

Java是世界上最好的语言,基于微信官方提供的SDK,进行封装改造,用于实现Native付款,获取code_url,生成二维码,实现扫码支付功能。

2021-06-29

windows10系统64位OracleClient.zip

PLSQL报错:Make sure you have the 64 bits Oracle Client installed 解决方案。

2020-12-04

PLSQL Developer安装包

Oracle的可视化图形界面,支持SQL语句的高亮显示,比Oracle自带的SQLPlus要好很多。

2020-12-04

win32_11gR2_database_2of2

链接:https://pan.baidu.com/s/1V-8nrDDNqfzVgUVWsDgo2g 提取码:fi2y 复制这段内容后打开百度网盘手机App,操作更方便哦 win32_11gR2_database_2of2安装包,一共有两个,这是第二个。第一个文件太大了,1.5GB上传不上去。直接进百度网盘下载吧。

2020-12-03

ngnix负载均衡测试

使用三个tomcat和一个nginx就可以完成一个简单的负载均衡测试,在这个小demo中,可以指定不同的负载策略,体会不一样的负载情况。

2020-11-30

JDK8有一些我们最常用的新特性

这个资源包括了我们在实际项目开发过程中最常用的一些JDK8的新特性,比如Stream流是如何使用的,当然资源里的案例都是非常基础的,加上了一些通俗易懂的描述,有兴趣的可以下载看一看哦!

2020-11-11

SpringbootAddThymeleaf.zip

thymeleaf入门及基础语法知识。睡觉睡到自然醒,数钱数到手抽筋!大庇天下寒士俱欢颜。怅寥廓,问苍茫大地,谁主沉浮。

2020-11-02

空空如也

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

TA关注的人

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