- 博客(14)
- 收藏
- 关注
原创 并发编程基础之Synchronized
目录synchronize基本使用synchronize底层原理synchronize基本使用synchronize底层原理
2021-07-08 11:20:59
304
原创 Netty小结
目录Netty的概念什么是Netty简单的Java实现Netty底层原理Netty线程模型Netty中的术语Netty的概念什么是NettyNetty是一个用Java开发的开源框架,是一个基于NIO的异步的、基于事件驱动的网络IO应用框架,使用Netty可以快速开发高性能、高可靠的网络IO程序,Netty被使用在各种中间件中为各节点提供通信服务,比如dubbo,以及在游戏行业中实现服务器之间的通信简单的Java实现1、引入Maven依赖<dependency> <gro
2021-03-16 16:05:18
462
4
原创 Kafka小结
目录基本概念Kafka的历史Kafka中的术语单机安装集群安装Java集成设计原理常见问题基本概念Kafka的历史Kakfa最初由Linkedin公司采用Scala语言开发,是一个分布式的、支持多分区、多副本,基于zookeeper协调的分布式消息系统,2010年贡献给Apache基金会并成为顶级开源项目。以下是kafka官网的介绍:Apache Kafka is an open-source distributed event streaming platform used by thousan
2021-03-11 17:30:08
179
原创 JVM内存结构和垃圾回收机制
目录JVM内存结构JVM内存结构jvm内存结构指的是java 虚拟机运行时对内存的使用情况,jvm将内存分为堆、栈、方法区、程序计数器四个部分,栈分为虚拟机栈、本地方法栈程序计数器:jvm会给每个线程都分配一个程序计数器,是线程的私有内存,记录了当前线程将要执行的下一条字节码指令的指针,如果执行的是native方法,程序计数器的值为空,程序计数器不会出现OOM虚拟机栈:虚拟机栈是线程运行时给线程分配的内存空间,这块内存空间是线程私有的,栈中存储的元素叫栈帧,线程在执行方法时会创建一个栈帧,栈帧
2021-02-18 17:55:42
481
原创 zookeeper基本概念
目录什么是zookeeper文件系统数据结构什么是zookeeperzookeeper是apache hadoop下的一个开源分布式协调框架,主要用来解决分布式应用中遇到的一些数据管理问题,例如:统一命名服务、状态同步服务、集群管理、分布式应用配置项管理,我们可以简单的认为zookeeper就是一个基于内存的可以存储少量数据的数据库,核心概念就是文件系统数据结构和监听通知机制文件系统数据结构zookeeper使用一个类似文件系统的树形数据结构维护存储的数据,每个子目录项叫做znode(目录节点)
2021-02-03 15:06:21
378
2
原创 JavaIO模型
目录IO同步和异步阻塞和非阻塞BIONIOAIOIO在Unix系统中,所有的内容都是以文件的形式保存和管理的,一切皆文件,系统里面的所有资源都是文件,包括socket,文件的本质就是流,我们对流的读写操作就是I/O,操作系统用文件描述符来表示流,即fd,每个fd都是一个整数,对整数的操作就是对文件(流)的操作,创建socket,操作系统返回一个fd,对socket的操作就是对fd的操作,IO又分为网络IO和磁盘IO,IO模型就是操作系统执行I/O指令的方法,UNIX将IO模型分为阻塞IO模型、非阻塞I
2021-01-21 10:52:50
213
原创 MySQL高可用机制和分库分表
目录主从架构为什么需要主从架构同步机制实现原理搭建主从集群全库同步和部分同步主从架构为什么需要主从架构1、保证数据安全如果DB里面的数据非常重要,不能丢失就可以使用主从架构,从DB作为主DB的数据备份,甚至基于主从搭建互主、多主的架构2、实现读写分离日常使用中大部分的业务对DB的操作都是读多写少,读写分离,主服务只负责处理写请求,从服务负责处理读请求大大降低DB的压力、提高性能3、提供高可用服务主服务宕机后,从服务切换为主服务继续提供服务,主从切换依赖中间件来实现同步机制实现原理主从同步
2021-01-13 15:10:14
539
1
原创 RabbitMQ基础知识小结
目录MQ简单介绍几种常用MQ比较RabbitMQ简单介绍RaabitMQ简单搭建Spring项目简单使用RabbitMQMQ简单介绍 MQ全称Message Queue(消息队列)就是用来存储消息的容器,MQ主要有以下几种种功能一、应用解耦,解除多个应用相互调用的耦合关系二、异步处理,应用异步处理消息,减少处理时间三、削峰填谷,在高并发请求时限制并发的处理数量减轻系统压力几种常用MQ比较 常用的MQ有k
2020-12-08 19:10:56
380
原创 Redis常用数据结构和主从集群搭建
目录常用数据结构StringHashListSetZset常用数据结构String常用命令//存单个String类型的键值对set key value//批量存String类型的键值对mset key value [key value ...]//存入一个不存在的String类型的键值对,如已存在无法存入setnx key value//获取键值对get key//批量获取键值对mget key [key ...]//删除键del key [key ...]//设置一个键的过
2020-11-03 18:52:14
168
原创 SpringIOC部分源码小结
目录测试类ioc加载bean流程图部分源码this();this.reader = new AnnotatedBeanDefinitionReader(this);register(annotatedClasses);refresh();测试类 @Component //Component注解标记将Bean交给spring管理 public class BeanB { } @Configuration //标明是配置类 @ComponentScan("demo") //扫描包 publ
2020-10-12 18:27:16
272
原创 线程池及部分源码小结
目录线程的简单概念线程池的简单理解线程池的状态线程池的参数线程的简单概念线程是CPU调度的最小单位,属于进程的一部分,线程间共享所在进程的资源,线程模型有KLT和ULT两种,Java中采用的是KLT模型,也就是说Java中每创建一个线程会同步的在OS中创建一个线程线程池的简单理解线程池顾名思义就是由多个线程组成的池子,在需要使用多线程的场景下我们可以使用线程池为什么要用线程池而不是一个个的创建线程呢,因为每次创建线程时都需要消耗资源和时间,为了更高效的使用线程,引入了线程池的概念,对线程统一分配
2020-09-27 16:56:58
149
原创 ConcurrentHashMap源码简单小结
目录JDK1.7数据结构成员变量构造函数put操作get操作JDK1.7数据结构segment数组+HashEntry数组+链表,每一个segment锁维护了一组HashEntry数组,每个HashEntry都可能是一串链表,想要修改HahsEntry中的值必须先去竞争获取segment锁 //HashEntry结构 static final class HashEntry<K,V> { // hash值 final int hash; // key
2020-08-27 18:37:26
383
原创 HashMap源码简单小结
目录JDK1.7数据结构重要的成员变量构造函数put操作get操作JDK1.8JDK1.7数据结构数组+链表,底层是由若干个Entry对象组成的一个数组,数组中可以存储Entry对象的地方叫做"桶"(bucket),每个桶都存储了一个Entry对象,Entry对象的next字段可以指向下一个Entry的引用,因此实际桶中存储的可能是个Entry链表//Entry结构源码static class Entry<K,V> implements Map.Entry<K,V> {
2020-08-24 19:22:18
343
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人