- 博客(5)
- 收藏
- 关注
原创 Tomcat底层分析
其主要实现来自Servlet容器,而这个容器就对应到了1里面的容器Container,如果将这个Servlet扔到Tomcat里面去,那么这个接口就是由Tomcat实现的,到Jetty里面去,就是由Jetty实现的,我们来看Tomcat源码,Tomcat源码里面也对应有一个HttpServletRequest接口。我们来看HttpServlet的doGet方法,这个方法主要是来处理get请求的,发现请求主要来自HttpServletRequest,这是一个接口,那它的实现类是什么呢?
2024-09-04 16:24:50
1558
原创 Spring整合Mybatis底层实现
最后走到了这里执行setString方法将参数的值设置进去,这也就能解释为什么#{param1}为什么没有SQL注入的风险,因为在设置值时直接将其属性改成了String,而对于${param1}这种,由于是在过程中动态设置的,那么并没有为其进行更改,就会由SQL注入的风险。SQL其实分成两种,一种是静态的,一种是动态SQL的,静态SQL是用#{}来占位的,而动态SQL是用${}来占位的,静态SQL在解析完配置文件之后就会变成?我们在写业务时常常这样写,但是,等等,UserMapper不是一个接口吗?
2024-08-26 22:00:28
1464
原创 HashMap底层分析
发现这个算法算出来其实就是取了hashcode的低位,由于hashcode是随机的,那么其低位也是随机的,同时结果也满足在数组长度以内,同时由于是位运算,效率要比取余快得多,同时这也是为什么length要为2的幂数,取2的倍数时,length-1就会出现低位全1,这样就可以取到hashcode的低位了,可是hashmap是怎么保证length一定是2的幂数呢?其实核心思想就是算出前导0个数,然后将后续位置全部补成1,就像10的时候,前导0个数为28,那么后4位全部补成1,然后加1输出就是2的幂次方数了。
2024-08-24 22:14:27
1345
原创 JAVA双亲委派机制以及如何打破
注意:为什么parent==null时去执行从启动类加载器中加载的原因是启动类加载器是jvm层面的,是由c++语言实现的,没有暴露给Java层,所以在Java中是获取不到的,所以返回的是null。发现在进行这个方法时,不可避免的需要用到java自身的包,而写的加载器里面并没有去加载java自身的类,所以会报错。在进行类加载时,子类加载器会优先将类加载过程交给其父类加载器进行类加载过程,逐层往上抛,当父类加载器没有找到所需要加载的类时,子类类加载器才会去加载。这样就没啥问题了,成功绕过了双亲委派机制!
2024-08-22 16:33:35
260
1
原创 Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required
Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2023-03-20 09:41:24
141
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人