widows定时开启任务&crontab(参数讲解)&hadoop案例(模拟生成新能源车辆数据)总结

概要

openAI 的 GPT 大模型的发展历程。

1、案例需求

模拟生成新能源车辆数据
编写一个程序,每天凌晨3点模拟生成当天的新能源车辆数据(字段信息必须包含:车架号、行驶总里程、车速、车辆状态、充电状态、剩余电量SOC、SOC低报警、数据生成时间等)。

要求:

1、最终部署时,要将这些数据写到第一题的HDFS中。(如果有多个组做第一题,则任选一个HDFS即可);
2、车辆数据要按天存储,数据格式是JSON格式,另外如果数据文件大于100M,则另起一个文件存。每天的数据总量不少于300M。比如假设程序是2023-01-1 03点运行,那么就将当前模拟生成的数据写入到HDFS的/can_data/2023-01-01文件夹的can-2023-01-01.json文件中,写满100M,则继续写到can-2023-01-01.json.2文件中,依次类推;
3、每天模拟生成的车辆数据中,必须至少包含20辆车的数据,即要含有20个车架号(一个车架号表示一辆车,用字符串表示);
4、每天生成的数据中要有少量(20条左右)重复数据(所有字段都相同的两条数据则认为是重复数据),且同一辆车的两条数据的数据生成时间间隔两秒;
5、每天生成的数据中要混有少量前几天的数据(即数据生成时间不是当天,而是前几天的)。

生成数据可看模拟生成新能源车辆数据
链接: 模拟生成新能源车辆数据
本次博客主要讲解如果在Linux每天凌晨3点定时启动运行程序。
下面是模拟新能源汽车数据的源码:

// 模拟生成新能源汽车数据
import random
import datetime
import json


def get_vin(number: int) -> list:
    """
    用来生成指定数量的车架号

    param:number    生成多少量车的数据
    return: 返回一个列表
    """
    vin_set = set()  # 创建一个空集合
    for i in range(number):
        vin = ''.join(random.choices(
            '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ', k=17))  # 车架号
        if vin not in vin_set:
            vin_set.add(vin)
    return list(vin_set)


