自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java 内存泄漏与内存溢出详解

内存泄漏指你用malloc或new申请了一块内存,但是没有通过free或delete将内存释放,导致这块内存一直处于占用状态。内存溢出指你申请了10个字节的空间,但是你在这个空间写入11或以上字节的数据,就是溢出。内存泄露是指程序中间动态分配了内存,但在程序结束时没有释放这部分内存,从而造成那部分内存不可用的情况,重启计算机可以解决,但也有可能再次发生内存泄露,内存泄露和硬件没有关系,...

2020-03-24 16:41:33 2177

原创 docker 安装MySQL

此外,我们还可以用docker search mysql命令来查看可用版本:$ docker search mysqlNAME DESCRIPTION STARS OFFICIAL AUTOMATEDmysql MySQL ...

2020-03-23 18:02:15 200

原创 MySql 8.0.11 客户端连接失败:2059 - Authentication plugin 'caching_sha2_password' cannot be loaded

近期,换了新笔记本,重新安装了MySql数据库和客户端工具Navicat Premium 12。我是从官网上下载的MySql数据库,版本为8.0.11,链接:https://dev.mysql.com/downloads/mysql/当数据库和客户端安装成功后,我使用客户端连接接数据库时,却是登陆失败:2059 - Authentication pl...

2020-03-23 18:01:05 306

原创 单一索引和复合索引区别

单一索引和复合索引区别及联系 - BABY的日志 - 网易博客 http://selectgoodboy.blog.163.com/blog/static/1032120612015191117118/什么是单一索引,什么又是复合索引呢? 何时新建复合索引,复合索引又需要注意些什么呢?本篇文章主要是对网上一些讨论的总结。一.概念单一索引是指索引列为一列的情况,即新建索引的语句只实...

2020-03-20 17:53:55 5949

原创 git 版本分支 管理

2020-03-19 17:59:08 415

原创 char varchar text mysql 数据结构的区别

它们的存储方式和数据的检索方式都不一样。数据的检索效率是:char > varchar > text空间占用方面,就要具体情况具体分析了。1.char:存储定长数据很方便,CHAR字段上的索引效率级高,必须在括号里定义长度,可以有默认值,比如定义char(10),那么不论你存储的数据是否达到了10个字符,都要占去10个字符的空间(自动用空格填充),且在检索的时候后面的空格会隐藏...

2020-03-19 17:11:02 504

原创 mysql 加锁的过程

一、背景MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问题,展开较为深入的分析与讨论,主要是介绍一种思路,运用此思路,拿到任何一条SQL语句,都能完整的分析出这条语句会加什么锁?会有什么样的使用风险?甚至是分析线上的...

2020-03-16 09:18:41 491

原创 mysql 高并发update导致死锁的 情况

死锁产生的条件:出现循环等待资源。update对锁的流程:当sql发出一个update请求之后,数据库会对表中的每条记录加上U锁。然后数据库会根据where条件,将符合条件的记录转换为X锁。对不满足条件的记录释放U锁。环境模拟1. 创建数据库环境--创建数据库 create database DeadLockTest;--创建数据表 (没有主键) use ...

2020-03-13 17:27:48 7804

原创 ConcurrentHashMap 实现源码

以前写过介绍HashMap的文章,文中提到过HashMap在put的时候,插入的元素超过了容量(由负载因子决定)的范围就会触发扩容操作,就是rehash,这个会重新将原数组的内容重新hash到新的扩容数组中,在多线程的环境下,存在同时其他的元素也在进行put操作,如果hash值相同,可能出现同时在同一数组下用链表表示,造成闭环,导致在get时会出现死循环,所以HashMap是线程不安全的。我们...

2020-03-12 18:06:13 133

原创 ConcurrentHashMap 原理分析

