自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 easyPan技术回顾day4

3.将delFilePidList的所有子文件状态更新为已删除(也就是除了选中的文件,他们的子文件通过delFilePidList一步步都被删除,删除的条件是pid IN delFilePidList)。1.跟上面一样,获取子目录,删除子目录下所有内容(将状态设置为-1),更改redis中用户的空间信息。2.根据文件集合,递归查询所有状态为已删除的所有子目录,将其放入delFileSubFolderFileIdList。1.先查询要删除的文件是否存在。1.根据选中的文件id,查询文件集合。

2025-04-03 22:00:42 211

原创 easyPan技术回顾day3

当我们在方法上加入了@async或者@transaction这些注解,他们是使用aop实现的,底层用到了动态代理,所以,我们其实拿到的是代理对象,调用的方法是代理对象的方法,此时如果方法里是使用synchronized(this)这种方法加锁,那么锁就会在事物提交之前就释放那么可能就会引起并发安全问题。加锁在方法上(synchronized)的时候,锁住的是调用当前方法的对象,我们Bean一般是单例模式,所以锁住这个Bean对象之后其他用户调用这个方法也会串行执行(严重影响效率)。防止高并发也可以加锁。

2025-04-02 22:20:44 960

原创 技术回顾day2

接着构建临时目录(由用户id和fileId构成),创建临时文件(命名规则是当前的chunk值),使用File.copy来进行文件的复制(在这里可以使用我们的限流器)。秒传前先从redis里面获取用户的空间是否满足,不满足就抛出异常,空间充足就构造文件信息插入到数据库中,接着更新用户的空间,返回上传成功的状态信息(秒传)。因为当前的项目中异步合并包括合并文件和图片压缩,视频处理。@async注解实现异步合并,他的原理是aop,当调用这个方法的时候,其实是调用的代理方法,将其放到默认线程池中执行。

2025-04-01 22:28:08 795

原创 CDN是什么?

由于大量请求被 CDN 缓存命中,源站(Origin Server)承担的流量大大减少,提高可扩展性。由于重复的资源请求可由 CDN 直接返回,而无需请求源站,因此可节省。,CDN 会回源请求并缓存该内容,减少后续请求的回源频率。:CDN 向源服务器请求该资源,并缓存一份副本。,将流量路由到其他可用节点,提高系统的可靠性。直接在 CDN 边缘节点完成,减少源站压力。时,CDN 会在全球多个节点缓存该视频。,将请求重定向到最近的 CDN 节点。(图片、CSS、JS),缓存时间长。

2025-04-01 15:15:36 687

原创 Mapper的工作原理

/ 其他方法...MyBatis 通过动态代理技术"自动"实现了 Mapper 接口,开发者只需要定义接口和 SQL 映射,无需编写实现类。这种设计既保持了接口的清晰性,又减少了样板代码,大大提高了开发效率。这种机制的优势在于:接口与实现解耦减少手动编码错误便于单元测试保持代码的简洁性。

2025-04-01 14:49:38 555

原创 技术回顾day01

接下来每次请求浏览器都会携带sessionid,后端服务器会自动拿着这个sessionid去帮我们找到他自己的session,然后我们再对session做一些校验。(也就是说设置和解析都是springboot帮我们做的,我们通过request拿到session对他做一些操作就可以啦)。验证账号密码、更新最后一次登录时间、将用户的总空间和已使用空间存储到redis中、构建用户的基本信息、保存用户信息到session中。,超过超时时间(默认 30 分钟),Session 会自动失效。

2025-03-31 17:42:44 232

原创 学成在线--day02

将前端资源部署到nginx服务器,让nginx服务器访问后端接口(因为跨域是因为浏览器,这个时候我们不使用浏览器访问而是通过nginx代理访问后端服务器就不存在跨域问题)。类加载路径,也就是jvm找字节码文件的路径,我们自己写的类,以及依赖的包,都会放到这个路径下面用于加载。是由于浏览器的同源策略(协议,端口,ip地址),这三者任何一个不一样就认为不是同源就不能访问。是日志标准,提供统一的 API,实际日志行为由具体实现(如 Log4j)决定。日志管理:使用slf4J和log4j配合。

