自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基于拦截器对限流的实现

基于拦截器对限流的实现通常用于保护系统免受过多请求的冲击,防止服务过载。通过限流可以限制客户端在一定时间内的请求次数。只是一个基于拦截器的令牌桶限流实现示例。对于限流限制方案,采用用户id和ip地址,作为redis缓存的key值,使用satoken来处理的token,直接获取id,这里的id我直接使用的用户id。

2024-08-12 19:46:29 285

原创 基于拦截器对ThreadLocal的使用

通过这种方式,ThreadLocal 允许你在整个请求处理期间共享数据,而不必显式地将数据传递到每一个方法中。基于拦截器对 ThreadLocal 的使用通常在一些需要处理与当前线程相关的数据的场景中非常有用。ThreadLocal提供了一种线程范围内的变量存储方式,每个线程都可以独立地对其进行读写而不影响其他线程。这里我在处理Token时直接使用了第三方工具satoken,jwt携带的信息只有id信息,这个id我使用了用户id。接下来,创建一个拦截器,在请求开始时将用户信息存入。,在请求结束后清除信息。

2024-08-12 11:48:46 152

原创 【实习分享】后端开发实习分享

到现在也实习一个多月了,也算是对这一段时间的总结吧。现在主要同时跟进两个项目,一个是对集团内部一个系统的更新升级,另外的是关于“******”的一个项目,说来也有意思,应该说是一个好的练手机会,因为项目功能相对简单,大伙一致认为扔给我,对于我来说,我需要考虑整个的架构设计,更加全面性的去思考整个项目。好啦!正题开始!技术选型对于这个项目来说我主要考虑这几点:项目需求:在项目接手后先要清楚甲方用户的需求,考虑实际使用环境,稳定性,并发量,特殊时段等,都要考虑清楚,多和产品沟通,知道甲方到底要

2024-07-23 20:44:09 434

原创 【JAVA面试基础】ArrayList、LinkedList与Vector的区别

首先,我们要明白ArrayList是基于数组的,我们都知道,申请数组的时候,只能申请一个定长的数组,那么List是如何通过数组扩容的呢?: 默认情况下ArrayList的初始容量非常小,所以如果可以预估数据量的话,分配一个较大的初始值属于最佳实践,这样可以减少调整大小的开销。

2024-07-23 19:30:22 148

原创 【JAVA面试基础】MySQL 的 select * 会用到事务吗?

那么,而SELECT * 这种普通的读取操作其实也会在事务的上下文中执行,即使没有明确的开启事务语句,InnoDB存储引擎也会为查询自动开启一个隐式事务。因此,InnoDB的所有操作都可以说是在事务的上下文中执行的,包括读取操作和修改操作。我们都知道,在InnoDB存储引擎中,

2024-07-17 11:40:56 145

原创 【JAVA面试基础】InnoDB的一次事务更新流程

Undo Log是用来保证事务原子性和一致性的一种机制,用于在发生事务回滚等情况时,将修改操作回滚到修改前的状态,以达到事务的原子性和一致性。7、记录Binlog:在提交过程中,InnoDB会将事务提交的信息记录到Binlog中。6、写入磁盘:在提交过程后,InnoDB会将Buffer Pool中的脏页写入磁盘,以保证数据的持久性。4、记录RedoLog Buffer:InnoDB在Buffer Pool中记录修改操作的同时,InnoDB 会先将修改操作写入到 redo log buffer 中。

2024-06-14 22:17:29 337

原创 【JAVA面试基础】synchronized是如何保证原子性、可见性、有序性的?

我们知道,线程是CPU调度的基本单位。CPU有时间片的概念,会根据不同的调度算法进行线程调度。当一个线程获得时间片之后开始执行,在时间片耗尽之后,就会失去CPU使用权。所以在多线程场景下,由于时间片在线程间轮换,就会发生原子性问题。比如线程1获得时间片执行,但是执行过程中,CPU时间片耗尽,他就需要让出CPU,这时线程2获得了时间片开始执行。但是对于线程1来说,他的操作并没有全部执行完成,也没有全都不执行,这就是原子性问题。

