java实现航班信息查询管理系统

2023-11-17

一、任务概述

在这里插入图片描述

二、目录结构

目录结构

三、详细代码

JDBC工具类模块

package com.kaikeba.task.task010404.utils;

import com.alibaba.druid.pool.DruidDataSource;

import java.sql.*;
import java.util.List;
import java.util.ResourceBundle;

public class JDBCUtils {

    // 1、定义初始变量
    // 1.1 连接对象
    private Connection conn;
    // 1.2 预状态通道对象
    private PreparedStatement ps;
    // 1.3 结果集对象
    private ResultSet resultSet;
    // 1.4 存储受影响的行数数据
    private int count;
    // 1.5 数据库连接地址
    private static final String url;
    // 1.6 用户名
    private static final String username;
    // 1.7 密码
    private static final String password;
    // 1.8 驱动地址
    private static final String driverClassName;
    // 1.9 创建德鲁伊数据池连接对象
    private static final DruidDataSource dds = new DruidDataSource();


    // 加载驱动
    static {
        // 读取属性文件数据
        ResourceBundle bundle = ResourceBundle.getBundle("dbConfig");
        driverClassName = bundle.getString("driverClassName");
        url = bundle.getString("url");
        username = bundle.getString("username");
        password = bundle.getString("password");
        // 设置属性
        dds.setUsername(username);
        dds.setPassword(password);
        dds.setUrl(url);
        dds.setDriverClassName(driverClassName);  // 驱动地址
        // dds.setInitialSize(20); // 设置初始连接个数
        dds.setTestWhileIdle(false); // 解决报错【testWhileIdle is true, validationQuery not set】
    }


    /**
     * 获得连接
     *
     * @return 连接对象
     */
    public Connection getConn() {
        try {
            conn = dds.getConnection();
        } catch (SQLException sqlException) {
            sqlException.printStackTrace();
        }
        return conn;
    }

    /**
     * 获得预状态通道对象
     *
     * @param sql sql语句
     * @return 预状态通道对象
     */
    public PreparedStatement getPs(String sql) {
        try {
            ps = getConn().prepareStatement(sql);
        } catch (SQLException sqlException) {
            sqlException.printStackTrace();
        }
        return ps;
    }

    /**
     * 绑定参数
     *
     * @param list 参数列表
     */
    private void params(List<Object> list) {
        if (list != null && list.size() > 0) {
            for (int i = 0; i < list.size(); i++) {
                try {
                    ps.setObject(i + 1, list.get(i));
                } catch (SQLException sqlException) {
                    sqlException.printStackTrace();
                }
            }
        }
    }


    /**
     * 执行【增删改】操作
     *
     * @param sql  sql语句
     * @param list 参数列表
     * @return 影响行数
     */
    public int update(String sql, List<Object> list) {
        getPs(sql);
        params(list);
        try {
            count = ps.executeUpdate();
        } catch (SQLException sqlException) {
            sqlException.printStackTrace();
        }
        return count;
    }

    /**
     * 执行【查询】操作
     *
     * @param sql  sql语句
     * @param list 参数列表
     * @return 查询得到的数据
     */
    public ResultSet query(String sql, List<Object> list) {
        getPs(sql);
        params(list);
        try {
            resultSet = ps.executeQuery();
        } catch (SQLException sqlException) {
            sqlException.printStackTrace();
        }
        return resultSet;
    }

    /**
     * 查询全部数据
     * @param sql SQL语句
     * @return 全部数据
     */
    public ResultSet queryAll(String sql) {
        getPs(sql);
        try {
            resultSet = ps.executeQuery();
        } catch (SQLException sqlException) {
            sqlException.printStackTrace();
        }
        return resultSet;
    }

    /**
     * 关闭所有资源
     */
    public void closeAll() {
        try {
            if (resultSet != null)
                resultSet.close();
            if (ps != null)
                ps.close();
            if (conn != null)
                conn.close();
        } catch (SQLException sqlException) {
            sqlException.printStackTrace();
        }
    }

}

AirInfo

package com.kaikeba.task.task010404.bean;


public class AirInfo {

    // 编号
    private int number;
    // 航班号
    private int flightNumber;
    // 目的地
    private String destination;
    // 起飞日期
    private String date;

