魔法书
关于
标签
分类
HTML
声明 ‹!DOCTYPE›
注释 ‹!-- --›
标签 ‹›‹/›
文档
根标签 ‹html›
头部标签 ‹head›
标题 ‹title›
基本 URL 链接 ‹base /›
资源引用 ‹link/›
元信息 ‹mata /›
样式 ‹style›
脚本 ‹script›
脚本兼容性 ‹noscript›
主体标签 ‹body›
全局属性
块级标签
语义化分区 ‹header› ‹nav› ‹aside› ‹main› ‹section› ‹article› ‹figure› ‹figcaption› ‹hgroup› ‹summary› ‹details› ‹footer›
正文标题 ‹h1› - ‹h6›
正文段落 ‹p›
分割线 ‹hr›
列表 ‹ul› - ‹li›|‹ol› - ‹li› | ‹dl› - ‹dt›‹dd›
分区 ‹div›
行内标签
内容容器 ‹span›
换行标签 ‹br›
超链接 ‹a›
内容ID ‹data›
格式化文本
文本引用
文本修饰
文本标识
特殊文本
特殊字符
图片标签 ‹img›
多媒体标签 ‹audio› ‹vedio› ‹embed› ‹object› ‹param›
加载 ‹source› ‹track›
进度 / 值显示 ‹meter› ‹progress›
图片适配显示 ‹picture›
表格 ‹table› ‹th› ‹tr› ‹td›
表格分层 ‹caption› ‹thead› ‹tbody› ‹tfoot›
表格列分组 ‹col› ‹colgroup›
表单 ‹form›
标签 ‹label›
表单控件 ‹input›
单行文本框 ‹input type='text'›
数字 ‹input type='number'›
密码 ‹input type='password'›
电子邮箱 ‹input type='email'›
电话号码 ‹input type='tel'›
日期 ‹input type='date'›
按钮 ‹input type='button'›
单选按钮 ‹input type='radio'›
重置按钮 ‹input type='reset'›
复选框 ‹input type='checkbox'›
提交按钮 ‹input type='submit'›
图片提交按钮 ‹input type='image'›
颜色选择器 ‹input type='color'›
文件上传 ‹input type='file'›
隐藏数据 ‹input type='hidden'›
时间 ‹input type='time'›
日期和时间 ‹input type='datetime-local'›
年份或月份 ‹input type='month'›
区域值 ‹input type='range'›
搜索 ‹input type='search'›
链接 ‹input type='url'›
星期 ‹input type='week'›
下拉列表 ‹select› ‹option›
分组 ‹optgroup›
选项列表 ‹datalist›
文本域 ‹textarea›
按钮 ‹button›
标签分组 ‹fieldset› ‹legend›
计算或用户操作的结果 ‹output›
对话框 ‹dialog›
画布 ‹canvas›
可伸缩矢量图形 ‹svg›
地图 ‹map› ‹area›
插槽 ‹slot›
DOM 文档对象模型
EventTarget 对象
Node 对象
Attr 对象
CDATASection 对象
CharacterData 对象
Comment 对象
ProcessingInstruction 对象
Element 对象
DocumentFragment 对象
Document 对象
XMLDocument 对象
DocumentType 对象
DOMString 对象
DOMStringList 对象
DOMTimeStamp 对象
DOMTokenList 对象
DOMException 对象
DOMImplementation 对象
Event 对象
CustomEvent 对象
Window 对象
HTMLCollection 对象
MutationObserver 对象
MutationRecord 对象
NodeFilter 对象
NodeIterator 对象
NodeList 对象
Promise 对象
Range 对象
Text 对象
TreeWalker 对象
URL 对象
Worker 对象
MyBatis
框架搭建 [idea]
自动补全
框架搭建 [eclipse]
XML Catalog 离线校验(自动补全)
mybatis-config 映射配置
属性(property)
环境配置(environments)
设置(settings)
实体类设置别名(typeAliases)
Mapper 注册与绑定(mappers)
数据库厂商标识(databaseIdProvider)
会话工厂(SqlSessionFactory)
数据库交互(SqlSession)
MyBatisUtil 工具类
事务管理
Mapper接口 & 映射
映射调用方式
数据库查询 ‹select›
参数查询与模糊查询
多参数查询
数据库添加 ‹insert›
返回数据主键
数据库删除 ‹delete›
数据库更新 ‹update›
Mapper标签(xml)
查询 ‹select›
插入和更新 ‹insert›、‹update›
主键返回 ‹selectKey›
SET子句 ‹set›
删除 ‹delete›
WHERE子句 ‹where›
条件 ‹if›
首尾删除与添加 ‹trim›
条件分支 ‹choose› ‹when› ‹otherwise›
循环迭代 ‹foreach›
SQL 片段 ‹sql›
SQL 片段引用 ‹include›
字符串预处理
映射集 ‹resultMap›
构造方法 ‹constructor›
结果映射 ‹id› ‹result›
关联 ‹association›
关联查询(一对一)
集合 ‹collection›
集合查询(一对多)
鉴别器 ‹discriminator›
延迟加载(按需关联/懒加载)
继承
resulType 和 resultMap 的区别
缓存 ‹cache›
缓存引用 ‹cache-ref›
绑定变量 ‹bind›
映射器注解
二级缓存(@CacheNamespace)
缓存引用(@CacheNamespaceRef)
属性(@Property)
SQL 语句注解(@Select @Insert @Delete @Update)
可选属性(@Options)
构造方法(@ConstructorArgs @Arg)
结果类型(@ResultType)
数据集合(@Results @Result @ResultMap)
一对一和一对多(@One @Many)
鉴别器(@TypeDiscriminator @Case)
Map 结果键值(@MapKey)
动态SQL构建(@SelectProvider @InsertProvider @UpdateProvider @DeleteProvider )
参数(@Param)
主键获取(@SelectKey)
缓存刷新(@Flush)
自定义语句驱动注解(@Lang)
缓存
本地缓存/一级缓存 (local cache)
二级缓存
自定义缓存
Spring
控制反转(IOC)/依赖注入(DI)
ApplicationContext 容器
Web
容器监听器(ContextLoaderListener)
Web MVC
配置xml
web.xml
配置前端控制器 ‹servlet› ‹servlet-mapping›
加载顺序 ‹load-on-startup›
拦截器 ‹filter› ‹filter-mapping›
初始化spring配置文件 ‹context-param› ‹listener›
dispatcher-servlet.xml
静态资源映射 ‹mvc∶resources›
视图解析器(ViewResolver)
控制器映射(HandlerMapping)
SimpleUrlHandlerMapping
BeanNameUrlHandlerMapping
后端控制器(Controller)
基于json格式的mvc交互
文件上传 MultipartResolver
拦截器 ‹mvc∶interceptors›
使用注解
声明后端控制器(@Controller)
映射请求地址(@RequestMapping)
获取请求参数(@RequestBody @RequestParam)
@RequestParam
@RequestBody
@RequestPart
校验(@Valid,@Valided)
返回JSON / XML数据 (@ResponeBody)
数据返回控制器(@RestController)
修饰类和方法 (@ResponseStatus)
参数预加载(@ModelAttribute)
数据绑定(@InitBinder)
数据共享(@SessionAttributes)
异常处理器 (@ExceptionHandler)
全局处理器(@ControllerAdvice)
全局异常处理
自定义异常的处理
全局数据绑定
全局数据预处理
跨域资源共享 (@CrossOrigin)
URI属性注解(@PathVariable,@RequestHeader,@CookieValue)
视图路径解析
以'/'开头丨${pageContext.request.contextPath}
不以'/'开头丨‹base›标签指定路径
视图返回
视图保护
转发和重定向
控制器全局参数
参数接收
解决参数传递乱码
参数传递
Ajax交互
HttpMessageConverter
SSM 框架整合
SSM 前后端数据交互对接
响应体空值处理
SSM 全局异常统一处理
集成 Hibernate Validator 校验框架
校验(@Valid @Valided)
顺序校验(@GroupSequence)
动态顺序校验(@GroupSequenceProvider)
自定义校验注解
参数校验异常处理
框架搭建 [idea]
DI 配置xml(applicationContext.xml)
对象 ‹bean›
实例化
自定义作用域
初始化和销毁
启动和停止
继承
核心接口 BeanFactory
FactoryBean
设值注入 ‹property›
注入实体对象 ‹props›
自动装配模式
构造注入 ‹constructor-arg›
方法注入 ‹lookup-method/›
方法替换 ‹replaced-method›
装配限定 ‹qualifier›
元数据 ‹meta›
对象别名 ‹alias›
多配置文件加载 ‹import›
注解扫描器 ‹context:component-scan›
读取数据库连接配置(PropertyPlaceholderConfigurer)
配置数据连接池(DriverManagerDataSource)
自定义数据库连接池(DruidDataSource)
DBCP数据库连接池(BasicDataSource)
C3P0数据库连接池(ComboPooledDataSource)
DI 使用注解
作用域(@Scope)
预加载(@Lazy)
缓存控制(@CacheConfig @EnableCaching @Caching @Cacheable @CachePut @CacheEvict)
空值标记(@NonNull @NonNullApi @NonNullFields @Nullable)
条件导入(@Conditional)
分组校验(@Validated)
对象注入(@Component)
属性注入(@Value)
@value使用外部属性配置文件
引入外部配置文件(@PropertySource)
自动装配(@Autowired @Resource @Inject)
注入优先(@Primary)
注入区分(@Qualifier)
注解扫描器 (@ComponentScan)
自定义过滤规则(@Filter)
配置beans容器(@Configuration)
创建bean(@Bean)
初始化和销毁(@PostConstruct 和 @PreDestory)
异步方法(@Async)
开启异步支持-多线程(@EnableAsync)
开发环境配置指定(@Profile和@ActiveProfiles)
计划任务(@Scheduled @EnableScheduling)
AOP
AspectJ框架实现AOP
AspectJ框架 配置xml
定义切面和切入点 ‹aop∶aspect› ‹aop∶pointcut›
切入点表达式
组合切入点表达式
命名及匿名切入点
前置通知 ‹aop∶before›
后置通知 ‹aop∶afterreturning›
环绕通知 ‹aop∶around›
异常通知 ‹aop∶afterthrowing›
最终通知 ‹aop∶after›
定义通知器 ‹aop∶advisor›
定义事务配置 ‹tx∶advice›
AspectJ框架 使用注解
动态开启AOP(@EnableAspectJAutoProxy)
定义切面和切入点(@Pointcut @Aspect)
通知注解
前置通知(@Before)
后置通知(@AfterReturning)
环绕通知(@Around)
异常通知(@AfterThrowing)
最终通知(@After)
通知参数
自动传参
集成MyBatis
applicationContext.xml中配置
接口映射配置器(MapperFactoryBean)
接口映射批量扫描器(MapperScannerConfigurer)
事务
TransactionManager 事务管理器
事务属性
事务状态
声明式事务(xml & 注解)
配置xml方式
创建事务管理器
使用注解方式(@Transactional)
环绕通知使用事务(@Around)
编程式事务(TransactionTemplate & PlatformTransactionManager)
Spring Boot
框架搭建 [idea]
Test 测试类
单元测试
断言(Assertions)
前置条件(Assumptions)
参数化测试(@ParameterizedTest)
功能测试
切片测试
创建测试上下文(@SpringBootTest)
加载原生web资源 @WebAppConfiguration
应用上下文配置类(ConfigurableApplicationContext)
核心注解(@SpringBootApplication)
自动配置类加载(@EnableAutoConfiguration)
自动导入包(@AutoConfigurationPackage)
类导入(@Import)
条件导入(@Conditional)
全局配置(application.properties)
多环境配置切换
属性加密
日志配置
属性松散绑定规则
全局配置属性注入
逐个注入(@Value)
批量注入(@ConfigurationProperties @EnableConfigurationProperties)
自定义配置文件引用(@PropertySource)
属性转换
自定义配置解析类(@ConfigurationPropertiesBinding)
外部上下文配置导入(@importResource)
Lombok 实体类简化注解
静态资源规则
错误页面
请求拦截(HandlerInterceptor & Filter & @WebFilter)
文件上传(MultipartFile)
忽略警告(@SuppressWarnings)
集成JSP
集成 Mybatis
mapper注册(@Mapper @MapperScan)
使用第三方数据连接池(druid)
mybatis 逆向工程生成配置
前后端数据交互对接
全局响应体处理器(ResponseBodyAdvice)
取消封装
响应体空值处理
全局异常处理类
集成 Validation 校验框架
参数校验异常处理
MySQL(Beta)
命令操作
登录命令
在线安装
手动安装
设置环境变量
数据依赖
函数依赖(Functional Dependency)
多值依赖(Multivalued Dependency)
连接依赖(Join Dependency)
键/码/关键字
范式
命名规范
设计规范
数据表对应关系
语句规范
行为规范
注释
数据类型
类型约束
类型使用规范
JSON 数据操作
char 和 varchar的区别
运算符
运算优先级
函数
日期函数
字符串函数
字符串比较
正则表达式
数学函数
比较函数
窗口函数
可加载函数
流量控制函数
类型转换函数
字符集转换
XML 函数
位函数
加密和压缩函数
锁定功能函数
信息函数
JSON 函数
创建 JSON 值
搜索 JSON 值
修改 JSON 值
返回 JSON 值
JSON 表函数
聚合函数
其他函数
SQL 语言类型
全局权限用户表(DCL)
创建权限用户(CREATE USER/INSERT/GRANT)
修改权限用户名(RENAME USER)
修改root用户密码(set password for/mysqladmin/UPDATE/ALTER)
修改权限用户密码(set password for/UPDATE/ALTER/GRANT)
密码重置
删除权限用户(DELETE FROM/DROP USER)
数据库用户权限表(DCL)
权限分布
查看权限(SELECT/SHOW GRANTS FOR)
增加权限(GRANT priv_type ON)
删除权限(REVOKE priv_type ON)
原子数据定义语句(原子DDL)
在 DDL 语句中的变化
支持的存储引擎
查看 DDL 日志
DATABASE 数据库(DDL)
字符集(character set)
查看字符集
设置字符集
utf8 和 utf8mb4
校验规则(collation)
查看检验规则
设置校验规则
utf8_bin、utf8_general_ci(utf8_general_cs)、utf8_unicode_ci(utf8_unicode_cs)
utf8mb4_general_ci 和 utf8mb4_unicode_ci
事务
锁
储存引擎
约束
Table 数据表(DDL)
创建数据表(CREATE TABLE)
查看数据表(SHOW TABLE/DESC/SHOW CREATE TABLE/SHOW COLUMNS FROM
修改数据表(ALTER TABLE)
添加列字段(ADD)
修改列字段(RENAME TO/MODIFY/CHANGE)
删除列字段(DROP)
添加约束
默认值约束(DEFAULT)
非空约束(NOT NULL)
主键约束(PRIMARY KEY)
自增约束(AUTO_INCREMENT)
外键约束(FOREIGN KEY … REFERENCES …)
唯一约束(UNIQUE)
检查约束(CHECK)
定义约束名(ADD CONSTRAINT)
删除约束
列级约束(DEFAULT、NOT NULL、AUTO_INCREMENT)
表级约束(PRIMARY KEY、FORERGN KRY、UNIQUE、CHECK)
添加行数据(INSERT)
从其他表的数据添加(INSERT TABLE … SELECT)
使数据插入或更新(ON DUPLICATE KEY UPDATE)
为单行或单列行插入数据(INSERT … SET)
修改行数据(UPDATE)
删除行数据(DELETE FROM)
复制数据表
清空数据表(TRUNCATE)
删除数据表(DROP TABLE)
MySQL SELECT 查询语句(DQL)
查询限制
条件(WHERE)
模糊查询(LIKE/NOT LIKE)
内置函数(LOCATE、POSITION、INSTR、FIND_IN_SET)
正则查询
正则关键字(REGEXP/RLIKE/NOT REGEXP/NOT RLIKE)
正则函数 [ REGEXP_INSTR()、REGEXP_LIKE()、REGEXP_REPLACE()、REGEXP_SUBSTR() ]
分组(GROUP BY)
筛选(HAVING)
排序(ORDER BY)
文件排序(filesort)
分页(LIMIT)
合并行重复(DISTINCT)
合并结果集(UNION [DISTINCT]/UNION ALL)
连接(JOIN)
自连接
内连接([INNER] JOIN)
左(外)连接(LEFT [OUTER] JOIN)
右(外)连接(RIGHT [OUTER] JOIN)
等值连接查询
子查询(嵌套查询)
带有 ALL(SOME)/ANY 的子查询
带有 [NOT] IN 的子查询
带有 [NOT] EXISTS 的子查询
相关子查询
派生表
横向派生子查询
索引
查看索引(SHOW INDEX)
创建索引(CREATE INDEX)
主键索引(PRIMARY KEY)
唯一索引(UNIQUE)
普通索引(INDEX/KEY)
全文索引(FULLTEXT)
系统变量与自定义配置
索引重建
检索模式
自然语言模式(IN NATURAL LANGUAGE MODE)
布尔模式(IN BOOLEAN MODE)
查询扩展模式(WITH QUERY EXPANSION/IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION)
反向索引(倒排索引)-› [InnoDB]
Auxiliary Table 辅助表
分词法
全文停止词
全文解析器
ngram
MeCab
空间索引(SPATIAL)
删除索引(DROP INDEX )
单列 -› 多列(组合/复合/联合)索引
替代方案
最左匹配原则
有序索引排序
降序索引(Descending Indexes)
索引条件下推
前缀索引
函数索引
在 JSON 数据查询的使用
生成列(Generated Column)
查看生成列
模拟函数索引
索引隐藏
索引覆盖
索引优化
数据储存模式与读取
InnoDB 引擎
聚簇索引(聚集索引/主键索引/主索引)
非聚簇索引(非聚集索引/二级索引/辅助索引/辅助键索引)
MyISAM 引擎
非聚簇索引(非聚集索引/辅助索引/辅助键索引/二级索引 )
分析器(EXPLAIN|DESCRIBE|DESC)
分析器输出格式化(EXPLAIN FORMAT = TRADITIONAL|JSON|TREE)
查询分析器(EXPLAIN SELECT)
分析索引
查询性能分析器(EXPLAIN ANALYZE)
查询性能分析器(EXPLAIN ANALYZE)
MySQL 8.0.18 引入了 EXPLAIN ANALYZE,它运行一个语句并生成 EXPLAIN 输出,同时提供时间和基于迭代器的额外信息,说明优化器的期望如何匹配实际执行。对于每个迭代器,包含以下信息: 预计执行成本(有些迭代器没有被成本模型考虑在内,因此不包括在估计中。) 返回的估计行数 返回第一行的时间 执行此迭代器(包括子 ...
2023-04-26
MySQL
分析索引
遍历整个主键索引的B+树,并且需要读叶子节点数据,称为全表扫描。遍历整个非聚集索引的B+树,称为全索引扫描。 模式 分析参数 值 描述 全表扫描 type all 通过读物理表获取数据,顺序读磁盘上的文件。这种情况会顺 ...
2023-04-25
MySQL
查询分析器(EXPLAIN SELECT)
EXPLAIN 会为 SELECT 语句中使用的每个表返回一行信息。它按照 MySQL 在处理语句时读取它们的顺序列出输出中的表。这意味着 MySQL 从第一个表中读取一行,然后在第二个表中找到匹配的行,然后在第三个表中,依此类推。当所有的表都被处理完后,MySQL 将选择的列输出,并在表列表中回溯,直到找到一个有更多匹配行的表。从此表中读取下一行,然后继续处理下一个表 ...
2023-04-24
MySQL
分析器输出格式化(EXPLAIN FORMAT = TRADITIONAL|JSON|TREE)
EXPLAIN 的可选 FORMAT 语句可用于选择输出格式。 TRADITIONAL 以表格格式显示输出。如果没有 FORMAT 选项,这是默认设置。 JSON 格式以 JSON 格式显示信息。 在 MySQL 8.0.16 及更高版本中,TREE 提供树状输出,与 TRADITIONAL 格式相比,具有更精确(准确)的查询处理描 ...
2023-04-23
MySQL
分析器(EXPLAIN|DESCRIBE|DESC)
分析器提供有关 MySQL 如何执行语句的信息 DESC / DESCRIBE / EXPLAIN 语句是同义词,DESC 是 DESCRIBE 的缩写,仅适用于在语句的开头。在实践中,不同语句用于区分特定场景下的描述,DESCRIBE / DESC 关键字更多地用于获取表结构信息,而 EXPLAIN 用于获取查询执行计划 分析 ...
2023-04-22
MySQL
非聚簇索引(非聚集索引/辅助索引/辅助键索引/二级索引 )
在 MyISAM 中没有聚集索引,因此 MyISAM 查询时将使用主键索引(主索引)来加速查找数据记录,而不是像 InnoDB 存储引擎中使用聚集索引来加速查询。 在MyISAM中,主索引和辅助索引在结构上没有任何区别,两者都是非聚簇索引。只不过主键索引(主索引)是一种特殊的非聚集索引,它具有唯一性,key 是唯一的,而辅助索引的 key 可以重复。 ...
2023-04-21
MySQL
MyISAM 引擎
MyISAM 引擎中,B+Tree 叶节点的 data 域存放的是数据记录的地址。在索引检索的时候,首先按照 B+Tree 搜索算法搜索索引,如果指定的 Key 存在,则取出其 data 域的值,然后以 data 域的值为地址读取相应的数据记录。这被称为非聚簇索引(辅助键索引 / 辅助索引) MyISM 使用的是非聚簇索引,数据存储 ...
2023-04-19
MySQL
非聚簇索引(非聚集索引/二级索引/辅助索引/辅助键索引)
当向表中插入新数据或者更新某个数据行时,如果该操作导致对聚簇索引中的某个数据页进行分裂,那么与该数据页相关的所有非聚集索引页也需要进行相应的调整,这可能会导致大量的IO操作和性能损失。 InnoDB中,非聚簇索引只存储了主键值,并不包含完整的数据记录,因此不会受到数据行移动或者插入新数据时出现的页分裂问题的影响。相比于聚簇索引,占用的空间要少。 & ...
2023-04-18
MySQL
聚簇索引(聚集索引/主键索引/主索引)
聚簇索引(clustered index)不是单独的一种索引类型,而是一种数据存储方式,这种存储方式是依靠 B + 树来实现的。 InnoDB 中聚簇索引的叶子节点就是数据节点,也就是说索引和数据行在一起,一张表只能有一个聚簇索引。 聚簇索引根据表的主键构造一棵 B + 树,B + 树叶子节点存放表 ...
2023-04-17
MySQL
InnoDB 引擎
InnoDB引擎中,数据文件本身就是按 B+Tree 组织的一个索引结构,树的叶节点data域保存了完整的数据记录。按照主键值构建索引,同时行数据储存在叶子节点上,这被称作聚集索引(聚集索引 / 主键索引 / 主索引),其他索引则称为非聚集索引(辅助键索引 / 辅助索引 / 二级索引)。 由于聚簇索引(聚集索引 / 主键索引 / 主 ...
2023-04-16
MySQL
1
2
3
…
58
>