Spring框架重要知识点总结(四)

Spring 框架核心知识点总结与实战指南 Spring 作为 Java 企业级开发的主流框架,凭借其强大的功能和灵活的架构,已成为众多开发者的首选。本文将全面总结 Spring 框架的核心知识点,结合实战案例深入讲解各模块的使用方法,并分享一些最佳实践经验,帮助读者系统掌握 Spring 技术栈。Spring 是一个轻量级的 Java 企业级开发框架,旨在简化企业应用开发的复杂性。IoC(控制反转):将对象的创建和依赖关系管理从代码转移到容器AOP(面向切面编程):实现横切关注点的模块化统一的编程模型:提供一致的方式处理事务、数据访问等。 阅读详情

Spring框架的JDBC模板技术

一、JDBC模板技术

(一)什么是模板技术

Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单,Spring框架提供的JdbcTemplate类,Connection 表示连接,管理事务 Statement ResultSet.

(二)模板的使用

①创建maven工程,引入坐标

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.0.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.12</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>5.0.2.RELEASE</version>
    </dependency>
    
    <dependency>
        <groupId>aopalliance</groupId>
        <artifactId>aopalliance</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</artifactId>
        <version>5.0.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.8.13</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>5.0.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>5.0.2.RELEASE</version>
    </dependency>
  </dependencies>

②编写测试代码(用new对象的方式)

public class Demo1 {

@Test
public void run1(){
    // 创建连接池对象,Spring框架内置了连接池对象
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    // 设置4个参数
    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql:///数据库");
    dataSource.setUsername("用户名");
    dataSource.setPassword("密码");
    
    // 提供模板,创建对象
    JdbcTemplate template = new JdbcTemplate(dataSource);
    // 完成数据的增删改查
    template.update("insert into account values (null,?,?)","熊大",1000);
}}
(三)使用Spring框架来管理模板类

①Spring管理内置连接池

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="
                http://www.springframework.org/schema/beans
                http://www.springframework.org/schema/beans/spring-beans.xsd
                http://www.springframework.org/schema/context
                http://www.springframework.org/schema/context/spring-context.xsd
                http://www.springframework.org/schema/aop
                http://www.springframework.org/schema/aop/spring-aop.xsd">

        <!--配置连接池-->
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
                <!--设置4个值-->
                <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///spring_db"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
        </bean>
        <!--配置模板类-->
        <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
                <property name="dataSource" ref="dataSource"/>
        </bean>
</beans>

②编写测试方法

@RunWith(SpringJUnit4ClassRunner.class)//单元测试
@ContextConfiguration("classpath:applicationContext5.xml")//加载配置文件
public class demo5 {
	//按类型自动导入
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Test
    public void run1(){
        //提供数据的增删改查
        jdbcTemplate.update("insert into account values (null,?,?)","雄二",9989);
    }
}
(四)Spring框架管理开源的连接池

①导入Druid开源连接池
②将数据库连接的信息配置到属性文件(jdbc.properties)中
③核心配置改为

		<!--使用提供标签的方式-->
        <context:property-placeholder location="classpath:jdbc.properties"/>

        <!--加载属性文件-->
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
                <property name="driverClassName" value="${jdbc.driverClassName}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />

        </bean>

        <!--配置模板类-->
        <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
                <property name="dataSource" ref="dataSource"/>
        </bean>
(五)Spring框架的JDBC模板的简单操作(增,删,改,查)
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(value = "classpath:applicationContext_jdbc.xml")
public class Demo1_1 {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    /**
     * 测试的方式  增
     */
    @Test
    public void run1(){
        jdbcTemplate.update("insert into account values (null,?,?)","熊四",800);
    }
    /**
     * 修改
     */
    @Test
    public void run2(){
        jdbcTemplate.update("update account set name = ?,money = ? where id = ?","光头强",100,7);
    }
    /**
     * 删除
     */
    @Test
    public void run3(){
        jdbcTemplate.update("delete from account where id = ?",7);
    }
    /**
     * 通过id查询
     */
    @Test
    public void run4(){
        Account account = jdbcTemplate.queryForObject("select * from account where id = ?", new BeanMapper(), 6);
        System.out.println(account);
    }
    /**
     * 查询所有的数据
     */
    @Test
    public void run5(){
        List<Account> list = jdbcTemplate.query("select * from account", new BeanMapper());
        for (Account account : list) {
            System.out.println(account);
        }
    }
}
/**
 * 实现类,用来进行数据封装的
 */
