技术分享

收录了 31 篇文章

我做了十几年后端,却在一道排行榜系统设计题上翻车了

我做了十几年后端,却在一道排行榜系统设计题上翻车了

我做了十几年后端和架构工作,一直觉得自己对技术是有积累的。直到最近遇到一道面试题——设计一个海量游戏排行榜系统——才发现自己回答得一塌糊涂。事后复盘,原因有两层。表面原因是临场发挥差。我几乎没有做过系统设计类的面试题,平时的经验都是在真实项目中一点一点磨出来的,从来没有被要求在几分钟内把一个系统从零讲清楚。没有练过,自然紧张;一紧张,脑子里的东西就串不成线。深层原因更值得正视:我确实没有系统...

Screenshot-to-code 原理分析

screenshot-to-code 这个项目可以将屏幕截图转换为 HTML/Tailwind CSS 代码。它使用 GPT-4 Vision 生成代码,使用 DALL-E 3 生成图片。项目地址:github.com/abi/screenshot-to-code这个项目最近爆火,短短几天时间,在 Github 上已经有 14.9K 的 Star。花了 5 分钟看了下项目的源码,没想到...

Back-of-the-envelope Calculations 粗略估算

时间单位时间单位秒(second),毫秒(millisecond),微秒(microsecond),纳秒(nanosecond)换算1s = 1000ms (秒 -> 毫秒)1ms = 1000μs (毫秒 -> 微秒)1μs = 1000ns (微秒 -> 纳秒)数据单位数据的表示常用的有两种标准:IEC:国际电工委员会(International Elec...

Java 字符串 split 的一个反直觉陷阱

最近生产环境遇到一个奇怪的数组下标越界报错,如下图代码所示,我们可以肯定的是 fieldName 变量不为空(不是空字符串,也不是 null),但是代码执行到读取 names[0] 变量的时候,抛出了一个 数组下标越界 (java.lang.ArrayIndexOutOfBoundsException) 的异常。异常信息如下图所示问题很简单,我们对一个字符串执行 split 方法之后,以过...

MySQL 数据库索引技术原理初探

概述什么是索引一本书 500 页的书,如果没有目录,直接去找某个知识点,可能需要找一会儿,但是借助前面的目录,就可以快速找到对应知识点在书的哪一页。这里的目录就是索引。所以,为什么会有索引?为了提高数据查询效率。常见索引算法最简单也最容易想到的索引算法就是有序数组了,我们创建一个数组,数组按照顺序排列,我们要查找某一条记录,使用二分法就可以快速得到(log N),从图中我们可以看出,...

数据库分库分表策略

垂直切分垂直分表是基于数据库中的"列"进行,某个表字段较多,可以新建一张扩展表,将不经常用或字段长度较大的字段拆分出去到扩展表中。优点:解决业务系统层面的耦合,业务清晰与微服务的治理类似,也能对不同业务的数据进行分级管理、维护、监控、扩展等高并发场景下,垂直切分一定程度的提升IO、数据库连接数、单机硬件资源的瓶颈缺点:部分表无法join,只能通过接口聚合方式...

Keepalived & LVS 高可用

在本文中,我将会讲述如何在Centos 7下基于Keepalived和LVS技术,实现Web服务的高可用和负载均衡,我们的目标拓扑结构如下图所示本文将会持续修正和更新,最新内容请参考我的 GITHUB 上的 程序猿成长计划 项目,欢迎 Star,更多精彩内容请 follow me。准备如果你觉得一步一步按照下面的操作来搭建太过麻烦,可以直接下载 mylxsw/keepalived-exa...