自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 spring框架的bean对象生成方式----静态工厂的形式、实例工厂的形式

前期类的准备Maven的pop.xml进行相关包的导入 <!-- 为 Spring 核心提供了大量扩展。可以找到使用 Spring ApplicationContext 特 性时所需的全部类, 可以进行spring.xml配置文件的读取和使用 --> <dependency> <groupId>org.springframework</groupId> <artifactId

2021-11-13 18:01:34 421

原创 spring整合mybatis的使用---------整合第三方技术

前期相关jar包准备,使用Maven进行相关包的导入,即是pop.xml文件中<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.22</version> </dependency>

2021-11-13 16:37:48 1364

原创 spring-----MVC结合IOC控制反转结合的流程

IOC控制反转Spring反向控制应用程序所需要使用的外部资源Spring控制的资源全部放置在Spring容器中,该容器称为IoC容器由spring进行对象的创建,而不是主动在代码通过new创建对象主要通过spring的配置文件,交给spring框架进行管理流程1.maven引入spring框架 <dependency> <groupId>org.springframework</groupId> <artifact

2021-11-08 19:49:06 237

原创 JDBC连接的简化,通过mybatis框架进行配置

优点只需写sql语句的mappper配置文件操作数据库的方法,跟JDBC一样,在相应数据表的操作DAO里面定义,相关操作数据库方法,在mapper文件,进行映射,配置sql语句只需交给qlSessionFactoryBuilder进行动态管理,就会根据传入的DAO和mapper配置的参数信息,生成对应DAO实现类,自动创建查询语句要返回的对象使用1、在maven中,引入mybatis的ja框架包和JDBC的mysql驱动包<?xml version="1.0" encoding="UT

2021-11-07 22:51:58 643

原创 JDBC的使用和连接等流程

一、建立jdbc的配置文件db.properties#jdbc链接配置#驱动classDriver=com.mysql.cj.jdbc.Driver#要连接数据库的地址url=jdbc:mysql://localhost:3306/shop#数据库用户名username=root#数据库密码password=123456二、建立要操作表的结构的对象----User.javapublic class User { private int id; private Stri

2021-11-07 22:10:21 423

原创 MyBatis分页插件的使用----->PageHelper

1.在Maven配置PageHelper插件<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper --><dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.2

2021-11-07 21:45:04 126

原创 java类加载过程和 类加载器的理解