class BeanMapper implements RowMapper<Account>{
    /**
     * 是一行一行进行数据封装的
     */
    @Override
    public Account mapRow(ResultSet resultSet, int i) throws SQLException {
        Account account = new Account();
        account.setId(resultSet.getInt("id"));
        account.setName(resultSet.getString("name"));
        account.setMoney(resultSet.getDouble("money"));
        return account;
    }
}

二、模拟转账开发(练习)

首先搭建环境(maven工程 坐标)

(一)service代码的编写
接口:
public interface AccountService {
    public void pay(String out,String in,double money);
}
实现类:
public class AccountServiceImpl implements AccountService {
    private AccountDao accountDao;
    public void setAccountDao(AccountDao accountDao) {
        this.accountDao = accountDao;
    }
	//转账方法
    @Override
    public void pay(String out, String in, double money) {
        // 调用dao方法
        accountDao.outMoney(out,money);
        accountDao.inMoney(in,money);
    }
}
(二)dao代码的编写
接口:
public interface AccountDao {
	//付款
    public void outMoney(String out,double money);
   	//收款
    public void inMoney(String in,double money);
}
实现类:
public class AccountDaoImpl implements AccountDao {
    private JdbcTemplate jdbcTemplate;
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
 	//付款
    public void outMoney(String out, double money) {
        jdbcTemplate.update("update account set money = money - ? where name = ?",money,out);
    }
    //收款
    public void inMoney(String in, double money) {
        jdbcTemplate.update("update account set money = money + ? where name = ?",money,in);
    }
}
dao代码的编写的第二种方式

继承JdbcDaoSupport

(三)配置文件代码编写

约束同上

<!--第二种写法:使用提供标签的方式-->
    <context:property-placeholder location="classpath:jdbc.properties" />

    <!--加载属性的文件-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    </bean>

    <!--配置Jdbc模板类-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <!--配置service-->
    <bean id="accountService" class="cn.tx.demo2.AccountServiceImpl">
        <property name="accountDao" ref="accountDao"/>
     </bean>

    <!--配置dao-->
    <bean id="accountDao" class="cn.tx.demo2.AccountDaoImpl">
        <property name="jdbcTemplate" ref="jdbcTemplate" />
    </bean>
(四)测试代码编写
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(value = "classpath:配置文件")
public class Demo2 {
	//按照类型自动导入
    @Autowired
    private AccountService accountService;
    /**
     * 测试转账的方法
     */
    @Test
    public void testPay(){
        accountService.pay("熊大","熊二",100);
    }
}

三、Spring框架声明式事务管理

PlatformTransactionManager接口
平台事务管理器。该接口有具体的实现类,根据不同的持久层框架,需要选择不同的实现类!
接口方法如下:
void commit(TransactionStatus status)
void rollback(TransactionStatus status)
如果使用的Spring的JDBC模板或者MyBatis框架,需要选择DataSourceTransactionManager实现类

(一)配置文件的方式
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>

<!--配置事务的通知(没有自己编写切面类,通知方法也不是自己编写,Spring框架提供的)-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <!--对pay进行增强,设置隔离级别,传播行为,超时的时间-->
        <tx:method name="pay" isolation="DEFAULT" propagation="REQUIRED" />
        <tx:method name="find*" read-only="true" />
    </tx:attributes>
</tx:advice>

<!--配置AOP的增强-->
<aop:config>
    <!--Spring框架提供系统通知,使用advisor标签-->
    <aop:advisor advice-ref="txAdvice" pointcut="execution(public * cn.tx.demo4.AccountServiceImpl.pay(..))" />
</aop:config>
(二)配置文件+注解的方式

