自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(109)
  • 收藏
  • 关注

原创 面试准备啊

fail fast 是把数组原来的更改次数记住 每次都去比较 变了 就抛异常。请求参数@requestparam(可以设置默认值)如果数组容量没到64 会先扩容 再树化。读取外部自定义properties配置文件。缺点:全是偶数 hash分布不均匀。质数比较好(二次哈希也不需要)使用内存屏障解决指令重排序。第一次扩容和之后的不一样。类加载器被回收了才会回收。解决循环依赖 用代理对象。效率好 2的n次幂。数字越小 优先级越高。

2023-03-27 19:43:20 1318

原创 Mysql(锁)

判断大于的时候 想一下 上面那三个参数记录的是当前。还有避免失败 所以事务提交了就会有保障。

2023-03-26 22:18:37 113

原创 Mysql(进阶)

要根据索引字段来判断where条件 不然会把行锁升级为表锁。子查询 不能加在where后边 要加在 前面。双向链表 便于范围搜索和排序。把子查询出来的id当作一个新表。必须使用覆盖索引~!

2023-03-26 00:07:27 115

原创 Mysql约束

如果有一次插入不成功 但是主键已经被申请过了 所以下一次就会申请下一个主键。员工的老板也在这个表上 就要用这个表查两次 但是查询的时候 把他们当作两张表。constraint 和外键名称 可以省略。注意关系是自己插入的(谁到底学了什么)用于查询某表中和B没关系的也要查出来!在默认引擎innodb中不支持。外键是用来保证一致性和完整性的。多人多信息或外键约束->表子查询。通过限制他们外键与主键的相等。设置外键 并设置唯一。一人多信息-》行子查询。

2023-03-22 17:05:25 108

原创 MySql

查询 创建 是否存在同名 是否指定字符集 是否指定排序顺序 切换数据库。别名属性可以这样用 别名.字段名。between前后次序不能错。没有负数就用无符号返回值。

2023-03-21 22:00:53 38

原创 五大映射器、四大适配器

MVC完整流程。

2023-03-21 02:32:16 178

原创 MVC异常处理

不用在每一个方法里写异常处理方法 再config类里写 会自动来找 属于@ControllerAdvice增强方法。因为它实现了这个接口 内置有初始化方法(参数解析器返回值控制器)它初始化的时候会把所有(其他三个)增强信息放入集合依次遍历。也可以解析你的参数(解析参数的方法也被封装在里面了)异常处理器遍历出现异常的方法,判断如果能处理就处理。出了异常 控制器方法里没写 就来这里找之前储存的。调用方法之前先把你捕获的异常一层一层展开。是根据出问题的方法返回值类型来转换的。异常方法的参数也需要解析。

2023-03-21 02:23:47 85

原创 控制器方法执行流程、返回值处理

返回值处理器控制器方法执行流程1.获取bean和方法2.获取databinderfactroy对象并且创建databinder3.获取参数名的解析器4.解析参数5.把模型数据存在容器里对象绑定过程:先创建一个空的对象然后把解析出来的数据赋值给对象最后把模型对象存入容器里(containner)对象名称如果指定就用指定的 没有就用类型名会调用标注了@ModelAttribute的方法把 把方法的返回值存入container容器里。

2023-03-21 00:05:37 92

原创 Sping中对象绑定和类型转换

然后赋值给binder工厂 工厂收集这些信息后 当工厂创建databinder的时候 就会回调这些增强方法 一起整合成一个新的databinder对象 并创建出来。参数解析器 负责解析参数(根据类型 根据注解) 有的需要名字 有的需要 类型转换 所以才调用的左边那俩。DataBinder子类 无法识别第一种属性 无法绑定 不支持的格式(自定义日期格式的转换)参数解析(可对RequestBody增强)(涉及到数据绑定)然后把这个收集的结果(method) 传给工厂(集合类型)

2023-03-20 20:13:13 68

原创 参数解析器

位置不能改,不然 @RequestBody标记的数据也会被 路径中的 name=?把路径参数解析和 控制器方法参数进行匹配 匹配后存入map集合中 并放入request 域中。如果编译时添加了 -parameters 可以生成参数表, 反射时就可以拿到参数名。组合解析器 用来把所有解析器组合起来 直接调用这个 就可以逐一调用内部解析器。cookie解析器 会根据注解上的名字 在request域中寻找匹配的 值。解析参数依赖的就是各种参数解析器,它们都有两个重要方法。

2023-03-20 14:39:54 335

原创 SpingMVC原理

HandlerAdapter主要有两个很重要 一个是有很多解析Request参数的处理器(参数解析器例如@RequestBody)每个参数解析器 都负责解析一个注解。HandlerAdapter 主要用途就是调用控制器方法(这个方法可以调用控制器方法)(参数解析返回值处理估计都在这个方法内部实现了)自定义控制器方法返回值处理器(基础的可以对返回值类型做不同的处理)除此以外就是注解信息了。应该是每一个@注解都有一个处理器(参数解析器或者控制器方法返回值ch)变化的数据与配置文件进行键值绑定。

