2023-12学习笔记

1.@NonNull要手动写无参构造器

这是一个我今天研究了很久的问题,开始不知道原因是在这里,还在那想是不是@Data覆盖了无参构造,结果当然不是。先说下解决历程

1.问题起因

通过@RequestBody接收前端报文的时候报错,大致是说我构造方法有问题

 (although at least one Creator exists): cannot deserialize from Object value
 (no delegate- or property-based Creator)

 

我确实加上了注解解决了这个问题,但是咱们不是为了弄懂问题起因吗,就接着研究

@NoArgsConstructor
@AllArgsConstructor

2.new 一下

不是怀疑构造方法有问题吗,那就写个main方法,new 一下这个对象,中间一个注解一个注解的注释,排除到底是哪个注解影响了。

直到把@NonNull删掉,才发现无参构造方法生效了

3.@NonNull注解的对象  在其形成无参构造函数时,此注解不会默认形成无参构造器(问题就出在这儿)

 以前确实踩过@Builder的坑,知道有@Builder的情况下,要手动加@NoArgsConstructor
@AllArgsConstructor注解,这次踩完坑lombok.NonNull记住了也要手动加构造器注解

2.警惕sql中的隐式转换

 1.问题起因

2.解决思路 

数据库中id是数字型,那传入字符串的时候就会做一个隐式转换。

根据隐式转换的规则,我所有的字符串的类型都会被转换为数字类型,那么我的。字符串转换为数字之后就变成了0,所以就会匹配到这个字段为0的记录。

它居然不报错,而是把非数字型的字符串,转换成了0

3.解决办法

我写了个正则限制了一下,这个字段只能传数字。

    /**
     * 校验字符串是不是整数
     * @param str
     * @return
     */
    public static boolean isNumeric(String str){
        for (int i = str.length();--i>=0;){
            if (!Character.isDigit(str.charAt(i))){
                return false;
            }
        }
        return true;
    }

3.java8中toMap时,value为null时报空指针

hashMap中,key可以为空,value也可以为空

但是今天踩得这个坑,value为空报错了

原因是toMap底层有一个merge方法,可以理解为同类项合并,就是我们每次写toMap时候都会写一个

(n1, n2) -> n1
        Map<String, String> map = list.stream().collect(Collectors.toMap(
                Node::getId,
                Node::getName,
                (n1, n2) -> n1
        ));

 在它的merge方法里边,有个判断,value为空,就抛异常

java stream collect toMap nullPointException异常_hashmap merge的时候value是空 空指针怎么办?-CSDN博客

既然知道原因了,解决办法就简单了,你可以选择过滤到value为空的,但我是这样写的

        // 不使用toMap()方法,直接在collect中构建map
        Map<String, String> map = list.stream().collect(
                HashMap::new,
                (m,node) -> m.put(node.getId(),node.getId()),
                HashMap::putAll
        );

 4.前端传递参数时,form-data 和 json 的区别

 前端传递参数时,form-data 和 json 的区别_前端formdata传参-CSDN博客

先说结论:不管你怎么组合,都不会报错,你确实可以说get请求+json报文

一般get请求,delete请求,前端提交的时候会被拼接为url问号的格式。后端用@RequestParam接

一般Post请求,Put请求,用json报文,后端用@RequestBody接

  • 16
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Net-SNMP是一个用于实现SNMP(Simple Network Management Protocol,简单网络管理协议)的工具包。学习Net-SNMP主要包括以下几个方面: 1. 编译和安装Net-SNMP:首先需要下载和解压Net-SNMP的源代码,然后通过命令行进行编译和安装。 2. 编写MIB文件:MIB(Management Information Base,管理信息库)文件用于定义被SNMP管理的对象。你可以使用文本编辑器编写MIB文件,其中包含了对象的标识符和相关信息。 3. 转换MIB文件:将MIB文件转换成.c和.h文件,这样可以在SNMP代理中使用。可以使用工具来进行这个转换过程。 4. Agent代理工程:Agent代理是一个运行在网络设备上的软件模块,它负责收集和提供设备的管理信息给SNMP管理系统。学习Net-SNMP还需要了解如何配置和运行Agent代理工程。 5. Trap机制:Trap是SNMP的一种机制,用于报告特殊事件的发生。学习Net-SNMP时需要了解如何配置Trap机制,以便及时获得网络资源的实时监控。 总之,学习Net-SNMP主要包括编译和安装Net-SNMP,编写和转换MIB文件,配置和运行Agent代理工程,以及理解Trap机制等方面。这些知识可以帮助你实现有效的网络管理软件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [SNMP网管学习笔记](https://download.csdn.net/download/qiek/6674485)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [net-snmp学习笔记<一> — 介绍](https://blog.csdn.net/prochsh/article/details/49888141)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值