自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 单例模式中双重检查什么时候要加Volatile关键字

问题描述:@[TOC](伪代码如下)class Signleton{private static volatile Signleton INSTANCE ;private Signleton(){};public static Signleton getInstance(){//业务逻辑if(INSTANCE==null ){//业务逻辑 sync(this.class){ if(INSTANCE==null ){ INSTANCE=new Signle

2021-05-18 10:18:52 211

原创 面试题:hashmap和hashtable支持null值和null键么

项目场景:即使不跳槽也要多去看看面试题,学习底层源码先说结论:hashmap允许多个null值和一个null键,hashtable不允许有任何null值和null键基于jdk1.8源码分析:我们都知道Map作为集合中比较重要的键值对集合,key不能重复,所以可以初步判断hashmap和hashtable都不能同时拥有多个null键。先看hashmap public V put(K key, V value) { return putVal(hash(key), key, val

2021-03-22 17:59:31 3794

原创 当类被加载时,类的静态代码块不一定被加载解析

抄?你也要解决下问题呀。都tm的照搬网上对这个问题没有一个人讲的清楚,还都是抄别人的,十篇文章都是抄的一个人,还讲的不清楚。哎,世风日下。一、类加载定义java编译器将 .java 文件编译成扩展名为 .class 的文件也就是字节码文件。.class 文件中保存着java转换后,虚拟机将要执行的指令。当需要某个类的时候,java虚拟机会加载 .class 文件,并创建对应的class对象,将class文件加载到虚拟机的内存,这个过程被称为类的加载。二、类加载过程中用到了双亲委派模型简单来

2021-03-08 14:06:07 824 1

原创 记一次非正常关闭tomcat问题Unable to open debugger port (127.0.0.1:58946): java.net.BindException

本地项目:进程端口被占用,一般都是因为非正常关闭或者电脑卡顿造成tomcat在关闭时出现。查看问题提示的端口绑定,关闭相应进程即可C:\Users\Administrator>netstat -ano |findstr 58946 TCP 127.0.0.1:58932 127.0.0.1:58946 ESTABLISHED 11140 TCP 127.0.0.1:58946 127.0.0.1:58932 E

2021-03-02 17:22:22 7466

原创 springboot整合redis中 出现Caused by: java.lang.NoClassDefFoundError: redis/clients/jedis/util/Pool

问题描述:Caused by: java.lang.NoClassDefFoundError: redis/clients/jedis/util/Pool 原因分析:spring-boot-starter-data-redis这个redis的启动器中已经整合了lettuce连接池。如果要是用jedis连接池必须手动把里面的依赖排除掉两者区别:Lettuce 和 Jedis 的都是连接Redis Server的客户端程序。Jedis在实现上是直连redis server,多线程环境下非线程安全(

2021-02-03 15:57:25 2737 1

原创 使用docker对springboot项目打包部署,优雅脚本更新jar包

背景将自己的springboot项目打包发布到阿里云服务器上,使用docker进行部署干饭人背景发布前准备两个工作一、开始构建项目容器二、查看当前容器内的镜像1.docker images2.查看是否启动成功总结发布前准备两个工作1.创建Dockerfile文件#选定jdk版本FROM java:8#容器启动时启动创建的.sh脚本。CMD ["sh","-c","/data/rufeng.sh"]2.创建脚本文件rufeng.sh,并赋予可执行的权限,所在目录可以自定义[r

2021-01-28 18:25:06 767

原创 linux 编辑文件出现E45readonly option is set (add! to .....)

自己大学时期的老电脑跟我七年多了,舍不得扔但是又很卡。于是自己就捣鼓装了一个centos7版本的linux系统。当我去设置网络时出现了这个问题。解决方法1.先退出 q!2.退出编辑文件后,直接输入:sudo !!3.再重新进入文件编辑就ok了2.读入数据总结1.先退出 q!2.退出编辑文件后,直接输入:sudo !!3.再重新进入文件编辑就ok了代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as

2021-01-25 22:02:50 1405

原创 linux xshell 能登陆上但xftp连不上 提示无法“127.0.0.1”建立连接

项目场景:又是升级,项目交付时需要使用第三方安全软件检测当前服务和服务器是否存在漏洞。结果刚升级完tomcat和nginx。又出来一个openssh漏洞。果断升级版本问题描述:linux xshell 能登陆上但xftp连不上 提示无法“127.0.0.1”建立连接具体升级openssh操作网上一堆教程,但是坑比较多。大家升级前需要研究下openssh各种组件依赖等等,才能在升级的时候临危不乱。简单说下吧(具体看百度)1.安装telnet,一定要开启telnet服务。很重要查看是否安装tel

2021-01-19 16:35:32 2638 1

原创 多个tomcat启动一致导致端口被占用(各个tomcat实例端口没有重复)的非常见端口问题

项目场景:bug复现场景:项目进入到交付阶段,甲方给了一份安全漏洞报告,tomcat版本问题和nginx版本问题。讨论后只能升级到高版本才能解决。问题描述:tomcat7.0升级8.5.61版本。nginx1.12升级到1.18.0.其中nginx采用的是平滑升级没有任何问题(亲测有效,nginx升级采用下面大佬的教程)https://www.cnblogs.com/FengGeBlog/p/13536009.html:在tomcat版本改动中发现server.xml有一行的配置如下查询了

2021-01-14 11:10:36 848

原创 由于spring3.x版本与jdk1.8不兼容导致的java.lang.ArrayIndexOutOfBoundsException: 22272

项目场景:今天操作集合时突然想使用兰布达表达式去处理集合时,系统出现了一个启动报错,记录下现场问题描述:数组索引超出范围异常Caused by: java.lang.ArrayIndexOutOfBoundsException: 22272 (下面这几行很关键)org.springframework.asm.ClassReader.readClass(Unknown Source)at org.springframework.asm.ClassReader.accept(Unknown S

2020-12-11 11:04:06 2667 3

原创 jar包冲突导致报错IncompatibleClassChangeError: Found interface org.apache.http.HeaderElement

11.30bug修复早上过来写 了一个中转接口,一测试就报了这个玩意,心里一顿窃喜,终于可以改bug了bug说明11.30bug修复比较简单一、看了下我的这个接口官网说明二、打开idea自己所属的项目(我的idea是2020的,贼香了)1.如图总结比较简单看下报错信息:转换类不一致的错误,找到的是httpheader接口,但是期望处理的是类。一般这种就是jar冲突导致的,有的jar版本不一致,会出现里面的接口或者类重复引用,导致没有使用正确的jar路径。一、看了下我的这个接口官网说明

2020-11-30 13:43:14 579

原创 docker基础

1.#说明:由于公司部署的环境太多,每次搭建服务器的环境头疼,索性买了阿里云的域名和服务器专门用来学习docker,抚慰俺的头痛。docker前言一、docker基本组成二、安装docker(https://docs.docker.com/engine/install/centos/ 官网帮助文档)1.登录刚买的阿里云服务器看下系统配置2.基本命令总结前言与传统虚拟机区别传统虚拟机是虚拟出一整套硬件,运行一整套系统,然后在系统上安装和运行软件。而docker容器内的应用是直接在宿主机的内核中

2020-11-25 21:01:47 113

原创 linux扩容亲测

linux动态扩容,无需重启服务器哈哈哈哈,扩容开始了哈哈哈哈,扩容开始了1.本文是针对linux服务器加装硬盘,对目录/dev/mapper/centos-root扩容 的实现。重新分配目录空间也可以实现曲线救国的扩容。2.fdisk -l或者lsblk命令查看当前系统分区使用情况,vda为第一块硬盘,vdb为第二块硬盘Vda1,vda2为两个分区。此时vda只使用了100g,还有100g空余哈哈哈。3.df -h 查看已挂载的硬盘使用情况4.此时使用新硬盘vdb对当前目录进行分区fdis

2020-11-20 17:50:54 1123

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除