- 博客(31)
- 收藏
- 关注
原创 ServletContext
1 ServletContext概述1.1 基本介绍ServletContext对象,它是应用上下文对象。每一个应用有且只有一个ServletContext对象。它可以实现让应用中所有Servlet间的数据共享。1.2 生命周期出生——活着——死亡出生: 应用一加载,该对象就被创建出来了。一个应用只有一个实例对象。(Servlet和ServletContext都是单例的)活着:只要应用一直提供服务,该对象就一直存在。死亡:应用被卸载(或者服务器挂了),该对象消亡。1.3 域对
2021-10-19 11:16:50
312
原创 Servlet
1.1 Servlet概述Servlet是SUN公司提供的一套规范,名称就叫Servlet规范,它也是JavaEE规范之一。第一:Servlet是一个运行在web服务端的java小程序第二:它可以用于接收和响应客户端的请求第三:要想实现Servlet功能,可以实现Servlet接口,继承GenericServlet或者HttpServlet第四:每次请求都会执行service方法第五:Servlet还支持配置1.2 Servlet入门1.2.1 Servlet编码步骤1)
2021-10-19 11:09:58
204
原创 HTTP协议
1 HTTP协议概述1.1 HTTP协议概念HTTP的全称是:Hyper Text Transfer Protocol,意为 超文本传输协议。它指的是服务器和客户端之间交互必须遵循的一问一答的规则。形容这个规则:问答机制、握手机制。它规范了请求和响应内容的类型和格式。HTTP协议是由W3C组织管理和维护的。1.2 HTTP协议版本目前HTTP协议主要是1.0版本和1.1版本。这两个版本的区别主要是两个方面。第一:HTTP1.1版本比1.0版本多了一些消息头。第二:HTTP1.
2021-10-19 10:56:30
223
原创 Tomcat
2.1 Tomcat介绍2.1.1 关于服务器服务器的概念非常的广泛,它可以指代一台特殊的计算机(相比普通计算机运行更快、负载更高、价格更贵),也可以指代用于部署网站的应用。我们这里说的服务器,其实是web服务器,或者应用服务器。它本质就是一个软件,一个应用。作用就是发布我们的应用(工程),让用户可以通过浏览器访问我们的应用。常见的应用服务器,请看下表:服务器名称 说明 weblogic 实现了javaEE规范,重量级服务器,又称为javaEE容器 websphereAS
2021-10-19 10:53:21
285
原创 系统结构C/S与B/S
系统结构1. 系统结构简介在我们前面课程的学习中,开发的都是Java工程。这些工程在企业中称之为项目或者产品。项目也好,产品也罢,它是有系统架构的,系统架构的划分有很多种方式。我们今天讨论的是基础结构上的划分。除此之外,还有技术选型划分,部署方式划分等等。基础结构划分:C/S结构,B/S结构两类。技术选型划分:Model1模型,Model2模型,MVC模型和三层架构+MVC模型。部署方式划分:一体化架构,垂直拆分架构,分布式架构,流动计算架构,微服务架构。2.C/S结构它指的是.
2021-10-19 10:47:29
1197
原创 生产者与消费者模型
1 生产者和消费者模式概述【应用】 概述 生产者消费者模式是一个十分经典的多线程协作的模式,弄懂生产者消费者问题能够让我们对多线程编程的理解更加深刻。 所谓生产者消费者问题,实际上主要是包含了两类线程: 一类是生产者线程用于生产数据 一类是消费者线程用于消费数据 为了解耦生产者和消费者的关系,通常会采用共享的数据区域,就像是一个仓库 生产者生产数据之后直接放置在共享数据区中,并不需要关心消费者的行为 消费者只需要从共享数据区中去获取数据,并不需要关心生产者的行为
2021-09-23 18:51:24
212
原创 Java线程安全的可见性与原子性
1.1 可见性代码分析:public class Demo { static int money = 1000;//初始钱数 public static void main(String[] args) { Thread women = new Thread(()->{ while(money < 200000); System.out.println("我们可以结婚了"); .
2021-09-23 18:46:39
136
原创 Java线程池
1.基本原理提到池,大家应该能想到的就是水池。水池就是一个容器,在该容器中存储了很多的水。那么什么是线程池呢?线程池也是可以看做成一个池子,在该池子中存储很多个线程。线程池存在的意义:系统创建一个线程的成本是比较高的,因为它涉及到与操作系统交互,当程序中需要创建大量生存期很短暂的线程时,频繁的创建和销毁线程对系统的资源消耗有可能大于业务处理是对系统资源的消耗,这样就有点"舍本逐末"了。针对这一种情况,为了提高性能,我们就可以采用线程池。线程池在启动的时,会创建大量空闲线程,当我们向线程池提.
2021-09-23 17:36:49
139
原创 Java实现多线程的三种方式
1.实现多线程方式一:继承Thread类【应用】 方法介绍 方法名 说明 void run() 在线程开启后,此方法将被调用执行 void start() 使此线程开始执行,Java虚拟机会调用run方法() 实现步骤 定义一个类MyThread继承Thread类 在MyThread类中重写run()方法 创建MyThread类的对象 启动线程 代码演示 public
2021-09-22 19:13:49
103
原创 Properties集合
我们或许见过以.properties结尾文件,这种文件通常用做于配置文件,通常用作于加载mysql配置信息,在Java中有一种Properties集合. Properties介绍 是一个Map体系的集合类 Properties可以保存到流中或从流中加载 属性列表中的每个键及其对应的值都是一个字符串 Properties基本使用 public class PropertiesDemo01 { public static void m..
2021-09-18 16:18:14
314
原创 Java的IO流使用
1.流的分类* 1.操作数据单位:字节流、字符流* 2.数据的流向:输入流、输出流* 3.流的角色:节点流、处理流2.流的体系结构3.输入、输出的标准化过程3.1 输入过程① 创建File类的对象,指明读取的数据的来源。(要求此文件一定要存在)② 创建相应的输入流,将File类的对象作为参数,传入流的构造器中③ 具体的读入过程: 创建相应的byte[] 或 char[]。④ 关闭流资源说明:程序中出现的异常需要使用try-catch-fina...
2021-09-17 20:09:24
252
原创 Java利用File类实现copy复制操作
在实现复制操作前先要掌握io操作,如果不熟悉请看我的相关文章在熟悉io流后,我们利用io实现文件的复制public static void copy(File oldFile, File newFile){ try ( InputStream in = new FileInputStream (oldFile); OutputStream out = new FileOutputStream ( newFile )) {
2021-09-17 20:03:12
8287
原创 Java的File类删除功能
delete()方法可以删除文件或文件夹,但要注意:java的删除不走回收站,删除后就真的没了! 要删除一个文件目录,请注意该文件内不能包含文件或文件目录1.删除文件或空文件夹2.删除有内容的文件夹必须采用递归的方式,直接到达最底层,一级一级删除,很简单的一个递归逻辑public static void del(File file){ File[] files = file.listFiles ();//将目录下的内容变成文件数组...
2021-09-17 19:52:48
1345
原创 Java的File类的使用
1.File类的理解* 1. File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹)* 2. File类声明在java.io包下* 3. File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,* 并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。* 4. 后续File类的对象常会作为参数传递到流的构造器中,指明读取或写入的"终点".2.File的实例化2.1 常用构造器File...
2021-09-17 19:10:13
111
原创 Stream流的使用
1.Stream API的理解:1.1 Stream关注的是对数据的运算,与CPU打交道,而集合关注的是数据的存储,与内存打交道1.2 java8提供了一套api,使用这套api可以对内存中的数据进行过滤、排序、映射、归约等操作。类似于sql对数据库中表的相关操作。2.注意点:* ①Stream 自己不会存储元素。* ②Stream 不会改变源对象。相反,他们会返回一个持有结果的新Stream。* ③Strea...
2021-09-16 18:32:34
384
原创 TreeSet的理解
1.TreeSet集合概述和特点【应用】 不可以存储重复元素 没有索引 可以将元素按照规则进行排序 TreeSet():根据其元素的自然排序进行排序 TreeSet(Comparator comparator) :根据指定的比较器进行排序 TreeSet就是通过定义的排序规则进行排序,下面介绍自然排序Comparable的使用和定制排序Comparator的使用主要代码示例://定义一个学生类public class Student.
2021-09-15 19:44:25
322
原创 泛型的理解
1.泛型的概念所谓泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在使用时(例如,继承或实现这个接口,用这个类型声明变量、创建对象时确定(即传入实际的类型参数,也称为类型实参)。2.集合中泛型使用的变化3. 集合中使用泛型总结:* ① 集合接口或集合类在jdk5.0时都修改为带泛型的结构。* ② 在实例化集合类时,可以指明具体的泛型类型* ③ 指明完以后,在集合类或接口中凡是定义类或接口时,内部结构(比如:方法...
2021-09-15 19:25:59
697
原创 Java集合
1. 集合与数组存储数据概述:集合、数组都是对多个数据进行存储操作的结构,简称Java容器。说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi,数据库中)2. 数组存储的特点:> 一旦初始化以后,其长度就确定了。> 数组一旦定义好,其元素的类型也就确定了。我们也就只能操作指定类型的数据了。* 比如:String[] arr;int[] arr1;Object[] arr2;3. 数组存储的弊端:* > 一旦初...
2021-09-15 19:18:58
102
原创 Java异常处理
Java的异常的体系Java异常处理有一个根类Throwable,下面有两个子类,分别为Error和Execption.Error(错误):不是代码方面的错误 我们不可解决 Execption(异常):代码方面的错误 可以我们来解决由于error不属于代码方面的错误,我们无法处理,所以我们着重处理Execption这个异常类.在Execption类下有很多子类,我们根据处理的时机 分为两大类 编译异常:在编译期间出现的异常,也就是我们在开发工具例如idea上面编写代码时...
2021-09-09 20:45:10
103
原创 String类常用方法
int length():返回字符串的长度: return value.lengthchar charAt(int index): 返回某索引处的字符return value[index]boolean isEmpty():判断是否是空字符串:return value.length == 0String toLowerCase():使用默认语言环境,将 String 中的所字符转换为小写String toUpperCase():使用默认语言环境,将 String 中的所字符转换为大写String
2021-09-08 19:35:03
101
原创 String类型的值传递问题
在创建一个String对象时我们有两种方式,可以通过直接赋值,也可以通过new对象通过构造器赋值.String s1 = "abc"String s2 = new String("abc");对于第一种来说,它是通过在方法区字符串常量池创建字符串"abc",直接指向它,第二种是先在堆空间中创建String对象,由这个对象指向方法区中的字符串"abc",而s2是指向这个String对象....
2021-09-08 18:32:53
426
原创 equals与==的区别
==是一种运算符,eauals是一种方法.==对于基本数据类型比较的是值,而对于引用数据类型比较的是地址值.equals这个方法只能用于引用数据类型,在Object包下的是调用==进行比较地址值,但通常我们会重写equals方法,用于比较内容的值....
2021-09-08 09:42:42
112
原创 Java面向对象理解
面向对象的大特征有:封装性,继承性,多态性,抽象性.通过这些特征实现面向对象的编程.既然是面向对象,首先介绍何为对象,其实对象就是实际存在的该类事物的每个个体,而其中类就是对一类事物的描述,是抽象的,对象是将该类实例出来,通俗来说就是一个男孩,他拥有各种各样的特征和能力,他就在一个类,而对象就是具体的一个男孩.接下来介绍这几大特征了:封装性:隐藏对象内部的复杂性,只对外公开简单的接口。外界通过公开的接口进行调用,而不能直接使用隐藏的东西,从而提高系统的可扩展性、可维护性。通俗的说,把该隐藏的隐藏
2021-09-06 21:36:32
84
原创 面向对象与面向过程的理解
通常我们都知道Java是一种面向对象的语音,c语言是面向过程的一种语言,那到底什么是面向对象呢,面向过程又是什么概念.面向过程:强调的是功能行为,以函数为最小单位,考虑的是怎么做.面向对象:强调的是具有功能的对象,以对象为最小单位,考虑谁来做.直接字面理解可能不太好理解,用生活中的东西例子来说吧.拿洗碗来说吧,用面向过程的思维来处理就是:冲水>上洗洁精>拿刷子>刷碗>冲水>甩水而面向对象就将这些东西集合在一起,就相当于洗碗机,我们直接使用洗碗机就能洗碗.
2021-09-06 18:21:23
94
原创 用Java实现:有500个小孩手拉手围成一圈,从1开始数,数3小孩退出圈外,直到最后一位小孩,求最后一位小孩的序号是?
分析题目,小孩从1数到3,3退出,剩下继续,由于是手拉手成一个圈,会轮回回来,一直进行下去可以就剩一个小孩,由于要得到小孩序号,我们可以定义初始化一个500长数组,每有一个小孩数3就将其赋值为1,建立两个索引,一个记录进行的次数,一个记录剩余小孩人数。 int[] array = new int[500]; int size = array.length; int index = 0; int flag = size;建立一个for循环
2021-09-02 20:38:59
1621
原创 Java实现冒泡排序
冒泡排序是数据结构种的一种算法,应用场景十分广,其算法思想是将数组中的数值从大到小一个一个到达最终排序位置,就像吐泡泡一样,一个个将最大值排序好.(这里以从小到大举例)按照算法思想,先从数组中培训好一个最大值,我们从0开始,依次检索两个相邻位置的元素大小,将大的往右边靠,交换的方式可以参考本人的文章https://blog.youkuaiyun.com/PlutoHzl/article/details/120003017?spm=1001.2014.3001.5501中关于两个变量进行值交换的三种方式,在这里我
2021-09-01 21:06:30
77
原创 有1、2、3、4,4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? Java实现
首先分析题目,我们可以先考虑百位,有4种情况,可以是1-4的任意一个,利用数学知识,十位和各位只有3种选择了,而十位和个位交换顺序会有不同结果,因此是一个A32问题,一共有3*2=6种情况,结合百位一共有4*6=24种情况.接下来编程实现,不妨先定义一个数组,将1,2,3,4放进去.int[] array = new int[]{1,2,3,4};我们可以先看百位有4种选择,十位有3种,个位有2种情况,可以用三层for循环嵌套for (int i = 0; i < 4 ;i++){
2021-09-01 20:46:12
5266
原创 Java实现100以内素数,并以规定形式打印输出
利用Java实现求100以内所有素数,并以每行只显示5个的效果实现public class PrimeNumber { public static void main(String[] args) { int count = 0; a:for (int i = 2; i <= 100; i++) { for (int j = 2; j < i; j++){ if(i % j == 0){
2021-08-31 19:01:44
410
原创 万年历的实现,不使用Date类,靠时间计算实现
万年历是通过我们输入年和月就能够得到该月的日历,不使用月历类,仅仅通过逻辑实现.我们可以先通过查询得出1990年的1月1日是星期一,将这个时间作为基点,通过计算你所要的日历之间的时间差,再通过模7得出该月份1号所对应星期几,具体代码如下:package _03;import java.util.Scanner;public class PerpetualCalendar { public static void main(String[] args) { //通
2021-08-31 17:37:14
207
原创 两个变量进行值交换的三种方式
在很多应用场景中我们需要将两个变量的值进行交换,在这里总结了3种方式以及它们的利弊.第一种,可以定义一个额外的变量用于进行数值交换,这是种最普通但实用性又很强的方法int a = 1;int b = 2;int c = a; //c = 1;a = b; //a=2;b = c; //b = 1;第二种利用加减法的操作,这种方法可以无需在定义一个新变量就能实现数值交换,但有一个致命的缺陷,a+b这种操作可能会导致数据的溢出,导致最后交换出来的数值完全不对.in...
2021-08-30 18:35:58
3149
原创 Java的Path环境环境变量的理解以及配置
对于Java小白来说,安装完Java之后便要开始配置环境变量Path,于是开始网上找配置的方法,结果出现两种情况,要么成功配置,能够正常使用Java,要不就出现各种问题.对于为什么要配置以及为什么这样配置始终不明白.本文介绍环境变量的作用以及如何理解配置它.首先理解环境变量Path,环境变量就是将你需要使用的Java开发工具的命令进行全局配置,使得你能够在任何文件路径下访问到你所需要执行的命令,而不需要先cd到目标所在路径在执行命令,如果不配置环境变量也能够执行命令,但有一个前提条件,就是必须在命令所在
2021-08-30 17:36:10
1496
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人