09 2022 档案
摘要:MySql项目中使用的存储引擎 5.0之前默认存储引擎为MyISAM引擎 索引只有一种,被索引的字段值作为索引数据,叶子节点还包含该记录数据页地址 不支持事务 没有undo log 和redo log 仅支持表🔒 不支持外键 优势:执行增删改会保存表的总行数 5.0之后默认存储引擎为InnoDB
阅读全文
摘要:wm_channer:频道表 wm_news:文章表 1.增删改 插入一条: 插入一条频道 insert into wm_channel VALUES(9,"Scala",9,0,1,9,"2022-9-22 12:00:00"); 插入多条: 插入多条频道 insert into wm_chann
阅读全文
摘要:int 和 Integer 有什么区别 Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当作对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java5开始
阅读全文
摘要:什么是Spring? Spring是一个轻量级的Java开发框架,最早由Rod Johnson创建,最初只有2MB,目的是为解决企业级应用开发的业务逻辑层和其他各层的耦合问题。是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发Java应用程序提供全面的基础架
阅读全文
摘要:Java中的一场处理方式(机制)有哪些? try-catch 在异常可能出现处获取异常并处理异常。 throw,throws 抛出异常,会逐层抛出到方法的调用者处 Error和Exception的区别是什么? Error为程序运行错误,程序启动是就会出现错误,则启动失败,在运行过程时出现错误,则系统
阅读全文
摘要:static存在的意义 static的主要意义是在于创建独立于集体对象的域变量或者域方法,以至于即使没有创建对象,也能使用属性和调用方法。 static关键字还有比较冠军的作用就是,用来形成静态代码块以优化程序性能,static块可以置于类中任何地方,类中可以有多个static块。在类初次被加载是,
阅读全文
摘要:Java语言采用何种编码方案?有何特点? Java语言采用Unicode编码,Unicode(标准码),它位每个字符制定了唯一的数值,因此在任何的语言,平台,程序都可以放心使用 什么Java注释 用于解释说明程序的文字 分类 单行注释:// 多行注释:/* */ 文档注释:/** */ 其实就是用于
阅读全文
摘要:Java和C++的区别 都是面向对象的语言,都支持封装,继承,多态 Java不提供指针访问内存,程序内存更加安全 Java是单继承,C++支持多继承,但Java支持多接口 Java有自动内存管理机制,不需要程序员手动释放无用内存,而C++就没有 Oracle JDK 和 OpenJDK 的对比 Or
阅读全文
摘要:wait和sleep的区别 简说:wait释放🔒,sleep不释放🔒 例子:买票过程中,当程序进行上锁后 sleep控制下的线程,买票是一一完成,当程序休眠后,sleep不会释放🔒,购票者和售票完成后才能继续后面购票操作,顺序执行。 wait控制下的线程,购票是多人同时进行,当程序等待时,wa
阅读全文
摘要:每一个切面都有一个默认的优先级(默认值为Integer的最大值) @Order(1)通过这个注解设置一个正整数数值,数值越小,优先级越高 @Component @Aspect//将当前组件标识为切面 @Order(1) public class ValidateAspect { //@Before(
阅读全文
摘要:AOP注意事项 切面类和目标类都需要交给IOC容器管理切面类必须通过@Aspect注解标识为一个切面在spring的配置文件中设置<aop:aspectj-autoproxy/>开启基于注解的AOP功能 <!--扫描路径--> <contest:component-scan base-package
阅读全文
摘要:概念:二十三种设计模式中的一种,属于结构型模式。它的作用就是通过提供一个代理类,让我们在调用目标 方法的时候,不再是直接对目标方法进行调用,而是通过代理类间接调用。让不属于目标方法核心逻辑 的代码从目标方法中剥离出来——解耦。调用目标方法时先调用代理对象的方法,减少对目标方法的调 用和打扰,同时让附
阅读全文
摘要:* @Component:将类标识为普通组件* @Controller:将类标识为控制层组件* @Service:将类标识为业务层组件* @Repository:将类标识为持久层组件(dao层)* (4个的效果都是一样,但为代码可读性,不能乱标) context:exclude-filter:排除扫
阅读全文
摘要:* 自动装配:* 根据指定的策略,在IOC容器中匹配某个bean,* 自动为bean中的类类型的属性或者接口类型的属性赋值* 可以通过bean标签中的autowire属性设置自动装配的策略** 自动装配的策略:* 1.no,default:表示不装配,* 即bean中的属性不会自动匹配某个bean为
阅读全文
摘要:spring框架中 获取bean时 1.NoUniqueBeanDefinitionException:没有一个唯一的bean被发现异常 原因:ioc中有多个类型匹配的bean 2NoSuchBeanDefinitionException::没有足够的bean被发现异常 原因:ioc中没有与之匹配的
阅读全文
摘要:bean生命周期简易版 * 生命周期:1、创建对象(实例化)* 生命周期:2、依赖注入(为属性赋值)* 生命周期:3、初始化(需要通过bean中init-method属性指定初始化方法)* 生命周期:5、销毁(ioc容器关闭时销毁* 需要通过bean的destroy-method属性指定销毁方法)
阅读全文
摘要:1.通过List标签在property标签中直接进行赋值 <property name="students"> <list> <ref bean="studentOne"></ref> <ref bean="studentTwo"></ref> </list> </property> 2.通过配置一
阅读全文
摘要:1 ref:引用IOC容器中的某个bean的id <property name="clazz" ref="clazzOne"></property> <bean id="clazzOne" class="com.javasm.spring.pojo.Clazz"> <property name="c
阅读全文
摘要:字面量赋值:之间调用value赋值就行赋值null:<property name="gender" ><null/></property>特殊符号赋值: 1.<:< >:> 2.CDATA节其中的内容会原样解析(通过输入CD快捷生成) 放在property的子标签value中<prope
阅读全文
摘要:* 获取bean的三种方式:* 1)根据bean的id获取* 2)根据bean的类型获取(最常用)* 注意:* 根据类型获取bean时,* 要求IOC容器中有且只有一个类型匹配的bean* 若没有一个类型匹配的bean,此时抛出异常:NoSuchBeanDefinitionException* 若有
阅读全文
摘要:<cache>中相关属性 在mapper配置文件中添加的cache标签可以设置一些属性: ①eviction属性:缓存回收策略,默认的是 LRU。 LRU(Least Recently Used) – 最近最少使用的:移除最长时间不被使用的对象。 FIFO(First in First out) –
阅读全文
摘要:MyBatis的二级缓存(实现需要4个条件)* MyBatis的一级缓存是SqlSessionFactory级别的,* 即通过同一个SqlSessionFactory所获取的SqlSession对象* 查询的数据会被缓存,在通过同一个SqlSessionFactory所获取的SqlSession*
阅读全文
摘要:MyBatis的一级缓存:(默认开启)MyBatis的一级缓存是SqlSession级别的即通过同一个SqlSession查询的数据会被缓存于SqlSession的缓存中再次使用同一条SqlSession查询同一条数据会从缓存中获取(增加了查询效率) 使一级缓存失效的4种情况:* 1) 不同的Sql
阅读全文
摘要:可以记录一段sql,在需要用的地方使用include标签进行引用优点:(可设置*避免了*传入mysql中再次被解析,从而加快执行效率) 设置sql片段(代替*) <sql id="empColumns"> emp_id,emp_name,age,gender,dept_id </sql> 引用sql
阅读全文
摘要:可分别用数组或集合进行批量添加和删除 collection:设置要循环的数组或集合item:用一个字符串表示数组或集合中的每一个数据separator:设置每次循环的数据之间的分隔符(会在设置的分隔符前后加 空格)open:循环的所有内容以什么开始(仅适用于批量删除)close:循环的所以内容以什么
阅读全文
摘要:动态SQL1.if 通过test属性中的表达式判断标签中的内容是否有效(是否会拼接到sql中) <select id="getEmpByConditionOne" resultType="Emp"> select * from t_emp where 1=1 <if test="empName!=n
阅读全文
摘要:处理一对多的映射关系:1.collection标签类似于association的模板模板 <resultMap id="deptAndEmpResultMap" type="Dept"> <id column="dept_id" property="deptId"></id> <result col
阅读全文
摘要:优点:可以实现延迟加载,减少当前内存的消耗 开启延迟加载延迟加载与两个全局配置有关(放在mybatis-config中的settings(全局配置)里面) 如果只是要得到延迟加载的效果,其实将lazyLoadingEnabled开启就能够做到1.lazyLoadingEnabled(默认关闭) <s
阅读全文
摘要:1.为查询的字段设置别名,和属性名保持一致 select emp_id empId,emp_name empName,age,gender from t_emp where emp_id=#{empId} 2.当字段符合MySQL的要求使用_,而属性符合Java的要求使用驼峰此时可以在MyBatis
阅读全文
摘要:1.级联方式处理关键:明白字段应该映射哪一个属性 也就是将主表中主键为id,关联表中的要查询的值通过column对应数据库中名字,property对应实体类中的名字进行映射 <resultMap id="empAndDeptResultMapOne" type="Emp"> <id column="
阅读全文
摘要:select * from t_user where username like '%#{mohu}%' 中的#{mohu}会被解析为?号,不会被解析为占位符 解决方案: 1:'%${mohu}%' 用${}字符串拼接的方式代替占位符赋值 2:concat('%',#{mohu},'%') 在sql
阅读全文
摘要:* 若sql语句查询的结果为多条时,* 一定不能以实体类类型作为方法的返回值* 否则会抛出异常TooManyResultsException * 若sql语句查询的结果为一条时* 此时可以以实体类作为返回值,* 也可以用list集合类型作为方法的返回值 * sqlSession在底层调用方法时,*
阅读全文
摘要:* 查询所有的用户信息为一个map集合* 若查询的数据有多条是,并且要将每条数据转化为map集合* 此时有两种解决方案:(第一种list集合用的多)** 1.将mapper接口方法的返回值设置为泛型是map的list集合* List<Map<String,Object>>getAllUserToMa
阅读全文
摘要:数据库三范式是什么 第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。如地址中湖北省武汉市洪山区就应该拆分成三列。 第二范式: 在第一范式基础上,规定表中非主键列不存在对逐渐的部分依赖。即要求每个表只描述一件事情,如在订单表中,如果有订单编号,产品编号,订购日期,产品价格,就
阅读全文
摘要:什么是Redis的哈希槽 哈希槽其实就是一个数组,数组[0, 1, 2, ..., 2^14-1]形成hash slot空间 Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value时,redis 先对 key 使用 crc16 算法算出一个结果,然后
阅读全文
摘要:* MyBatis获取参数值的两种方式:#{}和${}* #{}本质是占位符赋值,${}的本质是字符串拼接* * 1 若mapper接口方法的参数为单个的字面量类型* 此时可以通过#{}和${}以任意的内容获取参数值,* 但尽量把传入参数名放入{}内,一定要注意${}的单引号问题** 2 若mapp
阅读全文
摘要:set集合如何保证元素不重复 3 1.在set集合添加元素时,会首先调用该对象的hashcode方法计算哈希值 2.将计算出的哈希值去哈希表中查询,如果不存在该值,则添加成功,否则调用对象的equals方法比较对象的内存地址,如果内存地址也相同,则是重复的对象,该对象添加失败。如果equals返回的
阅读全文
摘要:ArrayList和LinkedList区别 3 简说 arraylist 基于数组,需要连续内存 随机访问快(指根据下标访问) 尾部插入、删除性能可以,其它部分插入、删除都会移动数据,因此性能会低 可以利用 cpu 缓存,局部性原理 linkedlist 基于双向链表,无需连续内存 随机访问慢(要
阅读全文