2025-03-29 19:37:13 287

原创 学成在线--day1搭建项目

-接下来是每一个微服务模块:比如content:又分为四个部分,model(放po,vo,dto),api(接受请求,controller),service(放service,mapper),content模块(用来整合三个小模块)。base模块:比如内容模块或者管理模块都用到的一些工具放到这个里面,还有定义的一些返回值类,分页参数等等都可以定义在这里,方便所有模块共用。复习的知识点:mybatisPlus的分页查询机制,lambdaQuery的使用,结果的封装。git的工作目录就是写代码的地方。

2025-03-28 22:50:22 204

原创 一个请求在spring项目中完整的流转过程

这样,整个 Spring Web 项目的请求流动路径就完全理清了!解析 HTTP 请求的 URL、Headers、Body 等信息。在 Controller 方法执行完成后,返回数据之前,拦截器的。是 Spring 提供的机制,不属于 Servlet 规范。,确定请求由哪个 Controller 方法处理。,负责接收所有 HTTP 请求,并进行分发。但在执行具体的 Controller 之前,,监听 HTTP 端口(默认 8080)。处理返回数据,生成 HTTP 响应对象。,但在完整的请求流程中,还有。

2025-03-27 11:57:43 295

原创 https握手过程

HTTPS 握手过程通过非对称加密和对称加密的结合,确保了通信的机密性、完整性和身份验证。通过数字证书验证服务器身份,并通过会话密钥加密通信内容,HTTPS 有效地保护了数据在传输过程中的安全性。希望以上内容能帮助你更好地理解 HTTPS 的握手过程和安全性机制!如果还有其他问题,欢迎继续提问!

2025-03-18 15:49:21 850

原创 java多线程中-用于同步控制的各种方法作用

你说得对,要完整讲解 Java 线程同步控制的方法,还需要涵盖yield()ConditionSemaphore等相关机制。我会详细讲解它们的作用、区别、适用场景,以及背后的实现原理,以确保你能全面理解 Java 线程同步控制。

2025-03-16 14:59:24 575

原创 volatile原理--内存屏障解析

volatile关键字作用原理

2025-03-16 13:38:08 74

原创 hashmap为什么每次扩容都是2倍?

为什么用 2 倍扩容,并使用移位操作来优化哈希索引计算的核心原因!不是 2 的幂时,需要 CPU 执行。我们来分析一个元素的索引如何变化。,扩容时也是原大小的。

2025-03-15 17:19:38 713

原创 io多路复用-背

允许进程同时监听多个文件描述符(FD),只有在 IO 事件就绪时才进行真正的读写操作。,并在有数据可读/可写时进行相应的操作。通常,IO 读写操作会阻塞进程,而多路复用提供了一种。的方式,减少系统资源消耗,提高并发处理能力。来存储监听的 FD,最大支持。的 IO 处理方式,它允许。需要轮询所有 FD 的问题。如果面试官深入追问,可以结合。结构)存储 FD,克服了。IO 多路复用是一种。(Linux 默认)。的 1024 限制。

2025-03-15 15:14:22 533

原创 排序算法-java

✅。

2025-03-14 20:41:27 680

原创 缓存的双写一致性实现方案

的数据,在 Redis 作为缓存的情况下,保证 Redis 和数据库数据的一致性,可以选择。:数据读取多、实时性要求不高的场景(比如商品详情、用户信息等)。❌ 如果 Redis 更新失败,可能导致缓存和数据库数据不一致。✅ 避免缓存和数据库数据不一致的问题(先删缓存)。✅ 读性能高,数据实时同步,减少不一致问题。,减少数据库压力(因为数据库只需批量写入)。的业务场景,能有效减少数据库压力。的场景,如日志收集、订单队列等。,不适用于实时性要求高的业务。,对一致性要求高的场景。,增加了写操作的延迟。

2025-03-12 19:53:02 998

原创 easy云盘笔记--重要功能

