「造个轮子」——cicada 源码分析】的更多相关文章

前言 两天前写了文章<「造个轮子」--cicada(轻量级 WEB 框架)> 向大家介绍了 cicada 之后收到很多反馈,也有许多不错的建议. 同时在 GitHub 也收获了 80 几颗 小♥♥(绝对不是刷的..) 也有朋友希望能出一个源码介绍,本文就目前的 v1.0.1 版本来一起分析分析. 没有看错,刚发布就修复了一个 bug,想要试用的请升级到 1.0.1 吧. 技术选型 一般在做一个新玩意之前都会有技术选型的过程,但这点在做 cicada 的时候却异常简单. 因为我的需求是想提供一个…
前言 在前两次的 cicada 版本中其实还不支持读取配置文件,比如对端口.路由的配置. 因此我按照自己的想法创建了一个 issue ,也收集到了一些很不错的建议. 最终其实还是按照我之前的想法来做了这个配置管理. 同时将 cicada 升级到了 v1.0.2. 目标 在做之前是要把需求想好,到底怎样的一个配置管理是对开发人员来说比较友好的? 我认为有以下几点: 可以自定义配置,并且支持不同的环境(开发.测试.生产). 使用灵活.对使用者来说不要有太多的束缚. 理论上来说配置这个东西应当完全独立…
前言 俗话说 「不要重复造轮子」,关于是否有必要不再本次讨论范围. 创建这个项目的主要目的还是提升自己,看看和知名类开源项目的差距以及学习优秀的开源方式. 好了,现在着重来谈谈 cicada 这个项目的核心功能. 我把他定义为一个快速.轻量级 WEB 框架:没有过多的依赖,核心 jar 包仅 30KB. 也仅需要一行代码即可启动一个 HTTP 服务. 特性 现在来谈谈重要的几个特性. 当前版本主要实现了基本的请求.响应.自定义参数以及拦截器功能. 功能虽少,但五脏俱全. 在今后的迭代过程中会逐渐…
在前面两篇中,我们从基本概念理解了canal是一个什么项目,能应用于什么场景,然后通过一个demo体验,有了基本的体感和认识. 从这一篇开始,我们将从源码入手,深入学习canal的实现方式.了解canal相关功能的实现方式,其中有很多机制是非常值得深入了解的,从代码实现角度去学习实时数据订阅与同步的实现与核心技术点.当然,如果要在生产中使用这个开源项目,了解源码更是必不可少,是解决问题和新特性定制的前提条件. 本文使用的版本是1.1.4,这也是笔者写这篇博客时的最新稳定版. 1.准备工作 下载源…
前言 本次 Cicada 已经更新到了 v1.0.3. 主要是解决了两个 issue,#9(Boss线程数好像设置有误 ) #8(怎么返回纯字符串内容不要JSON格式?). 所以本次的主要更新为: Cicada 采用合理的线程分配来处理接入请求线程以及 IO 线程. 支持多种响应方式(以前只有 json,现在支持 text). 为了满足上者引入了 context. 优雅停机. 其中我觉得最核心也最有用的就是这个 Context,并为此重构了大部分代码. 多种响应方式 在起初 Cicada 默认只…
RPC服务 什么叫RPC? RPC[Remote Procedure Call]是指远程过程调用,是一种进程间通信方式,他是一种技术的思想,而不是规范.它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节.即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同.a RPC基本原理,RPC两个核心模块:通讯,序列化. 一次完整的RPC调用流程(同步调用,异步另说)如下: 1)服务消费方(client)调用以本地调用方式调用服…
前言介绍 了解到了SpringCloud,大家都应该知道注册中心,而对于我们从过去到现在,SpringCloud中用的最多的注册中心就是Eureka了,所以深入Eureka的原理和源码,接下来我们要进行讲解下eureka的源码分析,由此应运而产生的本章节的内容. 基本原理 Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样Eureka Server中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到. Eur…
1. 引言     在红黑树--算法导论(15)中学习了红黑树的原理.本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Java这么久,也写过一些小项目,也使用过TreeMap无数次,但到现在才明白它的实现原理).因此本着"不要重复造轮子"的思想,就用这篇博客来记录分析TreeMap源码的过程,也顺便瞅一瞅HashMap. 2. 继承结构 (1) 继承结构 下面是HashMap与TreeMap的继承结构: pu…
前言: 貌似以前自己也写过图片懒加载插件,但是新公司使用的是jQuery.lazyload插件,为了更好的运用,自己还是把源码看了遍,分别记录了如何使用, 插件原理,各个配置属性的完整解释,demo实例,源码分析(较简短),源码分析可以配合使用,配置属性,原理进行阅读,如需转载,请注明出处 博客园 华子yjh 一.如何使用 // 最简单的使用,不带参数 $('img').lazyload(); // 带参数(配置对象),下面配置对象中的各个属性值都是默认的 $('img').lazyload({…
dubbo源码分析1-reference bean创建 dubbo源码分析2-reference bean发起服务方法调用 dubbo源码分析3-service bean的创建与发布 dubbo源码分析4-基于netty的dubbo协议的server dubbo源码分析5-dubbo的扩展点机制 dubbo源码分析6-telnet方式的管理实现 说是扩展点 其实有点DI的意思,只是简单的di 大多框架都会造DI的轮子 dubbo这里是,struts2也是. 机制不是很复杂 更全面的思维导图 即 …