首页 文章 精选 留言 我的

精选列表

搜索[最权威安装],共10000篇文章
优秀的个人博客,低调大师

这可能是容易理解的 Go Mutex 源码剖析

Hi,大家好,我是 haohongfan。 上一篇文章《一文完全掌握 Go math/rand》,我们知道 math/rand 的 global rand 有一个全局锁,我的文章里面有一句话:“修复方案: 就是把 rrRand 换成了 globalRand, 在线上高并发场景下, 发现全局锁影响并不大.”, 有同学私聊我“他们遇到线上服务的锁竞争特别激烈”。确实我这句话说的并不严谨。但是也让我有了一个思考:到底多高的 QPS 才能让 Mutex 产生强烈的锁竞争 ? 到底加锁的代码会不会产生线上问题? 到底该不该使用锁来实现这个功能?线上的问题是不是由于使用了锁造成的?针对这些问题,本文就从源码角度剖析 Go Mutex, 揭开 Mutex 的迷雾。 源码分析 Go mutex 源码只有短短的 228 行,但是却包含了很多的状态转变在里面,很不容易看懂,具体可以参见下面的流程图。Mutex 的实现主要借助了 CAS 指令 + 自旋 + 信号量来实现,具体代码我就不再每一行做分析了,有兴趣的可以根据下面流程图配合源码阅读一番。 Lock Unlock 一些例子 1. 一个 goroutine 加锁解锁过程 2. 没有加锁,直接解锁问题 3. 两个 Goroutine,互相加锁解锁 4. 三个 Goroutine 等待加锁过程 整篇源码其实涉及比较难以理解的就是 Mutex 状态(mutexLocked,mutexWoken,mutexStarving,mutexWaiterShift) 与 Goroutine 之间的状态(starving,awoke)改变, 我们下面将逐一说明。 什么是 Goroutine 排队? 如果 Mutex 已经被一个 Goroutine 获取了锁, 其它等待中的 Goroutine 们只能一直等待。那么等这个锁释放后,等待中的 Goroutine 中哪一个会优先获取 Mutex 呢? 正常情况下, 当一个 Goroutine 获取到锁后, 其他的 Goroutine 开始进入自旋转(为了持有CPU) 或者进入沉睡阻塞状态(等待信号量唤醒). 但是这里存在一个问题, 新请求的 Goroutine 进入自旋时是仍然拥有 CPU 的, 所以比等待信号量唤醒的 Goroutine 更容易获取锁. 用官方话说就是,新请求锁的 Goroutine具有优势,它正在CPU上执行,而且可能有好几个,所以刚刚唤醒的 Goroutine 有很大可能在锁竞争中失败. 于是如果一个 Goroutine 被唤醒过后, 仍然没有拿到锁, 那么该 Goroutine 会放在等待队列的最前面. 并且那些等待超过 1 ms 的 Goroutine 还没有获取到锁,该 Goroutine 就会进入饥饿状态。该 Goroutine 是饥饿状态并且 Mutex 是 Locked 状态时,才有可能给 Mutex 设置成饥饿状态. 获取到锁的 Goroutine Unlock, 将 Mutex 的 Locked 状态解除, 发出来解锁信号, 等待的 Goroutine 开始竞争该信号. 如果发现当前 Mutex 是饥饿状态, 直接将唤醒信号发给第一个等待的 Goroutine 这就是所谓的 Goroutine 排队 排队功能是如何实现的 我们知道在正常状态下,所有等待锁的 Goroutine 按照 FIFO 顺序等待,在 Mutex 饥饿状态下,会直接把释放锁信号发给等待队列中的第一个Goroutine。排队功能主要是通过 runtime_SemacquireMutex, runtime_Semrelease 来实现的. 1. runtime_SemacquireMutex -- 入队 当 Mutex 被其他 Goroutine 持有时,新来的 Goroutine 将会被 runtime_SemacquireMutex 阻塞。阻塞会分为2种情况: Goroutine 第一次被阻塞: 当 Goroutine 第一次尝试获取锁时,由于当前锁可能不能被锁定,于是有可能进入下面逻辑 queueLifo:=waitStartTime!=0 ifwaitStartTime==0{ waitStartTime=runtime_nanotime() } runtime_SemacquireMutex(&m.sema,queueLifo,1) 由于 waitStartTime 等于 0,runtime_SemacquireMutex 的 queueLifo 等于 false, 于是该 Goroutine 放入到队列的尾部。 Goroutine 被唤醒过,但是没加锁成功,再次被阻塞由于 Goroutine 被唤醒过,waitStartTime 不等于 0,runtime_SemacquireMutex 的 queueLifo 等于 true, 于是该 Goroutine 放入到队列的头部。 2. runtime_Semrelease -- 出队 当某个 Goroutine 释放锁时,调用 Unlock,这里同样存在两种情况: 当前 mutex 不是饥饿状态 ifnew&mutexStarving==0{ old:=new for{ ifold>>mutexWaiterShift==0||old&(mutexLocked|mutexWoken|mutexStarving)!=0{ return } //Grabtherighttowakesomeone. new=(old-1<<mutexWaiterShift)|mutexWoken ifatomic.CompareAndSwapInt32(&m.state,old,new){ runtime_Semrelease(&m.sema,false,1) return } old=m.state } } Unlock 时 Mutex 的 Locked 状态被去掉。当发现当前 Mutex 不是饥饿状态,设置 runtime_Semrelease 的 handoff 参数是 false, 于是唤醒其中一个 Goroutine。 当前 mutex 已经是饥饿状态 }else{ //Starvingmode:handoffmutexownershiptothenextwaiter,andyield //ourtimeslicesothatthenextwaitercanstarttorunimmediately. //Note:mutexLockedisnotset,thewaiterwillsetitafterwakeup. //ButmutexisstillconsideredlockedifmutexStarvingisset, //sonewcominggoroutineswon'tacquireit. runtime_Semrelease(&m.sema,true,1) } 同样 Unlock 时 Mutex 的 Locked 状态被去掉。由于当前 Mutex 是饥饿状态,于是设置 runtime_Semrelease 的 handoff 参数是 true, 于是让等待队列头部的第一个 Goroutine 获得锁。 Goroutine 的排队 与 mutex 中记录的 Waiters 之间的关系? 通过上面的分析,我们知道 Goroutine 的排队是通过 runtime_SemacquireMutex 来实现的。Mutex.state 记录了目前通过 runtime_SemacquireMutex 排队的 Goroutine 的数量 Goroutine 的饥饿与 Mutex 饥饿之间的关系? Goroutine 的状态跟 Mutex 的是息息相关的。只有在 Goroutine 是饥饿状态下,才有可能给 Mutex 设置成饥饿状态。在 Mutex 是饥饿状态时,才有可能让饥饿的 Goroutine 优先获取到锁。不过需要注意的是,触发 Mutex 饥饿的 Goroutine 并不一定获取锁,有可能被其他的饥饿的 Goroutine 截胡。 Goroutine 能够加锁成功的情况 Mutex 没有被 Goroutine 占用 Mutex.state = 0, 这种情况下一定能获取到锁. 例如: 第一个 Goroutine 获取到锁还有一种情况 Goroutine有可能加锁成功: 当前 Mutex 不是饥饿状态, 也不是 Locked 状态, 尝试 CAS 加锁时, Mutex 的值还没有被其他 Goroutine 改变, 当前 Goroutine 才能加锁成功. 某个 Goroutine 刚好被唤醒后, 重新获取 Mutex, 这个时候 Mutex 处于饥饿状态. 因为这个时候只唤醒了饥饿的 Goroutine, 其他的 Goroutine 都在排队中, 没有其他 Goroutine 来竞争 Mutex, 所以能直接加锁成功 Mutex 锁竞争的相关问题 探测锁竞争 日常开发中锁竞争的问题还是能经常遇到的,我们如何去发现锁竞争呢?其实还是需要靠 pprof 来人肉来分析。 《一次错误使用 go-cache 导致出现的线上问题》就是我真是遇到的一次线上问题,表象就是接口大量超时,打开pprof 发现大量 Goroutine 都集中 Lock 上。这个真实场景的具体的分析过程,有兴趣的可以阅读一下。简单总结一下:压测或者流量高的时候发现系统不正常,打开 pprof 发现 goroutine 指标在飙升,并且大量 Goroutine 都阻塞在 Mutex 的 Lock 上,这个基本就可以确定是锁竞争。 pprof 里面是有个 pprof/mutex 指标,不过该指标默认是关闭的,而且并没有太多资料有介绍这个指标如何来分析 Mutex。有知道这个指标怎么用的大佬,欢迎留言。 mutex 锁的瓶颈 现在模拟业务开发中的某接口,平均耗时 10 ms, 在 32C 物理机上压测。CentOS Linux release 7.3.1611 (Core), go1.15.8压测代码如下: packagemain import( "fmt" "log" "net/http" "sync" "time" _"net/http/pprof" ) varmuxsync.Mutex functestMutex(whttp.ResponseWriter,r*http.Request){ mux.Lock() time.Sleep(10*time.Millisecond) mux.Unlock() } funcmain(){ gofunc(){ log.Println(http.ListenAndServe(":6060",nil)) }() http.HandleFunc("/test/mutex",testMutex) iferr:=http.ListenAndServe(":8000",nil);err!=nil{ fmt.Println("starthttpserverfail:",err) } } 这个例子写的比较极端了,全局共享一个 Mutex。经过压测发现在 100 qps 时,Mutex 没啥竞争,在 150 QPS 时竞争就开始变的激烈了。 当然我们写业务代码并不会这么写,但是可以通过这个例子发现 Mutex 在 QPS 很低的时候,锁竞争就会很激烈。需要说明的一点:这个压测是数值没啥具体的意义,不同的机器上表现肯定还会不一样。 这个例子告诉我们几点: 写业务时不能全局使用同一个 Mutex 尽量避免使用 Mutex,如果非使用不可,尽量多声明一些 Mutex,采用取模分片的方式去使用其中一个 Mutex 日常使用注意点 1. Lock/Unlock 成对出现 我们日常开发中使用 Mutex 一定要记得:先 Lock 再 Unlock。 特别要注意的是:没有 Lock 就去 Unlock。当然这个 case 一般情况下我们都不会这么写。不过有些变种的写法我们要尤其注意,例如 varmusync.Mutex funcrelease(){ mu.Lock() fmt.Println("lock1success") time.Sleep(10*time.Second) mu.Lock() fmt.Println("lock2success") } funcmain(){ gorelease() time.Sleep(time.Second) mu.Unlock() fmt.Println("unlocksuccess") for{} } 输出结果: releaselock1success mainunlocksuccess releaselock2success 我们看到 release goroutine 的锁竟然被 main goroutine 给释放了,同时 release goroutine 又能重新获取到锁。 这段代码可能你想不到有啥问题,其实这个问题蛮严重的,想象一下你的代码中,本来是要加锁给用户加积分的,但是竟然被别的 goroutine 给解锁了,导致积分没有增加成功,同时解锁的时候还别的 Goroutine 的锁给 Unlock 了,互相加锁解锁,导致莫名其妙的问题。 所以一般情况下,要在本 Goroutine 中完成 Mutex 的 Lock&Unlock,千万不要将要加锁和解锁分到两个 Goroutine 中进行。如果你确实需要这么做,请抽支烟冷静一下,你真的是否需要这么做。 2. Mutex 千万不能被复制 我之前发过的《当 Go struct 遇上 Mutex》里面详细分析了不能被复制的原因,以及如何 Mutex 的最佳使用方式,建议没看过的同学去看一遍。我们还是举个例子说下为啥不能被复制,以及如何用源码进行分析 typePersonstruct{ muxsync.Mutex } funcReduce(p1Person){ fmt.Println("step...",) p1.mux.Lock() fmt.Println(p1) deferp1.mux.Unlock() fmt.Println("over...") } funcmain(){ varpPerson p.mux.Lock() goReduce(p) p.mux.Unlock() fmt.Println(111) for{} } 问题分析: main Goroutine 已经给 p.mux 加了锁 , 这个时候 p.mux 的 state 的值是 mutexLocked。 然后将 p.mux 复制给了 Reduce Goroutine。这个时候被复制的 p1.mux 的 state 的值也是 mutexLocked。 main Goroutine 虽然已经解锁了, 但是 Reduce Goroutine 跟 main Goroutine 的 mutex 已经不是同一个 mutex 了, 所以 Reduce Goroutine 就会加锁失败, 产生死锁,关键是编译器还发现不了这个 Deadlock. 关于为什么编译器不能发现这个死锁,可以看我的博客《一次 Golang Deadlock 的讨论》 至此 Go Mutex 的源码剖析全部完毕了,有什么想跟我交流的可以再评论区留言。

优秀的个人博客,低调大师

盘点:2020年炙手可热的10家云计算初创公司

新冠病毒大流行进一步推动了云计算的发展,也让这个领域的初创公司有机会加速自身云服务被采用的速度。 根据研究和咨询公司Gartner的数据,预计最终用户企业和组织的全球公有云支出将从今年的2575亿美元增长到明年的3049亿美元,增幅为18%,这也为云计算初创公司抢占留出了很大的空间。 Wedbush Securities分析师Daniel Ives认为,随着2021年美国进入经济复苏期,云计算仍将是“技术食物链”的一个基础领域。 他在11月15日发布的一份报告中这样写道:“技术领域的基本增长动力仍然是十分强劲的……尤其是在云和网络安全领域,越来越多的企业和政府将他们的应用或者数据工作负载加速到由云驱动的环境中,这在COVID大背景下得到了显著的加速。” 下面就让我们看看这10家值得关注的云计算初创公司。 Amperity 首席执行官:Kabir Shahani 总部:美国西雅图 Amperity的企业客户数据管理平台利用人工智能和云规模来帮助企业掌控数据,并对客户有全方位的了解。目前包括阿拉斯加航空、Kroger、Lucky Brand、J.Crew、Planet Fitness、Kenneth Cole、Crocs和Stanley在内的多家企业客户都采用了Amperity的平台。 Amperity于2017年投入商业运营,首席执行官Kabir Shahani和首席技术官Derek Slager在将Appature(一家提供基于云的医疗营销软件的初创公司)出售给前IMS Health之后,在2013年成立了Amperity公司。Amperity在去年11月收购了Custora,一个客户分析平台消费品牌。 Astronomer 首席执行官:Joe Otto 总部:美国辛辛那提 Astronomer的Apache Airflow开源数据工作流程编排平台最早是作为Airbnb的一个内部项目在2014年启动的,该平台允许用户以Python编程方式编写、安排和监视数据管道。 Astronomer的Astronomer Cloud是一款多租户、多云的“Airflow即服务”产品,让客户可以启动和扩展Apache Airflow集群而不用操心底层基础设施,它运行在由Astronomer托管和管理的Kubernetes集群上。自托管的Astronomer Enterprise是一个基于Kubernetes的云原生平台,用于部署、管理和扩展分布式Airflow服务,可以运行在任何公有云、私有云或者裸机环境中。 今年5月,Astronomer在由美国加州风投公司Venrock领投的A轮融资中获得了1360万美元资金。 Benchling 首席执行官:Saji Wickramasekara 总部:美国旧金山 Benchling提供了一款统一的生命科学研究和开发云软件平台,以集中所有研发数据并实现标准化。该平台主要针对复杂大分子研究构建的,让用户可以对任何事物进行建模和互连,从序列到细胞系再到试剂等等,可以把任何实验过程建模成数字化的工作流程步骤。用户可以创建自定义的仪表板,用于追踪任何研发数,无需代码即可调整基准测试,集成任何工具或软件自动执行那些手动操作的数据任务。 今年5月,Benchling在由纽约风投公司Alkeon Capital Management领投的D轮融资中获得了5000万美元,当时Benchling首席执行官Saji Wickramasekara表示,Benchling累计获得的总投资金额已经达到1.14亿美元,估值为8.5亿美元。 Benching的客户主要来自制药、燃料到农业和食品等行业,其中那些在COVID-19大流行期间走在研究前沿的公司,例如Gilead Sciences、Regeneron Pharmaceuticals和Mammoth Biosciences。 Coder CEO:Kyle Carberry和John Andrew Entwistle 总部:美国奥斯丁 Coder提供的开源工具和企业平台旨在简化配置、保护和管理软件开发环境过程,让工程师可以在任何地方开展工作并专注于编写代码。 Coder的Coder Enterprise平台将软件开发移至云端,实现企业组织开发项目的集中化,创建和配置开发环境等手动过程的自动化。开发人员在几秒钟内就能从图像中启动完全配置的开发环境,用户可以从任何位置通过浏览器安全地访问这些环境。基础设施中的所有代码和数据集都是安全的,开发人员可以使用他们喜欢的IDE、工具和语言。Coder Enterprise可以运行在任何公有云或者私有云平台上,也可以部署在虚拟私有云的内部环境中。 Coder的平台也有免费开源版,据称,Coder的软件已经从Docker提取超过2300万次,并在GitHub上获得了36000颗星。 Coder创立于2017年,当时公司的联合创始人Entwistle和Carberry分别只有20岁和21岁,联合创始人兼首席技术官Ammar Bandukwala也才19岁,公司就筹集到了450万美元的种子资金。到目前为止,Coder已经累计融资4300万美元,其中包括在今年4月由美国加州风投公司GGV Capital领投的B轮融资中获得的3000万美元,Redpoint Ventures、Uncork Capital和中央情报局风险投资部门In-Q-Tel也参与了本轮投资。Coder为政府软件开发人员提供了DevSecOps解决方案,客户包括美国空军。 Ermetic 首席执行官:Shai Morag 总部:以色列特拉维夫 Ermetic是一家云身份和访问管理公司,可通过管理身份和访问权限、大规模实施最小特权来帮助企业保护IaaS和PaaS云基础设施。 Ermetic的云安全平台提供了全栈可见性,以及对多云基础设施权限的控制。Ermetic消除了攻击表面的盲点,让企业组织通过分析身份和访问管理策略以及网络、存储和机密资产的配置,在整个云基础设施中实施最低特权。 Ermetic的联合创始人兼首席执行官Shai Morag曾经是以色列公司Secdo(端点检测和响应厂商)的联合创始人兼首席执行官,Palo Alto Networks在2018年收购了Secdo。Ermetic其他联合创始人也曾打造过企业安全公司Aorato(在2014年被微软收购)和Sygnia(在2018年被新加坡投资公司淡马锡收购)。 今年5月Ermetic走出隐身模式,在由美国加州风投公司Accell领投的A轮融资中获得1725万美元,以及种子轮投资方的1000万美元。 Lightspin 首席执行官:Vladi Sandler 总部:以色列特拉维夫 云安全公司Lightspin专注于云安全技术,保护原生环境、Kubernetes和微服务免受风险影响。近日Lightspin走出隐身模式,在种子轮融资中获得400万美元。 Lightspin的创始人曾是前“白帽”黑客,很多全球大型企业付费邀请他们攻击自己的云基础设施以测试安全性。Lightspin联合创始人兼首席执行官Vladi Sandler表示,了解攻击者的想法,是Lightspin的“超级能力”。 Lightspin让企业组织可以在几分钟之内主动映射整个云堆栈,从而检测潜在重大威胁并避免出现配置漏洞,从而比黑客更早抢占先机。SaaS平台使用基于图形的预测工具和算法来提供快速的、深入的云堆栈可视化,分析潜在的攻击路径并检测根本原因。 种子轮融资是由美国丹佛风投公司Ibex Investors领投的。目前Lightspin的员工(包括研究、开发和工程设计)中有一半是女性。 Privacera 首席执行官:Balaji Ganesan 总部:美国加州弗里蒙特 Apache Ranger的创始人曾在2016年创立了Privacera,将Ranger的治理和安全功能从传统大数据环境扩展到云原生服务,以及AWS、微软Azure和Google Cloud Platform等云厂商的主流分析平台,和大数据分析平台开发方Databricks。 Privacera Platform是一套针对公有云中机器学习和分析工作负载的集中化企业数据治理和安全解决方案。今年10月Lightspin发布了最新4.0版本中的新功能,包括用于加速加载和自定义数据访问的访问工作流,扩展了在复杂基础设施环境中无缝数据标记的发现功能,以及用于自动加密和解密功能的加密网关。 今年7月,Lightspin宣布在由美国加州风投公司Accell领投的A轮融资中获得1350万美元,用于支持公司扩张和平台方面的投资。 Privitar 首席执行官:Jason du Preez 总部:英国伦敦 Privita Data Privacy Platform与AWS、微软Azure以及Google Cloud Platform进行了原生集成,以保护和管理敏感数据,同时优化用于分析应用的实用工具。企业可以自动执行数据配置,支持云规模的分析、机器学习、数据科学和其他服务,甚至可以从敏感数据集中获取洞察。 今年6月Privitar在C轮融资中获得700万美元,汇丰银行加入本轮融资,使融资总额达到8700万美元。汇丰银行也在成为Privitar客户的四年之后,成为Privitar的股东。 Privitar在去年12月加入了AWS合作伙伴网络的全球创业计划。近日,Privitar宣布通过了Microsoft One商业合作伙伴计划,获得微软的共同销售认可,并以独立软件提供商的身份加入微软FastTrack for Azure计划。 Sensu 首席执行官:Caleb Hailey 总部:美国俄勒冈州波特兰 Sensu为DevOps和站点可靠性工程团队提供了可观察性的管道,以代码形式提供监控功能。 Sensu的商用软件Sensu Go是专为基于容器和多云的基础设施设计的,基于同名的开源项目。这个基于代理的监控事件管道允许用户收集、过滤和转换监控事件,并将其发送到他们所选的数据库中。Sensu Go为Ansible Tower、Elasticsearch、PagerDuty、ServiceNow和Splunk等工具提供了交钥匙集成方案。 Sensu的企业客户包括Activision、Box.com和Sony。 WireWheel 首席执行官:Justin Antonipillai 总部:美国弗吉尼亚州阿灵顿 WireWheel是一家数据隐私管理软件提供商,提供的SaaS平台可以让隐私程序大规模运行,并利用与云基础设施、本地环境和云数据存储环境的集成。 WireWheel可以在企业组织隐私管理计划的所有阶段提供支持,包括协作和供应商风险管理,和隐私法规遵从,例如欧洲通用数据保护法规(GDPR)、加利福尼亚州消费者隐私法案(CCPA)、加利福尼亚州隐私权利法案(CPRA)等。 WireWheel创立于2016年底,今年3月被《Forrester Wave for Privacy Management Software》报告评为该领域的“表现突出的公司”。 WireWheel公司首席执行官Justin Antonipillai曾在奥巴马政府领导的美国商务部负责经济事务的副部长两年时间。他负责经济和统计署,其中包括首席经济学家办公室,人口普查局和经济分析局,以及围绕隐私和安全性开展的多项国际项目。 【责任编辑: 赵宁宁 TEL:(010)68476606】

优秀的个人博客,低调大师

4 月 Android 系统版本分布:8 代 Oreo 主流

Google 发布了每月Android 系统版本使用情况报告,展示了不同版本活跃用户的分布情况。 Google 通过统计用户调用Google Play 的相关信息,确定其所使用的系统版本。可以看到,目前使用最多还是 6.0 版本,占比 16.9%,其次是 8.1,这是 8.0 的一个更新版本。 不过把更新版本都算上的话,8 代足足占有 12.9%+15.4%=28.3% 的份额;其次是 7 代 11.4%+7.8%=19.2%,Android 6 只能排到第 3。总地来看,目前主流 Android 版本是 5(Lollipop,棒棒糖)、6(Marshmallow,棉花糖)、7(Nougat,牛轧糖)与 8(Oreo,奥利奥),另外,图表中并没有看到 Android 10 的分发情况。 这些数据是以 7 天为单位的收集的,截至 4 月 10 日,而且未显示占有率不足 0.1% 的版本。详情查看:https://developer.android.com/about/dashboards 你的 Android 设备吃上了哪种甜点?

优秀的个人博客,低调大师

实用整理!大数据搜索引擎工具有哪些?

今天,L氪迹详细整理了一些能够为我们做数据参考分析的搜索引擎工具,希望能够帮助各位收藏起来,便于日后运到数据统计工作时使用。 1、搜狗指数(微信指数) 搜狗大数据搜索工具介绍:搜狗指数平台是以搜狗搜索海量网民行为数据为基础的数据分析统计平台,在这里您可以查看全网热门事件、品牌、人物等查询词的搜索热度变化趋势,掌握网民需求变化。微信指数是微信官方提供的基于微信大数据分析的移动端指数。 2、百度指数 百度大数据搜索工具介绍:百度指数是以百度海量网民行为数据为基础的数据分享平台。在这里,你可以研究关键词搜索趋势、洞察网民兴趣和需求、监测舆情动向、定位受众特征。 3、微指数(微博) 微博大数据搜索工具介绍:微指数是基于海量用户行为数据、博文数据,采用科学计算方法统计得出的反映不同事件领域发展状况的指数产品。 4、阿里指数 阿里巴巴大数据搜索工具介绍:阿里指数是定位于”观市场”的数据分析平台,旨在为中小企业用户、业界媒体、市场研究人员,了解市场行情、查看热门行业、分析用户群体、研究产业基地等。 5、国家数据 国家大数据搜索工具介绍:为加快建设现代化服务型统计,更好地服务社会,国家统计局在2008年创建的"中国统计数据库"基础上,于2013年建立了新版统计数据库。可以查询到国家统计局调查统计的各专业领域的主要指标时间序列数据,还可以按照个人需求制作个性化统计图表;您不仅可以浏览众多承载历史的统计年鉴资料,还可以使用充满现代气息的可视化统计产品。 6、移动观象台 移动观象台大数据搜索工具介绍:TalkingData移动观象台基于设备用户的操作行为,提供业界最具影响力的数据报告,应用排行,人迹地图等。 7、高德交通报告(中国主要城市交通分析报告) 高德交通报告大数据搜索工具介绍:高德交通报告,为客户和合作伙伴,提供超出预期的、高质量的交通信息服务。 8、360趋势-搜索大数据分享平台 360趋势大数据搜索工具介绍:360趋势是基于360搜索的大数据分享平台。通过指数查询,可掌握关键字热度趋势、理解用户真实需求、了解关键字搜索的人群属性。 9、药智数据 药智数据大数据搜索工具介绍:药智数据是中国医药健康产业数据服务商,数据检索系统可检索药品、医疗器械、中药材、化妆品、食品、疾病、药品标准、国外药典、药品中标、药品价格、药品注册、医保目录等信息,是医药数据查询的好帮手。 10、爱奇艺指数 爱奇艺指数大数据搜索工具介绍:视频热播趋势、设备与地域热度分布;基于图像识别技术的场景、明星看点分析;爱奇艺平台内观影与社交UGC分析;观影用户自然属性、兴趣偏好。 11、物种搜索 物种搜索大数据搜索工具介绍:查询植物、动物、微生物的中文名称、中文异名、拉丁名称(学名)与拉丁异名。提供关于每个名称的详细信息。 12、海关百搜 海关百搜大数据搜索工具介绍:海关百搜由全关通信息网编辑整理,为用户提供海关外贸领域信息、数据检索、搜索服务,包括海关检索,海关搜索,海关信息检索,海关数据检索,海关信息搜索,海关数据搜索,海关HS编码检索,海关HS编码搜索,出口退税率检索,出口退税率搜索,海关税则编码检索,海关进出口关税税率检索。 L氪迹SEO3.0,深挖用户需求,重塑用户体验! SEO博客简介:SEO免费教程分享_学习交流纯白帽SEO技术以及网站排名优化方法 如若转载,请注明出处:https://www.lkeji.cn/

优秀的个人博客,低调大师

盘点:2019年炙手可热的10家大数据初创公司

据市场研究机构IDC预计,到2025年全球以数字方式生成的数据总量,将从今年的40ZB激增至175 ZB。为了管理所有数据并有效利用这些数据,预计今年企业和组织将花费1891亿美元在大数据和业务分析产品上。 尽管大部分支出将用于微软和Tableau等主要供应商,但大数据技术的很多创新都来自于在数据管理和业务分析领域开发创新软件的初创公司。 那些希望为客户提供业务分析、数据管理、数据科学和机器学习最新软件和服务以应对大数据挑战的解决方案提供商应该引起我们的关注。下面就让我们来看看2019年的这10家热门大数据初创公司。 Dataddo 首席执行官:Petr Nemeth Dataddo的平台可自动进行数据提取、转换和交付。该系统提供了与几乎所有在线数据服务(包括Google Analytics、Facebook和Salesforce)的无代码数据集成,可以将数据导出到各种数据库、数据仓库、云存储系统、业务分析工具和仪表板中。 Dataddo于2015年在捷克布拉格成立,目前公司位于美国加利福尼亚州山景城。 DataKitchen 首席执行官:Christopher Bergh DataKitchen是“ DataOps”的先驱,DataOps是将敏捷软件开发、DevOps和基于制造的统计过程控制引入了业务分析和数据管理运营的一项技术。 DataKitchen面向IT、数据仓库、数据科学和业务分析团队构建了DataOps平台,该平台的目标是推动更快速、更灵活、更可靠地交付数据管道。 DataKitchen成立于2013年,总部位于美国马萨诸塞州剑桥市。 DotData 首席执行官:Ryohei Fujimaki DotData开发了一个端到端的数据科学自动化平台,并将其定位为“加速、普及和操作”整个数据科学过程。DotData的软件应用面向客户分析、市场营销、风险与治理、供需、资产管理、业务自动化等用途。 今年10月,DotData被选为微软Microsoft for Startups认证的合作伙伴,微软的这项计划旨在帮助初创公司开发可运行在微软Azure云上的创新技术。 Dotdata总部位于美国加利福尼亚州圣马特奥,于2018年从NEC分拆出来。今年早些时候,DotData推出了其软件的1.4企业版,该软件采用最新的机器学习算法,以及用于处理地理数据的AI功能。DotData最近发布了支持Python的DotDataPy。 Dremio 首席执行官:Tomer Shiran Dremio的“数据即服务”平台使用户能够发现、整理和共享数据,无论位于什么位置或者采用什么结构,都有助于弥合数据工程师与业务用户之间的鸿沟。该软件使用Apache Arrow(一种用于内存数据的开源跨语言开发平台)来提高查询性能。 Dremio总部位于美国加利福尼亚州圣克拉拉,是由Apache Arrow和Apache Drill项目的创始人在2017年成立的。去年,Dremio的年度经常性收入相比2017年增长了10倍,企业客户群增长了5倍。 Hammerspace 首席执行官:David Flynn Hammerspace是不断扩大的“数据即服务”领域的一个新星,其技术可以跨混合云和多云IT系统提供对数据的访问。Hammerspace的软件定义混合云数据控制平面依赖于元数据驱动的机器学习,可以对来自本地和基于云的多个存储系统的数据进行虚拟化和抽象化,从而可被任何应用、服务、容器或者开发人员所使用。 Hammerspace成立于2018年,总部位于美国加利福尼亚州洛斯阿尔托斯。 Okera 首席执行官:Nong Li 数据湖(无组织的、非结构化数据的巨大存储库)的数量正在持续激增。随着政府颁布有关消费者数据保护和使用的严格规定,实施数据湖的企业组织面临着来自管理和安全方面的严峻挑战。 Okera成立于2016年,致力于开发管理数据湖数据访问、安全性和治理问题的软件。 Okera Active Data Access Platform提供了详细的数据可见性,对结构化和非结构化数据的保护功能。 这家总部位于美国旧金山的初创公司在今年8月推出了Okera Policy Builder软件,数据管理员和治理团队可以使用该软件创建和管理数据访问控制策略。 ProvenDB 首席执行官:Vinny Smith ProvenDB位于澳大利亚墨尔本,于今年6月推出了支持区块链的数据库服务,以及一个采用公共区块链的标准数据库引擎。 ProvenDB服务建立在MongoDB Atlas数据库服务上,其中添加了核心的区块链属性。ProvenDB试图通过这种方式克服区块链的成本和性能问题,将主流的数据库引擎的高性能与区块链的特性(如不变性、数据出处和概率)相结合。 SlicingDice 首席执行官: Gabriel Menegat SlicingDice提供基于云的全方位服务数据仓库和分析式数据库即服务,SlicingDice完全托管的数据仓库服务包含了用于数据集成、探索、可视化和机器学习的可选内置工具。 SlicingDice成立于2017年,总部位于美国旧金山和巴西圣保罗。 Starburst Data 首席执行官:Justin Borgman Starburst Data提供了Presto(一种开源高性能SQL引擎)的企业分发版,以及相关的服务和支持。Starburst Data把Presto以任何分析平台上的SQL的方式提供给客户,可跨多种数据源执行交互式查询,包括Hadoop文件系统、Amazon S3存储、Kafka,以及MySQL、Microsoft SQL Server和MongoDB等数据库系统。 这家位于波士顿的初创公司成立于2017年。 Yellowbrick Data 首席执行官:Neil Carson Yellowbrick Data提供了一款全闪存小型数据仓库设备,可运行在混合云环境中,与那些更复杂、更昂贵的数据仓库系统展开竞争。该系统旨在处理从10 TB到几PB数据的数据负载。 Yellowbrick Data总部位于加利福尼亚州帕洛阿尔托,于2018年走出隐身模式,并于今年6月通过C轮融资筹集了8100万美元,总融资金额达到1.73亿美元。

优秀的个人博客,低调大师

MIT官方点名:阿里云是全球聪明公司之一!

我们被MIT官方点名了! 《MIT科技评论》发布2019 年 “50 家聪明的公司” (TR50)榜单,阿里云成为全球首家上榜云服务商。 今年MIT更加关注具备创新活力的未来公司,将阿里云单列,体现出对云和智能技术特别关注,这一技术正在替代传统IT成为未来公司的发展动力。 入选理由中MIT表示,在硬核科技方面,阿里云发布飞天系统2.0,拥有可从秒级启动ECI至云上超算集群的全场景覆盖,云边端一体的协同计算和 AI 能力。在市场上,阿里云是全球前三、亚太第一的云服务商。40% 的中国 500 强企业、近一半中国上市公司、80% 中国科技类公司是阿里云的客户。 如果你是评委,会怎么写阿里云的入选理由?

优秀的个人博客,低调大师

看云原生时代阿里云的四个“

云原生已经成为 IT 领域最热的词之一。到底有多火,大家感受一下: 2015 年在旧金山召开的首届 KubeCon 只有 200 余参会者,而今年第二次在中国举办的KubeCon迎来了3000+现场观众,遍布全球的线上关注开者则更是不计其数。Gartner最近发布报告表示云原生时代已来,在未来三年中将有75%的全球化企业将在生产中使用容器化的应用。作为云原生技术与应用的领先企业,阿里云在今年的 KubeCon + CloudNativeCon 大会上为全球企业和开发者分享了26场行业趋势和技术演讲。 阿里云智能容器平台负责人丁宇指出: 云原生正在重塑整个软件生命周期,容器、Kuberentes、云原生成为云时代的三个重要标准。阿里云将继续加大云原生技术栈产品体系的研发,并持续回馈开源社区,与生态合作伙伴一起,共同推动云原生标准制定以及

优秀的个人博客,低调大师

小白如何购买阿里云服务器(2019详细教程)

很多第一次接触云计算的小白不懂如何购买阿里云服务器,不清楚该如何选购云服务器配置才能满足业务需求,为此笔者整理购买阿里云服务器教程(小白篇),希望能在选购云服务器配置上能帮助到大家! 一:访问阿里云官网阿里云! 二:注册阿里云账号,或者使用淘宝账号登录激活阿里云账号。 三:从产品里面选择云服务器ECS 四:进入页面后选择立即购买,当天也可以看一下他的介绍后在点击购买 五:选择购买的配置, 主要从以下几个方面考虑: 1.付费方式:按年付费,按使用量付费。建议新人按月或者按年付费。 2.选择服务器所在的地区:你是做中国的话,其实华南华北现在访问速度都差不多,建议选择华北区域,是新开的,价格会要比其他地区优惠。 3.选择实列,也就是选择你的服务器配置。这里有很多配置,我就只列举一下新手需要的配置:1VCPU,2Gbit就可以满足需求了 更多的实例我抽时间

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册