了解ConcurrentHashMap 实现原理,建议首先了解下HashMap实现原理。HashMap 源码解析(JDK1.8)为什么要用ConcurrentHashMapHashMap线程不安全,而Hashtable是线程安全,但是它使用了synchronized进行方法同步,插入、读取数据都使用了synchronized,当插入数据的时候不能进行读取(相当于把整个Hashtable都锁...

2020-03-12 17:18:05 152

原创 HashMap 原理

HashMap是由数组加链表的结合体。如下图:Paste_Image.png图中可以看出HashMap底层就是一个数组结构,每个数组中又存储着链表(链表的引用)JDK1.6实现hashmap的方式是采用位桶(数组)+链表的方式,即散列链表方式。JDK1.8则是采用位桶+链表/红黑树的方式,即当某个位桶的链表长度达到某个阈值(8)的时候,这个链表就转化成红黑树,这样大大减少了查...

2020-03-12 16:35:09 252 1

原创 CAS 原理介绍

概述CAS(Compare-and-Swap),即比较并替换,是一种实现并发算法时常用到的技术,Java并发包中的很多类都使用了CAS技术。CAS也是现在面试经常问的问题,本文将深入的介绍CAS的原理。案例介绍CAS之前,我们先来看一个例子。/** * @author joonwhee * @date 2019/7/6 */public class Volatile...

2020-03-12 10:34:44 308

原创 rocketMQ 教程demo

http://ifeve.com/%E3%80%8Aapache-rocketmq%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97%E3%80%8B%E5%AE%98%E6%96%B9%E6%96%87%E6%A1%A3/

2020-03-12 10:27:10 175

原创 AQS 原理以及 AQS 同步组件总结

一 面试中关于 synchronized 关键字的 5 连击1.1 说一说自己对于 synchronized 关键字的了解synchronized关键字解决的是多个线程之间访问资源的同步性,synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。另外,在 Java 早期版本中,synchronized属于重量级锁,效率低下,因为监视器锁(moni...

2020-03-11 22:01:16 400

原创 Java CAS 原理剖析

在Java并发中,我们最初接触的应该就是synchronized关键字了,但是synchronized属于重量级锁,很多时候会引起性能问题,volatile也是个不错的选择,但是volatile不能保证原子性,只能在某些场合下使用。像synchronized这种独占锁属于悲观锁,它是在假设一定会发生冲突的,那么加锁恰好有用,除此之外,还有乐观锁,乐观锁的含义就是假设没有发生冲突,那么我正...

2020-03-11 16:55:04 151

原创 细粒度锁的实现

最近在工作上碰见了一些高并发的场景需要加锁来保证业务逻辑的正确性,并且要求加锁后性能不能受到太大的影响。初步的想法是通过数据的时间戳,id等关键字来加锁,从而保证不同类型数据处理的并发性。而java自身api提供的锁粒度太大,很难同时满足这些需求,于是自己动手写了几个简单的扩展... 1. 分段锁 借鉴concurrentHashMap的分段思想,先生成一定数量的锁,...

2020-03-11 16:25:23 695

原创 RocketMQ 介绍

前言消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数竞争对手,每次都只能看到无数落寞的身影失望的离开,略感愧疚(请允许我使用一下夸张的修辞手法)。于是在一个寂寞难耐的夜晚,我痛定思痛,决定开始写《吊打面试官》系列,希望能帮助各位读者以后面试势如破竹,...

2020-03-03 16:55:08 1205

原创 常用Linux系统管理命令总结

一、目录指令1、创建目录make directorymkdir目录名称//mkdirspring,创建一个spring文件夹mkdir-pfile/file/file//递归创建多级别关系目录mkdirdir/newdir//不使用递归mkdir-pdir/newdi...

2020-03-03 15:32:08 583

原创 基于shard-jdbc中间件,实现数据分库分表

一、水平分割 1、水平分库 1)、概念: 以字段为依据,按照一定策略,将一个库中的数据拆分到多个库中。 2)、结果 每个库的结构都一样;数据都不一样; 所有库的并集是全量数据; 2、水平分表 1)、概念 以字段为依据,按照一定策略,将一个表中的数据拆分到多个表中。 2)、结果 每个表的结构都一样;数据都不一样; 所有表的并集是全量数据; 二、Shard-jdbc 中间件 1、架构图2、特点...

2020-03-03 14:45:05 490

原创 基于Shard-Jdbc分库分表,数据库扩容方案

一、数据库扩容1、业务场景互联网项目中有很多“数据量大,业务复杂度高,需要分库分表”的业务场景。这样分层的架构(1)上层是业务层biz,实现业务逻辑封装;(2)中间是服务层service,封装数据访问;(3)下层是数据层db,存储业务数据;2、扩容场景和问题当数据量持续新增,面临着这样一些需求,两台数据库无法容纳,需要数据库扩容,这里选择2台—扩容到3台的模式,如下图...

2020-03-03 14:35:51 633

空空如也

空空如也

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

TA关注的人

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