该上传功能实现了分片上传、秒传、文件合并和转码等核心功能,结合 Redis 缓存和异步处理提高了性能和用户体验。通过事务管理和异常处理确保了数据的一致性和可靠性。视频分片处理是其中的重要环节,通过。

2025-02-26 19:06:57 749

原创 黑马点评项目总结

推拉模式是一个折中的方案,站在发件人这一段,如果是个普通的人,那么我们采用写扩散的方式,直接把数据写入到他的粉丝中去,因为普通的人他的粉丝关注量比较小,所以这样做没有压力,如果是大V,那么他是直接将数据先写入到一份到发件箱里边去,然后再直接写一份到活跃粉丝收件箱里边去,现在站在收件人这端来看,如果是活跃粉丝,那么大V和普通的人发的都会直接写入到自己收件箱里边来,而如果是普通的粉丝,由于他们上线不是很频繁,所以等他们上线时,再从发件箱里边去拉信息。相比之下,JWT 通常只包含简单的键值对数据。

2025-02-16 13:33:04 627

原创 spring面试题

首先,Bean的定义通常通过XML配置文件、Java配置类或注解(如@Component@Service等)来完成。// 通过注解定义Bean@Component通过以上代码,我们可以看到Spring Bean的生命周期包括实例化、依赖注入、初始化、使用和销毁等阶段。开发者可以通过实现特定的接口或使用注解来干预这些阶段,从而实现更灵活的控制。首先,定义一个自定义异常类,用于表示用户未找到的情况。定义一个通用的错误响应类,用于返回统一的错误信息。} }

2025-02-15 09:52:04 846

原创 【无标题】优秀回答统计

例如,如果对于类别 kk,模型预测 fk(xj)=0.7fk​(xj​)=0.7,而当前的正类阈值 τ(αk)=0.6τ(αk​)=0.6,负类阈值 τ(βk)=0.3τ(βk​)=0.3,则 y^jk=1y^​jk​=1,因为 0.7≥0.60.7≥0.6。这里的优化目标是最小化标记数据和未标记数据的损失函数,同时通过正则化项 −∑j=1m∑k=1qαky^jk+βk(1−y^jk)−∑j=1m​∑k=1q​αk​y^​jk​+βk​(1−y^​jk​) 控制每个类别的正负伪标签的数量。

2025-01-05 22:16:41 1072

原创 Socket(套接字)是什么,有什么作用?

(套接字)是计算机网络编程中的一个重要概念,它是应用程序和网络协议之间的接口,用于实现不同主机或不同进程之间的通信。通过Socket,程序能够在网络中发送和接收数据,实现网络应用的功能。Socket 是一种抽象的概念,提供了一种编程接口(API),使得应用程序可以通过它与网络通信。它通常在操作系统的网络协议栈和应用程序之间提供一个桥梁。具体来说,Socket 是由操作系统提供的用于实现网络通信的端点,应用程序通过它来进行数据的传输和接收。

2024-12-27 13:55:14 1294

原创 AQS理解

AQS 提供了一个灵活且高效的机制来构建并发控制工具,它简化了同步器的实现,并利用底层的原子操作确保了线程安全。AQS 的设计使得自定义同步器的开发变得更加简单,通过对。

2024-12-26 16:45:16 426

原创 java中泛型的作用--通俗易懂

类型安全性:泛型提供了编译时类型检查,避免了运行时类型错误。减少类型转换:泛型避免了强制类型转换的需要。代码复用性:泛型使得相同的代码能够适应不同类型,提高了代码的复用性。性能优化:避免了类型转换的性能损失。Java引入泛型的主要目的是为了增强类型安全性、提高代码复用性并避免在运行时发生类型转换错误。泛型与Object的主要区别在于,Object允许存储任何类型的对象,但缺乏类型安全性,而泛型在编译时就能保证类型的安全,使得代码更加简洁、可靠和易于维护。

2024-12-25 18:46:14 942

原创 spring重点面试题总结

