摘要: 程序运行在内存以及IO的体现 首先普及一下常识,如图所示: 1、在整个内存空间中,跑着各种各样的程序,有Java程序、C程序,他们共用一块内存空间。 2、对于Java程序,JVM会申请一块堆空间,通过Xmx可以设置,其余空间是堆外空间,其中每个线程有自己的线程栈,保证线程内存隔离,堆空间使用完以后, 阅读全文
posted @ 2021-07-31 19:30 IT6889 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 一、七层网络模型 OSI是Open System Interconnection的缩写,意为开放式系统互联。国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,它是一个七层的、抽象的模型体。 1、物理层 并不是物理媒体本身,它只是开放系统中利用物理媒体实现物理连接的功能描述和 阅读全文
posted @ 2021-07-31 19:29 IT6889 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 一、BIO简介 BIO是java1.4之前唯一的IO逻辑,在客户端通过socket向服务端传输数据,服务端监听端口。由于传统IO读数据的时候如果数据没有传达,IO会一直等待输入传入,所以当有请求过来的时候,新起一条线程对数据进行等待、处理,导致每一个链接都对应着服务器的一个线程。 BIO是同步阻塞的 阅读全文
posted @ 2021-07-31 19:28 IT6889 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 一、AIO简介 AIO是java中IO模型的一种,作为NIO的改进和增强随JDK1.7版本更新被集成在JDK的nio包中,因此AIO也被称作是NIO2.0。区别于传统的BIO(Blocking IO,同步阻塞式模型,JDK1.4之前就存在于JDK中,NIO于JDK1.4版本发布更新)的阻塞式读写,A 阅读全文
posted @ 2021-07-31 19:26 IT6889 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 一、简介 NIO我们一般认为是New I/O(也是官方的叫法),因为它是相对于老的I/O类库新增的( JDK 1.4中的java.nio.*包中引入新的Java I/O库)。但现在都称之为Non-blocking I/O,即非阻塞I/O,因为这样叫,更能体现它的特点。而下文中的NIO,不是指整个新的 阅读全文
posted @ 2021-07-31 19:21 IT6889 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 说到WebSocket技术,其实源于服务器推送技术,在现实中很多时候需要的数据是不断变化的,比如股市数据、聊天软件,因此就需要一种客户端想要在不刷新页面的情况下实时获取到服务器端最新数据的技术,而以往的数据获取都是基于客户端主动请求,服务端返回对应数据。因此就有了服务器推送技术。 服务器推送技术主要 阅读全文
posted @ 2021-07-31 19:19 IT6889 阅读(244) 评论(0) 推荐(0) 编辑
摘要: ChannelPipeline 提供了ChannelHandler 链的容器,并定义了用于在该链上传播入站和出站事件流的API。ChannelPipeline不是单独存在,它肯定会和Channel、ChannelHandler、ChannelHandlerContext关联在一起。 一、Channe 阅读全文
posted @ 2021-07-31 19:18 IT6889 阅读(107) 评论(0) 推荐(0) 编辑
摘要: Netty提供的ByteBuf不同于JDK中NIO的ByteBuffer,ByteBuf是netty中数据传输的容器,是Netty自己实现的,作为NIO ByteBuffer的替代品,提供了更好的API供开发者使用。相较于NIO的ByteBuffer更具有卓越的功能性和灵活性。具体NIO的ByteB 阅读全文
posted @ 2021-07-31 19:16 IT6889 阅读(220) 评论(0) 推荐(0) 编辑
摘要: RPC的实现方式是本地通过远程代理对象调用远程服务。在互联网应用场景中,单体服务极度缺乏弹性伸缩能力,在大规模开发团队中也不便于开发管理。所以往往会把服务根据模块进行垂直拆分,也就是我们说的SOA服务化。服务拆分后系统跟系统直接的业务交互往往依赖于RPC框架进行通讯。 通常RPC的服务端会提供对应的 阅读全文
posted @ 2021-07-31 19:14 IT6889 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 一、什么是Reactor模型 Reactor设计模式是event-driven architecture(事件驱动)的一种实现方式。Reactor会解耦并发请求的服务并分发给对应的事件处理器来处理。 目前,许多流行的开源框架都用到了Reactor模型。如:netty、node.js等,包括java的 阅读全文
posted @ 2021-07-31 19:12 IT6889 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 如下所示,我们写一个简单的Netty Demo,实现客户端与服务端进行通讯。 1、Netty 服务端启动类 /** * (1)、 初始化用于Acceptor的主"线程池"以及用于I/O工作的从"线程池"; * (2)、 初始化ServerBootstrap实例, 此实例是netty服务端应用开发的入 阅读全文
posted @ 2021-07-31 19:10 IT6889 阅读(248) 评论(0) 推荐(0) 编辑
摘要: Redis属于常见的NoSQL数据库或者说非关系数据库:Redis不使用表,她的数据库也不会预定义或者强制去要求用户对Redis存储的不同数据进行关联。 常见数据库对比: 和高性能键值缓存服务器memcached对比: Redis和mencached都可用于存储键值映射,彼此性能也相差无几,但是①. 阅读全文
posted @ 2021-07-31 19:08 IT6889 阅读(571) 评论(0) 推荐(0) 编辑
摘要: redis是一个key-value储存系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型) redis字符串:在redis-Client中执行以下命令: 阅读全文
posted @ 2021-07-31 19:07 IT6889 阅读(209) 评论(0) 推荐(0) 编辑
摘要: maven依赖注入: <!--dependency for redis--> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis --> <dependency 阅读全文
posted @ 2021-07-31 19:05 IT6889 阅读(2491) 评论(0) 推荐(0) 编辑
摘要: Spring-data-redis,是spring-data框架中,比较常用的,基于key-value键值对的数据持久层框架。Spring-data-redis,是一个基于Template模板开发的数据访问层框架。都是基于配置+template方法调用,实现redis数据CRUD操作的。 没有Spr 阅读全文
posted @ 2021-07-31 19:03 IT6889 阅读(338) 评论(0) 推荐(0) 编辑
摘要: Redis可以存储可以存储键与5种不同数据结构类型之间的映射。五种数据类型为:STRING(字符串)、LIST(列表)、SET(集合)、HASH(散列)、ZSET(有序集合)。 一、字符串类型String 1、类型定义 String 数据结构是简单的 key-value 类型,使用string时,r 阅读全文
posted @ 2021-07-31 19:01 IT6889 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 一、什么是泛型 Java从1.5之后支持泛型,泛型的本质是类型参数,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 若不支持泛型,则表现为支持Object,不是特定的泛型。泛型是对 Java 语言的类型系统的一种扩展,以支持 阅读全文
posted @ 2021-07-31 18:57 IT6889 阅读(694) 评论(0) 推荐(0) 编辑
摘要: 在Redis的使用过程中,大多数人都是使用现成的客户端,如Jedis,Redisson,Lettuce。因此本文研究用BIO的方式手写Redis客户端尝试,对遇到的问题进行探究及总结。 如何从架构角度思考架构分层? Redis通讯协议RESP是怎么回事? 如何基于BIO实现Redis客户端? Red 阅读全文
posted @ 2021-07-31 18:56 IT6889 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 一、Redis使用有哪些常见问题 在我们已经有了Jedis客户端、集群模式支持后,Redis基本使用已经没有大的问题了。 但是这样依旧有很多缺陷,比如: 动态扩容不方便,扩容需要重启才能生效 对于集群配置,有客户端代码侵入 集群中没有业务进行隔离,单业务冲高可能影响其余业务运行 没有监控,无法提前预 阅读全文
posted @ 2021-07-31 18:53 IT6889 阅读(449) 评论(0) 推荐(0) 编辑
摘要: 一、Redis介绍 Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合 阅读全文
posted @ 2021-07-31 18:49 IT6889 阅读(120) 评论(0) 推荐(0) 编辑