【技能实训】DMS数据挖掘项目-Day08

news2024/11/23 0:49:35

文章目录

  • 任务8
    • 【任务8.1.1】对IDataAnalyse类方法返回值使用泛型集合升级
    • 【任务8.1.2】对DataFilter类成员属性使用泛型集合升级,类型参数是有界的(DataBase的子类)
    • 【任务8.2】对LogRecAnalyse类成员属性使用泛型集合升级,相关数据集合进行泛型升级
    • 【任务8.3】对TransportAnalyse类成员属性使用泛型集合升级
    • 【任务8.4.1】对LogRecService类成员属性使用泛型集合升级
    • 【任务8.4.2】对TransportService类成员属性使用泛型集合升级
    • 【任务8.5】完善MenuDriver类,整合数据采集、数据匹配、数据显示功能

任务8

【任务8.1.1】对IDataAnalyse类方法返回值使用泛型集合升级

Object[]---ArrayList<?>

程序设计

package com.qst.dms.gather;

import com.qst.dms.exception.DataAnalyseException;

import java.util.ArrayList;

public interface IDataAnalyse<T> {
    ArrayList<?> matchData() throws DataAnalyseException;
}

【任务8.1.2】对DataFilter类成员属性使用泛型集合升级,类型参数是有界的(DataBase的子类)

DataBase[]---ArrayList<? extends DataBase>

程序设计

package com.qst.dms.gather;

import com.qst.dms.entity.DataBase;


import java.util.ArrayList;

public abstract class DataFilter<T extends DataBase> {
    // 数据集合
    private ArrayList<? extends DataBase> datas;

    // 构造方法
    public DataFilter(ArrayList<? extends DataBase> datas) {
        this.datas = datas;
    }

    // 获取数据集合
    public ArrayList<? extends DataBase> getDatas() {
        return datas;
    }

    // 设置数据集合
    public void setDatas(ArrayList<? extends DataBase> datas) {
        this.datas = datas;
    }

    // 数据过滤抽象方法
    public abstract void doFilter();
}

【任务8.2】对LogRecAnalyse类成员属性使用泛型集合升级,相关数据集合进行泛型升级

    // “登录”集合
	private List<LogRec> logIns= new ArrayList<>();
	// “登出”集合
	private List<LogRec> logOuts= new ArrayList<>();


    // 获取数据集合
	List<LogRec> logs = (ArrayList<LogRec>) this.getDatas();

    // 创建日志匹配数组
    List<MatchedLogRec> matchLogs = new ArrayList<>();

程序设计

package com.qst.dms.gather;

import com.qst.dms.entity.DataBase;
import com.qst.dms.entity.LogRec;
import com.qst.dms.entity.MatchedLogRec;
import com.qst.dms.exception.DataAnalyseException;

import java.util.ArrayList;
import java.util.List;

public class LogRecAnalyse extends DataFilter<LogRec> implements IDataAnalyse {
    // “登录”集合
    private List<LogRec> logIns = new ArrayList<>();
    // “登出”集合
    private List<LogRec> logOuts = new ArrayList<>();

    public LogRecAnalyse(List<LogRec> datas) {
        super((ArrayList<? extends DataBase>) datas);
    }

    // 实现DataFilter抽象类中的过滤抽象方法
    @Override
    public void doFilter() {
        // 获取数据集合
        List<LogRec> datas = (List<LogRec>) getDatas();
        // 根据日志登录状态统计不同状态的日志个数
        int numIn = 0;
        int numOut = 0;
        // 遍历统计
        for (LogRec data : datas) {
            if (data.getLogType() == LogRec.LOG_IN) {
                numIn++;
            } else if (data.getLogType() == LogRec.LOG_OUT) {
                numOut++;
            }
        }
        // 创建登录、登出集合
        logIns = new ArrayList<>(numIn);
        logOuts = new ArrayList<>(numOut);
        // 遍历,对日志数据进行过滤,根据日志登录状态分别放在不同的集合中
        for (LogRec data : datas) {
            if (data.getLogType() == LogRec.LOG_IN) {
                logIns.add(data);
            } else if (data.getLogType() == LogRec.LOG_OUT) {
                logOuts.add(data);
            }
        }
    }

