ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Java实训阶段查漏补缺复习笔记1

Java实训阶段查漏补缺复习笔记1 第一部分C语言核心1.1 指针类型写法说明指针数组int *p[10]数组里存10个int指针数组指针int (*p)[10]指向含10个int的数组函数指针int (*f)(int)指向参数和返回值为int的函数const修饰区别const int *p值不能改指向常量的指针int * const p指针不能改常量指针二级指针要改指针本身时才用。野指针定义就置NULLfree后也置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/a1.7 易错点i和i短路求值运算符优先级数组传参退化成指针sizeof变小函数返回局部指针 悬空第二部分数据结构2.1 线性表结构随机访问插删顺序表O(1)O(n)链表O(n)O(1)前提是找到前驱单链表带头结点边界少双链表删除要改前驱后继循环链表尾next指头2.2 栈和队列结构特点应用栈后进先出括号匹配、表达式求值、DFS、函数调用队列先进先出BFS、缓冲循环队列frontrear空(rear1)%Nfront满也可以加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、状态压缩刷题坑边界、空输入、溢出、重复元素、递归爆栈。第四部分Linux4.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/644chownumaskrwx对文件和目录含义不同。4.3 进程线程fork一次调用两次返回父返回子pid子返回0exec替换进程映像wait/waitpid收僵尸孤儿进程被init收养僵尸进程占PCBpthread_create/joinmutex锁条件变量4.4 文件IO与网络open/read/write/closefd是小整数重定向 21管道|缓冲全缓冲、行缓冲、无缓冲网络TCP三次握手、四次挥手TIME_WAITsocket/bind/listen/accept/connectselect/poll/epollepoll水平触发LT、边沿触发ETTCP粘包定长、分隔符、长度字段4.5 调试gdbbreak/run/next/step/print/btmakefile目标、依赖、命令变量、模式规则valgrind查内存泄露第五部分Java Web核心基础5.1 Servlet生命周期init() → service() → destroy()单例模式注意线程安全web.xml配置 vsWebServlet注解注解更方便5.2 Request Response对象方法说明RequestgetParameter()取值setAttribute()转发数据ResponsegetWriter().write()输出流sendRedirect()重定向5.3 会话管理技术说明Cookie存客户端不安全一般只存JSESSIONIDSession存服务器依赖Cookie登录状态全靠它ServletContext全局共享整个应用就一个别存大数据5.4 Filter ListenerFilter过滤器拦截请求做登录校验、统一编码Listener监听器监听对象创建销毁或属性变化第六部分IDEA与Maven6.1 IDEA安装配置安装路径严禁中文和空格JDK配置Project Structure → SDKs选对版本Maven配置Settings → Build Tools → Maven修改本地仓库路径settings.xml6.2 常用快捷键快捷键功能CtrlShiftF10运行当前类AltEnter万能修复键自动导包、补全方法CtrlAltL格式化代码ShiftF6重构改名变量类名同步修改6.3 调试技巧快捷键功能F8(StepOver)单步执行不进入方法F7(StepInto)进入方法内部查看逻辑AltF8计算表达式实时查看变量值6.4 Maven核心概念概念说明POM.xml项目对象模型所有依赖在此配置坐标groupId artifactId version唯一标识jar包仓库本地仓库.m2远程仓库必须配阿里云镜像依赖管理dependency引入jar包scopecompile默认、testjunit专用、providedservlet api专用依赖传递A依赖BB依赖C则A自动拥有C冲突时遵循就近原则生命周期clean → compile → package → install第七部分Spring Boot7.1 核心优势约定大于配置起步依赖Starter自动引入所需jar包自动配置AutoConfiguration省去大量xml配置内嵌Tomcat打jar包直接java -jar运行不用部署war包7.2 配置文件# application.yml/propertiesValue(${key})读取单个配置值ConfigurationProperties批量映射配置到Bean对象7.3 整合其他框架Starter说明spring-boot-starter-webWeb开发全家桶自动配好SpringMVCTomcatspring-boot-starter-test单元测试神器自带MockMvc7.4 注解开发RestController直接返回JSON省去视图解析器GetMapping/PostMapping替代RequestMapping指定请求方式参数接收简单类型直接接POJO自动封装RequestBody接JSON第八部分MyBatis8.1 核心概念ORM对象关系映射Java对象与数据库记录对应。SqlSessionFactoryBuilder → SqlSessionFactory → SqlSessionSqlSession线程不安全需及时关闭。8.2 Mapper代理开发接口名等于XML的namespace方法名等于id参数类型等于parameterType#{}是占位符防注入${}是字符串拼接有注入风险仅排序时使用8.3 动态SQLif条件判断自动去除多余AND/ORforeach批量删除插入神器处理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用于异步解耦。流程为生产者发送至交换机再路由至队列由消费者处理。适用于秒杀系统等流量削峰场景需处理消息丢失和重复消费问题。MyBatisPlusMyBatis增强工具内置通用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网关。目前仅了解基本概念尚未进行实际开发操作。
返回列表