自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(87)
  • 资源 (1)
  • 收藏
  • 关注

原创 Netty面试指北

基础1、tcp(握手和挥手)和udp参考https://www.cnblogs.com/fundebug/p/differences-of-tcp-and-udp.html2、BIO、NIO、AIO参考https://blog.csdn.net/qq_30051265/article/details/105585299更详细的资料参考https://www.jianshu.com/p/486b0965c2963、select、poll、epoll参考https://www.jianshu.co

2020-06-28 13:11:21 237

原创 Netty从零RPC——编解码器

源码地址:https://github.com/MAXAmbitious/netty-rpc上一篇博文我们搭建了一个基础的RPC框架,现在我们来实现基于Protostuff的Netty编解码器。为啥要用Protostuff原生的protobuf,需要手写.proto文件(也就是定义协议),再通过编译生成相应的Java代码,再通过相应的API完成序列化和反序列化。编译生成的Java代码有上...

2020-04-20 14:14:16 449

转载 (转)Linux IO模式及 select、poll、epoll详解

https://segmentfault.com/a/1190000003063859

2020-04-17 17:56:43 206

原创 BIO、NIO和AIO

BIOBIO全称是Blocking IO,是JDK1.4之前的传统IO模型,本身是同步阻塞模式。线程发起IO请求后,一直阻塞IO,直到缓冲区数据就绪后,再进入下一步操作。针对网络通信都是一请求一应答的方式,虽然简化了上层的应用开发,但在性能和可靠性方面存在着巨大瓶颈,试想一下如果每个请求都需要新建一个线程来专门处理,那么在高并发的场景下,机器资源很快就会被耗尽。NIONIO也叫Non-Bl...

2020-04-17 17:40:38 126

原创 TCP和UDP

TCPTCP (Transmission Control Protocol) 是面向连接的、提供端到端可靠的数据流(flow of data)。TCP 提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。三次握手(1)首先客户端向服务器端发送一段TCP报文,其中:标记位为SYN,表示“请求建立新连接”;序号为Seq=X(X一般为1);随后客户端进入SYN-...

2020-04-17 17:17:02 251

原创 Java面试手册笔记

1、如何在两个线程间共享数据通过在线程之间共享对象就可以了,然后通过wait/notify/notifyAll、await/signal/signalAll进行唤起和等待,比方说阻塞队列BlockingQueue就是为线程之间共享数据而设计的2、如果你提交任务时,线程池队列已满,这时会发生什么如果你使用的LinkedBlockingQueue,也就是无界队列的话,没关系,继续添加任务到阻塞...

2020-04-14 11:11:37 367

原创 SQL优化手册

