ARTS-打卡第一天
文章目录
Algorithm
LeetCode 第一题
题目描述
给一个int数组,返回数组中两个数字相加的和是目标 数的下标。可以假设每个输入只有一个解决方案,并且不能使用同一个元素两次。
Example
给出nums = [2, 7, 11, 15], 目标数为9,则返回[0, 1]
题目解答
|
|
相比两次循环的方式,这种处理的时间复杂度为O(n), 空间复杂度也为O(n).
Review
Google Cloud Production Guideline,本文主要是针对Google的Colud平台事故进行了线上发布的总结指导(检查列表)。详细如下:
设计与开发
- 有可再生的构建系统,构建系统不能被外部的服务访问并且不能被一个外部的系统中断
- 记录服务所信赖外部服务的可用性期望
- 通过不信赖单个全局资源来避免单点故障,当资源不可用时,资源复制或者设置适当的回退(例如硬编码值)。
配置管理
- 静态的,小的和非加密配置可以是命令行标识。使用配置传送服务来完成其它任务
- 在配置系统不可用时,动态系统需要有一个可合理回退
- 开发环境的配置不应该从生产环境继承。这样可能导致从开发环境访问生产服务,并可能导致隐私问题和数据泄漏。
- 记录可以动态配置的内容,并且说明当服务传送服务不可达时的回退行为
发布管理
- 记录关于发布过程的所有明细。记录发布如何影响SLOs(比如由于缓存丢失导致的临时更高延迟)
- 记录服务的金丝雀发布过程
- 有一个金丝雀的分析计划,如果可能的话,设置机制支持自动化恢复金丝雀的机制
- 确保回退使用相同的操作来持续使用
可观察性
- 确保从二进制文件中收集并导出SLOs所需的度量集合
- 确保客户端与服务端的可观察性数据是分开的。这个在生产环境调试时很重要
- 调整报警以减少工作量,例如删除日常事件触发的报警
- 总是传递入参的跟踪上下文,这样对于系统调试有很大的帮助
安全和保护
- 保证所有的外部请求都已加密
- 使用项目来完全隔离资源
- 在项目中使用网络来隔离VM实例组
- 使用云VPN来进行远程连接
- 记录与监听用户的数据访问,确保所有用户的数据访问是被记录与审查的
- 确保调试节点是被ACL限制的
- 处理用户的输入,为用户输入设置有效负载大小限制
- 确保服务可以有选择的阻塞每个用户的传入流量。这允许在不影响其它用户的情况下阻止滥用行为
- 避免外部节点引发大量的内部扩张
容量计划
- 记录服务的负载。例如用户数,入口流量,入口信息量
- 记录服务的资源请求,例如可用的VM实例数,硬件如GPUs和TPUs
- 记录资源的约束:资源类型,范围等等
- 记录创建新资源的配额限制
- 在可能的情况下进行性能回归的负载测试
Tip
在Emacs的Dired中进行快速的写操作(批量修改文件名等),操作步骤:
- M-x dired
- C-x C-q (开启dired buffer的只读模式)
- M-x query-replace (执行查找并替换)
- C-c C-c (保存修改)
搞定,批量重命名文件就是这么简单.
Share
今天分享一篇通俗易懂方式来讲解多线程的文章,在文章中作者说明了进程与线程的区别,单核CPU下的多任务方式(假多任务),多核CPU下的多任务方式(真正的并发),也讲述了在多线程情况下产生的问题,如数据竞争与竞态条件,以及编写多线程时保证程序正确的方法,如同步,原子操作,数据不可变等等。A gentle introduction to multithreading