使用开源工具进行 Linux 内存取证 (linux.cn)
计算机的操作系统和应用使用主内存(RAM)来执行不同的任务。这种易失性内存包含大量关于运行应用、网络连接、内核模块、打开的文件以及几乎所有其他的内容信息,但这些信息每次计算机重启的时候都会被清除。

内存取证Memory forensics是一种从内存中找到和抽取这些有价值的信息的方式。Volatility是一种使用插件来处理这类信息的开源工具。但是,存在一个问题:在你处理这些信息前,必须将物理内存转储到一个文件中,而 Volatility 没有这种能力。

因此,这篇文章分为两部分:
第一部分是处理获取物理内存并将其转储到一个文件中。
第二部分使用 Volatility 从这个内存转储中读取并处理这些信息。
by @技术头条 2021-05-26 22:34 分享 查看详情
Git 中上下文切换的 4 种方式 (linux.cn)
比较 Git 中四种切换分支的方法的优缺点。


所有大量使用 Git 的人都会用到某种形式的上下文切换。有时这只会给你的工作流程增加少量的开销,但有时,这可能是一段痛苦的经历。
让我们用以下这个例子来讨论一些常见的上下文切换策略的优缺点:

假设你在一个名为feature-X的分支中工作。你刚刚发现你需要解决一个无关的问题。这不能在feature-X分支中完成。你需要在一个新的分支feature-Y中完成这项工作。

方案 1:暂存 + 分支
解决此问题最常见的工作流程可能如下所示:

停止分支feature-X上的工作
git stash
git checkout -b feature-Y origin/main
一顿鼓捣,解决feature-Y的问题
git checkout feature-X或git switch -
git stash pop
继续在feature-X中工作
by @技术头条 2021-05-26 22:33 分享 查看详情
Python 之父对 Rust、Go、Julia 和 TypeScript 的看法 (linux.cn)
Python 之父对 Rust、Go、Julia 和 TypeScript 的看法

Python 之父 Guido 在最近一次新采访中分享了他对其它编程语言的看法,其中有些很有趣:

Rust 在一个特定的领域真正改进了 C++,它使绕过编译器的检查变得更加困难。当然,它以一种近乎完美的方式解决了内存分配问题。

在所有的新语言中,Go 可能是最像 Python 的 —— 或者至少是在通用的新语言中。

Julia 有太多的细节看起来与 Python 非常相似。Julia 会在某个小众的地方是优越的,因为它的编译器为你优化了代码,而 Python 可能永远不会这样。

TypeScript 做了一些 Python 仍在等待解决的事情。我们正在向TypeScript学习。听起来 TypeScript 也在向 Python 学习,就像 JavaScript 在一些领域向 Python 学习一样。
by @技术头条 2021-05-26 22:33 分享 查看详情
理解Android ViewRootImpl (wangxinghe.github.io)
本文以View的requestLayout/invalidate/postInvalidate为切入口, 引申到ViewRootImpl过程分析.

主要按照下面3个步骤:
1.requestLayout / invalidate / postInvalidate的异同;
2.ViewRootImpl过程;
3.常见问题分析;
by @技术头条 2021-05-19 13:42 分享 查看详情
快速构建Ceph集群 (sunqi.me)
虽然安装环境并不是属于研发人员的本质工作,甚至有些研发人员抵触一些环境的搭建工作。在一些大型企业中,由于分工明确,造成了一些研发人员在这一方面能力的严重缺失。其实环境安装对于开发人员从整体上掌握软件架构师非常有益的,同时随着云计算、云原生的发展,对于DevOps的软件开发模式也越来越被企业接受,可以预见的是,未来DevOps将是所有研发人员必备的技能之一。

本文主要目标是帮助研发人员用最小成本搭建一套Ceph环境,为了降低搭建成本,使用了Ceph Deploy及国内源加速安装速度。我们选择目前Ceph Octopus最新的稳定版本进行安装。
by @技术头条 2021-04-26 07:49 分享 查看详情
Git新命令switch和restore (yanhaijing.com)
最近发现git在修改完文件后,提示恢复修改的命令是restore,如下所示,印象中应该是checkout,所以就研究了下,总结一下分享给大家。

