Captain's Geek-Island Captain's Geek-Island
首页
生活如斯乎
架构师的路
  • 分类
  • 标签
  • 归档
沉洋官网 (opens new window)

SleepyOcean

走,找新大陆去
首页
生活如斯乎
架构师的路
  • 分类
  • 标签
  • 归档
沉洋官网 (opens new window)
  • 计算机基础

  • 并发专题

  • 性能调优专题

  • 工具专题

  • 源码框架专题

  • 设计模式

  • 分布式专题

  • 实战专题

    • QA展板
      • Q1:Spring-security本地可直接访问的接口线上访问接口却需要login的问题
        • 1)现象
        • 2)排查
        • 3)解决方案
        • 4)原理解析
      • Q2:实现了Serializable接口依然报NotSerializableException错
        • 1)解决方案:
        • 2)一个栗子:
      • Q3:JPA一对多双向映射,结果对象相互迭代造成堆栈溢出问题方法
        • 1)问题
        • 2)分析
        • 3)解决方案:
      • Q4: idea 无法下载maven source的问题
      • Q5: 前端浏览器 navigator.clipboard is undefined,获取不到clipboard
    • ES高可用集群搭建
    • Mysql主备复制架构
    • docker搭建基础中间件
    • docker部署微服务
    • k8s集群搭建
    • dockerhub私有容器仓库搭建
    • docker搭建sonarQube
    • docker搭建Confluence
    • docker搭建GitLab
    • Electron开发跨平台应用指南
    • Docker搭建ElasticSearch开发环境
    • Docker搭建Jenkins
    • Docker搭建ELK
    • Docker搭建nocas-server
    • Docker搭建各类Paas服务
  • 技术杂文

  • 云原生专题

  • 大数据分析专题

  • 前端专题

  • 运维专题

  • 经验专题

  • 面试专题

  • 软实力专题

  • 架构师的路
  • 实战专题
SleepyOcean
2020-04-07

QA展板

文章收录了自己在开发中遇到的各类问题的探究和解决方案。

# Q1:Spring-security本地可直接访问的接口线上访问接口却需要login的问题

排查 Spring-security 本地可直接访问的接口线上访问接口却需要 login 的问题

# 1)现象

  • 本地:/security/role/test无权限接口本地访问可直接返回结果

  • 线上:/security/role/test无权限接口线上访问报401,跳转到login

# 2)排查

  1. 排查是否是线上环境问题:本地通过jar包方式启动,测试结果和线上一样。初步排除线上环境影响。
  2. 排查自定义Security配置是否生效:在自定义配置的方法中加入log日志。本地jar包启动未打印日志。确认是自定义Security配置未生效。
  3. 深入排查:
    1. 去除so-security-starter模块中的启动类,报repository找不到的错(去除启动类后,无法扫描到com.sleepy.security包下的repository)
    2. 在so-blog-service模块的启动类中添加扫描so-security-starter模块中的entity和repository的注解配置,正常运行。

# 3)解决方案

  1. 去除so-security-starter模块中的启动类
  2. 在so-blog-service模块的启动类中添加扫描so-security-starter模块中的entity和repository的注解配置
@EnableJpaRepositories(basePackages = {"com.sleepy"})
@EntityScan(basePackages = {"com.sleepy"})
...
1
2
3

# 4)原理解析

未完待续... ...

# Q2:实现了Serializable接口依然报NotSerializableException错

# 1)解决方案:

把实现Serializable的内部类提取到外部即可

# 2)一个栗子:

  1. 原始代码
public class House implements Serializable {
    private String address;
    private String area;
    ...
    
    public class Room implements Serializable {
        private String area;
        private String owner;
        
        ...
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
  1. 提取内部类到外部
public class House implements Serializable {
    private String address;
    private String area;
    ...
}
1
2
3
4
5
public class Room implements Serializable {
    private String area;
    private String owner;
    
    ...
}
1
2
3
4
5
6

ps:不建议内部类实现Serializable接口

# Q3:JPA一对多双向映射,结果对象相互迭代造成堆栈溢出问题方法

# 1)问题

JPA 在双向映射时,会相互包含对方的实例,相互引用,造成递归迭代,堆栈溢出(java.lang.StackOverflowError)。

# 2)分析

在后端向前端传递的时候会将数据序列化,转为json,这时会出现循环引用造成堆栈溢出

# 3)解决方案:

解决方法就是在==转换json时忽略循环字段==。首先确定项目使用的json包是哪一个(jackjson 或 fastjson),寻找相应的注解忽略某一字段。

jackson包对应的相关注解: @JsonIgnoreProperties、@JsonIgnore

fastjson包对应的相关注解: @JSONField(serialize = false)

注意: 在使用注解时一定要注意引入的包是否正确,如果和自己使用的json包不对应的话,注解是不生效的。

附代码:

// 我的项目使用的alibaba的fastjson包

@Data
class SOStudent {
    
    
    // ... ...省略其他字段
        
    @ManyToOne(cascade = {CascadeType.REFRESH}, fetch = FetchType.LAZY)
    @JoinColumn(name="classId")
    @JSONField(serialize = false)
    private SOClass class;
}

@Data
class SOClass {
    @Id
    @GeneratedValue
    private Long id
        
    // ... ...省略其他字段
        
	@OneToMany(cascade={CascadeType.ALL},fetch = FetchType.EAGER)
    private List<SOStudent> students;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# Q4: idea 无法下载maven source的问题

确认是否是settings.xml中的仓库失效了。

如果没有失效则执行以下maven命令即可

mvn dependency:resolve -Dclassifier=sources
1

# Q5: 前端浏览器 navigator.clipboard is undefined,获取不到clipboard

需要在安全网络下进行才可以,localhost或者https,127.0.0.1是本机域名是安全的,所以可以获取到clipboard,谷歌现在很多api都是必须要求https的情况的

#QA
上次更新: 2021/12/28, 07:12:00

← Kafka - 分布式消息 ES高可用集群搭建 →

新鲜出炉
01
记录 - 快速搭建自动化部署平台
04-13
02
Docker搭建各类Paas服务
03-01
03
系统配置 - Android TV配置
02-12
更多文章>
Copyright © 2019-2022 SleepyOcean | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式