    // 实现IDataAnalyse接口中数据分析方法
    @Override
    public  ArrayList<MatchedLogRec> matchData() throws DataAnalyseException {
        if (logIns.size() == 0 || logOuts.size() == 0) {
            throw new DataAnalyseException("没有匹配的日志数据");
        }

        // 创建日志匹配集合
        ArrayList<MatchedLogRec> matchLogs = new ArrayList<>();
        // 数据匹配分析
        for (LogRec in : logIns) {
            for (LogRec out : logOuts) {
                if ((in.getUser().equals(out.getUser()))
                        && (in.getIp().equals(out.getIp()))
                        && out.getType() != DataBase.MATHCH) {
                    // 修改in和out日志状态类型为“匹配”
                    in.setType(DataBase.MATHCH);
                    out.setType(DataBase.MATHCH);
                    // 添加到匹配集合中
                    matchLogs.add(new MatchedLogRec(in, out));
                }
            }
        }
        if (matchLogs.size() == 0) {
            throw new DataAnalyseException("没有匹配的日志数据");
        }
        return matchLogs;
    }

}

【任务8.3】对TransportAnalyse类成员属性使用泛型集合升级

    // 发货集合
	private List<Transport> transSends = new ArrayList<>();
	// 送货集合
	private List<Transport> transIngs = new ArrayList<>();
	// 已签收集合
	private List<Transport> transRecs = new ArrayList<>();


    // 获取数据集合
    List<Transport> trans = (List<Transport>) this.getDatas();


    // 创建物流匹配集合
    List<MatchedTransport> matchTrans = new ArrayList<>();

程序设计

package com.qst.dms.gather;

import com.qst.dms.entity.DataBase;
import com.qst.dms.entity.MatchedTransport;
import com.qst.dms.entity.Transport;
import com.qst.dms.exception.DataAnalyseException;

import java.util.ArrayList;
import java.util.List;

public class TransportAnalyse extends DataFilter implements IDataAnalyse {
    // 成员属性
    private List<Transport> transSends = new ArrayList<>();
    private List<Transport> transIngs = new ArrayList<>();
    private List<Transport> transRecs = new ArrayList<>();

    // 构造方法
    public TransportAnalyse(List<Transport> trans) {
        super((ArrayList<? extends DataBase>) trans);
    }

    // 实现DataFilter抽象类中的过滤抽象方法
    @Override
    public void doFilter() {
        // 获取数据集合
        List<Transport> trans = (List<Transport>) getDatas();

        // 根据物流状态统计不同状态的物流个数
        int numSend = 0;
        int numTran = 0;
        int numRec = 0;

        // 遍历统计
        for (Transport tran : trans) {
            if (tran.getTransportType() == Transport.SENDING) {
                numSend++;
            } else if (tran.getTransportType() == Transport.TRANSPORTING) {
                numTran++;
            } else if (tran.getTransportType() == Transport.RECEIVED) {
                numRec++;
            }
        }

        // 创建不同状态的物流集合
        transSends = new ArrayList<>(numSend);
        transIngs = new ArrayList<>(numTran);
        transRecs = new ArrayList<>(numRec);

        // 遍历,对物流数据进行过滤,根据物流状态分别放在不同的集合中
        for (Transport tran : trans) {
            if (tran.getTransportType() == Transport.SENDING) {
                transSends.add(tran);
            } else if (tran.getTransportType() == Transport.TRANSPORTING) {
                transIngs.add(tran);
            } else if (tran.getTransportType() == Transport.RECEIVED) {
                transRecs.add(tran);
            }
        }
    }

    // 实现IDataAnalyse接口中数据分析方法
    @Override
    public ArrayList<MatchedTransport> matchData() throws DataAnalyseException {

        if (transSends.isEmpty() || transIngs.isEmpty() || transRecs.isEmpty()) {
            throw new DataAnalyseException("没有匹配的物流数据");
        }

        // 创建物流匹配集合
        ArrayList<MatchedTransport> matchTrans = new ArrayList<>();

        // 数据匹配分析
        for (Transport send : transSends) {
            for (Transport tran : transIngs) {
                for (Transport rec : transRecs) {
                    if (send.getReciver().equals(tran.getReciver())
                            && send.getReciver().equals(rec.getReciver())
                            && tran.getType() != DataBase.MATHCH
                            && rec.getType() != DataBase.MATHCH) {
                        // 修改物流状态类型为“匹配”
                        send.setType(DataBase.MATHCH);
                        tran.setType(DataBase.MATHCH);
                        rec.setType(DataBase.MATHCH);

                        // 添加到匹配集合中
                        matchTrans.add(new MatchedTransport(send, tran, rec));
                    }
                }
            }
        }
        if (matchTrans.isEmpty()) {
            throw new DataAnalyseException("没有匹配的物流数据");
        }
        return matchTrans;
    }
}

