7.17~7.18

当端口冲突,可以查看:cmd然后输入以下命令

7.17~7.18_第1张图片

URL包括协议,域名,端口号,文件名:

public class netProgramme {

    //定位一个节点
   public static void main(String[]args) throws UnknownHostException, MalformedURLException {


       URL url=new URL("http://www.baidu.com:80/index.html?uname=shsxt&age=18#a");
       System.out.println("协议"+url.getProtocol());
       System.out.println("域名"+url.getHost());
       System.out.println("请求资源"+url.getFile());
       System.out.println("请求资源"+url.getPath());
       System.out.println("端口"+url.getPort());
       System.out.println("参数"+ url.getQuery());
       System.out.println("锚点"+url.getRef());



   }
}

爬虫原理和模拟浏览器:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
//网络爬虫原理+模拟浏览器
public class IPTest {

public static void main(String[]args) throws IOException {
    //获取URL
    URL url=new URL("https://www.jd.com");
    //下载资源
    HttpURLConnection connection=(HttpURLConnection)url.openConnection();
    connection.setRequestMethod("GET");
    connection.setRequestProperty("User-Agent" , "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.82");
   // InputStream is=url.openStream();
    BufferedReader br=new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));
    String msg=null;

    while(null!=(msg=br.readLine()))
    {
        System.out.println(msg);
    }
    br.close();
}


}

浅浅总结一下:对比这两个一个是获取URL,输入字节流并打开流,然后转化为字符流(由于都是字符打印和读取起来方便),然后用一个字符传打印接受到的数据到控制台;

另一个是模拟浏览器,先是和url建立起一个连接,并打开资源,获取get方法,和该资源的属性,右键该页面-》检查-》网络,随便将鼠标移到其中一个选项上面,翻到最后的User-urgent将带有这一串的包括他自己复制下来,用它来建立请求属性,重复普通方法的读入,将里面的输入流改为连接得到的;

传输层协议:

TCP:面向连接的,安全可靠的;先建服务器,后建客户端,发信双方需要连接,且存在主次之分;

UDP:非面向连接,传输不可靠,可能丢失数据,协议比较简单,通信双方完全平等

套接字:socket

InetSocketAddress()封装ip地址和窗口;

UDP编程,数据不能太大传输:

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;

/**
 * 接收端
 * 同一个协议下不可以有重复的端口
 *1.使用DatagramSocket指定端口 创建接收端
 *2.准备容器,封成DatagramPacket包裹
 *3.阻塞式接受包裹receive(DatagramPacket p)
 *4.分析数据getData()
 * 返回字符数组;getLength()
 * 释放资源
 */

public class UdpClient {
 public static void main(String[]args) throws IOException {
     System.out.println("发送方启动中.....");
     DatagramSocket client=new DatagramSocket(8888);
     String data="小饺子超级喜欢小麻子";
     byte[]datas=data.getBytes();
     DatagramPacket packet=new DatagramPacket(datas,0,datas.length,new InetSocketAddress("localhost",9999));
     client.send(packet);
     client.close();


 }


}

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;

/**
 * 发送端
 *1.使用DatagramSocket指定端口 创建发送端
 *2.准备数据,要转成字节数组
 *3.封成DatagramPacket包裹,需要指定目的地
 *3.发送包裹send(DatagramPacket p)
 * 释放资源
 */


public class UdpServer {
    public static void main(String[]args) throws IOException {
        System.out.println("接收方启动中....");
        DatagramSocket server=new DatagramSocket(9999);
        byte[]container=new byte[60*1024];
        DatagramPacket packet=new DatagramPacket(container,0,container.length);
        server.receive(packet);
        byte[]datas= packet.getData();
        System.out.println(new String(datas,0,packet.getLength()));
        server.close();



    }

}

同时启动两个窗口即可发送;

mysql中不区分大小写:

数据库的基本操作:

SHOW DATABASES:列出所有数据库;

CREATE DATABASES 数据库名 DEFAULT SET utf8 COLLATE utf8_general_ci;创建数据库并指定数据库的字符集  COLLATE  字符编码校验规则;

DROP DATABASES 删除数据库;

ALTER DATABASES 数据库名 DEFAULT CHARACTER SET 重新指定的字符集;

如果出现了相同名称的表格,想要搜索某个在数据库下面的,除了具体操作也可以输入以下代码:

USE 数据库名;1)

SELECT *FROM 表的名称;2)

先运行上面的1)再运行下面的2);

数据库中表的基本操作:

创建表:CREATE TABLE 表名{

写出你想要的字段名  规定它的数据类型(在该数据类型里规定的有效数字);

(注意:这里面的字段类型可以写很多个);

PRIMARY KEY(设置一个字段名为键);

}

例如:这里创建了一个学生信息的管理库;

CREATE TABLE student (
id int(10)NOT NULL,
name VARCHAR(100),
age int (2),
class VARCHAR(100),
PRIMARY KEY(id)
);

刚创建完之后是长这样的: 

 

在表中添加字段:ALTER TABLE 表名 ADD COLUMN 字段名 字段类型(字段类型要求下的有效数字);

在表中添加多个字段:ALTER TABLE 表名 ADD 字段名 字段类型,ADD 字段名 字段类型;(在添加多个字段的情况下,在数据类型后面添加有效数字位数没有多大意义);

修改表中字段数据类型:ALTER TABLE 表格类型 MODIFY COLUMN 字段名称 想要修改成的字段类型;

7.17~7.18_第2张图片

 

虽然辛苦,我还是会选择那种滚烫的人生。

你可能感兴趣的:(Java自习室,java)