/images/avatar-home.jpeg

gson java.lang.NumberFormatException: empty String

问题:

反序列化时实体类型为 int/Integer/Long 等等,而json字段为string,如下

#json  
{"a":""}  
#伪代码  
class test {  
  private Integer a;  
}

解决方法:

为gson注册一个适配器

import com.google.gson.JsonSyntaxException;  
import com.google.gson.TypeAdapter;  
import com.google.gson.stream.JsonReader;  
import com.google.gson.stream.JsonToken;  
import com.google.gson.stream.JsonWriter;

import java.io.IOException;

public class IntTypeAdapter extends TypeAdapter<Integer> {  
    @Override  
    public void write(JsonWriter out, Integer value)  
            throws IOException {  
        out.value(value);  
    }

    @Override  
    public Integer read(JsonReader in) throws IOException {  
        JsonToken peek = in.peek();  
        if (peek == JsonToken.NULL) {  
            in.nextNull();  
            return null;  
        }

        try {  
            String result = in.nextString();  
            if ("".equals(result)) {  
                return null;  
            }  
            return Integer.parseInt(result);  
        } catch (NumberFormatException e) {  
            throw new JsonSyntaxException(e);  
        }  
    }

}
private Gson gson = new GsonBuilder()  
            .registerTypeHierarchyAdapter(Integer.class, new IntTypeAdapter())  
            //.registerTypeHierarchyAdapter(Long.class, new LongTypeAdapter())  
            .create();

需要注意的是, registerTypeHierarchyAdapter 里的类型一定要准确,一开始百度出来的是用 Number,会无法进入适配器,比如 https://www.jianshu.com/p/081ab69cf9a8 ,注册的是 int和integer,但TypeAdapter 是number。

pfSense HTTP_REFERER 登录校验问题

An HTTP_REFERER was detected other than what is defined in System -> Advanced (http://x.x.x.x/services_dhcp.php). If not needed, this check can be disabled in System -> Advanced -> Admin

问题:

由于服务器有多个ip,所以我就想装一个软路由来统一控制,刚装上pfSense 就无法在web登录,google搜索了半天才搜到,还是错的……

小米内测自动答题脚本

为啥要搞这个脚本呢,是真的被恶心到了,我记得我还是从高二开始就用的小米,MIUI从以前的真香,变成BUG一堆、负优化的UI。买了个小米11,到手3个月真心被这系统恶心到了,越更新越辣鸡,什么哈曼音效砍了(MIUI 12.0.22),4600ma的电池用着和老手机没什么区别,1月份首发到手,结果现在4月初所谓的MIUI12.5还没出来,以前可以随便刷开发版,现在也要个申请,关键是tmd不让过,无法了……

国内WordPress启用谷歌验证码(noCaptcha )

众所周知,noCaptcha 的验证接口和css是被屏蔽的,所以可以使用 recaptcha.net 这个google在国内的域名。想着有轮子绝不撸代码的想法,试了几款插件,找到一款对代码修改最小的插件(或者直接不用修改,我目前使用的这款主题需要手动修改)。

Spring Boot 通过SMTP发送电子邮件(ssl/tls)

使用的技术:

  • Spring Boot 2.3.2
  • Java Mail 1.6.2
  • Maven 3
  • Java 8

1、添加依赖

spring-boot-starter-mail
<!-- send email -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

2、配置 application.properties

这里得注意下了,除了邮件服务商说明同时支持tls或者ssl,否则需要将tls/ssl分开配置

吐槽下贵州电信宽带公网IP问题

背景

自从贵州在搞大数据后,大概在18年还是17年底,贵州电信就回收了所有的家庭公网ip,当时我家里宽带的也被回收了,刚了2天,贵州电信一直把这个责任推给办宽带的营业厅和安装师傅,我所在的地区欠发达,人家安装师傅和营业厅工作人员也不知道怎么弄,一直好言好语给我打了好几次电话,最后成功拿到公网IP最关键的一句话是“以前我的宽带都有公网IP”,我就让安装师傅就把问题再反馈到上一级,后面机房的人给我打电话说弄好了,重启光猫后确实有公网了(中间有变成内网过1次,又是刚了2天)。