MVC的学习与实战

《ASP.NET MVC 企业级实战》 - 学习笔记 《ASP.NET MVC 企业级实战》 ========== ========== ========== [作者] (中) 邹琼俊 [出版] 清华大学出版社 [版次] 2017年04月 第1版 [印次] 2019年08月 第6次 印刷 [定价] 89.00元 ========== ========== ========== 【第01章】 (P021) 只有在 Lambda 有一个输入参数时,括号才是可选的,否则括号是必需的。 使用空括号指定零个输入参数。 【第02章】 (P037) ... 阅读详情

随着前端,后端,数据库学习的完成,紧接着就是框架了,最近学习了SpringMVC,可以很好的把前后端数据库联系起来,用分层的思想来完成工作。

SpringMVC简介

SpringMVC分别对应着的是M:Model数据模型、V:View视图、C:Controller控制层。

将软件分层达到松耦合的效果,这样进行分层的结构,使得代码分离结构清晰,各层代码,各司其职,易于开发大型项目,这样的设计思想在任何软件的开发过程中都因该适用,各个部分相互独立,互不干扰,都做自己最擅长的的部分,提高代码的复用性!

工作原理图(摘自csdn:"cgblpx")

 工作原理简短描述

1,前端控制器DispatcherServlet:
当浏览器发送请求成功后,充当这调度者的角色,负责调度每个组件.
2,处理器映射器HandlerMapping:
根据请求的URL路径,找到能处理请求的类名和方法名
url: http://localhost:8080/hi , 找到Hello类里的hi()
3,处理器适配器HandlerAdapter:
正式开始处理业务,并把返回结果的结果交给DispatcherServlet
4,视图解析器ViewResolver:
找到正确的,能展示数据的视图,准备展示数据
5,视图渲染View:
展示数据

配置名词简介

在JAVA下创建两个包

  •         Controller:控制层包,用于接收请求和给出相应
  •         pojo:Model数据层包,用于封装对象,保存数据

还有一个启动类RunApp,用于启动服务,充当服务器。这里需要用到注解@SpringBootApplication在类上添加

而Controller类里需要在类上添加@RestController注解;在类上或者方法上添加@RequestMapping注解,负责控制网页的访问方式,一般在类上加一个为主访问方式,在方法上加一个为副访问方式。

孩子也是刚学啊,只会使用,底层原理都不了解~~~

实战Demo

直接开始实战把,碰到什么知识点讲什么。

一、前端页面的搭建

个人习惯从前端页面开始做起!

使用HBuilder加CSS修饰做一个表单负责给后台提交数据,后台使用JDBC吧数据传输进数据库中保存。

效果图

实现代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>学生信息管理系统</title>
		<style type="text/css">
			.b{
				background-color: blue;
				border: blue;
				color: white;
			}
			.c{
				background-color: red;
				border: red;
				color: white;
			}
			.a{
				padding: 0.325rem;
				width: 250px;
				height: 30px;
			}
		</style>
	</head>
	<body>
		<h1>学生信息管理系统</h1>
		<form action="http://127.0.0.1:8080/stu/add" method="post">
			<table border="0" cellspacing="0" cellpadding="">
				<tr><td>姓名</td></tr>
				<tr><td><input class="a" type="text" placeholder="请输入姓名" name="name" id="" value="" /></td></tr>
				<tr><td>年龄</td></tr>
				<tr><td><input class="a" type="text" placeholder="请输入姓名" name="age" id="" value="" /></td></tr>
				<tr><td>性别:
						<input type="radio" class="" name="sex" id="" value="1" checked="checked" />
						男
						<input type="radio" class="" name="sex" id="" value="0" />
						女
						</td></tr>
				<tr><td>爱好:
						<input type="checkbox" name="hobby" id="" value="ppq" checked="checked"/>
						乒乓球
						<input type="checkbox" name="hobby" id="" value="ps" />
						爬山
						<input type="checkbox" name="hobby" id="" value="cg" />
						唱歌</td></tr>
				<tr><td>学历:<select name="edu">
						<option value ="1">本科</option>
						<option value ="2">硕士</option>
						<option value ="3">博士</option>
						</select>
						</td></tr>
				<tr><td>入学日期</td></tr>
				<tr><td><input name="intime" type="date" name="" id="" value="" /></td></tr>
				<tr align="center"><td >
					<input class="b" type="submit" name="" id="" value="保存" />
					<input class="c" type="button" name="" id="" value="取消" />
				</td></tr>
			</table>
		</form>
	</body>
