数据从前端传到后端入库过程分析

数据从前端传到后端入库过程分析

概述

        积累了一些项目经验,成长为一个老程序员了,自认为对各种业务和技术都能得心应手的应对了,殊不知很多时候我们借助了搜索引擎的能力,当然现在大家都是通过AI来武装自己。

        今天要分析的话题是数据从前端传到后端再到插入数据库的数据类型转换过程。

有哪些数据类型

前端

在前端开发中,JavaScript 是最常用的编程语言之一。JavaScript 拥有多种数据类型,这些数据类型可以分为基本数据类型和引用数据类型。

基本数据类型

基本数据类型是存储在栈内存中的简单数据段,占用的内存较小,可以直接操作它们的值。JavaScript 的基本数据类型包括:

  1. String:字符串,用于表示文本值,例如 "Hello, World!"1。

  2. Number:数字,可以是整数或浮点数,例如 42 或 3.142。

  3. Boolean:布尔值,有两个值:true 和 false2。

  4. Null:表示空值,是一个特殊的关键字,表示变量没有值1。

  5. Undefined:表示未定义,是一个特殊的关键字,表示变量未赋值1。

  6. Symbol:ES6 引入的一种新的原始数据类型,表示独一无二的值3。

  7. BigInt:可以表示任意大的整数,超过了 Number 的安全整数限制1。

引用数据类型

引用数据类型是存储在堆内存中的对象,变量中保存的是一个指针,指向内存堆中的实际值。JavaScript 的引用数据类型包括:

  1. Object:对象,是一种复合数据类型,可以包含多个键值对2。

  2. Array:数组,是一种特殊的对象,用于存储有序的元素集合3。

  3. Function:函数,是一种可调用的对象,用于封装可执行的代码块3。

  4. RegExp:正则表达式,是一种用于匹配字符串模式的特殊对象3。

  5. Date:日期对象,用于处理日期和时间

后端

        这里主要以Java为例来进行讲解,Java语言中的数据类型分为两大类:基本数据类型和引用数据类型。基本数据类型包括四种整数型、两种浮点型、一种字符型和一种布尔型。引用数据类型则包括类(Class)、接口(Interface)和数组(Array)。

基本数据类型

基本数据类型是Java语言预定义的,它们的大小和值的范围是固定的。Java定义了以下几种基本数据类型:

  • 整数型:包括byte(1字节)、short(2字节)、int(4字节)和long(8字节)。

  • 浮点型:包括float(4字节)和double(8字节)。

  • 字符型char(2字节),用于表示单个字符。

  • 布尔型boolean,用于表示真(true)或假(false)。

每种基本数据类型都有对应的包装类,例如Integerint的包装类,Doubledouble的包装类。包装类提供了一些方法来操作基本数据类型的值,同时也允许使用泛型。

引用数据类型

引用数据类型指向一个对象,它们引用的是对象在内存中的地址。Java中的引用数据类型主要包括:

  • 类(Class):定义了一组具有相同属性(变量)和行为(方法)的对象的模板。

  • 接口(Interface):定义了一组方法规范,由实现接口的类去具体实现。

  • 数组(Array):用于存储固定大小的同类型元素。

引用数据类型的默认值是null,表示它们没有指向任何对象。

数据库

        这里主要以MySQL为例进行讲解,MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

数值类型

日期和时间类型

字符串类型

        上面罗列了前后端以及数据库支持的数据类型,下面整理了一些数据的对应关系:

实践分析

        本小节通过实践demo来对所有数据类型进行分析,通过实践案例讲解的方式来深入理解各数据类型的转换机制。

        首先创建了一个如下涵盖大部分mysql数据类型的表:

        然后创建了一个穷举所有数据类型的实体对象:

        之后我们编写一个测试方法:

        准备完毕之后我们开始进行debug实验,接口传参如下:

Controller层接参如下:

可以看到参数都能够正确接收到,并且根据实体对象类型进行了转换,入库之后如下所示:

        这是一个很有趣的小实验,很多人在开发者懵懵懂懂的,感觉自己都会了,但是一单严格问就答不上来了,如果前后端到入库数据类型对应关系没搞清,又怎么能够写出优雅的代码,所以建议大家都是实际验证一下自己的猜想,巩固好基础知识点。