2023-03-20 02:16:06 49

原创 静态通知调用

进入环绕通知2,执行前增强,调用 mi.proceed() 发现没有环绕通知,调用 mi.invokeJoinPoint() 执行目标方法。进入环绕通知1,执行前增强,再次调用 mi.proceed() 发现有下一个环绕通知,调用它的 invoke(mi)所谓静态通知,体现在上面方法的 Interceptors 部分,这些通知调用时无需再次检查切点,直接调用即可。目标方法执行结束,将结果返回给环绕通知2,执行环绕通知2 的后增强。环绕通知2继续将结果返回给环绕通知1,执行环绕通知1 的后增强。

2023-03-20 00:58:47 72

原创 AOP实现原理

避免反射, 提高性能, 代价是一个代理类配两个 FastClass 类, 代理类中还得增加仅调用 super 的一堆方法。methodProxy.invokeSuper 也是不反射调用,它会正常(间接)调用代理对象的方法,可以省略目标对象。创建methodproxy对象的时候 就会根据方法名获得index编号 ,再根据编号调用target里对应的方法。methodProxy.invoke 是不反射调用,它会正常(间接)调用目标对象的方法(Spring 采用)

2023-03-19 16:14:07 85

原创 Spring原理(Scope、AOP)

因为代理对象是目标的子类,所以也可以调用和目标相同的方法,也就有反射的条件(代理对象调用 经过重写的方法 会传参给这个方法内部 也就是方法method作为参数传了进来 就可以进行反射了)执行流程是:代理对象调用 经过重写的方法 会传参给这个方法内部 在这个方法里 进行AOP的操作和原目标对象方法的执行。因为他们实现同一个接口,代理对象就调用实现的方法和目标类类名,利用反射使目标类执行未增强的方法。cglib 不要求目标实现接口,它生成的代理类是目标的子类,因此代理与目标之间是子父关系。

2023-03-19 13:57:15 91

原创 Spring(Aware 接口、初始化与销毁)

容器的初始化操作流程Aware接口提供了一种【内置】的注入手段,例如注入bean的名字注入容器注入容器注入${}解析器接口提供了一种【内置】的初始化手段对比内置的注入和初始化不受扩展功能的影响,总会被执行而扩展功能受某些情况影响可能会失效因此Spring框架内部的类常用内置注入和初始化。

2023-03-18 23:30:40 111

原创 Spring原理(Bean的生命周期、Bean 后处理器、BeanFactory 后处理器)

先获得加了@注解的成员变量类型,然后封装成一个dependencydescriptor对象,在调用beanfactory的一个方法把这个对象传进去,用来搜索bf中是否存在这个类型的对象,如果存在,就用反射方法,获取它的set方法,并把值传给加了注解的成员变量。但这种说法是不完整的。首先获取有@Bean注解的源文件信息,然后在这个文件中获取有标注@Bean的方法的源文件信息。这个是设定自动注解模式,因为工厂类方法有一个需要传参的方法,如果没有配置传参的bean就会报错,这样设置就不报错了。

2023-03-18 21:15:35 364

原创 Spring原理(容器接口、容器实现)

它才是 Spring 的核心容器, 主要的 ApplicationContext 实现都【组合】了它的功能,【组合】是指 ApplicationContext 的一个重要成员变量就是 BeanFactory。bean 后处理的添加顺序会对解析结果有影响,见视频中同时加 @Autowired,@Resource 的例子。例如 @Autowired,@Resource 等注解的解析都是 bean 后处理器完成的。实际上控制反转、基本的依赖注入、直至 Bean 的生命周期的各种功能,都由它的实现类提供。

2023-03-18 16:29:46 77

原创 SpringBoot和Maven多环境开发兼容问题

pom中yml中MyBatisPlus中的增删改查方法:

2023-03-18 02:22:35 56

原创 Maven高级(多模块开发)(依赖传递)( 继承与聚合)(属性(版本属性、配置资源属性、多环境开发、跳过测试))(私服)

继承就是可以让他们继承父类的包(必选和可选)(配置管理)<optional>标签如果为true就是隐藏依赖。这一步就会加载那个文件(能读取${}格式)聚合就是让他们一起运行(构建管理)减少多余的包配置和版本冲突。

2023-03-17 02:04:42 75

原创 SSM整合

表现层数据的封装(前后端共同定制)

2023-03-16 23:56:11 40

原创 SSM(整合)

data放原本功能实现的结果,code放各种方法成功与否专用的数字,msg放给客户呈现的信息:查询失败或者系统繁忙等。但是可以简化开发让SpringMvcConfig实现一个接口重写这俩方法。利用return true/false 来进行拦截与否。这个配置类可以配之前拦截静态页面的那个。并采用Result的形式直接发给前端。表现层数据的封装(前后端共同定制)拦截器的底层其实就是AOP。

