spring-day04

uniapp - 最新微信小程序手机号一键登录功能效果,uniapp小程序实现手机号码一键登录,uniapp微信小程序端通过手机号授权完成立即登录操作(详细示例源码,新手小白一键复制开箱即用) uniapp,微信小程序,uniapp小程序平台,uniApp手机号一键登录,uniapp小程序端手机号一键登录功能,实现微信小程序手机号一键登录,在uniapp中实现获取手机一键登录功能,uniapp手机号快捷登录,uniapp微信小程序授权登录并获取手机号,微信小程序手机号快速验证组件调用方式,uniapp小程序怎么用手机号一键登录,uniapp一键登录流程及代码,如何获取手机号一键登录到小程序,微信小程序获取本机手机号一键登录功能,新手详细教程,详细手机一键登录完整示例代码,uni-app微信unia 阅读详情

spring-day04

一. 事务

1.事务的作用:

  • 当数据库操作序列中个别操作失败时,提供一种方式使数据库状态恢复到正常状态(A),保障数据库 即使在异常状态下仍能保持数据一致*©(要么操作前状态,要么操作后状态)。
  • 当出现并发访问数据库时,在多个访问间进行相互隔离,防止并发访问操作结果互相干扰(I)。

2. 事务的基本特性有哪些?(面试题)

  • ACID
    • 原子性(Atomicity)
    • 一致性(Consistency)
    • 隔离性(Isolation)
    • 持久性(Durability)

3. 当前的数据出问题的情况?(面试题)

  • **脏读:**读到了另一个事务中未提交的数据

  • **不可重复读:**在一个事务中第一次读取到了一个数据,然后另一个事务对该行数据进行了修改,然后第一个事务再次读取此时数据就发生了变化

  • **幻读/虚读:**第一个事务读取了一次数据,然后另一个事务不断的删除/修改/新增数据,然后第一个事务再次读取数据,此时发现部分数据被删除部分数据被修改部份数据新增

4. 数据库的隔离级别有哪些,分别解决了什么问题(面试题)

  • 读未提交

  • **读已提交:**解决了脏读的问题

  • **可以重复度:**解决了不可重复度的问题

  • **序列化:**解决所有的问题

二. xml实现spring的声明式事务管理

1. 在xml中导入tx的命名空间

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:tx="http://www.springframework.org/schema/tx"
        http://www.springframework.org/schema/tx
        https://www.springframework.org/schema/tx/spring-tx.xsd">

2. 创建DataSourceTransactionManager并且注入一个dataSource对象

    <bean id="txManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        	<property name="dataSource" ref="dataSource"/>
    </bean>
  • 该对象只能用于jdbc和mybatis框架

3. 申明事务如何控制

<tx:advice id="txAdvice" transaction-manager="txManager">
  <!--定义控制的事务-->
  <tx:attributes>
      <tx:method name="*" read-only="false"/>
      <tx:method name="get*" read-only="true"/>
      <tx:method name="find*" read-only="true"/>
  </tx:attributes>
</tx:advice>

4. 使用aop把事务和业务结合起来

<aop:config>
    <aop:pointcut id="pt" expression="execution(* com.itheima.service.*Service.*(..))"/>
    <aop:advisor advice-ref="txAdvice" pointcut-ref="pt"/>
</aop:config>

三. 声明的具体配置

<tx:method
    name="transfer"
    read-only="false"
    timeout="-1"
    isolation="DEFAULT"
    no-rollback-for=""
    rollback-for=""
    propagation="REQUIRED"
    />
  • 事务名称:name="*"

  • 读写属性:read-only=“false”

  • 隔离级别:isolation=“DEFAULT”

  • 传播机制:propagation=“REQUIRED”

四. 注解实现声明式事务管理

1. 在xml中开启声明式事务观管理

    1. 创建一个管理者
    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    
    1. 开启
    <tx:annotation-driven transaction-manager="txManager"/>
    

2. 在类上/方法上/接口上添加@Transactional注解

    1. 添加在类上或者接口上
    • 类里面的所有的方法/接口里面的所有的方法使用统一的配置

          //对当前方法添加事务,该配置将替换接口的配置
          @Transactional(
              readOnly = false,
              timeout = -1,
              isolation = Isolation.DEFAULT,
              rollbackFor = {},   //java.lang.ArithmeticException.class, IOException.class
              noRollbackFor = {},
              propagation = Propagation.REQUIRED
              )
          public void transfer(String outName, String inName, Double money);
      }
      
    1. 配置在方法上-只有当前的方法使用该配置
    1. 推荐把注解配置在接口上同时接口上和方法上都配置
    1. 需要配置哪些内容
    • readOnly = false,
    • isolation = Isolation.DEFAULT,
    • propagation = Propagation.REQUIRES

