2 恶心的小达达

尚未进行身份认证

90后的我们,加油!

等级
TA的排名 12w+

AQS

package java.util.concurrent.locks;import java.util.concurrent.CountDownLatch;import java.util.concurrent.Semaphore;import java.util.concurrent.TimeUnit;import java.util.ArrayList;import java.u...

2019-10-29 00:50:57

JVM整理

jvmjava运行时数据区域程序计数器当前线程运行的行号指示器,计数器的任务就是用来调度字节码的执行(分支,循环,跳转,异常处理等),以及线程切换后能记录上次执行的位置java虚拟机栈每一个方法执行的同时都会创建一个栈帧(用于存储局部变量表、操作数栈、动态链接、方法出口等信息),每一个方法的执行就是进栈和出栈的过程,本地方法栈本地方法栈则为虚拟机使用到的Native方法服...

2019-09-04 11:00:33

ConcurrentHashMap与HashMap的总结

HashMap:(1)HashMap是一种散列表,采用(数组 + 链表 + 红黑树)的存储结构;(2)HashMap的默认初始容量为16(1<<4),默认装载因子为0.75f,容量总是2的n次方;(3)HashMap扩容时每次容量变为原来的两倍;(4)当桶的数量小于64时不会进行树化,只会扩容;(5)当桶的数量大于64且单个桶中元素的数量大于8时,进行树化;(6...

2019-08-27 12:45:30

ConcurrentHashMap源码解析

底层数据结构:底层实现和HashMap是一致的,各种特性也是基本保持一致。与1.7版本的区别:取消了segment的分段设置,直接使用Node数组来保存数据,并且采用Node数组元素作为锁来实现每一行数据加锁进一步减少并发冲突的概率。 将数组和单项链表的机构变成了数组+单向链表+红黑树结构。成员变量: /************************************...

2019-08-27 12:35:25

ArrayList源码分析

底层实现是数组(没啥好说的这个都知道)成员变量 /** * 默认容量大小 */ private static final int DEFAULT_CAPACITY = 10; /** * 空数组,如果传入的容量为0时使用 */ private static final Object[] EMPTY_ELEMENTDAT...

2019-08-23 15:11:57

HashMap源码解析

基本概念:jdk1.8的HashMap底层的数据结构是,数组+链表+红黑树,当我们存储元素的时候,如果存在hash冲突,链表的深度会不断加深,同时集合的容量会不断增加,当到达一个需要转化的点之后(如下),链表会转化成红黑树。链表的深度达到8 集合的容量达到64当我们删除元素的时候,如果红黑树中元素的数量减小到6会转换成链表结构成员变量 /** * 默认的初始化...

2019-08-22 14:50:30

一文搞懂RocketMq

基本概念下面是一张 RocketMQ 的部署结构图,里面涉及了 RocketMQ 核心的四大组件:Name Server、Broker、Producer、Consumer ,每个组件都可以部署成集群模式进行水平扩展。生产者生产者(Producer)负责产生消息,生产者向消息服务器发送由业务应用程序系统生成的消息。 RocketMQ 提供了三种方式发送消息:同步、异步、单向。...

2019-08-12 17:35:04

Redis(一) String字符串深入理解

Redis基础数据结构Redis有五种基础数据结构,分别是:String(字符串)、list(列表)、set(集合)、hash(hash)和zset(有序集合)。String(字符串)概念:Redis所有的数据结构都是以唯一的key字符串作为名称,然后通过这个唯一的key值来获取响应的value数据结构,不同类型的数据结构的差异就在于value的结构不一样。字符串结构使用非常广...

2019-08-09 17:26:47

Mysql性能优化索引优化补充

Mysql 之索引优化及索引失效请参考Mysql 之索引优化及索引失效1.最佳左前缀法则-如果索引了多列,要遵守最左前缀法则.指的是查询从索引的最左前列开始并且不跳过索引中的列.2.不在索引上左任何操作(计算,函数,(自动or手动)类型转换),会导致索引失效而转向全表扫描3.存储引擎不能使用索引中范围条件右边的列4.尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致...

2019-08-08 15:30:13

Mysql性能优化(五) 索引优化实战多表索引优化

创建员工和部门表:DROP TABLE IF EXISTS employee;CREATE TABLE IF NOT EXISTS employee ( id INT PRIMARY KEY auto_increment, name VARCHAR(50), dept_id INT);DROP TABLE if EXISTS department;create ...

2019-08-08 14:59:10

Mysql性能优化(四) 索引优化实战单表索引优化

创建文章表:drop TABLE if EXISTS article;create table if not EXISTS `article` ( id int PRIMARY KEY auto_increment, author_id int, category_id int, comments int, views int);插入3条数据...

2019-08-08 13:26:02

Mysql性能优化(三) Explain(转)

Explain:在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行...

2019-08-08 10:05:02

Mysql性能优化(三) 索引的基础理解

概念MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。索引的类型(关于数据结构方面的知识请自行寻找):B-Tree索引 Hash索引 聚簇索引 非聚集索引(辅助索引、二级索引) 覆盖索引 B-Tree索引:B-Tree索引使用B-Tree来存储数据,当然不同存储引擎的实现方式不...

2019-08-08 09:29:09

Mysql性能优化(二) mysql的逻辑架构

mysql的逻辑架构MySQL体系结构描述了MySQL系统的不同组件如何相互关联。MySQL架构基本上是一个客户端 - 服务器系统。MySQL数据库服务器是服务器,连接到MySQL数据库服务器的应用程序是客户端。MySQL体系结构包含以下主要组件。应用层:该层是MySQL架构中最顶层的层;你可以在许多客户端 - 服务器架构中看到同一层。该层包括大多数客户端 - 服务器应用程序通用...

2019-08-07 10:10:32

Mysql性能优化(一) mysql的数据库文件存储

一、mysql的物理文件默认体系结构默认采用的是在linux系统下yum安装mysql的默认文件结构(/var/lib/mysql)下面是在navcate下查看mysql (比较有意思的是建立的数据库名称为高性能mysql结果存储的数据库文件目录是(@9ad8@6027@80fdmysql)数据库文件:一个数据库对应一个文件夹,创建了六个数据库 其中:高性能mysql对应的...

2019-08-06 16:39:59

SpringIOC 源码解析(一) BeanDefinition的注册

SpringIOC 源码解析 (一)整体查看demoXmlBeanDefinitionReader 的loadBeanDefinitions(Resource resource)方法调用 loadBeanDefinitions(EncodedResource encodedResource) 方法,执行真正的逻辑实现(省略非关键代码)。获取 XML Document 实例。获取 XML Docum...

2019-06-11 23:29:01

对象生存还是死亡?

       在堆里面存放着 Java 世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还“存活”着,哪些已经“死去”。引用计数算法       引用计数算法的思想是:给对象添加一个引用计数器,每当有一个地方引用它...

2019-05-20 00:12:27

jvm(二) 关于java对象

对象的创建(1)指针碰撞:将用过的内存和没用的内存各在一边每次分配的时候只需要将指针向空闲内存一方移动一段和内存大小相等区域即可。(2)空闲列表:虚拟机会维护一个空闲的列表,用于记录哪些内存是可以进行分配的,分配时直接从可用内存中直接分配即可。(3)内存空间初始化:虚拟机将分配到的内存空间都初始化为零值(不包括对象头),如果使用了TLAB,这一工作过程也可以提前至TLAB分配时进行,内存空...

2019-05-19 17:47:34

JVM(一) 运行时数据区域

总览其中方法区、堆是线程共享的,而虚拟机栈、本地方法栈、程序计数器是线程隔离的。程序计数器程序计数器是一块较小的内存空间,他可以是看做当前线程所执行的字节码得到行号指示器,通过这个计数器的值来选取下一条需要执行的指令、分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。例: 当线程A执行到第2行,CPU切换到线程B的第1行,当线程B执行到第4行,CPU切换到线程A...

2019-05-19 16:12:38

RabbitMQ(四) Publish/Subscribe订阅模式

(1)解读:1,一个生产者,多个消费者2,每一个消费者都有自己的一个队列3,消费者没有直接把消息发送到队列,而是发送到了交换机(转发器上面Exchange)4,每个队列都要绑定到交换机上5,生产者发送消息,经过交换机,到达队列,就能实现一个消息被多个消费者消费(2)例子:注册-> 邮件->短信(3)交换机:生产者:public class Send {...

2019-05-10 00:24:50

查看更多

勋章 我的勋章
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。