自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

phantom_111的博客

随着时间的流逝痛苦会变得淡薄,然而我并不想让时间来治愈我的痛苦,就算从痛苦中逃脱,忘记一切,得到的也只是停滞,无法前进。

  • 博客(149)
  • 收藏
  • 关注

原创 图灵《模仿游戏》论文学习

人们普遍认为,科学家进行科学研究工作总是从可靠的事实到可靠的事实,从来不受任何未经证明的猜想所影响,这种看法是错误的,只要能清楚地划分哪些是经过证明的事实,哪些是猜想的,就不会有害处。趁着年轻,一定要逼着自己养成每天阅读的习惯,阅读的习惯一旦养成,便会历久弥新,量变引起质变,有一天,你会发现自己变得不再是原来的那个你了。惩罚和奖励的使用最好只是教学过程的一部分,大致说来,如果教师没有与学生沟通的其他方式,那么所传达的信息量不会超过所用的奖励和惩罚的总和。你想要成为怎样的人,过怎样的生活,只要你不后悔就行。

2024-04-12 21:54:58 803

原创 CNCF 已毕业项目简介之 - argo

是否可以成为 CNCF 项目需要通过技术监督委员会 (TOC),投票采取 fallback 策略,即回退策略,先从最高级别开始,如果 2/3 多数投票都通过的话则确认该级别,如果没有通过的话,则进行下一个级别的投票,如果一直到 sandbox 级别都没有得到 2/3 多数投票通过的话,则拒绝进行 CNCF 项目。与强大的自动化相结合、工程师能够以最少的工作量频繁且可预测地进行高影响力的更改。注:以上的解决方案,在我遇到的 case 里是生效的,也有人反馈遇到类似的问题,同样的操作,但是没有解决。

2024-03-12 20:46:25 1046

原创 弱网演练的小插曲记录

Netem 是由命令行工具 tc 控制,tc 主要用于 Linux 内核的流量控制,主要是通过在输出端口处建立一个队列来实现流量控制,接收包从输入接口进来后,经过流量限制丢弃不符合规定的数据包,由输入多路分配器进行判断选择。Netem 是 Linux 2.6 以上内核版本开始提供的一个网络模拟功能模块,它主要用来在性能良好的网络环境中,模拟出复杂的网络问题,比如高延迟、高丢包等问题。blade 的网络问题模拟底层使用了 tc,但是 blade 本身是支持更多故障场景的模拟的,此处仅介绍网络问题的模拟。

2024-02-20 12:44:36 971

原创 Ddosify 作为压测工具的使用指南

