AspNetCore.AsyncInitialization 这个库是用来实现在asp.net core应用程序启动时异步执行异步任务.可参考:如何在ASP.NET Core程序启动时运行异步任务(2).IAsyncInitializer接口就是用来实现执行异步任务的接口,此接口签名: public interface IAsyncInitializer { /// <summary> /// Performs async initialization. /// </summary>…
本文采用以下协议进行授权: 自由转载-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处. cJSON是一个超轻巧,携带方便,单文件,简单的可以作为ANSI-C标准的Json格式解析库. 那什么是Json格式?这里照搬度娘百科的说法: Json(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition – December 1999)…
一.前言 Redis网络库是一个单线程EPOLL模型的网络库,和Memcached使用的libevent相比,它没有那么庞大,代码一共2000多行,因此比较容易分析.其实网上已经有非常多有关这个网络库的分析了,但是我觉得它们的不足在于只是分析了各个文件中各个函数的单独含义,而没有将其统一起来,不能给读者一种宏观的把握.比如我如果想把这个网络库直接拿出来为我所用该怎么办,但是 @浅墨 学长已经完成了这个事,他拿出了Redis网络部分的代码,设计了应用层协议,添加了应用层buffer,定义了服务器类…
提示: springboot提供了一套链接redis的api,也就是个jar包,用到的连接类叫做LettuceConnectionConfiguration,所以我们引入pom时是这样的 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>…
YYModel介绍 YYModel是一个针对iOS/OSX平台的高性能的Model解析库,是属于YYKit的一个组件,创建是ibireme. 其实在YYModel出现之前,已经有非常多的Model解析库,例如JSONModel.Mantle和MJExtension. YYModel从易用性和性能方面均达到了最高水平. 性能   Model解析库对比 特性 High performance: The conversion performance is close to handwriting co…
由于老大在新项目中使用redis的事件库代替了libevent,我也趁着机会读了一遍redis的事件库代码,第一次读到“优美,让人愉快”的代码,加之用xmind制作的类图非常帅,所以留文纪念. Redis的事件库主要集中在ae.h和ae.c中,此外还有ae_epoll.c等底层实现文件,根据系统可选择事件库的实现方式,典型的讲上层实现与底层实现分离的结构. ae.h是事件库函数的定义与使用的结构体,关于结构体的相互联系可参见类图. 除了事件库,Redis还封装了malloc等内存管理函数,为标准…
一.aeCreateEventLoop & aeCreateFileEvent 上一篇文章中,我们已经将服务器启动,只是其中有些细节我们跳过了,比如aeCreateEventLoop函数到底做了什么? 接下来我们要分析ae.c文件,它是整个Redis网络事件框架,其中定义了各个管理事件的函数,比如aeCreateFileEvent,aeDeleteFileEvent分别是注册新的事件和删除事件. 其实aeCreateEventLoop的作用主要是给server->loop申请空间. //ae…
一.从main开始 main函数定义在server.c中,它的内容如下: //server.c int main() { signal(SIGPIPE, SIG_IGN); //忽略SIGPIPE信号,防止给一个已经关闭socket的客户端连续两次发送数据导致SIGPIPE信号 //的产生,它的默认做法是终止进程. server_t server; //创建一个server bzero(&server, sizeof(server)); server.backlog = DEFAULT_LIST…
一.介绍相关 说Redis : 介绍Redis特性,使用场景,使用Jedis操作Redis等. 二.源码分析 1. 数据结构 Redis源码分析(sds):Redis自己封装的C语言字符串类型. Redis源码分析(dict):字典的实现,Hash表. Redis源码分析(adlist):Redis中的双向链表. Redis源码分析(skiplist) :Redis 中的跳跃表,平均O(log n)的查询效率. 2. 内存编码数据结构 Redis源码分析(intset):Redis 特有内存数据…
1. 概述 2. 主流程 3. ShareJoin 3.1 JoinParser 3.2 ShareJoin.processSQL(...) 3.3 BatchSQLJob 3.4 ShareDBJoinHandler 3.5 ShareRowOutPutDataHandler 4. 彩蛋 1. 概述 MyCAT 支持跨库表 Join,目前版本仅支持跨库两表 Join.虽然如此,已经能够满足我们大部分的业务场景.况且,Join 过多的表可能带来的性能问题也是很麻烦的. 本文主要分享: 整体流程.…