自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 再谈Kafka

Kafka概念kafka是一个分布式基于发布-订阅模式的高吞吐量、高水平拓展的消息流中间件。【重点:高吞吐量】kafka的基础架构中主要包含的角色有:broker、生产者、消费者;当前还包含zookeeper。生产者:负责发送消息。消费者:负责处理消费消息。broker:负责存储缓冲消息,创建topic,有partition分区和replication的概念。【在0.9版本之前,kafka创建集群,需要创建到zk中,zk中保留了消息被消费的进度或者说偏移量,0.9版本之后,kafka自己维护了

2020-05-17 15:40:57 198

原创 LVS负载均衡

LVS基础概念

2020-04-07 19:00:52 190

原创 数据库中间件

为什么要使用数据库中间件数据库存储的数据量不是很大,但是并发读写的操作都很大,超过数据库服务器的处理能力。第一:加缓存,但是缓存也会出现不会命中的情况,这样还是会有大量的读写操作进入数据库。第二:读写分离,通过主从的方式,把读操作和写操作分离开,然后同步主服务器和从服务器的数据。但是读写要分别操作不同的库,对DAO层的代码有影响吗?如何隔离这种变化呢?因此,我们需要增加数据库访问模块---...

2020-02-14 12:40:06 292

原创 Nginx负载均衡器

Nginx简介Nginx是一款轻量级的web服务器/反向代理服务器及电子邮件代理服务器,由俄罗斯的程序设计师lgor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler使用。其特点是占内存少,并发能力强,事实上Nginx的并发能力网页服务器中的表现确实教好。基于反向代理的功能,Nginx作为负载均衡主要有以下几点理由:1、高并发连接2、内存消耗少3、配置文件简单4、成...

2019-12-20 17:06:51 253

原创 java内存缓存

什么时缓存在计算中,缓存时一个高速数据存储层,其中存储了数据子集,且通常是短暂性存储,这样日后再次请求此数据时,速度要比访问数据的主存储位置快,通过缓存,您可以高效地重用之前检索或计算地数据。为什么要使用缓存1、提升应用程序性能2、降低数据库成本3、减少后端负载4、可预测的性能5、消除数据库热点6、提高读取吞吐量(IOPS)自研java内存缓存package com.wys.s...

2019-12-03 15:15:54 331

原创 缓存--Redis

Redis的数据结构和常用命令Redis是一个开源的用c语言编写,支持网络,基于内存的持久化型Key-Value数据库,并提供了多种语言API。本质是客户端-服务应用软件程序。特点是使用简单、性能强悍、功能应用场景丰富。可以理解为一个增强版的hashmap。官网:redis.io支持地数据结构有7种:1、String:String数据接受是简单的key-value类型,value其实不仅...

2019-12-02 11:22:05 242

原创 消息中间件--kafka

kafka是什么?Kafka是linkedin使用Scala编写的具有高水平扩展和高吞吐量的分布式消息系统,kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接收者成为Consumer,此外kafka集群有多个kafka实例组成,每个实例成为broker。无论时kafka集群还是producer和cunsumer都依赖zookeeper来保证系统可用性,为集群保存...

2019-11-28 18:50:55 168

原创 消息中间件-RabbitMQ

RabbitMQ的相关概念1、Producer:生产者,就是投递消息的一方,生产者创建消息之后,发布到RabbitMQ中。消息一般可以包含两个部分:消息体和附加信息消息体:在实际应用中,消息体一般是一个带有业务逻辑的数据结构。附加信息:用来表述这个消息,比如目标交换器的名称、路由键和一些自定义的属性等。2、Broker:消息中间件的服务节点,单个就表示服务器。3、Virtual Hos...

2019-11-27 10:48:35 154

原创 java之GC机制

前言在了解了jvm的内存模型之后,明白了jvm的运行原理,并且知道了java程序代码在jvm中是如何被执行的。其中对jvm运行时区域中的java堆有了一定的认识,因为它是主要的垃圾回收区域,本篇将会详细的介绍GC的原理以及各种垃圾回收器。至于如何学习GC,我们从三个问题入手即可。第一个问题:哪些内存需要回收?第二个问题:什么时候回收?第三个问题:怎么回收?哪些内存需要回收?在java堆...

2019-11-19 15:26:05 121

原创 JVM内存模型

什么是JVMJava Virtual Machine,Java虚拟机;java的跨平台性是之java编译出来的字节码文件可以在任何装有java虚拟机的电子设备上运行,java虚拟机中的java解释器负责将字节码文件解释成特定的机器码运行,在运行时,java编译器负责将java源程序编译成.class文件,java.exe就是.class的执行程序,因为它装载了jvm.dll文件,这个动态链接库才...

2019-11-18 17:48:48 132

原创 java如何设计一个消息中间件

一、消息中间件的核心设计本质:一种具备接收数据、保存数据、发送数据等功能的网络应用。和一般网络应用程序的区别是它主要负责数据的接收和传递,所以性能一般都高于普通程序二、五大核心1、协议:OpenWire、AMQP、MQTT、Kafka、OpenMessageAMQP: 是高级消息队列协议,04年由摩根大通集团联合其他公司共同设计;特性是事务支持、持久化支持,出生于金融行业,在可靠性消息处理...