由于不同供应商的机房机器的水平参差不齐,而我司负责的服务就需要在不稳定的机器上为我们的客户提供一个高质量的服务水平。不出意外,能够保障这种水平的方式只有一个,那就是压测,即 1:1 客户的用量来模拟一次客户的请求,保障压测期间质量是可靠的。(ps:写到这里明白了,为什么打仗之前都要演练一遍了那就让我们通过压测这个引子,引入今天的主角「Ddosify」,请注意这个工具是可以用来作为压测,但是人家不是只能用来压测,它的定位是「做 Kubernetes 的监控和性能测试」Automatic Serivice Ma

2024-01-22 21:11:20 1060

原创 开发「定位线上问题」小工具总结

结论:仔细分析了计费的逻辑,发现根因是之前设计的上传触发逻辑有两种,一个当前时间大于文件最后更新时间的 10m ,一个是文件的大小需要大于 1M。而这个产生这个问题的客户使用的方式比较独特,他使计费文件的断断续续的有更新,且总大小仍然小于 1M。2023 年忙着救火,再加上工作年限日益增加,开始变得有些倦怠了,希望 2024 能找回自己,积极学习感兴趣的技术,保持空杯的心态。定位问题 — 机器的 ip 中上传日志的服务可以分析,出文件的生成时间和文件的上传时间。字段是文件产生的时间,UTC 时间的时间戳。

2024-01-18 21:05:49 823

原创 从入门到放弃之「ClickHouse」

注:「当老板交代你完成一件事情的时候,你第一反应不应该是拒绝,而应该是我先出一份整体的完成思路,请老板帮忙评估一下是否符合交付目标」(ps:论把一件事件完成的符合老板的 N 种想法。ClickHouse 是一个开源的分布式数据库管理系统,用于在线分析处理 (OLAP),它是由俄罗斯搜索引擎公司 Yandex 开发的,并于 2016 年开源发布。ClickHouse 「高端」的语法其实还有很多,但无奈这波流感的威力实在是太强了,感觉中招之后,就很难受,不写了,我要继续吃颗退烧药了。

2023-12-20 20:58:58 1660

原创 golang 库之「依赖注入」

知识这个东西,摆在那里就是人家的,学到了才是自己的。uber 的 fx:一个基于 wire 构建的更高级的依赖注入框架,它提供了更多的特性和功能,如生命周期的管理、插件系统、服务注册等。「过度设计」指的是一种过于复杂的方式设计产品或提供问题的解决方案的行为,而在这种情况下,可以证明存在一种更简单的解决方案,其效率和效果与原设计相同。(ps:你认为的未来的问题,可能根本没有出现的机会,所以减少焦虑,不要过度,因为未来的事情担心和设计。健康的活着,平静的过着,开心的笑着,适当的忙着,就很好。

2023-11-10 20:18:28 668

原创 C++ 智能指针常用总结

当所有的 shared_ptr 释放之后,资源会被争取的释放。:c++ 的 zero cost abstraction 的特点,unique_ptr 在默认的情况下和裸指针的大小是一样的。我永远喜欢我自己,我有勇气敞开心扉去接受一起新的变化和想法,但我永远不会因为别人的反映而惶恐不安,不因外界的评价而自我怀疑,我允许自己被否定,但我无需认同,也不会在意。在初始化 unique_ptr 智能指针时,还可以自定义所指堆内存的释放规则,可以在定义的释放规则中加入自定义的释放规则,以释放默写资源。

2023-10-20 21:24:38 227

原创 # 如何使用 GitHub Copilot 发送 Tweet(译)

Copilot 是一款 AI 结对程序员,可帮助你以更少的工作更快地编写代码。如果你从未使用过它并且你正在努力想象它的行为,我会将其比作 Gmail 和 Google Docs 中的智能撰写功能。与智能撰写类似,GitHub Copilot 会预测你的下一行代码以提高你的工作效率。从 Copilot 获得最佳结果的关键是:写清晰和具体的注释一旦 Copilot 能够识别代码中的连续模式,就可以利用它检查 Copilot 提供的替代建议。

2023-09-07 20:59:39 804 1

原创 使用 GitHub Copilot 进行 Prompt Engineering 的初学者指南(译)

GitHub Copilot 是一个 AI 结对开发工程师被 GitHub 开发并且 GitHub Copilot 由 OpenAI Codex 提供支持,OpenAI CodeX 是 OpenAI 创建生成式预训练语言模型。它根据注释和代码的上下文提供上下文话的代码建议。要使用它,可以在以下 IDEs 安装 Github Copilot 插件:NeovimPrompt engineering 是给 AI 模型提供特定指令去产生想要结果的一种实践。提示是可以触发 AI 模型响应的一系列文本或一行代码。

2023-08-02 20:43:34 2150 1

原创 基于 ChatGPT 的 helm 入门

发布平台的使用使业务侧在不了解 helm 、chart 等工具的时候,「只要点点」就可以完成一个业务的发布。注:对于一个处于磨合期的平台,业务侧如果能更多的了解一些底层发布实现的细节,可谓是「事半功倍」。

2023-07-19 21:25:02 1033

原创 swagger 入门指南

--info:paths:/hello:get:produces:in: queryresponses:200:schema:新建目录 GreetServer将上述的内容拷贝为 swagger.yaml 文件,并放在 GreetServer 目录下运行如下命令即可得到如下目录结构的文件如下图所示,就得到一个可以快速运行的 demo注:上述 demo 的运行效果返回的是该方法还没有实现快速在上述 demo 中增加逻辑的方式,过滤 「safe」关键字,在代码中简单返回 body。

2023-06-19 22:46:04 404 1

原创 《Amazon DynamoDB》 论文笔记 1

DynamoDB 持续监控服务和表级别的可用性。一般对数据中心的应用而言,Scale out 指的是当添加更多的机器时,应用仍然可以很好的利用这些机器的资源来提升自己的效率从而达到很好的扩展性。会有沮丧失意的时候,但经常会跟自己讲,如果在这一件事情上运气不好,那一定会在别的什么事情上还回来,所以没什么好难过的,人要学会往前走,走下去,就总能看到更多更好的风景了。从业务角度:为物理上混部的用户,提供逻辑上的隔离,即部署在同一个机器上的业务不会互相影响,docker 部署是一个很好的解决方案。

2023-05-19 21:10:37 722 2

原创 《计算机构造与解释》读书笔记(6)

求值和元循环求值器的环境模型将按顺序执行给它的定义,一次在环境框架里扩充一个定义。对于交互式的程序开发,这样做事特别方便的,因为程序员需要自由地混合过程应用和新过程的定义。注:但是用于实现块结构的内部定义,就会发现,这种一次一个名字的环境扩充方式可能不是定义局部变量的最好方式。n)true(odd?(- n 1))))在这里的意图是,在过程 even?的体里的名字 odd?应该引用过程 odd?,而它是在 even?