3. 纯注解是实现

    1. 在主配置类上添加@EnableTransactionManagement

      @EnableTransactionManagement
      public class SpringConfig {
      }
      
    1. 在某一个配置类中创建一个bean-PlatformTransactionManager

      @Bean
      public PlatformTransactionManager getTransactionManager(DataSource dataSource){
      		return new DataSourceTransactionManager(dataSource);
      }
      

4. redisTemplate

1. redisTemplate在写入数据到redis的时候会对key进行编码,如果换了客户端(jedis)那么就不能获取到数据,此时需要统一key的格式

  • 1.创建Redis配置类

    @PropertySource("redis.properties")
    public class RedisConfig {
    
        @Value("${redis.host}")
        private String hostName;
    
        @Value("${redis.port}")
        private Integer port;
      
        //配置redis访问密码
        //@Value("${redis.password}")
        //private String password;
    
        @Value("${redis.maxActive}")
        private Integer maxActive;
        @Value("${redis.minIdle}")
        private Integer minIdle;
        @Value("${redis.maxIdle}")
        private Integer maxIdle;
        @Value("${redis.maxWait}")
        private Integer maxWait;
    
        @Bean
        //配置RedisTemplate
        public RedisTemplate createRedisTemplate(RedisConnectionFactory redisConnectionFactory){
            //1.创建对象
            RedisTemplate redisTemplate = new RedisTemplate();
            //2.设置连接工厂
            redisTemplate.setConnectionFactory(redisConnectionFactory);
            //3.设置redis生成的key的序列化器,对key编码进行处理
            RedisSerializer stringSerializer = new StringRedisSerializer();
            redisTemplate.setKeySerializer(stringSerializer);
            redisTemplate.setHashKeySerializer(stringSerializer);
            //4.返回
            return redisTemplate;
        }
    
        @Bean
       		 //配置Redis连接工厂
        public RedisConnectionFactory createRedisConnectionFactory(RedisStandaloneConfiguration redisStandaloneConfiguration,GenericObjectPoolConfig genericObjectPoolConfig){
            //1.创建配置构建器,它是基于池的思想管理Jedis连接的
            JedisClientConfiguration.JedisPoolingClientConfigurationBuilder builder = (JedisClientConfiguration.JedisPoolingClientConfigurationBuilder)JedisClientConfiguration.builder();
            //2.设置池的配置信息对象
            builder.poolConfig(genericObjectPoolConfig);
            //3.创建Jedis连接工厂
            JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(redisStandaloneConfiguration,builder.build());
            //4.返回
            return jedisConnectionFactory;
        }
    
        @Bean
       		 //配置spring提供的Redis连接池信息
        public GenericObjectPoolConfig createGenericObjectPoolConfig(){
            //1.创建Jedis连接池的配置对象
            GenericObjectPoolConfig genericObjectPoolConfig = new GenericObjectPoolConfig();
            //2.设置连接池信息
            genericObjectPoolConfig.setMaxTotal(maxActive);
            genericObjectPoolConfig.setMinIdle(minIdle);
            genericObjectPoolConfig.setMaxIdle(maxIdle);
            genericObjectPoolConfig.setMaxWaitMillis(maxWait);
            //3.返回
            return genericObjectPoolConfig;
        }
    
    
        @Bean
        		//配置Redis标准连接配置对象
        public RedisStandaloneConfiguration createRedisStandaloneConfiguration(){
            //1.创建Redis服务器配置信息对象
            RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
            //2.设置Redis服务器地址,端口和密码(如果有密码的话)
            redisStandaloneConfiguration.setHostName(hostName);
            redisStandaloneConfiguration.setPort(port);
    				//redisStandaloneConfiguration.setPassword(RedisPassword.of(password));
            //3.返回
            return redisStandaloneConfiguration;
        }
    }
    
    1. Service层注入RedisTemplate,调用Redis操作数据
    @Service("accountService")
    public class AccountServiceImpl implements AccountService {
    
        @Autowired
        private RedisTemplate redisTemplate;
    
        public void save(Account account) {
        }
    
        public void changeMoney(Integer id, Double money) {
            //等同于redis中set account:id:1 100
            redisTemplate.opsForValue().set("account:id:"+id,money);
        }
    
        public Double findMondyById(Integer id) {
            //等同于redis中get account:id:1
            Object money = redisTemplate.opsForValue().get("account:id:" + id);
            return new Double(money.toString());
        }
    }
    