【任务8.4.1】对LogRecService类成员属性使用泛型集合升级

// 匹配日志信息输出,参数是集合
public void showMatchLog(List<MatchedLogRec> matchLogs)

程序设计

package com.qst.dms.service;

import com.qst.dms.entity.LogRec;
import com.qst.dms.entity.MatchedLogRec;
import sun.rmi.runtime.Log;

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

public class LogRecService {
    private Scanner scanner;

    public LogRecService() {
        scanner = new Scanner(System.in);
    }

    public LogRec inputLog() {
        int id, type, logType;
        Date nowDate;
        String address;
        String user;
        String ip;
        while (true) {
            try {
                System.out.println("请输入ID标识:");
                id = scanner.nextInt();
                nowDate = new Date();

                System.out.println("请输入地址:");
                address = scanner.next();
                type = LogRec.GATHER;

                System.out.println("请输入登录用户名:");
                user = scanner.next();

                System.out.println("请输入主机IP:");
                ip = scanner.next();

                System.out.println("请输入登录状态(1表示登录,0表示登出):");
                logType = scanner.nextInt();
                if (logType == 0 || logType == 1) {
                    break;
                } else {
                    throw new IllegalArgumentException("非法的登录状态");
                }
            } catch (Exception e) {
                System.out.println("输入错误,请重新输入");
                scanner.nextLine();
            }
        }
        return new LogRec(id, nowDate, address, type, user, ip, logType);
    }

    public void showLog(List<LogRec> logRecs) {
        System.out.println("日志信息:");
        for (LogRec logRec : logRecs) {
            System.out.println(logRec);
        }
    }

    // 匹配日志信息输出,参数是集合
    public void showMatchLog(List<MatchedLogRec> matchLogs) {
        System.out.println("匹配日志信息:");
        for (MatchedLogRec matchLog : matchLogs) {
            System.out.println(matchLog);
        }
    }
}

【任务8.4.2】对TransportService类成员属性使用泛型集合升级

    // 匹配的物流信息输出,参数是集合
	public void showMatchTransport(List<MatchedTransport> matchTrans)

程序设计

package com.qst.dms.service;

import com.qst.dms.entity.MatchedLogRec;
import com.qst.dms.entity.MatchedTransport;
import com.qst.dms.entity.Transport;

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

public class TransportService {
    private Scanner scanner;

    public TransportService() {
        scanner = new Scanner(System.in);
    }

    public Transport inputTransport() {
        int transportType;
        int id, type;
        Date nowDate;
        String address, handler, receiver;

        while (true) {
            try {
                System.out.println("请输入ID标识:");
                id = scanner.nextInt();
                nowDate = new Date();
                System.out.println("请输入地址:");
                address = scanner.next();
                type = Transport.GATHER;
                System.out.println("请输入货物经手人:");
                handler = scanner.next();
                System.out.println("请输入收货人:");
                receiver = scanner.next();
                System.out.println("请输入物流状态(1表示发货中,2表示送货中,3表示已签收):");
                transportType = scanner.nextInt();
                if (transportType == 1 || transportType == 2 || transportType == 3) {
                    break;
                } else {
                    throw new IllegalArgumentException("非法的物流状态");
                }
            } catch (Exception e) {
                System.out.println("输入错误,请重新输入");
                scanner.nextLine();
            }
        }

        return new Transport(id, nowDate, address, type, handler, receiver, transportType);
    }

    public void showTransport(List<Transport> transports) {
        System.out.println("物流信息:");
        for (Transport transport : transports) {
            System.out.println(transport);
        }
    }

    // 匹配物流信息输出,参数是集合
    public void showMatchTransport(List<MatchedTransport> matchTrans) {
        System.out.println("匹配物流信息:");
        for (MatchedTransport matchTran : matchTrans) {
            System.out.println(matchTran);
        }
    }
}

【任务8.5】完善MenuDriver类,整合数据采集、数据匹配、数据显示功能

// 建立一个从键盘接收数据的扫描器
Scanner scanner = new Scanner(System.in);

// 创建一个泛型ArrayList集合存储日志数据
List<LogRec> logRecList = new ArrayList<>();
// 创建一个泛型ArrrayList集合存储物流数据
List<Transport> transportList = new ArrayList<>();

// 创建一个日志业务类
LogRecService logService = new LogRecService();
// 创建一个物流业务类
TransportService tranService = new TransportService();

