【Java-II】网络编程实战讲解 P7-12(Day19-20210718-Day2)

【电力负荷预测】项目介绍 MATLAB实现基于BO-Transformer-LSTM贝叶斯优化算法(BO)优化Transformer-LSTM组合模型进行居民用户多步电力负荷预测(含模型描述及部分示例 内容概要:本文介绍了一个基于BO-Transformer-LSTM的组合模型,用于实现居民用户多步电力负荷预测的完整项目实例。该模型融合Transformer的全局注意力机制与LSTM的局部时序记忆能力,构建能够捕捉长时依赖与周期性特征的深度学习架构,并引入贝叶斯优化(BO)自动搜索最优超参数组合,提升预测精度与训练效率。项目涵盖从原始数据清洗、特征工程、滑动窗口样本构建、模型设计到超参数优化、反归一化及多步误差评估的全流程,强调时间顺序划分以防止信息泄露,并通过周期编码、外生变量融合等方式增强数据表达能力。文中提供了详细的MATLAB代码示例,包括数据预处理、网络搭建、贝叶斯优化配置和预测结果评估等关键步骤。 适合人群:具备一定机器学习和时间序列分析基础,熟悉MATLAB编程环境,从事电力系统预测、智能电网、负荷管理等相关领域的研究人员、工程师及研究生。 使用场景及目标:①应用于居民级或多用户聚合负荷的短期至中期多步预测(如未来24小时);②服务于配电系统运行调度、需求响应基线设定、家庭能源管理系统优化、分布式能源协调控制等实际工程场景;③为科研提供可复现的深度学习+贝叶斯优化的技术路线参考。 阅读建议:此资源以实际项目为导向,建议读者结合提供的代码逐步实现并调试模型,重点关注数据质量控制、时间特征编码、组合网络结构设计与贝叶斯优化稳定性之间的协同关系,在实践中深入理解多步预测中的误差累积机制与超参数敏感性问题。 立即下载

1.7 TCP文件上传实现

package web;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class testServerDemo02 {
    public static void main(String[] args) throws IOException {
        //1、创建服务
        ServerSocket serverSocket = new ServerSocket(9000);
        //2、监听客户端的连接
        Socket socket =serverSocket.accept();//阻塞式监听,会一直等待客户端 Scanner scanner = new Scanner(System.in);
        //3、获取输入流
        InputStream is = socket.getInputStream();
        //4、文件输出
        FileOutputStream fos = new FileOutputStream(new File("receive.jpg"));
        byte[] buffer = new byte[1024];
        int len=0;
        while((len=is.read(buffer))!=-1){
            fos.write(buffer,0,len);
        }
        OutputStream os = socket.getOutputStream();
        os.write("我接收完了,你们可以关闭了".getBytes());

        fos.close();
        is.close();
        socket.close();
        serverSocket.close();
    }
}
package web;

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

public class testClientDemo02 {
    public static void main(String[] args) throws IOException {
        //1、创建一个socket连接
        Socket socket=new Socket(InetAddress.getByName("127.0.0.1"),9000);
        //2、创建一个输出流
        OutputStream os = socket.getOutputStream();
        //3、文件流-读取文件
        FileInputStream fis = new FileInputStream(new File("20210705_1.jpg"));
        //4、写出文件
        byte[] buffer = new byte[1024];
        int len;
        while ((len=fis.read(buffer))!=-1){
            os.write(buffer,0,len);
        }
        //通知服务器,我已经结束了
        socket.shutdownOutput();//我已经传输完了

        //确定服务器接收完毕,才能够断开连接
        InputStream inputStream = socket.getInputStream();
        //String byte[]
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        byte[] buffer2=new byte[1024];
        int len2 = 0;
        while((len= inputStream.read())!=-1){
            baos.write(buffer2,0,len2);
        }
        System.out.println(baos.toString());
        baos.close();
        inputStream.close();
        fis.close();
        os.close();
        socket.close();
    }
}

1.8 初始Tomcat

在这里插入图片描述存放发布的项目

1.9 UDP消息发送

不用连接,但是需要对方的地址;
【UdpClientDemo01】

package web;
import java.io.IOException;
import java.net.*;

public class UdpClientDemo01 {
    public static void main(String[] args) throws IOException {
        //1、建立一个socket
        DatagramSocket socket = new DatagramSocket();
        //2、建个包
        String msg="你好啊,服务器!";
        //发送给谁
        InetAddress localhost = InetAddress.getByName("localhost");
        int port=9090;
        // 数据 数据的长度 起始 要发送给谁
        DatagramPacket packet = new DatagramPacket(msg.getBytes(), 0, msg.getBytes().length, localhost, port);
        //3、发送包
        socket.send(packet);
        //4、关闭流
        socket.close();
    }
}

【UdpServerDemo01】

package web;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class UdpServerDemo01 {
    public static void main(String[] args) throws IOException {
        //1、开放端口
        DatagramSocket socket = new DatagramSocket(9090);
        //接收数据包
        byte[] buffer = new byte[1024];
        DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length);
        socket.receive(packet);//阻塞接收

        System.out.println(packet.getLength());
        System.out.println(packet.getAddress());
        System.out.println(packet.getAddress().getHostName());
        System.out.println(new String(packet.getData()));
        //关闭连接
        socket.close();
    }
}

