04day
04day
File类的作用
File 类对象可封装要操作的文件,可通过 File 类的对象对文件进行操作,如查看文
件的大小、判断文件是否隐藏、判断文件是否可读等。
局限:File类的相关操作,并不涉及文件内容相关的操作,这是单独依靠 File 类对
象无法实现的操作,此时需要借助 I/O 流完成。
I/O流的作用
将I/0流理解为一根“管子”,那么理解就会非常顺畅。l为Input,O为Output,I/O流即
输入输出流,可以理解为两个流向的“管子”
将I/O流理解为“管子”,那么生活中“管子”怎么分类的呢?
方式 1:按照方向划分。
输入流、输出流。
方式 2:按照处理单元划分,
字节流、字符流。
方式 3:按照功能划分。
节点流、处理流。
注:一个流能够处理问题的就是节点流,要多个流一起使用的就i是处理流
(1)对象流:
FilelnputStream、 FileOutputStream
ObjectinputStream、ObjectOutputStream
FileOutputStream fos = new FileOutputStream(f);
ObjectOutputStream oos = new ObjectOutputStream(fos);
注:上述的代码就是一个流套流的过程,其中object是一个抽象的类的流而其在底层真正输入的时候执行的还是字符的输出输出流(FileOutputStream)。
在关闭流的时候只需要关闭外面的流就可以了,里面的流也会自动关闭的
(2)序列化
implements Serializable
实现了Serializable接口,才会具备将对象输出到文件的能力。
程序、进程、线程
-
程序:是为完成特定任务、用某种语言编写的一组指令的集合,是一段静态的代码。
(程序是静态
的) -
进程:是程序的一次执行过程。正在运行的一个程序,进程作为资源分配的单位,在内存中会为
每个进程分配不同的内存区域。 -
线程:进程可进一步细化为线程,是一个进程内部的一条执行路径。若一个进程同一时间并行执行多个线程,就是支持多线程的。
进程是操作系统进行资源分配的基本单位。
线程是操作系统调度执行的基本单位。
创建线程
创建线程有三种方式!
(1)方式1:继承Thread类
(2)方式2:
实现Runnable接口
(3)方式3:
实现Callable接口
示例代码:
package com.day01.test13;
public class Test {
public static void main(String[] args) {
// 1.main方法作为程序的入口,里面执行的就是主线程的任务
for(int i=1;i<=10;i++){
System.out.println("main---" + i);
}
// 6.创建子线程对象,执行任务
TestThread t = new TestThread();
// 7.执行任务,不是直接调用run方法,而是进行线程的启动
t.start();//8.一旦县茨城启动,就会和主线程争抢资源
for(int i=1;i<=10;i++){
System.out.println("main---" + i);
}
}
}
package com.day01.test13;
/*
2.创建一个创建一个线程类
3.想要具备多线程能力
* */
public class TestThread extends Thread{
// 4.县城对应的任务放在一个方法中:
@Override
public void run() {
// 5.县城要做的是输出10个数
for(int i=1;i<=10;i++){
System.out.println("子线程---" + i);
}
}
}
网络编程
网络编程:
把分布雄不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强
从而使众多的计算机可以方便地互相传递信息、共享硬件、软件、数据信息
蚤之间在网络中进行数据的传输,发送/接收数据
IP地址:
用来标志网络中的一个通信实体的地址。通信实体可以是计算机,路由器等。
端口号:
IP地址用来标志一台计算机,但是一台计算机上可能提供多种应用程序,使用端口来区分
这些应用程序。
网络通信协议:
通信协议,对速率、传输代码、代码结构、计算机网络中实现通信必须有一些约定县传输控制步骤、出错控制等制定标准。由于结点间联系复杂,制定协议时,把复杂成份分解成 一些简单的成份,再将它们复即同层间可以通信、上一层可以调用下一合起来。最常用的复合方式是层次方式层,而与再下一层不发生关系
Socket套接字
我们开发的网络应用程序位于应用层,TCP和UDP属于传输层协议,在应用层如何使用传输层的服务呢?在
应用层和传输层之间,则是使用套接字来进行分离。
套接字就像传输层为应用层开的一个小口,应用程序通过这个小口向远程发送数据,或接收远程发来数据?
而这个小口以内,也就是数据进入这个口之后,或者数据从这个口出来之前,是不知道也不需要知道的,也
不会关心它如何传输,这属于网络其它层次的工作。
Socket实际是传输层供给应用层的编程接口。传输层则在网络层的基础上提供进程到进程问的逻辑通道,而
应用层的进程则利用传输层向另一台主机的某一进程通信。Socket就是应用层与传输层之间的桥梁
代码示例:
package com.day01.test14;
import java.io.*;
import java.net.Socket;
public class Testclient {
public static void main(String[] args) throws IOException {
System.out.println("客户端启动");
Socket s = new Socket("127.0.0.1",8085);
// 对于程序员来说,感受到利用输出流在传送数据
OutputStream os = s.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
// 传送数据
dos.writeUTF("你好,服务器,我是客户端");
InputStream is = s.getInputStream();
DataInputStream dis = new DataInputStream(is);
String s1 = dis.readUTF();
System.out.println(s1);
dos.close();
os.close();
dis.close();
is.close();
s.close();
}
}
package com.day01.test14;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ServiceConfigurationError;
public class Testserver {
public static void main(String[] args) throws IOException {
System.out.println("服务器启动");
ServerSocket s = new ServerSocket(8085);
// 等待客户端发送数据
Socket as = s.accept();
InputStream is = as.getInputStream();
// 服务器端感受到的是输入的流
DataInputStream dis = new DataInputStream(is);
String s1 = dis.readUTF();
System.out.println(s1);
OutputStream os = as.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("收到了,客户端");
dis.close();
is.close();
as.close();
os.close();
dos.close();
s.close();
}
}
注:这里的网络通信的输入输出流与正常理解的有差异。其中输入流为忘该程序中进行输入(接收发送来的数据),输出流是往外发送数据(向外面发送数据)
XML
XML是什么?
XML指可扩展标记语言(EXtensible Markup Language)
XML的作用是什么?
XML是不作为的,XML不会做任何事情。XML被设计用来结构化、存储以及传输信息。它
仅仅是纯文本而已。它仅仅将信息包装在 XML 标签中。我们需要编写软件或者程序,才能传
送、接收和显示出这个文档。
定义XML
1、必须有声明语句。
XML声明是XML文档的第一句,其格式如下
2、XML文档有且只有一个根元素
良好格式的XML文档必须有一个根元素,就是紧接着声明后面建立的第一个元素,其他元素都是这个根
元素的子元素,根元素完全包括文档中其他所有的元素
3、注意大小写
在XML文档中,大小写是有区别的。“A”和“a”是不同的标记。
4、所有的标记必须有相应的结束标记
所有标记必须成对出现,有一个开始标记,就必须有一个结束标记,否则将被视为错误
5、属性值使用引号
所有属性值必须加引号(可以是单引号,也可以是双引号,建议使用双引号),否则将被视为错误
6、XML中可以加入注释
解析XML
DOM解析:
需要使用工具dom4j
注解
什么是注解?
洼解其实就是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。
通过使用注解,程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。代码分析工
具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署
注解的使用:
使用注解时要在其前面增加@符号,并把该注解当成一个修饰符使用。用于修饰它支持的程序元素
(包、类、构造器、方法、成员变量、参数、局部变量的声明)。
注解的董要性
在JavaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。在JavaEE/Arldroid中注
解占据了更重要的角色,例如用来配置应用程序的任何切面,代替JavaEE旧版中所遗留的繁冗代码和
XML配置等。未来的开发模式都是基于注解的。一定程度上可以说:框架=注解+反射+设计模式。
常用的注解
1.标识类的作者@author
2.指定类的版本@version
3.说明方法的参数@param
4.说明方法的返回值类型@return
5.限定重写的方法@Override
Mysql
SQL
SQL(Structured Query Language)是一种操作数据库的语言。
在数据库管理系统中,使用SQL语言来实现数据的存取、查询、更新等功能。
SQL是一种非过程化语言,只需提出“做什么”,而不需要指明“怎么做”
表
表(Table)是数据库中数据存储最常见和最简单的一种形式,数据库可以将复杂的
数据结构用较为简单的二维表来表示。二维表是由行和列组成的,分别都包含着数据
每个表都是由若干行和列组成的,在数据库中表中的行被称为记录,表中的列被称为
是这些记录的字段。
(1)步骤-:创建数据库
(2)步骤二:
新建查询
(3)步骤三:创建表SQL
create table t book(
id int,
name varchar(20),
author varchar(5),
price double
);
(4)步骤四:查看表中数据SQL
select * from t student;,
增加:
insert into t book(id,name,author,price) values (1,'项目驱动零起点学Java''马士兵、赵珊珊',69.8);
删除:
delete from t book where id = 1;
修改:
update t book set price = 36.6 where id=1;
查看:
select * from t book;
select * from t book where price > 25;
JDBC
JDBC(Java DataBase Connectivity-Java数据库连接),是SUN公司定义的一套接口(规范)
1:加载Driver驱区动
2:获取数据库连接(Connection)
3:
创建会话-SQL命令发送器(Statement)
4:通过Statement发送SQL命令并得到结果
5:处理结果
6:关闭数据库资源
(ResultSet、Statement、connection)
代码示例:
package com.day02.test1;
import com.mysql.cj.jdbc.Driver;
import java.sql.*;
public class Test {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 获取连接
// 格式说明:协议,ip:端口/数据库名字?一些参数(是否使用unicode、编码方式、时间设置、客户端从服务器端获取公钥)
String url = "jdbc:mysql://127.0.0.1:3306/book?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";
String username = "root";
String password = "root";
Connection conn = DriverManager.getConnection(url, username, password);
// 创建会话
// sql命令发送器
Statement sta = conn.createStatement();
// 发送sql
// ResultSet是一个结果集合-结果集
ResultSet rs = sta.executeQuery("select * from t_book");
// int i = sta.executeUpdate("UPDATE t_book set price = 12 where id = 3;");
// 对结果进行处理
// if(i>0){
// System.out.println("插入成功了");
// }else{
// System.out.println("插入失败了");
// }
while(rs.next()){
System.out.println(rs.getInt("id") + "---" + rs.getString("name"));
}
sta.close();
conn.close();
}
}
String url="jdbc:mysql://127.0.0.1:3306/mytestdb?
useSSL=false&useUnicode=true&characterEncoding=UTF-
8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true"
useSSL 是否使用SSL认证机制-不使用 false
useUnicode:是否是否unicode字符集-使用
characterEncoding=UTF-8:使用unicode 的utf-8策略
serverTimezone=Asia/Shangh ai 时区参数-东八区
allowPublicKeyRetrieval=true 允许客户端从服务器获取公钥
HTML
HTML:超文本标记语言(本质上还是一个文本这个文本是给浏览器看的)
HTML的作用:学习HTML就是学习各种各样的标签,然后组成一个页面,这个页面可以被浏
览器解析,解析完以后可以在浏览器中将页面进行展示。
HTML的标准结构:
<html>
<head></head>
<body>
<h1>this is my first html....</h1>
</body>
</html>
学习html就是学习一堆标签
CSS
CSS:层叠样式表
CSS的作用:修饰HTML页面
CSS的书写方式:内联样式、内部样式、外部样式
内部样式:
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
h10
color: royalblue,
font-family: 宋体;
</style>
</head>
<body>
<h1>这是一个标题</h1>
</body>
</html>
外部样式:
h1{
color: red;
font-family: 宋体;
}
<html>
<head>
<link rel="stylesheet" type="text/css" href="外部css路径"/>
</head>
<body>
<h1>this is my first html....</h1>
</body>
</html>
JS
JS:是一种运行于浏览器端上的小脚本语句
JS的作用:可以通过事件驱动实现网页内容动态变化、特效等
代码演示:点击按钮,弹出提示框。
脚本语言:(在一个环境中有解释器,可以不用编译直接解释进行执行)
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script type="text/javascript">
function fun1(){
/*弹窗提示一点信息 */
alert("你好子")
</script>
</head>
<body>
<input type="button" value="点我呀" onclick="fun1()"/>
</body>
</html>
定义一个js文件:
function fun20{
alert("你好222”)
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript”src="外部文件路径”>
</script>
</head>
<body>
<input type="button" value="点我呀" onclick="fun20)"/>
</body>
</html>
HTML:画页面 -》不好看
CSS:好看I--》静态页面
JS:动态效果