// 日志数据匹配集合
List<MatchedLogRec> matchedLogs = null;
// 物流数据匹配集合
List<MatchedTransport> matchedTrans = null;

   在每个菜单中添加数据类型选择
System.out.println("请输入采集数据类型:1.日志    2.物流");
// 接收键盘输入的选项
int type = scanner.nextInt();
if (type == 1) {
System.out.println("正在采集日志数据,请输入正确信息,确保数据的正常采集!");
// 采集日志数据
LogRec log = logService.inputLog();
// 将采集的日志数据添加到logRecList集合中
logRecList.add(log);
} else if (type == 2) {
System.out.println("正在采集物流数据,请输入正确信息,确保数据的正常采集!");
// 采集物流数据
Transport tran = tranService.inputTransport();
// 将采集的物流数据添加到transportList集合中
transportList.add(tran);
}

程序设计

package com.qst.dms.dos;

import com.qst.dms.entity.LogRec;
import com.qst.dms.entity.MatchedLogRec;
import com.qst.dms.entity.MatchedTransport;
import com.qst.dms.entity.Transport;
import com.qst.dms.exception.DataAnalyseException;
import com.qst.dms.gather.LogRecAnalyse;
import com.qst.dms.gather.TransportAnalyse;
import com.qst.dms.service.LogRecService;
import com.qst.dms.service.TransportService;

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

public class MenuDriver {

    public static void main(String[] args) {
        // 建立一个从键盘接收数据的扫描器
        Scanner scanner = new Scanner(System.in);

        // 创建一个泛型ArrayList集合存储日志数据
        List<LogRec> logRecList = new ArrayList<>();
        // 创建一个泛型ArrrayList集合存储物流数据
        List<Transport> transportList = new ArrayList<>();

        // 创建一个日志业务类
        LogRecService logService = new LogRecService();
        // 创建一个物流业务类
        TransportService tranService = new TransportService();

        // 日志数据匹配集合
        List<MatchedLogRec> matchedLogs = null;
        // 物流数据匹配集合
        List<MatchedTransport> matchedTrans = null;

        // 运行菜单选择
        while (true) {
            System.out.println("请选择操作:");
            System.out.println("1. 采集数据");
            System.out.println("2. 数据匹配");
            System.out.println("3. 显示数据");
            System.out.println("4. 退出");

            // 接收键盘输入的选项
            try {
                int choice = scanner.nextInt();
                int type;
                switch (choice) {
                    case 1:
                        System.out.println("请输入采集数据类型:1.日志  2.物流");
                        // 接收键盘输入的选项
                        type = scanner.nextInt();
                        if (type == 1) {
                            System.out.println("正在采集日志数据,请输入正确信息,确保数据的正常采集!");
                            // 采集日志数据
                            LogRec log = logService.inputLog();
                            // 将采集的日志数据添加到logRecList集合中
                            logRecList.add(log);
                        } else if (type == 2) {
                            System.out.println("正在采集物流数据,请输入正确信息,确保数据的正常采集!");
                            // 采集物流数据
                            Transport tran = tranService.inputTransport();
                            // 将采集的物流数据添加到transportList集合中
                            transportList.add(tran);
                        }
                        break;
                    case 2:
                        System.out.println("请输入匹配数据类型:1.日志  2.物流");
                        // 接收键盘输入的选项
                        type = scanner.nextInt();
                        if (type == 1) {
                            System.out.println("匹配日志数据如下:");
                            // 数据匹配
                            // 创建日志数据分析对象
                            LogRecAnalyse logAnalyse = new LogRecAnalyse(logRecList);

                            // 日志数据过滤
                            logAnalyse.doFilter();

                            // 日志数据匹配分析
                            try {
                                List<MatchedLogRec> objs = logAnalyse.matchData(); // 进行数据匹配
                                // 处理匹配的日志数据
                                // 判断objs集合是否是配置日志集合
                                if (objs instanceof List<?>) {
                                    // 将集合强制类型转换成配置日志集合
                                    matchedLogs = (List<MatchedLogRec>) objs;

                                    // 输出匹配的日志信息
                                    for (MatchedLogRec log : matchedLogs) {
                                        if (log != null) {
                                            System.out.println(log);
                                        }
                                    }
                                }
                            } catch (DataAnalyseException e) {
                                System.out.println(e.getMessage());
                            }
                        } else if (type == 2) {
                            System.out.println("匹配物流数据如下:");
                            // 数据匹配
                            // 创建物流数据分析对象
                            TransportAnalyse ta = new TransportAnalyse(transportList);

                            // 物流数据过滤
                            ta.doFilter();

                            try {
                                // 物流数据分析
                                List<MatchedTransport> objs = ta.matchData();
                                // 判断objs集合是否是匹配物流集合
                                if (objs instanceof List<?>) {
                                    // 将集合强制类型转换成匹配物流集合
                                    matchedTrans = (List<MatchedTransport>) objs;

                                    // 输出匹配的物流信息
                                    for (MatchedTransport log : matchedTrans) {
                                        if (log != null) {
                                            System.out.println(log);
                                        }
                                    }
                                }
                            } catch (DataAnalyseException e) {
                                System.out.println(e.getMessage());
                            }
                        }
                        break;
                    case 3:
                        System.out.println("请输入显示原始数据类型:1.日志  2.物流");
                        // 接收键盘输入的选项
                        type = scanner.nextInt();
                        if (type == 1) {
                            // 显示日志数据
                            System.out.println("日志数据如下:");
                            try {
                                logService.showLog(logRecList);
                            } catch (Exception e) {
                                System.out.println("未录入日志数据!");
                            }

                        } else if (type == 2) {
                            // 显示物流数据
                            System.out.println("物流数据如下:");
                            try {
                                tranService.showTransport(transportList);
                            } catch (Exception e) {
                                System.out.println("未录入物流数据!");
                            }
                        }
                        break;
                    case 4:
                        System.out.println("谢谢使用!");
                        return;
                    default:
                        System.out.println("无效选项,请重新选择!");
                }
            } catch (Exception e) {
                System.out.println("非法输入,请重新输入!");
                scanner.nextLine();
            }
        }
    }
}

