消息队列RocketMQ概述、安装启动、原理、应用
第1章 RocketMQ概述 一、MQ概述 1 、MQ简介 MQ,Message Queue,是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了消息生产、存储、消费全过程API的软件系统。消息即数据。一般消息的体量不会很大。 2 、MQ用途 从网上可以查看到很多的关于MQ用途的叙述,但总结起来其实就以下三点。 限流削峰 MQ可以将系统的超量请求暂存其中,以便系统后期可以慢慢进行处理,从而避免了请求的丢失或系统被压垮。 异步解耦 上游系统对下游系统的调用若为同步调用,则会大大降低系统的吞吐量与并发度,且系统耦合度太高。而异步调用则会解决这些问题。所以两层之间若要实现由同步到异步的转化,一般性做法就是,在这两层间添加一个MQ层。 数据收集 分布式系统会产生海量级数据流,如:业务日志、监控数据、用户行为等。针对这些数据流进行实时或批量采集汇总,然后对这些数据流进行大数据分析,这是当前互联网平台的必备技术。通过MQ完成此类数据收集是最好的选择。 ### 3 、常见MQ产品 ActiveMQ ActiveMQ是使用Java语言开发一款MQ产品。早期很多公司与项 ...
Netty-04-Netty优化和源码(还没看)
Netty-04-Netty优化和源码 1. 优化 1.1 扩展序列化算法 序列化,反序列化主要用在消息正文的转换上 序列化时,需要将 Java 对象变为要传输的数据(可以是 byte[],或 json 等,最终都需要变成 byte[]) 反序列化时,需要将传入的正文数据还原成 Java 对象,便于处理 目前的代码仅支持 Java 自带的序列化,反序列化机制,核心代码如下 1234567891011// 反序列化byte[] body = new byte[bodyLength];byteByf.readBytes(body);ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(body));Message message = (Message) in.readObject();message.setSequenceId(sequenceId);// 序列化ByteArrayOutputStream out = new ByteArrayOutputStream();new ObjectOutp ...
Netty-03-Netty进阶(粘包与半包、解决方案、协议设计解析)
Netty-03-Netty进阶 1. 粘包与半包 1.1 粘包现象 服务端代码 12345678910111213141516171819202122232425262728293031323334353637383940414243444546public class HelloWorldServer { static final Logger log = LoggerFactory.getLogger(HelloWorldServer.class); void start() { NioEventLoopGroup boss = new NioEventLoopGroup(1); NioEventLoopGroup worker = new NioEventLoopGroup(); try { ServerBootstrap serverBootstrap = new ServerBootstrap(); serverBootstrap.channel( ...
Netty-02-Netty入门(HelloWorld、流程梳理、EventLoop、Channel、Handler、Future、ByteBuf)
Netty-02-Netty入门 1. 概述 1.1 Netty 是什么? 12Netty is an asynchronous event-driven network application frameworkfor rapid development of maintainable high performance protocol servers & clients. Netty 是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端 1.2 Netty 的作者 他还是另一个著名网络应用框架 Mina 的重要贡献者 1.3 Netty 的地位 Netty 在 Java 网络应用框架中的地位就好比:Spring 框架在 JavaEE 开发中的地位 以下的框架都使用了 Netty,因为它们有网络通信需求! Cassandra - nosql 数据库 Spark - 大数据分布式计算框架 Hadoop - 大数据分布式存储框架 RocketMQ - ali 开源的消息队列 ElasticSearch - 搜索引擎 gRPC - rpc 框 ...
Netty-01-NIO基础(三大组件、Selecter、NIOvsBIO)
Netty-01-NIO基础 non-blocking io 非阻塞 IO 前置知识: nio三大组件,channel,buffer,selector。 channel是通道,可以是网络socket通道,也可以是文件传输的通道。 buffer是应用程序到通道直接的桥梁,数据缓存区,有bytebuffer,也可以有charbuffer。buffer的数据结构支持读写,所以在读写转换的时候需要调用api flip。还有很多其他api selector,每次读取通道数据的时候要么阻塞,要么就是不断的无意义轮询。我们可以把channel注册到seletor里,监听seletor的事件,读事件,写事件,连接事件,根据事件再来操作。 断开连接也会产生读事件,值为-1. 1. 三大组件 1.1 Channel & Buffer channel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么是输入,要么是输出,channel 比 stream 更为底层 常 ...
3天精通网页布局(学完这课网页布局可以随意玩)
视频教程:3天精通网页布局(学完这课网页布局可以随意玩) https://www.bilibili.com/video/BV1aJ411i7jz/ 一、DIV+CSS页面布局实战 参考页面地址:https://www.lmonkey.com 效果 页面布局常用标签 123456789<div></div>无意义块状元素标签<span></span> 无意义行内元素标签<p></p> 段落标签<ul></ul> 无序列表<li></li> 列表项<a></a> 超链接标签<img /> 图片标签<i></i> 斜体标签<b></b>粗体标签 页面布局常用选择器 12345id选择器 #id类选择器 .class关系选择器 div p、div>p、div,p伪类选择器 hover结构性伪类选择器:E:after、E:before、E:nth-c ...
JQuery笔记(入门、常用API、事件、其他方法)
一、jQuery 入门 1. 概述 1.1 JavaScript 库 仓库:可以把很多东西放到这个仓库里面。找东西只需要到仓库里面查找到就可以了。 JavaScript 库:即 library,是一个封装好的特定的集合(方法和函数)。从封装一大堆函数的角度理解库,就是在这个库中,封装了很多预先定义好的函数在里面,比如动画 animate、hide、show,比如获取元素等。 简单理解:就是一个JS文件,里面对我们原生js代码进行了封装,存放到里面。这样我们可以快速高效的使用这些封装好的功能了。 比如 jQuery,就是为了快速方便的操作 DOM,里面基本都是函数(方法)。 常见的 JavaScript 库: - jQuery - Prototype - YuI - Dojo - Ext JS - 移动端的zepto 这些库都是对原生JavaScript的封装,内部都是用 JavaScript 实现的,我们主要学习的是jQuery。 1.2 jQuery 的概念 jQuery 是 一个快速、简洁的 JavaScript 库,其设计的宗旨是 “write Less , Do More”, ...
JS相关WebApi(DOM基础、事件高级、BOM基础、PC端网页特效、移动端网页特效、本地存储)
一、Web Api 简介 1. Web APIs 和 JS 基础关联性 1.1 JS 组成 ECMAScript: JS 语法 BOM: Web API DOM: Web API 2. API 和 Web API 2.1 API API:Application Programming Interface,应用程序接口。 2.2 Web API Web API 是浏览器提供得一套操作浏览器功能和页面元素得 API(BOM 和 DOM)。 二、DOM 基础(Document Object Model) 1. DOM 简介 1.1 什么是 DOM 文档对象模型(Document Object Model,简称DOM ),是W3C组织推荐的处理可扩展标记语言(HTML或者XML)的标准编程接口。 W3C已经定义了一系列的DOM接口,通过这些DOM接口可以改变网页的内容、结构和样式。 1.2 DOM 树 文档:一个页面就是一个文档,DOM中使用document表示 元素:页面中的所有标签都是元素,DOM中使用element表示 节点:网页中的所有内容都是节点(标签、属性、文本、注释等),D ...
JS基础语法(变量、数据类型、运算符、流程控制、函数、数组、作用域、对象、内置对象)
笔记:https://github.com/Hacker-C/notes/blob/master/JavaScript/ch01.md 视频教程:https://www.bilibili.com/video/BV1Y84y1L7Nn/ 一、初识JS 1. JavaScript历史 布兰登艾奇(Brendan Eich, 1961年~)。 神奇的大哥在1995年利用10天完成JavaScript设计。 网景公司最初命名为LiveScript ,后来在与Sun合作之后将其改名为JavaScript. 2. JavaScript是什么 javaScript是世界上最流行的语言之一,是一种运行在客户端的脚本语言(Script是脚本的意思)脚本语言:不需要编译,运行过程中由js解释器(js引擎)逐行来进行解释并执行。 现在也可以基于Nodejs技术进行服务器端编程 3. JavaScript的作 表单动态校验(密码强度检测) ( JS产生最初的目的) 网页特效 服务端开发(Node.js) 桌面程序(Electron) App(Cordova) 控制硬件—物联网(Ruff游戏F发(cocos2 ...
CSS笔记(基础选择器、复合选择器、盒子模型、浮动、定位、CSS高级)
一、CSS 简介与基础选择器 1. CSS 简介 1.1 HTML 的局限性 HTML 是网友的骨架,只关注内容的语义。例如<h1>表示大标题,<p>表示段落。 早期的时候,HTML 只能做一些简单的样式,网页非常丑,而且使 HTML 代码臃肿。 1.2 CSS-网页的美容师 CSS 是 层叠样式表(Cascading Style Sheets)的简称。 CSS 也是一种标记语言。 CSS 主要用于设置 HTML 页面中的文本内容(字体、大小、对齐方式)、图片的外形(宽高、边框样式、边距等)以及版面的布局和外观显示样式。· HTML 呈现结构,CSS 决定样式,结构与样式分离。 1.2 CSS 语法规范 CSS 规则由两个部分组成:选择器和一条或多条声明。 1.3 CSS 代码风格 展开式 选择器,属性名,属性关键字全部小写 空格规范 2. CSS 基础选择器 2.1 选择器的作用 选择器就是根据不同需求把不同标签选择出来。 2.2 选择器分类 选择器分为基础选择器和复合选择器两大类。 基础选择器由单个选择器组成 基础选择器包括:标签选择器、类选择器、id ...