目录

 昨日总结

今日计划

算法——有序数组的平方

JWT

定义

常用场景

应用流程

HttpClientUtil

Srping-cache:实现基于注解的缓存功能

昨日八股联想答案 

今日八股联想

文献阅读

文章题目:

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) //删除所有的缓存

昨日八股联想答案 

  • 面向对象的设计原则
  1. 单一职责原则(SRP):一个类只负责一项职责。
  2. 开放封闭原则(OCP):软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。例如定义一个图形类,让不同的图形继承它,而不需要修改图形类本身。
  3. 里氏替换原则(LSP):子类可以无缝替换父类,在修改或扩展子类时,不会对使用父类的其他代码产生影响。
  4. 接口隔离原则(ISP):接口应该小而精,实现底层与高层模块的解耦。
  5. 依赖倒置原则(DIP):高层模块和低层模块之间的依赖关系应该通过抽象(指接口、抽象类)来建立,而不是直接依赖于具体实现类。
  • 重载和重写的区别

        重载:同一方法名有不同的参数

        重写:子类重写父类中的方法,方法名和参数一致

  • 抽象类、普通类和接口的区别

        抽象类:不能被实例化的类,使用 abstract 来定义,通常作为基类,定义共同特征和行为

        普通类:可以被实例化的类,直接创建对象来使用,包含成员变量和成员方法

        接口:一种特殊的抽象类型,它只包含方法的声明,不包含方法的实现。

  • 静态变量和静态方法

        静态变量:指在类中用static声明的变量,在类被加载时初始化

        静态方法:在类中用static声明的方法,可以在没有创建类实例的情况下调用,可以直接调用其他静态变量和静态方法,但不能直接访问非静态成员。

  • 深拷贝和浅拷贝

        深拷贝:指在复制对象的同时,将对象内容也复制一份,而不是共享引用。

        浅拷贝:指只复制对象本身和其内部的值类型字段,但不会复制对象的内容。

今日八股联想

  • 什么是泛型
  • Java创建对象的方式
  • 什么是反射
  • 讲一下Java注解的原理
  • 介绍一下异常
  • String、StringBuffer、StringBuilder的区别和联系

文献阅读

文章题目:

Detection-Friendly Dehazing: Object Detection in Real-World Hazy Scenes

利于检测的去雾技术:现实世界雾天场景中的目标检测

问题1:在图像降质的情况下,影响了后续检测任务的特征提取与分析,该如何做。
针对方案:过往大多方法先恢复图像再进行检测,而作者提出的方法是将恢复与检测联合起来优化模型训练。探索在没有明确图像标签的情况下,将低级别去雾和高级别检测之间建立正相关性。
问题2:如何让回复和检测的联合模型具备高性能和快速手收敛
针对方案:对此,作者引出了BAD-Net双分支注意力架构,他有效的结合了去雾模块和检测模块。同时,设计了一个注意力融合模块,将二者特征充分融合,增强检测目标特征的互补性。
问题3在面对各种不确定性因素时,该模型如何保持稳定、可靠的性能和输出结果
针对方案 :引入有雾环境下的自监督鲁棒损失指导去雾模块的特征学习,它限制了去雾图像的目标特征与模糊图像的目标特征的相似性,从而增强模型的鲁棒性。 同时,采用间隔迭代训练策略,让模块在不同的迭代阶段进行更新和学习。

创新点:

核心架构上:提出了一种联合架构BAD-Net,以端到端的方式连接去雾模块和检测模块,这种架构设计使得去雾和检测能够在一个整体框架下协同工作,提高了处理效率和检测准确性。
分支结构与融合模块上:设计了两个分支结构,并采用注意力融合模块。该模块可以充分结合有雾和去雾特征,当去雾模块表现不佳时,能减少其对检测模块的不良影响,增强了系统的鲁棒性。
损失函数上:引入了自我监督的雾霾鲁棒性损失,使检测模块能够处理不同程度的雾霾,提升检测性能。
训练策略上:提出了一种区间迭代数据细化训练策略来指导弱监督下的去雾模块学习。
  • 对BAD-Net架构的理解。采用双线性分支结构。一个分支直接提取朦胧特征,另一个分支提取去雾模块处理后的特征。同时设计了注意力融合模块来提取融合特征。之后,拼接后的特征被发送到检测模块进行边界框预测。为了进一步改进利于检测的去雾操作,BAD-Net以一个间隔在原始模糊和提炼后的数据集上迭代训练。
  • 在去雾模块上,基于AOD-Net,通过不同膨胀率的卷积来实现。
  • 在检测模块上,作者采用了二阶段检测Faster-RCNN,而没有采用yolo。模糊图像中可能存在很多小目标,Faster - RCNN采用多层次的特征融合,在模糊情下小目标检测方面有更好的表现。
  • 在特征融合模块只要是解决去雾后的特征与原始朦胧特征不一致的问题。采用分别对高度和宽度维度执行平均池化,对雾度和去雾度特征进行逐点添加,以获得融合特征。

总结

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