Spring 的 Bean 生命周期包括从 Bean 的定义、实例化、依赖注入,到初始化、销毁等多个阶段。在这个过程中,提供了 Bean 的配置信息,Spring 会通过反射实例化 Bean,并通过注入不同的依赖来完成 Bean 的构建。在 Bean 初始化前后提供了扩展点,允许开发者进行自定义的 Bean 修改和增强。同时,通过实现Aware接口,Bean 可以获取到容器的一些元数据,从而进一步增强 Bean 的功能。什么是 Spring 的循环依赖问题?定义循环依赖。

2024-12-11 19:03:37 769

原创 kafka相关问题

偏移量是消费者组维护的,而不是单个消费者。Kafka 为每个消费者组记录每个分区的偏移量,存储在主题中。每个消费者组的偏移量更新是独立的,消费者组之间的消费进度互不干扰。偏移量是由消费者控制和提交的,可以选择自动提交或者手动提交。这个机制确保了 Kafka 中的消息消费是高效且可扩展的,同时允许消费者组独立地跟踪自己的消费进度。往broker写入数据的流程Kafka 是一个高吞吐量的分布式消息队列系统,其数据写入和持久化设计精巧,保证了性能和可靠性。

2024-12-11 13:02:49 1088

原创 synchronized原理,以及轻量级锁,线程锁记录存的是什么

对象头的 Mark Word 是一个 32 位(32-bit JVM)或 64 位(64-bit JVM)的字段,其内容在不同状态下会有所不同。的底层是通过 JVM 和操作系统的协作实现的。通过锁记录和对象头的 Mark Word,JVM 实现了轻量级锁的高效锁管理机制。这个副本存储了锁的当前状态信息,用于线程对锁的操作管理。轻量级锁,线程的锁记录(lock record)存的是什么?的加锁、竞争锁以及释放锁的底层实现详解。的释放锁是通过 JVM 的。的加锁是通过 JVM 的。

2024-12-04 22:28:23 693

原创 xbb长难句理论部分

判断时态的时候,先找态,然后找态的承接词(do,be,hava),然后根据时改变承接词的状态。谓语动词有三种(时态、语态(被动)、情态(can do...)),或者这三种的组合。动词不一定都是谓语动词,要满足上面的三种情况。

2024-12-01 22:33:12 165

原创 lua脚本作用

Lua 脚本用于保证 Redis 操作的原子性,避免了多个操作间的竞态条件和网络延迟问题。在分布式锁的实现中,使用 Lua 脚本可以确保锁的获取和释放是原子操作,避免了锁的竞争和错误的释放。Lua 脚本的原子性确保了在多个 Redis 命令之间没有中断,可以确保数据的一致性和操作的安全性。

2024-11-29 09:27:55 476

原创 Thread,ThredLocal,ThreadLocalMap关系

每个Thread都有一个ThreadLocalMap,ThreadLocalMap用来存储ThreadLocal对象和我们想要存储在线程局部变量的值。Thread:每个线程都拥有自己的,该存储当前线程的所有变量的值。:它是一个用于提供线程局部变量的类,每个线程通过获取与该线程相关联的值。它本身并不存储值,而是通过来关联线程和变量值。:它是Thread类中的一个内部类,每个线程都有一个用来存储每个对象及其对应的值。是由Thread类管理的,每个线程都维护一个独立的,用于存储各个的变量值。

2024-11-28 11:16:15 936

原创 redis面试以及八股知识整理

面试以及八股知识整理。

2024-11-17 15:01:25 118

原创 mysql八股及面试知识整理

mysql八股及面试知识整理。

2024-11-17 15:00:50 119

原创 设计模式学习

从高内聚低耦合谈起:设计的目标是提高系统的模块化,使得各个模块独立且功能明确。引出具体原则:每个原则是为了实现高内聚低耦合的目标,减少系统复杂度。举例说明:通过简单的例子帮助面试官理解每个原则在实际中的应用。2.设计模式的理解。

2024-11-15 22:06:58 731

原创 juc学习笔记。

