摘要: 更多内容,移步IT-BLOG 一、Redis 复制 复制(Replication):是 Redis 实现高可用的基础。且在复制过程中,主节点/从节点都是非阻塞的,但是从节点在执行同步时使用的是旧数据集提供查询。 Redis 复制启动图与流程说明:​1)、当从节点连接到主节点时,会发送 psync 命 阅读全文
posted @ 2020-11-19 23:30 Java程序员进阶 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 一、什么是单点登录 单点登录(Sign Sion On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。对于存在诸多子系统且子系统分别部署到不同的服务器中,那么使用传统的 session 是无法解决的 阅读全文
posted @ 2020-11-19 22:47 Java程序员进阶 阅读(837) 评论(0) 推荐(0) 编辑
摘要: 系统性学习,异步IT-BLOG CountDownLatch 是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。CountDownLatch 能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。 阅读全文
posted @ 2020-11-19 21:57 Java程序员进阶 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 一、阻塞队列 【1】首先它是一个队列,而一个阻塞队列在数据结构中所起的作用大致如下图所示: ​当阻塞队列为空时,从队列中获取元素的操作将会被阻塞。当阻塞队列是满时,往队列中添加元素的操作将会被阻塞。【2】在多线程领域:所谓阻塞,在某些情况下会挂起线程(即阻塞),一旦条件满足,被挂起的线程又会自动被唤 阅读全文
posted @ 2020-11-19 21:55 Java程序员进阶 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 系统性学习,移步IT-BLOG 线程池做的工作主要是控制运行的线程数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数超过了最大数量超出数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行。 什么是线程池 线程池(Thread Pool)是一种基于池化思想管理线程的工 阅读全文
posted @ 2020-11-19 21:16 Java程序员进阶 阅读(154) 评论(0) 推荐(0) 编辑
摘要: Java8 优势:速度快、代码更少(增加了新的语法 Lambda 表达式)、强大的 Stream API、便于并行、最大化减少空指针异常 Optional; 一、Lambda 表达式 Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递) 阅读全文
posted @ 2020-11-19 19:54 Java程序员进阶 阅读(569) 评论(0) 推荐(0) 编辑
摘要: 更多内容,前往 IT-BLOG volatile 表示 “不稳定” 的意思。用于修饰共享可变变量,即没有使用 final(不可变变量) 关键字修饰的实例变量或静态变量,相应的变量就被称为 volatile 变量,如下: private volatile String name; volatile 关 阅读全文
posted @ 2020-11-19 19:52 Java程序员进阶 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 更多内容,前往个人博客 一、通过synchronize 中的 wait 和 notify 实现 【1】我们可以将生产者和消费者需要的方法写在公共类中 1 package com.yintong.concurrent; 2 3 import java.util.LinkedList; 4 5 publ 阅读全文
posted @ 2020-11-19 19:42 Java程序员进阶 阅读(2182) 评论(0) 推荐(0) 编辑
摘要: 更多内容,前往个人博客 当说到 Netty 线程模型的时候,一般首先会想到经典的 Reactor 线程模型,尽管不同的 NIO 框架对于 Reactor 模式的实现存在差异,但本质上还是遵循了 Reactor 的基础线程模式。 一、Reactor 单线程模型 无论是C++ 还是 Java 编写的网络 阅读全文
posted @ 2020-11-19 17:36 Java程序员进阶 阅读(343) 评论(0) 推荐(0) 编辑
摘要: 一、粘包出现的原因 服务端与客户端没有约定好要使用的数据结构。Socket Client实际是将数据包发送到一个缓存 buffer中,通过 buffer刷到数据链路层。因服务端接收数据包时,不能断定数据包1何时结束,就有可能出现数据包2的部分数据结合数据包1发送出去,导致服务器读取数据包1时包含了数 阅读全文
posted @ 2020-11-19 17:31 Java程序员进阶 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 优秀博文:IT-BLOG-CN 序列化 :把对象转换为字节序列存储于磁盘或者进行网络传输的过程称为对象的序列化。反序列化:把磁盘或网络节点上的字节序列恢复到对象的过程称为对象的反序列化。 一、序列化对象 【1】必须实现序列化接口 Serializable:Java.io.Serializable 接 阅读全文
posted @ 2020-11-19 17:21 Java程序员进阶 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 更多内容,前往个人博客 Protobuf 全称:Google Protocol Buffers,由谷歌开源而来,经谷歌内部测试使用。它将数据结构以 .proto 文件进行描述,通过代码生成工具可以生成对应数据结构的 POJO 对象和 Protobuf 相关的方法和属性。 一、 Protocol 的特 阅读全文
posted @ 2020-11-19 17:17 Java程序员进阶 阅读(1349) 评论(0) 推荐(0) 编辑
摘要: 更多内容,前往个人博客 Thrift 源于 Facebook,在 2007 年 Facebook 将 Thrift 作为一个开源项目提交给了 Apache 基金会。对于当时的 Facebook 来说,创造 Thrift 是为了解决 Facebook 各系统间大数据量的传输通信以及系统之间语言环境不同 阅读全文
posted @ 2020-11-19 17:12 Java程序员进阶 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 更多内容,前往个人博客 零拷贝是指避免在用户态(User-space)与内核态(Kernel-space)之间来回拷贝数据的技术。 一、传统 IO 传统 IO(InputStream/OutputStream)读取数据并通过网络发送数据的流程,如下图: ​ 【1】当用户空间使用 read() 询问内 阅读全文
posted @ 2020-11-19 17:09 Java程序员进阶 阅读(33) 评论(0) 推荐(0) 编辑
摘要: 一、BIO、NIO 和 AIO 【1】阻塞 IO(Blocking I/O):同步阻塞I/O模式,当一条线程执行 read() 或者 write() 方法时,这条线程会一直阻塞直到读取一些数据或者写出去的数据已经全部写出,在这期间这条线程不能做任何其他的事情。在活动连接数不是特别高(小于单机1000 阅读全文
posted @ 2020-11-19 17:07 Java程序员进阶 阅读(92) 评论(0) 推荐(0) 编辑
摘要: Dubbo 底层使用 Netty 作为网络通信框架。【网络传输问题】:相对于传统的 RPC 或者 RMI 等方式的远程服务过程调用采用了同步阻塞IO,当客户端的并发压力或者网络时延增长之后,同步阻塞 I/O 会由于频繁的等待导致 I/O 线程经常性阻塞,由于线程无法高效的工作,I/O处理能力自然会下 阅读全文
posted @ 2020-11-19 17:06 Java程序员进阶 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 一、阻塞IO / 非阻塞NIO 阻塞IO:当一条线程执行 read() 或者 write() 方法时,这条线程会一直阻塞直到读取到了一些数据或者要写出去的数据已经全部写出,在这期间这条线程不能做任何其他的事情。 非阻塞NIO:NIO 与原有的 IO 有同样的作用和目的,但是使用的方式完全不同,NIO 阅读全文
posted @ 2020-11-19 16:53 Java程序员进阶 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 当使用 12306 抢票成功后,就会进入付款界面,这个时候就会出现一个订单倒计时,下面我们就对付款倒计时的功能实现,进行深入学习和介绍,界面展示如下:​ 如何实现付款及时呢,首先用户下单后,存储用户的下单时间。下面介绍四种系统自动取消订单的方案: 一、DelayQueue 延时无界阻塞队列 我们的第 阅读全文
posted @ 2020-11-19 16:51 Java程序员进阶 阅读(3788) 评论(0) 推荐(1) 编辑
摘要: 这里说的 js 跨域是指通过 js 在不同的域之间进行数据传输或通信,例如通过 ajax 向一个不同的域请求数据,或者通过 js 获取页面中不同域中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域 举个简单例子感受一下: ☛ 当我们通过 9105 端口的 js 服务访问 阅读全文
posted @ 2020-11-19 15:14 Java程序员进阶 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 一、Session 介绍 Session 一词直译为 “会话”,意指有始有终的一系列动作/消息。Session 是 Web 应用蓬勃发展的产物之一。在 Web 应用中隐含有“面向连接”和“状态保持”两个含义,同时也指代了 Web 服务器与客户端之间进行状态保持的解决方案。​在 Web 应用诞生之初, 阅读全文
posted @ 2020-11-19 15:10 Java程序员进阶 阅读(300) 评论(0) 推荐(0) 编辑