自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jatej

java初学者,定期更新java知识点,欢迎指出其中的错误

  • 博客(85)
  • 收藏
  • 关注

原创 SpringBoot系列之数据验证

注:SpringBoot是为了简化Spring应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程主要内容:一、数据验证概述对于任何一个应用而言,客户端做的数据有效性验证都不是安全有效的,而数据验证又是一个企业级项目架构上最为基础的功能模块...

2020-02-20 17:32:56 655

原创 SpringBoot系列之统一异常处理

本章内容:@ControllerAdvice的三种使用方法以及具体场景 在SpringBoot中如何配置全局异常处理 如何添加异常处理方法 如何自定义异常一、@ControllerAdvice的三种用法@ControllerAdvice ,这是一个增强的 Controller。使用这个 Controller的注解 ,可以实现三个方面的功能:全局异常处理 全局数据...

2020-02-17 10:55:10 366

原创 js中的原型链

每一个函数都有一个prototype属性,成为原型,而原型的值也是一个对象,因此它也有自己的原型,这样就串起了一条原型链;原型链的链头是Object,他的prototype比较特殊,值为null;每个函数都有一个prototype属性,它是一个引用变量,默认指向一个空的object对象。当调用一个对象的函数或者是属性的时候,如果在当前对象里面找不到,那么就会在原型对象上逐层寻找;在javascript中,所有的对象都有一个__proto__的属性,它指向了当前对象的原型(prototype)。

2023-05-14 11:07:42 956 1

原创 angular学习笔记(八)RxJS(未完成)

可以用于做组件之间的数据共享

2022-06-05 22:21:55 247

原创 angular学习笔记(七)路由

在angular中,路由是以模块为单位的,每个模块都可以有自己的路由。定义的时候不需要加/,在访问的时候需要添加 根模块采用RouterModule.forRoot()启动路由,非根模块采用RouterModule.forChild()启动路由 通过命令ng g user --routing=true创建user模块和其对应的router模块...

2022-06-05 11:11:07 376

原创 angular学习笔记(六)表单

在angular中,表单由两种类型,模板驱动和模型驱动。表单的控制逻辑写在了组件模板中,适合简单的表单类型。5 表单分组

2022-06-04 23:14:00 191

原创 angular学习笔记(五)组件

挂载阶段的生命周期只在挂载阶段执行一次,数据更新时不再执行 3.2.1 注入器injectors注入器负责创建服务类实例对象,并将服务类实例对象注入到需要的组件中。 3.2.2 提供者Provider通过cli工具命令创建 ng g s XXX使用服务可以轻松实现跨模块跨组件共享数据,者取决于服务的作用域。4.2.1 在根注入器中注册服务,所有模块使用同一服务实例对象。其中providedIn表示服务作用域范围,为root代表在根注入器中注册服务 4.2.2 在模块级别注册服务,该模块中的所有组件使用同一服

2022-06-04 22:29:17 170

原创 angular学习笔记(四)指令和管道

在 Angular 中,属性型指令的创建至少需要一个带有 装饰器的控制器类。这个装饰器指定了一个选择器名称,用于标识与指令相关联的属性名称。控制器类实现了指令的功能行为。创建指令为: ng g d directives/hover需求:实现鼠标在元素上悬停时,改变起背景颜色;鼠标移开时,背景颜色消失;鼠标点击时,字体变大;鼠标松开时,字体恢复原样的功能。创建 background-exed.directive.ts 文件,实现如下代码:具体细节参考:详解Angular中自定义创建指令的方法-木庄网络

2022-06-04 18:41:53 172

原创 angular学习笔记(三)组件模板

3.2.1 获取单个元素 3.2.2 获取一组元素

2022-06-04 15:16:27 214

原创 angular学习笔记(二)创建应用

一、创建应用 ng new具体指令配置请参照官方说明文档:Angular - ng new运行项目 2.2 src目录三、默认文件解析3.1 main.ts文件 platformBrowserDynamic()对象解析:命令参考官方链接:Angular - ng generate

2022-06-04 10:36:07 169

原创 数组(1 两数之和)

