java,八股,cv,算法——双非研0四修之路day4
目录
Detection-Friendly Dehazing: Object Detection in Real-World Hazy Scenes
昨日总结
- 对JWT、HttpClientUtil、Spring-cache系统学习,完成苍穹外卖缓存菜品、套餐功能,实现查看、清空购物车功能。
- 背诵小林coding--Java基础面试题部分(3/4)
- 对文献做了总结报告
- 代码随想录--有序数组的平方
今日计划
- 继续跟进项目,学习反射、Java代理方式(代理对象)
- 继续背诵小林coding--Java基础面试题部分(4/4)
- 开始阅读新一篇文献
- 代码随想录--长度最小的子数组 | 滑动窗口
算法——有序数组的平方
给你⼀个按⾮递减顺序排序的整数数组 nums,返回 每个数字的平⽅组成的新数组,要求也按⾮递减顺序排序。
示例:
输⼊:nums = [-7,-3,2,3,11]
输出:[4,9,9,49,121]
可以利用暴力解(先平方,在排序,但最快的排序快排算法也要O(nlogn))
利用下面的双指针方法解决问题,时间复杂度O(n)
//利用双指针法解决,时间复杂度O(n)
int* sortedSquares(int* nums, int numsSize, int* returnSize) {
int k = numsSize-1;
int *res=(int *) malloc (sizeof(int) * numsSize); //动态创建数组
int i , j;
for(i = 0,j = numsSize-1; i <= j;){
if(nums[i] * nums[i] > nums[j] * nums[j]){
res[k--] = nums[i] * nums[i];
i++;
}else{
res[k--] = nums[j] * nums[j];
j--;
}
}
*returnSize = numsSize;
return res;
}
JWT
定义
JSON Web令牌(jwt)定义了各方之间安全传输信息的方式,该信息以JSON形式呈现。
常用场景
1.身份验证
JWT 可以在用户登录成功后,由服务器生成并返回给客户端,客户端将其存储在本地。之后,客户端在每次请求时将 JWT 包含在请求头中,服务器通过验证 JWT 的有效性来确认用户身份。
2.信息交换
JWT 可以在不同的系统或服务之间安全地交换信息。由于 JWT 是基于 JSON 格式的,它可以包含任意的结构化数据。
3.授权认证
在微服务架构中,各个服务之间需要进行相互调用。JWT 可以用于服务间的身份验证,确保只有合法的服务才能调用其他服务的接口。
应用流程
- 前段用户发送POST请求
- 后端收到请求后,生成JWT Token返回给前端,前端将它保存在本地浏览器中。
- 当前端再次请求时,请求头中会携带JWT Token
- 后端会对其进行验证,验证通过后,返回给前端结果

HttpClientUtil
HttpClient是高效、功能丰富的支持HTTP协议 的客户端编程工具包,用于发送HTTP请求、接收响应数据。主要应用在微信服务、地图服务、短信服务、天气预报等情况下,服务器需要通过HttpClient发送请求。
Srping-cache:实现基于注解的缓存功能
- 首先检查pom文件中是否导入相关依赖
- 在启动类添加@Enablecacheing缓存注解
@EnableCaching//开发缓存注解功能
- 在相应的方法上添加对应的注解(如下表)(注意注解传入的参数 )

例如
@CacheEvict(cacheNames = "setmealCache",allEntries = true) //删除所有的缓存
昨日八股联想答案
- 面向对象的设计原则
- 单一职责原则(SRP):一个类只负责一项职责。
- 开放封闭原则(OCP):软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。例如定义一个图形类,让不同的图形继承它,而不需要修改图形类本身。
- 里氏替换原则(LSP):子类可以无缝替换父类,在修改或扩展子类时,不会对使用父类的其他代码产生影响。
- 接口隔离原则(ISP):接口应该小而精,实现底层与高层模块的解耦。
- 依赖倒置原则(DIP):高层模块和低层模块之间的依赖关系应该通过抽象(指接口、抽象类)来建立,而不是直接依赖于具体实现类。
- 重载和重写的区别
重载:同一方法名有不同的参数
重写:子类重写父类中的方法,方法名和参数一致
- 抽象类、普通类和接口的区别
抽象类:不能被实例化的类,使用 abstract 来定义,通常作为基类,定义共同特征和行为
普通类:可以被实例化的类,直接创建对象来使用,包含成员变量和成员方法
接口:一种特殊的抽象类型,它只包含方法的声明,不包含方法的实现。
- 静态变量和静态方法
静态变量:指在类中用static声明的变量,在类被加载时初始化
静态方法:在类中用static声明的方法,可以在没有创建类实例的情况下调用,可以直接调用其他静态变量和静态方法,但不能直接访问非静态成员。
- 深拷贝和浅拷贝
深拷贝:指在复制对象的同时,将对象内容也复制一份,而不是共享引用。
浅拷贝:指只复制对象本身和其内部的值类型字段,但不会复制对象的内容。

今日八股联想
- 什么是泛型
- Java创建对象的方式
- 什么是反射
- 讲一下Java注解的原理
- 介绍一下异常
- String、StringBuffer、StringBuilder的区别和联系
文献阅读
文章题目:
Detection-Friendly Dehazing: Object Detection in Real-World Hazy Scenes
利于检测的去雾技术:现实世界雾天场景中的目标检测
创新点:
- 对BAD-Net架构的理解。采用双线性分支结构。一个分支直接提取朦胧特征,另一个分支提取去雾模块处理后的特征。同时设计了注意力融合模块来提取融合特征。之后,拼接后的特征被发送到检测模块进行边界框预测。为了进一步改进利于检测的去雾操作,BAD-Net以一个间隔在原始模糊和提炼后的数据集上迭代训练。
- 在去雾模块上,基于AOD-Net,通过不同膨胀率的卷积来实现。
- 在检测模块上,作者采用了二阶段检测Faster-RCNN,而没有采用yolo。模糊图像中可能存在很多小目标,Faster - RCNN采用多层次的特征融合,在模糊情下小目标检测方面有更好的表现。
- 在特征融合模块只要是解决去雾后的特征与原始朦胧特征不一致的问题。采用分别对高度和宽度维度执行平均池化,对雾度和去雾度特征进行逐点添加,以获得融合特征。
总结
更多推荐
所有评论(0)