自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 雪花算法,一文拿捏

我们先思考三个问题,有助于我们去理解为什么会产生 雪花算法问题一:在Mysql分布式框架中,为什么不使用自增主键问题二:为啥不用UUID做主键,会存在什么问题?下面将会一一的去解释这些问题。

2023-08-30 15:21:31 78

原创 Redis原理总结(一文轻松掌握Redis底层原理)

Mysql的工作越来越繁重,导致Mysql快要累死了,究其原因还是Mysql有缓存,但会写入硬盘,从硬盘读取数据的IO操作很累,也很慢,所以就在想有没有内存数据库,于是Redis便应运而生。毕竟是内存数据库,避免了Mysql繁重的IO操作,所以对Redis的访问相比MYsql来说是很快的,同时也在很大程度上,减轻了数据库的负担。

2023-08-26 18:14:29 631

原创 Spring循环依赖问题的产生与解决

循环依赖:一个或多个对象实例之间存在直接或间接的依赖关系,这种依赖关系构成了构成一个环形调用。简单点来说,就是a的实例化需要b的依赖注入,b的实例化也需要a。这样 就会导致a需要b,b需要a的这么一种尴尬场面,可以联想一下并发中的死锁。

2023-08-22 17:50:53 362 1

原创 RabbitMq的入门样例(可查字符串与json)

确定好队列名与信息后,即可通过converAndSend方法向云端服务器MQ添加数据。监听到该队列,然后获取信息,打印即可。

2023-08-21 21:48:44 513 1

原创 AQS的原理与实现类

AQS为抽象队列同步器,是一个用来构建锁和同步器的框架,使用 AQS 能简单且高效地构造出应用广泛的大量的同步器。首先,抽象代表它是一个抽象类,继承后需要实现方法,队列主要是因为其内部有一个CLH队列用于保证线程的阻塞与唤醒。

2023-08-20 14:28:15 239 1

原创 破坏双亲委派模型

书接上回,既然双亲委派模型既可以保证类加载器的层级优先级,也可以避免一个类被多次加载,为什么我们还要去破坏双亲委派机制呢?那破坏又是什么意思呢?又要通过什么方式去实现破坏双亲委派呢?

2023-08-07 22:10:53 201

原创 双亲委派模型

Java虚拟机设计团队有意把类加载阶段中的“通过一个类的全限定名来获取描述该类的二进制字节 流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需的类。实现这个动 作的代码被称为“类加载器”说简单一点,就是将类加载一定需要类加载器,类加载器并不在虚拟机内,而是在虚拟机外部。

2023-08-06 16:21:08 197

原创 总结:锁的基本知识与升级

如果线程仍然活着,拥有偏向锁的栈 会被执行,遍历偏向对象的锁记录,栈中的锁记录和对象头的Mark Word要么重新偏向于其他 线程,要么恢复到无锁或者标记对象不适合作为偏向锁,最后唤醒暂停的线程。偏向锁其实就是,有人发现,其实绝大多数情况,锁竞争的现象很少,更多的只是某个线程京城去占有某一个资源,可能偶尔会有一两个别的线程,访问一下这个资源,说白了就是竞争的很平淡,锁的实现肯定是需要额外的开销的,所以整了个偏向锁,降低获得锁的代价,有锁,能解决,但解决的竞争问题是小打小闹的水平。偏向锁具体是如何工作的呢?

2023-08-03 21:20:01 198

原创 SpringBoot项目AOP的理解及应用

AOP即面向切面编程,在我的理解中,它就跟java中的代理一样的道理,都是用于不改变原有代码逻辑的情况下,对功能进行加强,比如在SpringBoot项目中,对某个功能进行权限分析,日志管理等前置后置或者环绕之类的一系列操作。

2023-07-30 22:10:43 306 1

原创 rpc框架的理解

RPC是远程过程调用(Remote Procedure Call)。RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。为实现该目标,RPC 框架需提供一种透明调用机制,让使用者不必显式的区分本地调用和远程调用。

2023-07-29 09:18:13 245 1

原创 HashMap源码(put方法)总结思考

