- 博客(32)
- 资源 (9)
- 问答 (1)
- 收藏
- 关注
原创 大数据 Lambda 架构
目标市场上的许多玩家已经建立了成功的MapReduce工作流程来每天处理以TB计的历史数据。但是谁愿意等待24小时才能获得最新的分析结果?这篇博文将向您介绍旨在利用批处理和流处理方法的Lambda架构。我们将利用Apache Spark(Core,SQL,Streaming),Apache Parquet,Twitter Stream等实时流数据快速访问历史数据。还包括清晰的代码和直观的演示!...
2019-10-30 15:37:41 9454 1
转载 实时协同编辑的实现
在最近某个项目中打算使用协同编辑来解决冲突问题,因此抽空调研了现有的实现方案,结果发现要想做完美是很难的,但我们可以低成本地做到不错的效果,本文将介绍几种实现方法,大家在项目中如果有需要可以参考。什么是实时协同编辑这里所说的实时协同编辑,是指多人同时编辑一个文档,最典型的例子是 Google Docs,你可以实时看到别人做出的修改,不用手动刷新页面。要实现实时编辑,我们需要解决两个技术...
2019-10-30 15:03:21 10793
原创 数据湖 与 Lambda 架构
数据湖 与 Lambda 架构目录数据湖 与 Lambda 架构1.Lambda架构背景介绍2.大数据系统的关键特性3.数据系统的本质3.1.数据的本质3.1.1.数据的特性:When & What3.1.2.数据的存储:Store Everything Rawly and Immutably3.2.查询4.Lambda架构4.1.Batch L...
2019-10-27 21:37:42 9324
转载 Lambda架构已死,去ETL化的IOTA才是未来
经过这么多年的发展,已经从大数据1.0的BI/Datawarehouse时代,经过大数据2.0的Web/APP过渡,进入到了IOT的大数据3.0时代,而随之而来的是数据架构的变化。▌Lambda架构在过去Lambda数据架构成为每一个公司大数据平台必备的架构,它解决了一个公司大数据批量离线处理和实时数据处理的需求。一个典型的Lambda架构如下:...
2019-10-27 21:26:17 8624
原创 云原生 (Cloud Native) = 微服务 + DevOps + 持续交付 + 容器化 ?
容器化包装:软件应用的进程应该包装在容器中独立运行。动态管理:通过集中式的编排调度系统来动态的管理和调度。微服务化:明确服务间的依赖,互相解耦。imagehttps://dzone.com/articles/cloud-native-seeing-through-the-hypeimage什么是云原生?云原生准确来说是一种文化,更是一种...
2019-10-27 14:07:08 10508
原创 云原生 (Cloud Native) = 微服务 + DevOps + 持续交付 + 容器化 ?
云原生准确来说是一种文化,更是一种潮流,它是云计算的一个必然导向。意义在于让云成为云化战略成功的基石,而不是障碍。Cloud Native 翻译为云原生,是Matt Stine提出的一个概念,它是一个思想的集合,包括DevOps持续交付微服务(MicroServices)、敏捷基础设施(Agile Infrastructure)、康威定律(Conways Law)等,以及根据商业能力对公司进行重组。
2019-10-27 12:08:44 21044 2
原创 基于函数工作流的函数组合
基于函数工作流的函数组合函数工作流(Function Flow,简称 FnF)是一个用来协调多个分布式任务执行的全托管 Serverless 云服务,简化了开发和运行业务流程所需要的任务协调、状态管理以及错误处理等繁琐工作,让用户更好的专注业务逻辑开发。可以说函数工作流是转为函数组合而生,有效的解决了上面几种异步组合模式的局限性。上面的所有模式都是通过点对点的方式来组合函数,而函数工作...
2019-10-27 11:56:43 9404
原创 MySQL索引底层实现原理 & MyISAM非聚簇索引 vs. InnoDB聚簇索引
MySQL索引底层实现原理MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找(linear search),这种复杂度为O(n...
2019-10-25 11:15:33 9087
原创 数据库中的 “行式存储”和“列式存储”
传统的关系型数据库,如 Oracle、DB2、MySQL、SQL SERVER 等采用行式存储法(Row-based),在基于行式存储的数据库中, 数据是按照行数据为基础逻辑存储单元进行存储的, 一行中的数据在存储介质中以连续存储形式存在。随着大数据的发展,现在出现的列式存储和列式数据库。它与传统的行式数据库有很大区别的。行式数据库是按照行存储的,行式数据库擅长随...
2019-10-25 11:04:08 9782
原创 Redis 为什么这么快? Redis 的有序集合 zset 的底层实现原理是什么? —— 跳跃表 skiplist
Redis有序集合 zset 的底层实现——跳跃表skiplistRedis简介Redis是一个开源的内存中的数据结构存储系统,它可以用作:数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串(Strings),散列(Hash),列表(List),集合(Set),有序集合(Sorted Set或者是ZSet)与范围查询,Bitmaps,Hyperloglogs 和地理空间...
2019-10-24 17:50:57 15709 1
原创 聚簇索引与非聚簇索引
InnoDB 聚簇索引InnoDB使用的是聚簇索引,将主键组织到一棵B+树中,而行数据就储存在叶子节点上,若使用"where id = 14"这样的条件查找主键,则按照B+树的检索算法即可查找到对应的叶节点,之后获得行数据。若对Name列进行条件搜索,则需要两个步骤:第一步在辅助索引B+树中检索Name,到达其叶子节点获取对应的主键。第二步使用主键...
2019-10-23 23:08:31 8627
原创 MySQL 聚簇索引和非聚簇索引 & mysql 索引为啥用b 树
聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据 非聚簇索引:数据存储和索引分开放,索引结构的叶子节点指向了数据的对应行,myisam通过 key_buffer 把索引先缓存到内存中,当需要访问数据时(通过索引访问数据),在内存中直接搜索索引,然后通过索引找到磁盘相应数据,这也就是为什么索引不在 key buffer 命中时,速度慢的原因(磁盘 IO)。澄清一个概念:inno...
2019-10-23 22:48:31 11499 2
原创 使用 Kotlin 写一段函数式的递归遍历树结构,处理节点的代码
fun visitNavigation(navData: List<NavigationNodeVO>?, visitor: (NavigationNodeVO) -> Unit) { navData?.map { visitor(it) val children = it.children visitNavigation(...
2019-10-23 19:55:54 8711
原创 《绿皮书》中的经典台词
电影简介《绿皮书》第91届奥斯卡金像奖最佳影片。许多知名国际影评人甚至将其评为2019年最具人文主义美感的文艺电影。该片根据真人真事改编,主要讲述在上世纪60年代的美国,意裔美籍白人保镖托尼阴差阳错被爵士黑人钢琴家唐聘用为司机,一路从纽约开始一路南下举办巡回演奏的故事。途中二人最开始矛盾抵触,后来慢慢调和,甚至惺惺相惜。该片以最诙谐幽默且张弛有度的方式描绘了一段跨...
2019-10-21 09:52:30 12886
转载 分布式系统原理介绍
1 概念1.1 模型节点在具体的工程项目中,一个节点往往是一个操作系统上的进程。在本文的模型中,认为节点是一个完整的、不可分的整体,如果某个程序进程实际上由若干相对独立部分构成,则在模型中可以将一个进程划分为多个节点。异常机器宕机:机器宕机是最常见的异常之一。在大型集群中每日宕机发生的概率为千分之一左右,在实践中,一台宕机的机器恢复的时间通常认为是24 小时,一般需要人工...
2019-10-19 14:43:37 8682
原创 分布式系统:一致性hash算法 & 在分布式系统中的应用
前段时间在了解分布式,发现firefoxbug在博客中写的这篇《一致性hash在分布式系统中的应用》对这个问题说明得比较清晰易懂,本文主要是自己的理解和实践。在后端一般会遇到这样的场景:随着应用系统的访问量或者DB/文件存储系统的数据量增大,系统由于负载增大而出现响应延迟甚至down掉的情况。为了解决这个问题,往往会对系统采用垂直扩展和水平扩展的架构设计,而分布式系统正是水平扩展架构的一...
2019-10-19 14:40:54 9231
原创 Paxos 算法 : 一种基于消息传递且具有高度容错特性的一致性算法
Paxos算法是莱斯利·兰伯特(英语:Leslie Lamport,LaTeX中的“La”)于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法。问题和假设分布式系统中的节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing)。基于消息传递通信模型的分布式系统,不可避免的会发生以下错误:进程可能会慢、被杀死或者重启,消息可能...
2019-10-19 14:37:15 11111
转载 图解各路分布式ID生成算法
在分布式系统中,通常会用到分布式ID来标注数据的唯一性,而分布式ID的生成方式又多种多样,今天我们就来讨论一下主流的分布式ID生成策略。分布式ID基本需求 全局唯一 趋势递增 信息安全 全局唯一这是基本要求,不必解释趋势递增为什么要趋势递增呢?第一,由于我们的分布式ID,是用来标识数据唯一性的,所以多数时候会被定义为主键或者唯一索引。第二,并且绝大多数...
2019-10-19 12:44:05 9650
原创 在 IDEA 中配置 PlantUML (一门快速画图的设计语言)开发环境
PlantUML 简介一门可以快速画图的设计语言:http://plantuml.com/zh/state-diagram@startumlclass Space{ id name members gmtCreate gmtModified}class DataSource{ id name type access...
2019-10-17 11:21:07 10265
转载 架构三要素:职责明确的模块或者组件、关联关系、约束和指导原则
架构三要素:职责明确的模块或者组件、关联关系、约束和指导原则架构三要素:职责明确的模块或者组件组件间明确的关联关系约束和指导原则Linux 的创始人 Torvalds 有...
2019-10-16 18:02:24 9764
原创 哨兵 (sentinal) 机制的工作原理
哨兵 (sentinal) 机制的工作原理什么是哨兵机制?Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务: 监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。 提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵(senti...
2019-10-16 17:51:00 14895
转载 MyISAM 和 InnoDB 索引的区别
阅读目录一 MyISAM索引实现 二 InnoDB索引实现 三 InnoDB索引和MyISAM索引的区别一 MyISAM索引实现1. 主键索引MyISAM引擎使用B+树作为索引结果,叶节点的data域存放的是数据记录的地址。下图为MyISAM表的主索引,Col1为主键。2. 辅助索引在MyISAM中,主索引和辅助索引在结构上没有任何区别,只是主索引要求key是唯...
2019-10-16 17:29:58 8500
转载 理解RESTful架构 & RESTful API 设计指南
理解RESTful架构越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点。网站开发,完全可以采用软件开发的模式。但是传统上,软件和网络是两个不同的领域,很少有交集;软件开发主要针对单机环境,网络则主要研究系统之间的通信。互联网的兴起,使得这两个领域开...
2019-10-16 16:49:44 8667
原创 Maven引入依赖后自动下载并关联源码 Source
在下载依赖包的同时下载其源代码包的方法:使用maven命令:mvn dependency:sources 下载依赖包的源代码。使用参数: -DdownloadSources=true 下载源代码jar。-DdownloadJavadocs=true 下载javadoc包。mvn dependency:sources -DdownloadSources...
2019-10-15 13:59:22 8843
原创 Kotlin (Java) 获取 mysql 数据库的所有表,表的所有字段,注释,字段类型
import com.mysql.jdbc.jdbc2.optional.MysqlDataSourceimport org.slf4j.LoggerFactoryimport org.springframework.stereotype.Serviceimport java.sql.*import java.util.*import javax.sql.DataSource@Ser...
2019-10-15 10:13:17 8905
原创 Kotlin (Java) 获取 mysql 数据库的所有表,表的所有字段,注释,字段类型
import com.mysql.jdbc.jdbc2.optional.MysqlDataSourceimport org.slf4j.LoggerFactoryimport org.springframework.stereotype.Serviceimport java.sql.*import java.util.*import javax.sql.DataSour...
2019-10-15 10:12:20 8780
原创 Kubernetes API
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.15/
2019-10-09 16:54:10 8397
原创 PlantUML 简明教程
PlantUML 简介PlantUML 是一个开源项目,支持快速绘制时序图、用例图、类图、活动图、组件图、状态图、对象图、部署图等。同时还支持非 UML 图的甘特图、架构图等。例如下面等用例图:@startumlP: PENDINGP: Pending for resultN: NO_RESULT_YETN: Did not send the KYC c...
2019-10-09 15:44:20 12987
原创 怎样成为一个优秀的架构师?
怎样才算是架构师?架构师是一个既能掌控整体又能洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。看似完美的“人格模型”背后,是艰辛的探索。架构师不是一个人,他需要建立高效卓越的体系,带领团队去攻城略地,在规定的时间内完成项目。架构师的分类从业界来看对于架构师的理解可以大概区分为: 企业架构师:专注于企业总体 IT 架构的设计。 IT 架构师-软件产品架构...
2019-10-08 17:17:14 175551 298
转载 谷歌开源内部代码评审规范
谷歌成立于 1998 年,以搜索起家,到目前为止已经发展了 21 年。在过去的 21 年中,谷歌不断创新,开发了七款产品,拥有超过 10 亿级活跃用户,谷歌的工程师文化一直被认为是优秀且特别的。近日,谷歌开源了其内部一直在使用的代码评审规范,InfoQ 对其进行了翻译和整理,分享给广大开发者,看看谷歌工程师是如何评审代码的。代码评审标准代码评审的主要目的是确保代码库的整体质量随时间...
2019-10-08 15:34:03 13380
原创 一种用于决策(decision-making)的系统架构
一种用于决策(decision-making)的系统架构前言大数据(big data)时代什么是大数据Gartner是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。麦肯锡一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软...
2019-10-08 13:56:14 9542 1
原创 《一个人的朝圣》:爱,才是救赎一切的良药
#一个人的朝圣#爱,才是救赎一切的良药。就算你站在所有人的前面,但还是孤身一人。多少人爱你青春欢畅的时辰,爱慕你的美丽,假意或真心,只有一个人爱你那朝圣者的灵魂,爱你衰老了的脸上痛苦的皱纹。(叶芝)去接受一些你不了解的东西,去争取,去相信自己可以改变一些事情。——蕾秋·乔伊斯《一个人的朝圣》 因一封信,因一句话,哈罗德决定...
2019-10-05 01:18:51 9956 1
ClickHouse 高性能、可扩展和低成本的OLAP数据库 陈光剑 20230912
2023-09-14
Will AI Fix Work? 工作节奏超过了我们的跟上能力 人工智能有望创造一种全新的工作方式
2023-05-17
THE AI INDEX REPORT 人工智能指数报告 Measuring trends in Artificial Inte
2023-04-06
Kotlin Coroutines by Tutorials (1st Edition)
2021-04-28
Principles of programming languages by Gilles Dowek (auth.) (z-lib.org).pdf
2021-04-28
A Brief History of Artificial Intelligence
2021-04-28
An introduction to functional programming through lambda calculus.PDF.zip
2019-09-22
《Kotlin项目实战开发》第3章+类型系统与可空类型
2017-09-30
2024 年可以实现 AGI 吗?
2024-01-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人