自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM内存溢出的定位与分析

一、内存溢出的初步认识及分析如果出现内存溢出,首先我们先定位到发生内存溢出的环节,并且进行分析,是正常还是非正常情况,如果正常需求,则考虑增加JVM的内存设置,如果非正常需求,那么要对代码进行修改,修复bug定位方法:借助jmap与MAT工具进行定位分析jstat命令可查看堆的使用情况及垃圾回收情况。用法:jstat –gcutil pidS0 S1 E 为新生代O为老年代M是元区间(方法区)YGC新生代执行次数YGCT新生代执行时间FGC老年代执行次数FGCT老年代执行时间G.

2021-07-09 11:10:47 417

原创 线程池原理(一)

一.线程池的实现原理线程池就是一个线程集合workerSet和一个阻塞队列workQueue,当用户向线程池提交一个任务(线程)时,线程池会先将任务放入workQueue,workerSet中的线程会不断的从workQueue中获取线程然后执行.当workQueue中获取线程然后执行,当workQueue中没有任务的时候,worker就会阻塞,直到队列中有任务了就去出来继续执行.二.线程池的几个主要的参数1.corePoolSize:线程池基本大小,规定线程池有几个线程(worker)在运行2.

2021-05-24 15:01:18 169

原创 分布式锁的三种实现方式

分布式锁三种实现方式:基于数据库实现分布式锁;基于缓存(Redis等)实现分布式锁;基于Zookeeper实现分布式锁;一, 基于数据库实现分布式锁悲观锁利用select … where … for update 排他锁注意: 其他附加功能与实现一基本一致,这里需要注意的是“where name=lock ”,name字段必须要走索引,否则会锁表。有些情况下,比如表不大,mysql优化器会不走这个索引,导致锁表问题。乐观锁所谓乐观锁与前边最大区别在于基于CAS思想,是不具有互斥性,不

2021-05-20 14:40:53 121

原创 Java使用spring中设计模式

设计原则:1.单一原则:一个类只负责一个职责只有逻辑足够简单,才可以再代码级别上违反单一职责的原则,只有类中方法数量足够少,才可以再方法级别上违反单一职责的原则可以降低代码的复杂度,一个类只负责一项职责,其他逻辑肯定要比负责多想职责简单的多,提高类的可读性,提高系统的可维护性变更引起的风险降低,变更是必然的2.里氏替换原则 === LSP :面向对象设计的基本原则之一.子类可以扩展父类的功能,但是不能改变父类原有的功能继承复用的基石,只有当衍生类也能够在基类的基础上增加新的行为,软件单位的功.

2021-04-28 20:40:16 130

原创 MySQL分库分表之易懂版(原则、方案、策略及难点)

分库分表:mysql表中最大的数据量为2000万,优化后可以最大达到5000万原则:1.能不分就不分2.数据量太大,正常运维影响正常业务访问3.表设计不合理,需要对某些字段垂直拆分4.某些数据出现无穷增长5.安全性和可用性考虑6.业务耦合性考虑方案:1.垂直拆分 大表拆小表 根据列(字段)进行拆分优点:数据简单维护缺点:主键出现冗余,需要管理冗余列2.水平拆分 某种策略将数据分片来储存 分为库内分表和分库分表两部分,每篇数据会分散到不同的MySQL表或库里面,达到分布式效果..

2021-04-27 19:38:54 325

转载 数据库分库分表之MyCat系列

数据库分库分表之MyCat系列1.什么事MyCat?MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看做是一个数据库代理,用mysql客户端工具和命令行访问,而其后端可以用mysql原生协议与多个mysql服务器通信,也可以用JDBC协议和大多数主流数据库服务通信,其核心功能是分表分库,即将一个大表分割成N个小表,存储在后端Mysql服务器里或者其他...

2021-04-22 12:23:36 61

原创 springcloud学习之----五大核心组件分享

springcloud学习之----五大核心组件分享三年java,一直都是在接触流量较小的项目,大部分是以springboot框架为主的,很少能够使用到springcloud,最近开始尝试学习,分享一下springcloud学习心得。本篇主要是讲一下对springcloud五大核心组件的理解,欢迎指正。五大核心组件springcloud所谓的五大核心组件,是指以下五个:Eureka :服...

2021-04-22 12:22:55 311

原创 redis新面试题整理及面试作答

