自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 shiro安全框架学习笔记

Shiro安全框架实例导入依赖 shiro核心包 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.4.1</version> </dependency>

2021-04-06 22:15:00 138

原创 JDBC事务,连接池概念,c3p0,Driud

JDBC事务控制1.什么是事务:一个包含多个步骤或者业务操作。如果这个业务或者多个步骤被 事务管理,则这多个步骤要么同时成功,要么回滚(多个步骤同时执行失败),这多个步骤是一个整体,不可分割2.操作​ 开启事务: start transaction​ 提示事务: commit​ 回滚事务: rollback3.在jdbc中Connection对象来管理事务开启事务:setAutoCommit(boolean autoCommit);执行该方法里面传入false值,

2021-01-08 09:34:22 146

原创 Stream流

Stream流​ JDK 1.8引入的新特性。用于解决已有集合类库既有的一些弊端。依赖于Lambda 表达式传统从集合中获取需要的元素代码如下:public class Demo01Stream { public static void main(String[] args) { // 构建一个集合 List<String> list = new ArrayList<String>(); list.add("

2020-12-21 21:33:45 170

原创 函数式接口、自定义函数接口、函数式编程、常用函数式接口、Stream流

文件上传优化文件的名称需要优化服务端,保存文件的名称如果名称固定,那么最终会导致服务器硬盘,只会保留一个文件,对上传的文件名称优化,//文件名称定义规则:"beautiful" + System.currentTimeMillis() + new Random().nextInt(1000000) + ".jpg";服务器端接收文件的优化服务器端,接收一个文件之后就关闭了,后面的其他客户端无法继续上传文件,使用循环进行改进,可以不断的接收不同的客户端传输过来的文件。// 使用循环while

2020-12-21 21:32:25 311

原创 网络编程三要素、TCP通信、Socket类、ServerSocket类

网络编程三要素协议:计算机中网络通信必须遵守的规则。IP地址:互联网协议地址(Internet Protocol Address) ,俗称IP,给网络中的计算机设备编订一个唯一的编号,好比人的身份证号。IP地址分类:IPv4:是一个32位的二进制数,通常被分为4个字节,表示形式:a.b.c.d ,例如:192.168.53.245 ,其中a.b.c.d都是一个0~255之间的十进制的整数,那么最多能够表示42亿个。IPv6:为了扩大地址空间,通过IPv6重新定义地址空间,采用128

2020-12-19 09:38:35 286 1

原创 序列化流、网络编程

序列化流Java提供了一种对象序列化的机制,用一个字节序列可以表示一个对象,该字节序列包含该对象的数据、对象的类型和对象中存储的属性等信息。字节序列写入到文件中后,就相当于在文件中保存了一个对象信息。反之,该字节序列还可以从文件读取出来,重构对象,对它进行反序列化。对象的数据、对象的类型和对象中存储的数据信息,都可以用来在内存中创建对象。ObjectOutputStream类java.io.ObjectOutputStream类,将Java对象的原始数据类型写入到文件中,实现对象的持久化存储。构造

2020-12-17 22:49:25 187 1

原创 属性集Properties,缓冲流Buffered,转换流

属性集【Properties】java.util.Properties类继承于Hashtable,用来表示一个持久的属性集。它使用键值结构存储数据,每个键及其对应的值都是一个字符串。构造方法​ public Properties():创建一个空的属性集列表。共性的api方法public Object setProperty(String key,String value):保存一对属性。public String getProperty(String key):使用此属性列表中的指定的键搜

2020-12-17 22:46:31 83

原创 IO流

IO概述什么是IO?Java中I/O的操作主要是靠java.io包下面的类和接口来实现的,进入输入、输出操作。输入也可以叫做读取数据,输出也可以叫做写入数据。IO分类根据数据的流向分为:输入流和输出流输入流:把数据从其他设备上读取到内存当中的流。输出流:把数据从内存当中写入到其他设备上的流。根据数据的类型分为:字节流和字符流字节流:以字节为单位,读写数据的流字符流:以字符为单位,读写数据的流。IO流的顶级父类字节流一切皆为字节一切文件数据(文本文档,图片,视频等)在存储时,

2020-12-16 08:42:50 72

原创 递归的使用,File类的递归使用

递归概述递归:指的是当前方法调用自己的一种现象。递归的分类:递归分为两类:直接递归和间接递归直接递归:称为方法自身调用自己的情况间接递归:可以归结为:方法A调用了方法B,方法B调用了方法C,方法C反过来又调用了方法A。注意事项:递归一定要有边界条件 (条件限定),保证递归能够停止下来,否则会发生栈内存溢出。在递归当中虽然有限定条件,但是递归的次数也不能太多,否则也会发生栈内存溢出现象。构造方法禁止递归。示例代码:使用递归实现累加求和计算1~n之间的和分析:

2020-12-14 22:18:45 124

原创 函数式编程思想,Labmda表达式,File类

函数式编程思想​ 强调的是***做什么,而不是以什么样的方式来做,它忽略了面向对象的复杂语法,只要能够获取到结果,谁去做的,怎么做的,都不重要,重要的是结果,不重视过程***。冗余的Runnable代码传统的写法public class Demo01Runnable { public static void main(String[] args) { // 匿名内部类的方式 new Thread(new Runnable() {

2020-12-14 22:16:41 105

原创 线程同步,线程状态,线程通信,线程池

同步方法同步方法:使用synchronized修饰的方法,就叫做同步方法,保证A线程执行该方法的时候,其他线程只能在方法的外面等待着,排队。public synchronized void method() { // 可能会产生线程安全问题的代码}备注:同步锁是谁?​ 对于非static方法,同步锁就是this​ 对于static方法,我们使用当前方法所在类的字节码对象(类名.class)同步方法代码示例如下:@Override public voi

2020-12-11 22:26:11 234

原创 线程

创建线程类​ java使用java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或者Thread类的子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段程序流,java使用线程执行体来代表这段程序流。java中通过继承Thread类来创建并启动多线程,步骤如下:​ 1.创建一个Thread类的子类​ 2.在Thread类的子类当中重写Thread类的run方法,设置线程任务(开启线程需要你做什么事情?)​ 3.创建Thread类的子类对象​

2020-12-11 08:54:45 71

原创 线程

多线程并发:指的是两个或者多个事件(任务) 在***同一时间段***内发生的。并行:指的是两个或者多个事件(任务)在***同一时刻***发生(同时发生)。线程与进程进程:是指一个内存中运行的的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个线程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序就是一个进程从创建、运行到消亡的过程。线程:线程是进程中的一个执行单元,负责当前进程中程序的运行,一个程序中至少有一个线程。一个进程可以有多个线程,这个应用程

2020-12-10 09:12:19 65

原创 异常

异常异常,就是不正常的意思。在生活中,医生说,你的身体某个部位出现异常了,该部位和正常情况不一样,该部位的功能将会受到影响。异常:指的是在程序的运行过程中,出现的非正常情况,最终会导致JVM的非正常停止。在Java等面向对象的编程语言中,异常本身就是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。备注:异常指的并不是语法错误,语法错了,编译无法通过的,不会产生字节码文件,根本不会运行。异常体系异常机制其实是帮助我们找到程序中出现的问题,异常的根类是java

2020-12-08 23:17:11 72

原创 Map集合、Debug追踪

HashMap存储自定义类型键值​ 练习:每位学生(姓名,年龄) 都有自己的家庭地址,学生作为键key值,家庭地址作为value值​ 注意:同名同年龄的学生为同一学生当给HashMap中存储自定义对象时,如果自定义对象作为key存在,这时要保证对象的唯一性,必须重写对象的hashCode和equals方法如果要保证map中存储元素的顺序。主要体现在key值,可以使用java.util.LinkedHashMap集合来存放LinkedHashMap咱们知道HashMap保证成对元素的唯...

2020-12-08 10:34:21 211

原创 Comparator比较器,Comparable接口,Map集合

Comparator接口比较器Collections工作集中的sort() public static <T> void sort(List<T> list) public static <T> void sort(List<T> list,Comparator<? super T> c)Comparator接口在java.util包下,排序是Comparator需要实现的功能之一,改接口代表的是一个比较器,具有可比性。本质其

2020-12-05 09:02:29 166

原创 LinkedList集合、Set接口、HashSet集合介绍、HashSet存储数据的结构(哈希表)、可变参数

LinkedList 集合java.util.LinkedList 集合数据存储的结构底层是一个链表结构,是一个双向链表结构,方便元素的添加和删除。我们在开发中对一个链表集合中的元素大量的都是采用首尾节点操作(添加和删除):常用的API方法如下:public void addFirst(E e):将指定的元素添加此列表的开头。public void addLast(E e):将指定的元素添加此列表的末尾。public E getFirst():获取此列表的首节点元素public E getLas

2020-12-03 19:54:31 311

原创 泛型的通配符、上下限、数据结构、List集合

泛型的通配符当使用泛型类或者泛型接口,传递的数据中,泛型的类型不确定,可以通过通配符<?>表示。一旦程序当中使用泛型的通配符后,只能使用Object类中的共性方法,集合中元素自身方法无法使用。通配符的基本使用泛型的通配符:不知道使用什么类型来接收的时候,此时可以使用?,?代表位置的通配符此时只能接收数据,不能往该集合中存储数据。代码示例:public static void main(String[] args){//可以存储整数的集合Collection<Integer&

2020-12-03 08:53:08 196

原创 Collection类和泛型

Collection是一个接口,所以它不能实例化,需要实例化他的子类才可以使用,例如使用ArrayListCollection col1 = new ArrayList();这里的<>里面的内容填写的是类,引用类型,不能填写基本数据类型System.out.println(col1);// 这里可以直接输出 说明重写了toString方法如果创建集合时,没有指定集合存储元素的数据类型,系统会默认成Object类型它的常用api方法有add(E e)添加元素void clear();

2020-12-01 20:44:17 63

原创 Calendar常用api方法、StringBuilder的常用api、System类的常用api

Calendarcalendar类是一个抽象类,所以它不能被实例化,提供了一个类方法getInstance , 以获得此类型的通用的对象。Calendar的 getInstance方法返回一个Calendar对象。Calendar a = Calendar.getInstance();常用的成员方法:public int get(int field);返回的是一个给定日历字段值public void set(int field ,int value) : 将给定的日历字段设定为给定的值publi

2020-12-01 09:39:03 112

原创 Object类、Date和DateFormat类

当我们输出对象时,控制台输出的会是一个内存地址值,而我们想看的是该对象中的信息,这时我们就可以重写toString方法,这个方法是Object类中的。例如:成员信息都有(name、age)public String toString(){ return "Student[name=" + name + ", age=" + age + "]";}这个就是重写了toString方法当我们声明了两个对象,成员属性全部都一样,姓名和年龄都一样,这时我们去比较这两个对象,但是出来的结果是fa

2020-11-28 11:16:20 89

原创 权限修饰符、内部类、引用类型、API

权限修饰符在Java当中提供了四种权限修饰符,使用不同的访问权限修饰符修饰时,被修饰的内容会有不同的访问权限。​ public: 公共的​ protected: 受保护的​ (default): 默认不写​ private:私有的不同的权限修饰符有不用的访问能力publicprotected(default)private同一类中√√√√同一包下不同类中√√√×不同包的子类中√√××

2020-11-27 23:14:07 45

原创 多态,final

多态多态是继封装性,继承性之后,面向对象的第三大特性。定义多态:是指同一行为,具有多个不同的表现形式。生活中,比如跑的动作,猫,狗,大象跑起来的动作都是不一样的,再比如飞的动作,昆虫、鸟类、人造飞机,飞起来的动作内容都是不一样的。可见,同一行为,通过不同的事物,可以表现出不同的形态。多态,描述的就是这样的一种状态。多态的前提1.继承或者实现【二选一】2.父类的引用指向子类的对象【格式体现】3.方法的重写【意义:不重写,是无意义的】多态的表现多态表现的格式:父类类型 变量名 = new

2020-11-25 21:23:43 68

原创 抽象类和接口

super和this的含义super:代表父类的存储空间标示(可以理解为父类的引用)this:代表当前对象的引用(谁调用就是代表谁)super和this的用法super1.访问父类的成员super.成员变量super.成员方法();2.访问父类的构造方法super(…) 父类的构造方法3.继承关系中,父类的构造方法的访问特点子类构造方法当中有一个默认的隐式super()调用,所以一定是先调用父类的构造,后执行的子类构造子类构造可以通过super关键字来调用父类的重载构造super

2020-11-24 20:54:10 44

原创 继承

概述多个类中存在相同的属性和行为时,我们可以将这些内容抽取到单独的一个类中,那么多个类就无需在定义这些属性和行为,只要去继承这个单独的类即可。其中,多个类称为子类或者派生类,单独的那一个类称为父类,超类,基类继承描述的是事物之间的所属关系,这种关系是:is-a关系。在继承关系中,子类就是一个父类,也就是说子类可以被当做父类看待 。例如:父类是员工,子类是讲师,“那么讲师就是一个员工” is-a—是一个一般情况下,父类更通用,子类更具体。我们可以通过继承,使多种事物之间形成一种关系体系定义继承

2020-11-23 22:12:56 220

原创 作业题

从26个英文字母(含大小写)和0~9数字中随机抽出四个字符,然后拼接成一个随机验证码。判断输入的验证码与随机生成的验证码是否相同(忽略大小写),如果正确,则系统提示“恭喜你验证码正确!”,程序结束;如果不正确,此时系统输出正确的随机码,并且系统会再次随机一个验证码,进入下一次判断。 ArrayList<Character> arrayList = new ArrayList<>(); Scanner sc = new Scanner(System.in);

2020-11-21 21:02:46 158

原创 Arrays

Arrays类概述java.util.Arrays 此类主要是用来操作数组,里面提供了很多的操作数组的API方法,如排序和搜索功能,其所有的均为静态方法,调用起来非常简单。操作数组public static String toString(int[] a)返回指定数组内容的字符串表现形式public static void main(String[] args){//初始化一个int类型的数组 静态初始化,只指定内容,长度系统推定int[] arr ={1,2,5,8,56,456};/

2020-11-20 22:49:02 67

原创 String类

String类创建String字符串的创建3+1方式三种构造方法:public String(): 空参构造 关键一个空白字符串,不包含任何内容public String (char[] array):根据字符数组的内容来创建对应的字符串public String(byte[] array): 根据字节数组内容来创建对应的字符串一种直接创建String str = “abc”; //右边直接用双引号备注: 直接写上双引号,系统也会认定为字符串对象常用方法判断功能的方法p

2020-11-19 22:02:53 109

原创 API

API概述概述API(Application Programming Interface)应用程序编程接口。Java API对于程序员来说就是一本可以检索查找的【字典】,是JDK官方提供给程序开发者使用类的说明文档。Scanner类一个可以使用正则表达式来解析基本数据类型和字符串类型的简单文本扫描器Scanner sc= new Scanner(System.in);int num = sc.nextInt();备注:System.in 系统输入指的是通过键盘录入数据引用类型使用步骤使用

2020-11-18 21:52:20 470

原创 面向对象和类

什么是类类:是一组相关【属性】和【行为】的集合。可以把类看成一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。什么是对象对象:就是一类事物的具体的体现。对象是类的一个【实例】,必然具备该类事物的属性特征和行为特征。类与对象的关系类是对一类事物的描述,是【抽象的】。对象是一类事物的实例,是【具体的】。类是对象的模板,对象是类的实体。类的定义格式public class ClassName{//成员变量//成员方法}定义类:定义类的成员,包括成员变量和成员方法成员变量:和

2020-11-17 21:26:35 133

原创 内部类小部分知识

打印字母for (char i = ‘a’,j = ‘A’; i <= ‘z’ && j <=‘Z’ ; i++,j++) {// 输出大写字母System.out.println(i);System.out.println(j);// A–>B A—>65+1==66 B}这样输出的就是a到z,A到Z,通过ASCII对应的数字来输出字母。//匿名内部类-------------匿名内部类分为4种1.成员内部类也就是最普通的定义在另一个类的内

2020-11-17 08:45:01 38

原创 数组定义的格式和方法的使用与定义

数组首先是数组的创建格式,今天考试遇到了后几种格式,以为是错的,没想到也可以,所以当时全部选错了,希望各位能引以为戒。int []arr=new int[10];int []arr ={1,2,3,4,…};int []arr =new int[]{1,2,3,4,5,6}以下几种int arr[] =new int[4];int arr[] ={1,2,3,4,5};int arr[] =new int[]{1,2,3,4,5};int [] arr[] = new int [2][3]

2020-11-13 22:40:41 553 1

原创 数组

今天主要讲了数组和数组在内存是怎样的数组概念:数组就是存储数据长度固定的容器,保证每个数据的数据类型一致。数组的定义:格式1:数组存储的数据类型[] 数组名称 = new 数组存储的数据类型[长度 (正整数 )]格式2:数组的数据类型[] 数组名称 =new 数组的数据类型[]{元素1,元素2,元素3,元素4…}格式3:数组的数据类型[] 数组名称={元素1,元素2,元素3,元素4…}备注:数组一旦创建出来,长度不能发生改变,所以数组具有一个定长特性数组的特点:1.数组的长度,

2020-11-12 20:31:43 94

原创 知识点

位运算符<< 左移 5<<2 =20—>也就是5*2的平方=20>> 右移 5>>1=2–>5/2^1 = 2>>>无符号右移 5>>>1 = 2 --> 5 /2 = 2& 与运算(只要有一个为0,运算结果就为0,否则为1) 5 & 3 =1| 或运算(只要有一个为1,运算结果就为1,否则为0) 5 | 3 = 7^ 异或运算 (XOR 同为0 、异为1 如果两个数值一样

2020-11-11 23:12:39 66

原创 java基础

关键字:​ 具有特殊含义,被保留的,不能随意使用的字符,这样的字符我们就称为关键字添加注释注释:就是对代码的解释和说明,其目的就是其他开发者能轻松的了解代码。注释是不影响程序的编译和运行。------------------------------------------------------java中的注释有三种:单行注释以//开头 换行就结束了多行注释以/*开头 以*/结束文档注释以/** 开头 以*/结束标识符​ 标识符:一般是指在程序中,我们自定

2020-11-10 22:19:53 227 2

原创 环境变量和cmd指令

CLASSPATH.;%JAVA_HOME%\libPATH;%JAVA)HOME%\binJAVA_HOMEjdk的路径cmd命令快捷键打开画图工具的快捷键mspaint记事本notapad任务管理器taskmgr注册表regedit计算器calc控制面板control设备管理器devmgmt.msc磁盘管理diskmgmt.msc关机、重启电脑shutdown /s关机 /r重启 /l注销 /a停止关机查看网络配置ipconfig查看当前的网络连接情况:如查看开启了哪些

2020-11-09 22:20:16 120

原创 积累

String a = “abc”;int a1 =123;String b = a+b;一个字符串加上一个整形还是字符串类型Date date1 = new Date();long time = date1.getTime();这里的time值单位是毫秒如果要计算程序运算时间,那么可以在程序开始时创建一个date类,等程序再结束的时候再声明一个date类,用后面设置出来减第一个声明出来的就是程序运行的时间毫秒。例如:Date date = new Date();long time1 = d

2020-11-08 13:06:05 78

原创 基础的类与方法

ArrayList list = new ArrayList<>();//添加元素list.add(“张三”);list.add(“李四”);list.add(“王五”);list.add(“赵六”);list.add(“田七”);--------//添加王五元素,在指定的地方添加元素list.add(5,“王五”);-------//修改元素操作 set()list.set(1, “张三”);索引为1的李四就改为了张三-------//删除元素操作remove()

2020-10-30 08:46:07 60

原创 关键词和知识点

关键词:byte ----short ----int ----long ----char---- booleanfloat ---- double---- true ----falsepublic 权限修饰符class---- implementsextends---- for---- while ---- do ----whileif ----switch---- case---- default---- static---- void ----import ----packageb

2020-10-22 21:53:26 324 1

原创 通过request来找回密码模仿案例

整体过程:当用户登录忘记密码时,需要找回密码,在登录界面添加找回密码功能当点击找回密码–跳转到找回密码页面,在该页面中,输入手机号,验证该手机号是否正确如果正确,在客户端上展示之前的密码如果不正确,就跳转到注册页面,重新注册先写一个前端界面这个是前端登录界面,设置传输的路径为login,输入框的传输名字为name然后我们再写下配置文件xml我们在前端界面点击超链接找回密码进入另一个界面这个就是我们的另一个界面然后可以看出action为zhaohui然后我们的配置文件的url-patt

2020-10-21 21:36:15 258

空空如也

空空如也

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

TA关注的人

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