week 3.2-3.08
- | Study_update |
---|---|
-Mon | UDP本机双向通信,TCP发送消息 |
-Tue | TCP双向聊天,TCP服务器端,枚举类型 |
-Wes | 反射,反射得到构造方法,反射得到字段,MySQL |
-Thus | MySQL可视化界面操作 |
-Fri | MySQL 控制台操作 |
-Sat | 摸鱼 |
-Sun | 摸鱼 |
3.2 Monday
UDP本机双向通信
/**
* @author lzr
* @date 2020/3/2 10:09:35
* @description 发送线程
*/
public class SendThread extends Thread{
public SendThread(int port) {
this.port=port;
}
private int port;
@Override
public void run() {
DatagramSocket ds= null;
try {
ds = new DatagramSocket();
Scanner s=new Scanner(System.in);
while(true){
String str=s.nextLine();
if(str.equals("end"))
break;
byte[] buf=str.getBytes();
int length=buf.length;
InetAddress ip=InetAddress.getByName("192.168.1.73");
DatagramPacket dp=new DatagramPacket(buf,length,ip,port);
ds.send(dp);
}
// ds.close();
} catch (Exception e) {
e.printStackTrace();
}finally {
if (ds != null) {
ds.close();
}
}
}
}
/**
* @author lzr
* @date 2020/3/2 10:18:52
* @description 接收线程
*/
public class RecevieThread extends Thread{
private int port;
public RecevieThread(int port) {
this.port = port;
}
@Override
public void run() {
DatagramSocket ds= null;
try {
ds = new DatagramSocket(port);
byte[] buf=new byte[1024];
while(true){
DatagramPacket dp=new DatagramPacket(buf,buf.length);
ds.receive(dp);
String str=new String(dp.getData(),0,dp.getLength());
System.out.println(dp.getPort()+str);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
if(ds!=null)
ds.close();
}
}
}
/**
* @author lzr
* @date 2020/3/2 10:32:58
* @description 用户1
*/
public class Test_User_01 {
public static void main(String[] args) {
int port1=6969;
int port2=1212;
new SendThread(port1).start();
new RecevieThread(port2).start();
}
}
/**
* @author lzr
* @date 2020/3/2 10:34:12
* @description 用户1
*/
public class Test_User_02 {
public static void main(String[] args) {
int port1=6969;
int port2=1212;
new RecevieThread(port1).start();
new SendThread(port2).start();
}
}
TCP发送消息
/**
* @author lzr
* @date 2020/3/2 15:31:05
* @description 客户端
*/
public class Demo01_TCP_Send {
public static void main(String[] args) throws Exception {
Socket sk=new Socket("192.168.1.73",6969);//跟致指定ip sort建立连接
OutputStream output=sk.getOutputStream();
output.write("hello world!".getBytes());//发送数据
sk.close();//关闭
}
}
/**
* @author lzr
* @date 2020/3/2 15:51:19
* @description 服务器端
*/
public class Demo02_TCP_Recevie {
public static void main(String[] args) throws Exception {
ServerSocket ss=new ServerSocket(6969);//端口
Socket client=ss.accept();//建立连接
InputStream input=client.getInputStream();
byte[] buf=new byte[1024];
int length=input.read(buf);
String str=new String(buf,0,length);
System.out.println(str);
ss.close();//关闭
client.close();//关闭
}
}
3.3 Tuesday
TCP双向聊天 不完善
/**
* @author lzr
* @date 2020/3/3 09:18:05
* @description
*/
public class TCP_Send {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
Socket sk=null ;
try {
sk = new Socket("192.168.1.73",6969);
OutputStream output=sk.getOutputStream();
InputStream input=sk.getInputStream();
//接收并输出线程
Thread t=new Thread(){
@Override
public void run() {
byte[] inputBuf=new byte[1024];
int inputBufLength=-1;
String inputStr;
while (true){
try {
if((inputBufLength=input.read(inputBuf))==-1)
break;
inputStr=new String(inputBuf,0,inputBufLength);
System.out.println(inputStr);
} catch (IOException e) {
e.printStackTrace();
}
}
}
};
t.setDaemon(true);
t.start();
byte[] buf;
String data;
while((!(data = scanner.nextLine()).equals("end"))){
buf=data.getBytes();
output.write(buf);
}
System.out.println("断开输出连接.");
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(sk!=null)
sk.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* @author lzr
* @date 2020/3/3 09:18:16
* @description
*/
public class TCP_Recevie {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
ServerSocket ss=null;
Socket sk=null;
try {
ss = new ServerSocket(6969);
sk = ss.accept();
System.out.println("连接成功.");
InputStream input=sk.getInputStream();
OutputStream output=sk.getOutputStream();
//新进程
new Thread(){
@Override
public void run() {
String outputStr=null;
while(!(outputStr=scanner.nextLine()).equals("end")){
byte[] outputBuf=outputStr.getBytes();
try {
output.write(outputBuf);
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("断开输出连接.");
System.exit(0);
}
}.start();
byte[] buf=new byte[1024];
int length=-1;
while((length = input.read(buf))!=-1){
String data=new String(buf,0,length);
System.out.println(data);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(ss!=null)
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
if(sk!=null)
sk.close();
System.out.println("断开连接.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
服务器端
/**
* @author lzr
* @data 2020/3/3 14:51:33
* description TestDriver
*/
public class Demo_TCP_ServerThreadTestDriver {
public static void main(String[] args) {
Demo_TCP_ServerThread server =new Demo_TCP_ServerThread();
server.start();
}
}
/**
* @author lzr
* @data 2020/3/3 14:38:04
* description
*/
public class Demo_TCP_ServerThread extends Thread{
@Override
public void run() {
ServerSocket ss=null;
try {
ss=new ServerSocket(6969);
while(true){
Socket s=ss.accept();
new Demo_TCP_ClientThread(s).start();
System.out.println("接收到一个客户端连接:"+s.getInetAddress());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* @author lzr
* @data 2020/3/3 15:29:33
* description
*/
public class Demo_TCP_ClientThread extends Thread {
private Socket s;
public Demo_TCP_ClientThread(Socket s) {
this.s = s;
}
@Override
public void run() {
try {
InputStream input=s.getInputStream();
byte[] buf=new byte[1024];
int length=-1;
while((length=input.read(buf))!=-1){
System.out.println(new String(buf,0,length));
}
} catch (IOException e) {
e.printStackTrace();
}finally {
if(s!=null) {
try {
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
/**
* @author lzr
* @data 2020/3/3 14:53:29
* description 客户端
*/
public class Demo_TCP_UserClient {
public static void main(String[] args) {
Socket s;
Scanner scanner=new Scanner(System.in);
{
try {
s = new Socket("192.168.0.117",6969);
s.getOutputStream().write(scanner.nextLine().getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* @author lzr
* @date 2020/3/3 16:46:35
* @description
*/
public class Roletype {
public static final int TEACHER=0;
public static final int STUDENT=1;
}
/**
* @author lzr
* @date 2020/3/3 16:46:48
* @description
*/
public class CustomEnum {
public static void main(String[] args) {
int roletype1=Roletype.STUDENT;
int roletype2=Roletype.TEACHER;
}
}
3.4 Wednesday
反射
/**
* @author lzr
* @date 2020/3/4 08:01:43
* @description 反射 获取类
*/
public class Demo_GetClass {
public static void main(String[] args) throws ClassNotFoundException {
//1.通过对象
Demo_GetClass c0=new Demo_GetClass();
Class c=c0.getClass();
System.out.println(c);
//2.通过类 .calss;
Class c1=Demo_GetClass.class;
//3.通过forName("带包名的class")
Class c2=Class.forName("com.yangcong.getClass.Demo_GetClass");
}
}
反射得到构造方法
/**
* @author lzr
* @date 2020/3/4 08:31:10
* @description
*/
public class User {
private String name;
private int age;
public User() {
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
public void display(){
System.out.println(name+" "+age);
}
public void study(String s){
System.out.println("学习中"+s);
}
}
/**
* @author lzr
* @date 2020/3/4 08:35:40
* @description 反射得到构造方法
*/
public class getConstructorByClass {
public static void main(String[] args) throws Exception {
Class c1 = Class.forName("com.yangcong.getClass.User");
Constructor[] cs = c1.getConstructors();//得到所有的公共构造方法
for (Constructor con : cs) {
System.out.println(con);
}
//2.得到指定得构造方法
Constructor con=c1.getConstructor();
//3.调用构造方法
Object o=con.newInstance();
User user=(User)o;
user.display();
}
}
反射得到字段
/**
* @author lzr
* @date 2020/3/4 15:00:55
* @description
*/
public class Demo_GetFieldByClass {
public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException {
User user=new User("jack",1,2,3);
Class c=Class.forName("com.yangcong.getClass.User");
Field f=c.getDeclaredField("name");
f.setAccessible(true);
System.out.println(f.get(user));
}
}
反射得到方法
/**
* @author lzr
* @date 2020/3/4 15:09:14
* @description
*/
public class Demo_GetMethodByClass {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException {
User user=new User("jack",1,1,1);
Class c=Class.forName("com.yangcong.getClass.User");
Method m=c.getMethod("display");
m.invoke(user);
Method m2=c.getMethod("study", String.class);
m2.invoke(user,"英语");
}
}
3.5 Thursday
MySQL
外键关联
多对多用中间表
3.6 Friday
在控制台打开MySQL,
登录: -u用户名 -p密码;
显示所有数据库: show databases;
进入某个数据库: use 数据库名;
显示所有表:show tables;
创建新数据库:create database 新数据库名;
删除数据库: drop database***;
创建新表:create table 新表名(col_name type 限制条件 ,
col_name type default,
primary key(col_name)
);
查看表结构:desc 表名;
插入新数据:insert into表名(col_name,col_name) values(’’,’*’);
查看表内容:select * from 表名:
更新表内容:update 表名
set col_name=value,colname=value where 条件;
删除数据:delect from tablename where 条件;
排序查询: select * from mytable order by password desc;