如何写出内存泄露的程序? (colobu.com)
Go语言语法简单,学习起来容易,也容易上手,所以越来越多的公司和个人采用Go语言开发应用程序。不管使用什么语言,内存泄露是经常遇到的一类问题,而使用Go语言编写内存泄露的代码却不容易,本文将教你几招编写出内存泄露的代码,以满足你创造出内存泄露bug的心里需求。

即使你编写出内存泄露的bug,一般来说也很容易通过pprof查找出来,或者通过pprof的两次对比中找出哪一块出现的问题,所以不要因为写出bug就沾沾自喜,此类bug还是很容易被发现的。
by @技术头条 2021-05-27 07:12 查看详情
[译]Go正则表达式示例 (colobu.com)
在这篇文章中,我会介绍如何在Go语言中使用正则表达式。Go标准库本身就包含正则表达式库regexp。

一个正则表达式(regex)是一个字符串,定义了一种搜索模式。你可以很容易的使用正则表达式进行搜索、替换、抽取、和模式匹配等操作,使用一行代码就可以干普通多行的事情。

Go标准库使用RE2语法,RE2语法也是Python、C和Perl使用的正则表达式语法。
by @技术头条 2021-05-27 07:12 查看详情
笔记本电脑电池损耗的排查和电池养护建议 (www.ipcpu.com)
由于笔记本电脑电池采用的是锂电池,手机、Pad等设备也是锂电池,所以计算损耗的方法是一样的。

在历史上还有镍镉电池、镍氢电池,因为效率和体积的原因,目前都已经基本淘汰,3C数码产品基本都是锂电池。
by @技术头条 2021-05-26 23:13 查看详情
Referer防盗链和应用和破解 (www.ipcpu.com)
Referer防盗链和应用和破解.md 一、Referrer 还是 Referer? 两种写法都对,因为前人的拼写错误typo,需要后人来买单。 二、什么是Referer? HTTP协议规范在HTTP标头中定义了referer字段(见RFC 1945, RFC 7231),用于表示HTTP请求来源。该字段值由浏览器在发起HTTP请求时指定。该字段值代表当前HTTP请求的来源,例如在点击网页链接时,浏览器会向服务器提交一个HTTP请求,请求中HTTP标头的referer字段值为引用该资源的网页地址,即用户点击的网页地址。 三、防盗链的应用场景 盗链通常指未经源网站允许的情况下,通过超链接引用源网站内容,如图片,视频等。盗链行为会造成受害网站数据泄露以及经济损失。 由上图中可以看出,盗链过程中,盗链网站自身不提供全部网页所需内容。部分网页内容来自受害网站。 在以上过程中,受害网站实际承载盗链网
by @技术头条 2021-05-26 23:09 查看详情
谈一谈OCR文字识别 (www.ipcpu.com)
OCR的难点主要是识别率:不仅要识别印刷的书本、现在更多的需求是识别照片中的文字,这些文字可能是印刷体也可能是手写体,甚至因为拍摄角度原因存在拉伸、模糊等各种变形的情况。
by @技术头条 2021-05-26 23:09 查看详情
行为树及其实现 (godorz.info)
在游戏AI中, 常见的实现有决策树、状态机等, 它们各自存在着不足. 以状态机FSM为例, 它非常难以通用和扩展, 状态转化的复杂度随着每个新增状态将变得越发缭乱. 考虑到可能存在多个并行的状态机, 它们之间的交互更是复杂交错, 难解难分. 于是大神们创造了行为树(BehaviourTree),
by @技术头条 2021-05-26 22:56 查看详情
用RenderDoc和安卓模拟器抓帧手游 (blog.kangkang.org)
知乎上有一篇用 Intel GPA 和安卓模拟器抓帧手游的帖子,不过 Intel GPA 配置相对比较繁琐,还有版本问题。还是 RenderDoc 比较习惯。所以研究了一下如何用RenderDoc来抓帧模拟器,倒是蛮简单的。这样手游只要能用模拟器运行,就一定可以被抓帧,什么 ro.debuggable 啊,USB 调试啊都不需要管,root 也不用开,绝无被检测到的可能。
by @技术头条 2021-05-26 22:48 查看详情
Go: 基于 apitest 做handler层单元测试 (wklken.me)
原先使用 postman + newman 的方式做的 API 功能测试,这种方式不完全是API层的单元测试, 预先配置好数据库/初始化好数据后, 直接通过API调用, 判定响应值是介于单元测试 + 集成测试 之间的一种测试, 但是既不是完备的单元测试, 也不是完整的集成测试。