锁消除:JIT即时编译器会对代码进行逃逸分析,如果加锁对象不是共享对象(也就是在锁住的对象在方法内定义,且没有return等方式传到外边,就是没有逃逸),就会进行锁消除,把锁相关的代码给去除掉。3.有交错的(在一个线程使用资源期间,会有另外的线程也来执行,有交错),这时候使用重量级锁,重量级锁有一个锁自旋的概念(也就是尝试获取锁没获取到,会再尝试几次,万一获取到就不用被阻塞了)。如果不满足各自的使用场景,就会发生锁膨胀的情况,比如由偏向锁升级为轻量级锁,或者偏向锁升级为重量级锁。

2024-11-10 22:19:59 259

原创 Tomcat的理解,以及相关面试八股

每个应用可能依赖不同的库版本或者包含同名类,为了确保每个应用的类库相互独立,避免类冲突,Tomcat为每个Web应用提供了一个独立的类加载器实例,即`WebAppClassLoader`。这样,即使不同应用中存在相同的类名,它们也是被各自的应用类加载器加载,互不影响。通过创建新的类加载器来加载更新后的类,旧的类加载器和旧的类可以被垃圾回收,实现类的平滑升级。7. **隔离Tomcat与应用程序的类库**:Tomcat也有自己依赖的类库,不能与应用程序的类库冲突,应该让容器的类库和程序的类库隔离开来。

2024-11-07 21:38:27 282

原创 mysql事物,事务隔离级别,事务隔离级别的具体实现。

inndb引擎默认是在可重复读这一隔离级别下的,依然会存在幻读问题(幻读,并不是说两次读取获取的结果集不同,幻读侧重的方面是某一次的 select 操作得到的结果所表征的数据状态无法支撑后续的业务操作。事物的隔离级别从字面就能看出来是隔离性相关的。一致性是由以上三者共同实现的。

2024-10-23 21:33:15 207

原创 9.26日工作学习记录

是 Java包中的一个线程安全的变体 ArrayList。在多线程环境中,当一个线程在迭代列表的同时,另一个线程可以修改列表(添加或删除元素),能够保证迭代器不会抛出。这是通过创建底层数组的一个快照来实现的,迭代器将只看到快照版本,而不会受到并发修改的影响。迭代器(Iterator)是一种设计模式,它提供了一种遍历集合(如列表、集合)元素的方法,而不需要暴露其底层的结构。在 Java 中,迭代器模式通常通过Iterator接口实现,该接口定义了遍历集合的基本操作,如hasNext()next()和。

2024-09-27 18:16:57 826

原创 mysql

在build_unit表中查询满足条件的记录。之前学mysql不够扎实,看了一条sql语句,看了好久没看懂,所以去查了一下执行顺序。更新 ap.unit_id为子查询返回的id。

2024-09-25 17:24:39 175

原创 苍穹外卖项目面试介绍

本项目(苍穹外卖)是专门为餐饮企业(餐厅、饭店)定制的一款软件产品,包括 后台管理系统 和 小程序端应用 两部分。其中后台管理系统主要提供给餐饮企业内部员工使用,可以对餐厅的分类、菜品、套餐、订单、员工等进行管理维护,对餐厅的各类数据进行统计,同时也可进行来单语音播报功能。小程序端主要提供给消费者使用,可以在线浏览菜品、添加购物车、下单、支付、催单等。

2024-09-23 20:38:38 1301

原创 sping中jdbc的配置问题,被电脑用户名覆盖掉username

/在使用jdbc.properties引入到spring中的时候,用户名不能用username,因为${}会优先去电脑的环境中找用户名,也就是会被自己电脑的用户名覆盖掉。

2024-05-27 22:09:25 131

原创 javaWeb

DOM编程就是将HTML文件里的标签,属性,文本,以对象的形式获取,以操作对象的方式来进行操作!web-inf文件夹里包含classes文件夹里面放的web服务程序的字节码文件,lib里面放的使用到的包,还有一个xml文件,里面放的该web服务程序的配置信息。tomcat常见目录,我们的web应用程序一般是放在tomcat的webapps文件夹里,conf里面的放的配置信息,当我们有些东西需要更改,或者需要添加tomcat的管理员账号密码的时候可以再里面修改。它的优点是可以存储结构更复杂的配置文件。

2024-04-19 20:44:48 387 1

空空如也

空空如也

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

TA关注的人

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