Go泛型系列:再简化,省略接口 (colobu.com)
如果你一直关注Go泛型的设计和实现,一定知道Go泛型代码实现是通过类型参数(type parameter)实现的,当运行泛型代码时,类型参数(type parameter)由类型参数(type argument)替代。(很遗憾parameter和argument都被翻译成了中文参数)

类型参数(type parameter)也有类型,也就是描述这个参数类型行为的元数据,被成为约束(constraint)。最通用的约束就是内建的any类型,它代表任意的类型。
by @技术头条 2022-05-06 23:16 分享 查看详情
Go泛型不支持泛型方法,这是一个悲伤的故事 (colobu.com)
根据Go 泛型提案的描述,Go不支持泛型方法:No parameterized methods。主要原因Go泛型的处理是在编译的时候实现的,泛型方法在编译的时候,如果没有上下文的分析推断,很难判断泛型方案该如何实例化,甚至判断不了,导致目前(Go 1.18)Go实现中不支持泛型方案。

不过,泛型方法的缺失,多多少少给程序员带来一丝丝的忧伤的情绪,在一些场景之下,使用起来特别不方便。我最近看到了几个因为缺乏泛型方法导致的问题,在本文中总结一下,和大家探讨。
by @技术头条 2022-05-06 23:15 分享 查看详情
Golang 多版本管理 (soulteary.com)
如果你是一个 Golang 的用户,那么你大概率会遇到管理和维护 Golang 版本的诉求,如果你恰好同时需要开发调试两个不同版本的项目,在不考虑强制跳版本的情况下,你或许就需要使用“Golang 版本管理工具”来帮助你减轻负担了。本篇文章将介绍最近几个月,我在使用的工具,它们的优势和不足。希望能够帮助到有类似需求的同学。
by @技术头条 2022-05-06 23:14 分享 查看详情
Systrace 线程 CPU 运行状态分析技巧 - Runnable 篇 (androidperformance.com)
本文是 Systrace 线程 CPU 运行状态分析技巧系列的第一篇,主要分析了 Systrace 中 cpu 的 runnable 状态出现的原因和 Runnable 过长时的一些优化思路。

本系列的目的是通过 Systrace 这个工具,从另外一个角度来看待 Android 系统整体的运行,同时也从另外一个角度来对 Framework 进行学习。也许你看了很多讲 Framework 的文章,但是总是记不住代码,或者不清楚其运行的流程,也许从 Systrace 这个图形化的角度,你可以理解的更深入一些。
by @技术头条 2022-05-06 23:12 分享 查看详情
Jrnl:你的 Linux 终端数字日记 (linux.cn)
想象一下:有人伤了你的心,而你想要的是心无旁骛地在日记中写下你的感受。你明白这种感受吗?没有吗?我也不知道。我没有心碎过(或者也许我心碎了,但我不想告诉你)。

但我还是想向你展示一个奇妙的极简的开源的记事应用来保存日记。

这个方便的小程序是Jrnl,它可以让你在终端中直接创建、搜索和查看日记条目。
by @技术头条 2022-05-06 23:11 分享 查看详情
系统管理员排除故障的五种武器 (linux.cn)
当你不知道从哪里开始时,这五个工具可以帮助你找到用户的 IT 问题的源头。

作为系统管理员,我每天都面临着需要快速解决的问题,用户和管理人员期望事情能够顺利地进行。在我管理的这样的一个大型环境中,几乎不可能从头到尾了解所有的系统和产品,所以我必须使用创造性的技术来找到问题的根源,并(希望可以)提出解决方案。

这是我 20 多年来的日常经验!每天上班时,我从不知道会发生什么。因此,我有一些快速而简陋的技巧,当一个问题落在我的身上,而我又不知道从哪里开始时,我一般就会采用这些技巧。
by @技术头条 2022-05-06 23:10 分享 查看详情
使用 DeepSpeech 在你的应用中实现语音转文字 (linux.cn)
应用中的语音识别不仅仅是一个有趣的技巧,而且是一个重要的无障碍功能。

