CII 复习笔记 10

本文是作者在飞机上整理的系统设计复习笔记,涵盖了数据服务系统设计、社交网络连接算法、查找不存在数、重复值检测、网络爬虫避免无限循环、URL去重以及网络搜索引擎的缓存更新策略等主题。笔记讨论了多种设计方案及其优缺点,如使用HTTP、数据库、XML、Web服务等,并涉及内存限制下的解冑策略。

第十章


这笔记是我在上周飞旧金山的飞机上写的,写的比较多。

第十章是系统设计以及scalability,这个其实比算法要难,主要是没有什么经验

 

10.1 设计一个数据服务系统,你需要设计development,rollout,ongoingmonitoring, maintenance of feeding

 

首先,我不懂那几个名词到底啥意思

 

我理解的数据服务系统是这样的,本质上是一个远程只读数据库,用户通过TCP传输简单message,然后根据需要

传输数据,数据传输的检测和维护,可以直接交给TCP的机制完成。然后没了。(BTW,现在cluster间的传输模式主要是MPI,而MPI是使用TCP的协议的)

我突然发现其实network这个东西还是很重要的。http也是使用TCP协议。

 

当然我怀疑这样在面试中应该是死得惨惨的

 

书上是这么分析的:

1. 用户要好用

2. 系统要尽可能简单

3. 在现实生活中,要考虑future demand

4. scalability 以及 efficiency

 

方法一:直接plain txt download,问题是这样是由用户来做parsing

 

方法二:直接一个database,rollback之类的就解决了,问题是,我们不需要大部分的SQL的功能。而且我们需要额外

的层去检查数据。

 

方法三:XML,XML是share data的标准方法,大部分语言都可以兼容。但是XML必须给用户所有数据,query会是

一个问题

 

然后提到说,可以使用一个web service做一个外层,所以httprequest应该也是work的,应该用http。。。

 

所以,我的答案其实不算太糟糕

 

10.2 设计一个数据结构, 做social network,完成connectivity的算法

 

首先的想法就是维护每个人两个set,然后connectivity用BFS解决。

一个问题就是在这类老掉牙的问题里面,set好还是list就够了

如果做BFS,你需要遍历所有的element,所以基本上是没有区别,set的好处在于检测,比如说谁是不是你的好友这种

但是memory的使用总是要大一些。

 

书上给出了一个关于大量数据的时候咋办的解决方案

 

第一点是用ID作为identifier

然后每个人的大部分数据可能在不同的机器上,所以需要一个personID 到 machineID的map

然后就是需要一个叫做machine的class,可以从给定的machineID获得person的实际数据

 

然后书上没有讲的问题是,具体怎么实现从不同机器拿到ID的问题

我的理解是,每一个机器都要维护同样结构的full map,然后需要得到person的数据的时候,使用TCP传输。

 

确实需要知道一般cluster数据都是怎么传输的,这个我特么还真的不是很清楚。

 

 

减少machine jumps,可能需要在同一个机器里面做完这个机器里面有的search

 

另外关于BFS,根据书上的结论,似乎可以在每一层尽量使用朋友最多的那些人开始search,但是这个显然需要一些工作,

但是实际上很难解决时候先search最多的那个,因为如果你把朋友个数同时implement了,那么当你修改数据的时候,你

全网络都要改,很麻烦。除非允许不同步。

 

另外就是可以做一级或者多级缓存。

 

10.3 给你40亿正整数,找一个不存在数,你的内存是1GB,

 

40亿整数是16GB,但是40亿就是2^32,可以使用整个内存,也就是8Gb,然后做一个巨大的数组。。。。

 

如果只有10MB的时候该怎么做呢,给出的做法非常有意思,先把2^32分割成N份,然后先记录在连续的每一份里面。10MB是2^23,

所以range size就是2^31/2^23。

 

然后再做第二轮计数。

 

这题怎么觉得像是programming pearls里面的

 

 

10.4 4KB memory,找到所有的duplicatevalue,你有1到N的所有数字,N最大32000

 

4KB 是多少bit, 32000.。。。。

 

既然就是所有数字,一旦检测已存在就print。。

 

10.5 web crawler,如何避免infiniteloop

 

所有的agent 共享一个state map? 我的想法

 

然后书上说了问题主要在于如何定义the same的问题,URL中得parameter可能是一个问题。而内容分析可能也不够好

 

书上的做法是,生成一个signature,然后根据signature进行检测,如果最近检测过,那么就放到database的lowpriority区域

 

10.6 你有100亿个URL,如何找到duplicate one

 

方法一,这个很重要,就是你还是有机会把duplicate放在同一个disk里面的。就是用一个hash function,然后hash(u)/memorysize