</html>

 知识点:

  1. 表单头method属性的参数为post,交给程序器处理,而配合使用的就是action属性,它的参数是指包表单提交的数据给到哪里去处理。
  2. 下面的input语句要注意它们的类型和返回的值,关系到后面对象的创建与数据库的设计
  3. 返回值如果是汉字需要占用三个空间,而字母或者数字只占用一个空间,所以有些返回值可以用数字或者汉字的英文缩写来替代,节约空间。
  4. 单选框的name值要一样,否则产生不了单选的效果

二、后端的编写

  1. 创建一个Maven项目,结构先搭建好
  2. 创建Controller包存放控制层代码
  3. 创建一个pojo包存放封装数据的代码
  4. 在大包下创建一个启动类RunApp负责服务器启动
  5. 考虑到要用JDBC进行数据传输,所以在pom.xml里添加JDBC的jar包依赖

结构已经搭建完成,接下来进行代码的编写

启动类RunApp

package cn.tedu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class RunApp {
    public static void main(String[] args) {
        SpringApplication.run(RunApp.class);
    }
}

封装数据类Student

package cn.tedu.pojo;

import org.springframework.format.annotation.DateTimeFormat;

import java.util.Arrays;
import java.util.Date;

public class Student {
    private String name;
    private Integer age;
    private Integer sex;
    private String[] hobby;
    private Integer edu;

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date intime;

    public String getName(){
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public String[] getHobby() {
        return hobby;
    }

    public void setHobby(String[] hobby) {
        this.hobby = hobby;
    }

    public Integer getEdu() {
        return edu;
    }

    public void setEdu(Integer edu) {
        this.edu = edu;
    }

    public Date getIntime() {
        return intime;
    }

    public void setIntime(Date intime) {
        this.intime = intime;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex=" + sex +
                ", hobby=" + Arrays.toString(hobby) +
                ", edu=" + edu +
                ", intime=" + intime +
                '}';
    }
}

控制类StudentController

package cn.tedu.Controller;

import cn.tedu.pojo.Student;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Arrays;

@RestController
@RequestMapping("stu")
public class StudentController {
    @RequestMapping("add")
    public Object add(Student s) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Driver");
        Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/cgb2106?characterEncoding=utf8", "root","root");
        PreparedStatement p = c.prepareStatement("insert into tb_student value(null ,?,?,?,?,?,?)");
        p.setObject(1, s.getName());
        p.setObject(2, s.getAge());
        p.setObject(3, s.getSex());
        p.setObject(4, Arrays.toString(s.getHobby()));
        p.setObject(5, s.getEdu());
        p.setObject(6, s.getIntime());
        int i = p.executeUpdate();
        p.close();
        c.close();
        return "数据插入成功";
    }
}

知识点:

  1. pojo类里的成员变量必须和前端的name值写的一样,否则报错
  2. 定义类型一般都是包装类,就算用户写错或者不写也有默认值,不会报错
  3. 浏览器提交的日期默认是String类型,需要用@DateTimeFormati进行格式的转换参数列表里写格式,如下:
  4. @DateTimeFormat(pattern = "yyyy-MM-dd")
  5. 注意@RequstMapping后面括号里写的访问方式一定要和前端页面相呼应
  6. 在方法里写JDBC用安全传输器,避免SQL注入的风险,代码如下:
  7. PreparedStatement p = c.prepareStatement("insert into tb_student value(null ,?,?,?,?,?,?)");
            p.setObject(1, s.getName());
            p.setObject(2, s.getAge());
            p.setObject(3, s.getSex());
            p.setObject(4, Arrays.toString(s.getHobby()));
            p.setObject(5, s.getEdu());
            p.setObject(6, s.getIntime());
            int i = p.executeUpdate();
  8. 设置值用Object类型,多态的体现,什么类型都可以,但是不能乱给,要符合数据库的设计
  9. 数组返回的是地址值,需要用Arrays.toString
  10. 最后注意资源的释放,节省空间

三、数据库的设计

设计图

知识点:

  1. 名字必须与前后端一致
  2. 类型合理设置,注意char和varchar的使用区别
  3. 给表设置主键的增加以及自增以及非空选项

四、结果展示

 

 

到此结束了,还有许多需要改进的地方以及对SpringMVC框架理解后面慢慢拓深自己的技术栈!

后面学习Spring和Mybatis。

fighting! 

fighting!!

fighting!!!