git中的checkout命令承载了分支操作和文件恢复的部分功能,有点复杂,并且难以使用和学习,所以社区解决将这两部分功能拆分开,在git 2.23.0中引入了两个新的命令switch和restore用来取代checkout

下面分别来说说分支操作和文件恢复。

by @技术头条 2021-04-26 07:47 分享 查看详情
Flutter包大小治理上的探索与实践 (tech.meituan.com)
Flutter作为一种全新的响应式、跨平台、高性能的移动开发框架,在性能、稳定性和多端体验一致上都有着较好的表现,自开源以来,已经受到越来越多开发者的喜爱。随着Flutter框架的不断发展和完善,业内越来越多的团队开始尝试并落地Flutter技术。不过在实践过程中我们发现,Flutter的接入会给现有的应用带来比较明显的包体积增加。不论是在Android还是在iOS平台上,仅仅是接入一个Flutter Demo页面,包体积至少要增加5M,这对于那些包大小敏感的应用来说其实是很难接受的。
by @技术头条 2021-04-24 23:55 分享 查看详情
自定义C/C++日志输出函数 (www.kymjs.com)
在繁杂的项目中,日志打印必不可少。但是编写打印的工作,有时候是无趣的、繁琐的、浪费精力的。 如何能够快速、方便的编写打印;如何清晰、准确的定位;如何简单并优雅的实现;最后才能让我们摆脱这样枯燥的、重复的工作? 网上有很多强大的日志类工具,我也都使用过一些,有时候也并没有理想中的方便。今天我想分享给大家的一套我自己的解决方案。
by @技术头条 2021-02-13 23:40 分享 查看详情
外卖客户端容器化架构的演进 (tech.meituan.com)
好的架构要不断演变,进而去适应业务的发展。美团在移动端上的架构,也经历了组件化、平台化、RN混合化,到现在开始向容器化变迁。容器化架构充分地利用了现在的跨端技术,将动态化的能力最大化地赋予了业务。作为美团最为重要的业务之一,美团外卖移动端的架构演进是怎样的呢?本文将为你揭开背后的思考、技术细节以及实践。
by @技术头条 2021-02-13 23:40 分享 查看详情
清华大学莫一林:信息物理系统中的安全控制算法 (tech.meituan.com)
中文讲的“安全”,其实基本上包含了英文中的两重含义,一个是Safety,一个是Security。信息物理系统中的安全问题主要是指Security,也就是说,如果有人想要攻击你,在这种情况下,怎么能够保证系统的正常运行?
by @技术头条 2021-02-13 23:39 分享 查看详情
TCP 窗口缩放、时间戳和 SACK (linux.cn)
Linux TCP 协议栈具有无数个可以更改其行为的sysctl旋钮。 这包括可用于接收或发送操作的内存量、套接字的最大数量、可选的特性和协议扩展。
有很多文章出于各种“性能调优”或“安全性”原因,建议禁用 TCP 扩展,比如时间戳或选择性确认Selective ACKnowledgments(SACK)。
本文提供了这些扩展功能的背景,为什么会默认启用,它们之间是如何关联的,以及为什么通常情况下将它们关闭是个坏主意。
by @技术头条 2021-02-13 23:32 分享 查看详情
Android App 启动优化全记录 (androidperformance.com)
本文参考了目前大部分 Android 应用启动优化的方案,将大家的方案做一个汇总,如果你有这方面的需求,只需要对照这篇文章,看看其他人的方案,查漏补缺。很多方案是要根据具体的业务去做优化的,所以这里也没有对每一种方案进行详细的介绍,要用到哪一个方案的时候,可以具体去网上查找对应方案的具体实现方法,这里只是做一个汇总

