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

基于MATLAB的太阳能光伏电力仿真,模拟每日太阳能发电,可视化功率曲线,并通过数值积分计算总能量输出。.zip 1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 立即下载

06 初识并发问题——以购买火车票为例

在这里插入图片描述

package threadLearn.demo01;

public class TestThread4 implements Runnable{
    //票数
    private int ticketNums=10;
    @Override
    public void run() {
        while (true){
            if (ticketNums<=0){
                break;
            }
            try {
                Thread.sleep(200);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName() + "--->拿到了第" + ticketNums-- + "票");
        }
    }

    public static void main(String[] args) {
        TestThread4 ticket = new TestThread4();
        new Thread(ticket,"小明").start();
        new Thread(ticket,"老师").start();
        new Thread(ticket,"黄牛").start();
        System.out.println(Thread.currentThread().getName());
    }
}

输出:
黄牛--->拿到了第10票
老师--->拿到了第10票
小明--->拿到了第9票
老师--->拿到了第8票
黄牛--->拿到了第7票
小明--->拿到了第8票
小明--->拿到了第5票
黄牛--->拿到了第4票
老师--->拿到了第6票
小明--->拿到了第2票
黄牛--->拿到了第1票
老师--->拿到了第3票

从中我们可以看到问题:多个线程操作同一个资源的时候,容易出现并发问题,同一个资源被不同的线程访问

07 龟兔赛跑

在这里插入图片描述

package threadLearn.demo01;

public class Race implements Runnable{
    private static String winner;

