这一段时间进行了对项目的考核。总体来讲,这次项目我们完成的很差劲,在我们组的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();
}
}
这一段时间也一直在进行对算法的练习,真的感觉算法好难,有时候题解我都看不懂,一个算法解很长时间也解不对也是常有的事情。虽然有时候真的对算法很崩溃,但是不得不承认的一点是每次弄懂一道算法题真的会学到很多知识。
889

被折叠的 条评论
为什么被折叠?



