What Changes, What Doesn’t: True Engineering in the AI Coding era

1. Background

The software development landscape is undergoing a profound transformation since the advent of LLMs and Agentic AI. AI coding assistant tools like Amazon Kiro, Cline, Claude Code, OpenAI’s Codex, Gemini Code Assistant, Cursor, Github Copilot, Alibaba Qoder, ByteDance Coze and Windsurf[……]

继续阅读

GPT-OSS Java: From PyTorch to Performant Inference on CPU in 1000 Lines

1. Overview

In August 2025, OpenAI released gpt-oss, its first open-weight model family since GPT-2 — including gpt-oss-120b and gpt-oss-20b, both optimized for reasoning tasks. Within weeks, major cloud providers like AWS, GCP, and inference backends like vLLM, Transformers, Ollama, TensorRT[……]

继续阅读

LLM-based GenBI从探索到实践

随着LLM-based Generative AI的火热,这个浪潮也席卷到了数据库领域。DB for AI和AI for DB的概念更多地进入了人们的视野。首先看DB for AI,数据库与ML training和inference的集成产品化已久,比如AWS RedShift和SageMaker的集成思想[1] move model to the data rather than vice versa;这两年基于向量检索 + LLM的RAG更让各大数据库全面拥抱AI。再看AI for DB,基于ML智能调优数据库的想法,很早就被Andy Pavlo提出,其推动的self-driving da[……]

继续阅读

从MySQL InnoDB物理文件格式深入理解索引

1. InnoDB物理文件的基本结构

InnoDB的物理文件有很多种,包括:
 
1)系统表空间(system tablespace)。文件以ibdata1、ibdata2等命名,包括元数据数据字典(表、列、索引等)、double write buffer、插入缓冲索引页(change buffer)、系统事务信息(sys_trx)、默认包含undo回滚段(rollback segment)。
2)用户表空间。innodb_file_per_table=true时,一个表对应一个独立的文件,文件以db_name/table_name.ibd命名。行存储在这类文件。另外还有5.7之后引[……]

继续阅读

从服务和存储角度看异地多活的高可用架构

1. 前言

互联网公司的分布式系统要对外提供可靠的服务,一般都会有一套高可用的架构,在CAP理论下,分区容忍性往往是不能舍弃的,所以对于系统可用性(Availability)、数据一致性(Consistency)的容忍程度,决定了能提供什么样的服务等级。简单的系统部署在单地域单机房,但是大型互联网公司,一般都不采用这样的单点架构,从同城双活到异地灾备,再到异地多活。Google在2015所发表的一篇论文《High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads》也介绍了类似的[……]

继续阅读

广告系统的平台架构与交互流程

商业化是互联网产品常用的流量变现手段,商业化平台(广告平台)其核心是围绕客户(商家、广告主等),用户(网民、用户产品使用者),平台三者展开的商业活动。在业界比较大的广告平台包括:百度凤巢,腾讯广点通,阿里妈妈,头条巨量等。
 
这些广告平台面向的业务领域大体相同,都在计算广告学的范畴内,不管是展示广告、效果广告、信息流广告,还是CPT、CPM、CPC模式,也不管是竞价RTB还是合约广告,其系统架构上必然有很多共性,本文就尝试抽象一种通用的广告系统架构,从工程角度阐述其模块构成,从模块交互流转角度介绍主业务流程。
 
下文提到的每一个模块都可以展开为一个超大的工程或者[……]

继续阅读

阿里云第一届PolarDB数据库性能大赛Java排名第一分享

参加天池大赛-阿里云第一届PolarDB数据库性能大赛,比赛以NVME Optane SSD为背景,在此之上开发单机存储引擎比拼性能,支持C++和Java语言。我的完赛成绩是Java语言排名第一,总排名20(共1653人参赛,队伍名称:neoremind),与C++第一差距在2.1%(<9s)。众所周知,类似的系统如果想榨干硬件,那么越贴近底层越好,Java存在一些天然的劣势,但是作为这么多年的资深JAVAer,还是想挑战一把。

本文是解题报告,源码地址https://github.com/neoremind/2018-polar-race,其中的架构设计是通用的,只是实现语言是Jav[……]

继续阅读

消息队列技术点梳理(思维导图版)

消息队列作为服务/应用之间的通信中间件,可以起到业务耦合、广播消息、保证最终一致性以及错峰流控(克服短板瓶颈)等作用。本文不打算详细深入讲解消息队列,而是体系化的梳理消息队列可能涉及的技术点,起到提纲挈领的作用,构造一个宏观的概念,使用思维导图梳理。
 