    @Override
    public void run() {
        for (int i = 0; i <= 100; i++) {
            if (Thread.currentThread().getName().equals("兔子") && i%10==0){
                try {
                    Thread.sleep(1);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            //判断比赛是否结束
            //如果比赛结束了,就停止程序
            if (gameOver(i)){
                break;
            }
            System.out.println(Thread.currentThread().getName() + "-->跑了" + i + "步");
        }
    }

    private boolean gameOver(int steps){
        //判断是否有胜利者
        if (winner!=null){
            return true;
        }{
            if (steps>=100){
                winner =Thread.currentThread().getName();
                System.out.println("winner is "+winner);
                return true;
            }
        }
        return false;
    }

    public Race() {
    }

    public static void main(String[] args) {
        Race race = new Race();
        new Thread(race,"兔子").start();
        new Thread(race,"乌龟").start();

    }
}

08 实现Callable接口

在这里插入图片描述

package threadLearn.demo02;

import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.concurrent.*;

public class TestCallable implements Callable<Boolean> {
    private String url;
    private String name;

    public TestCallable(String url, String name) {
        this.url = url;
        this.name = name;
    }

    @Override
    public Boolean call() throws Exception {
        WebDownloader webDownloader = new WebDownloader();
        webDownloader.downloader(url,name);
        System.out.println("下载了文件名为:"+name);
        return true;
    }

    public static void main(String[] args) {
        TestCallable t1 = new TestCallable("https://n.sinaimg.cn/news/transform/350/w210h140/20210713/a5f2-b6ea01a4a9952832066c1bc25dfa04e7.jpg","20210713_11.jpg");
        TestCallable t2 = new TestCallable("https://n.sinaimg.cn/news/transform/350/w210h140/20210713/64a8-8bf9fb26cdea87a38a446e5c1c685c4c.jpg","20210713_22.jpg");
        TestCallable t3 = new TestCallable("https://n.sinaimg.cn/ent/transform/175/w105h70/20210713/4047-3aee4bc841cadc336b7104473218c732.jpg","20210713_33.jpg");

        //创建执行服务:
        //提交执行
        ExecutorService executorService = Executors.newFixedThreadPool(1);

        //获取结果
        Future<Boolean> r1 = executorService.submit(t1);
        Future<Boolean> r2 = executorService.submit(t2);
        Future<Boolean> r3 = executorService.submit(t3);

        //获取结果
        try {
            Boolean rs1 = r1.get();
            Boolean rs2 = r2.get();
            Boolean rs3 = r3.get();

        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }

        //关闭服务
        executorService.shutdownNow();
    }
}

class WebDownloader{

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

相关推荐

国央企创新负责人如何通过平台实现科研成果的快速识别与转化?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

【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

PotPlayer自用皮肤

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

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

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

... 274

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

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

金蝶云星空应用开发初级考试题目汇总

摘要:本文为金蝶云星空应用开发初级考试题目汇总

2401_86113757的博客 3799

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

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

... 264

三维变换矩阵实战——三维点云的旋转、缩放、镜像、错切、平移、正交投影

旋转矩阵:右边矩阵是点云的原始坐标,左边的是旋转矩阵可视化:绕x轴旋转90度。

weixin_43850909的博客 8227

【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

FFmpeg音频转换避坑实录:为什么VOS的REC转MP3比WAV转MP3体积小一半?

本文深入解析了FFmpeg在VOS系统REC格式音频转换中的优化技巧,揭示了REC转MP3比WAV转MP3体积小一半的原因。通过分析REC格式的压缩特性、转码参数陷阱及FFmpeg调优方法,帮助开发者实现高效音频转换,显著降低存储成本。

weixin_30752699的博客 526

pip——【Fatal error in launcher: Unable to create process】的深度排查与修复指南

本文深度解析了Python包管理工具pip报错【Fatal error in launcher: Unable to create process】的根本原因与解决方案。该错误通常由Python解释器路径变更、虚拟环境损坏或多版本冲突导致。文章提供了从快速排查到彻底修复的完整指南,包括使用`python -m pip`命令绕过启动器、修复或重装pip、重建虚拟环境等核心方法,并给出了预防此错误的最佳实践。

weixin_29306261的博客 598

【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

RS422总线

①.RS422发送驱动器无高阻三态(浮空)状态RS422收发芯片,发送脚固定强驱动输出,永远钳位 A/B 差分电平,不能关断、不能悬空,只要芯片上电,TX+、TX - 就强制输出互补电压(一路高、一路低)。多条发送并联在同一组差分线上:两个驱动器一个拉 A 高、一个拉 A 低,B 线反向拉扯 → 电源→地大电流对灌,瞬间芯片过流发烫烧毁、总线电平短路错乱。注意:RS485 带DE/RE 收发使能脚:不用发送时可关闭驱动器,输出变成高阻浮空,让出总线,因此能多节点分时发送。③.多点通信方式,一主多从方式;

zhuimeng_1234的博客 222

【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

Stable Diffusion 模型分享:Indigo Furry mix(人类与野兽的混合)

Indigo Furry mix 是一个混合模型,出的图具有雄性人类的体型和野兽的形态。条目内容类型大模型基础模型SD 1.5来源CIVITAI作者indigowing文件名称文件大小1.99GB。

水滴的博客 1830

保研考研机试攻略(满分篇):第二章——满分之路上(1)

保研考研机试攻略(满分篇):第二章——满分之路上(1)2.1计算机和基础+2.2进阶背包问题+2.3毛毛虫算法

qq_63349644的博客 1195

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

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

... 242

FPGA原型验证(八):SoC设计适配与实现策略

时钟门控在SoC设计中很常见,应该小心处理门控时钟,以成功地在FPGA上原型化SoC设计。现代FPGA综合工具在正确约束的情况下,可以自动处理大多数门控时钟。通过遵循本章中的指导方针,即使具有复杂时钟门控的SoC设计也可以得到处理,并成功地在FPGA上进行原型化。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 477

【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

完美反编译工具,可以反编译大多EA

完美反编译工具,可以反编译大多EA

基于Matlab Simulink的光伏储能交直流微电网仿真:混合储能系统下垂控制与V2G应用

内容概要:本文详细介绍了利用Matlab/Simulink对光伏储能交直流微电网进行综合仿真的方法和技术细节。主要内容涵盖混合储能系统的下垂控制策略,用于功率分配的MATLAB脚本实现,以及针对电动汽车的V2G(Vehicle-to-Grid)仿真。文中还探讨了风光储联合控制中的功率预测模块设计,强调了关键参数设置如母线电压波动阈值的选择,并分享了一些实用技巧,如避免仿真过程中出现计算停滞的方法。此外,作者提供了关于电池建模的具体指导,包括使用二阶RC等效电路模型来提高仿真精度。适用人群:从事新能源发电、智能电网研究的技术人员,尤其是那些需要掌握光伏储能系统仿真技能的研究者和工程师。使用场景及目标:适用于希望深入了解光伏储能交直流微电网内部机制及其仿真技术的专业人士。主要目标是帮助读者掌握如何构建和优化这类复杂系统的仿真模型,从而更好地理解和解决实际工程中可能遇到的问题。其他说明:文中不仅提供了详细的理论解释,还有具体的代码片段供参考,确保读者能够将所学应用于实践中。同时提醒读者注意仿真过程中的常见陷阱,并给出了有效的预防措施。

【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

百度智能客服产品-NGD v5.1

百度智能客服产品—NGD v5.1

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

1 数组

... 223

计算机硬件组件检测数据集.zip

一、数据集基础信息数据集名称: 计算机硬件组件检测数据集图片数量:- 训练集:1298 张图片- 验证集:189 张图片- 测试集:379 张图片- 总计:1866 张图片分类类别: 电脑机箱(casepc)、光驱(cdroom)、CPU、硬盘(hdd)、散热器(heatsink)、显示器(monitor)、主板(motherboard)、电源(power_supply)、内存(ram)、显卡(vga)等计算机硬件组件。标注格式: YOLO 格式,包含边界框和类别标签,适用于目标检测任务。数据格式: 常见图片格式(如 JPEG/PNG),细节清晰。二、数据集适用场景• 智能制造与自动化: 用于自动化生产线上的计算机硬件检测和质量控制,帮助机器人或系统实时识别组件位置和类型,提升生产效率。• 物流与库存管理: 支持仓库环境中硬件组件的自动分类和库存盘点,优化供应链管理。• 计算机维修辅助: 开发工具辅助技术人员快速定位和识别故障组件,提高维修准确性和效率。• 学术研究与教育: 适用于计算机视觉课程和研究中目标检测任务的实践,作为教学资源或模型开发基础。三、数据集优势• 类别覆盖全面: 包含多种计算机硬件组件(如 CPU、主板、显示器等),覆盖常见和特定类型,提供丰富多样性,增强模型泛化能力。• 标注精准可靠: 边界框定位准确,每个标注与类别高度一致,确保训练数据的质量,可直接用于模型训练。• 任务适配性强: YOLO 格式兼容主流深度学习框架(如 YOLOv5、YOLOv8),支持目标检测任务,便于快速集成和部署。• 工业应用价值高: 数据集源自实际硬件场景,直接支持智能制造、自动化检测等工业需求,具有高实用性和效率提升潜力。

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

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

... 222

【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-II】网络编程实战讲解 P7-12(Day19-20210718-Day2)

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、创建服务 ServerSo

... 191

【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】多线程详解 P3(Day5-20210704-Day1)
下一篇: 【Hanlp】使用pyhanlp进行新词发现的一点小结
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值