2023-04-24 12:57:03 296

原创 音视频基础知识

PPS(图像参数集):对应的是一个序列中的某一副图像或者是几幅图像,其参数标识符 pic_parameter_set_id、可选的 seq_parameter_set_id、熵编码模式选择标识、片组数组、初始量化参数和去方块滤波系数调用标识符等。即包含一个图像的所有分片的全部的相关信息,包括图像类型、序号等,解码时某些序列号是否丢失可用来校验信息包的丢失与否。感知冗余信息:人眼的一些特性比如亮度辨别阈值,视觉阈值,对亮度和色度的敏感度不同,使得在编码的时候引入适量的误差,也不会被察觉出来。

2023-03-14 18:42:12 277

原创 《计算机构造与解释》读书笔记(5)

描述流的另一种方式是利用延时求值隐式地定义流。这种方式定义就像是在定义一个递归过程:这里的 ones 是一个序对,它的 car 是 1,而 cdr 是求值 ones 的一个允诺。对于其 cdr 的求值又是一个 1 和 求值 ones 的一个允诺,并这样继续下去。

2023-02-06 18:42:26 420

原创 《计算机构造与解释》读书笔记(4)

在实际实现使用中,给定一个过程 P,串行化组将返回一个过程,该过程获取相应互斥元,之后运行 P,最后释放互斥元,此种操作即可保证串行化性质。例如,设想一个分布式的银行系统,其中的各个分支银行维护着银行余额的局部值,并且周期性地将这些值与其他分支所维护的值相互比较。这里的每个进程都反复将自己的值更新为自己的原值和相邻进程的值的平均值。下图的时序图勾画了一个事件顺序,其中的 balance 在开始时是 100,Peter 取走了 10,Paul 取走了 25,然后 balance 最后的值却是 75。

2023-01-18 18:14:16 1081

原创 《计算机程序构造与解释》读书笔记(3)

局部过程的名字不会与包容它们的过程之外的名字互相干扰,这是因为这些局部过程名都是在该过程运行时创建的框架里面的约束的,而不是在全局环境里约束的。局部过程只需将包含着它们的过程的形参作为自由变量,就可以访问该过程的实际参数。这是因为对于局部过程体的求值所在的环境是外围过程求值所在的环境的下属。

2022-12-20 12:31:54 608

原创 记一次神奇的 pipe 错误

每个进程有三个和能力有关的位图:inheritable(I)、permitted§ 和 effective(E),对应进程描述符 task_struct(include/linux/sched.h) 里的 cap_effective、cap_inheritable、cap_permitted ,所以可以查看 /proc/{PID}/status 来查看进程的能力。本着「知其然,还有知其所以然」的精神,先从修改配置「CAP_SYS_RESOURCE」的历史说起吧。

2022-11-21 21:40:04 460

原创 宝藏命令行工具整理

l : 将处于监听模式。指定该参数,则意味着 nc 被当作 server,可以向其地址发起连接。-p :指定监听的端口号,新版本可以不用指定-v :输出交互或者出错信息,可以用于调试更复杂的功能介绍:笔者此处只用了,nc 比较皮毛的功能。实际上这个宝藏工具厉害着呢,但是本着自己学到才是自己的原则,此处仅仅列举出来,感兴趣的小伙伴,可以看参考链接继续学习。以 UDP server 的方式监听连接将 nc 作为聊天工具将 nc 作为代理-w 设置连接超时-k 强制 nc 待命。

