concat连接字符问题
前言
最近项目上定时任务里遇到执行失败的情况,由于用的xxljob,详细的异常信息并没有打印出来,只是说有一个地方空指针了,由于没有现场环境,看了一遍代码也无法定位问题是出在哪里,后来将代码加上try catch之后,找到了问题所在
concat
这个是常用的一个字符连接函数,但是用不好的话可能回造成空指针问题,为什么会空指针呢,我们来看一下concat函数的源码
1 | public String concat(String str) { |
可以看到,第二行中的str.length(),如果str是null,那肯定就空指针异常了
解决
- 如果一定要用concat,可以使用三元符判断不为空再连接,否则返回空字符串“”
- 换别的函数,比如StringBuilder
- 或者用封装好的工具类,如Hutool里的StrUtil工具类
总结
使用场景里一定要确保连接的字符串都不为null的才可以用,否则请做判空处理或者使用其他函数,亦或者使用封装好的第三方工具类
dM中docker开放2375端口
云服务器组建公司和家庭局域网
前言
最近不满足frp的内网映射,因为frp只能单独的将某个端口映射出来,需要多个端口就需要映射多个,很是麻烦,所以研究了一下open组建,从晚上9点一直研究到凌晨4点愣是没研究透彻,只能做到客户端和客户端之间的通行,无法在一个客户端访问另一个客户端内网的其他机器,第二天不甘心,又研究了大半天,终于研究透彻了,核心概念就是路由需要配置好,需要理解了路由的走向,才能正确配置,下面记录一下
组建条件
- 家庭V客户端,以下统称C1
- 云服务器V服务端,以下统称S
- 公司内网服务器,以下统称C2
脚本
openVPN 手工搭建非常复锁,所以可以采用脚本快速搭建,以下推荐两个脚本
脚本1下载地址
脚本2下载地址(推荐)
安装
解决jar包启动慢
前言
最近再项目上发现一个问题,就是打包jar后,放到服务器上启动很慢,系统是centos,以前还真没遇到过这种问题,网上的大多都是让改jdk里面java.security random改成urandom 或者./random,发现没什么用,后来又找到另外一种有效的方法
解决办法
修改host文件,把主机名和127.0.0.1映射起来
1 | # 首先找到 hostname,在终端输入hostname,输出的比如 vm-centos |
经过以上操作,启动速度恢复正常,猜测可能是jar包服务用到了hostname,但是没有映射到本地,可能出现超时之类的
linux挂起、恢复进程
git提交忽略文件不生效
自签名https证书
SpringBoot在util工具类中使用注入
前言
在项目中很多情况下会在util等工具类中使用到其他注入的bean,如dao,service等
实现
首先我们在工具类加入@Component注解,我们再声明要注入的类,最后使用set方式autowired注解实现
1 | @Slf4j |
Android Room数据库简单使用
前言
最近一个项目因为大部分时间是离线使用,只在联网时提交和更新数据,所以需要用到本地数据库!之前一直用的是realm数据库,相对来说也是不错的,读写的性能还是还能很强悍的!但是最近项目完全使用了kotlin框架,而正好谷歌官方的room数据库也是使用kotlin,所以就记录下使用过程!
引入依赖
1 | dependencies { |