首页 > 其他分享 >日常学习(10.30)

日常学习(10.30)

时间:2024-10-31 10:16:49浏览次数:5  
标签:缓存 10.30 Spring 学习 sqlSession 日常 IO AOP IOC

IOC与AOP

        在学习Spring时,初次接触到IOC与AOP,他们是Spring框架的核心技术。

        

        IOC(控制反转)是一种设计思想,用于实现对象之间的解耦和依赖管理。它通过将对象的创建和依赖关系的管理从应用代码中抽离出来,交给外部容器来处理,从而降低了组件之间的耦合度,提高了系统的灵活性和可维护性。

        简单的来说,IOC就是将创建对象的功能赋予给了容器,不再由我们手动创建。以下是使用方法:

定义Bean:通过在类上添加@Component注解,可以将类声明为一个Spring管理的Bean。

注入依赖:通过在需要注入的属性上添加@Autowired注解,Spring Boot会自动将依赖注入。

AOP:Aspect Oriented Programming,的简写,译为“面向切面编程"。AOP 用来封装多个类的公共行为,将那些与业务无关,却为业务模块所共同调用的逻辑封装起来,减少系统的重复代码,降低模块间的耦合度。另外,AOP 还解决一些系统层面上的问题,比如日志、事务、权限等。

 IO流

