Netty

你跟涨薪只差这份Java核心知识点文档,读懂它你就是技术大佬!!

二次信任 提交于 2020-05-06 09:16:47
前言: 之前有看过很多的Java知识点资料,但是很多资料都是零零散散的并且不全面,像这样一整份PDF文档,分知识点整理好的资料并不多了,所以我觉得我是捡到宝了,所以特意分享给大家,需要的人可以自取,个人觉得很受用,这个自己判断要不要吧!文末有领取方式 目录 1.Jvm 2.Java合集 3.Java多线程并发 4.Java基础 5.spring原理 6.微服务 7.NETTY与RPC 8.网络 9.日志 10.zookeeper 11.Kafka 12.RabbitMQ 13.Hbase 14.MongoDB 15.Cassandra 16.设计模式 17.负载均衡 18.数据库 19.一致性算法 20.Java算法 21.数据结构 22.加密算法 23.分布式缓存 24.Hadoop 25.Spark 26.Storm 27.YARN 28.机器学习 29.云计算 JVM JVM 内存区域 JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接的交互 Java合集 JAVA 多线程并发 Spring 原理 它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是 Spring仍然可以和其他的框架无缝整合。 Spring 特点 轻量级

面试题:项目经验 已看1 看不懂

柔情痞子 提交于 2020-05-06 07:12:44
项目经验 面试官在一开始会让你进行自我介绍,主要是想让你介绍一下自己做过的一些项目,看看你对这些项目的了解程度,因为很多人简历上写的项目并非都是从头到尾都参与的,有些只是参与并实现了其中的一些模块而已,或是接手维护别人的项目,所以在你简历上所写的和面试过程中所说的项目经验,你自己必须能够了解来龙去脉,因为面试官肯定会根据你的项目描述,对项目中的实现原理,或为什么要这样实现进行提问,这时不至于木讷住而不知如何作答,如此局面只会大大降低面试分。 场景对话: 面试官:(拿着简历)讲讲你最近做的这个项目 我:&……%¥#*&¥@%¥!,说了一大通(不知道面试官听进去多少,面试官会挑他会的进行提问) 面试官:你说这个项目中用到了netty,能大概讲讲netty的线程模型么? 我:(幸好我看过netty的源码)netty通过Reactor模型基于多路复用器接收并处理用户请求(能讲就多讲一点),内部实现了两个线程池,boss线程池和work线程池,其中boss线程池的线程负责处理请求的accept事件,当接收到accept事件的请求时,把对应的socket封装到一个NioSocketChannel中,并交给work线程池,其中work线程池负责请求的read和write事件(通过口述加画图的方式,把请求的执行过程大概描述了一遍,时间有限,也不可能把所有的细节都说完,挑重点讲,挑记忆深刻的讲)

protobuf + maven 爬坑记

寵の児 提交于 2020-05-06 03:44:03
疯狂创客圈 死磕Netty 亿级流量架构系列之20 【 博客园 总入口 】 本文说明 本篇是 netty+Protobuf 整合实战的 第一篇 ,完成一个 基于Netty + Protobuf 实战案例。 要实现高并发、大流量,首先需要高传输效率的协议,Protobuf 是迄今为止最高性能之一的传输格式,我们首先将 Protobuf 和Netty整合起来。 顺便说明下: 本文的内容只是一个 初稿、初稿 ,本文的知识,在《 Netty Zookeeper Redis 高并发实战 》一书时,进行大篇幅的完善和更新,并且进行的源码的升级。 博客和书不一样,书的内容更加系统化、全面化,更加层层升入、层次分明、更多次的错误排查,请大家以书的内容为准。 本文的最终内容, 具体请参考 疯狂创客圈 倾力编著, 机械工业出版社 出版的 《 Netty Zookeeper Redis 高并发实战 》一书 。 ​ 本案例源代码 源代码下载链接: netty+protobuf (整合源代码) 1.1. protobuf 代码生成 在创建好**.proto 协议 文件之后,就需要按照好了对应版本的 protoc.exe工具 。 protoc.exe工具 是生成Java文件的工具软件。 安装的方法,前面已经讲了。 这里需要提示一下版本。Java 的maven 配置文件中 proto 包的版本,和 .proto

Java大数据秋招面试题