类加载器理解类加载器作用负责将.class文件(存储的物理文件)加载在到内存中(或者说是虚拟机)类加载过程加载通过包名 + 类名,获取这个类,准备用流进行传输在这个类加载到内存中加载完毕创建一个class对象链接验证确保Class文件字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身安全(文件中的信息是否符合虚拟机规范有没有安全隐患)![在这里插入图片描述](https://img-blog.csdnimg.cn/dd1b5e7c0d264ac595

2021-10-21 20:19:36 106

原创 正则表达式的简单理解和介绍

概述正则表达式:是用来匹配某个字符串,符合写好的某个规则相关常用符号语法[ mn]:匹配包含m和n的其中一个字符例如:"我想你"和[想你]将会将"想"匹配出来,将"你"匹配出来[abc][123]:两个字符 第一个是 abc 中的任意一个 ,第二个是 123 中任意一个例如:“我想你了,再干嘛” 和 [想干][想嘛]将会将"干嘛"匹配出来[a-z] :匹配a到z的字符例如:"我mEEav,再d"和[a-z]将会将"m"匹配出来,将"a"匹配出来,将"v"匹配出来,将"d"

2021-10-21 20:06:38 67

原创 lombok和jstl的引入和使用

lombokLombok是一款Java开发插件,通过注解的方式可以简化代码,特别对应类来说,比如其setter,getter…方法常用注解:无参构造器@NoArgsConstructor满参构造器@AllArgsConstructorgetters 和 setters方法@Data引入:在maven的配置文件pom.xml的<dependencies></dependencies>标签里面加入下面的配置即可使用<dependency>

2021-10-19 21:17:37 99

原创 jsp的理解和其原理

概述HTML:只能开发静态资源,不能包含java代码,无法添加动态数据。Servlet:写java代码,可以输出页面内容,但是很不方便,开发效率极低。JSP它包括了HTML的展示技术,同时具备Servlet输出动态资源的能力。但是不适合作为控制器来用。语法<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>:在jsp文件的第一行,属于说明该jsp,该jsp的编码格式,还有支持的是java语言<%

2021-10-19 20:58:19 118

原创 java web的请求重定向、转发、包含的理解和简单演示

不同请求重定向----------response.sendRedirect(String url)两次请求,浏览器行为,地址栏改变,请求域中的数据会丢失使用指定的重定向位置 URL 向客户端发送临时重定向响应并清除缓冲区。 缓冲区将被此方法设置的数据替换URL中的加"/“和不加”/"的区别没有"/":根据当前页面的URL拼接上sendRedirect(String url)里面的URL。比如response.sendRedirect("/index.jsp"),其原先的路径为,即当前路径是h

2021-10-18 19:59:15 166

原创 通过设置响应消息头------控制页面的定时刷新、缓存资源的保存时间

设置响应消息头定时刷新--------response.setHeader(“Refresh”, “2;URL=/login.html”);设置一个时间,让其一定时间过后,可以跳到其他页面,地址栏变为要跳转的那个地址response.setHeader(“Refresh”, “2;URL=/login.html”):第一个表示是刷新页面,第二个参数是代表隔2s后,刷新地址栏到编写的地址http://localhost:8080/login.html代码演示/** * 设置响应消息头: * 通

2021-10-18 19:58:41 488

原创 利用ServletContext对象进行模拟添加保存学生信息

创建一个java web项目准备一个负责收集学生信息的网页add.html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>添加页面</title></head><body> <form action="/add" method="post" enctype="multipart/for

2021-10-16 19:56:02 163

原创 会话技术、Cookie、HttpSesstion的理解

会话概述指的是web开发中的一次通话过程,当打开浏览器,访问网站地址后,会话开始,当关闭浏览器。一个浏览器相当于一个客户端,连接上服务器后,就建立了一个会话。会话管理技术分类一、客户端会话管理技术概述它是把要共享的数据保存到了客户端(也就是浏览器端)。每次请求时,把会话信息带到服务器,从而实现多次请求的数据共享。Cookie客户端浏览器的缓存文件什么是Cookie它是客户端浏览器的缓存文件,里面记录了客户浏览器访问网站的一些内容。同时,也是HTTP协议请求和响应消息头的一部分Co

2021-10-16 19:42:19 474

原创 java的反射和内省理解和简单案例演示

字节码类对象概述;对class类的更高一级抽象,它用于描述类的,比如可以获取一个类中的Field、method…内容反射概述在代码执行期间 获得java对象的全部内容, 即是其字节码类对象,并使用获取Class类对象(字节码类)的三种方式类名.class属性:Class.forName(String类型的类名)对象名.getClass()类名.class内省在反射的基础上,对使用了javabean规范的类,通过反射的技术的基础,可以获得每个类的属性及其属性操作方法,按属性名

2021-10-14 20:01:16 143

原创 注解的理解和简单的使用

概述对我们的程序进行标注和解释注解: 给编译器看的优点减少代码,代码更简洁,更方便结构格式public @interface 注解名称 {public 属性类型 属性名() default 默认值 ;}默认值可以不写没有值的属性,在使用时,要给予初始值注解的数据类型基本数据类型StringClass注解枚举以上类型的一维数元注解:修饰注解的注解元注解就是描述注解的注解类型@Target :指定了注解能在哪里使用@Retention :可以理解

2021-10-14 19:34:02 79

原创 模仿spring配置文件的加载-------xml解析、java反射技术

一、准备对象的配置文件-----beans.xml,保存路径为(E:\beans.xml)<?xml version="1.0" encoding="UTF-8" ?><beams> <bean id="g1" className="_10内省.Girl"> <id>1</id> <name>刘诗诗</name> <age>30</age>

2021-10-13 19:45:09 104

原创 xml解析

概述XML的全称为(EXtensible Markup Language),是一种可扩展的标记语言 标记语言: 通过标签来描述数据的一门语言(标签有时我们也将其称之为元素) 可扩展:标签的名字是可以自定义的,XML文件是由很多标签组成的,而标签名是可以自定义的作用用于进行存储数据和传输数据作为软件的配置文件xml文件的结构和规则XML文件的后缀名为:xml文档声明必须是第一行第一列<?xml version=“1.0” encoding=“UTF-8” standalone

2021-10-13 19:05:22 57

原创 java多线程工具类的使用-------CountDownLatch、Semaphore

并发工具类-CountDownLatch应用场景:在有多个线程的情况下,让某一个线程等其他线程运行完后再运行。构造方法;public CountDownLatch(int count) :参数传递线程数,表示等待线程数量,表示构造一个用给定计数初始化的CountDownLatch。操作方法:public void await() :让线程等待,当锁存器的计数为0时,就运行该线程public void countDown() :当前线程执行完毕,递减锁存器的计数代码示例;pac

2021-09-29 17:10:15 119

原创 java多线程工具类的使用,存储数据的安全性--------Hashtable、ConcurrentHashMap

Hashtable数据结构存储数据与HashMap的比较HashMap:线程不安全(多线程环境下可能会存在问题)Hashtable:多线程环境下,是安全的,在操作时,会使用synchronized将整张表锁起来,效率低下,例如一个添加方法代码示例package _线程工具类;import java.util.Hashtable;public class Main { public static void main(String[] args) throws Interrupt

2021-09-29 16:40:39 466

原创 网络编程--------UDP和TCP传输的差别和理解

基于UDP的网络传输服务接受端搭建通信的码头,通过创建DatagramSocket对象,传入一个端口号。DatagramSocket并不知道将该数据报发送到哪里,而是由DatagramPacket自身决定数据报的目的地 DatagramSocket datagramSocket = new DatagramSocket(6666);DatagramPacket来代表数据报, DatagramSocket接收和发送的数据都是通过DatagramPacket对象完成的。将要发送的数据,打包成数据

2021-09-26 21:11:53 99

原创 线程池的创建和使用

概述线程池就比如是一个装线程的池子,里面存在很大创建时就创建好的线程创建的线程池要手动关闭,否则线程池里面的线程一直处于空闲,等待任务线程池在启动的时,会创建大量空闲线程,当我们向线程池提交任务的时,线程池就会启动一个线程来执行该任务。等待任务执行完毕以后,线程并不会死亡,而是再次返回到线程池中称为空闲状态。等待下一次任务的执行。创建线程池的方式一、用Executors类的静态方法static ExecutorService newCachedThreadPool() :创建一个默认的线程

2021-09-23 20:34:37 863

原创 图解线程的六大状态----NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED

状态介绍当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。线程对象在不同的时期有不同的状态Java中的线程状态被定义在了java.lang.Thread.State枚举类中State枚举类的源码如下public class Thread {public enum State {/* 新建 */NEW ,/* 可运行状态 */RUNNABLE ,/* 阻塞状态 */BLOCKED ,/* 无限等待状态 */WAITING ,/* 计时等待 */T

2021-09-23 19:31:30 1105

原创 实现线程的三种方式及线程常用方法------Thread类、实现Runnable接口、Callable接口

线程和进程的区别进程:是正在运行的程序独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位 动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的 并发性:任何进程都可以同其他进程一起并发执行线程:是进程中的单个顺序控制流,是一条执行路径是进程中的里面的某个执行路径,比如一个网易云音乐是一个进程,打开一个app就是打开了一个进程,而这个App里面播放一条MV,里面的歌词、视频就是一个线程。线程是随机执行的。创建线程的三个方式一、通过继承Thread类

2021-09-22 20:11:57 259

原创 多线程的应用-----三个窗口卖票问题

问题某电影院目前正在上映国产大片,共有10张票,而它有3个窗口卖票,请设计一个程序模拟该电影院卖票应用知识锁Lock是控制多个线程对共享资源进行访问的工具。通常,锁提供了对共享资源的独占访问,每次只能有一个线程对Lock对象加锁,线程开始访问共享资源之前应先获得Lock对象。同步代码块通过关键字synchronized(任意对象) { 多条语句操作共享数据的代码 } 进行对某段代码块上锁,只有当前锁上的代码执行完毕后,才能继续往下执行。synchronized(任意对象) 的对象,传

2021-09-22 19:41:19 1495

原创 I/O流中文件读写编码格式的转换---------转换流InputStreamReader、OutputStreamWriter

转换流概述转换输入流InputStreamReader:为对应编码格式的流读取,和原来保存的字符编码格式相同。传入的是一个字节流构造方法:InputStreamReader(InputStream in):使用默认字符编码创建InputStreamReader对象InputStreamReader(InputStream in,String chatset):使用指定的字符编码创建InputStreamReader对象代码示例://原来文件保存的是GBK格式InputStreamR

2021-09-18 19:08:47 321

原创 通过File类和I/O流实现一个文件复制功能

描述将路径E:\pjava下的文件全部复制到F:\下思路通过I/O流和File类进行实现根据指定路径生成两个file对象File start = new File("E:\\pjava"); File end = new File("F:\\");实现删除方法 void move(File start, File end),传入要操作的两个文件对象,获取源文件的文件对象列表,和排序文件列表为空的情况File[] sFile = start.listFiles(); if

2021-09-18 15:36:23 167

原创 File文件类的使用和使用File类相关方法实现删除文件功能

概述它是文件和目录路径名的抽象表示文件和目录是可以通过File封装成对象的对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已.它可以是存在的,也可以是不存在的.将来是要通过具体的操作把这个路径的内容转换为具体存在的。如果该路径下没有文件,则可以为后续创建相应文件。有的话,可以后面操作相应文件构造方法File(String pathname): 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例File(String parent, String chil

2021-09-17 19:49:07 736

原创 数组去重的两种方法-----使用Set集合的特性,使用stream流

法一:使用Set集合的特性将数组集合转换为一个Set集合,再利用集合的toArray(),为其传一个new Integer[0]参数,意思生成一个Integer数组代码演示import java.util.Arrays;import java.util.HashSet;public class Test2 { public static void main(String[] args) { Integer[] arr = new Integer[]{1,2,5,5,6

2021-09-17 18:56:05 1348 2

原创 Set集合、List集合、Map集合的理解和区别

集合的基本分类Collection集合包括Set集合、List集合、Queue集合是单列集合,意思只需存储值即可Map集合Map集合是双列集合,即要存储的是一个键值对,要存储两个值,键值和每个键对应的值,要存储两个值图解主要集分类集合和数组的区别相同点:都是存储数据的容器,可以存储多个数据不同点:数组的长度是不可变的,而集合的长度是可变的数组可以存储基本数据类型和引用数据类型。而集合只能存储引用数据类型Set集合、List集合、Map集合的不同Set

2021-09-16 20:04:57 285

原创 HashSet集合的不重复和存储原理

概述HashSet集合里面的元素不允许重复,而且存储没有顺序没有索引,不可以使用普通for循环遍历,但可以使用正确for循环—>foreach遍历。可以使用迭代器iterator()进行迭代遍历,但要注意并发异常问题。底层是使用hash表进行存储的,哈希表是由数组+链表实现的。JDK1.8后,在存储数量少于8个,就还是原来的数组+链表。多于8个元素后,就是数组+红黑树。存储原理首先,根据存储元素,调用其元素的hashCode()方法,获得其哈希值根据哈希值,在数组的下标为哈希值的位置

2021-09-16 19:05:04 1280

原创 TreeSet集合的自然排序和自定义排序,集合的理解

TreeSet集合概述:TreeSet可以确保集合元素处于排序状态,里面的集合元素不允许重复。一、通过序Comparable接口的compareTo(T o)方法比较返回0,就表示相等,不添加,是由要添加进TreeSet集合的数据实现,-1是小,1是大。二、通过new TreeSet()时,传入Comparator对象,实现其 compare()方法比较,-1是小,1是大,0是相等。排序一、自然排序往TreeSet集合添加数据时,以下数据类型将按自然排序的顺序排序基本的数值数据类型将小到

2021-09-15 20:38:02 193

原创 泛型及其通配符的理解

概述格式:<大写字母>,例如定义:<> 中的字母,泛指一种数据类型,它可以是任意的数据类型,在使用时,为其传入一个类型即可。<> 中的字母可以当一种数据类型,在类里面使用。优点: 把运行时期的问题提前到了编译期间,在编译期间就会进行类型的检测,避免了强制类型转换。泛型是在JDK5中加入的。...

2021-09-15 19:38:41 89

原创 java的时间处理类----日历类Calendar类,TimeZone类时区相关类

Calendar类定义:Calendar是一个抽象类,它用于表示日历不能使用构造器来创建Calendar对象。但它提供了几个静态getInstance()方法来获取Calendar对象,这些方法根据TimeZone,Locale类来获取特定的Calendar,如果不指定TimeZone、Locale(时区),则使用默认的TimeZone、Locale来创建CalendarCalendar与Date的相互转换Calendar -----> Date:通过Calendar的getTime(

2021-09-10 16:51:52 398

原创 java利用Date类做练习,实现倒计时30s功能

原理:利用Date时间类,获取对应的时间对象利用System.currentTimeMillis()方法,获取现在到1970年1月1日 00:00:00的毫秒数,在这个毫秒数的基础上,加30秒传入Date对象中//获得当前的Date时间对象后的30秒 Date d = new Date(System.currentTimeMillis()+30*1000);利用while循环和Date对象的after()方法比较设定好的对象与现在的时间对象的先后,因为需要1s运行一次,所以使用Thread

2021-09-10 15:25:52 1279

原创 java的时间类的SimpleDateFormat类,Date类

SimpleDateFormat类定义和构造方法说明:SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。两个构造方法:无参构造方法:构造一个SimpleDateFormat,使用默认模式和日期格式。 默认格式:21-9-9 下午2:54,表示21年9月9日,下午2:54有参构造方法:构造一个SimpleDateFormat使用给定的模式和默认的日期格式。public SimpleDateFormat(String pattern)。pattern就是你要

2021-09-10 10:48:53 309

原创 快速排序算法

原理在一个数组里面,要快速排序,需要三个重要变量,拿数组里面的第一个值,作为分割数值的比较根据另外两个变量当作指针,一个叫left,指向数组的最左边的那个值,一个叫right

2021-09-09 12:02:47 77

原创 java实现整数转二进制

整型变量转二进制第一种:直接利用Integer.toBinaryString(int i)即可转换System.out.println(Integer.toBinaryString(3));第二种:利用递归进行二进制的求值。求法:要求的3除2,一直除到商为0,则将它们的余数从后输出。public class Test { public static void main(String[] args) { get(3); } private s

2021-09-08 15:56:57 7925

原创 java基本类型的包装类Integer,Character......,缓存问题

基本类型的包装类好处基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据包装类的写法int --> Integer类char --> Character类short --> Short类long --> Long类byte --> Byte类float --> Float类double --> Double类boolean --> Boolean类记忆方法:除了int,char的包装类和本身不一样外,其他中都是

2021-09-08 13:23:22 258

原创 String类的常用方法 : equals(),charAt(int index),substring()...

String类常用APIpublic boolean equals(Object anObject) 比较字符串的内容,严格区分大小写public class Test5{ public static void main(String[] args){ String s1 = new String("abc"); //下面的内容返回为true,因为只是比较内容 System.out.println(s1.equals("abc"));//true }}public boole

2021-09-07 21:15:59 282

空空如也

空空如也

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

TA关注的人

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