君浩_个人页

个人头像照片 君浩
个人头像照片 个人头像照片
0
103
0

个人介绍

开发

擅长的技术

获得更多能力
通用技术能力:

暂时未有相关通用技术能力~

云产品技术能力:

阿里云技能认证

详细说明
暂无更多信息

2020年03月

正在加载, 请稍后...
暂无更多信息
  • 回答了问题 2020-03-31

    排查未知问题的思路是怎样的?

    • 调试代码
    • 找到出问题的地方
    • 简化问题(排除无关变量)(reproduce the problem to its bare minimum)
    • 写demo (排除无关变量)(reproduce the success to its bare minimum)
    • 比较调试
    • 找出问题!
    踩0 评论0
  • 提交了问题 2020-03-31

    排查未知问题的思路是怎样的?

  • 回答了问题 2020-03-31

    Redis多网卡情况时,如何指定IP?

    • 如何指定Redis-Server在Redis-Sentinel上的注册IP?
      • sentinel monitor mymaster 192.168.20.100 6379 2
    • 如何指定Dubbo Provider在 Zookeeper上的注册IP?
      • ZK地址填写内网IP
      • provider配置文件填写 host=xxx
    • 如何指定http调用通过内网网卡进行调用?
      • hosts中域名对应的IP写内网网卡IP而非公网网卡IP
    踩0 评论0
  • 提交了问题 2020-03-31

    Redis多网卡情况时,如何指定IP?

  • 提交了问题 2020-03-31

    Redis多网卡情况时,如何指定IP?

  • 回答了问题 2020-03-31

    在一个页面中的cookie,打开一个iframe后,这个cookie没有带过去,怎么办?

    • 原因:
      • nginx默认情况下没有把Host这一Header传给tomcat,导致Tomcat也没有把Host回传给页面
      • 所以jsp页面的动态生成
  • 页面中的各种 URI, 实际打开的URL是:
  • + URI
  • 改进:
    • nginx配置中一定要加 proxy_set_header Host $host; 把Host透传给tomcat
    • 注意页面中的
  • 这一元素!!