怎甘沉沦 提交于 2020-05-04 08:30:04
以下为整理的自己秋招遇到的面试题; 主要是Java和大数据相关题型; 根据印象整理了下,有些记不起来了。 死锁、乐观锁、悲观锁 synchronized底层原理及膨胀机制 ReetrantLock底层原理,源码是如何实现公平和非公平的 synchronized和lock的区别 volitale理解?volitale保证可见性的意义 什么是指令重排序,为什么要禁止指令重排序 介绍java中的基本数据类型及所占大小 2的8次方是多少,Integer最小值是多少,说数值 scala中Int和Long是怎么实现的,丰富的API是如何实现,scala中String是怎么实现的,这么多丰富的方法是怎么实现的?隐式转换 介绍Java中你知道的所有Map、Set、List的类,比较他们的区别,哪些是线程安全? 怎样使用线程安全的集合,并发安全的容器都有哪些? HashMap和ConcurrentHashMap的原理 HashMap的key如何设计?HashMap死循环问题 HashMap为什么使用红黑树不使用B树、B+树 说一下平衡二叉树的插入删除操作?树的层序遍历说说? 多进程和多线程的区别,进程和线程的区别? Callable和Runnable的区别谈一谈? 线程怎么实现?讲讲Java中的线程池? 自定义线程池,你是如何考量七大参数的,设计思路?如何优化synchronized,CAS的缺点

如何设计一个百万级的消息推送系统?

自闭症网瘾萝莉.ら 提交于 2020-05-03 22:25:24
前言 首先迟到的祝大家中秋快乐。 最近一周多没有更新了。其实我一直想憋一个大招,分享一些大家感兴趣的干货。 鉴于最近我个人的工作内容,于是利用这三天小长假憋了一个出来(其实是玩了两天🤣)。 先简单说下本次的主题,由于我最近做的是物联网相关的开发工作,其中就不免会遇到和设备的交互。 最主要的工作就是要有一个系统来支持设备的接入、向设备推送消息;同时还得满足大量设备接入的需求。 所以本次分享的内容不但可以满足物联网领域同时还支持以下场景: 基于 WEB 的聊天系统(点对点、群聊)。 WEB 应用中需求服务端推送的场景。 基于 SDK 的消息推送平台。 技术选型 要满足大量的连接数、同时支持双全工通信,并且性能也得有保障。 在 Java 技术栈中进行选型首先自然是排除掉了传统 IO 。 那就只有选 NIO 了,在这个层面其实选择也不多,考虑到社区、资料维护等方面最终选择了 Netty。 最终的架构图如下: 现在看着蒙没关系,下文一一介绍。 协议解析 既然是一个消息系统,那自然得和客户端定义好双方的协议格式。 常见和简单的是 HTTP 协议,但我们的需求中有一项需要是双全工的交互方式,同时 HTTP 更多的是服务于浏览器。我们需要的是一个更加精简的协议,减少许多不必要的数据传输。 因此我觉得最好是在满足业务需求的情况下定制自己的私有协议,在我这个场景下其实有标准的物联网协议。

dubbo源码—service invoke

