redis重大版本更新日志

为啥我会把这个redis版本摘到博客里面来,因为那都是踩坑的结果啊!!!

那就是我本地和测试环境都行,一上生产直接执行错误,具体错误信息忘记摘下来了。

后面一查版本就是2.8.x,如果原生redis肯定是可以执行脚本的。但是阿里云对redis改动了,小版本可能不支持,需要升级小版本!但是由于运维权限诸多限制,自己也查询测试生产环境也很麻烦。只需要升级小版本到支持脚本即可。

阅读全文

为开源软件选择一个合适的开源许可证(Open Source License)

之前知道开源协议这么一回事,比如Apache、Apache2,但是并不知道具体赋予了哪些权力,可能我们使用开源软件的时候只要不是用于商业用途,压根不关心使用的是什么协议。今天在B站看到一个视频讲富文本的,说到一些富文本编辑器使用的开源协议是MIT,可以作为商业使用,突然想了解一下常用的开源协议有哪些,分别有什么权限。

阅读全文

MySQL数据存在就更新,不存在就添加

最近新功能有个需求优化,避免库里重复出现多条同一个手机号记录,以手机号作为主键并创建唯一索引,操作是添加条目但是又可能存在此唯一项,所以想到存在即更新。

1 ON DUPLICATE

INSERT 语句的一部分,如果指定 ON DUPLICATE KEY UPDATE ,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE,如果不会导致唯一值列重复的问题,则插入新行。

阅读全文

Tomcat日志catalina.out自动分割(linux)

Tomcat服务器长时间运行,catalina.out文件越来越大,会导致服务器io性能降低。虽然tomcat有默认的日志分割功能,能每天自动生成类似catalina.2018-10-08.log的文件,但是默认catalina.out文件却一直增长,到一定大小时很占磁盘空间,影响性能,且会报错。

阅读全文

JVM系列(一):JVM内存组成及分配

按照官方的说法:

Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。在JVM中堆之外的内存称为非堆内存(Non-heap memory)。

可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给 自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法 的代码都在非堆内存中。

阅读全文

JVM优化参数

-server:开启服务端模式。

  1. -client、-server这两个参数用于设置虚拟机使用何种运行模式,client模式启动比较快,但运行时性能和内存管理效率不如server模式,通常用于客户端应用程序。相反,server模式启动比client慢,但可获得更高的运行性能。

阅读全文

Java服务程序CPU飙升排查,找出死循环代码

windows环境下CPU飙升问题

线上某台runtime机器(windows Server)cpu报警,这种情况初步就是代码里面死循环了,先把机器下线了保证不再有新的任务分配进来,然而cpu使用依然不降这是正常的因为程序未结束死循环一直在运行。

阅读全文

ApacheTomcat指定启动依赖的Java版本

项目原来使用的jdk版本位1.7,导致机器上很多tomcat都是依赖jdk1.7版本。现在部分项目需要升级jdk1.8,则单独指定启动jdk路径

1. windows环境

找到bin下的setclasspath.bat/catalina.bat文件,在文件的开始处添加如下代码:

阅读全文