Java基础加强03

1.管理系统与服务器集成 1.1准备工作【应用】 需求 对之前写过的黑马信息管理系统进行改进,实现可以通过浏览器进行访问的功能 准备工作 将资料中的黑马管理系统代码拷贝到当前模块下 导包的代码可能报错,因为之前的包路径可能和当前代码不一致,将导包的代码修改下 业务分析 解析URL封装到HttpReques对象 DynamicResourceProcess类(执行指定动态资源的service方法) 定义servlet类完成查询学生、添加学生、删除学生、修改学生的逻辑 项目结构 1.2HttpRequest类代码实现【应用】 实现步骤 提供一个存储url中用户信息的map集合 提供一个getParamter方法,用于根据请求参数的名称获取请求参数的值 提供一个parseParamter方法,用于解析请求参数把请求参数存储到map集合中 代码实现 // 此处只给出了新增的代码,其他代码同之前没有变化 public class HttpRequest { //用来存储请求URL中问号后面的那些数据 //id=1 name=itheima private Map<String,String> paramterHashMap = new HashMap<>(); //parse --- 获取请求数据 并解析 public void parse(){ try { SocketChannel socketChannel = (SocketChannel) selectionKey....

2022-04-24 · 5 分钟

Java基础加强02

1.xml 1.1概述【理解】 万维网联盟(W3C) 万维网联盟(W3C)创建于1994年,又称W3C理事会。1994年10月在麻省理工学院计算机科学实验室成立。 建立者: Tim Berners-Lee (蒂姆·伯纳斯·李)。 是Web技术领域最具权威和影响力的国际中立性技术标准机构。 到目前为止,W3C已发布了200多项影响深远的Web技术标准及实施指南, 如广为业界采用的超文本标记语言HTML(标准通用标记语言下的一个应用)、 可扩展标记语言XML(标准通用标记语言下的一个子集) 以及帮助残障人士有效获得Web信息的无障碍指南(WCAG)等 xml概述 XML的全称为(EXtensible Markup Language),是一种可扩展的标记语言 标记语言: 通过标签来描述数据的一门语言(标签有时我们也将其称之为元素) 可扩展:标签的名字是可以自定义的,XML文件是由很多标签组成的,而标签名是可以自定义的 作用 用于进行存储数据和传输数据 作为软件的配置文件 作为配置文件的优势 可读性好 可维护性高 1.2标签的规则【应用】 标签由一对尖括号和合法标识符组成 <student> 标签必须成对出现 <student> </student> 前边的是开始标签,后边的是结束标签 特殊的标签可以不成对,但是必须有结束标记 <address/> 标签中可以定义属性,属性和标签名空格隔开,属性值必须用引号引起来 <student id="1"> </student> 标签需要正确的嵌套...

2022-04-24 · 9 分钟

Java基础加强01

1.类加载器 1.1类加载器【理解】 作用 负责将.class文件(存储的物理文件)加载在到内存中 1.2类加载的过程【理解】 类加载时机 创建类的实例(对象) 调用类的类方法 访问类或者接口的类变量,或者为该类变量赋值 使用反射方式来强制创建某个类或接口对应的java.lang.Class对象 初始化某个类的子类 直接使用java.exe命令来运行某个主类 类加载过程 加载 通过包名 + 类名,获取这个类,准备用流进行传输 在这个类加载到内存中 加载完毕创建一个class对象 链接 验证 确保Class文件字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身安全 (文件中的信息是否符合虚拟机规范有没有安全隐患) 准备 负责为类的类变量(被static修饰的变量)分配内存,并设置默认初始化值 (初始化静态变量) 解析 将类的二进制数据流中的符号引用替换为直接引用 (本类中如果用到了其他类,此时就需要找到对应的类) 初始化 根据程序员通过程序制定的主观计划去初始化类变量和其他资源 (静态变量赋值以及初始化其他资源) 小结 当一个类被使用的时候,才会加载到内存 类加载的过程: 加载、验证、准备、解析、初始化 1....

2022-04-24 · 12 分钟

CentOS7上安装Apache Maven

