本文通过代码来演示如果在spring boot的项目中使用多线程,也就是异步。要异步并不难,我们写的代码天天都在跟异步多线程打交道,容易让人感到迷惑的是异步的底层原理,不仅要会使用,更要熟悉其实现原理,才能更加灵活地在项目中进行运用。
本文通过代码来演示如果在spring boot的项目中使用多线程,也就是异步。要异步并不难,我们写的代码天天都在跟异步多线程打交道,容易让人感到迷惑的是异步的底层原理,不仅要会使用,更要熟悉其实现原理,才能更加灵活地在项目中进行运用。
在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的。而程序开发中,我们需要把字符串数据,根据需求转换成指定的基本数据类型,如年龄需要转换成int类型,考试成绩需要转换成double类型等。那么,想实现字符串与基本数据之间转换怎么办呢?
Java中提供了相应的对象来解决该问题,基本数据类型对象包装类:java将基本数据类型值封装成了对象。封装成对象有什么好处?可以提供更多的操作基本数值的功能。
8种基本类型对应的包装类中需要注意int对应的是Integer,char对应的Character,其他6个都是基本类型首字母大写即可。
Date: 表示特定的瞬间,精确到毫秒,他可以通过方法来设定自己所表示的时间,可以表示任意的时间
Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。所有类在创建对象的时候,最终找的父类就是Object。
对基础API的使用能够熟练掌握,能极大提高开发效率。有些知识是很简单,但并不是我们不学习和掌握它们的借口,越是简单的东西,在关键时刻越是能起到至关重要的作用,就好比我们花很长时间解决的一个BUG,结果到头来竟是少打了一个;所致,是不是很恼火。
union做并集运算:
①union集合运算的结果不包括去掉重复记录。
②union all集合运算的结果包括重复记录。
intersect进行交集运算
minus进行差集运算
在A中去掉B中出现的重复记录后的差集
使用差集进行分页查询
1 | @RestController |
1 | <!DOCTYPE html> |
DOM插入操作
1 | <!DOCTYPE html> |
Map接口概述
Map接口和Collection接口下的集合,存储数据的形式是不同的。
A:Collection中的集合,元素是孤立存在的,理解为单身。向集合中存储元素采用一个个元素的方式存储。
B:Map中的集合,元素是成对存在的,理解为夫妻。每个元素由键与值两部分组成的,通过键可以找到值。size()–集合中元素的个数。
put(key,value)–存值。
get(key)–通过key来获取value.
containsKey(key)–判断Map集合中是否包含键为key的键值对。
containsValue(value)–判断Map集合中是否包含值为value的键值对。
isEmpty()–判断Map集合中是否没有任何键值对。
clear()–清空Map集合中所有的键值对。
remove(key)–根据key的值来删除Map中的键值对。
案例代码
1 | package com.zhangxueliang.demo; |
案例代码–获取Map中的key和value
1 | public class MapDemo01 { |
案例代码–Map集合的两种遍历方式
1 | public class MapDemo01 { |
5种简单数据类型:undifined / null / boolean / number / string。
还有一种复杂的数据类型:Object.
typeof操作符
1 | var message = "hello world"; |
数值转换
有三个函数可以实现向数值的转换:Number() parseInt() parseFloat()
①Number()函数
1 | var num1 = Number("hello world"); //NaN |
②ParseInt()函数
1 | var num1 = parseInt("123456abc"); //123456 |
③parseFloat()函数
1 | var num1 = parseFloat("123abc"); //123 |
转换为字符串
1 | var age = 18; |
存储过程实际上就是一种命名的PL/SQL程序块。
创建存储过程
创建存储过程需要使用procedure关键字。
创建存储过程不需要使用DECLARE关键字,转而使用CREATE/REPLACE关键字。
1 | create or replace procedure pro_insertDept |
在sql*plus环境,使用EXECUTE命令执行pro_insertDept存储过程:
1 | execute pro_insertDept; |
在PL/SQL代码块中调用存储过程pro_insertDept:
1 | begin |
存储过程的模式参数
存储过程的参数模式包括in out和in out等3种。
in模式参数
1 | create or replace prodecure pro_insertDept( |
需要注意的是:参数的类型不能指定长度。
①按指定名称传递
1 | begin |
②按位置传递
1 | begin |
用户提供的参数值顺序必须与存储过程定义的参数顺序相同。
ps:可以使用DESC命令来查看存储过程中的参数信息。
③混合方式传递
1 | begin |
注意:在某个位置使用了“按指定名称传递”的方式传入参数值后,其后面的参数值也要使用“按指定名称传递”,因为“按指定名称传递”或许已经破坏了参数原始的定义顺序。
in参数的默认值
1 | create or replace procedure pro_insertDept( |
调用存储过程pro_insertDept,只向该存储过程传入两个参数值。
1 | declare |
####什么是枚举类?
实例有限并且是固定的类,在Java里被称为枚举类。
####手动实现枚举类的方法
1 | public static final int SEASON_SPRING = 1; |
JDK1.5之后就增加了对枚举类的支持。
####枚举类入门
enum关键字,用于定义枚举类。
使用enum定义的枚举类默认继承了java.lang.Enum类。
1 | public enum SeasonEnum{ |
1 | package com.zhangxueliang.demo; |
1 | package com.zhangxueliang.demo; |
1 | package com.zhangxueliang.demo; |
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true