总结

        本篇博客构思的挺久才开始下笔,出品一篇文章的确来之不易,从有了想法之后开始构思和收集材料,另外技术文章尽可能具备实战性,所以最后我都习惯配合实践demo来说明,希望大家看完文章有所收获。

        时光荏苒,已经是25年了,新的一年大家继续加油!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/958424.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Netty 实战

Netty实践 1 Netty 版本选择2 Netty 模版代码2.1 Server2.2 Client 3 组件3.1 EventLoop、EventLoopGroup3.1.1 EventLoop3.1.2 EventLoopGroup 3.2 Channel3.2.1 ChannelFuture3.2.2 CloseFuture 3.3 ChannelHandler3.2.1 常用的 ChannelInboundHandlerAdapter3.2.1.1 LineBas…

Triton:内存高效注意力机制的实现与解析

Triton:内存高效注意力机制的实现与解析 引言 在深度学习领域,特别是自然语言处理(NLP)任务中,注意力机制是模型理解序列数据的关键组成部分。然而,随着模型规模和输入长度的增长,传统的注意力机制面临着…

微信小程序使用上拉加载onReachBottom。页面拖不动。一直无法触发上拉的事件。

1,可能是原因是你使用了scroll-view的标签,用onReachBottom触发加载事件。这两个是有冲突的。没办法一起使用。如果页面的样式是滚动的是无法去触发页面的onReachBottom的函数的。因此,你使用overflow:auto.来使用页面的某些元素滚动&#xf…

机器学习2 (笔记)(朴素贝叶斯,集成学习,KNN和matlab运用)

朴素贝叶斯模型 贝叶斯定理: 常见类型 算法流程 优缺点 集成学习算法 基本原理 常见方法 KNN(聚类模型) 算法性质: 核心原理: 算法流程 优缺点 matlab中的运用 朴素贝叶斯模型 朴素贝叶斯模型是基于贝叶斯…

【2024年华为OD机试】(B卷,100分)- 非严格递增连续数字序列 (JavaScriptJava PythonC/C++)

一、问题描述 题目描述 给定一个仅包含大小写字母和数字的字符串,要求找出其中最长的非严格递增连续数字序列的长度。非严格递增连续数字序列指的是序列中的数字从左到右依次递增或保持不变,例如 12234 就是一个非严格递增连续数字序列。 输入描述 输…

Android中Service在新进程中的启动流程2

目录 1、Service在客户端的启动入口 2、Service启动在AMS的处理 3、Service在新进程中的启动 4、Service与AMS的关系再续 上一篇文章中我们了解了Service在新进程中启动的大致流程,同时认识了与客户端进程交互的接口IApplicationThread以及与AMS交互的接口IActi…

Three城市引擎地图插件Geo-3d

一、简介 基于Three开发,为Three 3D场景提供GIS能力和城市底座渲染能力。支持Web墨卡托、WGS84、GCJ02等坐标系,支持坐标转换,支持影像、地形、geojson建筑、道路,植被等渲染。支持自定义主题。 二、效果 三、代码 //插件初始化…

Ubuntu环境 nginx 源码 编译安装

ubuntu 终端 使用 wget 下载源码 sudo wget http://nginx.org/download/nginx-1.24.0.tar.gz解压刚下载的源码压缩包 nginx-1.24.0.tar.gz sudo tar -zxvf nginx-1.24.0.tar.gz 解压完成 产生 nginx-1.24.0 目录 进入该目录 cd ./nginx-1.24.0 目录下有一个可执行文件 con…

【深度学习】神经网络实战分类与回归任务