2022-10-16 10:54:31 525

原创 记一次 Golang 的奇怪错误

看报错的内容中包括「# runtime/cgo」,盲猜是在开发的程序引用了 cgo,毕竟有今天必现提测的大山压着,不管三七二十禁用 cgo 试试。出现这个问题的根本原因,可能是编译器升级后对 C++ 的语法校验更加严格,之前是 warning 的错误,在严格后作为 error 报出。本着排查的思路,写了一个最简单的 「hello world」的程序,发现并不会报错。遇到这个错误,笔者表示十分懵逼,但是作为一个专业的软件开发工程师,遇到问题不可怕,可怕的是没有排查的方向。答案:不可以的,但是发现。

2022-09-13 19:28:09 876

原创 DFA 算法选型思路

上述两个库都是 DFA 算法的一种实现,实现的时候使用 Trie Tree 这种数据结构。虽然笔者在需求评审会议上极力说明,这个需求的复杂程度比较高,自己实现有种种风险,但是无奈人家人多,被产品和负责人怼回来了。注:./filter-en.txt 为与 mian.go 同级的一个文件,包含「fuck」 字符。,但这个更倾向于一个根据一系列规则对敏感数据的识别和处置方案,不大适用本场景。注:做人啊,不能要求太高,连情绪啥的都开源了,人家做这个的公司不得黄了。接着这个思路,笔者从一众开源算法中,挑选到了。..

2022-08-10 19:50:41 253

原创 Dynamo 论文解读

数据通过一致性哈希分散和复制通过对象版本化实现一致性副本之间的一致性有一种类似仲裁的技术和一个去中心化的副本同步协议保证gossip-based分布式故障检测和成员检测协议。

2022-07-23 12:13:52 936

原创 Jmeter 入门使用

最近接了个新项目,整个人都处于非常忙碌的状态。但是学习、复盘才会使人进步,所以还是要抽出时间来学习新的、有趣的知识。对接的测试小姐姐,使用 jmeter 帮忙压测了下供应商的服务在被限流之后的行为是什么?虽然自己写脚本也能完成并发的压测,但是最后总结的压测结果数据不如 jmeter 的广泛和全面,所以趁着时间允许,来研究一波 jmeter 的使用吧。Jmeter 下载地址 https://dlcdn.apache.org//jmeter/binaries/,笔者当时下载的是 5.4.1 的版本,总体的执行命

2022-06-27 21:26:47 370

原创 influxdb 从了解开始

文章目录1. 碎碎念2. 从使用开始2.1 如何安装2.1.1 InfluxDB Server 安装及使用2.1.2 InfluxDB Cli 安装及使用3. 关键概念4. 写入 vs 读取4.1 数据的格式 (protocol)4.1 写入数据4.3 读取数据5. 碎碎念6. 参考资料1. 碎碎念事情是这样的,笔者这周在配置 grafana 的 influxdb 的面板,然后被同事狂问底层是怎么聚合的?然后我的心里就是各种吐槽「就是 复制+粘贴 配置一下,问我底层原理鬼👻才知道,有种非常抓狂的感.

2022-05-14 22:40:42 739

原创 golang 宝藏库推荐—gojsonschema

文章目录1. 写在最前面2. Json schema 介绍2.1 Json schema 是什么2.2 使用 Json schema 的优势2.3 Json schema 关键字说明2.4 Json schema 常用的在线工具3. 例子3.1 使用上述关键字的 json shema3.2 定义一个符合 schema 的 json4. 使用 gojsonschema 的完成上述校验4.1 目录结构定义4.2 校验代码4.3 试试错误的 json5. 碎碎念6. 参考资料1. 写在最前面笔者之前写过一.

2022-04-15 20:42:48 2779

原创 基础设施之 K8s 核心组件调研

文章目录1. 背景1.1 K8s 系统架构图1.2 K8s 节点及组件交互流程介绍2. API Server 分析2.1 功能说明2.1.1 集群访问2.1.2 模块之间的通信3. Controller Manager3.1 Replication Controller3.2 Node Controller3.3 ResourceQuota Controller3.4 Namespace Controller3.5 ServiceAccout Controller 与 Token Controller3..

2022-03-22 19:02:19 844

原创 golang 使用总结(1)

