开源 | 蚂蚁金服分布式中间件开源第二弹:丰富微服务架构体系
小蚂蚁说:
数据、消息、微服务是蚂蚁金服自主研发的金融级分布式中间件 SOFA (Scalable Open Financial Architecture)的三大方向。
一个多月前,蚂蚁金服开源了 SOFABoot 和 SOFARPC 两个组件,受到了社区的热烈欢迎(点击文章阅读《开源|蚂蚁金服启动分布式中间件开源计划,用于快速构建金融级云原生架构》,了解更多),也收到了很多大家的反馈,其中大家对开源更多组件的呼声很大哦~!
今天我们就给大家介绍下本次 SOFA 中间件开源的几个微服务体系组件。
开源|蚂蚁金服分布式中间件开源第二弹:丰富微服务架构体系
蚂蚁金服自主研发的分布式中间件(Scalable Open Financial Architecture,以下简称 SOFA 中间件),包含了构建金融级云原生架构所需的各个组件,包括微服务研发框架,RPC框架,服务注册中心,分布式定时任务,限流/熔断框架,动态配置推送,分布式链路追踪,Metrics监控度量,分布式高可用消息队列,分布式事务框架,分布式数据库代理层等组件,是一套分布式架构的完整的解决方案,也是在金融场景里锤炼出来的最佳实践。
开源|蚂蚁金服分布式中间件开源第二弹:丰富微服务架构体系
本次 SOFA 中间件将继续开源微服务体系下的几个组件:包括分布式链路追踪(SOFATracer)客户端、Metrics监控度量(SOFALookout)客户端、SOFARPC 的 Nodejs 版实现。同时还开源了 SOFABoot 下的模块化开发框架,以及 SOFARPC 的 HTTP/2 能力等。下面将逐一进行简单介绍。
SOFATracer
SOFATracer 是一个用于分布式系统调用跟踪的中间件,通过统一的 traceId 将调用链路中的各种网络调用信息以日志或者上报的方式记录下来,以达到透视化网络调用的目的。这些日志可用于故障的快速发现,数据统计,服务治理等。
为了解决在实施大规模微服务架构时的链路跟踪问题,SOFATracer 基于 OpenTracing(http://opentracing.io) 规范并扩展其能力,包括基于Disruptor 高性能无锁循环队列的异步落地磁盘的日志打印能力,自定义日志格式,日志自清除和滚动能力,基于SLF4J MDC 的扩展能力,统一的配置能力等。同时 SOFATracer 也对接了开源生态,可以选择将 Tracer 数据对接到 Zipkin 等开源产品。
SOFATracer 的 Github 的地址是:
https://github.com/alipay/sofa-tracer
欢迎大家使用反馈、贡献代码。(请将网址复制至浏览器中打开即可查看,下同。)
SOFALookout
SOFALookout 是一个利用多维度的 Metrics 对目标系统进行度量和监控的中间件。
Lookout 的多维度 Metrics 参考 Metrics 2.0(http://metrics20.org/spec)标准,提供一整套 Metrics 的处理,包括数据埋点、收集、加工、存储与查询等。SOFALookout 包括客户端与服务器端服务两部分,本次先开源客户端部分,服务端部分代码在整理中。
SOFALookout 客户端提供了一套 Metrics API 标准,通过它可以方便地对 Java 应用的 Metrics 进行埋点统计。为了方便使用,SOFALookout 客户端默认提供一些扩展模块,它们提供 JVM,OS 等基本 Metrics 信息的统计,遵循该扩展机制,我们可以自定义或集成更多的 Metrics 数据。
另外,SOFALookout 客户端除了支持向 SOFALookout 服务端上报数据外,还支持与社区主流的相关产品,包括Dropwizard,(SpringBoot)Actuator以及 Prometheus 等进行集成和数据适配。
SOFALookout 的 Github 的地址是:
https://github.com/alipay/sofa-lookout
欢迎大家使用反馈、贡献代码。(请将网址复制至浏览器中打开即可查看,下同。)
Eggjs 集成
每种语言都有自己最擅长的领域,跨语言友好性对于分布式架构也是非常重要的。
在蚂蚁内部还有一套 Nodejs 版本的 SOFA 中间件的实现,包含了绝大部分 Java 版本的功能,并将它们集成到已经开源的企业级 Nodejs 框架 Eggjs(https://eggjs.org)中,形成了一套完整的 Web MVC 和 BFF (Backend ForFrontend) 解决方案。
这套架构目前广泛应用于蚂蚁的 Web 开发和多端适配等场景,让各岗位有了更清晰的职责划分,服务端(一般是 Java)提供基于领域模型的 RPC 接口,前端调用接口拿到数据后进行剪裁和格式化,并实现人机交互。领域模型与页面数据是两种思维模式,通过分层可以很好地解耦,让彼此更专业高效。后面我们也会陆续开源 SOFA 中间件的 Nodejs 版本实现,本期会先放出 SOFARPC 相关的两个模块:
SOFARPC Node 的 Github 的地址是:
https://github.com/alipay/sofa-rpc-node
SOFABolt Node 的 Github 的地址是:
https://github.com/alipay/sofa-bolt-node
欢迎大家使用反馈、贡献代码。(请将网址复制至浏览器中打开即可查看,下同。)
SOFABoot
在最新的 SOFABoot 2.4.0 版本中,SOFABoot 新增加了基于 Spring 上下文隔离的模块化开发能力。
在企业级应用场景,随着应用系统模块的增多,每个业务模块之间的耦合也会越来越严重,业务模块的自测更加复杂,团队之间的沟通成本增加。模块化开发是该问题的有效解决方案,但是 Spring Boot 默认不支持模块化开发,所有 Bean 共用一个 Spring 上下文。为此,SOFABoot 提出 SOFABoot 模块的概念,每个业务团队专注于开发自己的 SOFABoot 应用模块,模块自包含模块的代码和配置,拥有独立的 Spring 上下文,便于开发及自测,减少团队间的沟通成本。
SOFABoot 模块间通信使用 JVM 服务进行通信,避免模块之间的耦合;如果远程服务在本地其它本地模块中存在,可优先调本地提高性能。同时 SOFABoot 提供了模块并行启动及 Bean 异步初始化能力,大幅提高应用启动速度。
SOFABoot 的 Github 的地址是:
https://github.com/alipay/sofa-boot
欢迎大家使用反馈、贡献代码。(请将网址复制至浏览器中打开即可查看,下同。)
SOFARPC
在最新的 SOFARPC 5.4.0 版本中,SOFARPC 基于事件扩展机制,集成了 SOFATracer 和 SOFALookout 两个微服务体系产品,完善了自身的服务监控度量以及分布式跟踪功能。用户可以通过 SOFATracer 对接到 Zipkin 查看服务调用跟踪信息,也可以通过 SOFALookout 对接到 Prometheus 查看服务度量信息。新版本的 SOFARPC 中还增加了 HTTP/1.1 和 HTTP/2 协议的支持,在跨语言等场景下可以快速通过标准的 HTTP 协议进行通信。SOFARPC 也与 Eggjs 进行了打通了 Bolt 协议,方面用户在 Java 和 Nodejs 之间高效通信。
SOFARPC 的 Github 的地址是:
https://github.com/alipay/sofa-rpc
欢迎大家使用反馈、贡献代码。(请将网址复制至浏览器中打开即可查看,下同。)
Jarslink 2.0
JarsLink 是蚂蚁金服内部使用的一个基于 JAVA 的模块化开发框架,它提供在运行时动态加载模块(一个JAR包)、卸载模块和模块间调用的 API。
目前 Jarslink 2.0 在紧张开发之中,Jarslink2.0是在 Jarslink1.0 基础之上,结合 SOFABoot类隔离框架,提供了更加通用的应用(模块)隔离和通信的实现方案,敬请期待!
Jarslink 的 Github 的地址是:
https://github.com/alibaba/jarslink
欢迎大家使用反馈、贡献代码。 (请将网址复制至浏览器中打开即可查看,下同。)
附录
附本文中提到的链接:
SOFATracer:
https://github.com/alipay/sofa-tracer
SOFALookout:
https://github.com/alipay/sofa-lookout
SOFABoot:
https://github.com/alipay/sofa-boot
SOFARPC Node:
https://github.com/alipay/sofa-rpc-node
SOFABolt Node:
https://github.com/alipay/sofa-bolt-node
Eggjs:
https://eggjs.org
SOFARPC:
https://github.com/alipay/sofa-rpc
JarsLink:
https://github.com/alibaba/jarslink
SOFAStack系列文章知乎专栏:
https://zhuanlan.zhihu.com/sofastack
交流社群
最后,我们也为对 SOFA 中间件感兴趣的同学准备了微信的交流群,欢迎感兴趣的同学扫描下方二维码联系加群小助手加入我们 SOFA 交流群讨论和咨询相关问题哦。
开源|蚂蚁金服分布式中间件开源第二弹:丰富微服务架构体系
鸣谢与福利
在 SOFA 开源的过去一个多月以来,我们得到了社区各位朋友们的关注和支持。我们也想在此特别感谢以下同学为我们贡献的代码。GitHub ID分别是:
ScienJus
SteNicholas
liangyuanpeng
stateIs0
yangl
JoeKerouac
在此,我们将送出蚂蚁金服特产樟子松一颗,以感谢各位的贡献!
开源|蚂蚁金服分布式中间件开源第二弹:丰富微服务架构体系
哦,不好意思,图放错了。是这个。
开源|蚂蚁金服分布式中间件开源第二弹:丰富微服务架构体系
▲蚂蚁森林樟子松-抱枕
当然,我们也欢迎更多的小伙伴加入蚂蚁金服的开源生态中来!(那就从转发这篇文章开始吧~)
本期福利:在本文下方留言,我们会选择留言点赞数最高的送出5g蚂蚁森林能量哦~!
开源|蚂蚁金服分布式中间件开源第二弹:丰富微服务架构体系
▲蚂蚁森林能量球-抱枕(前面这个)
— END —
蚂蚁金服科技,只为分享干货,您的转发是对我们最大的支持,欢迎在文章下方留言与我们进行交流哦~
小蚂蚁说:
数据、消息、微服务是蚂蚁金服自主研发的金融级分布式中间件 SOFA (Scalable Open Financial Architecture)的三大方向。
一个多月前,蚂蚁金服开源了 SOFABoot 和 SOFARPC 两个组件,受到了社区的热烈欢迎(点击文章阅读《开源|蚂蚁金服启动分布式中间件开源计划,用于快速构建金融级云原生架构》,了解更多),也收到了很多大家的反馈,其中大家对开源更多组件的呼声很大哦~!
今天我们就给大家介绍下本次 SOFA 中间件开源的几个微服务体系组件。
开源|蚂蚁金服分布式中间件开源第二弹:丰富微服务架构体系
蚂蚁金服自主研发的分布式中间件(Scalable Open Financial Architecture,以下简称 SOFA 中间件),包含了构建金融级云原生架构所需的各个组件,包括微服务研发框架,RPC框架,服务注册中心,分布式定时任务,限流/熔断框架,动态配置推送,分布式链路追踪,Metrics监控度量,分布式高可用消息队列,分布式事务框架,分布式数据库代理层等组件,是一套分布式架构的完整的解决方案,也是在金融场景里锤炼出来的最佳实践。
开源|蚂蚁金服分布式中间件开源第二弹:丰富微服务架构体系
本次 SOFA 中间件将继续开源微服务体系下的几个组件:包括分布式链路追踪(SOFATracer)客户端、Metrics监控度量(SOFALookout)客户端、SOFARPC 的 Nodejs 版实现。同时还开源了 SOFABoot 下的模块化开发框架,以及 SOFARPC 的 HTTP/2 能力等。下面将逐一进行简单介绍。
SOFATracer
SOFATracer 是一个用于分布式系统调用跟踪的中间件,通过统一的 traceId 将调用链路中的各种网络调用信息以日志或者上报的方式记录下来,以达到透视化网络调用的目的。这些日志可用于故障的快速发现,数据统计,服务治理等。
为了解决在实施大规模微服务架构时的链路跟踪问题,SOFATracer 基于 OpenTracing(http://opentracing.io) 规范并扩展其能力,包括基于Disruptor 高性能无锁循环队列的异步落地磁盘的日志打印能力,自定义日志格式,日志自清除和滚动能力,基于SLF4J MDC 的扩展能力,统一的配置能力等。同时 SOFATracer 也对接了开源生态,可以选择将 Tracer 数据对接到 Zipkin 等开源产品。
SOFATracer 的 Github 的地址是:
https://github.com/alipay/sofa-tracer
欢迎大家使用反馈、贡献代码。(请将网址复制至浏览器中打开即可查看,下同。)
SOFALookout
SOFALookout 是一个利用多维度的 Metrics 对目标系统进行度量和监控的中间件。
Lookout 的多维度 Metrics 参考 Metrics 2.0(http://metrics20.org/spec)标准,提供一整套 Metrics 的处理,包括数据埋点、收集、加工、存储与查询等。SOFALookout 包括客户端与服务器端服务两部分,本次先开源客户端部分,服务端部分代码在整理中。
SOFALookout 客户端提供了一套 Metrics API 标准,通过它可以方便地对 Java 应用的 Metrics 进行埋点统计。为了方便使用,SOFALookout 客户端默认提供一些扩展模块,它们提供 JVM,OS 等基本 Metrics 信息的统计,遵循该扩展机制,我们可以自定义或集成更多的 Metrics 数据。
另外,SOFALookout 客户端除了支持向 SOFALookout 服务端上报数据外,还支持与社区主流的相关产品,包括Dropwizard,(SpringBoot)Actuator以及 Prometheus 等进行集成和数据适配。
SOFALookout 的 Github 的地址是:
https://github.com/alipay/sofa-lookout
欢迎大家使用反馈、贡献代码。(请将网址复制至浏览器中打开即可查看,下同。)
Eggjs 集成
每种语言都有自己最擅长的领域,跨语言友好性对于分布式架构也是非常重要的。
在蚂蚁内部还有一套 Nodejs 版本的 SOFA 中间件的实现,包含了绝大部分 Java 版本的功能,并将它们集成到已经开源的企业级 Nodejs 框架 Eggjs(https://eggjs.org)中,形成了一套完整的 Web MVC 和 BFF (Backend ForFrontend) 解决方案。
这套架构目前广泛应用于蚂蚁的 Web 开发和多端适配等场景,让各岗位有了更清晰的职责划分,服务端(一般是 Java)提供基于领域模型的 RPC 接口,前端调用接口拿到数据后进行剪裁和格式化,并实现人机交互。领域模型与页面数据是两种思维模式,通过分层可以很好地解耦,让彼此更专业高效。后面我们也会陆续开源 SOFA 中间件的 Nodejs 版本实现,本期会先放出 SOFARPC 相关的两个模块:
SOFARPC Node 的 Github 的地址是:
https://github.com/alipay/sofa-rpc-node
SOFABolt Node 的 Github 的地址是:
https://github.com/alipay/sofa-bolt-node
欢迎大家使用反馈、贡献代码。(请将网址复制至浏览器中打开即可查看,下同。)
SOFABoot
在最新的 SOFABoot 2.4.0 版本中,SOFABoot 新增加了基于 Spring 上下文隔离的模块化开发能力。
在企业级应用场景,随着应用系统模块的增多,每个业务模块之间的耦合也会越来越严重,业务模块的自测更加复杂,团队之间的沟通成本增加。模块化开发是该问题的有效解决方案,但是 Spring Boot 默认不支持模块化开发,所有 Bean 共用一个 Spring 上下文。为此,SOFABoot 提出 SOFABoot 模块的概念,每个业务团队专注于开发自己的 SOFABoot 应用模块,模块自包含模块的代码和配置,拥有独立的 Spring 上下文,便于开发及自测,减少团队间的沟通成本。
SOFABoot 模块间通信使用 JVM 服务进行通信,避免模块之间的耦合;如果远程服务在本地其它本地模块中存在,可优先调本地提高性能。同时 SOFABoot 提供了模块并行启动及 Bean 异步初始化能力,大幅提高应用启动速度。
SOFABoot 的 Github 的地址是:
https://github.com/alipay/sofa-boot
欢迎大家使用反馈、贡献代码。(请将网址复制至浏览器中打开即可查看,下同。)
SOFARPC
在最新的 SOFARPC 5.4.0 版本中,SOFARPC 基于事件扩展机制,集成了 SOFATracer 和 SOFALookout 两个微服务体系产品,完善了自身的服务监控度量以及分布式跟踪功能。用户可以通过 SOFATracer 对接到 Zipkin 查看服务调用跟踪信息,也可以通过 SOFALookout 对接到 Prometheus 查看服务度量信息。新版本的 SOFARPC 中还增加了 HTTP/1.1 和 HTTP/2 协议的支持,在跨语言等场景下可以快速通过标准的 HTTP 协议进行通信。SOFARPC 也与 Eggjs 进行了打通了 Bolt 协议,方面用户在 Java 和 Nodejs 之间高效通信。
SOFARPC 的 Github 的地址是:
https://github.com/alipay/sofa-rpc
欢迎大家使用反馈、贡献代码。(请将网址复制至浏览器中打开即可查看,下同。)
Jarslink 2.0
JarsLink 是蚂蚁金服内部使用的一个基于 JAVA 的模块化开发框架,它提供在运行时动态加载模块(一个JAR包)、卸载模块和模块间调用的 API。
目前 Jarslink 2.0 在紧张开发之中,Jarslink2.0是在 Jarslink1.0 基础之上,结合 SOFABoot类隔离框架,提供了更加通用的应用(模块)隔离和通信的实现方案,敬请期待!
Jarslink 的 Github 的地址是:
https://github.com/alibaba/jarslink
欢迎大家使用反馈、贡献代码。 (请将网址复制至浏览器中打开即可查看,下同。)
附录
附本文中提到的链接:
SOFATracer:
https://github.com/alipay/sofa-tracer
SOFALookout:
https://github.com/alipay/sofa-lookout
SOFABoot:
https://github.com/alipay/sofa-boot
SOFARPC Node:
https://github.com/alipay/sofa-rpc-node
SOFABolt Node:
https://github.com/alipay/sofa-bolt-node
Eggjs:
https://eggjs.org
SOFARPC:
https://github.com/alipay/sofa-rpc
JarsLink:
https://github.com/alibaba/jarslink
SOFAStack系列文章知乎专栏:
https://zhuanlan.zhihu.com/sofastack
交流社群
最后,我们也为对 SOFA 中间件感兴趣的同学准备了微信的交流群,欢迎感兴趣的同学扫描下方二维码联系加群小助手加入我们 SOFA 交流群讨论和咨询相关问题哦。
开源|蚂蚁金服分布式中间件开源第二弹:丰富微服务架构体系
鸣谢与福利
在 SOFA 开源的过去一个多月以来,我们得到了社区各位朋友们的关注和支持。我们也想在此特别感谢以下同学为我们贡献的代码。GitHub ID分别是:
ScienJus
SteNicholas
liangyuanpeng
stateIs0
yangl
JoeKerouac
在此,我们将送出蚂蚁金服特产樟子松一颗,以感谢各位的贡献!
开源|蚂蚁金服分布式中间件开源第二弹:丰富微服务架构体系
哦,不好意思,图放错了。是这个。
开源|蚂蚁金服分布式中间件开源第二弹:丰富微服务架构体系
▲蚂蚁森林樟子松-抱枕
当然,我们也欢迎更多的小伙伴加入蚂蚁金服的开源生态中来!(那就从转发这篇文章开始吧~)
本期福利:在本文下方留言,我们会选择留言点赞数最高的送出5g蚂蚁森林能量哦~!
开源|蚂蚁金服分布式中间件开源第二弹:丰富微服务架构体系
▲蚂蚁森林能量球-抱枕(前面这个)
— END —
蚂蚁金服科技,只为分享干货,您的转发是对我们最大的支持,欢迎在文章下方留言与我们进行交流哦~
相关文章:

System.Web.Caching.Cache类 缓存 各种缓存依赖
原文:System.Web.Caching.Cache类 缓存 各种缓存依赖Cache类,是一个用于缓存常用信息的类。HttpRuntime.Cache以及HttpContext.Current.Cache都是该类的实例。 一、属性 属性说明Count获取存储在缓存中的项数。EffectivePercentagePhysicalMemoryLimit获取在 ASP.NE…

Python 可视化近 90 天的百度搜索指数 + 词云图
作者 | 叶庭云来源 | AI庭云君一、简介 在实际业务中我们可能会使用爬虫根据关键词获取百度搜索指数历史数据,然后进行对应的数据分析。百度指数,体验大数据之美。但要获取百度指数相关的数据,困难如下:不是静态网页,并…

php常用比较函数区别表
php常用比较函数区别表 表达式 empty() is_null() isset() if($x) $x "" TRUE FALSE TRUE FALSE $x null TRUE TRUE FALSE FALSE $x is undefined TRUE TRUE FALSE FALSE(报E_NOTICE错) $x array() TRUE FALSE TRUE FALSE $x false TRUE FALSE TRUE FALSE $x 0 …

实战分享:淘宝Web 3D应用与游戏开发
大家下午好!我们今天讲个比较有意思的话题,这个话题在业界被谈及得比较少。大家在座有做过移动端开发的同学吗?请举个手,人还挺多的。那做过3D应用的同学请举个手,有用过Threejs的请举个手,做过游戏的呢..人…

常见NoSQL系统使用场景分析
•Cassandra •特性:分布式与复制的权衡\根据列和键范围进行查询\BigTable类似的功能:列,列族\写比读快很多 •最佳适用:写操作较多,读比较少的时候。如果你的系统都是基于Java的时候。 •应用场景:银行&am…

再一次输给了AI,弯道急速超车、登上 Nature 封面
作者 | 学术头条来源 | 学术头条人工智能(AI)的很多潜在应用,涉及与人类交互时做出更优化的实时决策,而竞技或者博弈类游戏,便是最佳的展示舞台。近日,发表在《自然》杂志上的封面文章报告称,AI…

maven 多环境打包
2019独角兽企业重金招聘Python工程师标准>>> 1.在项目的pom中添加 <build><resources><!-- Resource Filter --><resource><directory>src/main/resources</directory><filtering>true</filtering></resource&g…

Sass函数:Sass Maps的函数-map-has-key($map,$key)
map-has-key($map,$key) 函数将返回一个布尔值。当 $map 中有这个 $key,则函数返回 true,否则返回 false。 前面的示例,当 $key 不在 $map 中时,使用 map-get($map,$key) 函数将返回一个 null 值。但对于开发人员,并看…
Memcache内存分配策略
转自:http://tank.blogs.tkiicpp.com/2010/12/14/memcache%e5%86%85%e5%ad%98%e5%88%86%e9%85%8d%e7%ad%96%e7%95%a5/ 一、Memcache内存分配机制关于这个机制网上有很多解释的,我个人的总结如下。 Page为内存分配的最小单位。 Memcached的内存分配以page…

论排列组合,持续更新
今天刚好碰到了一个排列组合问题,因为之前对这方面的学习比较少,所以用的非常蠢的方法做了四位数中取三位的排列,写的程序太有局限性,源码如下#define _CRT_SECURE_NO_WORNINGS 1#include<stdio.h>#include<stdlib.h>…

Python 中少为人知的 10 个安全陷阱
作者:Dennis Brinkrolf译者:豌豆花下猫Python猫原题:10 Unknown Security Pitfalls for Python英文:https://blog.sonarsource.com/10-unknown-security-pitfalls-for-pythonPython 开发者们在使用标准库和通用框架时,…
JS+CSS3 360度全景图插件 - Watch3D.js
日常闲扯 从上一篇文章到这篇中间快过了一年了,时间真滴过得快。不是在下中间没想过写新的文章,而是自己确实变懒了(体重1 1 1 1....) 。。OTL。。。不过到最后觉得还是需要写点东西,不然人就真废了,于是便有了这样一个插件&#…

CQRS学习——最小单元的Cqrs(CommandEvent)[其一]
【说明:博主采用边写边思考的方式完成这一系列的博客,所以代码以附件为准,文中代码仅为了说明。】 结构 在学习和实现CQRS的过程中,首要参考的项目是这个【http://www.cnblogs.com/yangecnu/p/Introduction-CQRS.html】。所以Dpfb…

PHP APC安装与使用
最简单的方法,找到php安装目录的pecl 自动安装: # /usr/local/php/bin/pecl install apc 下面按提示一步步完成即可 配置/etc/php.ini 末尾加入extensionapc.so 手动安装: 官网 http://cn2.php.net/manual/zh/book.apc.php 下载http://p…

AIphaCode 并不能取代程序员,而是开发者的工具
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) DeepMind 是 AI 研究实验室,它引入了一种深度学习模型,可以生成具有显著效果的软件源代码。该模型名为 AIphaCode,是基于 Transformers,OpenAI 在其代码生…

源码阅读:SDWebImage(六)——SDWebImageCoderHelper
该文章阅读的SDWebImage的版本为4.3.3。 这个类提供了四个方法,这四个方法可分为两类,一类是动图处理,一类是图像方向处理。 1.私有函数 先来看一下这个类里的两个函数 /**这个函数是计算两个整数a和b的最大公约数*/ static NSUInteger gcd(N…

基于 OpenCV 的网络实时视频流传输
作者 | 努比来源 | 小白学视觉大多数人会选择使用IP摄像机(Internet协议摄像机)而不是CCTV(闭路电视),因为它们具有更高的分辨率并降低了布线成本。在本文中,我们将重点介绍IP摄像机。IP摄像机是一种数字 摄…

【转】让Chrome化身成为摸鱼神器,利用Chorme运行布卡漫画以及其他安卓APK应用教程...
下周就是十一了,无论是学生党还是工作党,大家的大概都会有点心不在焉,为了让大家更好的心不在焉,更好的在十一前最后一周愉快的摸鱼,今天就写一个如何让Chrome(google浏览器)运行安卓APK应用的教…

PHP安装parsekit扩展查看opcode
也可以通过VLD查看,具体请看本人写的http://blog.csdn.net/21aspnet/article/details/7002644安装parsekit扩展 http://pecl.php.net/package/parsekit 下载最新的 #wget http://pecl.php.net/get/parsekit-1.3.0.tgz 安装过程省略 可以参考 本人写的http://blog.c…

group by 查找订单的最新状态 join
Order:snProcedures:sn,status1、 有订单表和流程表。订单表含有订单的详细信息【假设没有订单状态哈】,每个订单有好多种状态:已付款、处理中、待收货等等。现在的需求可能是查询订单状态是待收货的所有订单的信息。【答】先找到…

Xcache安装与使用
官网:http://xcache.lighttpd.net 最新版本下载地址:http://xcache.lighttpd.net/wiki/Release-1.3.2 安装: # wget http://xcache.lighttpd.net/pub/Releases/1.3.2/xcache-1.3.2.tar.gz # tar zvxf xcache-1.3.2.tar.gz # cd xcache-1.3…

安装mysql_python的适合遇到mysql_config not found解决方案(mac)
为什么80%的码农都做不了架构师?>>> 安装mysql_python的适合遇到mysql_config not found解决方案(mac) 用pip安装MySQL-python时候遇到报错: ------我是分割线------ Complete output from command python setup.py e…

推荐 6 个好用到爆的 Pycharm 插件
作者 | 小欣来源 | Python爱好者集中营相信对于不少的Python程序员们都是用Pycharm作为开发时候的IDE来使用的,今天小编来分享几个好用到爆的Pycharm插件,在安装上之后,你的编程效率、工作效率都能够得到极大地提升。安装方法插件的安装方法一…
Kibana 用户指南(使用Flight仪表盘探索Kibana)
使用Flight仪表盘探索Kibana 你是Kibana的新手并希望尝试一下,只需单击一下,你就可以安装Flights样本数据并开始与Kibana交互。 Flight数据集包含四家航空公司的数据,你可以从Kibana主页加载数据和预配置的仪表盘。 在主页上,单击…

php扩展xdebug安装以及用kcachegrind系统分析
一:安装 安装方法一:编译安装1、下载PHP的XDebug扩展,网址:http://xdebug.org/# wget http://pecl.php.net/get/xdebug-2.1.2.tgz# tar -xzf xdebug-2.1.2.tgz# xdebug-2.1.2# cd xdebug-2.1.2# /usr/local/php/bin/phpize# ./con…

Meta AI 新研究,统一模态的自监督新里程碑
作者 | 青苹果来源 | 数据实战派虽然 AI 领域不断涌现出新的突破和进展,却始终难以逃离单一领域的束缚——一种用于个性化语音合成的新颖方法,却并不能用于识别人脸的表情。为了解决这个问题,不少研究人员正在致力于开发功能更强大、应用更广…

细说Debug和Release区别
VC下Debug和Release区别 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步定位到问题所在处,才发现原来是给定的一个…

26期20180601目录管理
6月1日任务2.1/2.2 系统目录结构2.3 ls命令2.4 文件类型2.5 alias命令系统目录结构ls - list所有的用户在系统里都有自己的家目录,比如现在登陆的是root用户,登陆进去就是在root的家目录中,可以看到之前创建的公钥文件也是在这。但是如果是其…

thttpd安装与调试
http://www.acme.com/software/thttpd/ thttpd是一个非常小巧的轻量级web server,它非常非常简单,仅仅提供了HTTP/1.1和简单的CGI支持,在其官方网站上有一个与其他web server(如Apache, Zeus等)的对比图Benchmark&…

7 款可替代 top 命令的工具!(二)
作者 | JackTian来源 | 杰哥的IT之旅上一篇文章中给大家介绍了《11 款可替代 top 命令的工具!》,今天我再来给大家推荐 7 款可替代 top 命令的工具,看完这两篇替代品的文章相信能让你对 Linux 操作系统下一个小小的命令大开眼界。一、atopato…