自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 zk和db

ZK:选举原理:leader 选举存在与两个阶段中,一个是服务器启动时的 leader 选举。 另一个是运行过程中 leader 节点宕机导致的 leader 选举 .参数:myid:比如有三台服务器,编号分别是 1,2,3。编号越高权重越大。 zxid:事务id,或者可以说是偏移量。 逻辑时钟。epoch – logicalclock 。也可以叫朝代或者投票的轮数。启动选举步骤:1、a/b 投票。第一次都是都自己。带上必须要信息myid 和...

2021-08-07 12:56:00 380 2

原创 spring

基础概念:1、IoC 和 DIIoC (Inversion of Control),即控制反转。这不是一种新的技术,而是 Spring 的一种设计思想。在传统的程序设计,我们直接在对象内部通过 new 来创建对象,是程序主动去创建依赖对象;而在 Spring 中有专门的一个容器来创建和管理这些对象,并将对象依赖的其他对象注入到该对象中,这个容器我们一般称为 IoC 容器。所有的类的创建、销毁都由 Spring 来控制,也就是说控制对象生存周期的不再是引用它的对象,而是 Spring。对于某个

2021-08-02 10:38:30 107

原创 Redis

Redis是单线程吗?Redis 的单线程主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程。但 Redis 的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。不过6.x之后io的的读写是多线程的,但是计算部分不是。Redis 单线程为什么还能这么快?因为它所有的数据都在内存中,所有的运算都是内存级别的运算,而且单线程避免了多线程的切换性能损耗问题。正因为 Redis 是单线程,所以要小心使用 Red

2021-07-25 19:02:35 137

原创 从NIO到Netty

Netty的使用其实难度不到,其关键的点是了解IO的编程模型。了解其编程模型再对应看Netty就会容易的很多。Java的网络编程IO模式:BIO,NIO,AIO。BIO:同步阻塞模型,一个线程处理一个连接。(时代发展,现在已经弃用)缺点明显,阻塞线程资源浪费,一个线程处理一个客户端,吞吐量有限。唯一的好处:架构简单。代码示例:1、accept 方法是一个阻塞方法,执行过后启动服务端,阻塞等待用户连接2、read方法也是一个阻塞方法,没有数据可读时则阻塞当客户端没有数据时,处理

2021-07-17 23:55:11 156

原创 Kakfa详解

Kafka基本概念: 名称 解释 Broker 消息中间件处理节点,一个Kafka节点就是一个broker,一个或者多个Broker可以组成一个Kafka集群 Topic Kafka根据topic对消息进行归类,发布到Kafka集群的每条消息都需要指定一个topic Producer 消息生产者,向Broker发送消息的客户端 Co

2021-07-09 23:22:25 453 2

原创 JVM相关(Hotspot)-----一文概所有

一:类加载机制: JVM加载类的过程分为:加载、验证、准备、解析、初始化、使用、卸载等过程,在此过程之前,在我们java进程开始的时候,java进程会根据本地的dll文件创建java虚拟机,然后创建引导类加载器(java有多个类加载器,也可自定义类加载器。引导类加载器主要负责加载类库的类),引导类加载器是由c实现的。此后继续创建JVM程序入口类sun.misc.Launcher。由它去初始化其他类加载器。在类运行是也会由launcher找到这个类属于哪个类加载器,而后由此类加载它即可。 ...

2021-06-27 15:28:42 158

原创 JUC相关连载七---Atom&Unsafe类以及线程安全map,list

相对于线程安全有问题的一些常用数据类型,jdk提供了其线程安全的对应类,位于java.util.concurrent.atomic包里一共有12个类,四种原子更新方式,分别是原子更新基本类型,原子更新数组,原子更新引用和原子更新字段。Atomic包里的类基本都是使用Unsafe实现的包装类。 说起atomic包,先说下unsafe类。Unsafe是位于sun.misc包下的一个类,主要提供一些用于执行低级别、不安全操作的方法,如直接访问系统内存资源、自主管理内...

