-
yexindonglai@163.com
2022-03-01 13:13
Java
1356°
0
先添加依赖<!--hibernate校验框架--><dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>4.3.1.Final</version></dependency>封装校验方式,当某个规则校验失败时会打印出该字段的message信息packagecom.xd.core.common.utils;importjava.util.Set;importjavax.validation.ConstraintViolation;importjavax.
-
yexindonglai@163.com
2022-03-01 12:14
Java
875°
0
转发 转发是在服务器进行操作的,在前端客户端页面是看不到什么变化的,通俗理解:客户端跟服务端要资源,但是服务端没有这个资源,那么服务器端就会去请求别的接口来获取客户机想要的资源,然后在返回给客户端;转发内部原理如下:重定向 重定向可以理解为重新定向资源,当服务器进行转发时,客户端会进行2次请求,资源地址也会跟着变化,通俗点理解:客户机想服务器请求资源,但是服务器没有这个资源,这时候服务器会返回一个302的状态给客户端,并给出重定向的地址,放在响应头的Location中,如图: 重定向底层执行原理如下图: 通过上面的流程,那我们在代码中手动返回302的状态码,并且在响应头加上Locati
-
yexindonglai@163.com
2022-03-01 12:13
Java
1005°
0
ArrayList、LinkedList、Vector的区别如下:数组结构是否线程安全效率初始容量扩容机制-倍数ArrayList动态数组否遍历查找快,插入删除慢10倍数:1.5 比如初始值是10,第一次扩容公式 10*1.5 =15第二次扩容公式 15*1.5 =22扩容计算时去掉结果的小数部分LinkedList双向链表否插入删除快,遍历查找慢双向链表没有初始容量双向链表也没有扩容机制,一直在后面或者前面添加元素就好Vector动态数组是遍历查找快,插入删除慢10倍数 2倍比如初始值是10,第一次扩容公式 10*2=20第二次扩容公式 20*2=40ArrayList ArrayList
-
yexindonglai@163.com
2022-03-01 12:09
Java
1315°
0
CAS全称叫做Compareandswap(比较和交换),CAS无锁机制是乐观锁的一种,也叫自旋锁,CAS假设认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则重新再来一次,无限循环地进行对比,直到没有冲突为止; Atomic类就是使用CAS无锁机制实现的类;CAS操作依赖底层硬件的CAS指令,CAS指令有两个步骤:冲突检测和更新操作,但是这两个步骤合起来成为一个原子性操作。CAS指令需要3个操作数:需要更新的变量(V)(主内存)旧的预期值(E)(本地内存)新值(B)CAS指令执行时,首先比较内存位置V(主内存)处的值和E
-
yexindonglai@163.com
2022-03-01 12:09
Java
870°
0
传统的trycatchfinally方式是这样的publicstaticvoidmain(String[]args){FileInputStreamfileInputStream=null;try{//捕获异常fileInputStream=newFileInputStream(newFile("/Users/mac/Documents/合规业务组照片.zip"));byte[]bytes=newbyte[1024];intline=0;while((line=fileInputStream.read(bytes))!=-1){System.out.println(newString(byt
-
yexindonglai@163.com
2022-03-01 12:08
Java
979°
0
为了搞懂HashMap,作者经常夜不能寐,熬夜刷文章、看源码、撸代码、做测试,终于在今天下午的1点30分55秒搞HashMap究竟是何方神圣,我想,这也许就是代码的魅力吧,为了这玩意我可真是煞费苦心,虽然辛苦,但是也很开心,又研究透了一样东西,这种快乐简直让人流连忘返,不多说,开始表演!HashMap在各JDK版本的区别 在JDK1.7以前,HashMap是用【数组 +单向链表】实现的,而在JDK1.8是使用【数组+单向链表+红黑树】实现的,本文主要具体讲讲数组+单向链表的实现,有些童鞋会说了:“既然已经使用了红黑树了,为啥不直接讲红黑树结构呢?”,首先,这是好问题,让我们先把掌声给到这
-
yexindonglai@163.com
2022-03-01 12:06
Java
923°
0
java是目前全球最火的语言,热度也是最高的,相信做开发的你肯定用过,那我就要问问,你仅仅是用过还是了解它的底层机制和执行原理呢?那么今天我们就揭开它神秘的面纱,看看jvm在我们开发的时候帮我们做了哪些事情;说到这里,有个小兄弟要问了:“我会用不就行了吗?了解它干啥呢?难不成我要自己写一个jvm出来?if和for语句我用得可顺手,了解它的底层机制有卵用?”;唉~,这位小兄弟,你先别急啊,首先呢,用只是基础,就像开发一样,增删改查就是一个开发人员的基础,难不成你想一辈子都干增删改查吗?学习这些还不是为了让我们收入蹭蹭往上涨,让我们通往架构师的路越来越顺畅;安安静静地坐下来,让我们开始学习吧!
-
yexindonglai@163.com
2022-03-01 12:05
Java
886°
0
虽然说不管是静态变量还是静态方法,这些都是java基础的知识了,但我发现还是有很多人不懂静态的原理,静态的属性遵循以下规则:静态元素会在构造方法之前执行静态元素从上到下按顺序执行静态元素不需要初始化即可直接使用; 1、静态元素会在构造方法之前执行,举个例子就知道啦;我们看看下面的代码publicclassMain{static{System.out.println("1:静态代码块");}publicMain(){System.out.println("2:构造函数");}publicstaticvoidmain(String[]args){//初始化Mainmain=newMain();S
-
yexindonglai@163.com
2022-03-01 12:04
Java
1155°
0
字节码有什么用?1、对类的基本信息进行操作,可以新增、删除、修改类、属性和方法;2、应用场景:Lombok插件、AOP、动态修改class文件、网页上的在线执行java代码也是字节码实现的;2、Lombok插件就是用字节码实现,只用Data注解就可以给属性自动加上get和set方法4、常见的字节码操作类库: BCEL: 深入汇编底层语言进行类库操作; ASM: 轻量级字节码操作框架,直接涉及到jVM底层的操作和指令;高性能、高质量 CGLB:生成类库,基于ASM实现 javassist:开源框架,编辑和创建Java字节码的类库,我们这里主要介绍javassistjavassi
-
yexindonglai@163.com
2022-03-01 12:00
Java
2704°
0
因公司有需求,需要根据用户输入的sql中获取到表名,网上查询到有个框架很实用,于是就小试牛刀,此框架是githup团队研发的一款sql解析框架,也是公认最好用的,不单可以解析sql,还可以用来拼接sql; 使用前先导入maven,目前最新版本已经更新到4.0了,童鞋们根据自己实际情况来选择相应版本<dependency><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifactId><version>1.2</version></dependency> 代码案例,因为我笔者这边只用到获取表名的功能,所以案例里