1.10 UDP聊天实现

不使用线程,只能实现两个人之间的聊天
【UdpSenderDemo01】

package web.chart;

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

public class UdpSenderDemo01 {
    public static void main(String[] args) throws IOException {
        DatagramSocket socket = new DatagramSocket(8888);
        //准备数据:控制台读取 System.in
        while (true){
            BufferedReader reader= new BufferedReader(new InputStreamReader(System.in));
            String data = reader.readLine();
            byte[] datas = data.getBytes();
            DatagramPacket packet = new DatagramPacket(datas,0,datas.length,new InetSocketAddress("localhost",6666));
            socket.send(packet);
            if (data.equals("bye")){
                break;
            }
        }
        socket.close();
    }
}

【UdpReceiveDemo01】

package web.chart;

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

public class UdpReceiveDemo01 {
    public static void main(String[] args) throws IOException {
        DatagramSocket socket = new DatagramSocket(6666);

        //准备接收包裹
        while (true){
            byte[] container = new byte[1024];
            DatagramPacket packet = new DatagramPacket(container,0,container.length);
            socket.receive(packet);//阻塞式接收包裹
            //断开连接 bye
            byte[] data = packet.getData();
            String receiveData = new String(data, 0, data.length);
            System.out.println(receiveData);
            if (receiveData.equals("bye")){
                break;
            }
        }
        socket.close();
    }
}

使用线程,实现多人之间的聊天

1.11 UDP多线程在线咨询

【TalkSend】

package web.chart;

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

public class TalkSend implements Runnable{
    DatagramSocket socket = null;
    BufferedReader reader = null;
    private int fromPort;
    private String toIP;
    private int toPort;

    public TalkSend(int fromPort, String toIP, int toPort) {
        this.fromPort = fromPort;
        this.toIP = toIP;
        this.toPort = toPort;
        try {
            socket = new DatagramSocket(fromPort);
            reader = new BufferedReader(new InputStreamReader(System.in));
        } catch (SocketException e) {
            e.printStackTrace();
        }

    }

