入职一家初创公司第一周的血与泪

也可用于面试题:

你在工作中遇到过哪些难题?你都是怎么解决的?

问题:Springboot在Window与Linux中图片回显不出来

小程序后台管理系统,学员页面,学员编辑信息时,头像上传提示成功后,没有回显出来。返回的用户头像图片地址也是404。而且还要实现不登录的情况下,可以访问到图片资源。然后这个问题也是改了两天天。

处理过程:
第一天,想看后台报错日志,但是服务器连接不上去,因为这个服务器是只有内网才能访问,外部访问需要借助他们提供的VPN工具,用账号密码登录,还要发送短信后,才能进去里面的堡垒机。然后再在这个堡垒机平台上设置我们本地的ssh和ftp工具的本地地址。进行连接和传输文件。然后我的电脑是前同事刚刚刷机后的机子,前面用的是linux的系统,刷成了WIN10给我,我自己重新又搭了一套环境。然后第一天就是堡垒机平台登录上去,本地的ssh、ftp工具一直调不起来,连接不上内网服务器,而且用户也一直在催,也是搞到凌晨一点半
第二天,请教医院提供这个VNP的技术,说这个VPN工具是基于IE内核开发的,只能用IE浏览器。然后还是调不起来ssh工具,后面换了一台电脑尝试,是可以的,是我的电脑问题。开始正式排查,日志里面是没有报错的。上传图片后地址也是返回的,就是报的404,没有这个资源。然后我们就开始改Nginx的配置文件,考虑是不是配置路径的问题。中午还来了个被老板叫来帮忙的之前已经面过试的人过来帮忙。也没帮上什么忙,只能自己想办法。最后是在晚上凌晨开始陆续解决问题,四点钟到的家。花了半个小时总结。

最后解决映射与Shiro拦截
是找资料,发现需要在Spring的一个ResourcesConfig.java文件中,可以重写addResourceHandlers()方法,然后在里面加一个访问参数,用于映射本地路径的配置,这样他就可以访问到本地的图片了。
代码块一,如下所示:

    @Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {/** 图片访问映射地址  Linux*/
//        registry.addResourceHandler("/home/img/**").addResourceLocations("file:/home/img/");/** 图片访问映射地址 Window*/registry.addResourceHandler("/home/img/**").addResourceLocations("file:D:/dev/");}

还有一个问题是,如果我们在没有登录的情况下,去访问图片的接口地址时,是会被重定向到登录页面的。但图片一般是不用登录,就可以直接用连接访问的。然后我发现他用是Shiro,有个ShiroConfig.java的文件,在里面配置一下可以直接访问的参数路径就行了。代码块一第六行配置对应代码块二的第十六行配置。

代码块二,如下所示:

/*** Shiro过滤器配置*/
@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();// Shiro的核心安全接口,这个属性是必须的shiroFilterFactoryBean.setSecurityManager(securityManager);// 身份认证失败,则跳转到登录页面的配置shiroFilterFactoryBean.setLoginUrl(loginUrl);// 权限认证失败,则跳转到指定页面shiroFilterFactoryBean.setUnauthorizedUrl(unauthorizedUrl);// Shiro连接约束配置,即过滤链的定义LinkedHashMap<String, String> filterChainDefinitionMap = new LinkedHashMap<>();// 对静态资源设置匿名访问filterChainDefinitionMap.put("/home/img/**" , "anon");filterChainDefinitionMap.put("/favicon.ico**" , "anon");filterChainDefinitionMap.put("/ruoyi.png**" , "anon");filterChainDefinitionMap.put("/login.png**" , "anon");filterChainDefinitionMap.put("/IMvideo/**" , "anon");filterChainDefinitionMap.put("/css/**" , "anon");filterChainDefinitionMap.put("/docs/**" , "anon");filterChainDefinitionMap.put("/fonts/**" , "anon");filterChainDefinitionMap.put("/img/**" , "anon");filterChainDefinitionMap.put("/ajax/**" , "anon");filterChainDefinitionMap.put("/js/**" , "anon");filterChainDefinitionMap.put("/ruoyi/**" , "anon");filterChainDefinitionMap.put("/captcha/captchaImage**" , "anon");// 退出 logout地址,shiro去清除sessionfilterChainDefinitionMap.put("/logout" , "logout");// 不需要拦截的访问filterChainDefinitionMap.put("/system/file/**" , "anon,captchaValidate");filterChainDefinitionMap.put("/login" , "anon,captchaValidate");filterChainDefinitionMap.put("/system/SzjjCurriculum/idQuertUserCurriculum" , "anon,captchaValidate");filterChainDefinitionMap.put("/wx/minproject/**" , "anon,captchaValidate");filterChainDefinitionMap.put("/wx/getopenid/**" , "anon,captchaValidate");filterChainDefinitionMap.put("/wx/im/**" , "anon,captchaValidate");filterChainDefinitionMap.put("/wx/model/**" , "anon,captchaValidate");filterChainDefinitionMap.put("/wx/guard/**" , "anon,captchaValidate");// 系统权限列表// filterChainDefinitionMap.putAll(SpringUtils.getBean(IMenuService.class).selectPermsAll());Map<String, Filter> filters = new LinkedHashMap<String, Filter>();filters.put("onlineSession" , onlineSessionFilter());filters.put("syncOnlineSession" , syncOnlineSessionFilter());filters.put("captchaValidate" , captchaValidateFilter());filters.put("kickout" , kickoutSessionFilter());// 注销成功,则跳转到指定页面filters.put("logout" , logoutFilter());shiroFilterFactoryBean.setFilters(filters);// 所有请求需要认证filterChainDefinitionMap.put("/**" , "user,kickout,onlineSession,syncOnlineSession");shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);return shiroFilterFactoryBean;
}