我们两清 提交于 2020-05-03 21:42:01
dubbo的远程调用过程是怎么样的? dubbo远程过程调用经过了那些处理? 发起远程调用的时候究竟传了什么数据给provider? 要解决这些问题,欢迎一起探讨走进dubbo源码栏目。 在service reference中说了consumer端发起调用的时候使用的是远程服务的本地代理,发起调用的堆栈是 (上面调用堆栈中的filter链先不介绍了,留在后面service reply中介绍,因为consumer和provider的filter链构造过程是类似的) 前面说过consumer在引用服务的时候最终会生成一个proxy,该proxy是实现了对应的服务接口(比如:com.test.service.TestDubboService),而且包含一个InvokerInvocationHandler属性,在proxy的服务接口方法中调用InvokerInvocationHandler.invoke public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { String methodName = method.getName(); Class<?>[] parameterTypes = method.getParameterTypes(); // 判断是否是Object的方法

RATE-MAX alpha冲刺第四天

徘徊边缘 提交于 2020-05-03 15:53:05
RATE-MAX alpha冲刺第四天 组员讨论成果规划 组员 昨日成果 今日计划&进度(尽量详细) 存在问题 洪楷滨 完善接口返回、测试netty 帮后端登陆人员解决问题加快进度 陈炀 更新配置文件 netty测试、登陆功能前后端接口测试 李波 修改响应,进行测试 改进、修改参数、测试 林海峰 初步完成“相遇的朋友”页面的与后端的交互的内容,开始进行聊天页面的后端交互内容编写 整合前端界面、进行选项卡整合 还未测试交互的可行性 林露 大概把个人中心模块基础的请求写了一下 开始管理员模块的编写 有些数据不知道怎么取出来 黄筱宇 测试添加好友的功能与Netty的传输。 帮登陆注册人员解决问题 黄毅 解决 No SessionFactory set的测试错误,初步完成登录注册页面 测试登陆测试、书写交互接口 陈如滨 思索与后端传递数据的方法 尝试与后端进行联调,实现登录 来源: oschina 链接: https://my.oschina.net/u/4265014/blog/4262734

《精通并发与Netty》学习笔记(02

别等时光非礼了梦想. 提交于 2020-05-02 18:31:20
上节我们介绍了开发netty项目所必需的开发环境及工具的使用,这节我们来写第一个netty项目 开发步骤 第一步:打开https://search.maven.org 找到netty依赖库 第二步:打开上节创建的项目,修改build.gradle文件如下图: 第三步:新建类com.ssy.netty.MyServer.class package com.ssy.netty; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioServerSocketChannel; /** * netty作为长连接的服务器基于websoket,实现客户端与服务器端长连接。 */ public class MyServer { public static void main(String[] args) { // 负责接收客户端连接 EventLoopGroup bossGroup = new NioEventLoopGroup(); //

Dubbo源码学习总结系列一 总体认识

坚强是说给别人听的谎言 提交于 2020-05-02 14:32:50
本文写作时,dubbo最高版本是V2.6.0。 写这篇文章主要想回答以下4个问题: 一、dubbo是什么?完成了哪些主要需求? 二、dubbo适用于什么场景? 三、dubbo的总体架构是什么样的? 四、dubbo调用的过程是什么样的? 下面就一一道来。 一、dubbo是什么?完成了哪些主要需求? dubbo是一个面向服务治理(SOA)的分布式RPC框架。 它主要实现了以下一些需求: RPC方面: 实现了基本的RPC过程,开发了DubboProtocol作为默认的实现,并集成了Hession,RMI,HTTP,WebService,Thrift(被改造,与原Thrift不兼容),Rest等远程过程调用框架。基本组成为:Protocol(默认dubbo),Invoker,Transporter(默认netty),Codec2(默认Hession2编码)。 编解码方面提供了Hession2(默认,阿里修改过的 hessian lite )、dubbo、Java、JSON、Thrift(与原Thrift不兼容)、Kryo、FST序列化。 DubboProtocol实现了同步调用、异步请求、回调方法设置、本地调用等等灵活的调用特性。 服务治理方面: 1、实现了集群、容错、负载均衡及路由策略 2、实现了注册功能,完成提供者、消费者注册、订阅通知策略等; 3、对外提供了服务提供者、消费者配置信息

【netty】(1)---BIO NIO AIO演变

自古美人都是妖i 提交于 2020-05-02 12:00:43
BIO NIO AIO演变 Netty是一个提供异步事件驱动的网络应用框架,用以快速开发高性能、高可靠的网络服务器和客户端程序。Netty简化了网络程序的开发,是很多框架和公司都在使用的技术。 Netty并非横空出世,它是在BIO,NIO,AIO演变中的产物,是一种NIO框架。 一、BIO的理解 网络编程的基本模型是Client/Server模型,也就是两个进程之间进行相互通信,其中 服务端提供位置信息(绑定的IP地址和监听端口),客户端通过连接操作向服务端监听的 地址发送连接请求,通过三次握手建立连接 ,如果连接成功,双方就可以通过网络套接字(Socket)进行通信。在基于同步堵塞模式开发中, ServerSocket负责绑定Ip地址,启动监 听端口。Socket负责发起连接操作 。连接成功之后,双方通过输入和输出流进行同步堵塞式通信。 BIO流程图 BIO 全称Block-IO 是一种 阻塞同步的通信模式 。我们常说的StockIO一般指的是BIO。是一个比较传统的通信方式, 模式简单,使用方便。但并发处理能力低,通信耗时,依赖网速 。 BIO 设计原理 : 服务器通过一个 Acceptor 线程负责监听客户端请求和为每个客户端创建一个新的线程进行链路处理。典型的一请求一应答模式。若客户端数量增多,频繁地创建和销毁线程会 给服务器打开很大的压力