踩0 评论0
  • 提交了问题 2020-03-31

    在一个页面中的cookie,打开一个iframe后,这个cookie没有带过去,怎么办?

  • 回答了问题 2020-03-31

    maven依赖冲突问题怎么解决?

    解决

    1. 各个版本的log4j都没有 DailyRollingFileAppender.setAppend 这方法
    2. 猜测可能是很旧的log4j
    3. 猜测 uic是旧版本,更新二方包版本,问题解决
    踩0 评论0
  • 提交了问题 2020-03-31

    maven依赖冲突问题怎么解决?

  • 回答了问题 2020-03-31

    bootstrap代码http请求返回403怎么办

    2、排查结果

    原因是因为被 spring-security-web中的CsrfFilter拦截了。

    spring-security-web中CsrfFilter是这样防止csrf攻击的的:

    post和put请求:check下cookie中有没有csrfToken

    如果没有,则设置 csrfToken 如果有,则 和和Header中的 csrfToken对比。不相同返回403。

    3、防止403踩坑的应对措施,

    如果服务没有对外网暴露http接口,则设置 spring.security.csrf.enabled = false 如果服务需要外网暴露http接口,前端代码中 post和put请求的header中设置 csrfToken

    4、对中间件团队建议

    bootstrap生成的demo工程,velocity/templates/hsf.vm 里面的form 提交时设置csrf Header,防止后来人踩坑

    踩0 评论0
  • 提交了问题 2020-03-31

    bootstrap代码http请求返回403怎么办

  • 回答了问题 2020-03-31

    记无法加载CsrfFilter问题

    2、排查过程

    查看 CsrfFilter是spring-security-web-4.2.3.RELEASE的内容, 然后运行 mvn dependency:tree 查看是否包含 该pom依赖

    3、排查结果

    security-spring-boot-starter 依赖spring-security-config 依赖spring-security-web

    其中1和2的版本不一致,导致没有把CsrfFilter加进来

    4、解决办法

    在父pom中指定security-spring-boot-starterspring-security-config版本号

    踩0 评论0
  • 提交了问题 2020-03-31

    记无法加载CsrfFilter问题

  • 回答了问题 2020-03-31

    java.lang.NoClassDefFoundError: Could not initial

    原因

    类的static变量初始化失败了

    而且static成员变量第一次初始化失败能断到,后面用到这个类时无法不会再次初始化了,直接报NoClassDefFoundError: Could not initialize class

    解决方案

    设置 suspend=y,从应用启动时开始断点

    踩0 评论0
  • 提交了问题 2020-03-31

    java.lang.NoClassDefFoundError: Could not initial

  • 回答了问题 2020-03-31

    上线之后发现没有日志怎么办?

    排查过程

    • pom中新加的各种依赖 添加 exclusion。 -> 不管用
    • pom中添加各种 slf4j-log4j12 not-exist -> 不管用
    • 了解logback和slf4j的业务知识点
    • 断点排查
      • 断点 LoggerFactory.getLogger 发现logger绑定逻辑,没什么卵用
      • 断点 logger.info 逻辑,
        • 发现 logger对应的appender为空,
        • 发现对应的aai变量也为空
        • 找到对应的设置aai的地方
        • 在demo中,找到给给aai赋值的最上层,org.springframework.boot.logging.logback.LogbackLoggingSystem#configureByResourceUrl
        • 发现这里读取的 logback配置文件错误
        • 包含该配置文件的依赖为 hsf.app.spring
        • 查找包含该依赖的依赖,并exclude掉hsf.app.spring
        • 日志回复正常

    能力沉淀

    1. 找到问题实在找不到原因可以debug
      • 找到有问题的变量
      • 找到设置变量的地方 (可以通过demo来找)
      • 原先程序在设置变量的地方debug,观察各个变量是否符合预期
    踩0 评论0
  • 提交了问题 2020-03-31

    上线之后发现没有日志怎么办?

  • 回答了问题 2020-03-31

    应用不打日志问题跟进

    排查过程

    • debug 日志,发现本地代码和服务器代码不一致
    • debug 启动了demo代码,发现slf4j启动时会绑定 log的时效,如果发现多个会打日志
    • 发现启动日志中,打印错误,绑定了多个日志
    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/WEB-INF/lib/logback-classic-1.2.3.9-struct.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:r.war/WEB-INF/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:twar/WEB-INF/lib/slf4j-nop-1.7.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
    
    • 询问后得知,目前应用是用log4j 配置的,那么读取logback就是有问题的
    • 找到 logback-classic-1.2.3.9-struct.jar!/org/slf4j/impl/StaticLoggerBinder.class 的所有引入应用,发现forest 引进了
    • forest exclude这个依赖

    能力沉淀

    • 遇到问题应该先谷歌的
    • 不打印日志通常两个原因

      • slf4j 找错了实现:可以通过日志查看“binding”关键字解决
      • log4j 或 logback 找错了配置文件:可以通过日志查看”加载的日志文件“解决
    • log4j 使用

      • Logger logger = Logger.getLogger();
      • logger.info("xxx");
    • log4j 流程

      • LogManager 的static 代码块加载 log4j.xml 配置
      • LogManager 根据入参构造一个Logger对象
      • Logger 对象遍历其中的appender进行打印

      • slf4j 使用

      • Logger logger = LoggerFactory.getLogger();
      • logger.info("xxx");
    • slf4j 原理
      • StaticLoggerBinder.getSingleton().getLoggerFactory() 获取 LoggerFactory
        • LoggerFactory 由 slf4j-log4j 这个依赖提供
      • 接下来的流程和 log4j 一样
    踩0 评论0
  • 提交了问题 2020-03-31

    应用不打日志问题跟进

  • 回答了问题 2020-03-31

    hsf 反序列化失败

    排查过程

    1. 看到guava抛错,以为是guava的问题,一直跟踪 -> 不管用
    2. 看到预发hsf抛错,线上hsf没问题,以为是预发问题,直接上线 -> 线上也有问题了
    3. 拿着抛错找hsf值班,得到反馈说可能 二方包不兼容
    4. 观察日志,只有某个二方包才会抛错
    5. 联系该二方包开发,发现果然他们不兼容升级
    6. 让他们回滚,问题解决

    能力沉淀

    1. 查看exception的时候,查看完整的stacktrace很重要,因为抛错的地方不一定是原因,一定要看stacktrace的 causeBy
    2. 拿到exception 尽早去找值班,毕竟他们更了解抛错原因
    踩0 评论0
  • 正在加载, 请稍后...
    滑动查看更多
    正在加载, 请稍后...
    暂无更多信息