注意:上传路径
上面两个代码块只是用于映射路径和访问权限的配置,还有一个需要注意的是,“返回的用户头像图片地址也是404”,这个问题排查思路是:
1、首先是排查,图片有没有上传成功,服务器或者本地磁盘有没有这个图片。
2、没有的话,是不是路径有问题,上传的路径有问题,路径推荐用绝对路径:例如:“D:/imges/“,一下其中一条用户数据的头像地址变成了这样:
3、文件确认是上传成功后,访问图片地址还是404,那就需要排查,这个用户信息中的图片地址是不是正确的,有可能是这样的:http://localhost:8099D:/imges/20211023165144/47e84d7a-7bb1-47d7-8e69-6b57148c96ee.jpg,
4、其中的“D:/imges/” 是图片存放的实际地址,发现也被拼到图片访问地址中去啦。
这种问题,我们就需要调用接口来debug调试了,也可以着重看是不是编辑用户信息时,选择完照片上传后,点击保存,保存的时候,拼错啦,
5、正确做法应该是,这个路径中,”D:/imges/“,这个拼接的参数,实际应该是需要和代码块一的图片访问映射地址对应上的。正确拼法应该是:
http://localhost:8099/home/img/20211023165144/47e84d7a-7bb1-47d7-8e69-6b57148c96ee.jpg,
6、到这里可能还是会有疑惑,一个是实际存放图片的地址,一个是域名参数,这个两个东西,我在上传头像点击保存后,具体怎么配置呢?很简单,两点,第一是用户在编辑页面的时候,点击图片 > 选择图片 > 确定上传图片后,后端需要将图片存储到实际的目录地址下。然后返回给前端一个拼接了域名参数的图片地址(可以着重对比第三点和第五点的两个地址),用户点击保存后,到数据的信息,

学到的经验:面对经验要放松,冷静、适当逃离压力区
这个问题实际上是挺简单的,也就是 一个域名参数与Shiro拦截的问题,处理了两天,主要的问题是抗压能力的问题,什么是抗压能力呢?我觉得是在客户、老板、上级、同事给到任务进度提醒或者工作质量问题的时候,能够较好的立马改成处理好,
那么,我现在就是没有处理好,我面对这种问题的时候,表现的是无助、无奈、甚至是有点自我放弃的想法与心态。还好自己是坚持了下来。这一点非常好。那么,我现在把这个问题处理了,我下次应该怎么处理呢?第一点就是,接手到问题的时候,应该将问题分析清楚,具体包括、问题的具体展现,是什么错?正常应该是什么样的?那么不正常的时候、大概是哪一步不正常。尽量分析清楚再进行排查。第二步、就是实际排查,一般都是做了什么操作然后才会造成什么样的问题,那么就在本地重现问题,然后改好问题,本地重现不了,那么肯定是数据或者环境问题。再逐一排查就行。就这两步。
其中排查问题的时候,最容易出现的问题,就是以上我出现的问题,无助、无奈、自我放弃,遇到这种情况最好的办法是。不要一直坐在电脑显示屏前,苦思冥想,或者到处寻思问诊。我觉得最好的办法是,逃离这个压力区。去上个洗手间,然后去个阳台吹吹风,好好缕一缕,是不是排查思路的问题,现在定位的问题点是不是定位错啦、没有错的话,除了现在已经想到的办法,还有没有其他立刻可以改好的方案。线上bug,最重要的肯定是效率。思路尽量捋清楚后,再回去接着干。还有就是不要加班到太晚,一个问题如果是停留了一个小时之久,一定是思路问题。加班也是没用的。还不如回去路上想一想,第二天养好精力再干。当然除了说,领导指定加班干完。不然还是回去吧。

