后端路线 Part1 MySQL
系列:后端路线 · Part 1数据持久化是后端的基石。本篇目标:能独立写出建表语句、熟练使用 CRUD、理解索引与事务、说清隔离级别,并应付常见面试题。更高级的主题(锁、执行计划、分库分表、主从复制等)留待后续。 0. 先建立直觉MySQL 是一个关系型数据库,数据按「库 → 表 → 行」组织。你通过 SQL(结构化查询语言) 与它对话,本质是向数据库下达”建什么、存什么、改什么、查什么”的指令。 一条 SQL 请求的旅程(面试常问):客户端 → 连接器 → 查询缓存(8.0 已移除)→ 分析器(词法/语法)→ 优化器(选执行计划)→ 执行器 → 存储引擎(InnoDB)→ 落盘。 为什么默认引擎是 InnoDB?因为它支持事务、行级锁、外键、崩溃恢复,是绝大多数业务场景的首选。MyISAM 不支持事务和行锁,已逐渐被淘汰。 1. 建表语句(DDL)DDL(Data Definition Language)负责定义结构:CREATE / ALTER / DROP。 1.1...
Netty 详解:从 I/O 多路复用到写出第一个服务端
Netty 是当前 Java 生态中应用最广泛的异步事件驱动网络框架,被广泛用于 RPC(如 Dubbo、gRPC-Java 的传输层)、消息中间件(如 RocketMQ)以及高并发网关等基础设施。对于以 Java 后端为主技术栈的开发者而言,理解 Netty 的运作机理具有直接的工程价值。 本文以”问题驱动”的方式展开:先厘清 Netty 所解决的问题,再逐层深入 I/O 多路复用与 epoll 的底层原理、主从 Reactor 线程模型、套接字 bind 与 listen 的语义差异、TCP_NODELAY 与 Nagle 算法的取舍、粘包拆包的处理范式、ByteBuf 的内存模型,以及工程实践中常见的典型错误。文中对以下三个易被忽视的关键问题给出专门剖析,并将其置于对应的技术上下文中,而非作为附录: Linux 平台上 Netty 实现”少量线程承载海量连接”的底层机理(根植于 epoll); ServerBootstrap.bind(8080) 所完成的实际操作,及其与”开始监听”之间的语义关系; 实时通信场景下...
Go 语言学习(一)基础语法
摘要:本文是 Go 语言学习系列的第一篇,覆盖**第 1 章(基础语法)**的全部四大板块——变量与常量、基本类型、运算符、流程控制。内容从「如何声明一个变量」讲起,延伸到 Go 的整数宽度哲学、string 的不可变本质、for 为何是唯一循环、以及常被其他语言习惯带偏的若干写法。每一板块都配可运行代码、对比表格、速记钩子,并在文末给出易错 Checklist 与自测题。读完你应能正确、地道地写出 Go 最基础的语句,并避开初学最高频的几个坑。 💡 读前须知:每个可运行的 Go 程序都以 package main 开头,含 func main() 作为入口,用 import 引入标准库包(如 fmt)。下文示例默认写在 main 包内,为节省篇幅常省略 package/import 头。 目录 1.1 变量与常量 1.1.1 var 声明与零值 1.1.2 短声明 := 1.1.3 多重赋值 1.1.4 const 与 iota 1.2 基本类型 1.2.1 布尔与字符串 1.2.2 整数类型 1.2.3 浮点与复数 1.2.4 字节与字符:byte...
后端路线 Part2 Spring Boot
系列:后端路线 · Part 2上一篇(MySQL)让你会存数据。这一篇让你会”写程序去操作数据”。Spring Boot 是 Java 后端事实标准框架,目标:能搭起一个项目、写出接收 HTTP 请求并读写 MySQL 的接口。 1. 为什么是 Spring Boot?Spring 是庞大的 Java 企业级框架,但”原生 Spring”配置繁琐。Spring Boot 的核心思想是”约定优于配置 + 自动装配”: 内嵌 Tomcat,无需单独部署 Web 容器,java -jar 直接跑。 starter 依赖一键引入常用能力(web、mysql、mybatis…)。 自动根据 classpath 配置好 Bean,几乎零 XML。 面试常问:”Spring 和 Spring Boot 区别?” 答:Spring Boot 是基于 Spring 的快速开发脚手架,通过自动配置和起步依赖极大简化了搭建与配置。 2. 项目结构(标准分层)12345678910111213src/main/java/com/example/demo/├──...
后端路线 Part3 API 与 HTTP 协议
系列:后端路线 · Part 3框架(Part 2)让你能写接口,但接口”长什么样、前后端怎么对话”由协议决定。本篇讲清 HTTP 与 RESTful API——这是前后端协作的”普通话”。 1. HTTP 是什么?HTTP(超文本传输协议)是客户端与服务器之间请求/响应的文本协议,无状态(每次请求独立,服务器不记得你上一次是谁——需靠 Cookie/Token 弥补)。默认端口 80,HTTPS = HTTP + TLS 加密,端口 443。 2. 一个请求长什么样123456POST /api/user/login HTTP/1.1Host: api.example.comContent-Type: application/jsonAuthorization: Bearer <token>{"username":"zhang","password":"123456"} 请求行:方法 + 路径 +...
后端路线 Part4 部署与接口调用
系列:后端路线 · Part 4前面你写出了能跑的 Spring Boot 接口。本篇讲”怎么把它放到服务器上稳定运行”,以及”除了浏览器,还能怎么调它”。这是从”本地 demo”到”真能上线”的关键一跃。 1. 从本地到服务器:发生了什么?本地:mvn spring-boot:run → 进程在 IDE 里跑,你用 localhost 访问。服务器:把项目打包成 jar,传到 Linux,用命令在后台跑,别人通过服务器 IP/域名访问。 核心差别只有一个字:后台常驻。本地关了终端程序就停,服务器要”关了 SSH 还活着”。 2. 打包1mvn clean package -DskipTests # 生成 target/demo-0.0.1.jar -DskipTests 跳过测试加速;生产应跑测试。产物是可执行 jar(内嵌 Tomcat,自带运行环境)。 3. 服务器运行(三种方式)方式一:nohup(最简单,临时用)1nohup java -jar demo-0.0.1.jar > app.log 2>&1...
后端路线 · 一篇通关(图多字少)
把「全链路 / MySQL / Spring Boot / API·HTTP / 部署 / 完整示例 / 调试」浓缩成一图流。看不懂的细节回看各分篇。 0. 全链路一览 你写的后端 = 中间那一层:北接客户端(HTTP),南接存储(MySQL/Redis)。 1. MySQL 基础建表 —— 一张能打的 user 表: CRUD —— 增删改查,Update/Delete 必须带 WHERE: 索引 —— B+Tree 有序查找;组合索引遵循最左前缀;注意失效场景与回表: 事务 —— ACID 靠 undo/redo log + 锁/MVCC;转账两步同生共死: 隔离级别 —— 四种级别 × 三类问题;MySQL 默认 RR: 2. Spring Boot 后端框架分层 —— Controller 接活 → Service 干活 → Mapper 存取 → Entity 搬运: 核心注解 —— 启动/装配 与 Web/接口...
后端路线 全链路概览
系列:后端路线 · 导引篇在动手写 SQL、搭框架之前,先看清”后端”到底在做什么,一次请求从浏览器到数据库再回来,中间经历了什么。本篇建立全局地图,后续每一篇都是地图上的一个站点。 1. 后端在解决什么问题?前端(网页 / App)负责”长什么样、怎么交互”;后端负责”数据从哪来、业务逻辑怎么算、数据存哪去”。 一句话:后端 = 接收请求 → 处理业务 → 读写数据 → 返回结果 的那台(或那群)服务器上跑的程序。 2. 一次请求的全链路以”用户在网页点击登录”为例,请求穿过如下层级: 1234567891011121314151617浏览器/App │ HTTP 请求 (POST /api/login) ▼负载均衡 / 网关 (Nginx / 网关) ── 分发流量、HTTPS 卸载、限流 │ ▼后端服务 (Spring Boot 应用) ── 校验参数、查库、写业务 │ ├──────────────► 缓存 (Redis) ── 热点数据加速 │ ...
后端路线 完整示例 用户管理系统
系列:后端路线 · 完整示例把 Part 1(MySQL) ~ Part 4(部署) 全部焊死在一个项目里。这是一个复制即可跑的最小用户管理系统:建表 → 实体 → Mapper → Service → Controller → 接口自测。读完你已具备独立交付一个后端模块的能力。 1. 功能清单 接口 方法 路径 说明 注册用户 POST /api/users 新增 用户列表 GET /api/users 分页查询 用户详情 GET /api/users/{id} 按主键查 更新用户 PUT /api/users/{id} 改资料 删除用户 DELETE /api/users/{id} 逻辑/物理删除 按名查询 GET /api/users?username=xxx 条件查询 2. 建表 SQL(Part 1 的加强版)123456789101112CREATE TABLE `user` ( `id` BIGINT NOT NULL...
后端路线 常见问题与调试技巧
系列:后端路线 · 收官篇前面四篇 + 一个完整示例,你已经能写出来。但”写得出来”和”跑得通”之间,隔着一堆坑。本篇按”从外到内”的排查顺序,把最高频的问题与对应解法列给你。 1. 排查总原则:由外到内,逐层缩小1网络/防火墙 → 服务是否在跑 → 路由(404) → 参数(400) → 业务/数据库(500) → 数据正确与否 不要一上来就改代码。先确认”请求到底有没有到应用”,再往里查。 2. 连不上 / 超时(请求根本没反应) 现象 可能原因 排查/解决 Connection refused 服务没启动 / 端口错 ps -ef|grep java 看进程;确认 server.port 云上访问不了 安全组未放行端口 云控制台放行 8080/对应端口 Could not connect to MySQL 数据库地址/账号错、MySQL 未起、防火墙拦 3306 本地 mysql -u root -p 试连;检查 url 与 serverTimezone 本地能连、服务器不能连 DB 数据库只允许...