另外我还加上了部分系统厂商所做的启动相关的优化,不过只写了一些我知道的,还有一些厂商有黑科技,就不在这里的讨论范围了。知道厂商做的事情,可能也会帮助到你,比如联系厂商做白名单、接入厂商 SDK 等
by @技术头条 2020-02-11 11:00 分享 查看详情
Android 系统开发源码环境搭建 (androidperformance.com)
不管是 Android App 开发工程师还是 Android 系统开发工程师,对 Android 系统有一定的了解是很有必要的,正好我这几天在家里搭建了个开发环境,把过程分享出来,有需要的人可以看一下。

大概的步骤包含下面几个:

1、安装 Ubuntu 系统;
2、配置 Ubuntu 系统;
3、安装必备的软件;
4、配置 VPN (可选);
5、下载 AOSP 代码;
6、配置编译环境并编译 Pixel 的代码;
7、刷机;
8、修改和编译 Framework 、Service、Res;

建议准备下面的硬件,当然没有也没关系,有了更好:

1、PC 或者笔记本;
2、512GB 的 SSD;
3、Pixel 手机一台;
by @技术头条 2020-02-11 10:28 分享 查看详情
Docker 核心技术与基本原理 (www.alloyteam.com)
相信在现在的工程开发中,大多数开发者或多或少都听过一个概念:容器。

即使在前端开发的领域中,容器技术在前端 CI/CD,Node 服务等方面也发挥着重要的作用。Docker 提供了对应用进行打包、运行和部署的强大能力,并且随着 K8s 等容器资源调度技术的发展,如今已经基本深入软件工程开发。

今天希望跟大家分享一下,在容器这个外壳下,包含的一些原理以及运用的 Linux 内核技术。
by @技术头条 2020-02-11 10:27 分享 查看详情
JavaScript 深拷贝性能分析 (justjavac.com)
如何在 JavaScript 中拷贝一个对象?对于这个很简单的问题,但是答案却不简单。
by @技术头条 2020-02-05 15:11 分享 查看详情
图解python中赋值、浅拷贝、深拷贝的区别 (www.cnblogs.com)
本文详细介绍了python中赋值、浅拷贝、深拷贝的原理,并附以代码进行讲解,深入的对他们的区别进行了分析。
by @技术头条 2020-02-05 15:05 分享 查看详情
图解python中赋值、浅拷贝、深拷贝的区别 (www.cnblogs.com)
本文详细介绍了python中赋值、浅拷贝、深拷贝的原理,并附以代码进行讲解,深入的对他们的区别进行了分析。
by @技术头条 2020-02-05 15:05 分享 查看详情
图解python中赋值、浅拷贝、深拷贝的区别 (www.cnblogs.com)
本文详细介绍了python中赋值、浅拷贝、深拷贝的原理,并附以代码进行讲解,深入的对他们的区别进行了分析。
by @技术头条 2020-02-05 15:05 分享 查看详情
妙到颠毫: bigcache优化技巧 (colobu.com)
最近看到 yoko 翻译的一篇文章: [译] Go开源项目BigCache如何加速并发访问以及避免高额的GC开销,我在刚读取这篇文档的时候,顺着连接把相关的文章都找出来细细读了一遍,结合bigcache的代码,仔细学习了相关的优化设计,感觉设计非常的精妙,所以特意根据自己的理解又总结了一篇。

bigcache的精妙的设计也吸引了fasthttp的作者Aliaksandr Valialkin,他在bigcache的基础上,结合自己的公司的使用场景,进一步的做了相应的优化, 也开源了这个项目fastcache, 本文在最后也做了介绍。
by @技术头条 2020-02-05 10:59 分享 查看详情
缓存那些事 (type.so)
在一台机器存不下1个业务所有缓存的时候,一般都会选择分片的策略(大多采用取模的办法),但有的时候缩减单个缓存对象的大小,也可以节省整个池子的资源:
1、一般情况之下,key的重复度很高,可以选择缩减key的长度;
2、在序列化的时候选择创建slim object,然后JSON.toJSONString();
3、使用gz/br压缩JSONString (考虑平滑兼容多种压缩方式,使用第一个字节作为标志位);
by @技术头条 2020-02-02 11:25 分享 查看详情