2021-06-18 21:43:19 231

原创 JUC相关连载六---集并发技术于一身的线程池(Java劝退师)

线程池:“线程池”,顾名思义就是一个线程缓存,线程是稀缺资源,如果被无限制的创建或者无意义的频繁,不仅会消耗系统资源,还会降低系统的稳定性,因此Java中提供线程池对线程进行统一分配、调优和监控。如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创建和销毁线程,如此一来会大大降低系统的效率。可能出现服务器在为每个请求创建新线程和销毁线程上花费的时间和消耗的系统资源要比处理实际的用户请求的时间和资源更多。这就是为什么我们想要用线程池化管理的原因。最重要的原因是防止频繁的线程...

2021-06-13 11:09:54 124

原创 JUC相关连载五---基于条件队列和ReentrantLock的阻塞队列(Java劝退师)

条件队列的典型的实现就是:阻塞队列。有元素就通知线程处理,无元素就阻塞线程等待。看条件队列,先看其 等待/通知 的实现。 1、ConditionObject的结构: 2、ConditionObject是interface Condition的实现类。其主要的接口是await和signal:await():不限时等待。await(long time, TimeUnit unit):限时等待,可以指定时间单位。awaitNa...

2021-06-12 16:06:44 136

原创 JUC相关连载四---AQS常见Tools之 Semaphore、CountDownLatch、CyclicBarrier(Java劝退师)

这些工具。。其实都是基于AQS的使用封装,其原理就不多讲了,AQS可以看下之前的文章。这里主要讲下几个方法和使用。一、Semaphore Semaphore 字面意思是信号量的意思,它的作用是控制访问特定资源的线程数目。可以简单的说是一个限流。就像停车场里的剩余车位,来一个少一个,车位满了就要等待。或者说是饭店里的餐位,一共一百个,满员后再来客人就要排队等待。也可以想成是连接池,拿走一个连接就少一个。 1、构造方法: public Se...

2021-06-12 13:32:21 1100 1

原创 JUC相关连载三---AQS同步队列&ReentrantLock&ReentrantReadWriterlock(Java劝退师)

由于隐式锁在竞争非常激烈的环境中的性能表现不是非常好,Lea 基于AQS提供了显式锁.主要目的就是提高竞争激烈时的效率问题。当然ReentrantLock还有其他

2021-06-06 00:20:21 131

原创 JUC相关连载二---synchronized(Java劝退师)

在多线程编程中,有可能会出现多个线程同时访问同一个共享、可变资源的情况,这个资源我们称之其为临界资源;这种资源可能是:对象、变量、文件等。线程获得执行的cpu时间片的不可控必然会出现临界ziyuan...

2021-06-05 18:29:10 129

原创 JUC相关连载一---并发的由来以及JMM(Java劝退师)

Nginx是一个高性能WEB服务器,除它之外Apache、Tomcat、Jetty、IIS,它们都是Web服务器,或者叫做WWW(World Wide Web)服务器,相应地也都具备Web服务器的基本功能。Nginx 相对基它WEB服务优势何在呢?1、Tomcat、Jetty 面向java语言,先天就是重量级的WEB服务器,其性能与Nginx没有可比性。2、IIS只能在Windows操作系统上运行。Windows在性能和稳定性上与UNIX操作系统相差甚远,也没有可比性。...

2021-05-30 16:48:34 205 1

原创 MySql数据结构、索引优化原则(Java劝退师)

MySql(InnoDB)随手记 MySql索引为甚么选择的是B+。几种数据结构相比,二叉树、红黑树无法保证树的高度可控。当在内存中操作的时候,这些数据结构由于树深度造成的影响可能还能接受, 但作为数据存储操作磁盘,数据高度觉得了磁盘的IO次数,不可控的树高是无法容忍的。...

2021-05-23 00:16:52 312 4

空空如也

空空如也

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

TA关注的人

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