RedisTemplate对象结构

image-20200807200652171

在这里插入图片描述

在这里插入图片描述

2. 常用各种数据类型的具体操作(掌握)

  • redisTemplate.opsForValue().;
  • redisTemplate.opsForHash().;
  • redisTemplate.opsForList().;
  • redisTemplate.opsForSet().;
  • redisTemplate.opsForZSet();

5. 在spring中使用到了哪些设计模式-中级程序员的面试题

1. 装饰

2. 动态代理

3. 策略模式(Strategy Pattern):使用不同策略的对象实现不同的行为方式,策略对象的变化导致行为的 变化。

【电源专题】案例:对比不同电池在不同电流下的电池放电曲线 无 阅读详情

相关推荐

MIT 18.03 微分方程 ODE 学习笔记分享——目录

从B站上看到了MIT 微分方程的课程,觉得老爷子讲的真好! 其实微分方程对于工科来说相当重要,但是很多学习也仅把他放在高数里作为单独的一个章节来讲,这是远远不够的。所以对于同学们来说 ,一定要认真听讲,做好笔记! 以下是我的个人学习比较分享。有需要的同学可以做一个参考。 注:个人认为笔记的作用是用来回想起课堂所讲的内容(细节),所以我的笔记风格为以老师讲课思路为准,板书为辅。建议刚开始听这门课的同...

weixin_40664094的博客 2631

自定义RedisTemplate

首先说明一下在Spring Boot中使用Redis操作对象时 如果不将对象序列化会产生一下错误。在工作中更容易操作Redis,我们一般重新封装RedisTemplate类。在实际开发中我们会自定义RedisTemplate工具 简化开发。在操作Redis中,关于对象的保存我们得序列化才可以正常操作!这时我们就要对RedisTemplate重新封装。在config中添加RedisConfig。

weixin_51296701的博客 936

初探Proxmox Datacenter Manager:统一管理多集群与单节点的利器

本文介绍了Proxmox Datacenter Manager (PDM) 这一统一管理工具,它能有效解决多套Proxmox VE环境(包括集群和单节点)管理碎片化的痛点。文章详细阐述了PDM的核心功能、安装部署步骤,并通过实战演示了如何添加单节点与整个集群,实现资源的集中监控与基础运维,为运维人员提供了高效的集中管理解决方案。

weixin_29217235的博客 163

Redis深入实践(三)构建redis服务使用RedisTemplate

RedisTemplate是操作redis的一个API:先看下RedisTemplate的原码:具体的方法使看原码中的注释 RedisTemplate 帮助程序类,用于简化redis数据访问代码。 在给定对象和redis存储中的基础二进制数据之间执行自动序列化/反序列化。默认情况下,它使用对象的Java序列化(通过JDKSerialIdaseReDeSerialZER)。对于字符串密集型操作...

kay三石 2265

使用MID360在室内快速定位

在预构建的点云地图中实现实时3D全球定位。通过融合FAST-LIO的低频全局定位(约0.5~0.2Hz)和高频里程计,整个系统的计算效率很高。消除里程计的累计误差初始定位可以通过RVIZ的粗略手动估计或来自另一个传感器/算法的姿势来提供。

CTwinkle的博客 1164

告别AT串口线!用STM32F407的USB FS口直连EC800M进行物联网通信

本文介绍了一种创新的物联网通信方案,利用STM32F407的USB FS接口直连EC800M模块,替代传统的AT串口线连接。通过详细的硬件对比、STM32CubeMX配置和USB驱动调试步骤,展示了如何实现更高效的AT指令通信,同时降低硬件复杂度和功耗。

weixin_29189987的博客 707

快速上手RedisTemplate

前景提要:这篇文章可以e,并,如果想要了解API的,可以去看一下API文档,或者用到具体的方法在Idea里,直接点进去RedisTemplate源码,找需要的方法。

dfghjkkjjj的博客 1311

SAP 系统间 SSO 的真正价值,从 SM59 到可信 RFC 的安全设计

SAP S/4HANA系统间Single Sign-On(SSO)的核心价值在于集中管理通信身份与信任关系,而非仅减少密码输入。传统固定账号密码方式在系统规模扩大后会面临密码管理、审计追踪等挑战。通过SM59配置可信RFC目标系统,结合SSL证书或SAP Trusted System等强认证机制,能有效降低安全凭据暴露风险。SSO配置需配合授权对象、角色管理等建立清晰的信任边界,实现系统间安全通信的同时保持可审计性。这种方案特别适用于Fiori前端与S/4HANA后端等场景,通过可信RFC传递用户身份,避免

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1065

