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

发布时间:2022-07-02 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了入职一家初创公司第一周的血与泪脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

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

也可用于面试题:

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

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

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

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

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

    @Override
    public 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去清除session
    filterChainDefinitionMap.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,最重要的肯定是效率。思路尽量捋清楚后,再回去接着干。还有就是不要加班到太晚,一个问题如果是停留了一个小时之久,一定是思路问题。加班也是没用的。还不如回去路上想一想,第二天养好精力再干。当然除了说,领导指定加班干完。不然还是回去吧。

脚本宝典总结

以上是脚本宝典为你收集整理的入职一家初创公司第一周的血与泪全部内容,希望文章能够帮你解决入职一家初创公司第一周的血与泪所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: