【每周总结】

        这一段时间进行了对项目的考核。总体来讲,这次项目我们完成的很差劲,在我们组的bug表里有足足一百多个bug。

        这次项目写得这么差劲我们组每个人都有责任,在考核后我也进行了反思,我写项目的时候和前端的交流比较少,对前端的进度也不清楚。因为我最开始是看着牛客的页面去写的接口,没有顾虑到前端,后来他们用接口的时候我才知道他们一些是按照其他页面写得,然后中间会浪费很多时间。还有就是写接口的时候没有做好对接口的测试,在写文件上传的时候我写了对文件类型的校验,但是在写接口的时候中间一个地方不小心写错了,导致这个功能实现不了。事实上如果我在写接口的时候对接口多进行几次测试的话,这个问题就不会出现了。

文件类型判断的代码:

/**
 * @author Li
 * @Date 2022/7/3 23:37
 */
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

public class FileTypeUtils {

    // 默认判断文件头前三个字节内容
    public static int default_check_length = 3;
    final static HashMap<String, String> fileTypeMap = new HashMap<>();

    static {
        fileTypeMap.put("ffd8ff", "jpg");
        fileTypeMap.put("89504e", "png");
        fileTypeMap.put("474946", "gif");
    }
    public static boolean fileType(String type, File localFile){
        try{
            InputStream inputStream=new FileInputStream(localFile);
            String fileType = getFileTypeByMagicNumber(inputStream);
            if(type.contains(fileType))
                return true;
        }
        catch (Exception e){
            e.printStackTrace();
        }
        return false;
    }

    //获取文件类型
    public static String getFileTypeByMagicNumber(InputStream inputStream) {
        byte[] bytes = new byte[default_check_length];
        try {
            // 获取文件头前三位魔数的二进制
            inputStream.read(bytes, 0, bytes.length);
            // 文件头前三位魔数二进制转为16进制
            String code = bytesToHexString(bytes);
//            System.out.println(code);
            for (Map.Entry<String, String> item : fileTypeMap.entrySet()) {
                if (code.equalsIgnoreCase(item.getKey())) {
                    return item.getValue();
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    //获取字节流
    public static String bytesToHexString(byte[] bytes) {
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < bytes.length; i++) {
            int v = bytes[i] & 0xFF;
            String hv = Integer.toHexString(v);
            if (hv.length() < 2) {
                stringBuilder.append(0);
            }
            stringBuilder.append(hv);
        }
        return stringBuilder.toString();
    }
}

        这一段时间也一直在进行对算法的练习,真的感觉算法好难,有时候题解我都看不懂,一个算法解很长时间也解不对也是常有的事情。虽然有时候真的对算法很崩溃,但是不得不承认的一点是每次弄懂一道算法题真的会学到很多知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值