用Go撸一个二叉搜索树 (colobu.com)
前几天Redis的作者antirez说他朋友面试的时候考到排序问题,然后他说要是他也会考实现一个二叉搜索树,我说在中国某公司,据说面试直接就撸一个红黑树。不是说你技术渣,试问在座的各位有几个现在直接裸写出红黑树?

红黑树太过偏门,但是常用的二叉搜索树你能写出来吗?快排呢?堆排序呢?
by @技术头条 2021-05-27 07:54 查看详情
踩坑记: Go 服务灵异 panic (www.felix021.com)
这个坑比较新鲜,周一刚填完,还冒着冷气。在字节跳动,我们线上服务的所有 log 都通过统一的日志库采集到流式日志服务、落地 ES 集群,配上字节云超(sang)级(xin)强(bing)大(kuang)的监控能力,每一条 panic log 都可以触发一个打给值班同学的电话。
by @技术头条 2021-05-27 07:53 查看详情
速查表:学习 Kubernetes 的基本命令 (linux.cn)
开始探索 kubectl、容器、吊舱等,接着下载我们的免费的速查表,这样你就可以随时掌握关键的命令了。

云计算主要是在 Kubernetes 上运行,Kubernetes 主要是在 Linux 上运行,而 Linux 在有熟练的系统管理员控制时运行得最好。无论你认为自己是云计算架构师还是只是一个保守的系统管理员,现代互联网都需要了解如何在容器中创建应用和服务,按需扩展,按需扩展以及如何明智地进行监视和管理。
by @技术头条 2021-05-27 07:52 查看详情
All in one:项目级 monorepo 策略最佳实践 (fed.taobao.org)
在最近的项目开发中,出现了一个令我困扰的状况。我正在开发的项目 A,依赖了已经线上发布的项目 B,但是随着项目 A 的不断开发,又需要不时修改项目 B 的代码(这些修改暂时不必发布线上),如何能够在修改项目 B 代码后及时将改动后在项目 A 中同步? 在项目 A 发布上线后,如何以一种优雅的方式解决项目 A,B 版本升级后的版本同步问题? 经过一番调研,我发现解决这些问题的最佳方案便是本篇要介绍的 monorepo 策略。
by @技术头条 2021-05-27 07:50 查看详情
业务系统的稳定性建设 (fed.taobao.org)
在当下微服务、分布式架构的背景下,一次简单的接口调用背后可能涉及到了多个业务服务单元和服务器。如何才能在当前架构下准确、高效、即时地了解业务系统的运行情况、保障系统稳定性、快速定位线上异常?本文正是针对于该问题解决方案的探讨。并立足于讨论如何通过建立完善的日志分析系统来保障业务系统的稳定性。

PS:本文主要在业务服务的范围内去讨论稳定性建设,并不包含非业务相关的服务器级别(如:网络、CPU等)稳定性内容。
by @技术头条 2021-05-27 07:50 查看详情
为什么开发一款软件只要 3 个月,开发一款硬件却要一年 (blog.devtang.com)
小结:
1、硬件研发链条长,在研发过程中的任何调整,都可能对整个产品的研发进度产生极大的影响。
2、硬件的研发需要基础量和开模,使得资金门槛高,给后续库存和资金周转带来挑战。
by @技术头条 2021-05-27 07:45 查看详情
响应至上:打造无卡顿的滚动列表 (fed.taobao.org)
在技术变化与发展如此之快的今天,web用户对页面的访问速度与响应度提出了越来越高的要求。

其中的“响应度”不仅仅是实现层面的问题,更是个设计问题,仅靠性能优化与更快的硬件是难以解决的。

本文以常见的「无尽滚动列表」场景为案例,阐述如何从交互的角度看待和提升用户体验的思路,提升页面的「响应度」。


by @技术头条 2021-05-27 07:19 查看详情
大话 JavaScript 动画 (fed.taobao.org)
前端做动画不是什么新鲜事了,从jQuery时代,到当下,无不是前端动画横行的时代。

我们知道多张不同的图像连在一起就变成了动态的图像。

在前端的世界里,浏览器在视觉暂留时间内,连续不断的逐帧输出图像。每一帧输出一张图像。

提及动画一定会讨论到帧率(FPS, Frame Per Second),代表每秒输出帧数,也就是浏览器每秒展示出多少张静态的图像。


by @技术头条 2021-05-27 07:17 查看详情
浏览器缓存和 CDN 在前端的落地 (xuexb.com)
提到浏览器缓存,大多数人肯定知道以下几点:
1、设置 Response Headers cache-control;
2、静态文件添加版本号;
3、静态文件添加最大缓存;

但其实缓存还可以更具体、更合适,下面是我在工作业务开发中对缓存的理解,具体基础的概念这里就不提了。
by @技术头条 2021-05-27 07:15 查看详情
如何写出内存泄露的程序? (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 查看详情