测试

1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/748485.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SaaS私有云智慧校园电子班牌系统源码

智慧校园APP源码人脸识别系统 电子班牌云平台源码 SaaS私有云部署模式 电子班牌又称智慧班牌&#xff0c;是打造智慧校园的必需品&#xff0c;它可以展示班级信息、时间天气、班容班貌、通知公告、考勤签到、课程安排、值日安排等信息&#xff0c;无纸化电子设备&#xff0c;后…

剑指Offer-学习计划(二)链表篇

剑指 Offer 06. 从尾到头打印链表https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/ 剑指 Offer 35. 复杂链表的复制https://leetcode.cn/problems/fu-za-lian-biao-de-fu-zhi-lcof/剑指 Offer 24. 反转链表https://leetcode.cn/problems/fan-zhuan-lian…

(37)安全开关

文章目录 前言 37.1 LED的含义 37.2 配置安全开关 37.3 使用安全开关强制更新I/O板固件 前言 一个安全开关可以用来启用/禁用电机和伺服的输出。该开关控制飞行器的"安全"状态。当处于这种状态时&#xff0c;电机被阻止运行&#xff08;除了在 Planes MANUAL 模…

2023年9月山东/厦门/南宁/深圳DAMA-CDGA/CDGP认证考试报名

据DAMA中国官方网站消息&#xff0c;2023年度第三期DAMA中国CDGA和CDGP认证考试定于2023年9月23日举行。 报名通道现已开启&#xff0c;相关事宜通知如下&#xff1a; 考试科目: 数据治理工程师(CertifiedDataGovernanceAssociate,CDGA) 数据治理专家(CertifiedDataGovernanc…

记一次在forEach循环中使用异步代码无效

背景 代码如下&#xff1a; const res1 await getOrderPackage({XM_LX: "95", // 入院检查套餐 }); const res2 await getOrderPackage({XM_LX: "98", // 入院检验套餐 });const res [...res1.data, ...res2.data] let retList: any[] []; const map: …

一万字带你吃透RocketMQ

前言 工作中很多种场景下会用到消息队列&#xff0c;消息队列简单来说就是 消息的传输过程中保存消息的容器。消息队列主要解决了应用耦合、异步处理、流量削峰等问题。今天我们来了解一下阿里开源的一款产品 RocketMQ。 RocketMQ简介 RocketMQ 是一款低延迟、高并发、高可用…

SEM代运营费用解析:为什么值得投资?

随着企业竞争的日益激烈&#xff0c;SEM&#xff08;搜索引擎营销&#xff09;作为一种重要的数字营销手段&#xff0c;已经成为各类企业不可或缺的一部分。然而&#xff0c;在进行SEM代运营时&#xff0c;很多企业都会关心费用问题。本文将为您解析SEM代运营费用的组成和投资价…

React中的key有什么作用?