SQL优化手册1、in vs or对索引字段或非索引字段单个值操作时,两者无异;但是对非索引字段多个值操作,相比in,or效率会随着值的个数增加效率相对下滑2、group by vs distinct案例:select count(distinct name) from student这个sql作用是统计学生表不重复姓名的总数优化方案1:select count() from (sel...

2020-03-20 10:37:22 297

原创 基于Retrofit2的java sdk封装

Retrofit2拓展Retrofit2架构全面解析参考文章https://blog.csdn.net/qq_29152241/article/details/82177648,这篇文章详细介绍了Retrofit2的源码及架构,个人觉得非常不错。基于Retrofit2的java sdk封装调用图代码实现由于涉及模块较多不便展示,有需要可以留言交流...

2020-01-15 15:12:41 341

原创 web session

web sessionsessionid是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个session,有一个sessionid和它对应。tomcat生成的sessionid叫做jsessionid。session在访问tomcat服务器HttpServletRequest的getSession(true)的时候创建,tomcat的ManagerBase类提供创建sessioni...

2020-01-14 15:22:00 496

原创 候鸟

我在南国之秋的苍穹,寻寻觅觅远方来访的候鸟,直到梦中,故国的山茶花开了。

2019-08-16 09:57:07 226

原创 windows下Apache.RocketMQ安装部署

引文:windows下Apache.RocketMQ安装部署本文主要对引文中关于RocketMQ插件部署遇到的问题进行补充说明。在部署RocketMQ插件时,执行maven指令mvn spring-boot:run时遇到org.apache.rocketmq:rocketmq-tools:jar:4.4.0-SNAPSHOT包无法下载的问题:[INFO] BUILD FAILURE[INF...

2019-02-18 15:09:46 714 2

原创 微信第三方平台公众号授权流程7-代公众号发起网页授权

简介在公众号授权托管给第三方平台后,第三方平台可以根据本文档相关说明,代替授权公众号发起网页授权。关于OAuth2.0的详细介绍,可以参考OAuth2.0协议标准作为第三方平台开发商,需要拥有自己的appid以及secret(在创建第三方平台并获得审核成功后可以获取),以及确保授权的公众号具备授权作用域的权限,以及用于回调的域名。授权流程微信目前支持Authorization code授权...

2019-01-15 14:18:52 2033 6

原创 微信第三方平台公众号授权流程6-公众号基本信息

该API用于获取授权方的基本信息,包括头像、昵称、帐号类型、认证类型、微信号、原始ID和二维码图片URL。需要特别记录授权方的帐号类型,在消息及事件推送时,对于不具备客服接口的公众号,需要在5秒内立即响应;而若有客服接口,则可以选择暂时不响应,而选择后续通过客服接口来发送消息触达粉丝。代码如下:/** * 查询公众号基本信息 * @param appid */ public ...

2019-01-15 14:16:42 565

原创 微信第三方平台公众号授权流程5-授权信息

该API用于使用授权码换取授权公众号或小程序的授权信息,并换取authorizer_access_token和authorizer_refresh_token。 授权码的获取,需要在用户在第三方平台授权页中完成授权流程后,在回调URI中通过URL参数提供给第三方平台方。请注意,由于现在公众号或小程序可以自定义选择部分权限授权给第三方平台,因此第三方平台开发者需要通过该接口来获取公众号或小程序具体授...

2019-01-15 14:16:21 513

原创 微信第三方平台公众号授权流程4-pre_auth_code

该API用于获取预授权码。预授权码用于公众号或小程序授权时的第三方平台方安全验证。web层代码如下:/** * 授权回调 * @param resp */ @RequestMapping(value = "/wechat/redirectAuthPage") @ResponseBody public void redirectAuthPage(HttpServletReque...

2019-01-15 14:15:48 1752 6

原创 微信第三方平台公众号授权流程3-component_access_token

第三方平台component_access_token是第三方平台的下文中接口的调用凭据,也叫做令牌(component_access_token)。每个令牌是存在有效期(2小时)的,且令牌的调用不是无限制的,请第三方平台做好令牌的管理,在令牌快过期时(比如1小时50分)再进行刷新。代码如下:/** * 获取第三方平台访问公众号token * @return */ public ...

2019-01-15 14:15:26 1135

原创 微信第三方平台公众号授权流程2—推送component_verify_ticket协议

公众号授权给第三方平台的技术实现流程概览推送component_verify_ticket协议在第三方平台创建审核通过后,微信服务器会向其“授权事件接收URL”每隔10分钟定时推送component_verify_ticket。第三方平台方在收到ticket推送后也需进行解密),接收到后必须直接返回字符串success。web层代码如下:/** * 授权事件接收 * * @...

2019-01-15 14:15:05 2604 22

原创 微信第三方平台公众号授权流程1—第三方平台概述概述

一、概述公众平台第三方平台是为了让公众号或小程序运营者,在面向垂直行业需求时,可以一键授权给第三方平台(并且可以同时授权给多家第三方),通过第三方平台来完成业务,开放给所有通过开发者资质认证后的开发者使用。从具体的业务场景上说,第三方平台包括以下场景:1、提供行业解决方案,如针对电商行业的解决方案,或针对旅游行业的解决方案等2、对公众平台功能的优化,如专门优化图文消息视觉样式和排版的工具,...

2019-01-15 14:14:37 3114

转载 Java8新特性(转自http://www.runoob.com/java/java8-new-features.html)

概述Java8 新增了非常多的特性,我们主要讨论以下几个:Lambda 表达式 − Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)。方法引用 − 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。默认方法 − 默认方法就是一个在接口里面有了一个实现...

2018-12-14 11:36:03 526

原创 窗外

雨在屋檐搁浅,枯叶蝶在暮色探戈,夜莺吹响巴赫的口风琴,晚风捎来诗的信笺,我在窗外等你。

2018-12-07 11:19:11 292 1

原创 黄金时代

昏黄的风婆娑了这宁静的夜色顺道拐走了那个善良的女孩我看她愈模糊的笑靥一如初见那是我的黄金时代

2018-12-07 11:10:30 279

原创 叶落

一片绿叶,划过面颊,追逐我的视线缓缓着地。我试想它被树枝束缚,不情愿地扭动着躯体,召唤自然之神的解救。我试想它被卷入空中,自由地翱翔于苍穹之上,呼吸着牢笼外的清新空气。我试想它面朝蓝天,在挣扎中飘落,眼眸深处流淌着的热泪。可我发现,它安静地躺在地上,我想,它大概睡着了。...

2018-12-07 11:06:36 207

原创 Dubbo源码解读之动态代理

前言或许我们已悉知Java的动态代理的方式:jdk——通过接口中的方法名,在动态生成的代理类中调用业务实现类的同名方法;cglib——通过继承业务类,生成的动态代理类是业务类的子类,通过重写业务方法进行代理。dubbo在沿用java的jdk方式外,还采取了javassist方式——通过字节码生成代替反射。Dubbo代理概览类图(这里只包括我们比较常用的代理类)从类图我们可以看出Dubbo...

2018-11-05 15:08:41 4301

原创 kettle进阶之database join

前言这并不是一篇入门教学,且不是一篇高阶教学,仅仅针对kettle的database join。那么问题来了,kettle的database join是什么?简而言之,不同库之间sql语句传值(个人自定义,如有不当,请海涵)。案例1——一条数据传值数据库A中有一张学生表student,表中有一个字段最近更新时间(last_update_date),数据库B中有一张教师表teacher,同样...

2018-10-25 10:51:16 4269 2

原创 微信小程序二维码(JAVA)

前言最近在做小程序相关的项目,之前也在网上找过很多资料,遇到不少坑,和大家分享一下成果。简介小程序获取二维码有官网三种接口:POST https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN:获取小程序二维码,适用于需要的码数量较少的业务场景。POST https://api.w...

2018-10-24 17:30:37 1124 5

原创 Apollo入门教程(Windows)

简介Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。本地快速部署下载安装包https://github.com/nobodyiam/apollo-build-scripts根据根目录sql文件夹下的脚本在mysql5.6+数据库新建Apoll...

2018-09-26 15:51:18 4472

转载 (转)Dubbo—Provider到Consumer实现细节

概述本文介绍以下内容:初始化过程细节远程调用细节远程通讯细节初始化过程细节解析服务基于 dubbo.jar 内的 META-INF/spring.handlers 配置,Spring 在遇到 dubbo 名称空间时,会回调 DubboNamespaceHandler。所有 dubbo 的标签,都统一用 DubboBeanDefinitionParser 进行解析,基于一对一属性...

2018-09-21 11:13:26 4297

原创 Dubbo—Hystrix接入

概述本文将介绍以下内容:Hystrix简介Dubbo接入HystrixHystrix简介Hystrix是Netflix开源的一款容错系统,主要用于解决服务提供者不可用带来的服务雪崩效应。Hystrix容错方案主要有以下几种:熔断:只作用在服务调用者,即consumer端,熔断器开关由关闭到打开的状态转换是通过当前服务健康状况(请求失败数 / 请求总数)和设定阈值比较决定的。降级...

2018-09-20 18:32:07 1589

原创 Dubbo—Cluster剖析

概述本文将介绍以下内容:集群容错集群容错模式自定义扩展集群集群容错集群容错在集群调用失败时,Dubbo 提供了多种容错方案,缺省为 failover 重试。各节点关系:这里的 Invoker 是 Provider 的一个可调用 Service 的抽象,Invoker 封装了 Provider 地址及 Service 接口信息Directory 代表多个 Invoker,...

2018-09-20 11:01:33 1842

原创 Dubbo—Filter剖析

你是湖光潋滟中一掠而过的飞鸟,面对朝圣者的赞美,沉醉在无止境的自诩中。当暮色降临,你化身迷途的羔羊,被黑夜释意玩弄的惆怅,无处安放的彷徨,透过光和影的交织摸索前行。遥望远方,不一定灯火辉煌,却一定诗意盎然。...

2018-09-19 18:28:59 3379

原创 Netty从零RPC——基础模块搭建

前言Dubbo是基于Netty搭建的RPC框架,为了更好地理解Netty在Dubbo中的应用,仿照Dubbo搭建了一个简易版的RPC框架。实现新建DubboRequest类(相当于POJO),作为消息载体package com.beidao.netty.dubbo.facade.api;import java.io.Serializable;import java.uti...

2018-09-14 15:49:06 594 2

转载 (转)看 Netty 在 Dubbo 中如何应用

概述dubbo 的 Consumer 消费者如何使用 Netty dubbo 的 Provider 提供者如何使用 Netty前言众所周知,国内知名框架 Dubbo 底层使用的是 Netty 作为网络通信,那么内部到底是如何使用的呢?今天我们就来一探究竟。1. dubbo 的 Consumer 消费者如何使用 Netty注意:此次代码使用了从 github 上 clo...

2018-09-14 15:10:05 107

原创 netty—websocket demo(源码见github)

WebSocket简介WebSocket协议支持(在受控环境中运行不受信任的代码的)客户端与(选择加入该代码的通信的)远程主机之间进行全双工通信。用于此的安全模型是Web浏览器常用的基于原始的安全模式。 协议包括一个开放的握手以及随后的TCP层上的消息帧。 该技术的目标是为基于浏览器的、需要和服务器进行双向通信的(服务器不能依赖于打开多个HTTP连接(例如,使用XMLHttpRequest或&...

2018-09-13 11:42:20 1057

翻译 (译)Netty In Action第九章—单元测试

这章涵盖一下内容 - 单元测试 - EmbeddedChannel概览 - 使用EmbeddedChannel测试ChannelHandlersChannelHandlers是Netty应用程序的重要因素,所以彻底测试它们应该是开发过程的标准部分。最佳实践要求你进行测试不仅要证明你的实现是正确的,而且容易隔离因代码修改而突然出现的问题。这类测试叫做单元测试。虽然单元测试没有通用的定义...

2018-09-12 15:32:40 134

翻译 (译)Netty In Action第八章—Bootstrapping

这章涵盖以下内容: - Bootstrapping客户端和服务端 - 从Channel内bootstraping客户端 - 增加ChannelHandlers - 使用ChannelOptions和属性已经深入学习了ChannelPipelines、ChannelHandlers和编码解码器,你的下一个问题可能是,”所有这些组件如何加入到工作的应用程序中?“答案就是“Bootstr...

2018-09-11 14:49:32 301

翻译 (译)Netty In Action第七章—事件循环和线程模型

请尊重劳动成果,未经本人允许,拒绝转载,谢谢!这章包涵以下内容 - 线程模型概览 - 事件循环概念和实现 - 任务调度 - 实现细节简单地说,线程模型指定了OS、编程语言、框架或应用程序的上下文中的线程管理的关键方面。线程创造的方式和时间明显对于应用程序代码的执行有着重大的影响,所以开发人员有必要去理解与不同模型相关的权衡。无论他们自己选择模型还是通过采用框架语言隐式获...

2018-09-07 10:46:50 150

翻译 (译)Netty In Action第六章—channelhandler 和 channelpipeline

这一章涵盖以下内容: - ChannelHandler 和 ChannelPipeline的APIs介绍 - 资源泄漏检测 - 异常处理 在前一章节你已经学习了ByteBuf——Netty的数据容器。随着在这一章研究Netty的数据流和处理组件,我们将建立你所学到的知识,并且同时你将开始发现框架中的重要元素。 你已经知道一个Channel-Pipeline中可以声明多个ChannelHa...

2018-09-05 23:24:35 213

原创 netty—buffers(缓冲)

缓冲区是一个重要的组建,它是API的一部分。Netty提供了一个强大的缓冲区实现用于表示一个字节序列,并帮助你操作原始字节或自定义的POJO。Netty的ByteBuf相当于JDK的ByteBuffer,ByteBuf的作用是在Netty中通过Channel传输数据。它被重新设计以解决JDK的ByteBuffer中的一些问题,从而使开发人员开发网络应用程序显得更有效率。Buffer API...

2018-09-04 14:42:05 476

原创 transports(传输)

OIO->NIO如果你曾经使用Java提供的网络接口工作过,你可能已经遇到过想从阻塞传输切换到非阻塞传输的情况,这种切换是比较困难的, 因为阻塞IO和非阻塞IO使用的API有很大的差异;Netty提供了上层的传输实现接口使得这种情况变得简单。我们可以让所写的代码尽可能通用,而不会依赖一些实现相关的APIs。当我们想切换传输方式的时候不需要花很大的精力和时间来重构代码。使用Jav...

2018-09-04 10:41:11 287

原创 netty核心概念

在这一章我们将讨论Netty的10个核心类,清楚了解他们的结构对使用Netty很有用。可能有一些不会再工作中用到,但是也有一些很常用也很核 心,你会遇到。 - Bootstrap or ServerBootstrap - EventLoop - EventLoopGroup - ChannelPipeline - Channel - Future or ChannelFuture ...

2018-09-03 16:43:34 433

空空如也

空空如也

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

TA关注的人

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