计算机的主要功能之一是解析数据。有些数据比其他数据更容易解析,而语音输入仍然是一项进展中的工作。不过,近年来该领域已经有了许多改进,其中之一就是 DeepSpeech,这是 Mozilla 的一个项目,Mozilla 是维护 Firefox 浏览器的基金会。DeepSpeech 是一个语音到文本的命令和库,使其对需要将语音输入转化为文本的用户和希望为其应用提供语音输入的开发者都很有用。
by @技术头条 2022-05-06 23:10 分享 查看详情
纯CSS实现未读消息超过100自动显示为99+ (www.zhangxinxu.com)
未读消息超过100显示为99+是常见的交互,目前主流实现一定是通过 JS 逻辑判断,其实纯 CSS 就能实现一模一样的功能,兼容性还不赖,进来看看吧。

by @技术头条 2022-05-04 16:49 分享 查看详情
容易混淆的CAP及ACID定义 (it.deepinmind.com)
CAP及ACID都有一些共同的概念:例如原子性,一致性等等。但也会带来一些问题,这些术语名字虽然是一样的,但背后的含义完全不一样。CAP是分布式系统的理论引申出来的,而ACID指的是数据库系统。而分布式数据库会同时提到CAP和ACID,这就产生了很多困惑。当有人提到“不能放弃一致性”,这到底意味着什么呢?我们先来看下ACID和CAP分别的定义是什么。
by @技术头条 2022-05-04 16:43 分享 查看详情
Java IO类型 (it.deepinmind.com)
描述IO类型时经常会交替地使用非阻塞、异步等术语,但这两个词是有着很大的区别的。本文将从理论和实践两个方面来说明下Java编程里的非阻塞和异步IO。

TCP和UDP协议使用了套接字进行双端通信。Java的套接字 API则是底层操作系统具体实现的的适配器。兼容POSIX规范的操作系统(如Unix, Linux, Mac OS X, BSD, Solaris, AIX等)中使用的socket通信被称作伯克利套接字(Berkeley sockets)。Windows中的套接字叫winsock,它也是基于伯克利套接字,但增加了额外的功能用于支持windows的编程模型。
by @技术头条 2022-05-04 16:42 分享 查看详情
见多识广,介绍Web开发中current开头的一些API属性 (www.zhangxinxu.com)
主要介绍 currentTarget、currentScript、currentTime、currentNode 和 currentSrc 这5个属性 API,有些是 JS 对象属性,有些是 HTML 对象属性,都挺有用的。
by @技术头条 2022-05-04 16:40 分享 查看详情
iOS 开发者证书不受信任的解决方法 (zww.me)
网上搜了一下原因和解决方法,发现都写的啰里吧嗦还不把全部下载链接放出来,这里直接贴,把文中 2个 AppleWWDRCA 证书下载并导入即可。
by @技术头条 2022-05-04 16:36 分享 查看详情
一个检测 json 合法性的脚本 (droidyue.com)
越来越多的配置都是使用 json 的格式,当我们修改好,最好是进行一下 json 合法性校验。
by @技术头条 2022-05-04 16:31 分享 查看详情
frm和ibd文件数据库恢复 (www.xifenfei.com)
这次客户rm -rf /var/lib/mysql删除文件,删除一半及时终止,但是已经有很多mysql相关文件被删除,重要的ibdata文件已经被删除,并且客户尝试了大量的恢复工作,对该分区进行了大量的写入操作,导致后面通过对xfs文件系统进行分析,确认无法恢复对应的ibdata文件.比较幸运客户需要的核心的mysql库都还在(frm和ibd文件还存在)。
by @技术头条 2022-02-04 19:52 分享 查看详情
流体系统 (blog.codingnow.com)
我们最近在开发的类似异星工厂的游戏中,一个重要的物流子系统就是流体系统。我个人觉得,它是所有子系统中最难实现的一个。
by @技术头条 2022-02-04 19:52 分享 查看详情
C 中访问 Lua 配置表的优化 (blog.codingnow.com)
这两天写代码时用到之前写的一个对 Lua 配置表的 cache 模块 。感觉用起来还是不够简洁方便。我今天动手重新设计了一下。