然后可以调节这个size,使得你可以放进memory,之后就是建一个hash table。当然有一个问题就是hashtable所用的memory基本上

是不确定的。。。。。

 

方法二: 多机器一起操作。需要考虑failure的问题

 

10.7 建立一个简单的网络搜索引擎,100个机器用来respond to query, 然后另外的一个cluster用来做query,每次具体机器

并不确定,并且process search非常昂贵。问如何cacheresult,以及data 变了之后如何update

 

先说说我的想法,首先第一个问题是,使用什么样的结构来保存cache,必须是一个query本身作key的map。然后这个map必须是频

繁地在所有的processing cluster上共享。然后update的问题,假设map本身是fix size的,那么replace谁呢?只能是replace最久没有被

检查到的,但是这样的话,map似乎就不是一个好选择了。似乎应该使用一个deque,凡是被最近查询的都放在最前面,然后新查询的

调换最后一个,同时用一个hashmap去maintian这个deque的index 查询<query,index>。

 

基本上跟书上给出的第一种方法一致。书上用的是linkedlist加map,map直接map到Node上,但是应该是map到node的 pointer上

当然我不知道java是不是直接就是reference。

 

但是没有说关于update的问题,如果网页变了,你咋办?

 

似乎最好的办法就是一个auto time-out,这个可以是这样的,检查进map,如果time out了,就删除并且重新检测。另外time-out的时间

可以根据内容来搞。


最后一题,结果是面试的那家公司给我的题,似乎也是他们目前的问题所在。不过我给了一个更加复杂的方法来做,我觉得那个方法我当时能想到还是很屌的。


内容概要:本文介绍了ENVI Deep Learning V1.0的操作教程,重点讲解了如何利用ENVI软件进行深度学习模型的训练与应用,以实现遥感图像中特定目标(如集装箱)的自动提取。教程涵盖了从数据准备、标签图像创建、模型初始化与训练,到执行分类及结果优化的完整流程,并介绍了精度评价与通过ENVI Modeler实现一键化建模的方法。系统基于TensorFlow框架,采用ENVINet5(U-Net变体)架构,支持通过点、线、面ROI或分类图生成标签数据,适用于多/高光谱影像的单一类别特征提取。; 适合人群:具备遥感图像处理基础,熟悉ENVI软件操作,从事地理信息、测绘、环境监测等相关领域的技术人员或研究人员,尤其是希望将深度学习技术应用于遥感目标识别的初学者与实践者。; 使用场景及目标:①在遥感影像中自动识别和提取特定地物目标(如车辆、建筑、道路、集装箱等);②掌握ENVI环境下深度学习模型的训练流程与关键参数设置(如Patch Size、Epochs、Class Weight等);③通过模型调优与结果反馈提升分类精度,实现高效自动化信息提取。; 阅读建议:建议结合实际遥感项目边学边练,重点关注标签数据制作、模型参数配置与结果后处理环节,充分利用ENVI Modeler进行自动化建模与参数优化,同时注意软硬件环境(特别是NVIDIA GPU)的配置要求以保障训练效率。
内容概要:本文系统阐述了企业新闻发稿在生成式引擎优化(GEO)时代下的全渠道策略与效果评估体系,涵盖当前企业传播面临的预算、资源、内容与效果评估四大挑战,并深入分析2025年新闻发稿行业五大趋势,包括AI驱动的智能化转型、精准化传播、首发内容价值提升、内容资产化及数据可视化。文章重点解析央媒、地方官媒、综合门户和自媒体四类媒体资源的特性、传播优势与发稿策略,提出基于内容适配性、时间节奏、话题设计的策略制定方法,并构建涵盖品牌价值、销售转化与GEO优化的多维评估框架。此外,结合“传声港”工具实操指南,提供AI智能投放、效果监测、自媒体管理与舆情应对的全流程解决方案,并针对科技、消费、B2B、区域品牌四大行业推出定制化发稿方案。; 适合人群:企业市场/公关负责人、品牌传播管理者、数字营销从业者及中小企业决策者,具备一定媒体传播经验并希望提升发稿效率与ROI的专业人士。; 使用场景及目标:①制定科学的新闻发稿策略,实现从“流量思维”向“价值思维”转型;②构建央媒定调、门户扩散、自媒体互动的立体化传播矩阵;③利用AI工具实现精准投放与GEO优化,提升品牌在AI搜索中的权威性与可见性;④通过数据驱动评估体系量化品牌影响力与销售转化效果。; 阅读建议:建议结合文中提供的实操清单、案例分析与工具指南进行系统学习,重点关注媒体适配性策略与GEO评估指标,在实际发稿中分阶段试点“AI+全渠道”组合策略,并定期复盘优化,以实现品牌传播的长期复利效应。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值