MVC3项目实战与改进:共同学习进步 MVC3框架是微软推出的一款用于ASP.NET环境下的Web应用开发框架。它实现了经典的MVC(Model-View-Controller,模型-视图-控制器)设计模式,将应用的业务逻辑、用户界面和输入处理等分离。这种设计使得开发更加模块化,更易于维护和扩展。MVC3是MVC2的升级版,对HTML帮助、路由、JQuery支持等方面都进行了改进,特别是引入了Razor视图引擎,大大提升了开发效率。 阅读详情

相关推荐

ASP.NET MVC4分步实战学习项目详解

尽管默认路由能满足大多数需求,但实际项目中往往需要更精细的URL控制。例如电商平台可能希望商品详情页具有如下格式:为此,可以在中添加专用路由:// 自定义产品路由(优先级高于默认路由)// 默认路由放在最后重要提示:路由注册顺序至关重要!ASP.NET MVC采用“先匹配先赢”策略,因此更具体的路由应放在通用路由之前。此外,还可结合Attribute Routing(需引入额外包或升级至MVC5+)实现声明式路由,但在MVC4.0中主要依赖集中式配置。

weixin_42522857的博客 854

1、SpringMVC:回顾MVC

什么是MVC? 模型(Model)(dao、service)、视图(View)(jsp)、控制器(Controller)(servlet)的简写,是一种软件设计规范 是将业务逻辑、数据、显示分离的方法来组织代码 MVC主要作用是降低了视图与业务逻辑的双向耦合 MVC不是一种设计模式,MVC是一种架构模式,当然不同的MVC存在差异 Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object

weixin_44152104的博客 454

全面学习ASP.NET MVC5+EF6+EasyUI项目实战源码

ASP.NET是一个用于开发动态网页的服务器端技术,由微软公司开发。它是.NET框架的一部分,提供了编写Web应用程序和Web服务的编程模型。ASP.NET拥有多种版本,其中ASP.NET Core是一个跨平台的、开源的版本,可用于构建高性能的Web应用和API。EasyUI允许开发者通过自定义CSS来创建属于自己的主题和皮肤,以满足企业级应用对于界面外观的个性化需求。主题是包含了一套颜色和样式规则的CSS文件,可以全局改变应用的外观。

weixin_42576804的博客 924

asp.net mvc企业级实战_这才是真正的Spring全家桶:Spring+SpringData+MVC+Boot+Cloud

按照 Spring 官方最新的说法,Spring 是现代 Java 的起源。不可否认,Spring 无论在 Java 生态系统,还是在就业市场,是绝对的王者。面试出镜率之高,投产规模之广,无出其右。随着技术的发展,Spring 从往日的 IoC 框架,已发展成 Cloud Native 基础设施,衍生出大量 Spring 技术栈,如大家熟知的 Spring Boot、Spring Cloud 和 ...

weixin_31829387的博客 381

mvc项目实战

本次课程主要从传统web开发过度到MVC下,一点一点的揭开MVC这门技术的神秘面纱,从每一个动作,每一个视图的展现以及每一个标签都会做详细的说明。基础准备完成后,我们会一起来深入了解MVC的路由、安全、客户端开发等高级特性,同时会融入开发框架的演变。最后讲述如何部署和实施,让整个开发过程串成一条线,让技术给我们解决实际问题的思路连贯起来。

【LaTeX PPT模板集】Beamer主题与配色使用教程

【LaTeX PPT模板集】Beamer主题与配色使用教程

Xminyang的博客 1万+

[回馈]ASP.NET Core MVC开发实战之商城系统(二)

经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页商品类型,banner条,友情链接等功能的开发,今天继续讲解首页的。注意:控制器方法中,往视图层传递数据采用ViewData和ViewBag实现,也可采用其他方式实现。注意:其中视图层代码,采用Razor表达式for循环,展示列表中的内容。等内容,仅供学习分享使用,如有不足之处,还请指正。关于Razor表达式的使用可参考其他文章。

绳锯木断,水滴石穿,专心写文,无问西东!!! 1114

华为云Stack的学习(三)

LVS是四层负载均衡,建立在OSI模型的传输层之上,所以效率非常高。NAT模式的转发主要通过修改IP地址(位于OSI模型的第三层网络层)实现转发。DR模式的转发主要通过修改MAC地址(位于OSI模型的第二层数据链路层)实现转发。云服务框架中使用的DR模式。域名解析服务器分为管理侧(OM)和租户侧(Tenant)**DNS-OM:**作为云服务的本地DNS服务器,为云服务提供域名解析服务,并代理公网域名的解析。

Ciyaso的博客 8562

SpringMVC 实战