class GenerationData:
    def __init__(self, vin):
        self.vin = vin

        self.mileage = round(random.uniform(200, 50000), 2)  # 行驶总里程
        # 随机初始化电量
        self.soc = round(random.uniform(10, 100), 2)  # 剩余电量SOC
        # 需要混入少量前几天的数据(让其在今天和前几天中选择,但被选中的几率极低)
        self.now_day = random.choices([(datetime.datetime.now() - datetime.timedelta(days=random.randint(1, 3))),
                                       datetime.datetime.now()], weights=[0.05, 0.95])[0]
        # 随机选取司机用车时间(或充电的时间)
        self.use_car_time = \
            random.choices([self.get_random_date(0, 23), self.get_random_date(8, 11), self.get_random_date(16, 22)],
                           weights=[0.2, 0.4, 0.4])[0]  # 模拟这个时间段用车的人较多
        # 低点预警
        self.soc_low_alarm = '电量正常' if self.soc >= 30 else '电量低于30%'
        # 用于保证数据为当天的数据
        self.time_compare = datetime.datetime.combine(self.now_day.date(), datetime.time(23, 59, 50))

    @staticmethod
    def get_random_speed():
        """
        用来随机获取车速
        """
        speed1 = random.randint(0, 60)
        speed2 = random.randint(61, 90)
        speed3 = random.randint(91, 120)
        speed = random.choices([speed1, speed2, speed3], weights=[0.6, 0.3, 0.1])[0]

        return speed

    def get_random_date(self, start: int, end: int):
        """
        用来生成当天的随机时间

        param:start 起始时间(小时)
        param:end   结束时间(小时)
        return:     当天的随机时间
        """

        # 生成随机的小时数、分钟数和秒数,并构造时间对象
        random_time = datetime.time(random.randint(
            start, end), random.randint(0, 59), random.randint
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JDK8是Oracle公司推出的Java开发工具包,它提供了Java开发所需的一系列工具和类库。"widows"是一个笔误,我猜测你想问的可能是"Windows"操作系统下的JDK8。 在Windows操作系统下使用JDK8进行Java开发,首先需要安装JDK8的软件包。你可以从Oracle官方网站上下载安装程序,然后按照安装向导一步一步进行安装。 安装完成后,你需要配置JDK8的环境变量。通过设置JAVA_HOME环境变量来指定JDK8的安装目录,将JDK的bin目录添加到系统的PATH环境变量中,这样系统就能找到JDK的执行文件。 使用JDK8进行Java编程时,你可以使用任何Java开发工具,比如Eclipse、IntelliJ IDEA等。只需要在开发工具中配置JDK8的路径,然后就可以使用JDK8提供的各种功能进行开发。 JDK8相比于之前的版本,引入了许多新的特性和改进。其中最具代表性的是Lambda表达式和函数式接口的支持,使得Java语言更加灵活和函数式编程更容易实现。此外,JDK8还增强了集合类库、增加了新的时间日期API、改进了并发编程等方面。 总的来说,JDK8是Java开发的重要工具,为开发者提供了丰富的功能和便利。如果你想在Windows操作系统下进行Java开发,安装和配置JDK8是必要的第一步。 ### 回答2: JDK 8是Java Development Kit的缩写,是Java编程语言的一个开发环境。而“widows”的正确拼写应为“Windows”。 JDK 8是Java SE 8版本的开发工具包,它是Java编程语言的基础,用于开发和编译Java程序。它包括了编译器、虚拟机、调试工具和其他一些必要的组件。JDK 8还包括了许多新的特性和改进,使得Java编程更加便捷和高效。 对于Windows操作系统的用户来说,widows jdk8非常重要。它允许开发人员在Windows平台上编写和运行Java应用程序。通过使用JDK 8,开发者可以利用其中的工具和库来创建各种类型的Java应用程序,如桌面应用程序、移动应用和Web应用等。 此外,JDK 8还引入了一些新的语言特性和API,如Lambda表达式、Stream API等,这些特性极大地提高了Java编程的灵活性和效率。它们使得开发者能够更加简洁地编写代码,并能更好地处理集合和并行计算等任务。 总之,widows jdk8对于Windows系统下的Java开发者来说非常重要。它提供了完整的工具和环境,使得开发者能够轻松地编写、编译和运行Java应用程序。同时,JDK 8还引入了许多新的特性和改进,提升了Java编程的效率和灵活性。由于字数限制,以上只是对widows jdk8的简要说明。 ### 回答3: JDK(Java Development Kit)是Java开发工具包,而JDK 8是Java开发工具包的第8个主要版本。 widows JDK 8是指在Windows操作系统上安装和使用JDK 8进行Java开发。JDK 8包含了一系列的工具和库,供开发人员使用和编写Java程序。 使用JDK 8进行Java开发有许多优势。首先,JDK 8引入了许多新的特性和改进,例如lambda表达式、函数式接口、Stream API等,这些新特性使得Java开发更加简洁、灵活,并且增强了代码的可读性和可维护性。 其次,JDK 8对性能进行了优化和改进,使得Java应用程序在执行速度和内存消耗方面有明显的提升。特别是在多核处理器系统上,JDK 8的并行处理能力更强,可以更好地利用硬件资源。 此外,JDK 8还提供了丰富的开发工具和库,包括编译器、调试器、性能分析器等,这些工具可以帮助开发人员更加高效地编写、调试和优化Java代码。 总而言之,widows JDK 8是一套用于Windows操作系统上的Java开发工具,它提供了丰富的特性、优化的性能和强大的开发工具,使得Java开发变得更加轻松、高效和可靠。它是Java开发人员的不可或缺的选择之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值