文章目录1. 写在最前面2. 锁拷贝问题2.1 问题2.2 原因3. 安全的 marshal/ unmarshal 含有锁的结构3.1 问题3.2 解决4. 将 Proto 序列化的结构放入到 json 的字段中4.1 问题4.2 解决5. 碎碎念6. 参考资料1. 写在最前面笔者最近在赶一个项目,在开发的过程中遇到了几处比较有趣的地方。做个笔记记录,同时方便其人查阅、快速解决类似的问题。锁拷贝问题(Mutex Copy )安全的 marshal/ unmarshal 含有锁的结构(Safe m.

2022-03-13 17:40:29 2983

原创 Linux perf 事件调度算法

文章目录1. 背景2. Introduction3. Event Groups4. The NMI Watchdog5. The Scheduling Algorithm6. Event Constraints Calculation7. Examples8. 碎碎念9. 参考资料1. 背景任何人了解现代 Intel 处理器上的硬件性能监控的第一件事就是每个逻辑核心有三个固定功能计数器和四个通用计数器。只要有足够的计数器用于需要同时测量的所有事件,为每个事件分配一个计数器是可行的。但是,如果事件多于计.

2022-03-07 21:12:34 996

原创 golang 宝藏库推荐

文章目录1. 写在最前面2. mapstructure2.1 用途2.2 例子2.3 坑说明3. validator3.1 用途3.2 例子3.3 坑说明4. 碎碎念5. 参考资料1. 写在最前面笔者在去年 coding 的时候,有用到两个比较好用的库,在此记录下,以便后面再次使用,同时也方便那些有这方面需求的参考。golang map to structure 的库 — https://github.com/mitchellh/mapstructuregolang json 校验库 — h

2022-02-14 18:21:57 738

原创 Cannot execute binary file 之原因

文章目录1. 写在最前面2. 排查方向2.1 非 root 用户2.2 编译目标与执行环境不同2.3 程序需要的动态库或静态库缺失2.3.1 解决办法4. 等等4.1 真·解决办法4.1.1 使用 CGO_ENABLED=04.1.2 更换依赖的基础镜像5. 碎碎念6. 参考资料1. 写在最前面问题:笔者用 kaniko 构建了一个 docker 镜像,基础镜像是基于 Alpine。构建好后,运行编译后的 go 二进制程序。一直提示下面的错误:# ./example.exesh: ./exampl.

2022-01-17 20:23:33 18183 3

原创 Go 语言编程规范建议(下)

文章目录1. 指导性原则1.1 指向 interface 的指针1.2 interface 合理性验证1.3 接收器(receiver)与接口1.4 零值 Mutex 是有效的1.5 在边界处拷贝 Slices 和 MapsSlices 和 Maps 做为入参1.6 使用 defer 释放资源1.7 Channel 的 size 要么是 1,要么是无缓冲的1.8 枚举从 1 开始1.9 使用 time 处理时间1.9.1 使用 time.Time 表达瞬时时间1.9.2 使用 time.Duration.

2022-01-12 19:10:24 409

原创 Go 语言编程规范建议(上)

文章目录1. 代码总体原则1.1 清晰第一1.2 简洁为美1.3 风格一致2. 规范2.1 命名规范2.1.1 驼峰命名2.1.2 常量2.1.3 变量2.1.4 URL2.1.5 Error2.1.6 接口名2.1.7 文件名2.1.8 包名2.1.9 函数名/方法名2.1.10 导入别名2.1.11 变量声明2.1.12 其他2.2 结构规范2.2.1 避免过长的行2.2.2 一致性2.2.3 相似的声明放在一组2.2.4 import 分组2.2.5 函数分组与顺序2.2.6 减少嵌套2.2.7 不必

2022-01-05 21:14:28 517

原创 Jenkinsfile 使用说明(2)

文章目录1. 编写业务相关的 Jenkinsfile2. 入参及环境变量的配置2.1 配置说明2.2 配置后的界面展示3. 定义一个 kubernetes 的 agent3.1 基于 docker in docker 构建3.2 基于 kaniko 构建镜像4. 拉取代码 & 执行编译4.1 拉取代码4.2 执行编译5. 构建 & 推送 docker 镜像6. 总结7. 碎碎念8. 参考资料经过前一篇文章的介绍以后,大家对于声明式的 jenkinsfile 有了一定程度的了解。现在可以开始

2021-12-28 18:17:36 2636

原创 Jenkinsfile 使用说明(1)

文章目录1. Jenkins 是什么2. 流水线2.1 流水线是什么2.2 流水线的分类2.2 为什么使用流水线3. 声明式流水线——jenkinsfile 的语法3.1 声明式流水线基础语法3.2 典型的声明式流水线例子3.3 流水线基础语法详解3.3.1 agent (require)3.3.2 stages (require)3.3.3 stage (require && alest one)3.3.4 steps (require)3.3.5 environment3.3.6 pa.

2021-12-24 18:30:23 2644

原创 设计数据密集型应用—— 数据系统的未来(12 下)

文章目录1. 写在最前面2. 将事情做正确2.1 数据库的端到端原则2.1.1 正好执行一次操作2.1.2 抑制重复2.1.3 操作标识符2.1.4 端到端的原则2.1.5 在数据系统中应用端到端的思考2.2 强制约束2.2.1 唯一性约束需要达成共识2.2.2 基于日志消息传递中的唯一性2.2.3 多分区请求处理2.3 及时性与完整性2.3.1 及时性2.3.2 完整性2.3.3 数据流系统的正确性2.3.4 宽松地解释约束2.3.5 无协调数据系统2.4 信任但验证2.4.1 维护完整性,尽管软件有 B

2021-12-10 18:34:39 1250 1

原创 设计数据密集型应用——数据系统的未来(12 上)

文章目录1. 组合使用衍生数据的工具1.1 理解数据流1.2 衍生数据与分布式事务1.3 全序的限制1.4 排序事件以捕获因果关系2. 批处理与流处理2.1 维护衍生状态2.2 应用演化后重新处理数据2.2.1 参考—铁路上的模式迁移2.3 Lambda 架构2.4 统一批处理和流处理3. 分拆数据库3.1 组合使用数据存储技术3.1.1 创建索引3.1.2 一切的元数据库3.1.3 联合数据库:统一读取3.1.4 分拆数据库:统一写入3.1.5 开展分拆工作3.1.6 分拆系统 vs 集成系统3.17 少

2021-12-03 19:06:49 728

原创 golang 之 Map 思考

文章目录1. 写在最前面2. 值 vs 指针修改生效问题3. 值 vs 指针修改寻址问题4. Why 什么值类型无法寻址5. 碎碎念6. 参考资料1. 写在最前面最近 review 代码的时候,遇到了很多 map[string]pointer 的写法,之前这种写法的时候,笔者总是以 C/C++ 的角度思考,这样写其实是为了节省内存,但其实不然,除了节省内存,还有其他的意义。2. 值 vs 指针修改生效问题先看一个例子,定义一个结构体,其存在两种方法:值类的方法指针类的方法package

2021-11-17 18:47:21 513

原创 设计数据密集型应用——流处理(11)

文章目录1. 传递事件流1.1 消息传递系统1.1.1 直接从生产者传递给消费者1.1.2 消息代理1.1.3 消息代理与数据库对比1.1.4 多个消费者1.1.5 确认与重现传递1.2 分区日志1.2.1 使用日志进行消息存储1.2.2 日志与传统的消息传递相比1.2.3 消费者偏移量1.2.4 磁盘空间使用1.2.5 当消费者跟不上生产者时1.2.6 重播旧消息2. 数据库与流2.1 保持系统同步2.2 变更数据捕获2.2.1 变更数据捕获的实现2.2.2 初始快照2.2.3 日志压缩2.2.4 更新流

2021-11-05 19:04:06 461 1

原创 设计数据密集型应用——批处理(10)

文章目录1. 写在最前面2. 使用 Unix 工具的批处理2.1 简单的日志分析2.1.1 命令链与自定义程序2.1.2 排序 VS 内存中的聚合2.2 Unix 哲学2.2.1 统一的接口2.2.2 逻辑与布线相分离2.2.3 透明度和实验3. MapReduce 和分布式文件系统3.1 MapReduce 作业执行3.1.1 分布式执行 MapReduce3.1.2 MapReduce 工作流3.2 Reduce 侧连接与分组3.2.1 示例:用户活动事件分析3.2.2 排序合并连接3.2.3 把相关数

2021-10-14 19:32:17 312

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除