IO流是一种用于处理输入和输出的机制,它允许程序与外部世界(例如用户输入、文件、网络等)进行交互。

        IO流使用场景:

  1. 文件读写:将文件中的数据读取到程序内存,或者将程序数据保存到文件中。

  2. 网络通信:通过字节流或字符流来进行网络数据的传输,比如上传文件或接收服务器响应。

  3. 数据流处理:处理大数据文件时,利用IO流可以按需读取或写入数据,避免内存占用过大

    //字符流
    Reader/Writer
    FileReader/FileWriter
    BufferedReader/BufferedWriter
    InputStreamReader/OutputStreamWriter
    //字节流
    InputStream/OutputStream
    FileInputStream /FileOutputStream
    BufferedInputStream /BufferedOutputStream
    ObjectInputStream(反序列化)/ObjectOutputStream(序列化
    

使用IO流:

  1. 创建流:需要选择适合的流类型并实例化它。Java的IO包提供了各种流类,可以根据需要选择对应的类。

  2. 使用流:主要涉及到读取和写入数据。这两个操作通常通过流的read()和write()方法来完成。

  3. 处理异常:在使用IO流时,需要处理可能出现的异常。例如,文件可能不存在,网络连接可能失败,数据可能读写错误等。这些异常通常可以通过try-catch语句来捕获并处理。

  4. 关闭流:在完成IO操作后,需要关闭流以释放系统资源。可以通过流的close()方法来完成。

缓存  一级缓存  二级缓存

缓存是将程序经常访问的数据存储在内存中的一种机制,以此来提高数据的访问速度(查询效率),节约成本。

默认开启的是一级缓存(他是最快的缓存类型),它将数据缓存在sqlSession中,只供同一个sqlSession 使用。在同一个Sqlsession中,第二次查询同一个对象,直接从缓存中获取;其他sqlSession中若要查询这个对象,仍要执行sql语句。若Sqlsession关闭,sqlSession中的缓存数据清空,需要重新加载

不同于一级缓存,二级缓存存储在代理类mapper中,并且供多个sqlSession共享,即使sqlSession关闭,其他sqlSession依旧能读取到缓存中的数据。

并且想要使用二级缓存,需要配置一些条件:

1.    <setting name="cacheEnabled" value="true" />。默认就是true,无需设置。

2.在相关mapper.xml中添加相关配置

3.使用二级缓存的实体类对象必须实现Serializable(可序列化)接口

4.pom.xml引入第三方缓存

标签:缓存,10.30,Spring,学习,sqlSession,日常,IO,AOP,IOC
From: https://blog.csdn.net/lxy20030530/article/details/143367738

相关文章

  • 小学三年级学习计划
    为小学三年级的学生制定一个学习计划,可以帮助他们在学业上更有条理。以下是一个包含各学科的学习计划示例:学习计划概览周计划周一至周五:主课学习周六:复习与实践周日:休息与兴趣发展学科安排语文周一、周三:每天阅读课文,理解课文内容。词语积累:每天学习5-10个......
  • 产品学习(三)流程设计 结构设计
    目录一、流程设计流程图种类:流程图常用平台​编辑泳道图的绘制二、结构设计功能结构图信息结构图产品结构图一、流程设计保证产品使用逻辑合理流程图种类:业务流程图:详细地描述任务流程走向功能流程图:业务上更详细的软件的具体操作页面流程图:产品具体呈现的页......
  • 零拷贝技术学习
    0、引言在现代网络系统中,随着数据传输量的不断增加,如何高效地处理网络请求成为了一个重要的研究课题。本文将从操作系统底层数据传输的过程出发,探讨零拷贝技术的原理以及它如何优化数据传输效率。这对今后学习多种相关技术将有助于我们理解其根本原理。1、传统的磁盘I/O原理在......
  • 基于深度学习的舆论分析与检测系统应用与研究
    【1】系统介绍研究背景随着互联网技术的迅猛发展和社会媒体平台的普及,信息传播的速度和范围达到了前所未有的水平。这一变化不仅极大地丰富了人们的社交生活,也为社会科学研究提供了新的视角和工具。舆论分析作为社会科学研究的一个重要分支,其目的是通过收集和分析网络上的......
  • Redis学习:BigKey、缓存双写一致性更新策略和案例
    Redis学习:BigKey、缓存双写一致性更新策略和案例文章目录Redis学习:BigKey、缓存双写一致性更新策略和案例1.BigKey2.缓存双写一致性更新策略3.缓存双写一致性案例1.BigKey面试题MoreKey不可以使用keys*,要使用SCAN基于游标来查询所有的key通过在redis.con......
  • Python学习15天
    if 条件表达式:(条件为真,执行代码块1,否则执行代码块2)   代码块1else:   代码块2#键盘输入成绩,若成绩大于60,输出及格,否则输出不及格score=int(input("请输入成绩:"))ifscore>60:   print("及格")else:   print("不及格")#键盘输入年份,判断是......
  • Python学习第14天
    ~:按位取反,把数据的每个二进制按位取反~5:5=00000101(原码=反码=补码)~5=11111010(补码)-(反码=补码-1)=11111001-原码=00000110=6~5=6print(~5)~-3=2print(~-3)-3>原码=10000011>反码=11111100>补码=11111101~-3=00000010(补码=反码=原码)=2&:按位与:两个值都为1则......
  • 学习笔记(十五):ArkUi-切换按钮 (Toggle)
    概述:提供状态按钮样式、勾选框样式和开关样式,一般用于两种状态之间的切换一、创建单选框接口形式如下:type为类型,支持三种1、Switch  不包含子组件Toggle({type:ToggleType.Switch,isOn:true}) 2、Checkbox不包含子组件Toggle({type:ToggleType.Checkbox,isOn:true}......
  • 10.30日博客
    序列容器vector用途:动态数组,支持随机访问。特性:元素连续存储。插入和删除操作在尾部效率较高,中间操作较慢。常用方法:push_back():在容器末尾添加元素。pop_back():移除容器末尾的元素。at(index):通过索引访问元素。size():返回容器大小。list用途:双向链表,支持高效的插入......
  • shell学习
    set-e解释如果你是在引用shell脚本中的set-e,那么在shell中它的意思是“如果任何命令的退出状态非零,则立即退出脚本”。这种用法可以防止脚本在遇到错误时继续执行。declare-xARCH="arm"是什么意思?declare-xARCH="arm" 是一个在Bashshell中的命令,具体含义如下:......