①配置文件留下,配置平台事务管理器的配置
②将service进行注入并@Transactional(isolation = Isolation.DEFAULT)

(三)纯注解的方式

纯注解的目的就是替换所有的配置文件,但需要编写配置类

	/**
     * 配置类
     * @author Administrator
     */
    @Configuration  //声明配置类
    @ComponentScan(basePackages="cn.tx.demo6")  //扫描
    @EnableTransactionManagement        // 开启事务注解
    public class SpringConfig {
      
        @Bean(name="dataSource")
        public DataSource createDataSource() throws Exception{
            // 创建连接池对象,Spring框架内置了连接池对象
            DriverManagerDataSource dataSource = new DriverManagerDataSource();
            // 设置4个参数
            dataSource.setDriverClassName("com.mysql.jdbc.Driver");
            dataSource.setUrl("jdbc:mysql:///spring_db");
            dataSource.setUsername("root");
            dataSource.setPassword("root");
            return dataSource;
        }
        /**
         * 创建模板对象
         * @return
         */
        @Resource(name="dataSource")        // 不仅可以作用在属性上,也可以作用方法上。
        @Bean(name="jdbcTemplate")          // 把JdbcTemplate保存到IOC容器中
        public JdbcTemplate createJdbcTemplate(DataSource dataSource){
            JdbcTemplate template = new JdbcTemplate(dataSource);
            return template;
        }
        /**
         * 创建平台事务管理器对象
         * @param dataSource
         * @return
         */
        @Resource(name="dataSource")
        @Bean(name="transactionManager")
        public PlatformTransactionManager createTransactionManager(DataSource dataSource){
            DataSourceTransactionManager manager = new DataSourceTransactionManager(dataSource);
            return manager;
        }     
    }
Spring框架最全知识点 Spring框架最全知识点总结 阅读详情

相关推荐

[LVGL]:MACOS下使用LVGL模拟器

[LVGL]:MACOS下使用LVGL模拟器

LINKKEEE的博客 2456

Spring5框架知识点总结(四)AOP篇

文章目录二、AOP操作1、准备工作2、AspectJ 注解3、AspectJ 配置文件 二、AOP操作 1、Spring 框架一般都是基于 AspectJ 实现 AOP 操作 (1)AspectJ 不是 Spring 组成部分,独立 AOP 框架,一般把 AspectJ 和 Spirng 框架一起使 用,进行 AOP 操作 2、实现方式 (1)基于 xml 配置文件实现 (2)基于注解方式实现(使用) 1、准备工作 1、在项目工程里面引入 AOP 相关依赖(导入相关的jar包) 2、切入点表达式 (1

m0_50654102的博客 263

汽车工程师必看:从CAN到Ethernet,6种车载通信协议全解析(附应用场景对比)

本文全面解析了从CAN到Ethernet的6种车载通信协议,包括CAN、LIN、MOST、FlexRay等,并对比了它们的应用场景和技术特点。文章详细介绍了各协议的演进历程、技术优势及在现代汽车中的混合网络架构设计,为汽车工程师提供了实用的协议选型指南和未来通信技术发展趋势。

weixin_28683689的博客 492

2025金三银四牛客网最全面Java面试1000多题(涵盖所有Java核心面试知识点)

这份面试总结比较多,就不一一的详细介绍了,粗略的将主要内容展示一下,其中含有 20+的知识点:目录总览目录详览基础篇JVM 篇多线程 &并发篇Spring 篇MyBatis 篇SpringBoot 篇MySQL 篇SpringCloud 篇Dubbo 篇Nginx 篇MQ 篇Linux 篇Zookeeper 篇Redis 篇分布式篇网络篇设计模式篇maven 篇ElasticSearch 篇tomcat 篇Git 篇软实力篇内容一览JVM 知识点汇总。

m0_50180963的博客 367

保姆级教程:用CameraX API快速搞定Android多摄像头切换与预览(附避坑指南)

本文提供了一份详细的CameraX API教程,帮助开发者快速实现Android多摄像头切换与预览功能。通过简化API设计和生命周期感知能力,CameraX大幅降低了开发复杂度,同时解决了多摄像头兼容性、预览优化等常见问题。文章包含完整代码示例和实战避坑指南,特别适合需要高效集成相机功能的Android开发者。

weixin_42699679的博客 166

esp32-C3固件烧录用户手册

温馨提示:1.esp32-C3 BOOT脚为GPIO9,需要从芯片小板中焊接引出2.芯片小板中已经预留了所有烧录相关的引脚,大家可以按需焊接引线3.程序下载完,使用串口查看log时,需要使用220v供电使用(请务必准守用电安全)。原因:由于插座中包含继电器,计量计等耗电设备,所以usb转串口提供的3.3V电压和电流可能会出现供电不足,表现为usb转串口与电脑连接断断续续,导致无法查看log。

hbwang的博客 1万+

Spring知识点总结

Spring知识点总结 1. 简介一下Spring框架。答:Spring框架是一个开源的容器性质的轻量级框架。主要有三大特点:容器、IOC(控制反转)、AOP(面向切面编程)。 2. Spring框架有哪些优点?谈谈你的看法。答:Spring框架主要有三大优点:(1) 容器。Spring框架是一个容器,能够管理项目中的所有对象。(2) IOC(控制反转)。Spring将创建对象的方式反转了,从程序...

lz1170063911的博客 2万+

使用自己的数据跑通mmsegmentation

使用自己的数据跑通mmsegmentation,解决以下报错:1)type object 'FileClient' has no attribute 'infer_client' 2)It is expected output_size equals to 2, but got size 3 3)训练测试结果报NAN 4)KeyError: 'MyDataset is not in the dataset registry' 5)预训练模型和加载的网络结构层名有差异,unexpected key .....

