- 博客(55)
- 收藏
- 关注
原创 Servlet
Servlet是运行在服务端的小型Java程序,是sun公司提供一套规范,用来处理客户端请求,响应给浏览器的动态资源。但servlet的实质就是Java代码,通过Java的API动态的向客户端输出内容(HTML)
2023-11-01 22:11:21 255
原创 Apache Tomcat下载安装配置使用超详细
首先创建一个项目,然后项目右键,点击。选择Versions选择4.0。在idea右上角点击设置,点击。点击ProjectSDK选择当前使用JDK版本,选择17。点击Modules,点开项目名称,选择Web,如果xml地址和web根目录存在则不做任何操作,不存在点击+添加。点击Artifacts,点击+,选择,选择。在项目目录web下配置web.xml,下载Servlet的jar包,存放到lib目录下。写一个Java程序,点击。点击+,选择下面的Local。点击。
2023-10-12 23:21:09 1490
原创 什么是视图
视图是基于查询的虚拟表,是一个逻辑表,本身并不包含数据。同真实的表一样,视图包含一系列带有名称的列和行数据,在使用视图时动态生成。视图就是一条SELECT语句执行后返回的结果集。SELECT所查询的表称为视图的基表,而查询的结果集称为虚拟表,视图本身并不存储具体的数据,视图的数据存在于视图的基表中,基本表数据发生了改变,视图的数据也会跟着变化。
2023-10-03 16:22:38 799
原创 JDBC简介
客户端操作MySQLMySQLSQLyogNavicatSQLWaveMySQLJavaMySQLjdbcJavaJDBCSQLJava APIJavaJDBCJDBCSQLJDBC APIMySQLOracleDB2JDBC APISQLJavaJDBCJavaJava。
2023-09-30 17:15:09 200
原创 网络编程入门
IPv6:为了互联网的蓬勃发展,IP地址的需求量越来越大,但是网络地址资源有限,使得IP的分配愈发紧张。为了扩大地址空间,拟通过IPv6重新定义地址空间,采用128位地址长度,每16个字节一组,分成8组十六进制数,表示成 ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 ,号称可以为全世界的每一粒沙子编上一个网址,这样就解决了网络地址资源数量不够的问题。IPv4:是一个32位的二进制数,通常被分为四个字节,表示为a.b.c.d的形式,例如192.168.1.66。
2023-09-21 22:36:44 182
原创 Java中常见的线程池
【强制】线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。创建一个可重用固定个数的线程池,当线程处于空闲状态时,他们并不会被回收,除非线程池被关闭了,如果工作线程数量达到线程池初始的最大容量,则将提交的任务存入池队列中。创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证任务按照指定顺序(FIFO,LIFO)执行。如果没有可用的线程,将创建一个新的线程并将其添加到。
2023-09-20 14:07:16 124
原创 线程安全问题
在JDK5引入了ReentrantLock,ReentrantLock重入锁,是实现Lock接口的一个类,也是在实际编程中总是用皮率很高的一个锁,支持重入性,表示能够对共享资源重复加锁,即当前线程获取该锁后再次获取不会被阻塞,支持公平锁和非公平锁两种方式。当我们使用多个线程访问同一资源的时候,且多个线程中对资源有写的操作,就容易出现线程安全问题。如果有多个线程在同时运行,而这些线程可能会同时运行这些代码,程序每次运行的结果和单线程每次运行的结果是一样的,就是线程安全的,反之则是非线程安全的。
2023-09-18 23:15:29 137
原创 字符集详解
字符是各种文字和符号的统称,包括各个国家的文字,标点符号,表情等等。字符集就是一系列字符的集合。字符集的种类较多,每个字符集所表示的字符范围通常不同,比如有些字符集无法表示汉字。计算机只能存储二进制的数据。
2023-09-17 18:16:10 98
原创 字符流读写文本文件
当使用字节流读取文本文件时,可能会有一个小问题。就是遇到中文字符时,可能不会显示完整的字符,那是因为一个中文字符可能占用多个字节存储。所以Java提供一些字符流类,以字符为单位读写数据,专门用于处理文本文件。
2023-09-17 17:51:52 584
原创 IO流(IO Stream)
我们已经系统学习了File类,并且已经知道File类的实例用于表示文件或目录的路径名。虽然我们可以通过File实例来访问文件或目录的元数据,甚至可以创建、删除文件或目录,但是,我们却不能通过File实例来访问文件中存储的内容,本节主要研究通过流来读写数据。为了能够 读取文件中的内容 或者 向文件中写入内容 ,就需要用到文件输入流或文件输出流,本节将系统讲解通过流完成对文件内容的读取和写入操作。但千万不要认为我们只能从文件中读取数据或向文件中写入数据,还有在之前我们从控制。
2023-09-13 22:10:27 163
原创 使用IO操作文件
类是文件和目录 路径名 的抽象表示,主要用于文件和目录的创建、查找和删除等操作。Java虚拟机中的一个 File 实例表示一个路径,这个路径可能对应一个文件或一个目录。File类的实例所表示的路径,可能存在于磁盘上,也可能在磁盘上根本不存在。类是不可变的;也就是说,一旦创建,由File对象表示的抽象路径名永远不会改变。类提供了用于操作文件或目录的方法,但并不支持访问文件的内容。
2023-09-13 20:58:40 93
原创 字符串类型
正则表达式有一些特殊字符和普通字符组成,例如:\d{3}-\d{4}可以匹配“123-4567”的字符串,\d表示数字字符,{3}表示连续匹配3次,-表示匹配一个横线。字符串可以进行加法运算,作用是将两个字符串连接到一起,也可以将字符串与基本数据类型变量做加法运算,系统会先将基本数据类型转换成字符串型后进行连接操作。用于在给定字符串中查找匹配正则表达式的子序列,返回一个布尔值,如果找到,则使用group方法获取匹配的子序列。在数组中length属于数组的属性,在字符串中length()是字符串的方法。
2023-09-12 14:11:50 122
原创 Java面试题(持续更新中)
因为类调用时需要实例化,消耗比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、Linux/Unix、嵌入式开发等一般采用面向过程开发。但是,面向过程没有面向对象易维护、易复用、易扩展。这个并不是根本原因,面向过程也需要分配内存,计算内存偏移量,Java性能差的主要原因并不是因为它是面向对象语言,而是Java是半编译语言,最终的执行代码并不是可以直接被CPU执行的二进制机械码。因为面向对象有封装、继承、多态的特性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。
2023-09-11 22:47:24 420
原创 集合框架和泛型二
不包含重复元素的集合、不能保证存储的顺序、只允许有一个null。抽象方法,都是继承自接口。Set集合的实现类有很多,在此我们重点了解HashSetTreeSet。Set集合中没有提供使用索引来访问元素的方法,因为元素没有固定的顺序。非同步:不是线程安全的。HashSet:基于哈希表实现,具有O(1)的平均时间复杂度的查找、插入和删除操作。TreeSet:基于红黑树实现,具有排序功能,元素会按照自然排序或指定的比较器顺序进行排序。
2023-09-11 22:07:54 317
原创 集合框架1
设计用于在处理之前保留元素的集合。除了基本的Collection操作之外,队列还提供额外的插入,提取和检查操作。java中的Queue接口是继承自Collection接口的子接口,用于表示一种队列(FIFO,先进先出)的数据结构。Queue接口定义了一组用于操作队列的方法,例如添加元素到队尾、移除队头元素、获取队头元素、判断队列是否为空等。主要抽象方法特殊值(或者null或false,取决于操作)。boolean。
2023-09-11 14:18:30 114
原创 异常的捕获和处理
异常是指程序在运行过程中出现的非正常情况。res=i/j;//算术运算异常一旦程序发生异常将会立即结束,因此“end”没有输出。当JDK中的异常类型不能满足程序的需要时,可以自定义异常类。步骤:①定义异常类,并继承Exception或者RuntimeException。②编写异常类的构造方法,向父类构造方法传入异常描述信息,并继承父类的其他实现方法。③实例化自定义异常对象,并在程序中使用throw抛出。try {person.setName("扈三娘");
2023-08-30 21:54:48 941
原创 内部类和匿名类
一个类可以有多个内部类,内部类可以实现接口和继承类,内部类可以解决Java单继承问题,因为内部类和外部类可以相互访问。内部类的实例化,内部类依托于外部类,所以内部类的实例化要先实例化外部类,然后再实例化内部类。匿名类可以访问类中的成员,不能访问方法中的变量,除非是final型的。静态内部类不能直接访问外部类的成员,可以直接访问外部类的静态成员。外部类和内部类可以相互访问类中的成员,包括私有的。外部类可以直接被使用,内部类的使用依赖于外部类。内部类分为static内部类和普通内部类。
2023-08-28 21:48:38 194
原创 数据结构1
数据结构是计算机科学中存储和组织数据的一种方式,它定义了数据的表示方式和对数据进行操作的方法,常见的数据结构包括数组、栈、链表、队列、树、图等。
2023-08-27 14:22:09 447
原创 第七章——字符序列
public final class String 是用 final 修饰的类,在 Java 中用 final 修饰的类不能被。从中我们发现,不管是 jdk 8 及以前还是 jdk 9 及以后版本, value 属性都是 final 的。ing 该方法确定的对象相等( equals的结果是true )的字符串,则返回池中的字符串。JDK13 新增文本块(预览),在 JDK15 正式在字符串支持文本块,用 """ 表示。则,将此 String 对象添加到池中并 String 返回对该对象的引用。
2023-08-24 14:32:09 155
原创 面向对象——多态
多态意味着在一次方法调用中根据包含的对象的实际类型(实际子类的对象)来决定应该调用哪个子类的方法,而不是由用来存储对象引起的变量的类型来决定的。多态就是说一个父类可能有多个子类,每个子类都重写了父类的方法,当父类引用调用方法时,父类引用指向哪个子类,就调用哪个子类的方法,形成了父类引用调用相同的方法名称时,有不同的输出形态。父类引用调用方法时,实际上调用的是子类的方法,不同的子类有不同的方法实现,体现出同一个方法在不同子类中的不同形态的表现。父类只能调用子类从父类继承的方法或重写的方法。
2023-08-22 21:35:43 60
原创 面向对象——继承
目录一、继承的基本概念二、继承的应用三、使用继承和重写实现子类1.使用继承定义部门及其子类2.使用super关键字调用父类成员3.方法重写4.方法隐藏5.Object类6.实例化子类对象7.this和super的区别8.final关键字继承中可以解决编程中代码冗余的问题,新类可以在不增加自身代码的情况下,通过从现有类中将继承其属性和方法,来实现充实自身内容,这种现象或行为就称为继承。新类称为子类,现有类称为父类。Java类中只支持单继承,即一个类只能有一个直接父类。类与类之间有三种关系,分别是“is a”,
2023-08-21 16:00:07 67
原创 面向对象——封装
封装的实质就是将类的成员变量、方法等隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。可以使用访问修饰符来控制类中的数据和方法的访问级别,从而实现包装。面向对象编程提倡对象之间实现松耦合关系。防止外部直接访问类的内部数据,可以保护数据的安全性。通过限制外部访问,可以更好地控制数据的正确性和完整性。可以隐藏类的实现细节,使得类的用户不需要了解类的内部实现细节,只需要知道如何使用类提供的接口。
2023-08-18 22:09:36 68
原创 包的使用概述
包是类的容器,利用包来划分名字空间,用于分隔类名空间,以避免类名冲突。语法格式:package 包名;包的声明必须是Java源文件中的第一条非注释行语句,而且一个源文件只能只能有一个包声明语句。一个唯一的包名前缀通常是全部小写的ASCⅡ码,并且是一个顶级域名com、edu、gov、net、org,通常使用域名的倒序。例如kaifamiao.com,声明包时为com.kaifamiao。定义包后,Java会在硬盘生成与之一一对应的目录。
2023-08-18 21:11:40 391
原创 对象的构造和初始化
构造方法的作用是为成员变量的初始化。[访问修饰符] 方法名([参数列表]){//省略方法体的代码构造方法没有返回值默认构造方法没有参数构造方法的方法名必须与类名相同public class Person { //定义person类this.name="喵星人";在缺少自定义构造的情况下,Java会自动添加一个默认构造方法。该默认构造方法不带任何参数,从而使得实例化而无需传递任何参数。
2023-08-17 21:41:10 217
原创 创建和使用对象
类是一类事物的集合和抽象,代表着这类事务共有的字段和行为。一个对象称为类的一个实例,是类一次实例化的结果。创建对象就是定义了一个新的变量,变量名就是对象名,变量的类型就是被实例化的类。成员变量:在类中(方法外)声明的变量,在创建对象时会进行初始化。引用对象的字段和方法,需要使用成员运算符“.”对象的指针 对象的实例。对象名.方法名()//引用对象的方法。实例变量:每个对象的实例变量不共享。对象名.属性 //引用对象的字段。类名 对象名=new 类名();类的对象可以调用类中的成员。
2023-08-16 16:22:31 107
原创 面向对象基本概念
类由字段和方法两部分构成。人字段:姓名年龄方法:工作面向对象设计的过程就是抽象的过程。发现类,类定义了对象将会拥有的字段和方法。发现类的字段,对象所拥有的特性在类中的表示称为类的字段。发现类的方法,对象执行的操作。语法格式如下:[访问修饰符] class 类名{成员变量声明;//字段成员方法声明;//行为类的修饰符只有一个publicclass是声明类的关键字类名首字母大写类的{}里面包括类的成员,静态初始化,实例初始化,构造方法//省略类内部的具体代码。
2023-08-15 22:21:31 406
原创 数组工具类
如果length大于原数组的长度,则新数组前面的元素就是原数组所有的元素,后面的元素是根据数组类型补充的默认值,如整数补充0,浮点数补充0.0。Arrays类中的copyOf(arr,length)可以进行数组赋值,其中length是新数组的长度。JDK提供了一个专门操作数组的工具类,位于java.util包中,如排序、复制、比较、填充等。如果length小于原数组的长度,则新数组就是原数组的前length个元素;从指定的原数组赋值一个数组,从指定位置开始,到目标数组的指定位置。
2023-08-14 22:07:17 113
原创 二维数组练习
2. 设计程序,根据学生总成绩进行排序(降序排列),并输出学生姓名、每门课程的名称和。有如下数组 nums ,请通过删除掉其中的 33 ,得到一个新的数组 newNums。1. 设计程序按照各个学生的 Java 成绩进行排序 ( 降序 )该学生的成绩、该学生的总成绩。给arr的第3位添加数据6。
2023-08-10 22:47:10 268
原创 数组中的常见问题
这个程序只在栈中为数组名称分配了内存,但是并没有在堆中为数组元素分配内存。为数组元素分配内存,并让数组指向到数组元素,代码修改为int[] scores=new int[5]即可。运行该代码时发生了ArrayIndexOutOfBoundsException异常,这个异常表示数组的下标越界了,数组下标的界限是介于0到数组长度减1范围内的整数。//直接为数组元素初始化时不允许指定数组长度。
2023-08-10 21:11:11 104
原创 数组之一维数组
数组是具有相同数据类型且按一定次序排列的一组变量的集合体。即用一个变量名表示一批数据。构成数组的每一个数据。下标是数组元素在数组中的位置。在一个数组中,数组下标是用整数表示的,从0开始,依次累加1,也叫数组索引。数据类型 数组名[];或数据类型[] 数组名;例如:或数组是什么数据类型,数组的元素就是什么数据类型数组的特征是[]数组是引用类型。
2023-08-08 17:13:09 44
原创 while循环和for循环
在一个循环语句的循环体内再包含循环语句,也称为嵌套循环。被包含的循环语句称为内循环,包含其他循环语句的循环称为外循环。for(循环变量初始化;改变循环变量的值){}while(循环条件);while(循环条件){while(循环条件){
2023-08-07 11:52:42 417
原创 Scanner和常用运算符
完成“实现成绩管理”任务:从键盘输入学生姓名、数学成绩、语文成绩,然后输出学生的成绩信息。基本的赋值运算符其实就是=号,意思就是把右边的数据赋值给左边的变量。int a = 10;// 将数据10赋值给左边的变量a。除了基本的运算符外还有,+=、-=、*=、/=、%=。④使用Scanner输入数据,将数据保存到变量中。②定义变量存储学生姓名、数学、语文成绩。用于扫描输入文本的实用程序。③定义Scanner变量。①导入Scanner类。
2023-08-01 22:01:06 279
原创 数据类型与运算符
在系统变量中配置CLASSPATH、JAVA_HOME、PATH,JAVA_HOME中存放JDK当前所在目录,在PATH中bin目录下添加环境变量。在JDK8之后,默认不再提供单独的JRE,如果在项目中仍希望以JRE的形式发布软件,可以使用jlink命令生成自定义的JRE。javac是编译命令,用于将Java源文件编译成Java字节码文件。字节码文件的扩展名是“.class”,在.java文件所在目录下,使用。文档注释,用于为Java程序中的类、方法、字段等元素提供文档说明。4.Javadoc命令。
2023-07-31 21:44:51 32
原创 星期五(7.28)
A表中一个列的值来源于另外一张表B的主键或唯一键的列称为外键FK,被引用值的表称为主表或父表,引用值的表称为子表或从表。check检查约束,在数据添加或修改时保证数据的有效性。
2023-07-31 17:31:00 38 1
原创 第二周周报
1.学习了配置自己的服务器,安装宝塔面板,并且在宝塔上面安装部署一些必需得软件,购买了自己的域名,还了解到上网的基本原理,为什么要使用宝塔和Linux系统等问题。安装了图床,方便在typora上写笔记。2.继续上周的内容学习了MySQL,学会了忘记MySQL时重置密码的操作,区分modify和change的用法,学习了六种约束,分别是主键约束、唯一约束、默认约束、检查约束、非空约束和外键约束,以及自增长列。主键约束。
2023-07-30 20:38:32 39 1
原创 星期四(7.27)
主键约束最显著的特征是主键列的值是不允许重复的,通过主键约束可强制表的实体完整性,当创建或更改表时可通过primary key约束来创建主键,一个表只能有一个primary key约束,且primary key约束列中的值不能接受NULL值。自增长列是数值类型(int、float、double),是永远不会重复的,在创建表时,通过auto_increment来标识自增长列,在MySQL数据库中自增长列可以是主键列,也可以是唯一列。⑦关闭第一个窗口,重启mysql服务即可,再重新进入mysql,修改密码。
2023-07-27 22:28:00 82 1
原创 星期三(7.26)
是在互联网上全局唯一标识一个网络设备(计算机、服务器、路由器)的IP地址,是ISP分配给网络设备与互联网通信的IP地址,公网IP是ISP分配的,在全球范围内是唯一的,它是可以被公开的访问的,可以直接与互联网上其他设备进行通信。
2023-07-26 22:10:39 172
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人