    @Override
    public void run() {
        while (true){
            try {
                String data = reader.readLine();
                byte[] datas = data.getBytes();
                DatagramPacket packet = new DatagramPacket(datas, 0, datas.length, new InetSocketAddress(this.toIP , this.toPort));
                socket.send(packet);
                if (data.equals("bye")){
                    break;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        socket.close();
    }
}

【TalkReceive】

package web.chart;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class TalkReceive implements Runnable{
    DatagramSocket socket=null;
    private int port;
    private String msgFrom;
    public TalkReceive(int port,String msgFrom){
        this.port=port;
        this.msgFrom=msgFrom;

        try {
            socket = new DatagramSocket(port);
        } catch (SocketException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void run() {
        while (true){
            try{
                //准备接收包裹
                byte[] container = new byte[1024];
                DatagramPacket packet = new DatagramPacket(container, 0, container.length);
                socket.receive(packet);//阻塞式接收包裹

                //断开连接 bye
                byte[] data = packet.getData();
                String receive = new String(data, 0, data.length);
                System.out.println(msgFrom+" :"+receive);
                if (receive.equals("bye")){
                    break;
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        socket.close();
    }
}

【TestTeacher】

package web.chart;

public class TestTeacher {
    public static void main(String[] args) {
        new Thread(new TalkSend(5555,"localhost",8888)).start();
        new Thread(new TalkReceive(9999,"学生")).start();
    }
}

【TestStudent】

package web.chart;
public class TestStudent {
    public static void main(String[] args) {
        //开启两个线程
        new Thread(new TalkSend(7777,"localhost",9999)).start();
        new Thread(new TalkReceive(8888,"老师")).start();
    }
}

1.18 URL下载网络资源

url统一资源定位符
在这里插入图片描述
下载网络图片

package web;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

public class URLDown {
    public static void main(String[] args) throws IOException {
        //1、下载地址
        URL url = new URL("https://ww2.sinaimg.cn/bmiddle/6e48db9egy1gsl45vx95vj20hd0b6jsd.jpg");
        //2、连接到这个资源Http
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
        InputStream inputStream = urlConnection.getInputStream();
        FileOutputStream fileOutputStream = new FileOutputStream("1.jpg");
        byte[] buffer = new byte[1024];
        int len=0;
        while ((len=inputStream.read(buffer))!=-1){
            fileOutputStream.write(buffer,0,len);
        }
        fileOutputStream.close();
        inputStream.close();
        urlConnection.disconnect();
    }
}
国央企创新负责人如何通过平台实现科研成果的快速识别与转化?.docx 科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。 立即下载

相关推荐

PotPlayer自用皮肤

自用 PotPlayer 皮肤,仅微调了字体大小与颜色,是按个人习惯调整,未做适配性调整。

Python程序语言设计 4

5 函数和代码复用

qq_60572293的博客 1202

2-shell及常用命令-续.pdf

2-shell及常用命令-续.pdf

【Java基础】【狂神说Java】Java零基础学习视频通俗易懂P60-76(OOP)(Day4、5-20210703、04)

同一个包下的类不需要导入就可以使用,不同包下的类,必须导入包才能使用。 static修饰静态方法,静态方法可以通过类名.方法名,进行调用,非静态方法通过这种方式进行调用会报错。 static修饰的内容是和类一起加载的,非静态方法是和对象一起生成的(类实例化之后才存在),所以static方法不能调用非静态方法。 Java是值传递 一个类里只能有一个public的类 package oop; public class Student { //静态方法 通过类名.方法名 调用 publ...

... 274

Landsat9 地表温度反演方法

landsat9地表温度反演及缺失值处理方法

xiangliu12345的博客 3917

2021年秋招面经分享·字节跳动【芯片工程师-系统架构】

前言 如果想参考本人背景情况的可见这篇概述 ============================ 正文开始 ============================== 【时间线】 7.29 字节一面 8.4 字节二面 8.11 字节三面 PS:红字表示我当时没答出来的问题,蓝字表示面试官的解答。 面经分享 一面·技术面【1小时5分钟】   面试官京腔重,聊high了所以没时间撕代码了,但是华为应该不会这样。 自我介绍; 介绍一下APB; APB中3个状态的跳转是怎么跳转的; AXI中va

qq_43132308的博客 5611

【Java】使用idea进行Java后端开发 常用的快捷键

try…catch… 对于多行代码想要使用trycatch代码块将其包围起来,只需选中需要包围的代码块,按住组合键:ctrl+alt+t即可选择是try-catch还是try-catch-finally

... 264

数据结构——滑动窗口

入:下标为 i 的元素进入窗口,更新相关统计量。如果 i < k−1 则重复第一步更新:更新答案。一般是更新最大值 / 最小值出:下标为 i−k+1 的元素离开窗口,更新相关统计量✔1. 定长子串中元音的最大数目✔2. 找到一个数字的 K 美丽值✔4. 子数组的最大平均数 |方法一:前缀和方法二:滑动窗口7. 得到 K 个黑块的最少涂色次数8. 爱生气的书店老板9. 几乎唯一子数组的最大和10. 长度为 K 子数组中的最大和11. 可获得的最大点数12. 最少交换次数来组合所有的1 ||

qq_68915288的博客 762

【Java】深入理解Java虚拟机P1-3(JVM性能调优+内存模型+虚拟机原理)

JDK JRE JVM的区别和联系 JDK:Java Development Kit,Java 开发工具包 JRE:Java Runtime Environment,Java 运行时环境 JVM:Java Virtual Machine, Java 虚拟机,它只认识 xxx.class 这种类型的文件,它能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作。jvm 是 Java 能够跨平台的核心。 这三者的关系是:一层层的嵌套关系。JDK>JRE>JVM。 图片源

... 256

ZYNQ烧写程序到flash

1.打开SDK创建FBSl项目 点击finish 2.创建BootImage 导入fsbl.elf、.bin、.elf三个文件,Create Image 生成BOOT.bin文件 3.将BOOT文件烧录到FLASH image File选择2中生成的BOOT.bin文件,FSBL File选择fsbl.elf文件,连接好ZYNQ的Jtag,点击Program,即可烧录。 4.烧录程序到FLASH失败 如果是第一次烧录,需更改创建的fsbl工程下的main函数,在如下代码处加入BootModeRegi

qq_40603614的博客 8315

vue2/3 - 详细实现内网使用离线高德地图功能,在vue中无需网络离线使用高德地图相关功能,高德地图如何离线加载详细教程(内网部署及使用),提供最新完整的瓦片资源下载及相关工具(示例代码,一键复制

vue,vue2,vue3,高德地图,离线使用高德地图,高德地图瓦片官方下载,vue内网使用高德地图离线无网络,断网情况下使用高德地图,vue离线高德地图教程,如何实现内网部署高德地图,无需联网离线使用,vue+ts实现离线高德地图 内网离线高德地图,如何在高德地图Vue项目中下载离线地图,高德离线地图加载不出来,高德地图离线使用不显示怎么办,怎么解决vue内网使用离线高德地图加载失败问题,vue实现离线地图+高德瓦片,vue引入高德离线地图,vue项目如何使用离线高德地图和自定义地图样式,高德离线地图的下

✅ 精选推荐文章 1万+

【Java基础】【狂神说Java】Java零基础学习视频通俗易懂P33-44(Day3-20210702)

p33 Java流程控制01:用户交互Scanner p34 Java流程控制02:Scanner进阶使用 p35 顺序结构 p36 if选择结构 p37 Switch选择结构 p38 While循环详解 p39 DoWhile循环 p40 For循环详解 1 Java流程控制01:用户交互Scanner 1.1 next() package base; import java.util.Scanner; public class Demo01 { public static void m.

... 252

华为OD机试真题 2026-9-2【查找幸运数】

华为OD机试真题 新系统【查找幸运数】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【查找幸运数】多语言题解。

qq_45776114的博客 498

【Java基础】【狂神说Java】Java零基础学习视频通俗易懂P1-20(Day1)

JDK JRE JVM 命令行下编译运行java文件 Hello.java文件内容 public class Hello{ public static void main(String[] args){ System.out.print("Hello World!"); } } 准备好java文件之后就可以进行下面的操作了!! 打开cmd,进入Hello.java所在的文件路径,然后cmd下输入javac Hello.java,编译文件生成.class文件 javac Hello.java ..

... 249

数学建模学习(5):最全概率分析之图表绘制详解,内容比较多,建议收藏

(1) 绘制正整数频率使用 tabulate(X) (2)

全栈川川 4592

作为一名爬虫人如何实现千万级数据爬取?

爬虫门槛不高,高就高在往后余生的每一次实操都随时会让你崩溃!Bro

吴秋霖的博客 1万+

【Java学习笔记】1-13重载

方法的重载 定义: **多个方法的名称一样,但是参数列表不一样。**方法名称区分大小写!!! 好处: 只需要记住唯一一个方法名称,就可以实现类似的多个功能。 方法重载与下列因素相关: 1、参数个数不同 2、参数类型不同 3、参数的多类型顺序不同 方法重载与下列因素无关: 1、与参数的名称无关 2、与方法的返回值类型无关 //错误示范,方法重载与方法的返回值无关 public static int sum(int a,int b){ return a+b } public static double sum

... 242

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【Java基础】【狂神说Java】Java零基础学习视频通俗易懂P21-26(Day1昨天忘记发布了)

Java小技巧(idea下) psvm +tab键 补全 public static void main(String[] args) { } sout+enter键/鼠标点击选择 可以实现补全 System.out.println(); System.out.println(); /*+enter键生成多行注释符号 /* */ Java基本语法 1 注释、标识符、关键字 1.1 注释 1.1.1 单行注释(只能注释改行为文字) //这里写注释,只能注释改行为文字

... 237

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【Java基础】【狂神说Java】Java零基础学习视频通俗易懂P45-51(方法)(Day3-20210702)

1 方法 1.1 方法的基本知识 main方法是由java虚拟机调用的 1.2 方法的重载 1.3 命令行传参 package method; public class Demo03 { public static void main(String[] args) { for(int i=0;i<args.length;i++){ System.out.println(args[i]); } } } 打开cmd jav

... 227

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【Java基础】【狂神说Java】Java零基础学习视频通俗易懂P52-59(数组)(Day3-20210702)

1 数组

... 223

【Java基础】【狂神说Java】Java零基础学习视频通俗易懂P27-32(Day2-20210628)

P27 P27 基本运算符 P28 自增自减运算符

... 222

【Java-II】多线程详解 P3(Day5-20210704-Day1)

程序:main线程 gc守护线程 (JVM创建的 用于垃圾回收) 02 线程创建 线程创建的三种方式 Thread class Runnable 接口 Callable 接口(工作之后用的多) Java虚拟机允许同时执行多个线程 线程创建方式1: 1、继承Thread类,重写run()方法,调用start()开启线程 线程启动需要时间,线程开启不一定立即执行,需要CPU调度执行 demo例子 package threadLearn.demo01; public class TestThread1 ex

... 203

【Java-II】多线程详解 P18-19(Day16-20210715-Day4)

线程同步 发生在多个线程操作同一个资源 线程同步机制 三大不安全案理 每个线程都有自己的工作内存 Case1:买票 package threadLearn.syn; //不安全的买票 public class UnsafeBuyTicket{ public static void main(String[] args) { BuyTicket buyTicket = new BuyTicket(); new Thread(buyTicket,"苦逼的我").st

... 193

【Java基础】【狂神说Java】Java零基础学习视频通俗易懂P77-79(异常)(Day5-20210704)

package exception; public class Test { public static void main(String[] args) { int a=1; int b=0; try{//try监控区域 System.out.println(a/b); }catch (Exception e){//catch捕获异常 括号里是:想要捕获的异常类型 //可以多个catc...

... 174

【Java-II】多线程详解 P6-8(Day14-20210713-Day2)

06 初识并发问题——以购买火车票为例 package threadLearn.demo01; public class TestThread4 implements Runnable{ //票数 private int ticketNums=10; @Override public void run() { while (true){ if (ticketNums<=0){ break;

... 167
上一篇: 【Java-II】网络编程实战讲解 P1-6(Day18-20210717-Day1)
下一篇: 【树-简单】572. 另一棵树的子树
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值