- 博客(127)
- 收藏
- 关注
原创 当实体类中的属性名和表中的字段名不一样 ,怎么办 ?
**推荐方式**:如果使用 ORM 框架,优先使用注解(如 `@Column` 或 `@Result`)或配置文件(如 `resultMap`),因为这样代码更简洁且维护性好。如果你使用的是 MyBatis,可以在 XML 配置文件中通过 `<resultMap>` 来定义属性和字段的映射关系。第 1 种 : 通过在查询的 sql 语句中定义字段名的别名 , 让字段名的别名和实体类的属性。在这个例子中,实体属性 `name` 被映射到数据库中的 `user_name` 字段。
2025-04-07 20:05:41
193
原创 RBAC权限管理
4. **RBAC3(综合模型)**:结合了RBAC1和RBAC2的特性,同时包含角色继承和更严格的访问约束,适用于对安全合规性要求较高、角色关系复杂的大型企业系统。3. **RBAC2(具有约束的RBAC)**:在RBAC的基础上增加了约束条件,如角色的互斥性、基于时间或上下文的约束等,适用于对安全性有较高要求的环境。2. **RBAC1(具有角色层级的RBAC)**:角色之间可以建立层级关系,形成父子角色的结构,子角色继承父角色的所有权限,并且可以拥有特定的附加权限。
2025-04-02 15:51:56
368
原创 项目中为什么使用 spring框架
Spring 是一个模块化的框架,提供了多种功能模块(如 Spring MVC、Spring Boot、Spring Security、Spring Data 等),可以根据项目需求选择性地使用。总结来说,Spring 框架因其灵活性、可扩展性和对现代开发需求的全面支持,成为许多项目的首选。Spring 提供了面向切面编程(AOP)的支持,可以方便地实现横切关注点(如日志记录、性能监控、事务管理等),无需将这些逻辑混入业务代码中,提高了代码的复用性和清晰度。5. **强大的生态系统**
2025-04-01 13:48:00
288
原创 哪些垃圾收集算法
结合复制、标记-清除等算法。- **原理**:从根对象(如全局变量、栈上的变量)开始,标记所有可达的对象,然后清除未被标记的对象(即垃圾)。- **原理**:在标记阶段标记可达对象后,将所有存活对象移动到内存的一端,消除碎片,然后清理剩余空间。- **缺点**:无法处理循环引用(如 A 引用 B,B 引用 A),且维护计数器有额外开销。- **缺点**:会导致内存碎片,且暂停时间较长(Stop-the-World)。- **原理**:为每个对象维护一个引用计数器,当引用数变为 0 时,对象被回收。
2025-03-31 16:57:19
356
原创 什么是 Java虚拟机?为什么Java 被称作是 平台无关的编程语 言
Java虚拟机(JVM,全称Java Virtual Machine)是Java编程语言的核心组成部分之一,它是一个抽象的计算机器,负责在不同的硬件和操作系统上运行Java字节码。- **字节码的中间层**:Java代码首先被编译成与平台无关的字节码,而不是直接生成特定操作系统的机器码。- **JVM的适配性**:只要目标设备上安装了对应版本的JVM,同一个Java程序就可以在Windows、Linux、macOS等不同平台上运行,而无需修改源代码。4. **提供运行时环境**:包括类库、安全管理等支持。
2025-03-28 15:45:30
148
原创 springBoot中雪花算术法
2. **41 位时间戳**:表示毫秒级时间戳,通常是当前时间与某个起始时间(epoch)的差值,可支持约 69 年的时间范围。- **MyBatis-Plus**:如果你的项目使用 MyBatis-Plus,它也提供了雪花算法的支持。2. **机器 ID 分配**:在分布式环境中,确保每个节点的 `workerId` 唯一。4. **12 位序列号**:每毫秒内的自增序列号,支持每毫秒生成 4096 个 ID。3. **10 位机器 ID**:表示机器或进程的标识,支持 1024 个节点。
2025-03-26 18:39:51
1057
1
原创 说说堆和栈的区别
**堆**:堆是一个动态内存分配区域,不遵循严格的访问顺序。- **栈**:栈的大小通常较小,由操作系统或编译器预先设定(例如几 MB),超出限制会导致栈溢出(Stack Overflow)。- **堆**:堆的内存是非连续的,分配需要查找空闲块,访问时可能涉及指针解引用,速度稍慢。- **堆**:堆的大小受可用系统内存限制,通常远大于栈,适合存储大数据量的对象。- **栈**:栈上的变量生命周期与函数调用绑定,函数结束时自动销毁。- **栈**:由于栈的内存是连续的,且分配方式简单,访问速度更快。
2025-03-25 15:50:18
279
原创 简述一下 的内存模型
结合之前的上下文,我们一直在讨论 MySQL 主从复制的问题,我猜测你可能想问 **MySQL 的内存模型**。MySQL 的内存模型主要分为**全局内存**和**会话内存**两部分,涉及服务器级别的共享资源和每个客户端连接的私有资源。- **动态分配**:全局内存(如 Buffer Pool)在启动时分配,可动态调整;- **主库**:二进制日志缓存(`binlog_cache_size`)存储待发送的事件。#### 2. **会话内存(Thread-Specific Memory)**
2025-03-24 20:35:36
375
原创 VMware虚拟机配置Linux网络
编辑网卡配置文件:`vi ifcfg-ens33`,将`BOOTPROTO`设为`static`,设置`IPADDR`为与VMnet1相同网段的不同IP,`NETMASK`、`GATEWAY`和`DNS`与VMnet1相同。- 编辑网卡配置文件:`vi ifcfg-ens33`,将`BOOTPROTO`设为`static`,设置`IPADDR`为与NAT设置相同网段的不同IP,`NETMASK`、`GATEWAY`和`DNS`与NAT设置相同。- 修改网络配置文件后,若网络未生效,可尝试重启虚拟机。
2025-03-22 08:34:08
415
原创 乐观锁的原理
**版本号机制**:在数据库表中添加一个版本号字段,每次数据被修改时,版本号会递增。例如,TcaplusDB在内部为每条数据维护了一个版本号,用户在提交更新请求时,可以指定期望的数据版本号,只有数据的当前版本号与用户期望的版本号一致时,才会执行更新操作。- **时间戳机制**:使用时间戳来标记数据的更新时间,类似于版本号机制,通过比较时间戳来判断数据是否被其他事务修改。- **高并发性能**:乐观锁不加锁,避免了线程阻塞和死锁问题,适用于读多写少的场景,能有效提高并发性能。它的基本思路是在数据的每。
2025-03-21 15:49:24
371
原创 mysql读写分离
**基于代理的读写分离**:使用代理服务器(如ProxySQL)来接收客户端的连接请求,并根据请求类型将请求路由到相应的主库或从库。3. **在应用程序中实现读写分离**:通过判断方法的读写类型,读方法使用从数据库连接池,写方法使用主数据库连接池。- **基于应用的读写分离**:应用程序自身实现读写分离逻辑,直接将读请求发送到从数据库,写请求发送到主数据库。- **主库配置**:配置主库的唯一服务器ID,并启用二进制日志。- **从库配置**:配置从库的唯一服务器ID,并设置复制用户。
2025-03-19 09:31:17
403
原创 Mapper 编写有哪几种方式
1. 在 sqlMapConfig.xml 中配置 mapper.xml 的位置 , 如果 mapper.xml 和 mappre 接口的。1、 mapper.xml 文件编写:mapper.xml 中的 namespace 为 mapper 接口的地址;2、 mapper 接口中的方法名和 mapper.xml 中所定义的 statement 的 id 保持一致。<mapper resource="mapper.xml 文件的地址" / >mapper 接口实现类、 mapper.xml 文件。
2025-03-18 14:42:01
404
原创 为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里
键 id,去再另外一个表里面查询数据,也是通过配置 collection, 但另外一个表的查询通过 select 节。嵌套查询是先查一个表, 根据这个表里面的结果的外。嵌套查询是先查一个表,根据这个表里面的结果的外键 id ,去在另外一个表里面查询数据, 也是通。联合查询是几个表联合查询,只查询一次,通过在 resultMap 里面的。过 association 配置,但另外一个表的查询通过 select 属性配置。有联合查询和嵌套查询,联合查询是几个表联合查询,只查询一次, 通过在。
2025-03-17 18:51:52
248
原创 get提交几个步骤
请求中包含请求行、请求头,但通常没有请求体。服务器接收到 GET 请求后,根据请求的 URL 和查询参数处理请求,并返回相应的资源。客户端发送 HTTP GET 请求,请求行中包含目标资源的 URL。- GET 请求是幂等的,即多次请求相同资源的结果相同。3. **发送 HTTP GET 请求**5. **返回 HTTP 响应**2. **建立 TCP 连接**7. **关闭 TCP 连接**1. **客户端发起请求**4. **服务器处理请求**6. **客户端接收响应**
2025-03-15 11:51:52
195
原创 vue里面使用什么组件和后端接口通讯
**Axios**:功能强大,适合大多数 HTTP 请求场景。### 1. **使用 Axios 进行 HTTP 请求**### 3. **使用 WebSocket 实现实时通信**- **Fetch API**:原生支持,适合轻量级场景。### 5. **使用 Vue Resource**- **WebSocket**:适用于实时通信。- **GraphQL**:适用于复杂数据查询。### 2. **使用 Fetch API**### 4. **使用 GraphQL**// 发送 POST 请求。
2025-03-14 13:58:20
367
原创 rest风格
REST 风格的接口设计强调资源的统一接口、无状态交互和超媒体作为应用状态的引擎(HATEOAS)。- **超媒体作为应用状态的引擎(HATEOAS)**:客户端通过超链接动态发现资源,而不是硬编码资源路径。- **资源的表述**:通过 HTTP 方法(如 GET、POST、PUT、DELETE 等)操作资源。3. **互操作性**:基于标准的 HTTP 协议,RESTful API 可以与多种客户端和服务器进行交互。2. **可扩展性**:通过分层系统和无状态交互,RESTful 系统易于扩展。
2025-03-13 11:22:02
400
原创 ajax组件是什么
**Axios**:功能强大,适合大多数 HTTP 请求场景。### 1. **使用 Axios 进行 HTTP 请求**### 3. **使用 WebSocket 实现实时通信**- **Fetch API**:原生支持,适合轻量级场景。### 5. **使用 Vue Resource**- **WebSocket**:适用于实时通信。- **GraphQL**:适用于复杂数据查询。### 2. **使用 Fetch API**### 4. **使用 GraphQL**// 发送 POST 请求。
2025-03-12 20:40:09
523
原创 简述你对 Spring MVC 的理解
采用了 MVC 架构模式的思想,通过把 Model,View,Controller 分离,将 Web 层进行职责解耦,ViewResolvers 的主要作用是将 String 类型的视图名和 Locale 解析为 View 类型的视图。从而把复杂的 Web 应用分成逻辑清晰的几个组件,在 Spring MVC 中有 9 大重要的组件。对应的初始化方法是 initMultipartResolver(context),用于处理上传请求。HandlerAdapters 要做的事情就是如何让固定的。
2025-03-11 14:18:40
476
原创 springmvc想要一个模块使用相同的url的前缀,怎么处理
如果需要进一步限制请求方法(如GET、POST等),可以在`@RequestMapping`注解中使用`method`属性,或者直接使用`@GetMapping`、`@PostMapping`等更具体的注解。- **灵活组合**:根据实际需求,可以结合`method`、`produces`、`consumes`、`params`和`headers`等属性进一步细化请求的处理逻辑。### 方法六:使用`@RequestMapping`注解的`params`或`headers`属性(可选)
2025-03-10 13:45:49
417
原创 虚拟机网络设置最佳实践
HWADDR=00:50:56:25:a3:22 #网卡MAC地址,要与ip addr命令查看到对应网卡ens33信息中link/ether 00:50:56:25:a3:22一致。命令查看到的 ens33 信息中 link/ether xx:xx:xx:xx:xx:xx。在打开的对话框中编辑,连接名称自己可以识别即可,如:VM-192.168.2.128。关注如下配置文件中有写注释的配置行,修改后的 ifcfg-ens33 文件如下(# 按 : 键进入命令模式,按 w 保存,按 q 退出,按!
2025-03-08 08:41:56
1024
原创 Java是值传递还是引用传递
对于引用数据类型(如对象、数组等),Java传递的是对象引用的值(即内存地址)。方法内部对引用的修改(如调用对象的方法)会影响原始对象,但对引用本身的修改(如重新赋值)不会影响原始引用。- 对于引用数据类型,传递的是引用的副本(即内存地址的副本),因此可以通过引用修改对象的内容,但无法改变原始引用指向的对象。在Java中,参数传递的机制是**值传递**,但具体表现会因传递的参数类型(基本数据类型或引用数据类型)而有所不同。### 2. **引用数据类型(值传递,但传递的是引用的值)**
2025-03-07 15:22:58
383
原创 MyBatis能执行一对一.一对多的关联查询吗?都有哪些实现方式?,以及他们之间的区别
使用 `<association>` 标签在 `resultMap` 中定义关联关系。- 使用 `<collection>` 标签在 `resultMap` 中定义关联关系。- 一对一:关联对象是一个单个对象(如 `User` 关联一个 `Address`)。- 使用 `<association>` 标签的 `select` 属性指定子查询。- 使用 `<collection>` 标签的 `select` 属性指定子查询。- 一对多:关联对象是一个集合(如 `Order` 关联多个 `Item`)。
2025-03-06 08:51:42
258
原创 能简述一下动态 SQL 的执行原理吗
当 MyBatis 启动时,会加载并解析映射文件(`Mapper.xml`),提取其中的 SQL 语句和动态标签(如 `<if>`、`<foreach>` 等)。2. **遍历 AST**:动态 SQL 处理器遍历抽象语法树,根据每个节点的类型(如 `<if>`、`<foreach>`)和条件判断,动态生成 SQL 片段。因为 `age` 为 `null`,所以跳过该片段。- **运行时构建**:在执行 SQL 时,根据传入的参数动态遍历 AST,生成 SQL 片段并拼接成完整的 SQL 语句。
2025-03-05 12:10:21
1006
原创 Spring 中哪些情况下,不能解决循环依赖问题
如果 Bean 的依赖注入方式中,其中一个 Bean 使用构造器注入,而另一个 Bean 使用 Setter 注入,且构造器注入的 Bean 依赖于 Setter 注入的 Bean,则可能导致循环依赖无法解决。- **使用 `ApplicationContextAware` 或 `ObjectProvider`**:通过手动获取 Bean 来避免构造器注入的循环依赖。- **调整依赖关系**:重新设计 Bean 的依赖关系,避免直接的循环依赖。### 2. **构造器注入的循环依赖**
2025-03-04 13:50:47
176
原创 哪种情况使用循环依赖
2. **完成 A 的初始化**:完成 A 的初始化后,将 A 放入一级缓存 `singletonObjects`,并从二级和三级缓存中移除。2. **将 A 的工厂对象放入三级缓存**:将 A 的 `ObjectFactory` 放入 `singletonFactories`。7. **将 B 放入一级缓存**:完成 B 的初始化后,将 B 放入 `singletonObjects`,并从二级和三级缓存中移除。6. **将半成品 A 注入到 B**:完成 B 的属性注入,继续完成 B 的初始化。
2025-03-03 10:06:29
398
原创 三级缓存在Spring中具体是如何工作的
2. **完成 A 的初始化**:完成 A 的初始化后,将 A 放入一级缓存 `singletonObjects`,并从二级和三级缓存中移除。2. **将 A 的工厂对象放入三级缓存**:将 A 的 `ObjectFactory` 放入 `singletonFactories`。7. **将 B 放入一级缓存**:完成 B 的初始化后,将 B 放入 `singletonObjects`,并从二级和三级缓存中移除。6. **将半成品 A 注入到 B**:完成 B 的属性注入,继续完成 B 的初始化。
2025-03-01 17:02:38
358
原创 Spring 为何需要三级缓存解决循环依赖,而不是二级缓存
3. **三级缓存(`singletonFactories`)**:存放 Bean 的工厂对象,用于动态生成半成品 Bean 或代理对象。通过三级缓存,Spring 可以在 Bean 初始化之前通过工厂对象动态生成代理对象,并将其放入二级缓存,从而确保注入的始终是正确的对象。- 发现 B 依赖 A,从三级缓存中获取 A 的工厂对象,生成半成品 A,并放入二级缓存。1. **无法支持 AOP 代理**:注入的将是原始对象,而不是代理对象。- 从一级缓存中获取 B,注入到 A 中,完成 A 的初始化。
2025-02-28 15:09:47
312
原创 Spring Bean 的生命周期全过程
### **(1) 实现 `BeanPostProcessor` 接口的 `postProcessBeforeInitialization` 方法**#### **(3) 实现 `BeanPostProcessor` 接口的 `postProcessAfterInitialization` 方法**#### **(1) 实现 `BeanPostProcessor` 接口的 `postProcessBeforeDestruction` 方法**这是 Bean 生命周期的起点。
2025-02-27 08:38:12
628
原创 说说 Spring MVC 的执行流程
例如,视图名称为 `index`,前缀为 `/WEB-INF/views/`,后缀为 `.jsp`,则解析为 `/WEB-INF/views/index.jsp`。- **基于 XML 配置**:在 `dispatcher-servlet.xml` 中定义 `<bean>` 和 `<bean>` 的映射规则。- 根据处理器的类型(如注解方式的 `@Controller` 或接口方式的 `Controller`),找到合适的适配器。最终,渲染后的视图内容被发送回客户端,用户可以看到页面或接收到响应数据。
2025-02-26 15:09:35
396
原创 死锁发生的原因和怎样避免
例如,系统有10个单位的资源,进程A的最大需求是8个单位,进程B的最大需求是7个单位。如果进程A再申请2个单位,系统可以满足其申请,因为此时进程A已经获得了足够的资源来完成任务,并且系统还剩下2个单位的资源,可以满足进程B后续的申请,从而保证系统处于安全状态。比如,当系统发现某个进程长时间占用设备资源而没有释放,且其他进程急需该资源时,可以暂时剥夺该进程的资源使用权,将其分配给其他进程。例如,对于某些资源,可以通过增加资源的数量或者采用共享的方式,使多个进程可以同时使用资源,从而避免因资源互斥而产生死锁。
2025-02-25 19:25:27
402
原创 spring的aop原理
**通知(Advice)**:在连接点上执行的代码,例如在方法调用前后执行的逻辑。2. **解析通知和切入点**:Spring会解析切面类中的通知(如`@Before`、`@After`等)和切入点表达式(如`execution(* com.example.service.*.*(..))`),并构建通知和切入点的映射关系。3. **执行通知逻辑**:在`invoke`方法中,Spring会根据配置的通知类型(如`@Before`、`@After`等),在目标方法调用前后插入相应的逻辑。
2025-02-24 15:08:50
604
原创 事务传播行为有哪些
事务传播行为的选择取决于业务需求和方法之间的调用关系。以下是一些选择建议:如果方法需要独立运行,使用。如果方法可以运行在事务上下文中,也可以独立运行,使用。如果方法必须运行在事务上下文中,使用。如果方法需要嵌套事务支持,使用。在实际开发中,是最常用的事务传播行为,因为它提供了足够的灵活性和事务一致性。
2025-02-22 11:08:57
357
原创 Spring IOC
(singleton)的 Bean 来说 ,BeanFactory 会缓存 Bean 实例,所以第二次使用。Spring 使用父子容器实 现了很多功能, 比如在 Spring MVC 中, 展现层 Bean 位。beanName),该方法从容器中 返回特定名称的 Bean ,BeanFactory 的功能通过其。一个用 HashMap 实现的缓存器, 单实例的 Bean 以 beanName 为键保存在这个。份相应的 Bean 配 置注册表, 然后根据这张注册表实例化 Bean,装配好 Bean 之。
2025-02-20 11:27:19
345
原创 Spring 中事务的传播行为有哪些
1. REQUIRED:默认的 Spring 事务传播级别,如果当前存在事务,则加入这个事务,如果不存在事。如果当前没有事务,则新建一个事务,5. NOT_SUPPORTED:表示以非事务的方式来运行,如果当前存在事务,则把当前事务挂起。就拿事务传播行为来说,它解决的核心问题是,多个声明了事务的方法相互调用的时候存在事务嵌套问。好了,今天的分享就到这里,在面试的时候大家还有遇到哪些比较难的问题,欢迎在评论区留言。4. SUPPORTS:表示支持当前事务,如果当前不存在事务,以非事务的方式执行。
2025-02-19 14:16:25
268
原创 spring集成mybatis的过程
依赖注入:通过将数据源和 MyBatis 配置注入到 Spring 容器中。Mapper 扫描:使用自动扫描 Mapper 接口并生成代理 Bean。事务管理:使用 Spring 的配合注解管理事务。完成上述步骤后,Spring 和 MyBatis 就成功集成了!
2025-02-17 13:46:39
338
原创 spring的核心配置
Spring的核心配置主要围绕依赖注入、配置方式(XML、注解、Spring Boot自动配置、Java配置类)、AOP、事务管理等展开。通过合理配置,可以构建灵活、可维护的企业级应用。
2025-02-15 09:03:06
704
原创 什么是SpringMVC
SpringMVC是一个功能强大的Web框架,它基于MVC设计模式,提供了灵活的架构和丰富的功能,方便开发人员构建Web应用程序。.YEAR fetchData狂欢进行中,新增18项用户研究数据,快来参与_empresa。
2025-02-14 14:44:57
567
原创 Vue中使用什么组件存储用户数据
全局共享数据:使用 Vuex 或 Pinia。持久化存储:使用 localStorage 或 sessionStorage。局部数据:使用组件的data或props。会话数据:使用 Cookie。页面间传递数据:使用 Vue Router 的params或query。根据具体需求选择合适的存储方式,可以提高开发效率和应用性能。
2025-02-13 08:40:30
401
原创 vue2和vue3储存组件
Vue 3 在组件的定义和使用上继承了 Vue 2 的方式,但引入了 Composition API 和性能优化等新特性,使得组件的逻辑更加灵活和高效。无论是 Vue 2 还是 Vue 3,组件的基本概念和使用方式都比较相似,但在实现细节和性能优化方面,Vue 3 有了一些改进。Vue 3 的组件定义方式与 Vue 2 类似,但引入了一些新的特性,如 Composition API。在 Vue 3 中,组件的使用方式与 Vue 2 完全一致,仍然通过标签名直接使用。在 Vue 2 中,组件可以通过。
2025-02-12 15:44:19
456
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人