2024-06-14 22:00:07 1646

原创 【JAVA面试基础】AOP介绍及Spring声明式事务失效详解

AOP(Aspect-Oriented Programming),即面向切面编程,用人话说就是把公共的逻辑抽出来,让开发者可以更专注于业务逻辑开发。AOP和IOC一样,AOP也指的是一种思想。AOP思想是OOP(Object-Oriented Programming)的补充。OOP是面向类和对象的,但是AOP则是面向不同切面的。一个切面可以横跨多个类和对象去操作,极大的丰富了开发者的使用方式,提高了开发效率。

2024-06-10 22:44:42 327

原创 【JAVA面试基础】Spring IOC(自动注入,BeanFactory,自动配置,Spring生命周期,三层缓存)思想串讲

所谓的IOC(inversion of control),就是控制反转的意思。原来这个对象的控制权在我们的代码中,我们自己new的对象,在Spring中,应用程序不再控制对象的创建,而是被动地接受由容器注入的对象。控制权被转移到Spring容器中,容器负责创建和管理对象,并在需要的时候将它们注入到应用程序中。

2024-06-06 20:53:45 1167

原创 【JAVA面试基础】HashMap、Hashtable和ConcurrentHashMap的区别?

遍历过程中,ConcurrentHashMap的结构发生变化时,不会抛出ConcurrentModificationException异常,但是在遍历时可能会出现数据不一致的情况,因为。在集合类中,为了避免并发修改,会维护一个expectedModCount属性,他表示这个迭代器预期该集合被修改的次数。HashMap使用EntrySet进行遍历,获得Entry类型的Set集合,创建迭代器遍历Set集合,即先获取到HashMap中所有的键值对(Entry),然后遍历Entry集合。说白了就像是前后是否一致。

2024-06-04 21:30:08 1356

原创 【JAVA面试基础】ArrayList对比LinkedList

ArrayList是一个可变长的动态数组,当再次add()的时候,空间大小不够用时会自动进行扩容,重新分配一段连续的存储空间,除去其可变长的特性外基本和数组是一样的,所以可以参照数组的结构特性取理解get()add(),一段连续的内存空间构成其能够快速检索的最大特点(即:检索快,插入删除慢)

2024-06-03 21:31:48 289

原创 【JAVA面试基础】面向对象篇

程序是将数据和逻辑封装在一起的代码段。在Java中,方法是常用的代码段封装方式。然而,在Java中,方法必须存在于一个类中才能使用。因此,我们将进入本章的核心内容——面向对象编程。// 使用类——在主类中使用 Book 类//声明并实例化对象book.title ="Java开发";//操作属性内容//操作属性内容//调用类中的getInfo0方法案例代码实现了一个最基础的类使用操作,但是类本身属于引用数据类型,而对于引用数据类型的 执行分析就必须结合内存操作来看。

2024-06-03 18:08:31 352

原创 java基础浅尝

方法的主要功能是封装可以执行的一段代码,这样不仅可以进行重复调用,更可以方便地实现代码的维护在Java中,定义方法的时机取决于程序的组织和逻辑结构。以下是一些常见的情况,可以考虑定义一个方法:代码重复:当代码块需要在多个地方使用时,可以将其封装在一个方法中。这样提高了代码的可读性、可维护性,并减少代码的重复;功能模块化:当某个功能需要进行模块化的处理或操作时,可以将其实现封装在一个方法中。这样方便其他部分的调用;复杂逻辑:当代码包含一系列复杂的判断、计算或操作过程时,可以将其抽象为一个方法。

2024-06-03 18:07:04 410

原创 消息队列:你要梭哈?

消息队列的优缺点分析及技术选型

2023-11-12 13:24:07 41 1

空空如也

空空如也

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

TA关注的人

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