- 博客(61)
- 收藏
- 关注
原创 框架部分面试题学习
通过这个URL路劲找到对应的映射注解标记的控制器方法,控制器去调用service层的方法执行业务逻辑。观察者模式:定义对象键一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知被制动更新,如Spring中listener的实现–ApplicationListener。Mybatis实现的核心,比如MapperProxy、ConnectionLogger,用的jdk的动态代理;注解来控制自动配置类的加载顺序,自动配置类是相互关联的。这个注解是一个整数,数字越小,优先级越高。
2025-01-10 20:50:04
881
原创 springboot集成 redis
Redis本身提供了一下一种序列化的方式:GenericToStringSerializer: 可以将任何对象泛化为字符串并序列化Jackson2JsonRedisSerializer: 跟JacksonJsonRedisSerializer实际上是一样的JacksonJsonRedisSerializer: 序列化object对象为json字符串JdkSerializationRedisSerializer: 序列化java对象StringRedisSerializer: 简单的字符串序列化。
2025-01-03 20:17:21
1115
原创 mysql 锁
1、锁的分类锁是计算机用以协调多个进程间并发访问同一共享资源的一种机制。MySql中为了保证数据访问的一致性与有效性等功能,实现了锁机制,MySql 中的锁是在服务器层或者存储引擎层实现的。在实际的数据库系统中,每时每刻都在发生锁定,当某个用户在修改一部分数据时,MySql 会通过锁定防止其他用户读取同一数据。1、锁的分类。
2024-12-20 19:02:36
1067
原创 Mybatis -plus -jion的复习
- 普通 Wrapper 和 Lambda Wrapper 生成的 SQL 相同queryWrapper.eq("name", "张三");
2024-12-13 20:10:07
1117
原创 链式设计及设计模式的应用
定义和概念结构和组成部分对象自身方法返回值:核心特点是对象的方法返回对象本身()。例如,在一个简单的链式调用的JavaScript对象中,代码可能如下:这里的和方法在执行操作后都返回,使得可以连续调用这些方法,如。链式调用顺序:方法的调用顺序决定了操作的执行顺序。继续上面的例子,先调用方法将增加2,然后调用方法将乘以3。优点缺点应用场景
2024-12-06 18:49:28
1066
原创 mybatis 实现关联查询
比如user表和role表有关联关系,有这样一条语句:查询uesr的同时将user的某一列数据作为参数一并查询role表符合条件的数据,限范围模块及模块下的菜单,可使用collection将模块映射到模块list中,将菜单列表映射到模块对象的。菜单list属性中,这样的作的目的也是方便对查询结果集进行遍历查询。订单与订单详情是一对多关系,订单详情与商品是一对一关系,反之商品与订单详情是一对多关系,订。场合:常见一些明细记录的展示,比如用户购买商品明细,将关联查询信息全部展示在页面时,此时可。
2024-12-04 21:58:52
947
原创 SpringBoot -拦截器Interceptor、过滤器 Filter 及设置
DelegatingFilterProxyRegistrationBean 对象代理过滤器。它允许过滤器成为 Spring 的 Bean,从而可以利用 Spring 的各种功能,注解,这样 Spring Boot 才能扫描到过滤器并自动进行配置。设置过滤路径 addUrlPatterns(“/*”);设置过滤器名 setName(“myFilter”);来注册它,使其能够与 Spring 应用上下文集成。1**.创建一个过滤器:MyFilter**有多个过滤器需要集成和管理。
2024-12-02 21:49:54
2580
1
原创 Mybatis 复习
parameterType:指定输入参数类型,MyBatis通过OGNL从输入对象中获取参数值设置在Sql中。resultType:指定输出结果类型,MyBatis将Sql查询结果的一行记录数据映射为resultType指定类型的 对象。
2024-11-29 21:35:03
925
原创 Mybatis
parameterType:指定输入参数类型,MyBatis通过OGNL从输入对象中获取参数值设置在Sql中。resultType:指定输出结果类型,MyBatis将Sql查询结果的一行记录数据映射为resultType指定类型的 对象。
2024-11-28 21:19:37
922
原创 框架学习07 - SpringMVC 其他功能实现
在Restful ⻛格中,⽤户请求的 url 使⽤同⼀个 url,⽤请求⽅式:get,post,delete,put。在 JavaEE 项⽬的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的、不可预知的异常需要处理。使⽤实现 HandlerExceptionResolver 接⼝的异常处理器进⾏异常处理,具有集成简单、有良好的扩展性、对已有代码没有⼊侵性等优点,同时,在异常处理时能获取导致出现异常的对象,有利于提供更详细的异常处理信息。
2024-11-27 21:38:01
1399
转载 SpringBoot - CORS 进行跨域资源共享
两个URL具有相同的协议(HTTPS)、相同的域名(www.example.com)和相同的端口(默认HTTP/HTTPS端口,即443),因此它们被认为是同源的,这个请求将被允许执行。同源策略:旨在防止恶意网站通过JavaScript读取其他站点的敏感信息,例如cookies或其他存储在本地的数据。对于需要进行跨域通信的应用场景,可以通过CORS、JSONP等技术实现安全可控的数据交换。非同源限制的三种行为:(1) Cookie、LocalStorage 和 IndexDB 无法读取。
2024-11-25 19:32:08
708
原创 框架学习07 - SpringMVC 地址映射
通过⽅法级别的注解可以细化映射,能够将⼀个特定的请求路径映射到某个具体的⽅法上,将 url 和类的⽅法绑定。Set 和 List 类似,也需要绑定在对象上,⽽不能直接写在 Controller ⽅法的参数中。默认没有设置请求⽅式,在HTTP 请求中最常⽤的请求⽅法是 GET、POST,还有其他的⼀些⽅法, 如:DELET、PUT、HEAD 等。Map最为灵活,它也需要绑定在对象上,⽽不能直接写在Controller⽅法的参数中。客户端请求的参数到控制器功能处理⽅法上的参数的绑定,对于参数绑定⾮常灵活。
2024-11-20 20:34:25
966
原创 框架学习06 - Spring MVC的简单实现
模型-视图-控制器(MVC)是⼀个众所周知的以设计界⾯应⽤程序为基础的设计思想。它主要通过分离模型、视图及控制器在应⽤程序中的⻆⾊将业务逻辑从界⾯中解耦。通常,模型负责封装应⽤程序数据在视图层展示。视图仅仅只是展示这些数据,不包含任何业务逻辑。控制器负责接收来⾃⽤户的请求,并调⽤后台服务(service或者dao)来处理业务逻辑。处理后,后台业务层可能会返回了⼀些数据在视图层展示。控制器收集这些数据及准备模型在视图层展示。MVC模式的核⼼想是将业务逻辑从界⾯中分离出来,允许它们单独改变⽽不会相互影响。
2024-11-15 20:56:43
1057
原创 框架学习05 - Spring AOP
Aspect Oriented Programing ⾯向切⾯编程,相⽐较 oop ⾯向对象编程来说,Aop关注的不再是程序代码中某个类,某些⽅法,⽽aop考虑的更多的是⼀种⾯到⾯的切⼊,即层与层之间的⼀种切⼊,所以称之为切⾯。联想⼤家吃的汉堡(中间夹⾁)。AOP的功能。AOP主要应⽤于⽇志记录,性能统计,安全控制,事务处理等⽅⾯,实现公共功能性的重复使⽤。AOP的特点。降低模块与模块之间的耦合度,提⾼业务代码的聚合度。(⾼内聚低耦合)提⾼了代码的复⽤性。提⾼系统的扩展性。
2024-11-14 20:12:02
751
原创 框架学习04-Spring 事务
Spring 事务管理器的接⼝是org.springframework.transaction.PlatformTransactionManager,通过这个接⼝,Spring 为各个平台如 JDBC、Hibernate 等都提供了对应的事务管理器,但是具体的实现就是各个平台⾃⼰的事情了。
2024-11-13 21:25:34
800
原创 框架学习03-Spring 七大核心模块
用于对象到XML的映射(Object - XML Mapping),支持多种XML转换技术,如JAXB(Java Architecture for XML Binding)、Castor等。:提供了基础的Web开发功能,包括构建Web应用程序的基本组件,如Servlet上下文、HTTP请求和响应处理等。:提供了框架的基本构建块,包括依赖注入(Dependency Injection,DI)和控制反转(Inversion of Control,IOC)功能。例如,当使用JPA时,Spring可以管理。
2024-11-12 21:24:02
998
原创 框架学习01-Spring
例如,在一个简单的Spring应用中,我们可以通过XML配置文件或者Java注解来告诉Bean Factory如何创建一个用户服务(UserService)对象。:它是Bean Factory的扩展,提供了更多高级的功能,如国际化支持、事件发布和订阅等。Spring是一个开源的轻量级Java开发框架,它的主要目的是为了简化企业级应用程序的开发。它提供了一系列的功能,包括控制反转(IOC)、注入(DI)、面向切面编程(AOP)、数据访问抽象、事务管理等诸多方面。
2024-11-05 19:22:06
1015
原创 Mysql 索引
这是因为索引的数据结构(如B- Tree索引)可以有效地处理这种范围条件,通过遍历索引树的分支来找到符合范围的记录。这种后缀或包含模糊匹配的情况,索引通常无法有效使用,因为索引是按照特定顺序存储数据的,无法从后往前或在中间进行快速匹配。列有索引,数据库可以利用索引结构快速将相同部门的员工记录分组,并计算每个部门的员工数量,减少了分组操作的计算量。列有合适的索引,数据库可以直接按照索引顺序返回数据,而无需在内存中对结果进行排序,大大提高了查询性能。子句时,若排序的列有索引,且索引的顺序与。
2024-11-01 20:14:27
1208
原创 简单认识redis - 12 redis锁
在斜体样式**redis中,不同的问题有不一样的解决办法,那么锁也有不同的锁来解决不一样的问题,下面将举出几个常用的redis锁。
2024-10-29 19:21:12
2120
原创 Mysql 数据库架构
1. 概念数据库架构是指数据库的总体设计结构,它描述了数据库的组织方式、数据存储方式、数据访问方式以及各个组件之间的关系。一个良好的数据库架构能够有效地存储和管理数据,支持高效的数据访问和操作,并且能够适应业务需求的变化。2. 分层架构表现层(用户接口层)功能:这是用户与数据库系统交互的界面,负责接收用户的请求并将结果呈现给用户。在不同的应用场景中,表现层可以是命令行界面、图形用户界面(GUI)或基于Web的用户界面。示例:在一个Web应用中,用户通过浏览器访问网页,网页上的表单、按钮等元
2024-10-25 19:19:10
1144
原创 MySQL存储引擎
MySQL有多种存储引擎,以下是一些常见的存储引擎及其特点:事务支持:行级锁:外键约束:存储结构:性能特点:不支持事务:表级锁:存储结构:存储方式:不支持持久化:表结构:存储格式:适用场景:不支持索引和事务:
2024-10-22 19:59:52
703
原创 简单认识Maven 3-认识pop.Xml配置文件中的代码
文件是 Maven 项目的核心配置文件,它涵盖了项目的基本信息、依赖管理、构建配置等多个方面,对于项目的构建和管理起着至关重要的作用。
2024-10-21 19:56:21
1053
原创 Mysql的读写分离和主、从库
一、读写分离的概念读写分离即将数据库的读操作和写操作分离到不同的数据库服务器上,以减轻单个数据库服务器的负载,提高系统的整体性能和可用性。一般情况下,读操作的频率远远高于写操作,通过将读操作分配到多个从数据库服务器上,可以有效地提高系统的并发处理能力。二、实现读写分离的常见方式1. 基于程序代码实现开发人员在应用程序中通过代码逻辑来区分读操作和写操作,并将读操作发送到从数据库服务器,写操作发送到主数据库服务器。
2024-10-17 19:46:07
1275
原创 简单认识redis - 10 布隆过滤器
布隆过滤器(Bloom Filter)是一种空间效率很高的随机数据结构,用于判断一个元素是否可能在一个集合中。
2024-10-16 19:17:34
638
原创 简单认识Maven 2-Maven坐标
例如,对于一个名为 “myproject” 的项目,由 “com.mycompany” 组织开发,版本为 “2.5.0”,其 Maven坐标就是 “com.mycompany:myproject:2.5.0”。在 Maven的项目配置文件(pom.xml)中,通过指定依赖项的坐标,可以准确地引入所需的库或项目,确保项目的构建和运行过程中能够正确地获取和使用相应的资源。例如,“1.0.0” 表示一个稳定的正式版本,“1.0.0-SNAPSHOT” 表示开发过程中的快照版本,通常不稳定,可能随时发生变化。
2024-10-15 19:56:22
512
原创 简单认识Maven 1
如果项目 A 依赖项目 B,项目 B 依赖项目 C,Maven 会根据依赖的范围等因素来确定是否将项目 C 作为项目 A 的依赖项。例如,如果 B 对 C 的依赖范围是compile,且 A 对 B 的依赖范围也是compile,那么 Maven 会自动将 C 作为 A 的依赖项(传递依赖)。本地仓库用于存储从远程仓库下载的依赖项,当构建项目时,Maven 首先会在本地仓库中查找所需的依赖项。可以在pom.xml中配置项目的构建相关信息,如构建的源文件目录、目标文件目录、插件配置等。
2024-10-14 19:51:53
847
1
原创 简单认识redis - 9 redis持久机制
在代码中配置(以 Java 为例,使用 Jedis 库) 如果在 Java 程序中使用 Jedis 与 Redis 交互,虽然不能直接在 Jedis 中配置 RDB 持久化的核心参数(如save策略等,这些是 Redis 服务器端的配置),但可以通过 Jedis 触发SAVE或BGSAVE操作。可能影响性能:在执行BGSAVE操作时,虽然不会阻塞 Redis 的主进程,但会使用额外的内存和 CPU 资源来进行数据的快照操作,在一定程度上可能影响 Redis 的性能。RDB 文件是一个经过压缩的二进制文件。
2024-10-12 19:03:22
776
原创 简单认识redis - 8 redis淘汰和过期策略
Redis 的过期和淘汰策略可以帮助有效地管理内存,确保在有限的内存资源下,既能满足数据的存储需求,又能保证系统的正常运行。
2024-10-11 18:56:25
648
原创 简单认识redis - 7redis实现分布式
假设我们有 3 个 Redis 节点,节点 1(IP: 192.168.1.101)、节点 2(IP: 192.168.1.102)和节点 3(IP: 192.168.1.103)。对于要存储的键 “user:123”,首先计算其哈希值(假设使用 CRC16),得到哈希值为 12345。在实际应用中,需要构建一个中间层来处理数据分片逻辑,使得应用程序不需要关心数据具体存储在哪个节点,这个中间层负责根据分片规则将操作转发到正确的 Redis 节点。
2024-10-10 19:54:16
1052
原创 简单认识redis - 6 redis 存储速度快的原因
并且,Redis自身的事件处理模型将epoll中的连接、读写、关闭都转换为事件,不在网络I/O上浪费过多的时间。3.惰性空间释放:SDS 缩短时,不是回收多余的内存空间,而是free记录下多余的空间,后续有变更,直接使用free中记录的空间,减少分配。2.空间预分配:字符串修改越频繁的话,内存分配越频繁,就会消耗性能,而SDS修改和空间扩充,会额外分配未使用的空间,减少性能损耗。:当有序集合的元素个数小于128个,每个元素的值小于64字节时,使用ziplist编码,否则使用skiplist(跳跃表)编码。
2024-10-09 17:02:39
587
原创 简单认识redis -4 缓存的 穿透,雪崩,击穿
缓存穿透 定义 缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,通常会导致大量请求直接打到数据库层,给数据库带来很大压力。 产生原因 恶意攻击:例如,攻击者故意构造大量数据库中不存在的键进行查询。 业务逻辑问题:业务代码在查询时可能会产生一些不合理的查询条件,导致查询一些不存在的数据。 解决方案 缓存空对象:当从数据库查询为空时,将空对象缓存起来,设置一个较短的过期时间(例如,几分钟)。这样,下次同样的查询就会直接在缓存中命中空结果,而不会打到
2024-10-07 14:00:00
796
原创 简单认识 redis -3 -其他命令
·一.Redis HyperLogLog Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。1.1.什么是基数? 比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元
2024-10-06 16:00:00
686
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人