一、redis的数据结构有哪些,及使用场景String-字符串 String类型是二进制安全的,可以包含任何数据,场景:1.缓存 2计数器 3 session Hash-键值对结构 场景:1.缓存 比string节省空间,存用户信息,视频信息等 list -链表 有序 场景: 1.timeline 如:微博的时间轴 set集合 无序 场景: 1.标签 2.点赞 3.收藏 zset有序集合 场景: 1.排行榜 ,如小说排行榜二、redis緩存雪崩、击穿、穿透原因及解决方案雪崩:原因...

2021-04-22 12:13:48 77

原创 为什么要同时重写hashcode和equals

如果我们对一个对象重写了equals 方法,意味着只要对象的成员变量值都相等那么equals 就返回true ,但在不重写 hashcode 方法的情况下,当我们重新 new 了一个新对象。此时,当原对象.equals(新对象)等于true时,两者的 hashcode 却是不一样的,由此会产生了理解的不一致,也违反了equals 与 hashcode的约定规则。...

2021-04-14 11:04:10 107

原创 hashmap的原理,容量为什么是2的幂次

HashMap基于Map接口实现,元素以键值对的方式存储,并且允许使用null 建和null 值, 因为key不允许重复,因此只能有一个键为null,另外HashMap不能保证放入元素的顺序,它是无序的,和放入的顺序并不能相同。HashMap是线程不安全的。HashMap和Hashtable的区别:两者最主要的区别在于Hashtable是线程安全,而HashMap则非线程安全。Hashtable的实现方法里面都添加了synchronized关键字来确保线程同步,因此相对而言HashMap性能会高

2021-04-14 10:45:34 162

原创 java 线程池的实现原理

java线程池的实现原理很简单,说白了就是一个线程集合workerSet和一个阻塞队列workQueue。当用户向线程池提交一个任务(也就是线程)时,线程池会先将任务放入workQueue中。workerSet中的线程会不断的从workQueue中获取线程然后执行。当workQueue中没有任务的时候,worker就会阻塞,直到队列中有任务了就取出来继续执行。...

2021-04-14 10:38:48 106

原创 数据库锁

2021-04-13 16:05:52 61

原创 mysql给数据库某张表的已有字段加默认值的sql

ALTER TABLE member_account ALTER COLUMN permanent_tag SET DEFAULT '1';

2021-03-29 09:49:17 799

原创 linux部署java项目步骤

linux部署java项目步骤一.部署jdk 1.下载jdk,官网下载比较慢,可以找些百度网盘下载比较好 jdk-8u221-linux-x64.tar.gz(我的版本) 2.通过WINSCP上传到linux,执行命令 tar -zxvf 压缩文件名 tar -zxvf jdk-8u221-linux-x64.tar.gz 注意:mkdir /usr/java 3.编辑配置文件,配置环境变量 ,执行命令 vim /etc/profile ...

2021-03-11 14:42:26 1708

原创 Linux部署jar包的几种方式

1. java -jar xxx.jar此种方式启动,一旦Ctrl + C 终止之后,服务便无法访问2. java -jar xxx.jar &此种方式在第一种命令的结尾加了 & 代表后台运行(多打印了一行进程号,可以根据进程号kill 7621来关闭)。Ctrl + C 停掉不断输出到屏幕上的日志后 ,也可以正常访问,但是关闭Shell窗口或者断开session连接时,服务也会随着一起停掉3.nohup java -jar xxx.jar >/dev/null &amp.

2021-03-11 14:41:13 275

原创 注册eureka失败Cannot determine local hostname

解决方案: 配置文件中增加配置 :spring.cloud.inetutils.timeout-seconds=10

2021-03-11 14:38:30 7903

原创 window中ftp上传时553 Could not create file解决方案

在window中使用ftp上传文件时,会出现下列问题200 PORT command successful. Consider using PASV. 553 Could not create file.解决方案在虚拟机中对ftp的配置进行对应的配置如下图所示上述命令:setsebool 对应配置 1 如:setsebool tftp_home_dir 1getsebool ...

2019-12-03 14:37:31 2033

转载 虚拟机中使用centos7搭建ftp服务器(参考)

前言:最近在学习MyCat数据库分库分表,在虚拟机上做练习,可是windows上中虚拟机centos7系统配置java相关环境,上传文件成了问题,不像在mac上可以直接通过ssh上传文件,于是找到这篇文章分享一下.应用场景 本地windows作为客户端,虚拟机CentOS7作为服务器端,搭建FTP服务器,本地访问虚拟机实现文件的上传下载。如何在虚拟机安装centos7就不在赘述。来自文档:ht...

2019-12-03 10:20:52 986

空空如也

空空如也

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

TA关注的人

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