使用 RedisTemplate Lettuce 自定义连接对象

之前使用Redis一直是在单服务器单库中进行,因为最近在一个需求中,需要用到一个Redis服务器中的多个库,每个库存放不同的数据。找了好久的文章都是直接在配置文件中写死 host, port, pass, database 等等,经过多篇文章综合整理,自己写了个简单的Redis连接池工具类小demo,可以自定义参数获得连接对象,话不多说上代码 package com.example.Xiang.redis; import com.fasterxml.jackson.annotation.JsonAutoD

正儿八经的胡说八道的博客 1411

硬件测试有哪些?

硬件单元测试(UT)是验证电路功能与可靠性的关键环节,主要分为电源测试和信号测试两大模块。电源测试需验证输入电压范围、高低压极限、短路保护等功能,确保供电稳定性;信号测试则聚焦时钟、总线、存储等接口的时序与完整性。测试要求统一标准、可追溯数据、问题闭环处理,通过开发与测试协同确保质量。规范的单元测试能有效降低后期集成风险,提升产品可靠性,其核心始终是在最小单元上确保稳健性,为系统级可靠性奠定基础。

硬核科技 245

适航文章汇总:知识体系全面梳理

无论您是行业新手还是经验丰富的专业人士,都可以通过本篇文章快速查找相关资料,提高对适航认证、机载系统、软件及硬件等领域的理解。本部分详细解析ARP 4754A、ARP 4761、DO-178C、DO-254等核心标准,并介绍其在机载系统开发中的应用。介绍FAA、EASA、CCAR等主要航空管理机构的适航规章体系,并说明各类飞行器(如固定翼、旋翼机、无人机等)的适航要求。本部分还探讨硬件设计、验证与确认过程中的挑战。从系统架构设计到机载设备的集成与管理,本部分介绍机载系统的研发体系及适航管理的最佳实践。

qq_41854911的博客 1454

史上最全的RedisTemplate操作redis常用方法的工具类ResdisUtils

使用spring-boot-starter-data-redis来操作redis时,RedisTemplate一些常用方法的工具类,提高开发效率。

qq_17732903的博客 1221

完整复盘【避雷jd文职某岗位】潍坊青州hhj(据说未来搬到天津),助理实验师岗位,三人进面,面试全部不及格,空头岗位!像这种情况,该单位很多 | 附个人完整备考背诵题目 | 世间一场梦,不会再考这个了

本文以博主本人报考jun dui文职,从报考、备考、考试、查成绩到资格审查、面试,全程亲身经历,给想要报考该内容的朋友们一些小的参考。祝你顺利上岸!完整复盘【避雷jd文职某岗位】潍坊青州hhj(据说未来搬到天津),助理实验师岗位,三人进面,面试全部不及格,空头岗位!像这种情况,该单位很多 | 附个人完整备考背诵题目 | 世间一场梦,不会再考这个了

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 250

Spring_day03、Spring_day04问题记录

Spring_day03问题记录 1.读properties文件用EL表达式? Spring中是可以在xml中使用el表达式读取 .properties 文件的。(原理未知) 2.private Account ad;要set方法才能注入? 需要属性注入,就需要property注入,就需要set方法。 3..匿名类访问外部要加final? Java为了避免数据不...

Json Yao的博客 304

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

spring_day04

spring_day04 事务的概念回顾 事务的概念: 一个包含多个操作的逻辑单元,要么同时成功,要么同时失败。 事务的四大特性: 原子性 一致性 持久性 隔离性 事务并发带来的读问题: 脏读 不可重复读 虚读/幻读 隔离级别: read uncommitted read committed repeatable read serializeable 事务管理的核心对象 事务管理器对象:PlatformTransactionManager 事务管理器的顶层接口,定

weixin_50392548的博客 191

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Spring day04

