LeetCode – Clone Graph
Given a reference of a node in a connected Connected_graph undirected graph, return a deep copy
Given a reference of a node in a connected Connected_graph undirected graph, return a deep copy
这篇文章 Timers and time management in the Linux kernel. Part 1. 是出自 linux-insides
sysctl命令可以_实时_(runtime)查看和修改linux 内核参数。这个命令可以在大多数发行版本找到, 另外内核参数,也可以通过procfs 文件系统,在 /proc/sys/kernel下 进行查看和修改。
asm-offset.h 文件 asm-offset.h 文件是在内核编译过程中生成的,生成过程 之前整理了一份笔记 TASK_threadsp的实现及asm-offsets.h, 其中涉及sed处理包含在内核代码 /scripts/Makefile.lib的sed-offsets中,工作是将生成的asm-offset.s转化为asm-offset.h。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 /scripts/Makefile.lib ... # ASM offsets # --------------------------------------------------------------------------- # Default sed regexp - multiline due to syntax constraints # # Use [:space:] because LLVM's integrated assembler inserts <tab> around # the .ascii directive whereas GCC keeps the <space> as-is. define sed-offsets 's:^[[:space:]]*\.ascii[[:space:]]*"\(.*\)".*:\1:; \ /^->/{s:->#\(.*\):/* \1 */:; \ s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \ s:->::; p;}' endef ...
题目: Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, *, /. Each operand may be an integer or another expression. Note: Division between two integers should truncate toward zero. The given RPN expression is always valid. That means the expression would always evaluate to a result and there won’t be any divide by zero operation. Example 1: Input: 1 ["2", "1", "+", "3", "*"] Output: ...
Linux 内核的Timer必须要完成两种定时测量(timing measurement)
问题: 本周在配合系统测试过程中,发现系统报文接收异常, 排查过程中发现应用进程启动异常。 当时状态模拟如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 [root@centosgpt server]# ps -ef|grep daemon dbus 934 1 0 Jul22 ? 00:01:15 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation root 941 1 0 Jul22 ? 00:00:15 /usr/sbin/NetworkManager --no-daemon root 81345 1 0 09:27 ? 00:00:00 daemon root 81348 1 0 09:27 ? 00:00:00 daemon root 81351 1 0 09:27 ? 00:00:00 daemon root 81354 1 0 09:27 ? 00:00:00 daemon root 81357 1 0 09:28 ? 00:00:00 daemon root 81360 1 0 09:28 ? 00:00:00 daemon status root 81364 1 0 09:28 ? 00:00:00 daemon start root 81367 1 0 09:28 ? 00:00:00 daemon status root 81370 1 0 09:28 ? 00:00:00 daemon root 81372 80347 0 09:28 pts/2 00:00:00 grep --color=auto daemon daemon status, daemon start 都属于异常进程。 ...
这篇文章 Measuring Transactional Integrity in Airbnb’s Distributed Payment Ecosystem
Daily Temperatures
这篇文章Re-Architecting the Video Gatekeeper 是出自 Netflix Technology Blog。 Netflix上的视频需要通过Title Operations 团队的策划,使其遵守的合同;字幕、配音、翻译能够提供给合适的人群;标题名称和概要可供使用和翻译;满足各个国家的成熟度等级(分级)。 Gatekeeper是Netflix的系统, 他通过汇集多个上游系统数据, 应用一些业务逻辑,为每一个国家地区每一个视频状态的输出来完成器规定任务。GateKeeper 设置这些视频是否对用户可见。为Title Operations 指出缺少的内容, 协助其工作。 现存问题: GateKeeper是一个事件驱动的系统,上游系统每个改变都会向GateKeeper发送事件,GateKeep再通过访问每个上游服务来响应事件。可能会出现下问题: I/O 瓶颈 处理延时 事件丢失 而主动扫描处理一些指定目录可以缓解这些问题, 但是增加了更多的事件。 解决方案: 使用技术:Hollow 可以看下这篇文章使用技术 Hollow ( Drew Koszewnik),( 2016年,是这篇的作者) Netflix Hollow是一个java库和工具集,用于将内存数据集从单个生产者传播到许多消费者,以实现高性能的只读访问。 适合小到中级数据集 Hollow 第一阶段: 使用Hollow为每个上游系统在GateKeeper增加缓存, 在指定周期内循环迭代处理所有国家地区的视频,并生成完整输出。 第二阶段: 由于第一个阶段时间片相对较长, 整个数据来自实际数据源,一个迭代周期需要很长时间。需要进一步优化。 将Hollow分为更小时间片单位, 应用程序将每次的更改通过kafka推送 Hollow,辅助周期性的整个数据源扫描来防止数据遗漏。 效果: 性能及可用性提高:消除了I/O瓶颈,提高了性能,单个上游系统故障下可以通过过时数据进行评估。 对于新投产版本,将某一个时间X的数据做为输入, 将其输出结果其与生产版本应用的输出结果进行对比(diffed )来准确判断是否达到预期效果。对于开发,验证,部署都比之前有了很大提高, 安全性方面也比以前架构更高。 在文末也写道将在未来几个季度实现这一目标。 对于文中描述的实时推送,全量补齐方式,实施的项目中也使用过,不过是联机+批量模式:报文从一个系统A实时推送到系统B, 夜间再通过下发批量进行全量更新补全推送时丢失的信息。 对于数据重放到预发布版本,与生产版本比较执行执行结果, 来验证新版本是否达到预期效果,和我现在项目中验证方式不一样, 目前投产后通过实际交易进行验证, 如果能方便将相关数据重放到新版本进行验证,确实将减少不少验证的工作, 不过也需要相应的应用做出相关的改造才可以。