小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司。
话说两个多月前,小史通过了A厂的一面,两个多月后的今天,小史终于等到了A厂的二面。
在简单的自我介绍后,面试官看了看小史的简历,开始发问了。
面试现场
小史:没问题,这个项目前端用的React+Webpack,后端用的Nginx+SpringBoot+Redis+MySQL,前后端是分离的,最后用Docker进行容器化部署。主要模块有师生系统、课程系统、成绩系统、选课系统等。
这个项目的架构和说辞,小史早已背得溜溜的。
小史:底层MySQL是存储,Redis是缓存,Dao层操作MySQL,Cache层操作Redis,Service层处理业务逻辑,RestAPI层为前端提供Rest接口。
前端这边用React进行模块化,Webpack打包部署。网关Nginx进行负载均衡。MySQL、Redis、Nginx和SpringBoot应用都放在Docker里部署。
题目:为什么MySQL数据库要用B+树存储索引?小史听到这个题目,陷入了回忆。
前段时间的饭局
话说吕老师给小史讲完人工智能的一些知识后,他们一起回家吃小史姐姐做的饭去了。
吕老师:面试的时候一定是往深了问,不精通的话容易吃亏。不过面试时一般都是根据项目来问,项目中用到的技术,一定要多看看原理,特别是能和数据结构和算法挂钩的那部分。
小史:树的话,无非就是前中后序遍历、二叉树、二叉搜索树、平衡二叉树,更高级一点的有红黑树、B树、B+树,还有之前你教我的字典树。
红黑树
一听到红黑树,小史头都大了,开始抱怨了起来。
小史:红黑树看过很多遍了,但是每次都记不住,它的规则实在是太多了,光定义就有四五条规则,还有插入删除的时候,需要调整树,复杂得很。
吕老师:小史,问你红黑树,并不是让你背诵它的定义,或者让你手写一个红黑树,而是想问问你它为什么这样设计,它的使用场景有哪些。
B树
吕老师:小史,你要知道,文件系统和数据库的索引都是存在硬盘上的,并且如果数据量大的话,不一定能一次性加载到内存中。
两个月前,小史面试没考虑内存情况差点挂了。
B+树
吕老师:这也是和业务场景相关的,你想想,数据库中Select数据,不一定只选一条,很多时候会选多条,比如按照ID排序后选10条。
小史:我明白了,如果是多条的话,B树需要做局部的中序遍历,可能要跨层访问。
而B+树由于所有数据都在叶子结点,不用跨层,同时由于有链表结构,只需要找到首尾,通过链表就能把所有数据取出来了。
回到现场
小史:这和业务场景有关。如果只选一个数据,那确实是Hash更快。但是数据库中经常会选择多条,这时候由于B+树索引有序,并且又有链表相连,它的查询效率比Hash就快很多了。
小史:而且数据库中的索引一般是在磁盘上,数据量大的情况可能无法一次装入内存,B+树的设计可以允许数据分批加载,同时树的高度较低,提高查找效率。
HR和小史简单地聊了聊基本情况,这次面试就结束了。小史走后,面试官在系统中写下了面试评语:
几天后,小史收到了A厂的Offer。
作者:channingbreeze
编辑:陶家龙、孙淑娟
出处:转载自
当今社会,随着移动互联网、芯片、5G等基础技术的高速发展,大大加快了人工智能、大数据、云计算、量子计算等信息技术的蓬勃发展,由此为世界打开了一扇通往信息大爆炸的“数据信息经济”之门,前往数据信息经济的时代,随之数据资产成为新的重要生产要素。与历经千百年的传统生产要素不同,数据从产生到影响人们生产生活的历史仅仅只有二十余年,尚待我们去不断开发与完善。
在不断实践过程中我们经常会因为数据的易复制性、非排他性、非竞争性、分散性、多样性、价值聚合性等特性给数据的确权、确真、流通性、隐私性、完整性带来极大的挑战。宏链科技依托区块链产品、边缘设备产品为客户提供企业级产品与数据服务,在实施过众多项目后总结出以下数据常见问题:
常见数据特征与问题
01-数据易复制性使得数据很难确权
数据易复制性使得数据复制的边际成本极低,数据信息的生产和整理成本较高,通常需要做大量的搜集、清洗、分类、标注等工作,但一旦整理完毕,入库形成可用的数据集、标准的数据文件后,生产复制额外副本的成本可忽略不计。故此数据易复制性使得数据极易被转移,导致很难确定数据的产生归属权,数据使用权。
02-数据非排他性和非竞争性使得数据很难确真、可信
数据具有非排他性和非竞争性,即一份数据可以同时供无数人使用,也不会因为用的人多而产生损耗。相反,有可能因为用户增多而让数据样本更加丰富、维度更多,从而提升数据的价值。这个特性让数据只要数据一公开,就成为“公共品”,人人可共享可编辑可转发,导致数据很难被确真、可信。
03-数据的分散性致使数据很难流通
数据具有分散性,数据持续不断地从各个途径产生,来源非常分散。例如一个普通人的饮食外卖数据会在美团、饿了么上,打车出行数据会在滴滴上,工资数据会在银行上,各个系统间天然存在数据壁垒,导致数据不流通。
03-数据的多样性促使数据体量大,价值聚合性促使事物的完整特性
数据具有多样性。数据种类杂、结构乱,既有个人数据,也有各种机器设备数据,既有结构化的表格数据,也有非结构化的图片、视频等。数据具有价值聚合性。单一少量数据只能反映一小部分样本的情况,统计意义不强,少数维度的数据往往反映了事物的一个侧面,这两种情况下,数据的应用价值受限。但当数据量和种类增加时,多维数据、海量数据的联合应用分析有助于揭示事物的完整特性,产生“1+12”的鲜明效果,显著提升应用价值。
区块链释放数据生成力
因数据特性带来的数据确权、确真、保护隐私、受控共享的矛盾归根究底是关于数据的“信任”问题,即如何让数据的全生命周期透明可信是释放数据生成力的关键路径。宏链科技提出通过“区块链技术+人工智能+数据算法”赋能数据释放生产力的思路。
01-通过区块链技术助力数据确权、确真、可信追踪数据流动
通过结合区块链防篡改、可信存证、可信追溯的特性,在存证和溯源的业务场景中,通过数据存证实现数据可信确权,并在后续数据流传过程中通过结合区块链数字证书与加密技术实现追踪数据的分享传播实现数据可信受控共享,更好地保护产权。
02-确保数据全生命周期过程安全、可信、可用、隐私
通过区块可信数据受控共享再结合人工智能、大数据等技术加强数据应用业务的监管能力保障不侵犯数据产权持有人应有的权益。通过区块链技术实现上链数据可信存证,不可篡改,共享数据确权、确真,结合区块链HASH摘要技术落实数据可用不可见解决隐私保护问题。同时在结合安全多方计算、联邦学习等为代表的一系列技术,提升多方机构对敏感数据的合规应用和隐私保护能力。从而有效增进数据在传输过程中的安全隐私性。
03-区块链多方参与共识机制打破信息孤岛,建立共识可信环境
通过区块多方共识机制、智能合约特性,有效实现碎片数据、孤岛数据之间的可信互联互通,并确保不同来源数据的可信、可验。区块链为连通碎片化、孤岛化的多方数据带来可信环境。各方节点将数据或其摘要上链存储,进一步结合密码算法在链上协同计算和完成交易。跨链技术还能将不同业务链上的数据相互连通,以便在更大范围内发挥数据的协同价值。联通之后,许多场合下数据属主或控制方不愿意披露具体内容,但又必须提供合适的手段证明自己数据的价值和可信度,满足对数据价值的高效安全评估。以零知识证明、同态加密、差分隐私等为代表的密码算法能让各方在数据机密不泄露的情况下计算和验证交易的正确性,实现了数据的可信检验。
在总结众多实施经验后不难想到“区块链技术+人工智能+数据算法”能高效释放数据生产力。