首页
学习
活动
专区
工具
TVP
发布

鸿的学习笔记

专栏成员
330
文章
292908
阅读量
49
订阅数
Hadoop 诞生的历史
Hadoop 这个名称来源于一种已经灭绝的猛犸象,即 Yellow Hadoop。
哒呵呵
2022-03-11
1.4K0
闲聊 modern data stack
2021 年一个有趣的新变化就是:Building the modern stack with open-source data solutions,换成比较容易理解的话,就是基于开源软件构建自己的数据处理流程。如果是在国内玩大数据的人,可能对此还有些不太理解(比如我),现在各家互联网公司基于 Hadoop 生态圈等一系列开源组件构建的大数据平台解决方案早就已经成熟,那modern data stack价值在哪呢?通过对What I Learned From The Open Source Data Stack Conference 2021的阅读,我发现这是为了解决传统企业的数字化转型问题的,让这些企业也能使用上方便高效的处理工具洞察数据,而不用局限于某一家提供闭源的商业解决方案的公司。用文中的话来说,就是通过开源软件,企业可以自己掌控数据,保证用户数据隐私安全,而不用担心数据被第三方公司利用。
哒呵呵
2021-12-24
1.3K0
量子计算对计算机安全的影响
在传统计算机领域里,安全是永远绕不开的话题,而构成计算机安全领域里的最重要的两个理论基础是对称密码学和非对称密码学,都是基于密码破解的成本远远超过现有的计算机计算能力,比如常用的RSA(Rivest-Shamir-Adleman)密码系统使用两个大素数的乘积,导致一般计算机很难分解生成的乘积以找到初始素数。与其类似的还有ECC(椭圆曲线密码)。
哒呵呵
2021-08-12
1.8K0
浅谈机器学习工程化
今天继续聊下机器学习工程化的问题。机器学习基本上已经成为大多数数据团队的标配,关于机器学习算法的内容,网上有很多,随便找找就可以了,有了TensorFlow、scikit-learn 这些 Python 工具后,甚至只要知道算法就行,至于实现也不需要关心了。但是在实际生产环境当中如何让机器学习产生其真正的价值还是一件比较复杂的事,就我接触和实践中看来有两个很重要的问题:
哒呵呵
2021-06-17
1.6K0
什么是 Data Mesh ?
Data Mesh 的概念起源于 ThoughtWorks 的首席技术顾问 Zhamak Dehghani 发表在 martinfowler 官网上的两篇文章How to Move Beyond a Monolithic Data Lake to a Distributed Data Mesh和Data Mesh Principles and Logical Architecture。
哒呵呵
2021-03-16
3K0
分布式系统的一个简单的学习框架
最近在看 Martin Fowler 网站上的Patterns of Distributed Systems系列文章,突然想到,是不是也写一篇文章简单梳理一些分布式系统的学习框架,方便以后查阅,于是就有了这篇文章。下篇文章将会编译Patterns of Distributed Systems系列文章,大家可以与这篇文章对比下,选择自己合适的方式学习。
哒呵呵
2020-08-25
5700
浅谈信息茧房的构建和破“茧”的一些思路
信息茧房这个概念起源于2006年出版的凯斯·桑斯坦的《信息乌托邦》一书。2006年的时候,“信息茧房”还是仅仅停留在概念阶段,其赖以成长的技术基础大数据技术也才刚刚成长起来。直到大数据技术成熟,并孕育出像今日头条这类的信息流 APP 时,信息茧房才引起人们的重视。
哒呵呵
2020-06-23
1.4K0
看得见的与看不见的 - 计算机科学里的 trade-off
政府或企业的每一个决策、每一次行动,甚至不经意间的个人行为都可能会对现实生活中造成影响,其中有些影响是立马可以感受到的,是看得见的,而有些影响是第一时间很难感受到的,是看不见的。经济学里有一个很经典的例子是来说明看得见和看不见的影响,商店主人的儿子把商店的橱窗打破了,然后商店的主人花钱请玻璃工师傅把橱窗修复了,然后玻璃工师傅拿到了修复的费用,在某种程度上,这笔修复的费用使整个资金链运转起来,商店的橱窗修复了,玻璃工师傅有了收入,这是看的见的影响。同样的,还有看不见的影响,商店主人原本可以用这笔钱去创造更大的价值,比如购进新的货物、让商店更好看,然而因为橱窗的打破这笔钱没有了。
哒呵呵
2020-04-23
6820
大数据领域里的独行侠-Dynamo风格数据库
上篇文章聊了下 Hbase ,这篇聊一下 Hbase 的“孪生兄弟”Dynamo风格的数据库,比如 Riak 、Cassandra。在大数据领域混的人大概都知道谷歌发表的 BigTable 的论文,但是对亚马逊的 Dynamo 论文就不太清楚了。当然这也有可能是因为其开源实现 Cassandra 不怎么出名有关。
哒呵呵
2020-03-13
9540
为什么数据库常使用有序数据结构而编程语言使用哈希表结构
在编程语言里哈希表结构(例如 Go 中的 Map,Python 中的 Dict,Java 中的 HashMap 等)要比有序索引的数据结构(例如Tree)更常见。作者提到了,Google 对 C++ 哈希表结构的优化总体上减少了1% CPU 使用率和4% 内存的使用。然而在数据库中,最常见的是默认使用像B树一样的有序索引。
哒呵呵
2019-12-25
8770
Presto对ORC格式的优化
最近Presto的官网发表了一篇文章,叙述了新版本的Presto对ORC格式读取的性能优化过程,包含了很多代码细节,非常有趣,故进行简单编译。
哒呵呵
2019-05-16
2.5K0
Python3.7的进化-异步编程
asyncio相关模块已经成为Python很核心的一部分,aio-libs一直在持续的发展中,例如aiohttp、aiopg等库已经可以初步的在生产环境使用了。在Python3.7中,引入了一系列的与asyncio相关变化,这些变化聚焦在代码质量,让开发者尽量地减少工作量和获得更好的性能体验,主要内容包括了<新的保留字>、<环境变量>、<新的asyncio.run()函数>、<更简单的任务管理、时间循环管理>、<回调更新>、<异步的上下文管理器>等。
哒呵呵
2019-01-23
2.7K0
简单聊聊Python的类型系统
这篇文章实际是The Ultimate Guide to Python Type Checking文的导读和个人理解,有不当之处,以原文为准。内容分为四个部分:
哒呵呵
2019-01-23
1.2K0
用于工业界的机器学习:案例研究
您好,我是Chris Burges。 在我过去在微软工作了14年,在此之前为贝尔实验室又工作了14年,我花了大量的时间在机器学习(ML)上,其中有部分时间又花在解决工业问题上了。由于对ML的兴趣,特别是在工业环境中,越来越火,现在似乎是一个好时机去从实践的角度和算法的思考ML的工作原理的整个应用。
哒呵呵
2018-08-06
7290
写给开发者的机器学习指南(七)
Classifying email as spam or ham (NaiveBayes)
哒呵呵
2018-08-06
4170
神经网络结构(中)
革命在2015年12月到来,与Inceptionv3大约在同一时间。 ResNet有一个简单的想法:反馈两个连续的卷积层的输出,并且也绕过输入到下一层!
哒呵呵
2018-08-06
3380
神经网络结构(上)
深度神经网络和深度学习是很强大和流行的算法。他们的成功很大程度上在于神经网络架构的精心设计。所以我想重温过去几年深度学习的神经网络设计的历史。
哒呵呵
2018-08-06
4860
聊聊一些垃圾回收算法
不是所有的GC都是完美的,每一个GC算法的选用都有其背后的原因。而我们选择GC算法,有四个评价标准:吞吐量(也就是说,在单位时间内你回收的对象(这里是指通过应用程序获取的数据集合)多少),最大暂停时间(要执行GC意味着,应用程序必须会发生短暂的暂停,这个评价的就是暂停时间的大小),堆使用效率(这是指GC在堆中存放的信息大小,GC过程中使用的能力),访问的局部性(这个来源于硬件,是否把具有引用关系的对象安排在堆中较近的对象)。 1.标记-清除算法 这个是最老的算法了,来源于简单的思想,把活动的对象使用一定空间递归的先打上一个标记,最后在清除阶段将没有打上标记的数据删除。在标记阶段可以使用深度优先搜索,也可以使用广度优先搜索,当然这两个算法的核心在于队列的使用。回收后,当然还需要再使用,这时候就会把这些数据用链表连接起来形成一个空闲链表。这样就会导致碎片化的分块,就和windows的文件系统一样。 2.引用计数 既然GC是一种让没有引用对象的对象离去的机制,那么为啥不让所有对象事先记录下有多少程序引用自己,然后没有引用的对象消失。这就是引用计数,来源于自然而然的想法。这个算法引入了计数器的概念。但是这个算法的实现却不是那么简单,因为我们要考虑到每个对象的更新,而不是简单的赋值了。计数器本身的增减会带来时间上的消耗,计数器本身也会占用内存。不过优点也很明显,可以即刻回收垃圾,最大暂停时间也会变少,并且没有了遍历对象的过程,这个在分布式的环境下尤为有利。 3.GC复制算法 这个算法简而言之就是,把所有活动对象复制到另一个空间To,在把原空间From的所有对象删除。因为只复制和搜索活动对象,这意味着和1所提到的标记-清除算法,GC的暂停时间减少了,对于空闲链表的分配也更加得心应手,毕竟再也没有分块的担忧了,碎片化的问题也获得了解决,有得必有失,GC复制算法也极大的消耗了堆空间。
哒呵呵
2018-08-06
2570
简单聊聊py的高性能编程
高性能编程的含义是通过编写更为高效的代码或者改变操作方式,也就是找到更合适的算法去降低时间上的开销。 计算机的模型可以分为三种,分别是计算单元(CPU,GPU),存储单元(硬盘,内存之类的)还有它们之间的连接。计算单元给我们的是我们能有 多块的速度去解决问题,它可以将接受到的输入变成对应的输出以及改变状态的能力。存储单元一方面是能存多少数据,另一方面是对这些数据的读写有多快,越靠近CPU的存储速度越快 ,其包含的数据量也越少。计算单元和存储单元之间的连接则是决定了数据移动的数据有多快,光速是有限的,它决定着物理的极限,总线带宽也决定着一次传输能有多少数据。 #一个简单计算质数的代码,按照其实还有更好的优化方法,具体请看《编程珠玑》 import math import time def check_prime(number): sqrt_number = math.sqrt(number) start = time.time() for i in range(2, int(sqrt_number) + 1): if (number / i).is_integer(): return False end = time.time() print('sum_time',end-start) return True check_prime(10000000) check_prime(10000019) 理想的计算模型:(以下不是真实的python计算过程,只是为了讲解) 1.number的值会存放在随机存储器上,为了计算sqrt_number,需要将number传入到CPU当中去。在传入的时候应该尽可能的利用靠近 CPU的缓存,而不是如下的写法: sqrt_number = math.sqrt(number) number_float = float(sqrt_number) 这样意味着将数据两次经过总线传输,将数据尽可能的少移动,保持在需要的地方是必须的。也就是说移动计算,而不是移动数据。 2.python的虚拟机为了尽可能的抽象做了很多工作,但是相应的牺牲了性能,比如 快: for i in haystack: if (exp): return False return True 慢: value = True for i in haystack: if (exp): value = False return True 虽然结果是一样,但是运行时间在足够大的数据量就会发生巨大的差别,这也是上述所说的尽可能的少移动数据 3.为了可以矢量操作,也就是在循环时将循环值也就是i值尽可能的一次性读入CPU,在CPU内进行计算,返回相应的值,需要借助numpy这样的用C写的库区实现, 4.抽象的代价也意味着python的对象不再是内存中的最优化布局,因为内存需要自动处理并且释放,这就影响了向CPU缓存的效率。 5.动态语言不可避免的代价就是,没有编译器从全局角度去优化对象的内存布局和CPU指令 6.最后一个则是臭名昭著的GIL了。
哒呵呵
2018-08-06
4150
没有更多了
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档