KMP模式匹配算法保姆级详解 传统的朴素模式匹配算法由于主串指针i回溯,且每次只前进一个距离,没有减少不必要的匹配过程。故效率非常低。KMP算法与朴素模式匹配算法不同,kmp巧妙的利用了当前c字符失配而c字符前面的字符都成功匹配的信息,因此可跳过某些不必要的匹配。kmp将关注点落在了模式串t的有效信息提取上,与主串s无关,故消除了主串s的回溯1.kmp的重点就落在对模式串t的有效信息提取上即最长公共前后缀next数组next数组是kmp算法的核心next数组用以保存当前字符c之前子串的最长公共前后缀的信息.
z-index详解 z-index就是堆叠上下文,它规定一个元素的堆叠顺序。一般来说,拥有更高堆叠顺序的元素会处于较低堆叠元素的前面。但是,z-index的有一些注意点,接下来一一举例。<div id="A">A<div id="a">a</div></div><div id="B">B<div id="b">b</div></div>div A和div B中各有一个div a和div b的子元素#A,#B { .
ssm整合基于xml 导入依赖<dependencies> <!--数据库驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.22</version> .
spring-整合mybatis 为什么要整合mybatis1.整合后由原先的两个框架,变成了一个框架去使用,是配置简化2.使得dao和service层专注于进行自己的业务,由spring注入bean实现层与层之间的调用 mybatis通过动态代理获得dao层接口的代理类实现对数据库的操作 spring整合mybatis本质就是将mybatis生成的代理对象变成bean 达到自动注入到service层目的 spring整合mybatis的核心就是围绕如何将mybatis生成的接口代理对象变成beandao层publ.
AOP基于注解 aop1.概念: 是一种面向切面编程,关注的不再是某个类某个方法,而是层与层,即切面。类似于servlet中filter过滤器2.有什么用: 用于日志记录,安全控制,增强方法等3.特点: 使模块高内聚低耦合 可以在不改变原有功能基础上添加新功能 使代码得到复用4.底层实现: 动态代理jdk cglibaop 1.引入依赖 2.编写配置类开启aop 包扫描 3.定义切面 --类@Aspect 切入点:匹配规则,规定什么方法需要被拦截 .
代理模式篇 代理模式–静态代理代理模式: 1.定义共同行为 --接口 *去买奶茶 2.目标角色(真实角色我) 实现行为 3.代理角色(美团骑手) 实现行为并增强目标角色行为:顺便带回赠送商品静态代理: 1.目标角色固定 2.在应用程序执行前就得到目标角色 3.代理对象会增强目标角色行为 4.可能存在多个代理,出现"类爆炸" 只能做单一事情业务场景目标角色(用户) 要租房 1.定义行为租房 接口 2.目标角色 实现行为 3.代理角色 实现行为并增强.
Spring SpringIOC理论1.场景: 传统开发:三层架构之间要组合调用,通过new调用对象实现 userDao 接口 UserDaoimpl 实现类 UserService 业务接口 UserSerciveImpl 业务实现类 问题:service组合时UserDao userdao = new MysqlImp() new OrcaleImp()//多态所引起的,会需要调用处写死多个实现类对象,用户的不同需求会影响原来的代码 解决: 1.用set实现动态注
Mybatis Mybatis环境JDK1.8Mysql5.7maven3.6IDEAmaven仓库<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>