再介绍之前,先简短比较下RPC和消息队列。RPC大多属于请求-应答模式,也包括越来越多响应式范式,对于需要点对点交互、强事务保证和延迟敏感的服务/应用之间的通信,RPC是优于消息队列的。那么消息队列(下文也简称MQ,即Message Queue)可以看做是一种异步RPC,把一次RPC变为两次,进行内容转存,再在合适的时机投递出去[……]

继续阅读

Nesto – Hulu用户分析平台的OLAP引擎

本文主要介绍Hulu用户分析平台使用的OLAP引擎——Nesto(Nested Store),是一个提供近实时数据导入,嵌套结构、TB级数据量、秒级查询延迟的分布式OLAP解决方案,包括一个交互式查询引擎和数据处理基础设施。

 

1. 项目背景

Nesto起源于用户分析团队,业务上需要一个面向用户、分析型的产品,提供任意维度的Ad-Hoc交互式查询、导出数据,供运营、产品、第三方数据公司使用。
 
一个典型场景是:导出2018年1月看过《冰与火之歌》第7季第7集(S7E7)超过5次的新注册用户,包括用户名、email两个域,用于发送营销[……]

继续阅读

使用火焰图做性能分析

系统性能的评估维度可能很多,包括应用的吞吐量、响应时间、任务完成时间和资源利用率等。但是这些指标(metrics)仅仅是表象,一旦发现异常,如何从代码级别定位性能问题才是解决问题的关键,本文介绍了一种使用火焰图(Flame Graph)来做性能分析的方法,在实战中具备很高的可操作性和快速pinpoint问题的能力。

下面按照1. 发现问题,2. 分析问题,3. 解决问题三个章节展开,最后是4. Lesson Learned。

 

1. 发现问题

最近公司完成大数据集群的迁移,应用大多是Spark开发的,但是仍然存在一个老的每日运行的Hadoop任务突然发现指标异常,主要体现在[……]

继续阅读

浅谈从Google Mesa到百度PALO

最近在研究OLAP相关的技术,正好看到Google 2014年的论文《Mesa: Geo-Replicated, Near RealTime, Scalable Data Warehousing》,以及百度最近2017年开源的基于Mesa+Impala的实现系统PALO,本篇就尝试结合起来看下二者,主要是学习介绍性质的文章。
 

1. Mesa

Mesa是一个Google内部使用的数据仓库系统,从论文的标题可以抓住几个关键词:可实现跨DC复制的、近实时的、可扩展的。这几点算是Mesa的特色所在,同时和Mesa要解决的问题背景有很大关系,Mesa主要解决Google在线广告报表和[……]

继续阅读

JAVA并发编程实战笔记

第二次认真读了Doug Lea的Java Concurrency In Practice这本大作,记录笔记在此链接

[……]

继续阅读

Easy-mapper – 一个灵活可扩展的高性能Bean mapping类库

1 背景

做Java开发都避免不了和各种Bean打交道,包括POJO、BO、VO、PO、DTO等,而Java的应用非常讲究分层的架构,因此就会存在对象在各个层次之间作为参数或者输出传递的过程,这里转换的工作往往非常繁琐。
 
这里举个例子,做过Java的都会深有体会,下面代码的set/get看起来不那么优雅 🙁
ElementConf ef = new ElementConf();
ef.setTplConfId(tplConfModel.getTplConfIdKey());
ef.setTemplateId(tplConfModel.getTemplateId[......]<p class="read-more"><a href="https://neoremind.com/2016/08/easy-mapper-%e4%b8%80%e4%b8%aa%e7%81%b5%e6%b4%bb%e5%8f%af%e6%89%a9%e5%b1%95%e7%9a%84%e9%ab%98%e6%80%a7%e8%83%bdbean-mapping%e7%b1%bb%e5%ba%93/">继续阅读</a></p>

从JVM说起到初探Scala应用实践

最近在公司组内分享了一次关于JVM、Scala以及Spark介绍性质浅析的议题,这种形式的分享可以鞭策自己主动、自驱的完成一些既定目标,还能和有经验的人士一起交流,共享与学习是每一个做技术的同胞都应该拥抱的价值观。

PPT见连接,请点此

[……]

继续阅读

大塞车游戏活动的算法解

最近在公司组织的培训上,遇到了一个很有意思的算法题,这篇文章就借这个为题提供一个解。

解的代码用Java实现,并配有演示,已经放到了github上https://github.com/neoremind/big-traffic-jam-solver
 
首先感谢李培英老师,《职业化研讨》这门课非常值得公司内的一线管理人员去学习。在讲到职业化内涵里的“规则意识”一节时,让大家做了一个简单的大塞车游戏,规则如下:
 
1、邀请10人以上的学员(注意是偶数,当然越多越好),列成两队,面对面的坐在椅子上。
2、中间叫做“鸿沟&rdq[……]

继续阅读