主要内容 MVC 架构模式简介 SpringMVC 简介 SpringMVC 的基本使用 SpringMVC 基于注解开发 获取请求参数 指定处理请求类型 SpringMVC 处理响应 文件上传与下载 静态资源映射 S pringMVC 的异常处理 SpringMVC 拦截器 SpringMVC 对 Restful 风格的支持 JSON 数据处理 SpringMVC 解决跨域请求问题 SpringMVC 常用注解 SSM 框架整合 基于 Maven 搭建 SSM 整合 一、 MVC 架构模式简介 MVC 是

LiLi的博客 3169

UWB定位原理详细介绍

Hello大家好我是小智,今天我来给大家介绍下超宽带的定位原理,首先我们来讲下什么是UWB技术。 超宽带(Ultra Wide Band)简称UWB,和我们熟悉的WIFI、蓝牙技术一样属于通信技术的一种,UWB是一种无线载波通信技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,其所占的频谱范围很宽,右图是一种典型的正弦载波信号图。 UWB这种技术有什么特点呢? UWB系统结构实现简单;2.具有高速的数据传输能力;3.功耗低;4.安全性高;5.多径分辨能力强;6.可用于精确定位等特点。 UWB.

qq_35699674的博客 2万+

远程桌面项目

远程桌面项目

weixin_41560737的博客 1934

Spring MVC详解

Spring MVC是一个基于Spring框架的Web应用程序开发框架,它允许开发人员使用模型-视图-控制器(MVC)的设计模式来构建Web应用程序。

weixin_64939936的博客 500

反应堆设计:基于MATLAB的反应堆仿真和分析,包括反应堆稳态分析、反应堆动态分析和反应堆安全分析 介绍

反应堆设计是利用计算机技术对核反应堆进行设计和模拟,以获得安全、高效、经济的核能发电系统。它是核能领域的重要组成部分,在电力生产、核医学、科学研究等领域有着广泛的应用。

走向CTO的路上... 1113

Spring MVC 学习大纲:从基础入门到实战应用与源码解析(Vue.js 前端示例)

在开始学习 Spring MVC 之前,需要准备好开发环境。首先,确保已经安装了 Java JDK,这是运行 Java 程序的基础。其次,选择一个合适的集成开发环境(IDE),如 IntelliJ IDEA、Eclipse 或 Spring Tool Suite。这些 IDE 提供了丰富的功能,如代码提示、自动补全、错误检测等,能够大大提高开发效率。此外,还需要熟悉 Maven 或 Gradle 的使用。Maven 和 Gradle 是常用的 Java 项目构建工具,它们可以帮助管理项目的依赖关系、构建项目

874

《R 语言卡方检验全解析:手写代码实现与详细步骤》卡方检验

卡方检验(Chi-Square Test)是一种常用的统计方法,主要用于检验分类变量之间的独立性或拟合优度。在医学、社会科学等领域中,卡方检验常用于分析两个或多个分类变量之间的关系。以下是卡方检验的全面解析,包括实现代码和手写公式。χ2∑Ei​Oi​−Ei​2​Oi​Ei​dfr−1c−1rcdfk−1k如果卡方统计量大于临界值,或 p 值小于显著性水平(如 0.05),则拒绝原假设。

Mrrunsen的博客 685

把 ABAP SQL 窗口函数讲透:从 OVER 到 LEAD、RANK 与累计分析

ABAP SQL窗口函数在不丢失明细记录的前提下,为每行数据提供组内统计和排名功能。它通过OVER子句定义计算窗口,支持三类函数:聚合型(AVG/SUM等)、排名型(ROW_NUMBER/RANK等)和取值型(LEAD/LAG)。相比GROUP BY会合并多行数据,窗口函数保留原始记录同时附加计算结果,特别适合需要保留明细又要展示统计信息的业务场景,如销售排名、客户分层分析等。语法核心是OVER子句,通过PARTITION BY分组,ORDER BY排序,可灵活定义计算范围。

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

从MVC实战学习网站编写(一)初识MVC

前情概要: 曾是学生时代的我,初识架构是一个传说中的三层架构。这可是鼻祖啊!因为大多数程序设计架构都是由这个衍生而来。简单的说就是UI层(界面),BLL层(业务处理),DAL层(数据处理)。就是分工明确在不同的包里分别编译,便于管理。今天我们从MVC基础开始穿插GUI部分的MVVM架构,SQL的存储结构,触发器表设计。来做一个项目。鉴于水平有限,表述不清,我们再行商榷。 MVC基础:

梁州小栗的博客 1960

大模型长对话中上下文无法承载全部历史,如何压缩或提取重点

