首页 - 宁国 -时评 -社会 -民生 -报料 -网视 -公益 -房产 -车讯 -导购 -教育 -快讯 -培训 -国内 -国际 -文娱 -小记者
您所在的位置:中国宁国网 > 宁国
LinkedIn开源软件项目数量已经超过了100个
2019/5/13 12:07:29  来源:  
\

 

社交网络巨头、开源社区的活跃贡献者 LinkedIn 最近又开源了一系列重量级基础设施软件。到目前为止,LinkedIn 在 GitHub 上开源的软件项目数量已经超过了 100 个。

最近宣布开源的项目有 URL-Detector、Rocket Data 和 LayoutKit 等。

URL-Detector

URL-Detector 是一个以文本方式检测和标准化 URL 的 Java 库。为了保证用户的安全使用,所有用户提交的内容都会经过安全检测。LinkeIn 的内容验证服务每秒钟都要处理几十万个 URL,检查其中是否有恶意软件或钓鱼软件。LinkdedIn 的高级软件工程师 Tzu-Han Jan 说:

如果提交的内容是一个 URL,我们就直接用我们的内容验证服务去检查。如果提交上来的是一大堆文本,那就先用 URL-Dector 算法把可能的 URL 从中提取出来,再把 URL 交给内容验证服务。

他们设计了一个有限状态自动机来从文本中提取 URL。有限状态自动机是一个包含了若干状态的系统,每个状态可能根据不同的输入而转入几个可能的其他状态。在 URL-Detector 中的输入就是当前正在解析的字符。

URL-Detector 可以辨别出如下任意形式的 URL:

HTML 5 Scheme – //www.linkedin.com Usernames – user:pass@linkedin.com Email – fred@linkedin.com IPv4 Address – 192.168.1.1/hello.html IPv4 Octets – 0x00.0x00.0x00.0x00 IPv4 Decimal –http://123123123123/ IPv6 Address –ftp://[::]/hello IPv4-mapped IPv6 Address –

http://[fe30:4:3:0:192.3.2.1]/

它还可以直接解析出关键字,以 http://user@example.com:39000/hello?boo=ff#frag 为例:

Scheme – "http" Username – "user" Password – null Host – "example.com" Port – 39000 Path – "/hello" Query – "?boo=ff" Fragment – "#frag"

Rocket Data

Rocket Data 是有持续同步层的非阻塞、不可变模型管理系统。它可以使用任何类型的缓存,可以使用简单的 API 来轻松地挂接到键值型存储上。

从 2015 年早期重写 LinkedIn 旗舰版应用时开始,他们就在寻找一个可用的缓存系统来把内容展现给用户,而内容要从网络上加载。总的来说对这套缓存系统的需求是:

不可变,线程安全模型; 模型在内存和缓存中一致。这样在更新模型之后,所有其它实例中的这个模型都会跟着更新; 读写操作都是非阻塞式的; 简单的数据淘汰策略; 在有大量模型类型、模式和监听器时可以容易扩展; 自动迁移;

他们调查了当时业界的各种现有解决方案,包括 Core Data、URL Cache、Realm,以及直接将模型写入磁盘的方案等,但找不到哪种方案可以满足上述所有需求,或者保证不可变模型的一致性——这是他们最看重的。于是他们决定自己写一套,就是 Rocket Data,它的架构如下:

每一个视图控制器都有一个或多个数据提供者的引用。有两种类型的数据提供者:正规数据提供者持有对单一模型的引用,集合数据提供者持有对模型的有序数组的引用。两种数据提供者都可以很容易很快速地完成数据存取,因为模型都保存在内存中。

Peter Livesey 这样评价这套系统:

有了这套缓存系统,开发者只需一点点额外工作就可以轻松地为项目添加缓存了。缓存和数据提供者都是自动保持一致的。除了每周为一些模型添加模式之外,我们再也不必为迁移增加任何代码。最重要的最,我们程序从来不会因为 Core Data 异常而崩溃。

LayoutKit

LayoutKit 是一个高性能的 iOS 应用视图布局库。

LinkedIn 非常在意手机应用的性能,可第一版的手机应用性能却非常不尽人意,调查后发现原因是主线程在运行 Auto Layout 时花费了过多时间。Auto Layout 是 iOS 提供的布局引擎,可以自动计算视图在屏幕上的大小和位置。

