Java整合Redis及序列化(下)
接Java整合Redis及序列化(上)RedisConfig.java序列化配置
import com.alibaba.fastjson.support.spring.GenericFastJsonRedisSerializer;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.serializer.StringRedisSerializer;/** * Created with IDEA * Author: www.itze.cn * Date: 2021-05-18 * Email:gitlab@111.com */public class redisConfig { @Autowired priva ...
Java整合Redis及序列化(上)
场景项目使用的是SSM框架,在引入Redis之后需要对Redis中数据类型结构类型进行序列化,如果不进行序列化,那么只能存储String类型,如果存储其他类型将会出现:can’t cast to String 错误, Spring-data-Redis中提供的有StringRedisSerializer、JdkSerializationRedisSerializer序列化方式 - StringRedisSerializer:一般是对key进行序列化 - JdkSerializationRedisSerializer:一般是对value进行序列化
问题经过测试使用在SSM框架中引入Redis,以xml配置文件的方式对Redis数据类型结构进行序列化,如果key、value都是以StringRedisSerializer这种方式序列化,那么value也只能是String类型,如果将value改为JdkSerializationRedisSerializer序列化,不影响正常使用get/set,但是如果在Redis可视化窗口工具里、如RDM(Redis Desktop Manage ...
Springboot打成Jar包及引用第三方Jar包
场景先前在网上搜索一下,遇到Springboot打包包含第三方Jar包的时候的问题的不同情况还挺多的
能打成jar包能正常打包完成的情况下,通过java -jar xxx.jar运行之后,遇到的情况一般有下面两类 1.没有主清单属性 2.ClassNotFound,找不到引用第三方Jar包中类方法
不能打成Jar包不能正常打包的情况下,打包的时候就会遇到一些奇奇怪怪的错误,这种情况一般是打包的时候,之前输出过的Jar包被其他程序占用,比如你通过压缩包正在预览这个Jar包,
操作先看下工程目录 1.在resources下建立lib文件夹,将需要用的第三方Jar包放入,记得在Library正常引入 2.修改pom文件,在pom文件中添加第三方Jar依赖和配置,添加修改如下 添加到dependencies标签里面
<!-- 第三方Jar包--><dependency> <groupId>it.download</groupId> <artifactId>download</artifactId> &l ...
CentOS添加开机重启自启动脚本
环境
操作系统:CentOS
这里以开启重启自启动tomcat服务为例
1.准备autoStart.sh脚本#!/bin/sh#chkconfig: 2345 80 90#description:开机自启脚本echo "###############开机自启脚本###############"#以后台挂起的方式执行nohup /root/tomcat/bin/start.sh &
注意:脚本前三行一定要有,不然会出现“autoStart.sh不支持chkconfig”第二行chkconfig:2345 80 90 不要随便填写,规则去网上查一下2.将start.sh脚本放到服务器/etc/rc.d/init.d/目录下3.添加脚本权限cd /etc/rc.d/init.d/chmod +x autoStart.sh
4.添加脚本到开机服务chkconfig --add autoStart.shchkconfig autoStart.sh on
查看开机启动服务
chkconfig --list
OkHttp忽略SSL证书验证
场景自签的SSL证书不受信任,可通过将该证书添加至JDK密钥库,jdk信任自签证书,如果这种方法行不通,可尝试该方式
使用代码/** * Created with IDEA * Author: www.itze.cn * Date: 2021-02-24 * Email:gitlab@111.com * okhttp忽略所有SSL证书认证 * @return */public OkHttpClient getUnsafeOkHttpClient() { try { final TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager() { @Override public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType ...
Linux常用命令[更新]
传送门:CentOS 7 开启防火墙及开放指定端口 查看所有任务进程
ps -aux
查看某个进程是否在运行,java为例,可查看到PID
ps -efgrep java
查看所有正在运行的端口号
netstat -anltp
查看某个端口号的应用是否在运行,可查看到该任务的PID
netstat -anltpgrep 8080
结束掉某任务进程
kill -9 pid号
查看正在执行的任务进程占用资源情况
top
查看某个进程占用资源的情况
top -p PID号
查看磁盘容量的使用情况
df -h
查看当前路径下大文件
du -sh *
查看指定路径下文件大小
du -h /root
查看a.txt文件内容
cat a.txt
带行号的查看a.txt文件内容
cat -n a.txt
查看a.txt文件的最后20行
tail -n 20 a.txt
查看开机已经启动的服务
systemctl list-unit-filesgrep enabled
禁止开机启动某服务,以nginx为例
systemctl disable nginx
JavaGC垃圾回收机制
如何确定垃圾回收引用计数算法给使用的每个对象添加一个计数器,每次引用,计数器加1,失去引用,计数器减1,那么当计数器一段时间保持为0的时候,我们认为这个对象就可以被回收 缺点:当两个对象相互引用的时候,由于是两个对象彼此相互引用,已经没有其他引用存在,此时计数器都是1,但是并不会被回收
可达性分析算法程序把我们所有的引用关系看作一张图,从一个节点的GC ROOT开始分析引用,找到引用,然后继续寻找该引用节点的引用,直到找到所有的引用,那么没有被引用的节点,就是无用的节点
目前Java中可作为GC ROOT的对象
java虚拟机栈中的引用的对象
方法区中的类静态属性引用的对象。 (一般指被static修饰的对象,加载类的时候就加载到内存中)
方法区中的常量引用的对象
本地方法栈中的JNI(native方法)引用的对象
GC处理垃圾算法标记-清除分为标记和清除两个阶段处理内存中的对象,效率不高
复制算法将可用内存按照容量分为大小相同的两块,使用的时候只使用其中一块区域,当该区域内存满了的时候,就将该块内容中活着的对象复制到另外一块容量区域,然后清理之前用过的那块内存空间,彼此交换两块内存 ...
浅谈SpringBean生命周期
SpringBean生命周期
SpringBean生命周期的四个阶段
实例化:createBeanInstance(beanName, mbd, args)
属性赋值:populateBean(beanName, mbd, instanceWrapper)
初始化:initializeBean(beanName, exposedObject, mbd)
销毁:如果 Bean 实现了 DisposableBean 接口,则 Spring 会调用 destory() 方法将 Spring 中的 Bean 销毁;如果在配置文件中通过 destory-method 属性指定了 Bean 的销毁方法,则 Spring 将调用该方法对 Bean 进行销毁。
doCreateBean方法源码在SpringBean源码中的doCreateBean方法中能有体现,该方法依次调用createBeanInstance、populateBean、initializeBean方法
protected Object doCreateBean(String beanName, RootBeanDefinition ...
CentOS安装RabbitMQ
环境
操作系统:CentOS 7
安装准备
RabbitMQ基于Erlang开发,所以需要安装Erlang环境
Erlang官方下载地址:https://www.erlang.org/downloads
RabbitMQ官方下载地址:https://www.rabbitmq.com/download.html
下载可能会比较慢,提供一个分享链接包含Erlang和RabbitMQ
链接:https://pan.baidu.com/s/1Tmv7b0Dm8SRRF-cfYogzkw
提取码:itze
下载完之后上传至Linux服务器
Erlang安装安装依赖
yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget gtk2-devel binutils-devel
wget方式下载,下载可能会比较慢,可用上面提供的分享链接,版本相同和这个相同
wget http://erlang.org/download/otp_src_22.0.tar.gz
解压
tar -zxvf otp_ ...
新一代构建工具Gradle的安装(Window/Linux)
Windows环境
操作系统:Window 10
Java Version:1.8
Linxu环境
操作系统:CentOS 7
Java Version:1.8
安装准备
安装使用Gradle之前需要提前安装JDK环境
Linux安装JDK看这篇文章:Linux安装jdk环境
windows自行百度
下载Gradle官方下载地址:Gradle-6.7.1-bin
Windows安装将下载的Gradle安装包解压出来,解压位置可以是任意位置,尽量避免出现中文路径,然后配置环境变量,我的电脑右键属性-高级系统设置-环境变量-系统变量- 新建如图 在系统变量中Path中添加如下图,然后验证
Windows验证
Linux安装将下载的Gradle安装包上传至Linux服务器解压 解压命令
unzip gradle-6.7.1-bin.zip
添加环境变量,
vim /etc/profile
在最后面添加一行,把后面的改成你的解压路径,注意要到bin及目录
export PATH=$PATH:/Gradle/gradle-6.7.1/bin
Linux验证