Apache Maven主要用于Java项目的自由开源项目管理。 Maven使用项目对象模型(POM),该对象本质上是一个XML文件,其中包含关于项目,配置,依赖关系等信息。 在本教程中,我们将向您展示两种在CentOS 7上安装Apache Maven的两种不同方法。它们分别:1.yum安装Apache Maven。2.从官方站点下载最新版本Apache Maven并配置环境变量PATH与JAVA_HOME环境变量。 CentOS 默认储存库包含可以通过yum软件包管理器安装的Maven软件包。这是在CentOS上安装Maven的最简单方法,但是存储库中包含的版本可能落后于最新版本的Maven。 要安装最新版本的Maven,请按照本文第二部分提供的说明进行操作,我们将从其官方网站上下载Maven。具体的取决于你的喜好,选择最适合您的设置和环境的安装方法。 先决条件 您所登录的用户必须具有sudo权限,才能安装软件包。 使用Yum在CentOS上安装Apache Maven 使用yum在CentOS 7上安装Maven是一个简单,直接的过程。通过在终端中键入以下命令来安装Maven: sudo yum install maven 验证安装,通过键入mvn -version命令: mvn -version 输出应如下所示: Apache Maven 3.0.5 (Red Hat 3.0.5-17) Maven home: /usr/share/maven Java version: 1.8.0_191, vendor: Oracle Corporation Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-862.3.2.el7.x86_64", arch: "amd64", family: "unix" 现在,Maven已安装在CentOS系统上。 安装Apache Maven的最新版本 以下提供了有关如何在CentOS 7上安装最新版本的Apache Maven的逐步说明。我们将从官方网站上下载最新版本的Apache Maven。 1.安装OpenJDK Maven 3.3+需要安装JDK 1.7或更高版本。我们将安装OpenJDK ,这是CentOS 7中默认的Java开发和运行时。通过输入以下命令安装OpenJDK软件包:...

2022-04-07 · 1 分钟

Java网络编程02

