基于若依框架,新增时报错

基于若依框架开发,但是新增的时候报错,找了好久的资料也没解决。

img

找到这个 69行,有空指针异常报错,分析一下

img

看这里为什么有空指针

img

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7499611
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:后台管理系统布局以及跳转,点击菜单局部刷新,右侧显示对应界面
  • 除此之外, 这篇博客: 什么是缓存雪崩,缓存击穿,缓存穿透,缓存预热,缓存更新,缓存降级?中的 三、缓存穿透 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 缓存穿透是指用户在数据库查询查不到,在缓存中自然也不会有,这样就导致每次用户查询的时候在缓存查不到,在数据库也查不到,相当于进行了两次无用查询。

    缓存穿透解决方案
    (1)采用布隆过滤器。将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。

    布隆过滤器
    布隆过滤器相当于一个不怎么精确的set结构,布隆过滤器有两个基本指令,bf.add添加元素,bg.exits查询元素是否存在。要想一次添加多个元素,用bf.madd指令。
    要一次查找是否存在多个元素,用bf.mexits指令。

    布隆过滤器的原理如图:
    在这里插入图片描述
    每个布隆过滤器对应到Redis的数据结构里面就是一个大型的位数组和几个不一样的无偏hash函数,所谓无偏就是能把hash值算的比较均匀。

    向布隆过滤器中添加key值时,会使用多个hash函数对key值进行hash算法取得一个哈希值,然后对数组长度进行取模运算得到一个下标位置,每个hash函数都会得到一个不同的位置,最后得到多个位置,再把位数组的这几个位置都置为1就完成了add操作。
    向布隆过滤器中查询某个key值时,也跟add操作一样,算出来hash的几个位置,看看这几个位置是否都为1,有一个为0就说明布隆过滤器中该值不存在。如果这几个位置都是1,
    也不一定说明这个key存在,也有可能是别的key值存在导致。

    Redis中使用布隆过滤器:
    布隆过滤器可能存在误判的情况,Redis中有两个值可以决定布隆过滤器的准确率。

    • error_rate:允许布隆过滤器的错误率,这个值越低过滤器的位数组的大小越大,占用空间就越大。
    • initial_size:布隆过滤器可以存储的元素个数,当实际存储的元素个数超过这个值之后,过滤器的准确率会下降。

    Redis中有一个命令可以来设置这两个值:

    bf.reserve urls 0.01 100
    

    三个参数的含义:

    • 第一个是过滤器的名字
    • 第二个是error_rate的值
    • 第三个是initial_size的值
      使用这个命令要注意,执行这个命令之前这个过滤器应该是不存在的,如果存在的话会报错。

    (2)如果一个查询的数据为空,我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。这样下一次访问缓存就有值了,而不会继续访问数据库。

  • 您还可以看一下 吴刚老师的【吴刚】技术答疑与项目讲评视频教程(随时更新)课程中的 如何绘制拟物风格的图标?小节, 巩固相关知识点