
Java面试专栏
文章平均质量分 94
java面试常见知识点
安倾i
这个作者很懒,什么都没留下…
展开
-
Mybatis原理简单阐述
mybatis其实就是对jdbc的整合简化JDBC的步骤1、注册驱动2、获取数据库连接对象3、定义sql语句4、加载预处理对象5、获取结果集 将结果集封装在某个对象6、遍历结果集7、释放资源mybatis利用构建者模式创建工厂利用工厂模式创建session利用代理模式 找到接口的代理对象主配置文件干了什么?1、数据库的注册信息2、相关mapper的映射mapper的映射文件干了什么?namespace表明该映射文件对应的接口全限定类名id 对应方法名sql语句resu原创 2020-09-03 14:13:18 · 412 阅读 · 0 评论 -
动态代理模式
动态代理常用的有两种方式基于接口的动态代理提供者:JDK官方的Proxy类要求:被代理类最少实现一个接口基于子类的动态代理提供者:第三方的CGLib要求:被代理类不能用final修饰的类(最终类)。如何获取代理对象?(对本来的类的方法进行增强 也就是拦截)1、首先定义一个功能接口2、定义一个类,这个类至少实现了一个接口3、适用JDK官方的Proxy类来创建 刚才我们创建的类 的代理对象创建的方式: Proxy.newProxyInstance(三个参数)参数的含义:1、原创 2020-09-03 13:34:55 · 147 阅读 · 0 评论 -
HTTP协议
参考资料https://www.cnblogs.com/an-wen/p/11180076.htmlHTTP协议简介HTTP(超文本传输协议) 是一种用于分布式、协作式和超媒体信息系统的应用层协议HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应原创 2020-08-30 01:41:35 · 273 阅读 · 0 评论 -
三次握手四次挥手
参考链接https://zhuanlan.zhihu.com/p/199284611三次握手 四次挥手结构图前言由于 TCP 是全双工的,TCP 进行握手初始化一个连接的目标是:分配资源、初始化序列号(通知 peer 对端我的初始序列号是多少)TCP 进行断开连接的目标是:回收资源、终止数据传输。由于 TCP 是全双工的,需要 Peer 两端分别各自拆除自己通向 Peer 对端的方向的通信信道。这样需要四次挥手来分别拆除通信信道,TCP连接的初始化序列号**不是固定的 **三次握手过程讲原创 2020-08-30 01:17:20 · 185 阅读 · 0 评论 -
归并排序
归并排序归并排序基于归并这个简单的操作,归并:即将两个有序的数组归并成一个更大的有序数组归并地实现:一种直截了当的方法是将两个不同的有序数组归并到第三个数组中,两个数组中的元素应该都实现了Comparable接口。实现的方法:创建一个适当大小的数组然后将两个输入数组的元素一个个从小到大放入这个数组中。原地归并的抽象方法:** 可以先将前半部分排序,再将后半部分排序,然后在数组中移动元素而不需要使用额外的空间**。merge(a, lo, mid, hi) : 它会将子数组a[lo…mid]和a原创 2020-08-29 22:36:24 · 277 阅读 · 0 评论 -
选择排序
选择排序的原理1、首先,找到数组中最小的那个元素,2、其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。3、再次,在剩下的元素中找到最小的元素,将它与数组中的第二个元素交换位置。如此往复,知道将整个数组排序它在不断地选择剩余元素之中的最小者该算法将第i小的元素放在a[i]之中,数组的第i个位置的左边是i个最小的元素且它们不会被访问选择排序的内循环只是在比较当前元素与目前已知的最小元素(以及将当前索引加1和检查是否代码越界)。 交换元素的代码写在内循环之外,每次原创 2020-08-29 22:24:42 · 104 阅读 · 0 评论 -
事务(ACID)
事务的原理一个线程在当前只能执行一个方法就是说只能串行执行,先执行完方法A才能执行方法B,如果A、B同时执行了,那就是多线程了。如果要对多线程同时操作某一方法加以限制,那就在方法前加个同步就OK了。一个进程包含多个线程 每个线程在当前只能执行线程中的一个方法,按串行执行。多个线程访问同一个数据库中的数据时,要对这个数据加锁,保证当前只能由一个线程获取并执行这个数据。或者对多个线程的方法加事务。事务的本质是使用了数据库中默认自带的锁事务是为了解决并发问题,是为了解决2个线程中的方法对同一个数据原创 2020-08-29 22:12:50 · 316 阅读 · 0 评论 -
JVM内存组成
为什么学习虚拟机对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码,不容易出现内存泄漏和内存溢出问题。java程序员把控制内存的权利交给了java虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那排查错误、修正问题将会成为一项异常艰难的工作。Java虚拟机内存的各个区域,这些区域的作用、服务对象以及其中可能产生的的问题?运行时数据区域java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个原创 2020-08-29 21:47:15 · 234 阅读 · 0 评论 -
锁机制(悲观锁乐观锁)
锁概念当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取统一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。所以,锁主要用于处理并发问题 。从数据库系统角度分为三种:排他锁、共享锁、更新锁。 从程序员角度分为两种:一种是悲观锁、一种乐观锁。悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系数据库里用到了很多这种锁机制,比如按使用性原创 2020-08-29 21:14:11 · 923 阅读 · 0 评论 -
HashMap的底层原理
参考链接hashmap的底层原理 https://zhuanlan.zhihu.com/p/79507868解决hash冲突的理解 https://blog.youkuaiyun.com/qq_41864321/article/details/93920730HashMap的原理HashMap 其实是一个数组+(链表或红黑树)的数据结构如果两个不同对象的hashCode相同,这种现象称为hash冲突。所以本质上hashmap下的链表和红黑树下除了首结点其他就是hash冲突的键值对 也就是hashcode是一原创 2020-08-28 02:30:40 · 911 阅读 · 0 评论