猫猫与橙子的博客 1656

Spring框架知识点

今天是圣诞节圣诞老人给我送了个系统bug,24号加班到晚上12点多在便利店买了杯暖柚发现有便利店真好,我还可以喝到暖暖的饮料,最近加班太多,原本今天请假休息、没想到圣诞老人给我送了礼物O(∩_∩)O哈哈~ 昨天系统迁移改造,修改的地方没有测试全面,导致生产功能报错,中午还没缓过来呢,就找vpn连接看问题,发邮件打版本,脑袋很沉、思考缓慢感觉我要挂了O(∩_∩)O哈哈~、最近思考了一下,有些东西记不住了感觉就在嘴边就是说不出来、忘了需要整理一下。给自己立个flag。我知道自己哪里不知道的我都要知道。也就是不

liuzhenteng521的博客 554

大数据面试必考题:Spark数据倾斜问题总结和优化措施

在Spark分布式计算环境中,

大模型大数据攻城狮的专栏 1465

【图像拼接】源码精读:Parallax-Tolerant Unsupervised Deep Image Stitching(UDIS++)

注:Pytorch代码。【图像拼接论文精读】专栏对应文章【图像拼接】论文精读:Parallax-Tolerant Unsupervised Deep Image Stitching(UDIS++)配合对应的文章阅读,效果更佳!注:请重点关注代码段中的注释!!!有一些讲解的东西直接写在代码段的注释中了,同时多关注红色字体和绿色字体!!!我认为深度学习方法和传统方法有很多相似之处。比如:深度学习中的损失函数和传统方法中的对齐项、失真项等其实原理相同,只是求解方式不同。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 7273

【Spring框架 四】

Spring 测试框架与 Spring 本身的集成非常紧密,它利用了 Spring 的核心特性如依赖注入(DI)、面向切面编程(AOP)、事务管理等,使得测试更加高效和便捷。

Snow的博客 958

【硬刚Hive】HIVE基础(20):Hive函数(9) over 窗口函数

欢迎关注博客主页:微信搜:import_bigdata,大数据领域硬核原创作者_王知无(import_bigdata)_优快云博客 欢迎点赞、收藏、留言 ,欢迎留言交流!本文由【王知无】原创,首发于 优快云博客!本文首发优快云论坛,未经过官方和本人允许,严禁转载! 本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的Hive部分补充。 hive窗口函数语法 在前言中我们已经说了avg()、sum()、max()、min()是分析函数,而over()才是窗..