leetcode链接:https://leetcode.cn/problems/two-sum/解法一:暴力解法1.1 思路及算法枚举数组中的每一个数x,寻找数组中是否存在target - x;当我们使用遍历整个数组的方式寻找 target - x 时,需要注意到每一个位于 x 之前的元素都已经和 x 匹配过,因此不需要再进行匹配。而每一个元素不能被使用两次,所以我们只需要在 x 后面的元素中寻找 target - x/** * 暴力解法 * @param {number[..

2022-05-30 16:31:01 75

原创 如何在vue项目中正确集成Eslint和prettier

一、正确理解eslint和prettierEslint:ESLint是一款 Lint 工具,主要用于代码的质量检查,同时也具备一定的代码风格的格式化能力;Prettier:仅仅只是一个代码风格的约束工具,对于代码可能产生的 Bug 等并不关心;联系:两者都是用来帮助开发者规范代码风格的工具;区别:ESLint只能作用于js代码及文件,html、css、json、vue代码及文件的相关格式处理不了;Prettier全部代码都可以自定义格式化...

2022-04-29 10:53:43 1852

原创 React类式编程中this的指向说明

第一种:constructor中通过bind强行绑定this(不推荐)// constructor中通过bind强行绑定thisclass Counter extends React.Component { // 定义数据 state = { count: 0 } constructor() { super() this.setCount = this.setCount.bind(this) } // 定义修改数据的方法 setCount () {

2022-03-22 10:35:22 1065

原创 彻底弄清exports、module.exports和export、export default的区别

使用范围:require: node 和 es6 都支持的引入export / import: 只有es6 支持的导出引入module.exports / exports: 只有 node 支持的导出参考:https://segmentfault.com/a/1190000010426778一、exports和module.exports首先我们要明白一个前提,CommonJS模块规范和ES6模块规范完全是两种不同的概念。根据这个规范,每个文件就是一个模块,有自己的作用域。...

2022-03-22 10:17:57 259

原创 常用的正则校验工具类

// 常用的正则校验/** * 邮箱格式验证 */export const isEmail = (s) => { return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)}/** * 手机号码格式验证 * @param {*} s * @returns */export const isMobile = (s) => { return /^1[0-9]{.

2021-12-20 10:17:43 357

原创 类型校验工具类

// js中常用的格式校验/** * 判断是否为字符串 * @param {*} o * @returns */export const isString = (o) => { return Object.prototype.toString.call(o).slice(8, -1) === 'String'}/** * 判断是否数字 * @param {*} o * @returns */export const isNumber = (o) => {.

2021-12-20 10:13:59 209

原创 html工具类

// html便捷操作js/** * 去除字符串中的html标签 * @param {*} str * @returns */export const removehtmltag = (str) => { return str.replace(/<[^>]+>/g, '')}/** * 动态引入js * @param {*} src */export const injectScript = (src) => { const s = .

2021-12-20 10:13:16 139

原创 格式校验工具类

// 常用的正则校验/** * 邮箱格式验证 */export const isEmail = (s) => { return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)}/** * 手机号码格式验证 * @param {*} s * @returns */export const isMobile = (s) => { return /^1[0-9]{.

2021-12-20 10:12:39 450

原创 其他常用的工具方法

// 其他方便操作的工具/** * 数组随机洗牌 * @param {*} arr * @returns */export const shuffle = (arr) => { var result = [], random; while (arr.length > 0) { random = Math.floor(Math.random() * arr.length); result.push(arr[random]) arr.spl.

2021-12-20 10:11:29 180

原创 浏览器校验工具类

// 浏览器校验/** * 判断是否微信浏览器 * @returns */export const isWeiXin = () => { return ua.match(/microMessenger/i) == 'micromessenger'}/** * 判断是否移动端设备 * @returns */export const isDeviceMobile = () => { return /android|webos|iphone|ipod|balckbe.

2021-12-20 10:10:23 260

原创 移动端rem适配方法

// 设置 rem 函数function setRem() { // 320 默认大小16px; 320px = 20rem ;每个元素px基础上/16 let htmlWidth = document.documentElement.clientWidth || document.body.clientWidth; //得到html的Dom元素 let htmlDom = document.getElementsByTagName('html')[0]; //设置根元素字体大小 .

2021-11-24 09:52:39 503

原创 js之如何实现 new、apply、call、bind 的底层逻辑

