- 博客(54)
- 收藏
- 关注
原创 SpringBoot入门
SpringBoot入门搭建创建Maven项目(默认项目,无需添加web支持)导入SpringBoot起步依赖(版本别太高)<!--父工程--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <ve
2022-01-23 21:50:41
325
原创 常用算法浅析
算法 现在有了自己的博客网站,CSDN上很久没发文章了,欢迎大家去踩踩。算法为程序注入灵魂,它是智慧的体现。前段时间粗略的过了一遍数据结构,读到后面部分感觉到有点枯燥,因为总感觉学的这些东西貌似没有用武之地。由于长期搞数模我倒是对算法提前接触过不少,于是我打算先学习一波算法,感受数据结构结合数学的妙处,再回过头去看一遍数据结构。先整理了这些常用算法,有些虽然核心代码短短几行,但十分抽象,得多回来复习才有可能在实战中使用自如。排序算法冒泡(Bubble Sort)从前往后依次比较相邻元素,
2021-10-12 23:13:21
147
原创 MVC三层架构,过滤器及监听器
MVC三层架构Model业务处理:业务逻辑(事务,安全)数据化持久层:CUDR(Dao)View展示数据提供链接发起Servlet请求(from,img)Controller(Servlet)接受用户请求(req:请求参数,Session信息)交给业务层处理对应的代码控制视图的跳转Filter概述:即在web服务器和servlet之间加了一层过滤装置,可用于统一处理中文乱码,登录验证问题,不用再到每个servlet程序中处理。其实现过程跟servlet
2021-08-16 11:52:25
190
原创 浅谈Cookie,Session及JSP
会话保存技术概述:cookie和session都是用来跟踪浏览器用户身份的会话方式。即使用场景为:登录网站后,下次会有记录不用重新登。Cookie:客户端技术,相当于服务器可以根据客户端请求创建一个信件(键值对)并保存,并响应给客户端一份,下次登录会先检查自己保存的信件中有无和目前这个客户端一样的(使用较少不做过多阐述)Session:服务器端技术,服务器会登记客户端会话信息,下次进行匹配Cookie(性能优先)Session(安全优先)概述:浏览器端第一次发送请求到服务器端,服务器端创建
2021-08-14 22:37:21
156
原创 超详细Servlet讲解
Servlet详解概述:sun公司开发动态web的一门技术,在这些API中提供了个接口叫Servlet,开发一个Servlet程序只需要编写接口的实现类,并部署到web服务器中。Servlet配置步骤构建一个普通maven项目,删掉src包,作为maven主工程。在pom.xml中添加servlet,jsp的依赖。直接网上搜maven repository,在里面根据关键字搜索,找个靠谱的把代码粘贴到新建的<dependencies>标签里,报红线点开maven右边栏刷新下载即可,如
2021-08-14 22:33:38
364
3
原创 web基础及相关工具
Tomcat启动和配置目录结构:bin:启动关闭脚本文件conf:配置文件 server.xml:服务器核心配置文件lib:依赖的jar包webapps:存放网站启动:进入bin文件夹双击startup.bat,此时可以在本机默认端口上访问localhost:8080关闭:双击shutdown.batHttp概述:超文本传输协议,是一个简单的请求响应协议,通常运行在TCP之上,80端口。https是安全的http,443端口。文本:html、字符串等超文本:图片、音乐、视
2021-08-14 22:28:17
85
原创 浅谈JVM
浅谈JVMJVM的位置装在操作系统上,相当于一个软件(用C写的),来跑Java程序JVM的体系结构先将编写的.java文件通过javac命令编译为Class File,然后进入ClassLoader类加载器用于加载Class文件,初始化得到Class对象,该对象即可用于new实例化对象。分为:启动类(根)加载器(rt):获取不到,可能含有其他语言代码(上面还有虚拟机再带的加载器)扩展类加载器(Ext)应用程序加载器(App)双亲委派机制即上面三个加载器
2021-08-02 19:08:53
75
原创 注解和反射
注解和反射注解annotation概述:对程序做出解释并可被编译器读取,以@注释名的形式存在,还可添加参数值。可附加在包、类、方法、属性上面,为其增加辅助信息。内置注解@Override:表示打算重写超类中的方法@Deprecated:该元素不推荐使用,表示已过时(元素上会划横线)@SuppressWarnings:抑制编译时的警告信息元注解:负责注解其他注解,分别有@Target,描述注解的使用范围@Retention,描述注解生命周期即有效范围(source源码<c
2021-08-01 19:00:49
114
原创 Java操作数据库
JDBC概述:Java数据库连接,即使用Java语言操作数据库。本质为一套操作所有关系型数据库的接口,各个厂商去实现这套接口,提供数据库驱动jar包。我们可以使用其编程,真正执行的代码时驱动jar包中的实现类。实现://1.导入驱动jar包//复制jar包到项目的libs目录下,点开右键后选择Add As Library//2.注册驱动Class.forName("com.mysql.jdbc.Driver");//3.获取数据库连接对象Connection conn = Drive
2021-07-30 12:08:18
111
原创 MySQL快速入门3
事务概述:若一个包含多个步骤的业务操作被事务管理,那么这些操作要么同时成功,要么同时失败。操作流程:开启事务:start transaction;回滚:rollback;提交:commit;事务提交方式自动提交:一条DML增删改语句会自动提交一次事务,MySQL属于自动提交手动提交:即上面的操作流程,Oracle默认手动修改默认提交方式:查看:select @@commit;#0代表手动提交,1代表自动设置:set @@commit = 0/1;事务的四大特性
2021-07-29 10:24:39
75
原创 MySQL快速入门2
MySQL多表操作多表之间的关系分类:一对一、一对多、多对多一对多实现:在多的一方建立外键,指向一的一方的主键多对多:借助第三张中间表,至少包含两个字段分别指向两张表的主键,并采用联合主键primary key(id1,id2),一对一:直接放在一张表里就行,少见多表查询笛卡尔积:两个集合的所有组成情况,多表查询即将两张表放到一起看,组合后会产生无用的数据,我们将对其进行消除。内连接查询查询逻辑:从哪些表中查询数据条件是什么(一般看外键)查询哪些字段语法格式:s
2021-07-28 23:26:55
59
原创 MySQL快速入门1
MySQL指令启动:net start mysql(管理员方式进命令行)登录:-uroot -p123456(或者p后回车输密码别人看不到)退出:exit 关闭服务:net stop mysqlSQL通用语法结构化查询语言单行或多行书写,分号结尾可用空格和缩进,不区分大小写(建议关键字大写)三种注释--(空格–)# mysql特有/* */ 多行SQL分类目录结构:数据库–>表–>数据记录DDL:定义操作数据库、表DML:增删改表中的
2021-07-28 23:23:28
67
原创 缓冲流,转换流,序列化流
缓冲流概述:高效流,对四个基本流的增强,以Buffered开头。在创建流对象时,会创建一个内置的缓冲区数组来进行一次读写,以减少IO次数。构造方法BufferedInputStream(InputStream in)创建一个缓冲输入流并保存其参数,即输入流 in。可使用父类成员方法如read。BufferedOutputStream(OutputStream out, int size)创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。使用步骤:创建输出流对
2021-04-19 22:37:12
87
原创 Properties属性集合
Properties属性集合概述:java.util.Properties集合extends Hashtable<K,V> implements Map<K,V>,Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。双列集合,属性列表中每个键及其对应值都是一个字符串。是唯一与IO流结合的集合。常用IO方法void store(Writer writer, String comments)将此 Properties 表中的属性列表
2021-04-19 22:35:12
89
原创 Java之IO字符流
IO字符流概述:以字符为单位读写数据,专门处理文本文件。字符输入流Readerint read()读取单个字符,可用char()将对应字节强转为字符,用法与字节输入流类似。int read(char[] cbuf)将字符读入数组,用String(char[] value)将字符数组转为字符串。FileReader文件字符输入流extends InputStreamReader extends Reader构造方法:FileReader(File file/String fileN
2021-04-16 22:33:27
65
原创 Java之IO字节流
IO字节流概念:流:数据(字节或字符),1个字符=2个字节,1个字节=8个二进制位。输入:把硬盘中的数据读取到内存中使用输出:把内存中的数据写入到硬盘中保存字节输出流概述:java.io.OutputStream,此抽象类是表示输出字节流的所有类的超类。主要包含write(写入),flush(刷新),close(关闭)三种方法,其子类FileOutputStream为文件字节输出流,主要构造方法有:FileOutputStream(File file)创建一个向指定 File 对象表
2021-04-15 21:21:01
72
原创 Java中的File类
File类概述:java.io.File,是文件和目录路径的抽象表示,主要用于文件和目录的创建以及查找、删除操作。路径:绝对路径:是一个完整的路径,以盘符开始。相对路径:是一个简化的路径,不用书写当前项目根目录。注意:路径不区分大小写,反斜杠是转义字符,两个代表一个。静态成员变量static String pathSeparator与系统有关的路径分隔符,Windows:分号,linux:冒号static String separator与系统有关的默认名称分隔符,W
2021-04-07 22:02:25
133
1
原创 线程池与Lambda表达式
等待唤醒机制计时等待(Timed Waiting)调用静态的sleep(long millis)方法,可用于单线程。与锁无关,线性睡眠到期自动苏醒,返回到Runnable(可运行)或阻塞状态。锁阻塞状态(Blocked)为某个线程争夺CPU执行权的过程,,成功后可运行。无限等待(Waiting)拥有对象监视器的线程在调用waiting()方法后进入无限等待状态,直到其他在该锁对象上的线程调用notify()方法将其唤醒。两者均为Object类方法。wait(long m)同slee
2021-04-07 21:58:48
129
1
原创 线程安全之同步机制
线程同步机制线程安全:多线程访问共享数据会引发安全问题,当其访问一个变量并进行子增减操作时,若某个线程抢到了执行权并进入CPU执行,在其经历run方法的睡眠过程时,另一个线程也开始执行,此时变量的值就有可能重复或越界。可通过以下三种方式解决线程安全问题。同步代码块作用:写在run方法内,把同步代码块锁住,只让一个线程在同步代码块中执行。格式:synchronized(锁对象){ //对象监视器 //访问了共享数据的代码}注意:通过代码块中的对象,可以使用任意对象(在
2021-04-03 17:26:07
143
3
原创 线程实现方式
线程相关概念并发:两个或多个事件在同一时间段发生,任务交替执行并行:两个或多个事件在同一时刻发生,任务同时执行进程:指内存中运行的应用程序,进程是程序的一次执行过程线程:进程中的一个执行单元,负责进程中程序的执行,一个进程中至少有一个线程,也可为多线程创建多线程程序方式一:创建Thread类的子类Thread类概述:java.lang.thread,线程类,虚拟机允许并发运行多个线程。步骤:创建一个Thread类的子类子类中重写类中run方法,设置线程任务在主线程中创建子类对象
2021-04-03 12:35:58
69
原创 Java中的异常
异常概述:程序在执行中遇到非正常情况(非语法错误)导致JVM停止运行。异常本身是一个类,产生异常就是创建异常对象并抛出,Java中处理异常的方式是中断。异常体系异常机制本质是帮助我们找出程序中的问题,根类是java.lang.Throwable,其下两个子类是Error和Exception,前者必须修改代码程序才能继续执行,后者是由于使用不当导致,可以避免。Exception一般指编译期异常,指代码编译时出现的问题,而它的特殊子类RuntimeException指运行期异常。异常处理常用关键字:t
2021-04-01 17:53:30
81
原创 Collections集合工具类
Collections集合工具类常用方法public static <T> boolean addAll(Collection<T> c,T...elements)向集合中批量添加元素public static void shuffle(List<?> list)打乱集合顺序public static <T> void sort(List<T> list)将集合中元素按照默认规则排序,默认为升序。注意:被排序集合中
2021-03-28 00:34:49
114
原创 Java集合之Set
Set集合概述:java.util.Set接口是Collection的子接口,与其方法基本一致,相对较为严格。特点:不允许储存重复的元素没有索引,不能使用普通for循环不重复原理:Set集合在调用add方法存储元素时,会先调用其hasCode方法获取元素的哈希值,若无重复现象则存入集合,若有与其哈希值重复的元素再调用equals方法比较两者是否相同,返回false则存入。实现类HasSet集合概述:储存元素不可重复且无序,底层的实现是HasMap集合的支持。根据对象的哈希值确定
2021-03-27 23:46:59
65
原创 Java集合之List
List集合概述:java.util.List接口继承自Collection接口的子接口,是单列集合的重要分支。特点:元素存取有序带索引,可通过带索引的方法精确操作元素集合中可以有重复元素常用方法void add(int index, E element)在列表的指定位置插入指定元素(可选操作),原位置上的元素后移。E get(int index)返回列表中指定位置的元素。E remove(int index)移除列表中指定位置的元素(可选操作)。E set(i
2021-03-27 17:21:40
93
原创 Java中的泛型
泛型概述:泛型是一种未知的数据类型,在创建对象时确定类型。例如E e:Element 元素和T t:Type类型,也可以看作一个数据变量,用来接收数据类型。创建集合对象时使用泛型通过对元素类型的约束可以规避掉后面类型转换的麻烦,若没有泛型约束,则默认为Object对象,可以存放任意类型的数据,由于多态的弊端无法调用该元素类型特有的方法,需向下转型且可能会引发异常。定义含有泛型的类只需在类名后跟上<E>,将类型不确定的成员变量类型也改为<E>,则其默认类型就为Object。在
2021-03-26 21:32:35
73
原创 Java集合之Map
Map集合概述:java.util.Map<K,V>接口,双列集合,一个元素包含两个值(key,value)。特点:key和value的类型可以相同也可以不同。key不允许重复,value可以。key和value是一一对应的。一个映射不能包含重复的键,每个键最多只能映射到一个值。HashMap实现类概述:java.util.HashMap<K,V>,存储数据采用哈希表结构,查询速度快,但不能保证元素的存取顺序。LinkedHashMap类是HashMap类的子类
2021-03-20 00:03:43
100
1
原创 Collection集合
Collection集合概述:位于java.util包中,是层次结构中的根接口。与数组的区别:数组的长度使固定的,集合的长度是可变的。数组中储存的是同一类型的元素,可以是基本类型;而集合中存储的都是对象,且对象类型可以不一致。集合框架Collection接口常用方法注意:顶层方法,所有子类(实现类)均可使用。boolean add(E e)把对象添加到当前集合中void clear()移除此 collection 中的所有元素boolean contains(Obj
2021-03-17 19:21:43
69
原创 Java常用API之StringBuilder类和包装类
StringBuilder类概述:java.lang.StringBuilder类,长度可变的字符缓冲区,可提高字符串操作效率。构造方法StringBuilder()构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。StringBuilder(String str)构造一个字符串生成器,并初始化为指定的字符串内容。成员方法StringBuilder append(···)添加任意类型数据的字符串形式,并返回当前对象本身(即调用该方法的对象,在其原地址进行操作)
2021-03-16 20:45:29
120
原创 Java常用API之Calendar类和System类
Calendar类概述:java.util.Calendar日历类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,还提供了操作日历字段的方法。一般通过静态类方法 getInstance(而非子类)来获得此类型的一个子类对象。static Calendar getInstance()使用默认时区和语言环境获得一个日历。 例:Calender c = Calender.getInstance(),此对象中包含各种日历字
2021-03-16 19:25:34
144
原创 Java常用API之Object类和Date类
Object类概述:java.lang.Object类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。成员方法String toString()作用:返回对象的字符串表示,默认打印对象的地址值,在自己定义的类中可根据需要重写该方法(jdk自带返回属性值)。p.toString();boolean equals(Object obj)作用:返回布尔值判断调用此方法的对象是否与传入的参数对象的地址值相等。p.equals(o
2021-03-16 19:23:30
116
原创 Java之内部类
内部类含义:一个类内部包含另外一个类。分类:成员内部类和局部内部类(匿名内部类)成员内部类注意:内用外,随意访问;外用内,需内部类对象。.class文件命名:外部$内部.class调用方式:间接:在外部类的方法中通过内部类对象调用内部类方法,在main方法中只调用外部方法。直接:在main方法中直接new内部对象,外部类.内部类 对象名 = new 外部类().new 内部类();重名问题:在内部类方法中访问重名的外部类成员变量,外部类.this.变量名。局部内部
2021-03-14 17:52:15
69
原创 Java关键字及权限修饰符
static关键字作用凡是用了static关键字的内容不再属于对象自己,而是属于整个类,类中所有对象共用一份。因此直接对类.成员赋值即可。如果没有static关键字,那么必须首先创建对象,然后通过对象调用它;如果有static关键字修饰,那么不需要创建对象,可以直接通过类名.的方式调用成员。注意静态不能直接访问非静态。静态方法中不能用this。静态代码块形式public class 类名(){ static{ //内容 }}
2021-03-13 22:02:54
99
原创 Java中的多态
多态含义:一个对象具有多个类型的形态。多态性体现:父类引用(左侧)指向子类对象(右侧)。格式:父类名称 对象名 = new 子类名称();//继承实现接口名称 对象名 = new 实现类名();//接口实现多态对象访问成员变量:直接通过对象名称访问,看等号左边的引用类型是谁,优先用谁,没有则向上找。间接通过成员方法访问,看该方法属于谁优先用谁,子类覆盖重写的父类方法优先,否则向上找。访问成员方法:new的是谁就优先用谁,没有则向上找。编译看左(方法不属于左边会报错),运行
2021-03-13 21:17:20
107
原创 Java之接口
接口含义:接口是一种引用数据类型,是多个类的公共规范,最重要的是其中的抽象方法。格式:换了关键字后,生成的字节码文件仍然是.java--->.class。public interface 接口名{ //接口内容}接口中可以包含的内容有:常量 //java7抽象方法默认方法 //java8静态方法私有方法 //java9接口使用步骤接口不能直接new,必须有一个实现类来实现该接口。public class 实现类名称 implem
2021-03-11 17:16:39
85
原创 继承回顾
继承回顾(共性抽取)作用子类可以拥有父类的内容,也可以有自己专有的内容。从而达到代码复用的效果。子类定义的格式:public class 子类名 extends 父类名{}。重名情况分析在父子类的继承关系中,如果成员变量重名,则有两种访问方式:直接通过子类对象访问:创建对象时等号左边是谁,就优先用谁的变量,没有则向上找。(从子到父)间接通过成员方法访问成员变量:该方法属于谁,就优先用谁的变量,没有则向上找。成员方法重名:创建的对象是谁,即new 的右边,就优先用谁
2021-03-11 17:14:54
64
原创 String类与Random类
String类字符串的内容是常量。程序中直接写上的双引号字符串储存在字符串常量池中。对于基本类型,==是进行数值的比较;对于引用类型,==是进行地址值的比较。常用方法字符串内容的比较public boolean equals(Object obj){}//参数为要进行比较多的字符串对象public boolean equalsIgnoreCase(String str){}//忽略字母大小写注意:equals方法具有对称性,但若有常量字符串推荐把它写在点前面,放置空指针异常。与获取相关
2021-03-10 15:14:28
228
原创 Arrays和Math工具类
Arrays工具类内含关于数组的常见静态方法。public static String toString(数组){}:把参数数组变成字符串,[元素1, 元素2, 元素3]public static void sort(数组):按照默认升序对数组元素进行排序,直接对原数组做变换。注意:数组元素类型可以是数值或字母,若为自定义类型,则需要有comparable或comparator接口的支持。快捷键:chars.forr 倒序遍历,r是reverse的缩写。Math工具类提供了大量与
2021-03-10 15:13:20
57
原创 ArrayList集合与包装类
对象数组创建:类名[] 数组名 = new 类名[数组长度];赋值:数组名[n] = 对象名;ArrayList集合特点:与数组不同,集合长度可以随意改变。形式:ArrayList<E>右边尖括号里的E为泛型,代表集合中所有元素的引用类型。ArrayList<E> 集合名称 = new ArrayList<>();//创建集合,直接打印得到中括号而非地址集合名.add(E类型的数据);//向集合中添加数据集合常用方法添加元素,参数类
2021-03-09 09:38:41
198
原创 封装回顾(类的介绍和使用)
封装回顾(类的介绍和使用)this关键字当方法的局部变量和类的成员变量重名时,会根据就近原则优先使用局部变量(参数),使用this.成员变量可以区分本类中成员变量。在方法中使用。get与set使用有参构造方法可对成员变量进行初始化,只需在new对象是往类后面的括号中填上初始化值。但如需改变对象的成员变量内容,还需调用setXxx方法。对于基本类型的boolean值,Getter方法要写成isXxx的形式。一个标准的类 Java Bean(Alt+Insert)所有成员变量都要使用
2021-03-09 09:35:23
59
原创 instanceof,static,抽象类,接口及父类引用指向子类对象详解
instanceof作用:判断一个对象是否为一个类或其子类的实例,或是其接口的实现类实例,若为真返回布尔值true,否则为false。多用于强制转换前的关系判断。形式:boolean result = 对象 instanceof 类名;注意:若对象不能转换成右边的类,则编译器报错。对象不能是基本类型。对象为null时为false。static类中的静态变量可直接用类名去访问,当前类中的静态方法也可以直接用类名在主启动类中调用。类中的普通方法或静态方法可以直接调用静态方法,因为
2021-02-25 23:05:56
499
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人