微信搜:import_bigdata,大数据领域硬核原创作者 888

Spring面试知识点总结

Spring知识点总结 1. 简介一下Spring框架。答:Spring框架是一个开源的容器性质的轻量级框架。主要有三大特点:容器、IOC(控制反转)、AOP(面向切面编程)。 2. Spring框架有哪些优点?谈谈你的看法。答:Spring框架主要有三大优点:(1) 容器。Spring框架是一个容器,能够管理项目中的所有对象。(2) IOC(控制反转)。Spring将创建对象的方式反转了,从程序...

lz1170063911的博客 1万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Spring知识点

Spring知识点

YIYIYI 1580

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Spring框架面试常问知识点总结

aop是面向切面编程,在spring中用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取公共模块复用,降低耦合,一般比如可以做为公共日志保存,事务处理等。

Sabotd的博客 1201

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

SSM框架核心知识点总结

【代码】SSM框架核心知识点总结。

weixin_52236586的博客 1235

Spring框架知识点汇总

简单来说, Bean 代表被 IoC 容器管理的对象。我们通过配置文件或注解,告诉 oc 容器帮助我们管理哪些对象。

qq_51593012的博客 1067

Spring框架学习-详细知识点总结

一、Spring框架基础知识【面试点】 · Spring的官方网站:https://spring.io/ · Maven仓库的官方网站http://mvnrepository.com/ · 主要学习framewrok核心框架 · 主要学习:https://docs.spring.io/spring/docs/5.1.7.RELEASE/spring-framework-reference/core...

sinat_35206340的博客 1161

Spring框架知识点总结【2020最新版】

以下内容为学习Spring框架时所记的笔记,现在翻出来复习、整理一下分享出来,如果内容有需要修正的地方,欢迎各位在评论区指正,如果转载请附带原文地址表明出处,谢谢大家。 目录Spring是什么?Spring由哪些模块组成?Spring的特点?Spring IOC容器的介绍IOC的思想IOC容器的概念Bean的概念Spring IOC 容器类型BeanFactoryApplicationContext使用IOC有什么好处?SpringIOC创建对象的方式有哪些?SpringIOC的三种注入(DI)方式?.

weixin_43246215的博客 3893

Spring框架的知识点

** 最近在学习java后端技术,目标全栈工程师。整理下Spring框架的知识点 ** Spring介绍 Spring是一个基于IOC和AOP的结构J2EE系统的框架 IOC 反转控制 是Spring的基础,Inversion Of Control 简单说就是创建对象由以前的程序员自己new 构造方法来调用,变成了交由Spring创建对象 DI 依赖注入 Dependency Inject. 简单...

Java小囧子的博客 616

四【Spring框架】

1.1 Spring是为了解决企业应用开发的复杂性而创建的一个轻量级的Java开发框架

不会飞的小飞侠24 954

Spring框架及源码知识点

1、依赖注入(DI) 和 控制反转(IoC) 概念http://blog.youkuaiyun.com/hbtj_1216/article/details/728110772、spring AOP——面向切面编程(上)http://blog.youkuaiyun.com/hbtj_1216/article/details/728345473、Spring AOP——面向切面编程(下)http://blog.youkuaiyun.com

西瓜游侠的博客 774

ssm之spring框架知识点总结

Spring框架知识点总结 spring是什么: Spring一个开源的,用来简化企业级应用开发的应用开发框架。Spring的核心就是IOC(控制反转)和AOP(面向切面编程),提供了展示层SpringMvc和控制层Spring JDBC以及业务层事务管理等众多企业级应用技术。 Spring容器:spring框架中的一个核心模块,用来管理对象(包括对象的创建,销毁和初始化等)。它帮助完成类的初始化...

JAVA_php_Jack的博客 936
上一篇: Spring框架重要知识点总结(三)
下一篇: SpringMVC框架重要知识点总结(一)
智汇风渔AI小白
博客等级 码龄7年 1万+粉丝 179原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智汇风渔AI小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值