先思考几个问题:用什么样的思路可以 new 关键词? apply、call、bind 这三个方法之间有什么区别? 怎样实现一个 apply 或者 call 的方法?一、方法的基本介绍1.1new 原理介绍new 关键词的主要作用就是执行一个构造函数、返回一个实例对象,在 new 的过程中,根据构造函数的情况,来确定是否可以接受参数的传递。下面我们通过一段代码来看一个简单的 new 的例子。function Person(){ this.name = 'Jack';}.

2021-09-16 12:41:03 318

原创 JS 常见的 6 种继承方式

继承可以使得子类别具有父类的各种方法和属性。先思考几个问题: JS 的继承到底有多少种实现方式呢? ES6 的 extends 关键字是用哪种继承方式实现的呢? 一、JS 实现继承的几种方式第一种:原型链继承原型链继承是比较常见的继承方式之一,其中涉及的构造函数、原型和实例,三者之间存在着一定的关系,即每一个构造函数都有一个原型对象,原型对象又包含一个指向构造函数的指针,而实例则包含一个原型对象的指针。 function Parent1() { this.n

2021-09-15 22:22:56 23431 4

原创 js实现深浅拷贝

一、浅拷贝的原理与实现浅拷贝的定义:自己创建一个新的对象,来接受你要重新复制或引用的对象值。如果对象属性是基本的数据类型,复制的就是基本类型的值给新对象;但如果属性是引用数据类型,复制的就是内存中的地址,如果其中一个对象改变了这个内存中的地址,肯定会影响到另一个对象。方法一:object.assignobject.assign 是 ES6 中 object 的一个方法,该方法可以用于 JS 对象的合并等多个用途,其中一个用途就是可以进行浅拷贝。该方法的第一个参数是拷贝的目标对象,后面的参

2021-09-15 21:49:40 251

原创 js的数据类型

参考地址:JavaScript 核心原理精讲一、JS支持的数据类型JavaScript 的数据类型有下图所示的 8 种:注意:其中,前 7 种类型为基础类型,最后 1 种(Object)为引用类型 引用数据类型(Object)又分为图上这几种常见的类型:Array - 数组对象、RegExp - 正则对象、Date - 日期对象、Math - 数学函数、Function - 函数对象 各种 JavaScript 的数据类型最后都会在初始化之后放在不同的内存中,因此上面的数据类型大.

2021-09-15 09:57:33 228

原创 RedisConfig配置类

@Configurationpublic class RedisConfig { @Bean @SuppressWarnings("all") public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory factory){ RedisTemplate<String, Object> template = new RedisTemplate<&gt.

2021-04-16 17:39:40 2607

原创 java后端生成验证码校验

参考项目:若亦管理系统首先需要确保已经通过SpringBoot搭建好了后台的基础架构一、导入依赖 <!-- 验证码 --> <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2&lt

2021-04-15 11:19:27 1395

原创 10Git介绍

1.Git介绍1.1版本控制(理解)无论是代码编写,还是文档编写,我们都会遇到对文档内容反复修改的情况1.2开发中存在的问题(理解)程序员小明负责的模块就要完成了,就在即将提交发布之前的一瞬间,电脑突然蓝屏,硬盘光荣下岗!几个月来的努力付之东流​老王需要在项目中加入一个很复杂的功能,一边尝试,一边修改代码,就这样摸索了一个星期。可是这被改得面目全非的代码已经回不到从前了。小明和老王先后从文件服务器上下载了同一个文件因项目中Bug过多,导致项目进度拖延,项目经理老徐因此

2021-03-12 21:29:30 82

原创 day09ArrayList集合&学生管理系统

1.ArrayList集合和数组的区别 :​ 共同点:都是存储数据的容器​ 不同点:数组的容量是固定的,集合的容量是可变的1.1 -ArrayList的构造方法和添加方法public ArrayList()创建一个空的集合对象public boolean add(E e)将指定的元素追加到此集合的末尾public void add(int index,E element)在此集合中的指定位置插入指定的元素ArrayList :​ 可调整大小的数组实现​ :

2021-03-12 21:08:33 139

原创 08常用API

1.API1.1 API概述-帮助文档的使用什么是API​ API (Application Programming Interface) :应用程序编程接口java中的API​ 指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。如何使用API帮助文档 :打开帮助文档找到索引选项卡中的输入框在输入框中输入Random看类在

2021-03-12 21:07:10 64

原创 07面向对象基础

1. 类和对象**面向对象和面向过程的思想对比 : **​ **面向过程 :**是一种以过程为中心的编程思想,实现功能的每一步,都是自己实现的​ **面向对象 :**是一种以对象为中心的编程思想,通过指挥对象实现具体的功能1.1 类和对象的关系客观存在的事物皆为对象 ,所以我们也常常说万物皆对象。类类的理解类是对现实生活中一类具有共同属性和行为的事物的抽象类是对象的数据类型,类是具有相同属性和行为的一组对象的集合简单理解:类就是对现实事物的一种描述类的组成属性:指事物的特

2021-03-12 21:05:26 108

原创 06java基础语法之Debug&基础练习

1.Debug模式1.1 什么是Debug模式是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。1.2 Debug介绍与操作流程如何加断点选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可如何运行加了断点的程序在代码区域右键Debug执行看哪里看Debugger窗口看Console窗口点哪里点Step Into (F7)这个箭头,也可以直接按F7如何删除断点选择要删除的断点,单击

2021-03-12 21:01:07 89

原创 05java基础语法之方法

1. 方法概述1.1 方法的概念​ 方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集注意:方法必须先创建才可以使用,该过程成为方法定义方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用2. 方法的定义和调用2.1 无参数方法定义和调用定义格式:public static void 方法名 ( ) { // 方法体;}范例:public static void method ( ) { //

2021-03-12 20:55:56 63

原创 04java基础语法之数组

1.数组1.1 数组介绍​ 数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致。1.2 数组的定义格式1.2.1 第一种格式​ 数据类型[] 数组名​ 示例:int[] arr; double[] arr; char[] arr;1.2.2 第二种格式​ 数据类型 数组名[]​ 示例:int arr[];double arr[];char arr[];1.3 数组的动态初始化1.3.1 什么是动态初始化​ 数组动态初始化就是只给定数组

2021-03-12 20:54:29 79

原创 03java基础语法之switch&循环语句

1. switch语句1.1 分支语句switch语句格式switch (表达式) { case 1: 语句体1; break; case 2: 语句体2; break; ... default: 语句体n+1; break;}执行流程:首先计算出表达式的值其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结 束。最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结

2021-03-12 20:49:03 97

原创 02-Java基础语法之运算符

day02 - Java基础语法1 类型转换在Java中,一些数据类型之间是可以相互转换的。分为两种情况:自动类型转换和强制类型转换。1.1 隐式转换(理解)​ 把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量。这种转换方式是自动的,直接书写即可。例如:double num = 10; // 将int类型的10直接赋值给double类型System.out.println(num); // 输出10.0​ 类型从小到大关系图:​说明:整数默认是int类型,byte、

2021-03-12 20:47:39 86

原创 java基础语法之java环境搭建及入门

1. Java概述1.1 Java语言背景介绍(了解)语言:人与人交流沟通的表达方式计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言Java语言是美国Sun公司(Stanford University Network)在1995年推出的计算机语言Java之父:詹姆斯·高斯林(James Gosling)2009年,Sun公司被甲骨文公司收购,所以我们现在访问oracle官网即可:https://www.oracle.comjava语言的三个版本:​ JavaSE: Java 语言的

2021-03-12 20:43:13 87

原创 Springboot + vue前后端分离后台管理系统(6)之集成Knife4j和数据验证

一、集成Knife4j参考链接:https://www.kuangstudy.com/bbs/1349947853841158146官网参考地址:https://doc.xiaominfo.com/knife4j/documentation/get_start.html1.1 引入POM<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-

2021-03-11 15:49:57 1055

原创 Springboot + vue前后端分离后台管理系统(5)之集成redis

一、引入pom依赖 <!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>二、添加yml配置.

2021-03-10 16:13:14 184

原创 Springboot + vue前后端分离后台管理系统(4)之统一日志处理

一、日志1.配置日志级别日志记录器(Logger)的行为是分等级的。如下表所示:分为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL。默认情况下,spring boot从控制台打印出来的日志级别只有INFO及以上级别,可以配置日志级别# 设置日志级别logging.level.root=WARN这种方式只能将日志打印在控制台上二、Logback日志spring boot内部使用Logback作为日志实现的框架。Logback和log4j非常相似,如果你

2021-03-09 17:21:17 992

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除