自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

WyEdward

一个Java后端程序员

  • 博客(12)
  • 收藏
  • 关注

原创 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 353

原创 动态代理模式

动态代理常用的有两种方式基于接口的动态代理提供者:JDK官方的Proxy类要求:被代理类最少实现一个接口基于子类的动态代理提供者:第三方的CGLib要求:被代理类不能用final修饰的类(最终类)。如何获取代理对象?(对本来的类的方法进行增强 也就是拦截)1、首先定义一个功能接口2、定义一个类,这个类至少实现了一个接口3、适用JDK官方的Proxy类来创建 刚才我们创建的类 的代理对象创建的方式: Proxy.newProxyInstance(三个参数)参数的含义:1、

2020-09-03 13:34:55 106

原创 HTTP协议

参考资料https://www.cnblogs.com/an-wen/p/11180076.htmlHTTP协议简介HTTP(超文本传输协议) 是一种用于分布式、协作式和超媒体信息系统的应用层协议HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应

2020-08-30 01:41:35 191

原创 三次握手四次挥手

参考链接https://zhuanlan.zhihu.com/p/199284611三次握手 四次挥手结构图前言由于 TCP 是全双工的,TCP 进行握手初始化一个连接的目标是:分配资源、初始化序列号(通知 peer 对端我的初始序列号是多少)TCP 进行断开连接的目标是:回收资源、终止数据传输。由于 TCP 是全双工的,需要 Peer 两端分别各自拆除自己通向 Peer 对端的方向的通信信道。这样需要四次挥手来分别拆除通信信道,TCP连接的初始化序列号**不是固定的 **三次握手过程讲

2020-08-30 01:17:20 135

原创 归并排序

归并排序归并排序基于归并这个简单的操作,归并:即将两个有序的数组归并成一个更大的有序数组归并地实现:一种直截了当的方法是将两个不同的有序数组归并到第三个数组中,两个数组中的元素应该都实现了Comparable接口。实现的方法:创建一个适当大小的数组然后将两个输入数组的元素一个个从小到大放入这个数组中。原地归并的抽象方法:** 可以先将前半部分排序,再将后半部分排序,然后在数组中移动元素而不需要使用额外的空间**。merge(a, lo, mid, hi) : 它会将子数组a[lo…mid]和a

2020-08-29 22:36:24 233

原创 选择排序

选择排序的原理1、首先,找到数组中最小的那个元素,2、其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。3、再次,在剩下的元素中找到最小的元素,将它与数组中的第二个元素交换位置。如此往复,知道将整个数组排序它在不断地选择剩余元素之中的最小者该算法将第i小的元素放在a[i]之中,数组的第i个位置的左边是i个最小的元素且它们不会被访问选择排序的内循环只是在比较当前元素与目前已知的最小元素(以及将当前索引加1和检查是否代码越界)。 交换元素的代码写在内循环之外,每次

2020-08-29 22:24:42 66

原创 事务(ACID)

事务的原理一个线程在当前只能执行一个方法就是说只能串行执行,先执行完方法A才能执行方法B,如果A、B同时执行了,那就是多线程了。如果要对多线程同时操作某一方法加以限制,那就在方法前加个同步就OK了。一个进程包含多个线程 每个线程在当前只能执行线程中的一个方法,按串行执行。多个线程访问同一个数据库中的数据时,要对这个数据加锁,保证当前只能由一个线程获取并执行这个数据。或者对多个线程的方法加事务。事务的本质是使用了数据库中默认自带的锁事务是为了解决并发问题,是为了解决2个线程中的方法对同一个数据

2020-08-29 22:12:50 237

原创 JVM内存组成

为什么学习虚拟机对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码,不容易出现内存泄漏和内存溢出问题。java程序员把控制内存的权利交给了java虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那排查错误、修正问题将会成为一项异常艰难的工作。Java虚拟机内存的各个区域,这些区域的作用、服务对象以及其中可能产生的的问题?运行时数据区域java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个

2020-08-29 21:47:15 164

原创 锁机制(悲观锁乐观锁)

锁概念当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取统一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。所以,锁主要用于处理并发问题 。从数据库系统角度分为三种:排他锁、共享锁、更新锁。   从程序员角度分为两种:一种是悲观锁、一种乐观锁。悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系数据库里用到了很多这种锁机制,比如按使用性

2020-08-29 21:14:11 858

原创 存储图的方式

参考:vector的使用 https://blog.csdn.net/tpriwwq/article/details/80609371图分为有向图 无向图存图的几种方法较好的存图能满足的要求1)能表示图中的结点相连的情况2)获得能表示图中的结点相连边的权重3)考虑空间 像邻接矩阵的空间复杂度为O(n^2)4)能知道一个结点 所连的所有结点的边的情况1、邻接矩阵使用二维数组map[][]存储两个边的连接情况可以map[i][j] = 1表示 i和j是有边的 是连接的也可以map[i

2020-08-28 03:49:55 216

原创 HashMap的底层原理

参考链接hashmap的底层原理 https://zhuanlan.zhihu.com/p/79507868解决hash冲突的理解 https://blog.csdn.net/qq_41864321/article/details/93920730HashMap的原理HashMap 其实是一个数组+(链表或红黑树)的数据结构如果两个不同对象的hashCode相同,这种现象称为hash冲突。所以本质上hashmap下的链表和红黑树下除了首结点其他就是hash冲突的键值对 也就是hashcode是一

2020-08-28 02:30:40 814

原创 建树的两种方法

数组建树问题 K: 查找二叉树时间限制:1 Sec内存限制:128 MB提交:72解决:37[提交][状态][讨论版][命题人:外部导入]题目描述已知一棵二叉树用邻接表结构存储,中序查找二叉树中值为x的结点,并指出是第几个结点。输入 第一行n为二叉树的结点个树,n<=100;第二行x表示要查找的结点的值;以下第一列数据是各结点...

2018-08-07 20:28:29 9824

空空如也

空空如也

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

TA关注的人

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