据 LayoutKit 的开发者之一 Nick Snyder 说,他们当初也做了许多尝试。他们试过手工写布局代码,但发现这样会非常难以维护。所以总之需要的是在保证性能的前提下,将布局功能封装起来的可重用模块。可是调查了现有方案之后,仍是发现虽然 Auto Layout 给大家造成了很大困扰,但合适的方案还是找不到,于是决定自主开发。与 Auto Layout 相比,LayoutKit 的主要优点有:

速度快:性能可以与专门写的定制的布局代码相媲美,比 Auto Layout 快非常多; 异步:在后台线程中做布局运算,所以不会干扰与用户的交互; 声明性的:用不可变的数据结构声明布局,这样更容易开发、审核、调试和维护布局代码; 可缓存的:布局结果都是不可变的数据结构,所以可以在后台线程中计算并缓存,可以非常大的提升性能;

而且 LayoutKit 还很好用:

UIKit 友好:LayoutKit 生成 UIView,也提供适配器来方便与 UITableView 和 UICollectionView 一起使用; 国际化:可以自动为从右到左的语言调整视图; Swift:可以在 Swift 应用中使用; 成熟:单元测试覆盖率超过 90%,已经用于最新版的 LinkedIn iOS 应用;

LayoutKit 比 Auto Layout 快八倍,性能可以与专门写的定制的布局代码相媲美。它快在专用的布局算法,而且它也不会为布局创建它并不需要的 UIView。所以开发者可以用它随意的去组合布局,再也不用担心性能问题了。

结束语

开源运动如火如茶,其中 LinkedIn、Google、Twitter 等巨头公司的贡献和推动功不可没。至今 LinedIn 已经为开源社区贡献了 100 多个项目和数十万行代码,包括 Kafka 这样重量级的高吞吐量分布式消息系统。LinkedIn 首席工程师 Jay Kreps 说 LinedIn 会持续投身开源运动:

开源有助于产品保持高标准并引发人们的关注; “让任何事情都成为秘密武器并不是我们热衷的有效战略,内部的(工具和技术)信息并不需要成为我们的竞争优势”。 坚持开源策略是最好的技术招聘广告。很多 LinkedIn 招聘到的人都说这是他们加盟的重要原因。


相关阅读:
太原SPA按摩 www.tynnspa.com
  精彩图片
LinkedIn开源软件项目数量已经超过了100个
LinkedIn开源软件项目数量已经超过了100个
上床时间超过0:00的,他不会为了多元化而多元化
上床时间超过0:00的,他不会为了多元化而多元化
  热点专题
·《狮王的荣耀》佛山开机 打造岭南文化励志大片
·【如何心理养生】心理养生怎么做
·刘谦:魔术界的林志玲?
·南京“限价令”发威 多个新盘预售价明显低于预期
·严防自然生态空间被侵吞 中国设定管制“红线”
·文强涉黑案引发“明星普查” 盘点去重庆女明星名单
·新浪UC2005II正式版发布
·富士公布S205EXR“雪花”问题相机解决方案
·古天乐身价飞涨砸1.5亿买下豪宅
·防止网络被病毒攻击也可“接种疫苗”
  热门新闻
·LinkedIn开源软件项目数量已经超过了100个
·江民辞世 二代火线入主之困
·马丽"花钱花到吐" 《夏洛特烦恼》原班人马拍新片
·北京市业余羽毛球公开赛总决赛收官 4000余选手参与争夺
·网络安全风险日增:网上测试多诈骗 短信链接藏陷阱
·航天专家叶培建:天上一“星”地上一“星”
·上床时间超过0:00的,他不会为了多元化而多元化
·徐立平忍耐着常人难以想象的危险与寂寞,仅通过网络联络
·董斌里约摘铜创纪录 最后三跳备受煎熬
·此次《工作要点》更加细化和具有操作性,家里穷得啥都没有
Copyright qh59.cn All Rights Reserved.
本网站所刊登的各种新闻﹑信息和各种专题专栏资料,均为中国宁国网版权所有,未经协议授权,禁止下载使用。
台广证002号  浙ICP备09050798  浙新办(2002)11号