好处:
1、简单方便, 在本地开发调试API时, 就能将调试请求直接转为测试用例。

缺点:
1、难以维护: 更新API/增加API时, 未实时同步更新测试用例;
2、变更上层协议时, 例如middleware, 所有case需要改违背Isolate原则: 无法独立, 每个case运行时, 前面执行的数据会影响后面执行的数据;
3、每个case都需要考虑规避之前case的数据影响缺乏完备性: 一个API一般只构造一个失败, 一个成功两个Case。
by @技术头条 2021-05-26 22:43 查看详情
如何设计安全的控制系统远程访问 (blog.nsfocus.net)
远程访问有个比较容易被忽视的问题:目前关于远程访问的很多设计/架构已经过时,相关标准需要重新制定和更新以达到当前的安全标准,但是各种设备的涌现导致标准制定需要考虑很多问题。完全杜绝远程访问,采用封闭隔离模式也不是长久之计。

在万物互联和IOT高速发展的情况下,远程连接必不可少,尤其是在工业控制环境中。现场设备的配置更新、界面设置等很多操作无法由安全人员完成,需要由供应商或控制系统现场人员协助。疫情前人们就已经在考虑摒弃传统的人员在设备现场操作模式,疫情的到来更加速了这个需求。一些传统的架构设计已经不允许我们在独立隔离的环境中完成各种操作,我们必须要直面远程访问带来的各种风险。
by @技术头条 2021-05-26 22:40 查看详情
零信任的困境与破局之路 (blog.nsfocus.net)
零信任是一种新型的网络安全架构,可以从零开始建设,也可以在现有的基础设施之上构建新的安全防护机制。基于各类创新技术的不断发展对现有技术的冲击,厂商需要做好合理的用户引导,在未来的很长一段时间内,做好传统安全技术和零信任技术共存的心理准备,一边运行,一边建设,逐步替换,保证新旧技术的平滑演进。

包括我们在为企业推广零信任安全解决方案的时候,不能完全颠覆企业当前的安全建设成果,而去打造一个全新的零信任安全体系。需要充分考虑零信任方案如何和客户当前存量安全产品相互融合,为企业的安全保驾护航。

零信任方案在设计之初,就需要包容的心态,要与各种安全能力和谐共处。围绕零信任“永不信任,持续认证”的安全理念,将各种安全能力统一归属到零信任体系之下,将其作为零信任的“耳目”。通过丰富的异构产品接口,收集各安全产品的安全日志和安全事件,进行集中分析和研判,打造全访问链的动态可信访问。
by @技术头条 2021-05-26 22:38 查看详情
百亿规模API网关服务Shepherd的设计与实现 (tech.meituan.com)
在微服务架构下,服务拆分会让API的规模成倍增长,使用API网关来管理API逐渐成为一种趋势。美团统一API网关服务Shepherd就是在这种背景下应运而生,适用于美团业务且完全自研,用于替换传统的Web层网关应用,业务研发人员通过配置的方式即可对外开放功能和数据。本文将介绍美团统一API网关诞生的背景、关键的技术设计和实现,以及API网关未来的规划,希望能给大家带来一些帮助或者启发。
by @技术头条 2021-05-26 22:37 查看详情
使用开源工具进行 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 查看详情