入职一家初创公司第一周的血与泪相关推荐

  1. 入职新公司第一周的感受

    0.刚参加工作的实习生 1.经过n轮面试,终于进入了大厂 2.入职新公司第一周的感受 3.勤劳的我被工作干扰师打断了 4.摸鱼大王 5.产品经理低头是在想需求吗? 6.好家伙我还以为是作秀,原来是现实 ...

  2. ​每日一皮:​入职新公司第一周的感受...

    往期推荐 每日一皮:小公司搞中台的真实写照.. 每日一皮:这题作的没毛病... 每日一皮:上线一切正常的顺畅感就是如此赏心悦目! 每日一皮:完美的配合...虽然有点怪... 每日一皮:用户永远不知道怎 ...

  3. 新入职一家公司如何快速进入工作状态

    一年一度的金三银四跳槽大戏即将落幕,相信很多跳槽的小伙伴们已经找到了心仪的工作,即将或已经有了新的开始. 相信有过跳槽经验的小伙伴们都知道,每到一个新的公司面临的可能都是新的业务.新的技术.新的团队. ...

  4. 入职不到两周,就离职了

    入职不到两周,就离职了.因为昨天有个更好的offer给到我了. 已经和现在公司说了,开弓没有回头箭.现在心理难受. 有类似经历的.说说吧.你是怎么想的?提出离职有什么结果?

  5. 程序员入职国企,1周上班5小时,晒出薪资感叹:腾讯当CEO也不去

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:终于放弃了单调的swagger-ui了,选择了这款神器-knife4j个人原创+1博客:点击前往,查看更多 不同 ...

  6. 产品问答 | 入职一家公司,你的选择依据是什么?

    产品问答是一个全新的栏目,每周会在社区问答中选取3个认可数高的问题. 关于这些问题,欢迎留言分享你的见解,每期都会抽取优质留言送出邀请码~ -1- 入职一家公司,你的选择依据是什么? 有人说年轻人都应 ...

  7. 入职公司实习两周的一些感受

    时间过的很快,今天又是周五了,刚刚交完每周总结报告,算起来已经进入公司实习两周,稍微谈下这段时间在公司实习工作的感受吧. 首先说下自己的应聘的工作(软件开发实习生-Android应用开发方向): 本来 ...

  8. 新入职一家公司如何梳理业务?

    1.入职就要干活呀 入职新公司后,我们要一边梳理一边承接现有业务,因为在现在的企业里很难说等你梳理1-2个月才开始真正的工作.如果是正在进行的业务肯定会有需求进来,这个时候你先保证把一个一个的需求点做 ...

  9. 入职国企外包第一个星期,实感

    今天是入职的第一个星期的星期五,在来之前听说了很多前人们的介绍,说外包公司不好,说甲方的全都是大爷,甚至还有人说外包甲方还有人人身攻击,我也是抱着忐忑的心过来的,因为我在实习期,连毕业证都没有,面试时 ...

最新文章

  1. Linux系统之高级用户组和权限管理
  2. Android列表视图(List View)
  3. vue新版本和旧版本关闭eslint总结
  4. ThoughtWorks技术雷达专区
  5. 【Uva - 10047 】The Monocycle(搜索,bfs记录状态)
  6. c3p0连接池的配置和简单使用
  7. 华硕服务器性能,华硕45nm四核服务器主板突破性能瓶颈
  8. 顶尖中文大学计算机专业课程体系
  9. CISCO安全 ×××技术
  10. apache 设置404 页面_Apache和Nginx解析漏洞
  11. python实现微信打飞机
  12. php 登陆代码,php登陆代码_php实现简单用户登录功能程序代码
  13. 计算机硬盘数据存满如何开机,清理磁盘方法 让电脑开机速度加快(3-1)
  14. php股票指标,最精准的换手率选股法股票指标 通达信公式(附图)
  15. 如何返回正确与错误信息
  16. 医院分诊排队叫号系统源码
  17. 基于JAVA的类与对象做出的英雄打怪兽程序
  18. 有关nginx设置默认目录的坑
  19. 微信小程序支付SDK集成springboot
  20. 计算机考研寒假可以做什么,计算机考研寒假复习攻略,边玩边学!

热门文章

  1. 抢购倒计时自定义控件的实现与优化
  2. 基音检测算法的性能:Performance Evaluation of Pitch Detection Algorithms
  3. Day 7(云计算-zsn)
  4. 第327场周赛6284. 使字符串总不同字符的数目相等
  5. android 预览和拍照成像方向不一致,android 拍照 预览图与 照片分辨率(可视区域)不一致...
  6. arcmap坐标点生成线和面
  7. chinaren同学录的字数倒记数
  8. postman Error: connect ECONNREFUSED xxx
  9. Canva旗下图库Pexels为2000万微信公众号提供创作用图
  10. 搭建nexus私服:nexus-3.19.1-01