虽然看不懂在干嘛,无非就是根据关键字计算出一个hash值呗,对吧,具体操作是判一下空,为空为0,非空,则调用hashcode得出的数字再无符号右移再^,hashcoude得到的值是跟内存地址有关的,然后再做位运算,是为了让它每一位都参与运算,扰动函数,目的是让它得到的结果更为离散,减少hash冲突。写了很多,基本上也就分两种情况,一种,旧的为空,new一个长度为16,阈值为12的Node类型的数组,否则,判断长度,阈值和长度都二倍扩容。仔细捋捋if结构,发现当hashmap为空时,执行下面两句。

2023-07-25 16:59:07 231 1

原创 反射的应用------模拟ssm项目

以上代码为测试的主函数,首先,将Controller的目录地址以字符串传入写好的方法,读取出想要的java文件,然后做字符串操作,去掉.java,加上包名,得到全限定名,方便后续的获取类对象的操作,由于只再Controller中写了一个文件,所以我就不循环了,直接以相同的全限定名获取类对象,然后让类对象调用.getAnnotations()方法,去获取这个类中所有的注解。上述代码是我自定义的注解类,很简单,前三行是元注解,可以去了解一下,然后注解内部就一个获取value的函数,并且有默认值。

2023-07-23 14:31:08 203

原创 简单分析Integer中的“128”陷阱

首先,我们我们一眼就看到了常量low,规定了会不会入那个数组的门槛,在静态代码块中,我们也看到了上限high,其他的就不需要了,我们返回之前的valueOf看,在-128到127,我们会在同一个数组中寻找对应下标,找到你,而一旦超出这个范围,就new了。数组和new Integer都是复杂数据类型,复杂数据类型==比较的肯定是地址,同一个数组,指向的地址都是同一个地址,而new则不同,它不管内容是否相等,都会去堆中新找一块空间去存储,所以-128到127会返回真,而一旦大于127,则返回假。

2023-07-17 19:21:27 279 1

原创 servlet富文本编辑器以及图片文件上传读取数据库操作

使用的是UEditor,下载后放到weContent下即可,导入后会报错,原因有是编码格式,修改成utf-8后,即可解决中文乱码的问题,更改文成之后还没有完成配置操作,还需要修改jsp文件夹下的config.json来进行地址的修改,这里的地址设置的,是有图片操作活着别的操作时,上传到的位置,具体下面的图片上传读取数据库也会用到。最简单的更改方式就是,将绝对地址改为相对地址。配置好后,即可按照需求,参考上表中建立富文本编辑器,读取设置富文本编辑器的值等等操作,完成想要的需求。

2023-04-04 11:53:50 344 1

原创 Dynamic Web Project实现前后端以及数据库的结合(二)

差不多,就只剩JDBC没有配置了,但其实你有那个数据库与后端结合的jar包,你可以用自己的逻辑完成SQL语句与后端结合,配置也很简单,连接本地数据库,账号密码写明白就行,我比较懒,我直接封装了俩别人写好的包。如上图所示,servlet中最为重要的两个方法,doget,dopost,doget中的逻辑,将在get请求时执行,dopost中的逻辑,将在post请求时执行。这里小插一嘴,在以后进行数据库方面的操作时,查询最好用get,增加、删除、修改最好用post.

2023-03-14 16:39:59 126

原创 Dynamic Web Project实现前后端以及数据库的结合(一)

当然,servlet作为一个中转站,目的是将前端页面与数据库连接起来,使得前端页面不是“写死的”,任何数据都不会写死在前端上,而是从数据库中调用的,反过来说,前端操作数据之后,我们也希望将数据的改变保存下来,而不是前端刷新之后就没了,辉逝了,所以,前端可以不仅可以读取数据库的数据,想修改也可以修改,这才是前后端结合的真正目的,而servlet的存在就是在二者之间中转,JDBC的存在就是可以在后端调用数据库,那么!这样的话,servlet的作用就在于,与前端进行数据交互,同时也可以与数据库进行数据交互。

2023-03-14 15:42:39 389 2

空空如也

空空如也

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

TA关注的人

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