如果说截断和滑动窗口是“硬性”压缩,那摘要生成技术就显得“软”多了,也更接近于智能化的解决方案。它的思路是:不直接丢弃历史,而是通过自然语言处理(NLP)技术,把冗长的对话记录浓缩成一段简短的摘要,保留核心信息。这样既能大幅减少token数量,又不至于丢失关键内容。这种方法通常会借助预训练模型,比如BART或T5,它们擅长从长文本中提取重点内容。

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

Spring MVC RESTful 规范与实战学习笔记

本文介绍了Spring MVC中RESTful架构风格的实现与应用。主要内容包括:RESTful核心概念(以资源为中心,通过HTTP方法定义操作)、URL命名规范(使用名词复数、路径参数传ID)、HTTP请求方法对应业务场景(GET查、POST增、PUT改、DELETE删)。重点讲解了Spring MVC专用注解(如@RestController、@GetMapping等)的使用方法,并通过用户API实战案例演示了完整的控制器实现,包括查询所有用户、按ID查询、新增、更新和删除用户等RESTful接口设计,

2603_95369890的博客 404

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Spring MVC 框架学习笔记:从入门到精通的实战指南

在 Java Web 开发领域,Spring MVC 框架无疑是众多开发者的选择之一。它基于 Spring 框架,提供了强大的 MVC 架构支持,帮助开发者构建高性能、可维护的 Web 应用程序。本文将按照清晰的目录结构,带你深入了解 Spring MVC 的核心概念、功能特性以及实战应用。Spring MVC 是 Spring 框架的一部分,专门用于构建 Web 应用程序。

m0_72686196的博客 1371

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

《ASP.NET MVC 5 编程实战》 - 学习笔记

《ASP.NET MVC 5 编程实战》 ========== ========== ==========[作者] (美) Dino Esposito[译者] (中) 潘丽臣[出版] 清华大学出版社[版次] 2015年03月 第1版[印次] 2015年03月 第1次 印刷[定价] 59.80元========== ========== ========== 【前言】 Web Forms 的最常见应用场景是,你要开发专注于呈现数据并使用第三方控件套装的应用程序。 ASP.NET MVC 可用于处理其他所有.

rizon886的博客 408

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

《ASP.NET MVC 4 实战》 - 学习笔记

《ASP.NET MVC 4 实战》 ========== ========== ========== [作者] (美) Jeffrey Palermo (美) Jimmy Bogard (美) Eric Hexter (美) Matthew Hinze (英) Jeremy Skinner [译者] (中) 徐燕萍 李萍 林逸 [出版] 人民邮电出版社 [版次] 2014年05月 第1版 [印次] 2014年05月 第1次 印刷 [定价] 69.00元 ========== ========== ===

GATTACA2011 330

RPCS3 PS3 模拟器配置与性能调优完全指南:5 个关键动作搞定掉帧与画面异常

RPCS3 是一个在 PC 上运行 PS3 游戏的开源模拟器。读完本文,你会拿到一套覆盖图形、CPU 线程、音频与缓存的 RPCS3 配置方案,并能独立排查掉帧、黑屏、音频卡顿这三类最高频故障。 ## 环境自检与准备 配置再精细,硬件不达标也白搭。先对照下面的底线,再决定要不要折腾参数。 | 组件 | 最低 | 推荐 | |------|------|------| | CPU | 4 核

gitblog_00088的博客 549

请收下这一份Spring MVC源码学习大纲

通过以上大纲系统学习,可逐步掌握Spring MVC的底层原理与设计思想。建议结合等网页中的案例与调试指南,深化对请求分发、数据绑定等核心机制的理解。

程序员笔记 746

Spring MVC 实战学习系列(一)初体验

Spring MVC 实战学习系列(一)初体验 快要工作了,趁这个时间将Spring MVC自己的学习和使用经历为大家分享一下。为了让初学者快速入门尽可能的白话一些,但会安插一些理论的内容。废话不多说了开始吧!!!!! 先建立一个Spring MVC项目有一个直观认识 多参考官方文档,使用版本Spring 4.X 简单Spring MVC项目搭建 注意事项 目录 Spr

'传琦'博客 616

asp.net mvc 学习总结

自学MVC看这里——全网最全ASP.NET MVC 教程汇总 http://www.cnblogs.com/powertoolsteam/archive/2015/08/13/4667892.html MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC。小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口。本文从Why,What,How三个角度整理MVC 的学习资源,让学习者第一时间找到最有价值的文章,获取最彻底的ASp

Tusk_Act4的博客 2599
上一篇: 反射--简单入门讲解
下一篇: SpringMVC Spring Mybatis小结
希望不要秃头的0.0
博客等级 码龄6年 64粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值