需求是这样的:

项目有非常多的配置信息保存在 Lua 的 (树状层级的)table 中,大部分逻辑代码直接用 Lua 的语法便可直接访问。但是,有少量有性能要求的业务是在 C 中实现的,C function 中也需要读取这些存放在 Lua 中的配置数据。

配置项随着项目开发,变更非常频繁。如果我设计一个小语言,定义出配置表,用代码生成的方式把表项翻译成对应的 C/C++ 结构,再在 C side 根据 Lua 中的数据重建一组 C 数据也未尝不可。这就是 google protobuf 官方采用的方式(用代码生成的方式,根据数据的 schema 构建出 C++ 类,让 C++ 可以方便访问这些数据)。

但我不想搞得这么复杂(浪费?
by @技术头条 2022-02-04 19:51 分享 查看详情
Mac 终端下 实现 安装 ipa 包到 iPhone 真机 (droidyue.com)
最近处理 Flutter 的开发工作,开始尝试使用 iOS 作为日常的真机调试工作。对于一个原技术栈为 Android的人来说,发现 iOS 有很多不太方便的地方。比如如何在 Mac 电脑上安装 ipa包到 iPhone 上。

相比来说,Android 提供了adb 可以很快捷的在 终端上执行安装。而iOS 我也希望有一个可以在终端上实现安装ipa的方式,摸索了一下,终于发现了一个可行的技术方案。
by @技术头条 2022-02-03 13:17 分享 查看详情
ECS 中同类关联数据的处理 (blog.codingnow.com)
ECS 模式下最难处理的是同类 Component 之间有相互联系的情况。

最方便 ECS 处理的数据是相互独立的,每个数据单元都不和其它数据单元产生联系;如果多个数据单元会有故有的联系时,当可以把它们看作是同一个实体(Entity)下的不同组件(Component)时,那么就可以借用 Entity 的概念来处理它们。我们依旧可以按固定的次序去迭代这些数据。

但是,在复杂系统中,无可避免的,同类数据相互之间也可以产生联系。例如:场景管理中,节点之间有父子关系,计算节点的空间状态的过程对数据的遍历次序有要求。且计算过程还需要访问父节点的状态。解决这类需求是 ECS 框架的一大挑战。
by @技术头条 2022-02-03 13:12 分享 查看详情
你不知道的CSS media查询与用户体验 (www.zhangxinxu.com)
本文介绍 4 个很多前端开发不知道的可以提升用户体验的 media 媒体查询语句,希望可以帮到大家的学习。
by @技术头条 2022-02-01 22:52 分享 查看详情
Android 性能优化的术、道、器 (androidperformance.com)
谷歌搜索 「Android 优化工具」,你会找到很多与此相关的内容。他们的问题在于要么是内容高度重复、要么是直接讲使用方法,很少会给你介绍整体性的架构,一不小心就会让人会种「一个工具搞定一切」的错误认知。以笔者团队的多年经验来看,在性能分析领域这种银弹级别的工具是不存在的。工具在发展,老问题会以新的方式变样出现,不掌握核心逻辑的话始终会让你浮于技术的表面。
本文首先系统性的梳理性能分析中的可观测性技术,它涵盖数据类型、抓取方法以及分析方法等三部分内容,之后是介绍谷歌提供的「三大件」分析工具。目的是想让你了解不变的理论性的知识,以及与之对应的在安卓环境中可用的工具,这些可以让你少走一些弯路,直接复用前辈们的经验。
需要特别说明的是,对于性能优化肯定不止有这三个工具可用,但这个三个工具是我们平时用到的「第一手工具」。进行进一步分析之前,你都需要依赖这三个工具进行瓶颈定位,之后才应不同领域特性选择对应的工具进行下钻分析。
by @技术头条 2022-02-01 22:29 分享 查看详情