第一步 读取数据 ①导入torch import torch ②使用魔法命令,使它使得生成的图形直接嵌入到 Notebook 的单元格输出中,而不是弹出新的窗口来显示图形 %matplotlib inline③读取文件 from pathlib import Path import requestsDATA_PATHPath("dat…

60,【1】BUUCF web [RCTF2015]EasySQL1

先查看源码 1&#xff0c;changepwd&#xff08;修改密码&#xff09; <?php // 开启会话&#xff0c;以便使用会话变量 session_start();// 设置页面的内容类型为 HTML 并使用 UTF-8 编码 header("Content-Type: text/html; charsetUTF-8");// 引入配置文件&…

Chrome插件:图片缩放为头像(128*128)

前置条件&#xff1a; 安装有chrome谷歌浏览器的电脑 使用步骤&#xff1a; 1.打开chrome扩展插件 2.点击管理扩展程序 3.加载已解压的扩展程序 4.选择对应文件夹 5.成功后会出现一个扩展小程序 6.点击对应小程序 7.使用小程序 8.拖拽成功后会自动保存到下载 代码&#xf…

machine learning knn算法之使用KNN对鸢尾花数据集进行分类

通过导入必要的scikit-learn导入必要的库&#xff0c;加载给定的数据&#xff0c;划分测试集和训练集之后训练预测和评估即可 具体代码如下&#xff1a; import numpy as np from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split f…

电子应用设计方案102:智能家庭AI鱼缸系统设计

智能家庭 AI 鱼缸系统设计 一、引言 智能家庭 AI 鱼缸系统旨在为鱼类提供一个健康、舒适的生活环境&#xff0c;同时为用户提供便捷的管理和观赏体验。 二、系统概述 1. 系统目标 - 自动维持水质稳定&#xff0c;包括水温、酸碱度、硬度和溶氧量等关键指标。 - 智能投食&…

【C语言系列】深入理解指针(3)

深入理解指针&#xff08;3&#xff09; 一、字符指针变量二、数组指针变量2.1数组指针变量是什么&#xff1f;2.2数组指针变量怎么初始化&#xff1f; 三、二维数组传参的本质四、函数指针变量4.1函数指针变量的创建4.2函数指针变量的使用4.3两段有趣的代码4.4 typedef关键字 …

2024年度总结-CSDN

2024年CSDN年度总结 Author&#xff1a;OnceDay Date&#xff1a;2025年1月21日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 文章目录 2024年CSDN年度总结1. 整体回顾2…

Linux下php8安装phpredis扩展的方法

Linux下php8安装phpredis扩展的方法 下载redis扩展执行安装编辑php.ini文件重启php-fpmphpinfo 查看 下载redis扩展 前提是已经安装好redis服务了 php-redis下载地址 https://github.com/phpredis/phpredis 执行命令 git clone https://github.com/phpredis/phpredis.git执行…

我的2024年度历程回顾

一、自我介绍 这个是我的 个人主页 &#xff1a; zxctscl 从2023年到现在一些小成就 我主要分享的文章是C语言和C方面&#xff1a; 当然也有不少算法题&#xff1a; 二、年度回顾 在过去的一年里&#xff0c;也有不少收获&#xff1a; 在C编程语言的学习方面取得了显著…

AIGC专栏18——EasyAnimateV5.1版本详解 应用Qwen2 VL作为文本编码器,支持轨迹控制与相机镜头控制

AIGC专栏18——EasyAnimateV5.1版本详解 应用Qwen2 VL作为文本编码器&#xff0c;支持轨迹控制与相机镜头控制 学习前言相关地址汇总源码下载地址HF测试链接MS测试链接 测试效果Image to VideoText to Video轨迹控制镜头控制 EasyAnimate详解技术储备Qwen2 VLStable Diffusion …

YOLOv8改进,YOLOv8检测头融合DSConv(动态蛇形卷积),并添加小目标检测层(四头检测),适合目标检测、分割等

精确分割拓扑管状结构例如血管和道路,对各个领域至关重要,可确保下游任务的准确性和效率。然而,许多因素使任务变得复杂,包括细小脆弱的局部结构和复杂多变的全局形态。在这项工作中,注意到管状结构的特殊特征,并利用这一知识来引导 DSCNet 在三个阶段同时增强感知:特征…

U3D的.Net学习

Mono&#xff1a;这是 Unity 最初采用的方式&#xff0c;它将 C# 代码编译为中间语言 (IL)&#xff0c;然后在目标平台上使用虚拟机 (VM) 将其转换为本地机器码执行。 IL2CPP&#xff1a;这是一种较新的方法&#xff0c;它会将 C# 代码先编译为 C 代码&#xff0c;再由 C 编译器…