2026/10/7 8:32:44
网站建设
项目流程
第一部分:C语言核心 1.1 指针 类型 写法 说明 指针数组 int *p[10]数组里存10个int指针 数组指针 int (*p)[10]指向含10个int的数组 函数指针 int (*f)(int)指向参数和返回值为int的函数
const修饰区别 :
const int *p:值不能改(指向常量的指针)int * const p:指针不能改(常量指针)二级指针 :要改指针本身时才用。
野指针 :定义就置NULL,free后也置NULL。
1.2 内存 区域 说明 堆 malloc/calloc/realloc/free,必须配对栈 局部变量、函数参数;别返回局部数组或局部变量地址 全局/静态 static延长生命周期,限制文件作用域
常见坑 :越界、泄漏、重复free、strcpy不检查长度。
1.3 字符串 char a[] = "abc"; // 可改(栈上数组) char *p = "abc"; // 不能改(指向常量区)sizeof算数组大小,strlen算到\0strncpy不一定补\0,用的时候手动补1.4 结构体 内存对齐 :按最大成员对齐,#pragma pack可改typedef struct Node { ... } Node;指针用->,变量用. 1.5 关键字 关键字 说明 static函数内静态变量只初始化一次;全局/函数限制本文件 extern声明外部变量/函数 volatile防编译器优化,硬件寄存器、中断、多线程共享会用到 register建议放寄存器,现在基本编译器自己决定
1.6 预处理与文件 #define SQ(x) ((x)*(x)) // 宏加括号,防副作用 #ifndef ... #define ... #endif // 头文件保护fopen模式 :r/w/a/r+/w+/a+
1.7 易错点 i++和++i;短路求值;运算符优先级数组传参退化成指针 ,sizeof变小函数返回局部指针 =悬空 第二部分:数据结构 2.1 线性表 结构 随机访问 插删 顺序表 O(1) O(n) 链表 O(n) O(1)(前提是找到前驱)
单链表带头结点边界少 双链表删除要改前驱后继 循环链表尾next指头 2.2 栈和队列 结构 特点 应用 栈 后进先出 括号匹配、表达式求值、DFS、函数调用 队列 先进先出 BFS、缓冲
循环队列 :
front==rear空(rear+1)%N==front满也可以加size标记 2.3 树 树 关键点 遍历 前中后序、层次;前+中或后+中可还原 BST 左小右大;中序有序;删除分叶子、单子、双子 AVL 平衡因子,旋转LL/RR/LR/RL 堆 完全二叉树,大顶/小顶;插入上浮,删除下沉 哈夫曼 带权路径最短 并查集 路径压缩 + 按秩合并
2.4 图 算法 说明 存储 邻接矩阵适合稠密,邻接表适合稀疏 DFS 栈/递归 BFS 队列 Dijkstra 非负权最短路 Floyd 多源最短路 Bellman-Ford 负权,可判负环 Prim 最小生成树,看点 Kruskal 最小生成树,看边+并查集 拓扑排序 入度0入队 关键路径 AOE,找最早/最晚开始时间
2.5 查找与排序 查找 :
二分:必须有序,注意mid和边界 哈希:除留余数、开放定址、链地址;装填因子 排序稳定性 :
稳定 不稳定 冒泡、插入、归并、基数 选择、快排、希尔、堆
复杂度 :
快排:分治,最坏O(n²),平均O(nlogn) 归并:稳定,需额外空间 堆排:O(nlogn),原地 第三部分:算法 算法 要点 复杂度 大O、均摊、空间换时间 递归 出口、重复计算、栈深度;分治:拆-治-合 贪心 局部最优推全局,要能证明;区间调度、霍夫曼 DP 状态、转移、初始化、遍历顺序;背包、LIS、LCS、编辑距离、区间DP、状压 回溯 路径、选择、撤销;N皇后、全排列、子集、组合 二分 找边界,左闭右开/左闭右闭统一 双指针 有序数组、链表环、滑动窗口 位运算 异或找单数、lowbit、状态压缩
刷题坑 :边界、空输入、溢出、重复元素、递归爆栈。
第四部分:Linux 4.1 常用命令 ls/cd/pwd/cp/mv/rm grep/find/awk/sed tar -zxvf / -zcvf ps/top/kill/kill -9 netstat/ss/lsof df/du/free4.2 权限 chmod 755/644;chown;umaskrwx对文件和目录含义不同。
4.3 进程线程 fork一次调用两次返回;父返回子pid,子返回0exec替换进程映像;wait/waitpid收僵尸孤儿进程被init收养;僵尸进程占PCB pthread_create/join;mutex锁;条件变量4.4 文件IO与网络 open/read/write/close;fd是小整数重定向> >> 2>&1;管道| 缓冲:全缓冲、行缓冲、无缓冲 网络 :
TCP三次握手、四次挥手;TIME_WAIT socket/bind/listen/accept/connect select/poll/epoll;epoll水平触发LT、边沿触发ET TCP粘包:定长、分隔符、长度字段 4.5 调试 gdb :break/run/next/step/print/btmakefile :目标、依赖、命令;变量、模式规则valgrind :查内存泄露第五部分:Java Web核心基础 5.1 Servlet生命周期 init() → service() → destroy()单例模式,注意线程安全 web.xml配置 vs@WebServlet注解,注解更方便5.2 Request & Response 对象 方法 说明 Request getParameter()取值 setAttribute()转发数据 Response getWriter().write()输出流 sendRedirect()重定向
5.3 会话管理 技术 说明 Cookie 存客户端,不安全,一般只存JSESSIONID Session 存服务器,依赖Cookie,登录状态全靠它 ServletContext 全局共享,整个应用就一个,别存大数据
5.4 Filter & Listener Filter :过滤器,拦截请求做登录校验、统一编码Listener :监听器,监听对象创建销毁或属性变化第六部分:IDEA与Maven 6.1 IDEA安装配置 安装路径严禁中文和空格 JDK配置:Project Structure → SDKs,选对版本 Maven配置:Settings → Build Tools → Maven,修改本地仓库路径(settings.xml) 6.2 常用快捷键 快捷键 功能 Ctrl+Shift+F10运行当前类 Alt+Enter万能修复键,自动导包、补全方法 Ctrl+Alt+L格式化代码 Shift+F6重构改名,变量类名同步修改
6.3 调试技巧 快捷键 功能 F8(StepOver)单步执行不进入方法 F7(StepInto)进入方法内部查看逻辑 Alt+F8计算表达式,实时查看变量值
6.4 Maven核心概念 概念 说明 POM.xml 项目对象模型,所有依赖在此配置 坐标 groupId + artifactId + version,唯一标识jar包 仓库 本地仓库(.m2),远程仓库必须配阿里云镜像
依赖管理 :
dependency:引入jar包scope:compile(默认)、test(junit专用)、provided(servlet api专用)依赖传递:A依赖B,B依赖C,则A自动拥有C,冲突时遵循就近原则 生命周期 :
clean → compile → package → install第七部分:Spring Boot 7.1 核心优势 约定大于配置 ,起步依赖Starter自动引入所需jar包自动配置 AutoConfiguration,省去大量xml配置内嵌Tomcat ,打jar包直接java -jar运行,不用部署war包7.2 配置文件 # application.yml/properties@Value("${key}"):读取单个配置值@ConfigurationProperties:批量映射配置到Bean对象7.3 整合其他框架 Starter 说明 spring-boot-starter-webWeb开发全家桶,自动配好SpringMVC+Tomcat spring-boot-starter-test单元测试神器,自带MockMvc
7.4 注解开发 @RestController:直接返回JSON,省去视图解析器@GetMapping/@PostMapping:替代@RequestMapping指定请求方式参数接收 :简单类型直接接,POJO自动封装,@RequestBody接JSON第八部分:MyBatis 8.1 核心概念 ORM :对象关系映射,Java对象与数据库记录对应。
SqlSessionFactoryBuilder → SqlSessionFactory → SqlSessionSqlSession线程不安全 ,需及时关闭。
8.2 Mapper代理开发 接口名等于XML的namespace 方法名等于id 参数类型等于parameterType #{}是占位符防注入,${}是字符串拼接有注入风险,仅排序时使用 8.3 动态SQL <if>条件判断,自动去除多余AND/OR<foreach>批量删除插入神器,处理id in场景8.4 缓存 级别 说明 一级缓存 SqlSession级别,默认开启 二级缓存 Mapper级别,需手动配置,分布式环境易脏数据慎用
第九部分:未学技术速览 技术 核心概念 Nginx 反向代理服务器,用于负载均衡和动静分离。配置文件nginx.conf结构复杂,upstream块用于配置集群。静态资源处理性能优于Tomcat,部署时通常置于前端。 Redis 内存数据库,主要用作缓存。采用Key-Value结构,支持String/List/Hash/Set/ZSet数据类型。持久化机制包含RDB和AOF,分布式锁功能也依赖此技术。 Docker 容器化技术,通过镜像生成容器。Dockerfile编写构建指令,docker-compose编排多容器服务。作为部署工具可免除环境配置步骤。 RabbitMQ 用于异步解耦。流程为生产者发送至交换机,再路由至队列由消费者处理。适用于秒杀系统等流量削峰场景,需处理消息丢失和重复消费问题。 MyBatisPlus MyBatis增强工具,内置通用CRUD接口免去简单SQL编写。条件构造器Wrapper支持链式拼接条件,代码生成器可自动创建实体类减少手写工作量。 Git 分布式版本控制系统。基本流程为git add、git commit、git push。分支管理涉及branch创建、merge合并及冲突解决,代码托管平台常用GitHub或Gitee。 Spring 核心是IOC控制反转和AOP面向切面。IOC通过Bean容器管理对象生命周期,AOP将日志、事务、权限从业务代码中剥离。动态代理分JDK代理(基于接口)和CGLIB(基于子类继承)。声明式事务用@Transactional注解,传播行为有REQUIRED和REQUIRES_NEW等。 SpringCloud 微服务架构全家桶。核心组件包括Nacos注册中心、Sentinel限流熔断、Gateway网关。目前仅了解基本概念,尚未进行实际开发操作。