Spring day04 1 Spring基于注解的开发 XML方式配置bean存在的问题:开发效率低下。Spring2.x提供了开发效率更高的注解式配置。注解开发替换XML配置的好处:简化编程,提高开发效率。 XML方式:配置繁琐,但功能强大,维护性好,可配置第3方类型(非自己编码的类型) 注解方式:配置简单,开发效率高。一般用于自定义类型的配置 1.1 注解开发的思路 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tReWbUGm-1630934334598)(Spr

qq_45618899的博客 174

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Spring学习day04

一、三大框架整合原理 本文的主要目的是为了整合SSH三大框架。 三大框架整合原理:Spring作为容器,创建存储和管理Struts2的Action对象、Hibernate的SessionFactory对象和事务 二、导包 分别导三大框架的包,以及框架整合相关的包。 框架整合相关的包:Struts2-spring-plugin(注意:该包一旦导入,则struts2在启动时就会寻找sprin...

Bran_Wang12306的博客 213

SSM【Spring day04】

Spring 第四天第1章 Spring 中的JdbcTemplate[会用]1.1JdbcTemplate 概述1.2JdbcTemplate 对象的创建1.3spring 中配置数据源1.3.1环境搭建1.3.2编写 spring 的配置文件1.3.3配置数据源1.3.4将数据库连接的信息配置到属性文件中:1.4JdbcTemplate 的增删改查操作1.4.1前期准备1.4.2在 spring 配置文件中配置 JdbcTemplate1.4.3最基本使用1.4.4保存操作1.4.5更新操作1.4.6删

hu_zhi_chao的博客 1001

Day04-Spring Boot

概述:IOC实现了控制反转,IOC为一个存储类的对象的容器,通过相关注解,使类的对象的创造不再由类的构造器实现而是Spring实现,将类的对象存储在IOC中。1.概述:在一开始的三层传递数据,通过调用各类构造器来创建对象,然后调用对象中的方法来实现,但这样做会使代码间的耦合性提高,则可通过IOC和DI类降低代码间耦合性。概述:依赖注入,需要使用某个标记IOC相关注解的类使,通过使用DI相关注解时在IOC类中查找该类对象并完成自动赋值。数据访问层:访问本地数据。2.组成:控制层,数据处理层,访问数据层。

qq_53683975的博客 422

day04——Spring

【第一章】事务管理【重点】 1 Spring事务管理核心对象 1.1 PlatformTransactionManager对象(需要配置) PlatformTransactionManager是平台事务管理对象,是一个接口,它里面提供了常用的操作事务的方法。 注意:PlatformTransactionManager 是接口类型,不同的 Dao 层技术则有不同的实现类,例如:Dao 层技术是jdbc 或 mybatis 时:org.springframework.jdbc.datasource.DataS

渺万里层云 209

Spring_day04

Spring_day04 1. Spring 中的 JdbcTemplate 1.1 JdbcTemplate 概述 它是 spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单封装。 spring 框架为我们提供了很多操作模板类。 操作关系型数据的:JdbcTemplateHibernateTemplate 操作 nosql 数据库的:RedisTemplate 操作消息队列的:JmsTemplate 我们今天的主角在 spring-jdbc-5.0.2.RELEASE.jar 中

a17712875660的博客 178

Spring Day04

四 事务 事务的传播行为:

m0_52376209的博客 878

Day_04 Spring

文章目录01-程序的耦合和解耦(掌握)02-三层结构的耦合性问题(掌握)03-解耦方案使用工厂模式(掌握)04-解耦方案使用反射(掌握)05-解耦方案使用配置文件(掌握)06-Spring概述(掌握)07-Spring入门案例(掌握)08-IOC控制反转(掌握)09-Spring使用构造器IOC对象(掌握)10-Spring使用静态工厂IOC对象(了解)11-Spring使用动态工厂IOC对象(了解)12-FactoryBean机制(掌握)13-bean标签属性(掌握)14-Spring团队开发(掌握)15

lbw18的博客 383

Spring4_Day04

文章目录Spring4_Day04SSH整合方式一:无障碍整合SSH整合方式二:将Hibernate交给Spring管理(没有Hibernate配置文件)Hibernate模板使用 Spring4_Day04 SSH整合方式一:无障碍整合 SSH整合方式二:将Hibernate交给Spring管理(没有Hibernate配置文件) Hibernate模板使用 ...

weixin_43912805的博客 162

Spring MVC入门——day04

Spring MVC 参考视频:B站狂神,写这个只是方便个人复习,怎么写是我自己的事,我能看懂就行,没要求非要让你看!白嫖还挑刺,是很没有风度的事情。希望做个有风度的“五好青年”! 5、数据处理及跳转 1.ModelAndView 设置ModelAndView对象 , 根据view的名称 , 和视图解析器跳到指定的页面; 页面 : {视图解析器前缀} + viewName +{视图解析器后缀} <!-- 视图解析器 --> <bean class="org.springfra

杨丙寅 815
上一篇: spring-day03
下一篇: Oracle通过Mybatis 插入日期格式
hackerc5
博客等级 码龄16年 2粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值