1.NIO 1.1 NIO通道客户端【应用】 客户端实现步骤 打开通道 指定IP和端口号 写出数据 释放资源 示例代码 public class NIOClient { public static void main(String[] args) throws IOException { //1.打开通道 SocketChannel socketChannel = SocketChannel.open(); //2.指定IP和端口号 socketChannel.connect(new InetSocketAddress("127.0.0.1",10000)); //3.写出数据 ByteBuffer byteBuffer = ByteBuffer.wrap("一点寒毛先制".getBytes()); socketChannel.write(byteBuffer); //4.释放资源 socketChannel.close(); } } 1.2 NIO通道服务端【应用】 NIO通道 服务端通道 只负责建立建立,不负责传递数据...

2022-03-18 · 10 分钟

Java网络编程01

1.网络编程入门 1.1 网络编程概述【理解】 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统 网络编程 在网络通信协议下,不同计算机上运行的程序,可以进行数据传输 1.2 网络编程三要素【理解】 IP地址 要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接收数据的计算机和识别发送的计算机,而IP地址就是这个标识号。也就是设备的标识 端口 网络的通信,本质上是两个应用程序的通信。每台计算机都有很多的应用程序,那么在网络通信时,如何区分这些应用程序呢?如果说IP地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的应用程序了。也就是应用程序的标识 协议 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交换。常见的协议有UDP协议和TCP协议 1.3 IP地址【理解】 IP地址:是网络中设备的唯一标识 IP地址分为两大类 IPv4:是给每个连接在网络上的主机分配一个32bit地址。按照TCP/IP规定,IP地址用二进制来表示,每个IP地址长32bit,也就是4个字节。例如一个采用二进制形式的IP地址是“11000000 10101000 00000001 01000010”,这么长的地址,处理起来也太费劲了。为了方便使用,IP地址经常被写成十进制的形式,中间使用符号“.”分隔不同的字节。于是,上面的IP地址可以表示为“192.168.1.66”。IP地址的这种表示法叫做“点分十进制表示法”,这显然比1和0容易记忆得多 IPv6:由于互联网的蓬勃发展,IP地址的需求量愈来愈大,但是网络地址资源有限,使得IP的分配越发紧张。为了扩大地址空间,通过IPv6重新定义地址空间,采用128位地址长度,每16个字节一组,分成8组十六进制数,这样就解决了网络地址资源数量不够的问题 DOS常用命令: ipconfig:查看本机IP地址 ping IP地址:检查网络是否连通 特殊IP地址: 127.0.0.1:是回送地址,可以代表本机地址,一般用来测试使用 1.4 InetAddress【应用】 InetAddress:此类表示Internet协议(IP)地址 相关方法...

2022-03-18 · 9 分钟

Java多线程02

1.线程池 1.1 线程状态介绍 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。线程对象在不同的时期有不同的状态。那么Java中的线程存在哪几种状态呢?Java中的线程 状态被定义在了java.lang.Thread.State枚举类中,State枚举类的源码如下: public class Thread { public enum State { /* 新建 */ NEW , /* 可运行状态 */ RUNNABLE , /* 阻塞状态 */ BLOCKED , /* 无限等待状态 */ WAITING , /* 计时等待 */ TIMED_WAITING , /* 终止 */ TERMINATED; } // 获取当前线程的状态 public State getState() { return jdk....

2022-03-15 · 12 分钟

Java多线程01

1.实现多线程 1.1简单了解多线程【理解】 是指从软件或者硬件上实现多个线程并发执行的技术。 具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,提升性能。 1.2并发和并行【理解】 并行:在同一时刻,有多个指令在多个CPU上同时执行。 并发:在同一时刻,有多个指令在单个CPU上交替执行。 1.3进程和线程【理解】 进程:是正在运行的程序 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位 动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的 并发性:任何进程都可以同其他进程一起并发执行 线程:是进程中的单个顺序控制流,是一条执行路径 ​ 单线程:一个进程如果只有一条执行路径,则称为单线程程序 ​ 多线程:一个进程如果有多条执行路径,则称为多线程程序 1.4实现多线程方式一:继承Thread类【应用】 方法介绍 方法名 说明 void run() 在线程开启后,此方法将被调用执行 void start() 使此线程开始执行,Java虚拟机会调用run方法() 实现步骤 定义一个类MyThread继承Thread类 在MyThread类中重写run()方法 创建MyThread类的对象 启动线程 代码演示 public class MyThread extends Thread { @Override public void run() { for(int i=0; i<100; i++) { System....

2022-03-15 · 10 分钟

Java IO流02

1.字符流 1.1为什么会出现字符流【理解】 字符流的介绍 由于字节流操作中文不是特别的方便,所以Java就提供字符流 字符流 = 字节流 + 编码表 中文的字节存储方式 用字节流复制文本文件时,文本文件也会有中文,但是没有问题,原因是最终底层操作会自动进行字节拼接成中文,如何识别是中文的呢? 汉字在存储的时候,无论选择哪种编码存储,第一个字节都是负数 1.2编码表【理解】 什么是字符集 是一个系统支持的所有字符的集合,包括各国家文字、标点符号、图形符号、数字等 l计算机要准确的存储和识别各种字符集符号,就需要进行字符编码,一套字符集必然至少有一套字符编码。常见字符集有ASCII字符集、GBXXX字符集、Unicode字符集等 常见的字符集 ASCII字符集: lASCII:是基于拉丁字母的一套电脑编码系统,用于显示现代英语,主要包括控制字符(回车键、退格、换行键等)和可显示字符(英文大小写字符、阿拉伯数字和西文符号) 基本的ASCII字符集,使用7位表示一个字符,共128字符。ASCII的扩展字符集使用8位表示一个字符,共256字符,方便支持欧洲常用字符。是一个系统支持的所有字符的集合,包括各国家文字、标点符号、图形符号、数字等 GBXXX字符集: GBK:最常用的中文码表。是在GB2312标准基础上的扩展规范,使用了双字节编码方案,共收录了21003个汉字,完全兼容GB2312标准,同时支持繁体汉字以及日韩汉字等 Unicode字符集: UTF-8编码:可以用来表示Unicode标准中任意字符,它是电子邮件、网页及其他存储或传送文字的应用 中,优先采用的编码。互联网工程工作小组(IETF)要求所有互联网协议都必须支持UTF-8编码。它使用一至四个字节为每个字符编码 编码规则: 128个US-ASCII字符,只需一个字节编码 拉丁文等字符,需要二个字节编码 大部分常用字(含中文),使用三个字节编码 其他极少使用的Unicode辅助字符,使用四字节编码 1.3字符串中的编码解码问题【应用】 相关方法 方法名 说明 byte[] getBytes() 使用平台的默认字符集将该 String编码为一系列字节 byte[] getBytes(String charsetName) 使用指定的字符集将该 String编码为一系列字节 String(byte[] bytes) 使用平台的默认字符集解码指定的字节数组来创建字符串 String(byte[] bytes, String charsetName) 通过指定的字符集解码指定的字节数组来创建字符串 代码演示...

2022-03-14 · 9 分钟

Java IO流01

1.File类 1.1File类概述和构造方法【应用】 File类介绍 它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的 对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已.它可以是存在的,也可以是不存在的.将来是要通过具体的操作把这个路径的内容转换为具体存在的 File类的构造方法 方法名 说明 File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例 File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例 File(File parent, String child) 从父抽象路径名和子路径名字符串创建新的 File实例 示例代码 public class FileDemo01 { public static void main(String[] args) { //File(String pathname): 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例 File f1 = new File("E:\\itcast\\java.txt"); System....

2022-03-10 · 6 分钟