数据校验

SpringBoot 使用validation数据校验

你。 提交于 2019-12-29 00:24:24
后端对数据进行验证 添加包 hibernate-validator <!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator --> <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>6.0.2.Final</version> </dependency> 或者添加spring-boot-starter-validation <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> <version>1.4.0.RELEASE</version> </dependency> 或者添加spring-boot-starter-web

spring boot(八)——数据验证

。_饼干妹妹 提交于 2019-12-28 17:23:20
前言 在默认情况下springboot会引入Hibernate Validator机制来支持JSR-303验证规范,另外一个方面我们偶尔也会自定义验证规则。 1、加上验证 这个操作比较简单,只需要在目标对象上加入注解即可,如下所示: package com.learn.springauthserver.dto; import lombok.Data; import org.hibernate.validator.constraints.NotBlank; import java.io.Serializable; /** * autor:liman * createtime:2019/12/15 * comment: */ @Data public class UpdatePsdDto implements Serializable { @NotBlank(message="旧密码不能为空") private String oldPassword; @NotBlank(message="新密码不能为空") private String newPassword; } 这里用到了lombok插件,左右直接省略了各种getter和setter方法,通过@NotBlank注解加入了针对这个字段的校验, 2、标示需要验证 在controller中,标示该对象为需要验证的对象,需要加入

脚本中如何做填报数据校验

試著忘記壹切 提交于 2019-12-28 12:24:26
在很多填报表项目的开发过程中,为了保证数据规范且有效,常会在报表中设置各种校验以达到目的,比如:工资金额最多只允许包含两位小数、邮政编码必须是全数字组成的 6 位数且首位数字不能是 0 ,等等。这些要求,我们都可以利用报表工具提供的数据类型校验、单元格校验等手段来实现,但是总有“意外”情况出现,比如:小计校验要求分组内的各值相加等于分组小计,这种类型的校验有什么难点?怎么实现?下面我们举例实际看一下。 首先,了解基本情况及要求: 展现效果: 要求: 报表数据来源于数据库,其中 A 列指标名称是从数据库扩展取出的,要求各项计算结果满足分组内各值相加等于分组小计(比如:要求本年本月累计项中,指标代码 2 = 指标代码 3 + 指标代码 4),如果不满足则给出提示信息,要求进行修改,满足则可以正常提交。 报表设计界面如下: 其中 数据来源: 数据去向: 数据处理部分直接通过向导生成,这里不多做说明了。 分析难点: 由于分组小计(指标代码 2) 和 分组各项(指标代码 3+ 指标代码 4)都是从同一个字段“指标名称”扩展而来,报表不能准确定位取到参与计算单元格的位置并进行计算,故报表层面很难实现这种小计校验。 那么,就没办法实现了吗?(坏笑)对于润乾报表来说,显然那是不可能的。下面重点介绍这个神技能 : 脚本校验 什么?脚本校验没听过?没关系,往下看… 操作: 从回填脚本中取出需要计算值;

Hamming校验码

偶尔善良 提交于 2019-12-28 01:19:05
可参考:http://winda.blog.51cto.com/55153/1068000 Hamming校验码作用:用于校验通信数据,防止出现错误,并具有一定的纠错功能。 汉明码在传输的消息流中插入验证码,当计算机存储或移动数据时,可能会产生数据位错误,以侦测并更正单一比特错误。由于汉明编码简单,它们被广泛应用于内存(RAM)。 1,获取最小校验码位数:对于有n个信息位的信息,需要k个校验位,满足:2^k-1>=n+k;使k最小即可得出n个信息位所需最小的校验码数; 2,确定校验码所在位置:共有(n+k)个位串,即校验码所在位和信息所在位;只要确定校验码,剩下的位就是信息位。校验码位在从左起的第2^k位处; 3,确定每一位校验码的值:这与其要校验的位有关,第i位的校验规则,从自身起连续校验i位,然后跳过i位,再连续校验i位,再跳过i位,...以此推理。整个校验序列中只有校验位是不确定的,最后根据是奇校验还是偶校验确定校验位的值。 4,如何校验字串:各位校验码对其所校验的位进行异或运算,若整个码字不发生差错,在偶校验下各组结果应为0,在奇校验下各组结果应为1; 5,如何纠错:由于汉明校验码是一种多重校验码,所以可以确定是哪位出错,直接对该位取反即可。 来源: https://www.cnblogs.com/itdev/p/6618968.html

汉明码(Hamming Code)原理及实现

早过忘川 提交于 2019-12-28 01:14:08
汉明码实现原理 汉明码(Hamming Code)是广泛用于内存和磁盘纠错的编码。汉明码不仅可以用来检测转移数据时发生的错误,还可以用来修正错误。(要注意的是,汉明码只能发现和修正一位错误,对于两位或者两位以上的错误无法正确和发现)。 汉明码的实现原则是在原来的数据的插入k位数据作为校验位,把原来的N为数据变为m(m = n +k)位编码。其中编码时要满足以下原则: 2 ^ k - 1 >= m 其中 ( m = n + k ) 这就是Hamming不等式,汉明码规定,我们所得到的m位编码的2^k ( k>=0 && 2^k < m)位上插入特殊的校验码,其余位把源码按顺序放置。 汉明码的编码规则如下: 在新的编码的2^(k - 1)( k >= 0)位上填入0(即校验位) 把新的编码的其余位把源码按原顺序填入 校验位的编码方式为:第k位校验码从则从新的编码的第2^(k - 1)位开始,每计算2^(k - 1)位的异或,跳2^(k - 1)位,再计算下一组2^(k - 1)位的异或,填入2^(k - 1)位,比如: 第1位校验码位于新的编码的第1位(2 ^(1-1) == 1)(汉明码从1位开始),计算1,3,5,7,9,11,13,15,...位的异或,填入新的编码的第1位。 第2位校验码位于新的编码的第2位(2 ^(2-1) == 2),计算2,3,6,7,10,11,14

