-
yexindonglai@163.com
2022-03-01 13:09
SpringCloud
797°
0
最近笔者在面试过程中发现,分布式的微服务开发越来越广泛了,越来越多的企业在面试时都需要有微服务的经验,那么在谈到微服务的过程中,很多的面试官都会问到一个问题:有没有接触过分布式事务管理?怎么实现分布式事务管理? 那在这里就先要理解一下,什么是分布式事务管理,在单系统中,事务管理想必大家都很清楚,举个栗子,银行转账的过程中,张三的余额有100元,李四0元,张三要转50元给李四,那么数据库就要保证张三的记录和李四的记录同时修改,要么同时修改,要么不改,那么事务管理就是为了解决这种情况而存在的;单系统中,这种办法很好解决!加个注解就完事了! 现在大多数项目都用的微服务;多个模块之间相互调用
-
yexindonglai@163.com
2022-03-01 12:19
后端
2147°
0
有时候进行查找错误的时候非要进入到linux系统里面查看服务打印的日志才知道错在哪,这就给排查时间增加了一些时间,所以为了方便,突发奇想,何不自己开发一个可以实时查看日志的接口呢,于是开发出了这么个玩意;项目下载地址:https://download.csdn.net/download/qq_27184497/12311384效果图如下:每次更新日志时,网页上都会打印出来相应的日志内容,代码也很简单先导入pom依赖<dependency> <groupId>javax.websocket</groupId> <artifactId>javax.websocket-api</artifac
-
yexindonglai@163.com
2022-03-01 12:18
Maven
5665°
0
这个问题忙了我一天多的时间,因为太棘手了,所以记录下来,防止忘记;问题是这样的,因为项目中用到了自定义的jar包,也就是远程仓库里没有的jar,所以想要引用就必须自己手动添加进去,在idea中运行是没问题的,但是打包到测试环境后发现经常报错java.lang.NoClassDefFoundError 和 ClassNotFoundException异常,经过一查找才发现是因为打包的时候依赖jar包没打进去;一开始是在项目中导入了本地的jar包。发现没用网上找到问题说是因为scope指定了system域是系统范围使用的,在打包时不会将这个空间的包打进lib目录下;然后也在项目中手动添加了这个
-
yexindonglai@163.com
2022-03-01 12:14
Java
865°
0
转发 转发是在服务器进行操作的,在前端客户端页面是看不到什么变化的,通俗理解:客户端跟服务端要资源,但是服务端没有这个资源,那么服务器端就会去请求别的接口来获取客户机想要的资源,然后在返回给客户端;转发内部原理如下:重定向 重定向可以理解为重新定向资源,当服务器进行转发时,客户端会进行2次请求,资源地址也会跟着变化,通俗点理解:客户机想服务器请求资源,但是服务器没有这个资源,这时候服务器会返回一个302的状态给客户端,并给出重定向的地址,放在响应头的Location中,如图: 重定向底层执行原理如下图: 通过上面的流程,那我们在代码中手动返回302的状态码,并且在响应头加上Locati
-
yexindonglai@163.com
2022-03-01 12:13
Java
991°
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:12
后端
1031°
0
在数据结构中,树这个概念用的非常多,特别是在Map存储中其实就是一个树的概念,这种结构也叫树结构,跟线性结构不同,线性结构就是链表,就是一条线就可以表示完了,但是树状结构的分支会有无限多,我们本章就是只要理清楚红黑树的概念,但是要想理清楚红黑树就必须得先知道普通的树和B树的结构,理清楚这两个树可以帮助我们更好地理解红黑树,因为红黑树和B树是可以互相转化的! 树树没什么好说的,一个图你们就明白了树是怎么回事了!我们入场生活中的树的根是在下面的,但是在数据结构中,树的根节点一般是在上面的,所以在图片中做了一层转化;我们只需要知道什么是树就可以了;我们工作中用到的思维导图本质上也是树形结构 二叉
-
yexindonglai@163.com
2022-03-01 12:09
Java
1301°
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
857°
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
965°
0
为了搞懂HashMap,作者经常夜不能寐,熬夜刷文章、看源码、撸代码、做测试,终于在今天下午的1点30分55秒搞HashMap究竟是何方神圣,我想,这也许就是代码的魅力吧,为了这玩意我可真是煞费苦心,虽然辛苦,但是也很开心,又研究透了一样东西,这种快乐简直让人流连忘返,不多说,开始表演!HashMap在各JDK版本的区别 在JDK1.7以前,HashMap是用【数组 +单向链表】实现的,而在JDK1.8是使用【数组+单向链表+红黑树】实现的,本文主要具体讲讲数组+单向链表的实现,有些童鞋会说了:“既然已经使用了红黑树了,为啥不直接讲红黑树结构呢?”,首先,这是好问题,让我们先把掌声给到这
-
yexindonglai@163.com
2022-03-01 12:06
Java
912°
0
java是目前全球最火的语言,热度也是最高的,相信做开发的你肯定用过,那我就要问问,你仅仅是用过还是了解它的底层机制和执行原理呢?那么今天我们就揭开它神秘的面纱,看看jvm在我们开发的时候帮我们做了哪些事情;说到这里,有个小兄弟要问了:“我会用不就行了吗?了解它干啥呢?难不成我要自己写一个jvm出来?if和for语句我用得可顺手,了解它的底层机制有卵用?”;唉~,这位小兄弟,你先别急啊,首先呢,用只是基础,就像开发一样,增删改查就是一个开发人员的基础,难不成你想一辈子都干增删改查吗?学习这些还不是为了让我们收入蹭蹭往上涨,让我们通往架构师的路越来越顺畅;安安静静地坐下来,让我们开始学习吧!