2023-03-16 21:51:41 85

原创 SpringMVC(3)--REST风格

应该是@Import与@EnableWebMvc同时使用,加载顺序问题导致没有加载自己的WebMvcConfigurationSupport,而使用了默认的路径配置。先标记他为配置类再把它用(其实这部分和标记为Controller一样都是为了加入bean)这种方法会导致拦截无效 也就是没加入到。的方式加入到MVCConfig里面。RESTful快速开发(简化书写)RESTful快速开发(简化书写)注意这边不能用这种方法。

2023-03-16 00:17:00 36

原创 SpringMVC(2)

把参数给集合对象作为数据呈现就像之前name=username一样这个是likes[0](网页发的数据)=likes[0](方法里的集合)记住:默认就是不用管,对应不上就用@RequestParam注解来对应。作用:设置当前控制器返回值作为响应体(转成jason)@ResponseBody里面是这个接口在做事情👇。不加@ResonseBody都认为是页面。请求映射路径问题:不同包的方法路径相同。请求参数的传递(普通、jason)requestbody(常用)导这个包 就可以进行类型转换。

2023-03-15 22:20:51 32

原创 Sping-SpingMVC

虽然dao是Mybatis自动代理创建的(不用扫描成bean)但是还是要写上为了通用性。(复习)sql映射文件实际上就是BrandMapper.XML。第一个方法是告诉tomcat别忘了加载我Spring的配置。第二个是当我发送请求以后哪些交给我SpringMVC去处理。requestmapping是页面访问路径。如果不使用Mybtis代理开发最原始的技术。自己定义一个类去继承专用配置类。如果下面这种情况就不行了👇。2.不用Mybatis技术。1.不用自动代理对象。

2023-03-15 20:05:06 41

原创 Spring-AOP

Spring中有A切面包第二步基础操作第三步 通知类和通知内容第四步匹配关系在配置类中用注解表明 我要用注解开发AOP了加一个Enable……然后在通知类里面第一步加一个Component 告诉Spring 这个类是你管2第二步加一个Aspect 告诉配置类 我这个是用注解开发的AOP内容(切面)第三步把通知类内容做出来:你要追加的功能 上面标明是在方法执行前还是后 然后()里填通知类里面的方法(空壳)id。

2023-03-15 15:18:38 146

原创 Spring整合MyBatis和Junit

autowired实际上就是在容器里自动匹配一个和你这个类型一样的对象分给你,你就可以用这个对象里面的方法和变量了。Spring整合Junit。直接用这几句代码就可以实现了。Spring整合Junit。其实就上面那两个@的内容。

2023-03-15 12:24:20 44

原创 注解开发(全注解)

他会根据你形参类型去寻找容器中和这个类型匹配的bean然后注入(十分智能!如有多个 需要加一个Qualifier注解指定。也可以通过导入外部properties文件。利用注解开启自动装配可以省略set方法。针对于你要调用的Bean中的依赖注入。定义一个方法,返回值就是bean。包含了生命周期和单例的信息。一个是读文件一个是读类。

2023-03-15 00:31:30 52

原创 Spring

如果想要看到destroy就需要先关容器再关虚拟机 所以调用close方法,但是原来那个没close方法,所以换一下如下↓。先去看那个对象有没有好的构造器方法,没有再用setter注入,property name value 的形式。相比来讲close比较暴力,它在哪 哪里就关,上面这个意思就是close之后再关虚拟机。前面那个*是所有jar包范围,后边的*是指当前包下所有的properties文件。写的是工厂bean对象 但是造出的对象实际是getObject的结果对象。druid(数据库连接池)

2023-03-14 23:09:56 36

原创 Git(入门)

如果俩哥们同时修改 你pull回来有一个文件被同时改了起了冲突,还是老样子,去修改这个冲突了的文件,然后重新add一下再重新commit。git branch -D 分支名称(强制删除)出现桥的原因是两边都有修改(两条分支)3.将项目所有提交到本地仓库。选定对应SSH地址就可以了。在项目创建一个本地仓库。2.复制ignore进去。4.push到远程仓库。

2023-03-14 02:25:44 38

原创 Maven

maven初级

2023-03-13 17:59:17 32

原创 Vue。。。

vue

2023-01-18 18:16:27 34

原创 会话跟踪:cookie

cookie

2023-01-18 15:15:55 34

原创 AJAX...

AJAX

2023-01-18 15:15:38 40

原创 filter

123

2022-11-08 13:29:21 41

原创 Request(请求)&Response(响应)

request、response

2022-10-25 11:00:21 58

原创 JAVA:JSP

JSP

2022-10-25 10:58:48 924

原创 Tomcat

123

2022-09-30 14:56:33 128

原创 HTTP:Web核心

12345

2022-09-29 15:54:28 55

原创 HTML语言

HTTP前置

2022-09-29 13:38:21 82

原创 JAVAWEB:MyBatis

Mybatis

2022-09-24 14:39:50 214

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除