    public AirInfo() {
    }

    public AirInfo(int number, int flightNumber, String destination, String date) {
        this.number = number;
        this.flightNumber = flightNumber;
        this.destination = destination;
        this.date = date;
    }

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    public int getFlightNumber() {
        return flightNumber;
    }

    public void setFlightNumber(int flightNumber) {
        this.flightNumber = flightNumber;
    }

    public String getDestination() {
        return destination;
    }

    public void setDestination(String destination) {
        this.destination = destination;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    @Override
    public String toString() {
        return "AirInfo{" +
                "number=" + number +
                ", flightNumber=" + flightNumber +
                ", destination='" + destination + '\'' +
                ", date=" + date +
                '}';
    }
}

Dao模块

package com.kaikeba.task.task010404.dao;


import com.kaikeba.task.task010404.bean.AirInfo;

import java.util.List;

public interface AirInfoDao {

    /**
     * 根据起飞时间查询
     * @param date 起飞时间
     * @return 对应的航班信息
     */
    public List<AirInfo> findByDate(String date);

    /**
     * 根据目的地查询
     * @param destination 目的地
     * @return 对应的航班信息
     */
    public List<AirInfo> findByDestination(String destination);

    /**
     * 查看所有航班
     * @return 所有航班信息
     */
    public List<AirInfo> findAll();

    /**
     * 更新航班信息【根据编号】
     * @param airInfo 航班信息
     * @return 影响行数
     */
    public int update(AirInfo airInfo);

