知识点:
1.Thread
2.run
创建一个Thread对象,并重写run方法:
public class MyThread extends Thread {
@Override
public void run() {
// 线程要执行的代码逻辑
}
}
public class Main {
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
}
}
public class Main {
public static void main(String[] args) {
Thread.currentThread().run();
}
}
3.start
public class MyThread implements Runnable {
@Override
public void run() {
// 线程要执行的代码逻辑
// 在这里添加你想要执行的代码
}
}
public class Main {
public static void main(String[] args) {
Thread myThread = new Thread(new MyThread()); // 创建一个Thread对象,传入MyThread对象作为参数
myThread.start(); // 启动线程
}
}
4.Thread.currentThread().getName()
main
public class Main {
public static void main(String[] args) {
System.out.println(Thread.currentThread().getName()); // 获取当前线程的名字并打印输出
}
}
网络编程(不同主机之间的数据传输)
三要素
1.ip 主机的唯一标识
2.端口 主机所运行的程序的唯一标识
65536 0-1023知名端口
1024-49151 用户程序进程
49152-65535 私有动态端口
3.协议
tcp/ip
tcp通讯协议
可靠
请求-响应 服务器
客户端向服务器发送请求
服务器接收请求
服务器向客户端发送响应
客户端接收响应
Socket套接字
利用io流实现数据传输
总结
tcp socket网络信息传输
server
1.ServerSocket
new ServerSocket(port)
2.当有用户访问,创建套接字
Socket s=ss.accept();
3.读取请求 获取InputStream socket.getInputStream();
int len=is.read(bytes);
new String(bytes,0,len,"utf-8")
4.发送响应OutputStream socket.getOutputStream();
os.write("".getBytes ("utf-8"));
client 客户端
1.Socket s=new Socket("ip或者域名",port);
localhost 本机的域名
127.0.0.1 本机ip
2.发送请求
3.接收响应
1.现阶段服务器不是1对1,而是为多个客户端提供服务
2.网络编程,多线程
3.步骤
1.ServerScocke ss=new ServerSocket(port)
2.while(true){
Socket s=ss.accept();
3.new ServerThread(s).start;
}
4.编写线程类,传递Socket对象,要实现的功能,就通过run方法调用,或者直接写在run方法中
接收用户发送的文件,并且保存,简单的上传,
解决文件重名 UUID.randomUUID().toString();
tomcat
静态资源,动态页面
iis
nginx
反向代理,并发高 开源软件
静态资源服务器
1.获取到浏览器的请求头部,并且分析请求
2.建立管道 磁盘文件->java内存 fis java内存=>客户端浏览器
3.发送消息头
os.write("HTTP /1.1 200 ok\r\n".getBytes("utf-8"));
os.write("Content-Type:text/html\r\n".getBytes("utf-8"));
File file=new File("webapp"+pathName);
os.write(("Content-Length:" + file.length() + "\r\n").getBytes("utf-8"));
os.write("\r\n".getBytes("utf-8"));
4.数据响应
0905下午 完成服务器代码构建和测试,并理解代码意义 生成jar包,同时源码打包提交
使用 java反射
what
在运行状态下,对于任意一个类,知道这个类的属性和方法。
why
解耦 解决耦合问题,类和类之间依赖类关系减少
how
1.类
dirverclass=com.mysql.cj.jdbc.Driver
Class.forName("com.mysql.cj.jdbc.Driver");
2.构造
3.方法
1.获得class对象,class管理指定类的方法,属性和构造方法以及其他的
1.Class c=Class.forName("要调用的类的路径"); com.mysql.cj.jdbc.Driver
2.通过类获得 Student.class;
3.通过一个对象获得 obj.getClass();
2.管理指定类的方法,成员变量,构造方法
getMethods() 返回所有共有的方法
getConstructors() 返回所有的共有构造函数
getFields() 返回所有的共有成员变量
getDeclaredMethods() 返回所有的方法
getDeclaredContructors()
getDeclaredFields()
根据参数和名称指定一个方法
getConstructor(参数类型.....)
getMethod(方法名称,参数类型)
3.Constructor
为什么要获得构造方法:因为构造方法是创建对象
1.使用参数确定构造方法 Constructor ctt0=c.getContructor(null);
Constructor ctt1=c.getConstructor (int.class,String.class,float.class);
2.使用构造方法对象的new Instance(),来构建对象
ctt1.newInstance(1,"张三",3.89f);
4.Method
1.找到指定的方法
Method m=c.getMethod(方法名,int.class,String.class)
2.使用该方法
String x=m.invoke(obj,param1,param2,,,,,,,);
————————————————
版权声明:本文为CSDN博主「我是dm鑫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m13713122531/article/details/132700485