Spring 启动流程概述 (www.diguage.com)
对于 Spring 启动流程和 Bean 的生命周期,总有一些小地方搞的不是很清楚,干脆直接通过修改代码增加日志输出,使用断点单步调试,把整个流程捋顺了一点点的。

除了加载配置文件或者基础配置类外,Spring 的启动过程几乎都被封装在 AbstractApplicationContext#refresh 方法中,可以说弄清楚了这个方法的执行过程,就摸清楚了 Spring 启动全流程,下面的流程分析也是以这个方法为骨架来展开的。

流程概要 下面完整流程有些太复杂,所以,提炼一个简要的过程,方便糊弄面试官,哈哈哈
by @技术头条 2023-06-24 23:05 查看详情
HikariCP 源码分析 -- ConcurrentBag (www.diguage.com)
以前无意间搜资料了解到 HikariCP,一下子就被它的简洁代码和卓越性能吸引住了。以前也有翻过它的代码,但是不是很系统,最近再次翻阅,正好做些笔记,方便以后学习。

最近在学习 Java 并发知识。那就从 HikariCP 自定义的并发集合 ConcurrentBag 开始学习。
by @技术头条 2023-06-24 23:05 查看详情
TCP 三次握手和四次挥手 (www.diguage.com)
传输控制协议(英语:Transmission Control Protocol,缩写:TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的 RFC 793 定义。在简化的计算机网络 OSI 模型中,它完成第四层传输层所指定的功能。

毫不夸张地说,TCP 协议是目前整个互联网的基础。它解决了一系列的网络问题。带来的结果,就是协议本身非常复杂。考虑到文章篇幅问题,本文着重说明 TCP 建立连接时的三次握手过程和关闭连接时的四次挥手过程。
by @技术头条 2023-06-24 21:23 查看详情
负载均衡算法及实践 (www.diguage.com)
前几天在看一个资料时,看到关于负载均衡算法的介绍。最近也在研究 Spring Cloud 和 Apache Dubbo 等微服务框架。正好负载均衡是微服务框架中一个很重要的知识点。就动手做个整理和总结。方便后续学习。
by @技术头条 2023-06-24 21:22 查看详情
分布式事务概述 (www.diguage.com)
现在手机银行转账已经司空见惯。但是,D瓜哥一直在思考,银卡跨行转账是如何保证事务一致性的?借机就对分布式事务,做了简单地了解。
2PC 两阶段提交(2pc, two-phase commit protocol),2pc是非常经典的强一致性、中心化的原子提交协议。中心化是指协议中有两类节点:一个中心化协调者节点(coordinator)和N个参与者节点(participant、cohort)。
by @技术头条 2023-06-24 10:11 查看详情
技术 | Linux 中的模糊文件搜索 (linux.cn)
在 Linux 命令行中,如何搜索文件?你可以使用find 命令。这是标准答案,没有问题。

通常,你键入带有搜索参数的命令,按回车键,然后它会显示搜索结果。

你可以通过模糊搜索来提升终端中的文件搜索体验。

模糊搜索是一种近似搜索算法或技术。在这种搜索中,通过名称搜索指定位置的文件,并实时显示结果给用户。

模糊搜索在网络搜索引擎中很受欢迎,用户开始输入术语后,它会开始显示与该术语相关的结果。

在本文中,我将讨论两个命令行工具,它们可以让你在 Linux 中执行模糊搜索:
1、fzf:模糊查找工具;
2、fzy:模糊选择工具。
by @技术头条 2023-06-24 09:42 查看详情
带 DNSSEC 的域名转移 (blog.delphij.net)
DNSSEC是一组针对 DNS 协议的扩展,其主要目的是为数据的权威性(或者说DNS数据确实来自于有权发布这些数据的人)提供一套验证机制。DNSSEC并不改善私密性,所有的查询依然是明文的。

目前最新的 DNSSEC 最佳实践指南是 BCP 237 (RFC 9364)。值得说明的是,如果没有特别的需要,使用 DNS 服务业者的 DNSSEC 实现可以避免踩很多的坑,尽管这样一来安全方面就完全要仰赖这些业者了,但对普通的域名所有这来说这些服务要比他们自己去架设和管理要可靠不少。本文并不打算深入介绍 DNSSEC 及其部署,而只是关注于在进行域名转移时需要注意的问题,以备我个人未来进行参考。
by @技术头条 2023-06-24 09:38 查看详情
关掉了 Google 账户的 passkey (blog.delphij.net)
最近, Google 账户新增了一种叫做 passkey 的登录方式。

和 密码 + U2F 的验证方式相比,passkey 实际上类似于在手机等设备上实现了一个 U2F,并使用它代替了两者的组合。对于普通用户来说这固然是比只用密码要安全的多的(因为 passkey证明了用户拥有一个登录了该 Apple ID 或 Google 账户的设备,并且知道其解锁密码,或是向设备以生物信息证明了身份),但由于完全去掉了密码,设备本身的安全性就很重要了,在 Google 的实现中 ,锁屏密码用于生成端到端加密的密钥,因此一个能够登录 Google 账户,并且获知了锁屏 PIN 的人便能恢复出 passkey。根据文章的说法,通过硬件保证了 PIN 只能尝试最多十次,但总体上,无论是 Google 还是 Apple 的实现都依赖于一直在线的手机本身的安全性,而 U2F 设备通常并不是连接在设备上的,因此我认为尽管对普通人来说passkey 已经足够好,但对于需要持续提高电击电压的人群来说,使用 密码 + U2F 会更安全一些。
by @技术头条 2023-06-24 09:37 查看详情
C main() 的 exit() 和 return (blog.delphij.net)
这里讨论一个犀利而无用的细节问题。事情的缘起是有人在 GitHub 上提了一个 pull request 要求把许多程序的main() 的​终结部分从 exit(X) 改为 return X;,我反对了这一变动。
by @技术头条 2023-06-24 09:33 查看详情
CVPR 2023 | 美团技术团队精选论文解读 (tech.meituan.com)
本文精选了美团技术团队被CVPR 2023收录的8篇论文进行解读。这些论文既有自监督学习、领域自适应、联邦学习等通用学习范式方面的技术迭代,也涉及目标检测、跟踪、分割、Low-level Vision等典型视觉任务的性能,体现了美团在基础通用技术和垂直领域技术上的全方位创新。这些论文也是美团技术团队与国内多所高校、科研机构合作的成果。希望给从事相关研究工作的同学带来一些启发或者帮助。
by @技术头条 2023-06-24 09:22 查看详情
超大规模数据库集群保稳系列之三:美团数据库容灾体系建设实践 (tech.meituan.com)
本篇是美团超大规模数据库集群保稳定系列的第三篇,重点介绍一下美团数据库的容灾体系建设实践。主要内容包括业务架构、数据库容灾平台能力建设、演练体系建设、以及这些建设取得的一些成果,最后也会分享一下容灾建设的未来思考。希望对大家能够有所帮助或者启发。
by @技术头条 2023-06-24 09:22 查看详情
超大规模数据库集群保稳系列之二:数据库攻防演练建设实践 (tech.meituan.com)
本文整理自美团技术沙龙第75期的主题分享《美团数据库攻防演练建设实践》,系超大规模数据库集群保稳系列的第2篇文章。本文首先介绍了美团当前数据库运维现状、遇到的问题,以及为什么要建设数据库攻防演练平台;其次,分享当前数据库攻防演练平台的具体实践;第三部分会介绍数据库攻防演练在美团内部的落地情况;最后,会结合混沌工程的成熟度标准和成熟度等级,分享我们对未来工作的一些规划。
by @技术头条 2023-06-24 09:22 查看详情
Robust 2.0:支持Android R8的升级版热修复框架 (tech.meituan.com)
2016年,我们对美团Android热更新方案Robust的技术原理做了详细介绍。近几年,Google 推出了新的代码优化混淆工具R8,Android 热修复补丁制作依赖二次构建包和线上包对比,需要对Proguard切换到R8提前进行适配和改造,本文分享 Robust 在适配 R8 以及优化改进中的一些思路和经验,希望能对大家有所帮助或者启发。
by @技术头条 2023-06-24 09:21 查看详情
一个泛型的有序Go Map实现 (colobu.com)
我们知道, Go内建的map类型对于插入的元素并没有保持它们的插入顺序,遍历的时候也故意设置成随机的。因此,如果我们想让map保持元素的插入顺序,需要借助第三方的库才行,今天就给大家介绍一个这样的库OrderedMap。

其实在其他编程语言中,也有类似的数据结构,比如java中的 LinkedHashMap, python中的OrderedDict。

本文介绍如何使用Go语言实现这样的一种数据类型。注意我们要实现的是OrderedMap, 不是SortedMap或者TreeMap,SortedMap遍历的时候是按照Key的排序顺序遍历的,我们可以通过先获取所有的key并排序,再逐个访问对应的值。

但是OrderedMap遍历的时候要是保持插入的顺序,这怎么办到的呢?
by @技术头条 2023-06-24 09:19 查看详情
让 sync.Map 支持泛型 (colobu.com)
渐渐地, Go泛型越来越多应用的Go的标准库中了。一些标准库的类型,比如container/heap、container/list、container/ring、math都是有机会支持泛型的,但是考虑到Go向下兼容的情况,这些包可能不会直接修改,最可能就是新建一些并发的包,或者放在扩展包中。

本篇文章将讲一个相对复杂的例子,也就是对sync.Map的修改,让它支持泛型。
by @技术头条 2023-06-24 09:19 查看详情
如何用 ChatGPT 助力开发: 已经有 15 万人看过的经验分享 (luolei.org)
自从年初开始关注这波 AI 浪潮,我将 AI 纳入了自己的工作流程,已经有一段时间了。现在我基本上一有机会就向他人推荐,建议尽快将 AI 引入开发流程。

今天这篇文章,分享一些目前自己利用 AI 服务相关的一些经验、工具和服务。
by @技术头条 2023-06-24 09:04 查看详情
如何高效使用 GitHub Copilot (www.dbform.com)
GitHub Copilot 是一款由 OpenAI 和 GitHub 联合开发的人工智能编程助手,基于 GPT-4 模型。它可以帮助你编写代码、提供代码建议、自动完成代码片段等,大大提高编程效率。下面是如何高效使用 GitHub Copilot 的一些建议。
by @技术头条 2023-06-05 23:59 查看详情
合成双重差分法--烟草控制评估 (bjt.name)
双重差分(difference indifferences)是一种常见的计量经济学方法,用于评估政策或干预措施的影响。它的基本思想是对比实验组和对照组在政策实施前后的差异,以确定政策的影响。
by @技术头条 2023-06-05 23:58 查看详情
当 App 有了系统权限,真的可以为所欲为? (androidperformance.com)
前一段时间有个 App 很火,是 Android App 利用了 Android 系统漏洞,获得了系统权限,做了很多事情。想看看这些个 App 在利用系统漏洞获取系统权限之后,都干了什么事,于是就有了这篇文章。
这篇文章主要来看看 XXX apk 内嵌提权代码,及动态下发 dex 分析 这个库里面提供的 Dex ,看看 App 到底想知道用户的什么信息?总的来说,App 获取系统权限之后,主要做了下面几件事(正常 App 无法或者很难做到的事情),各种不把用户当人了。
by @技术头条 2023-06-05 23:56 查看详情
使用docker-compose部署最新版loki+promtail+grafana采集Nginx的日志流程记录 (wiki.eryajf.net)
在一些轻量化的场景之中,使用 ELK 方案来解决日志问题就会比较笨重,素闻 Loki 比较香,今天折腾了一番,特此记录一下整个流程。本文不涉及 Loki 的深度使用与研究,但是参照本文,你可以快速把 Loki 拉起来,并且把 Nginx 日志正确采集进来。
by @技术头条 2023-06-05 23:53 查看详情