2019-10-21 22:18:20 780

原创 NIO非阻塞网络编程

一、NIO1、始于java 1.4,提供了新的JAVA IO操作非阻塞API,用意就是代替JAVA IO 和Java Networking相关的API。NIO的三个核心组件:Buffer 缓冲区Channel 通道Selector 选择器下面主要说下这三个核心组件Buffer 缓冲区1、缓冲区本质上是一个可以写入数据的内存块(类似数组),然后可以再次获取,此内存块包含在NIO Bu...

2019-10-10 18:57:25 163

原创 BIO阻塞式网络编程

BIO-阻塞IO的含义阻塞(blocking)IO :资源不可用时,IO请求一直阻塞,直到反馈结果(有数据或者超时)。非阻塞(non-blocking)IO :资源不可用时,IO请求离开返回,返回数据标识资源不可用。同步(synchronous)IO : 应用阻塞在发送或接收数据的状态,直到数据成功传输或返回失败。异步(asynchronous)IO :应用发送或接收数据后立刻返回,实际处...

2019-10-09 14:54:30 171

原创 TCP / UDP协议

TCP / UDP协议低三层:物理层、数据链路层、网络层物理层:是原始的数据比特流能在物理介质上传输数据链路层:通过校验、确认和反馈重发等手段,形成稳定的数据链路网络层:进行路由选择和流量控制(IP协议)【以上三层是为了屏蔽底层的复杂度,作为java开发人员只需了解即可】传输层:提供可靠的端口到端口的数据传输服务(TCP/UDP)【程序的开发主要在传输层】高三层:会话层、表示层、应...

2019-10-09 10:20:49 248

原创 JAVA实用工具

一、CountDownLatch1、看代码代码示例1:package com.nipx.demo.CAS;import java.util.concurrent.CountDownLatch;import java.util.concurrent.atomic.AtomicLong;public class CountDownLatch_demo { public sta...

2019-10-09 09:39:14 245

原创 并发容器类List、set、queue

List1、List的基础问题:ArrayList: 基于数组,因为可以根据数组下标可以直接锁定元素,所以查询效率高;添加和删除效率较低,因为在进行添加和删除的时候,需要进行元素移位,消耗内存;初始长度是10;发生扩容时 初始长度*1.5。LinkedList: 基于链表,因为锁定元素必须是遍历链表全部元素,所以查询效率低;进行删除和添加的时候,由于LinkedList存储元素的数据结...

2019-10-08 10:21:03 398

原创 HashMap与ConcurrentHashMap

JDK1.7版本的HashMap1、HashMap是一个集合类,主要是帮我们做数据存储,那么他是如何存储的呢?HashMap是用一个table来做存储,这个table只是一个基于K,V的Entry数组。2、hashmap的put()方法解析调用put方法的时候,首先对key值进行hash算法,int hash = hash(key); index=hash%length。通过hash取...

2019-10-01 16:09:08 146

原创 JAVA锁

一. JAVA中锁的概念1、自旋锁:2、乐观锁:3、悲观锁:4、独享锁:5:共享锁:(限流)

2019-09-21 09:56:19 1220 1

原创 CAS机制的原理解读

一. CAS是什么?1、CAS的全拼是:compare and swap,中文意思是:比较和交换。CAS包含3个操作数值【内存位置(也叫偏移量)V、预期值A、新值B】,根据偏移量找到预期值做对比,如果值相等,那么用新值覆盖;如果和预期值不相等,那么该线程发生自选(实质是循环获取对比);2、CAS属于乐观锁【乐观锁】:用某种方式不加锁来处理资源,比如通过给记录加version来获取数据,性能较...

2019-09-17 21:22:54 600

原创 一看就懂的JAVA线程池

package com.nipeixing.demo.thread;import java.util.List;import java.util.concurrent.*;/**线程池API ->接口定义和实现类:【接口】:Executor : 最上层的接口,定义了执行任务的方法execute【接口】:ExecutorService : 继承了Executor接口,拓...

2019-09-15 00:18:42 113

原创 常见的线程通信方式

package com.nipeixing.demo.thread;import java.util.concurrent.locks.LockSupport;/**线程通信三种方式: 【suspend/resume、wait/notify、park/unpark】suspend/resume:java废弃的方法【原因:加同步锁容易造成死锁;先后顺序弄反容易导致线程无线挂起】...

2019-09-15 00:16:41 273

原创 线程基本状态概要

package com.nipeixing.demo.thread;/**介绍线程的6种基本状态1、New : 尚未启动的线程的状态2、Runnable : 可运行的线程的状态,等待cpu的调度3、Blocked : 线程阻塞等待的状态,例如:Synchronized同步代码块或者方法被阻塞4、Waiting : 等待线程的线程状态。不带超时的的方式:【Obj...

2019-09-15 00:14:52 113

空空如也

空空如也

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

TA关注的人

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