Django-6

懵懂的女人 提交于 2019-12-27 17:50:41
目录 Django-6 在表中批量新增记录的两种方式 第一种 第二种(bulk_create) 自定义简易分页器 利用封装好的分页器 创建多对多表关系的三种方式 全自动(***) 纯手动(*) 半自动 Form组件 不用form组件指定input输入规范 form组件的使用 form组件钩子函数 form组件的其它字段 Django-6 在表中批量新增记录的两种方式 第一种 def add_msg(request): for i in range(1000): models.Book.objects.create(title='第%s本书'%i) return HttpResponse('数据全部插入成功!') ''' 这种插入方式每次插入时都访问一次数据库,并且在数据表中新增记录的时间本来就过长,当批量新增记录条数过多时,往往延迟过高,并且频繁访问数据库会造成数据压力过大,效率极低,所以不推荐使用。 ''' 第二种(bulk_create) def add_msg(request): book_list = [] for i in range(100000): book_list.append(models.Book('title'=''第%s本书'%i')) models.Book.objects.bulk_create(book_list) '''

javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册

醉酒当歌 提交于 2019-12-27 15:08:43
一、Servlet+JSP+JavaBean开发模式(MVC)介绍   Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据。 Servlet+JSP+JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式。   这里以一个最常用的用户登录注册程序来讲解Servlet+JSP+JavaBean开发模式,通过这个用户登录注册程序综合案例,把之前的学过的XML、Xpath、Servlet、jsp的知识点都串联起来。 二、创建MVC架构的Web项目   在MyEclipse中新创建一个webmvcframework项目,导入项目所需要的开发包(jar包),创建项目所需要的包,在java开发中,架构的层次是以包的形式体现出来的 项目所需要的开发包(jar包) 序号 开发包名称 描述 1 dom4j-1.6.1.jar dom4j用于操作XML文件 2 jaxen-1.1-beta-6.jar 用于解析XPath表达式 3 commons-beanutils-1.8.0.jar 工具类,用于处理bean对象 4 commons-logging.jar commons-beanutils-1.8.0.jar 的依赖jar包 5 jstl.jar

序列化模块知识要点

杀马特。学长 韩版系。学妹 提交于 2019-12-26 01:39:14
目录 三流: 标准输入流: 标准输出流: 标准错误流: 序列化家族 1、serializer类:底层序列化类--了解 2、modelserializer类:模型序列化类--核心类 3、ListSerializer类:群操作序列化类--辅助类 models.py中注意事项: Serializer序列化(了解) drf序列化过程 视图类序列化过程: 视图类反序列化过程: 序列化总结 序列化:将程序直接使用的数据转化成可传输格式数据就叫序列化 序列化总结 反序列化总结 ModelSerializer类序列化与反序列化总结 视图类 序列化类 三流: 标准输入流: import sys sys.stdin.readline('123') 标准输出流: import sys sys.stdout.write('123') 标准错误流: import sys sys.stderr.write 序列化家族 1、serializer类:底层序列化类--了解 ​ 重点:单表序列化 2、modelserializer类:模型序列化类--核心类 ​ 重点:多表序列化 3、ListSerializer类:群操作序列化类--辅助类 ​ 重点:辅助完成单表多表群增群改操作 models.py中注意事项: 可以设置配置类meta from django.db import models class User

django之forms模块实现数据校验

房东的猫 提交于 2019-12-26 01:28:34
批量插入数据 使用 bulk_create方法效率较高 1.往书籍表中插入数据 1000 for i in range(1000): # 这种插入方式 效率极低 models.Book.objects.create(title='第%s本书'%i) book_list = [] for i in range(100000): # 时间还是很短 两者差距很大 book_list.append(models.Book(title='第%s本书'%i)) models.Book.objects.bulk_create(book_list) # 批量插入数据 2.将刚刚插入的数据查询出来展示到前端 book_queryset = models.Book.objects.all() return render(request,'index.html',locals()) ​ 自定义分页器 ​ ​ 自定义分页器的推倒 在views.py文件中 ​ def index(request): ​ # 1.获取用户想要访问的页码数 ​ current_page = request.GET.get('page',1) # 如果没有page参数 默认就展示第一页 ​ # 转成整型 ​ current_page = int(current_page) ​ # 2.每页展示10条数据 ​ per_page

Django-多对多建表与Form表单

落花浮王杯 提交于 2019-12-25 18:28:18
一、多对多建表的三种创建方式:  1.全自动型:(一般情况下使用) class Book(models.Model): title = models.CharField(max_length=32) authors = models.ManyToManyField(to='Authors')# 多对多关系字段 class Authors(models.Model): name = models.CharField(max_length=32) 全自动型:   优点:至始至终都没有操作第三张表,全部都是由ORM自动创建的,还内置了四个操作第三张表的方法。(add,添加、remove,删除、set,设置、clear,清空)   缺点:全自动创建的表无法扩展修改字段,表的扩展性较差。  2.纯手撸型:(了解即可) class Book(models.Model): title = models.CharField(max_length=32) class Authors(models.Model): name = models.CharField(max_length=32) class Book2Authors(models.Model): book = models.ForeignKey(to="Book") author = models.ForeignKey(to=