    /**
     * 删除航班信息【根据编号】
     * @param number 编号
     * @return 影响行数
     */
    public int delete(int number);
}

Dao实现类模块

package com.kaikeba.task.task010404.dao.impl;

import com.kaikeba.task.task010404.bean.AirInfo;
import com.kaikeba.task.task010404.dao.AirInfoDao;
import com.kaikeba.task.task010404.utils.JDBCUtils;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class AirInfoDaoImpl extends JDBCUtils implements AirInfoDao {

    @Override
    public List<AirInfo> findByDate(String date) {
        // 定义SQL查询语句
        String sql = "SELECT number,flightNumber,destination,date FROM air_info WHERE date=?";
        // 声明一个空数组,用于存储查询参数
        List<Object> list = new ArrayList<>();
        // 将查询参数添加到数组中
        list.add(date);
        // 执行查询语句
        ResultSet resultSet = query(sql, list);
        // 声明一个空数组,用于存放查询得到的数据
        List<AirInfo> airInfos = new ArrayList<>();
        try {
            while (resultSet.next()) {
                // 声明一个 AirInfo 对象
                AirInfo airInfo = new AirInfo();
                // 设置属性
                airInfo.setNumber(resultSet.getInt("number"));
                airInfo.setFlightNumber(resultSet.getInt("flightNumber"));
                airInfo.setDestination(resultSet.getString("destination"));
                airInfo.setDate(resultSet.getString("date"));
                // 将 AirInfo 对象数据添加到列表中
                airInfos.add(airInfo);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            // 关闭资源
            closeAll();
        }
        return airInfos;
    }

    @Override
    public List<AirInfo> findByDestination(String destination) {
        // 定义SQL查询语句
        String sql = "SELECT number,flightNumber,destination,date FROM air_info WHERE destination=?";
        // 声明一个空数组,用于存储查询参数
        List<Object> list = new ArrayList<>();
        // 将查询参数添加到数组中
        list.add(destination);
        // 执行查询语句
        ResultSet resultSet = query(sql, list);
        // 声明一个空数组,用于存放查询得到的数据
        List<AirInfo> airInfos = new ArrayList<>();
        try {
            while (resultSet.next()) {
                // 声明一个 AirInfo 对象
                AirInfo airInfo = new AirInfo();
                // 设置属性
                airInfo.setNumber(resultSet.getInt("number"));
                airInfo.setFlightNumber(resultSet.getInt("flightNumber"));
                airInfo.setDestination(resultSet.getString("destination"));
                airInfo.setDate(resultSet.getString("date"));
                // 将 AirInfo 对象数据添加到列表中
                airInfos.add(airInfo);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            // 关闭资源
            closeAll();
        }
        return airInfos;
    }

    @Override
    public List<AirInfo> findAll() {
        // 声明一个空数组,用于存放查询得到的数据
        List<AirInfo> airInfos = new ArrayList<>();
        // 定义查询SQL语句
        String sql = "SELECT number,flightNumber,destination,date FROM air_info";
        // 执行查询语句,获取查询结果
        ResultSet resultSet = queryAll(sql);
        try {
            while (resultSet.next()) {
                // 声明一个 AirInfo 对象
                AirInfo airInfo = new AirInfo();
                // 设置属性
                airInfo.setNumber(resultSet.getInt("number"));
                airInfo.setFlightNumber(resultSet.getInt("flightNumber"));
                airInfo.setDestination(resultSet.getString("destination"));
                airInfo.setDate(resultSet.getString("date"));
                // 将 AirInfo 对象数据添加到列表中
                airInfos.add(airInfo);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            // 关闭资源
            closeAll();
        }
        return airInfos;
    }

    @Override
    public int update(AirInfo airInfo) {
        // 定义SQL查询语句
        String sql = "UPDATE air_info SET flightNumber=?,destination=?,date=? WHERE number=?";
        // 声明一个空数组,用于存储查询参数
        List<Object> list = new ArrayList<>();
        // 将查询参数添加到数组中
        list.add(airInfo.getFlightNumber());
        list.add(airInfo.getDestination());
        list.add(airInfo.getDate());
        list.add(airInfo.getNumber());
        // 执行查询语句
        return update(sql, list);
    }

    @Override
    public int delete(int number) {
        // 定义SQL查询语句
        String sql = "DELETE FROM air_info WHERE number=?";
        // 声明一个空数组,用于存储查询参数
        List<Object> list = new ArrayList<>();
        // 将查询参数添加到数组中
        list.add(number);
        // 执行查询语句
        return update(sql, list);
    }
}

视图模块

package com.kaikeba.task.task010404.view;

import com.kaikeba.task.task010404.bean.AirInfo;

import java.util.List;
import java.util.Scanner;

public class Views {

    // 声明一个数据输入对象
    Scanner input_in = new Scanner(System.in);

    /**
     * 欢迎语
     */
    public void welcome() {
        System.out.println("********* 欢迎使用航班信息管理系统 *********");
    }

    /**
     * 开始菜单
     *
     * @return 服务编号
     */
    public int menu() {
        // 提示用户输入服务编号
        System.out.print("请选择操作(1、列出所有航班;2、按起飞时间查询;3、按目的地查询;4、删除航班;5、更新航班;6、离开系统):");
        // 接收用户输入数据,并校验,数据校验正确,将其返回
        return checkData(1, 6);
    }

    /**
     * 校验数据
     *
     * @param start 开始数字
     * @param end   结束数字
     * @return 校验无误的数据
     */
    public int checkData(int start, int end) {
        // 声明一个整数变量用于接受用户输入的服务编号
        int num;
        // 开启 while 循环用于校验用户输入数据是否有误
        while (true) {
            // 接受用户输入的数据
            String input_text = input_in.nextLine();
            try {
                // 将用户输入的数据转换为 int 类型
                num = Integer.parseInt(input_text);
            } catch (Exception e) {
                System.out.println("输入有误,请重新输入!");
                continue;
            }
            // 判断用户输入数据是否小于初始值或大于结束值
            if (num < start || num > end) {
                System.out.println("输入有误,请重新输入!");
                continue;
            }
            // 返回数据
            return num;
        }
    }

    /**
     * 校验用户输入数据是否可转换为整数类型
     *
     * @return 用户输入数据
     */
    public int checkInt() {
        // 声明一个整数变量用于接受用户输入的服务编号
        int num;
        // 开启 while 循环用于校验用户输入数据是否有误
        while (true) {
            // 接受用户输入的数据
            String input_text = input_in.nextLine();
            try {
                // 将用户输入的数据转换为 int 类型
                num = Integer.parseInt(input_text);
            } catch (Exception e) {
                System.out.println("输入有误,请重新输入!");
                continue;
            }
            // 返回数据
            return num;
        }
    }

    /**
     * 输入时间
     *
     * @return 时间
     */
    public String enterDate() {
        System.out.print("请输入日期(格式:2021-01-01):");
        return input_in.nextLine();
    }

    /**
     * 输入目的地
     *
     * @return 目的地数据
     */
    public String enterDestination() {
        System.out.print("请输入目的地:");
        return input_in.nextLine();
    }

    /**
     * 删除航班
     *
     * @return 航班编号
     */
    public int delete() {
        System.out.print("请输入需要删除的航班编号:");
        return checkInt();
    }


    /**
     * 删除成功
     */
    public void deleteSuccess() {
        System.out.println("删除成功!");
    }

    /**
     * 删除失败
     */
    public void deleteFail() {
        System.out.println("删除失败,请检查航班编号是否存在!");
    }


    /**
     * 更新航班
     *
     * @return AirInfo 对象
     */
    public AirInfo update() {
        AirInfo airInfo = new AirInfo();
        System.out.print("请输入需要更新的航班编号:");
        airInfo.setNumber(checkInt());
        System.out.print("请输入新的航班号:");
        airInfo.setFlightNumber(checkInt());
        System.out.print("请输入新的目的地:");
        airInfo.setDestination(input_in.nextLine());
        System.out.print("请输入新的起飞日期(格式:2021-01-01):");
        airInfo.setDate(input_in.nextLine());
        return airInfo;
    }

    /**
     * 更新成功
     */
    public void updateSuccess() {
        System.out.println("更新成功!");
    }

    /**
     * 更新失败
     */
    public void updateFail() {
        System.out.println("更新失败,请检查航班编号是否存在!");
    }

    /**
     * 退出提示
     */
    public void signOut() {
        System.out.println("很高兴为您服务,期待您的再次使用!");
    }


    /**
     * 展示航班信息
     *
     * @param list 航班数据列表
     */
    public void show(List<AirInfo> list) {
        System.out.println("\t编号 \t航班号 \t目的地 \t起飞日期");
        if (list.size()>0){
            for (AirInfo airInfo : list) {
                System.out.println("\t" + airInfo.getNumber() + " \t\t" + airInfo.getFlightNumber() + " \t" + airInfo.getDestination() + " \t" + airInfo.getDate());
            }
        }else {
            System.out.println("当前航班信息为空");
        }
    }
}

调度模块

package com.kaikeba.task.task010404;

import com.kaikeba.task.task010404.bean.AirInfo;
import com.kaikeba.task.task010404.dao.AirInfoDao;
import com.kaikeba.task.task010404.dao.impl.AirInfoDaoImpl;
import com.kaikeba.task.task010404.view.Views;

import java.util.List;


public class Main {
    public static void main(String[] args) {
        // 声明一个视图对象
        Views vs = new Views();
        // 声明一个数据库对象
        AirInfoDao dao = new AirInfoDaoImpl();
        // 声明一个 List 集合用于存放数据
        List<AirInfo> data;
        // 初始化变量
        int number;
        int result;

        // 欢迎语句
        vs.welcome();

        w:
        while (true) {
            // 菜单选项,接收用户输入服务编号
            number = vs.menu();
            switch (number) {
                // 列出所有航班
                case 1:
                    data = dao.findAll();
                    vs.show(data);
                    break;
                // 按起飞时间查询
                case 2:
                    String date = vs.enterDate();
                    data = dao.findByDate(date);
                    vs.show(data);
                    break;
                // 按目的地查询
                case 3:
                    String destination = vs.enterDestination();
                    data = dao.findByDestination(destination);
                    vs.show(data);
                    break;
                // 删除航班
                case 4:
                    int num = vs.delete();
                    result = dao.delete(num);
                    if (result > 0) {
                        vs.deleteSuccess();
                    } else {
                        vs.deleteFail();
                    }
                    break;
                // 更新航班
                case 5:
                    AirInfo airInfo = vs.update();
                    result = dao.update(airInfo);
                    if (result > 0) {
                        vs.updateSuccess();
                    } else {
                        vs.updateFail();
                    }
                    break;
                // 离开系统
                case 6:
                    vs.signOut();
                    break w;
            }
        }
    }
}

四、运行截图

在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java实现航班信息查询管理系统 的相关文章

  • Grails 3.x bootRun 失败

    我正在尝试在 grails 3 1 11 中运行一个项目 但出现错误 失败 构建失败并出现异常 什么地方出了错 任务 bootRun 执行失败 进程 命令 C Program Files Java jdk1 8 0 111 bin java
  • 在 Java 中连接和使用 Cassandra

    我已经阅读了一些关于 Cassandra 是什么以及它可以做什么的教程 但我的问题是如何在 Java 中与 Cassandra 交互 教程会很好 如果可能的话 有人可以告诉我是否应该使用 Thrift 还是 Hector 哪一个更好以及为什
  • Java Swing:从 JOptionPane 获取文本值

    我想创建一个用于 POS 系统的新窗口 用户输入的是客户拥有的金额 并且窗口必须显示兑换金额 我是新来的JOptionPane功能 我一直在使用JAVAFX并且它是不同的 这是我的代码 public static void main Str
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • Java - 将节点添加到列表的末尾?

    这是我所拥有的 public class Node Object data Node next Node Object data Node next this data data this next next public Object g
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • 路径中 File.separator 和斜杠之间的区别

    使用有什么区别File separator和一个正常的 在 Java 路径字符串中 与双反斜杠相反 平台独立性似乎不是原因 因为两个版本都可以在 Windows 和 Unix 下运行 public class SlashTest Test
  • Mockito when().thenReturn 不必要地调用该方法

    我正在研究继承的代码 我编写了一个应该捕获 NullPointerException 的测试 因为它试图从 null 对象调用方法 Test expected NullPointerException class public void c
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • 在mockito中使用when进行模拟ContextLoader.getCurrentWebApplicationContext()调用。我该怎么做?

    我试图在使用 mockito 时模拟 ContextLoader getCurrentWebApplicationContext 调用 但它无法模拟 here is my source code Mock org springframewo
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • 当我从 Netbeans 创建 Derby 数据库时,它存储在哪里?

    当我从 netbeans 创建 Derby 数据库时 它存储在哪里 如何将它与项目的其余部分合并到一个文件夹中 右键单击Databases gt JavaDB in the Service查看并选择Properties This will
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview

随机推荐

  • Python实现基于朴素贝叶斯的垃圾邮件分类

    听说朴素贝叶斯在垃圾邮件分类的应用中效果很好 寻思朴素贝叶斯容易实现 就用python写了一个朴素贝叶斯模型下的垃圾邮件分类 在400封邮件 正常邮件与垃圾邮件各一半 的测试集中测试结果为分类准确率95 15 在仅仅统计词频计算概率的情况下
  • 解决Debian系统自动更新软件包的问题

    解决Debian系统自动更新软件包的问题 参考文章 1 解决Debian系统自动更新软件包的问题 2 https www cnblogs com nkqlhqc p 11978565 html 备忘一下
  • android添加依赖出现问题

    出现该问题unspecified on project app resolves to an APK archive which is not supported as a compilation dependency的情形可能是 创建了两
  • hduoj 2010

    水仙花数 Problem Description 春天是鲜花的季节 水仙花就是其中最迷人的代表 数学上有个水仙花数 他是这样定义的 水仙花数 是指一个三位数 它的各位数字的立方和等于其本身 比如 153 1 3 5 3 3 3 现在要求输出
  • 文件系统---代码层次深入分析文件系统

    文件系统对用户来说 最重要的就是创建目录 创建文件 打开文件 和 文件读写 对通常的硬盘文件系统来说 涉及硬盘的读写和硬盘空间管理 从读写文件系统层一直到通用设备层再到硬盘驱动 为了简化 我们给出最简单文件系统 通过这个例子导入文件系统的概
  • uniapp 在app和小程序端使用webview进行数据交互

    结论 app端支持比较好可以做到实时传递 微信小程序支持比较差 小程序向url传参只能通过url url向app传参需要特定时机 后退 组件销毁 分享 复制链接 触发才能收到消息 以下是代码 app端 需要使用nvue
  • 数组建堆(heapify)

    将一个数组调整为最大堆 根据堆的性质 只要保证部分有序即可 即根节点大于左右节点的值 将数组抽象为一个完全二叉树 所以只要从最后一个非叶子节点向前遍历每一个节点即可 如果当前节点比左右子树节点都大 则已经是一个最大堆 否则将当前节点与左右节
  • React中的组件以及组件实例的三大属性(详细类的复习)

    前言 我们为什么要模块化 是因为要复用编码 提高效率 react就是面向组件编程 函数式组件 函数不能中作为react的节点 就跟正常写函数一样 需要注意的是首字母需要大写 把函数封装为组件 所以把组件渲染到页面上时要使用组件的形式 因为开
  • Smart Tools 网站的架构之美

    本文将简要介绍Smart Tools工具箱网站的架构设计 带领大家一起领略架构之美 Smart Tools是一款实用的在线工具箱网站 地址 https smart tools cn 总体架构 Smart Tools工具箱网站是采用前后端分离
  • 为什么无法用数组名输出数组的的首地址

    当我们直接输出其他类型数组的数组名时 打印的都是一串地址 而字符数组打印的是字符串 为什么 因为字符串中 0 这个结束符 计算机可以知道在哪里读取结束 所以打印数组名就代表输出里面存储的字符串 其他类型没有结束符 计算机不知道从哪里停止 所
  • vue组件生命周期有哪些?vue2和vue3的生命周期图牢记于心,附面试题1

    单选题 关于vue组件生命周期说法错误的是 A 在data中的对象的某个属性和input双向绑定 修改input的值 在beforeDestroy中获取的值是修改过后的值 B ajax请求可以放在created钩子函数中 C 在create
  • Flutter每次进界面都刷新数据

    前言 需求 每次进去消息中心需要请求接口刷新数据 点击打开子界面返回也要请求数据改变状态 解决方法一 1 在initState方法加载数据 override void initState super initState 加载数据 loadD
  • git基础介绍与GitKraken操作简记

    刚开始尝试使用git的时候 简直是被弄得生不如死啊 写了半天的代码一下子被删了 那时候的心情简直想SHI 后来没办法 抽了点时间学习了一下git的原理 其实就是你的文件现在到底在什么状态 这么一个问题 由于只是了解 所以不知道具体的操作 具
  • Redis有效时间设置及时间过期处理

    本文对redis的过期处理机制做个简单的概述 让大家有个基本的认识 Redis中有个设置时间过期的功能 即对存储在redis数据库中的值可以设置一个过期时间 作为一个缓存数据库 这是非常实用的 如我们一般项目中的token或者一些登录信息
  • 打开PowerPoint提示:PowerPoint上次起送时失败。以安全模式启动PowperPoint将帮助您纠正或发现启动中的问题

    PowerPoint 无法打开 1 问题 PowerPoint 上次启动时失败 以安全模式启动PowerPoint 将帮助您纠正或发现启动中的问题 以便下一次成功启动应用程序 但是在这种模式下 一些功能被禁用 是否使用 安全模式 启动Pow
  • 数学计算模拟类问题:加法,除法和幂,注意越界问题。题 剑指Offer,Pow(x, n) ,Divide Two Integers

    数学计算的模拟类题目 往往是要求实现某种计算 比如两数相除 实现的过程中会有所限定 比如不允许乘法等等 这类题目首先要注意计算过程中本身的特殊情况 比如求相除 则必须首先反映过来除数不能为0 其次要记得考虑负数的情况 如果计算范围不单单是整
  • 简单的matlab分布式计算

    matlab的分布式计算可以理解为一台机器作为client 主控机 其他的机器分别作为计算的结点 要由client进行控制和操作 如果把单机上的 m文件直接放到client运行 是不会产生分布式计算的效果的 只相当于在主控机进行了计算 而其
  • 【JavaScript】defer和async的区别

    转载自 https segmentfault com q 1010000000640869 先来试个一句话解释仨 当浏览器碰到 script 脚本的时候 没有 defer 或 async 浏览器会立即加载并执行指定的脚本 立即 指的是在渲染
  • 华为性格测试通关指南

    一 华为性格测试关键要点 前后一致 积极乐观 吃苦耐劳 二 华为喜欢的人才性格画像 服从领导 能够按部就班按时完成工作 能够死命干活 没有太多性格 比如有野心 好胜 想当领导 坚持己见 坚持自己做事方式 别人有错当面硬刚这些类似的性格 喜欢
  • java实现航班信息查询管理系统

    一 任务概述 二 目录结构 三 详细代码 JDBC工具类模块 package com kaikeba task task010404 utils import com alibaba druid pool DruidDataSource i