一、是什么 首先&#xff0c;先给出react组件中进行列表渲染的一个示例&#xff1a; const data [{ id: 0, name: abc },{ id: 1, name: def },{ id: 2, name: ghi },{ id: 3, name: jkl } ];const ListItem (props) > {return <li>{props.name}</li>; };co…

网络安全(黑客技术)自学笔记

首先给大家简单介绍一下网络安全&#xff1a; 1.什么是网络安全&#xff1f; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、…

【星戈瑞】荧光染料BODIPY-689/725激发发射应用

BODIPY-689/725是一种荧光染料&#xff0c;BODIPY具有强烈吸收和发射荧光的有机染料&#xff0c;常用于生物成像和荧光探针应用中&#xff0c;其激发和发射波长适合于深层组织和细胞内的成像,可应用于生物成像、荧光探针、传感器等领域。 产品名称&#xff1a;氟化硼二吡咯-68…

房屋结构安全监测方案,守护城市建筑的安全底线!

近年来&#xff0c;随着城市化进程的加速和建筑业的迅猛发展&#xff0c;房屋结构安全成为社会关注的焦点。房屋在长期使用的过程中可能遭受到各种自然原因逐渐老化、人为原因的损坏导致房屋基础结构产生老化、腐蚀、折断等险情&#xff0c;进而引发结构倾斜、位移、开裂、扭曲…

flink启动报错Failed to construct kafka producer

flink local模式下启动 sink2kafka报错&#xff0c;具体报错如下 apache.kafka.common.KafkaException: Failed to construct kafka producerat org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:432)at org.apache.kafka.clients.producer.…

【JDBC】Java连接MySQL数据库

文章目录 一、数据库编程二、Java数据库编程JDBC2.1 什么是JDBC2.2 JDBC的工作原理 三、JDBC基本操作3.1 JDBC API3.2 数据库连接Connection3.3 Statement对象3.4 ResultSet对象 四、应用案例 一、数据库编程 数据库编程指的是通过编程语言与数据库进行交互和操作的过程&#…

uniapp 一些常用的公共方法

封装代码可以看这篇文章: uniapp 封装公共方法(无需每个页面引用,直接可以调用)_前端小胡兔的博客-CSDN博客uniapp 封装公共方法https://blog.csdn.net/weixin_44805839/article/details/131684296?spm1001.2014.3001.5501 常用方法: 自定义返回页面 (直接使用uni.naviga…

DuiLib中的list控件以及ListContainerElement控件

文章目录 前言1、创建list控件2、创建 ListContainerElement 元素&#xff0c;并添加到 List 控件中,这里的ListContainerElement用xml来表示3、在 ListContainerElement 元素中添加子控件 1、List控件2、ListContainerElement控件 前言 在 Duilib 中&#xff0c;List 控件用于…

【微服务】集成其他已有的模块

目录 下载新的模块信息删除git信息将已有模块复制到当前项目里面在父pom文件中&#xff0c;加上复制进的模块重新解析结果 下载新的模块信息 删除git信息 将已有模块复制到当前项目里面 在父pom文件中&#xff0c;加上复制进的模块 重新解析 结果 集成完成

第二十四章:索引的数据结构

第二十四章&#xff1a;索引的数据结构 24.1&#xff1a;为什么使用索引 ​ 索引是存储引擎用于快速找到数据记录的一种数据结构&#xff0c;就好比一本教课书的目录部分&#xff0c;通过目录中找到对应文章的页码&#xff0c;便可快速定位到需要的文章。MySQL中也是一样的道…

Java实现图片与Base64编码互转

Java实现图片与Base64编码互转 淘宝里面的html用base64转换图片&#xff0c;不知道为什么&#xff0c;不过看起来好像很美好&#xff0c;话不多说&#xff0c;直接上代码&#xff1a; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOE…

Effective Java笔记(6)避免创建不必要的对象

一般来说&#xff0c;最好能重用单个对象&#xff0c;而不是在每次需要 的时候就创建一个相同功能的新对象 。 重用方式既快速&#xff0c;又流行 。 如果对象是不可变的&#xff08; immutable ) &#xff08;详见第 17 条&#xff09;&#xff0c;它就始终可以被重用 。 作为…

Golang gui walk入门教程(一)安装walk环境

一、golang环境 Go 1.11.x or later 二、安装walk go get github.com/lxn/walk 三、安装rsrc 运行walk程序需要manifest&#xff0c;rsrc提供了这个功能 go install github.com/akavel/rsrc 安装完成后在GOPATH的bin下面会有一个rsrc.exe的可执行文件 在idea的termial输入r…