自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 Mybatis和Spring整合过程及原理分析

面试题:Mybatis和Spring整合原理Mybatis核心元素SqlSessionFactoryBean和MapperScannerConfiguerSqlSessionFactoryBean作用以及加载过程MapperScannerConfigure加载过程Mybatis核心元素sqlSessionFactoryBuilder 将读取到的配置通过该类build方法生成SqlSessionFactorysqlSessionFactory 每次连接都通过sqlSessionFactor

2021-04-08 10:59:42 297

原创 SpringAOP jdk代理实现和CGlib实现的区别

我们都知道SpringAOP是基于代理模式实现的,SpringAOP的两种实现方式分别是使用jdk实现和使用第三方包Cglib实现,SpringAOP会根据实际情况来选择具体使用哪种实现方式选择机制:如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP ; 如果目标对象实现了接口,可以强制使用CGLIB实现AOP ; 如果目标对象没有实现了接口,必须采用CGLIB库,spring会...

2019-10-24 12:00:11 520

原创 TCP的三次握手及为什么要有三次握手

位码:TCP有6种标示位,即位码,SYN(synchronous建立联机),ACK(acknowledgement 确认),PSH(push 传送),FIN(finish 结束),RST(reset 重置),URG(urgent紧急),Sequence number(顺序号),Acknowledge number(确认号)握手过程:第一次握手:主机A向主机B发送syn=1和随机产生的seq ...

2019-10-24 11:37:04 273

原创 JVM的垃圾回收

垃圾回收主要发生在堆上,而堆又分为 年轻代、老年代、永久代三部分,-Xmx表示堆的最大大小,-Xms表示堆的初始大小新生代年轻代主要有三个区域:Eden区、survivorFrom、survivorTo区,比例为8:1:1,通常会保证有一个survivor区是空着的,因为JVM每次只会分配Eden和一块survivor区为对象服务,另一块作为备用,对象首先默认在Eden区上分配空间,sur...

2019-09-16 10:51:19 175

原创 数据库索引(聚集与非聚集)

作用:MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构;索引是用来对数据表中的一个列或多个列进行排序的数据结构,在这里数据库用的平衡树,B-Tree和B+Tree 平衡多路查找树例如:select * from table1 where id=10000如果没有索引,那么必须遍历整个表,直到找到id为10000的这一行数据为止;有了索引之后则可直接通...

2019-08-27 15:34:24 1095

原创 Linux文件属性

Linux文件属性我们先看下Linux文件的基本属性,文件资料范例:drwxr-xr-x. 4 root root 4096 6月 26 15:18 …drwxr-xr-x. 4 root root 4096 6月 26 16:51 .configdrwxr-xr-x. 4 root root 409...

2019-07-15 14:55:43 155

原创 Java值传递问题

Java都是值传递 不存在所谓的引用传递首先我们要明白值传递和引用传递实际是对函数调用时求值和传值的描述方式,并不代表传递时参数的类型(值类型和引用类型)值类型和引用类型的差异: 值类型(也就是Java的基本类型)是直接在栈上分配内存的,而引用类型则是在堆上分配的1.两个类型的变量会有不同:int num = 10;String str = "hello";num是基本类型,就直接...

2019-07-09 11:51:34 211

原创 最小生成树算法(Kruskal算法)

主要思想按照边的权重顺序(从小到大)处理它们,将边加入到最小生成树中,加入的边不会和已经加入的边构成环,直到树中V-1条边为止,这些一开始并不一定是互相连接的,但是后面会慢慢逐渐由一片森林组成一颗树,也就是图的最小生成树定理: Kruskal算法能够计算任意加权连通图的最小生成树证明: 因为下一条被加入的边不会与最小生成树中已经存在的边构成环,那么它就跨越了和树中顶点相邻的顶点组成的集合的补...

2019-06-22 11:28:32 564

原创 Java 基于堆的最大最小优先队列

优先队列解释: 在程序中需要有序的处理一批程序,但一定要求它们全部有序,或者是不一定要一次就将它们排序; 很多情况都是收集一些元素,然后处理最大/最小元素,也就是应该支持删除最大/最小元素和插入元素的一种数据结构。定义: 优先队列是一种抽象数据类型(能对使用者隐藏数据类型),它表示了一组值和对这些值的操作,它的抽象层能使我们方便的将我们的应用程序和我们的具体实现分离开来堆堆可以理解为是一种...

2019-06-22 09:36:36 1249

原创 Java实现最小生成树算法(Prim算法)

Prim算法Prim算法,每一步都会为一颗生长中的树添加一条边。一开始这棵树只有一个顶点,然后哦会向它添加V-1条边,每次总是将下一条连接树的顶点与不在树中且权重最小的边加入树中实现最小生成树的延迟实现通过一个队列保存最小生成树的边(横切边) Queue mst一个最小优先队列保存所有的边 MinPQ pq 通过删除最小边来得到新的最小生成树的边,通过基于堆的最小优先队列来...

2019-06-21 10:29:15 3651

原创 你真的懂i++和++i吗

先看两行代码(i初始值都为0)System.out.println(i++);System.out.println(++i);我们都知道输出的结果是分别是 0 和 1;单从指令结果上来看,a++和++a都是使a的值加1;并且这里也可以看出前++是先增加再使用,而后++是先使用后++但是当我们加上赋值语句时结果又会有不同了public class Test{ public stati...

2019-04-12 12:21:09 291

原创 Spring的自动数据绑定

数据绑定  Spring提供的数据绑定功能即自动的提取HttpServletRequest中的请求参数,然后自动的转型之后赋给对应的对象。 简单的说就是处理前端页面传输到后台的数据信息与具体Java类对象信息的绑定; 其中数据绑定工作是Spring的SimpleFormController类帮我们完成,我们只需要做的是为数据绑定提供一个目标对象,这个对象在Spring中被称为Command对象...

2019-03-08 14:58:20 569

原创 Spring AOP原理及AspectJ的两种不同实现实例

实现原理Spring AOP实现机制是采用的动态代理和字节码生成技术实现的;AspectJ采用的是用编译器将横切逻辑织入到目标对象,动态代理和字节码生成技术是在运行期间为目标对象生成一个代理对象而将横切逻辑织入到这个代理对象中,系统最终使用的是织入了横切逻辑的代理对象,而不是真正的目标对象。核心成员Join Point(连接点)在系统运行之前将AOP模块织入到OOP模块中的系统执行点,即...

2019-03-08 09:26:23 642

原创 Tomcat的Context组件——Web应用的抽象

Context容器对应的就是Web应用,在其中包含了Wrapper组件、Realm组件、AccessLog组件、Errorpage组件、Manager组件、WebappLoader组件、Jar-Scanner组件、安全认证组件、DirContext组件、过滤器组件、NamingReso-urce组件、Pipeline组件、ApplicationContext组件、InstanceMannager组...

2019-01-12 18:52:15 330

原创 Tomcat基本组件及处理响应过程

组成Tomcat高度抽象可以看为由两大核心组件构成,一个Connector连接器组件,还有就是Container容器组件;Connector组件负责处理客户端请求的连接,包括接收客户端连接、接收客户端的消息报文以及消息报文的解析工作;而Container组件则负责对客户端的请求进行逻辑处理,并将结果返回给客户端。Server代表tomcat的运行实例,最顶级组件;一个JVM只会对应一个se...

2019-01-12 18:27:16 311

原创 Web请求分析

B/S架构:客户端使用统一的Browser(浏览器): 由于浏览器具有统一性,它不需要特殊的配置和网络连接,有效的屏蔽了不同服务提供商提供给客户使用服务的差异性。服务端(Server)基于统一的HTTP: 为服务提供商简化了开发模式,使得服务器开发者可以使用相对规范的开发模式,大大节约成本架构概述:HTTP采用无状态的短链接通信方式,通常情况下,一次请求就完成了一次数据交互,通常也对应一...

2019-01-12 18:17:36 337

原创 Java动态代理浅析

定义:在学习Spring AOP的时候都知道,它的实现机制是由动态代理和字节码生成技术实现的,动态代理和字节码生成技术是在运行期间为目标对象生成一个代理对象而将横切逻辑织入到这个代理对象中。动态代理: Java动态代理是写一个类实现InvocationHandler接口,重写invoke方法,在invoke方法中可以进行增强处理的逻辑编写,这个公共代理类在运行的时候才能明白自己要代理的对象,同...

2018-12-12 17:09:04 116

原创 Servlet过滤器及其实现

Servlet过滤器的作用:查询请求并做出相应的动作阻塞请求-响应时,使其不能下一步行动发修改请求的头部和数据,用户可以提供自定义的请求修改相应的头部和数据,用户可以通过定制的相应版本实现与外部资源进行交互Servlet对请求的过滤过程:Servlet创建一个过滤器实例过滤器实例调用init方法,读取过滤器的初始化参数过滤器实例调用doFilter方法,根据初始化参数的值判...

2018-12-09 18:30:03 890

原创 对象的发布与逸出

发布:使对象能够在当前作用域之外的代码中使用。例如,讲一个指向该对象的引用保存到其他代码可以访问的地方,或者在某一个非私有的方法中返回该引用逸出:发布内部状态可能会破坏封装性,并使得程序难以维持不变性条件;当某个不应该发布的对象被发布时,这种情况就称为逸出 class UnsafeRelease{ private String[] states = new String[]{"h...

2018-12-08 17:27:15 420

原创 共享对象的状态与内存可见性

线程最主要的目的就是提高程序的运行性能,线程可以使程序更加充分地发挥系统的可用处理能力,从而提高系统的资源利用率,但是在有多个线程访问同一个对象时,我们就要保证其安全性。要编写线程安全的代码,其核心就是对状态访问操作进行管理,特别是对共享的和可变的状态的访问对象的状态和安全性定义: 对象的状态是指存储在状态变量(例如实例或静态变量)中的数据,而对象的线程安全性则是对象的行为和其规范是否完全一...

2018-12-08 16:25:54 262

原创 六大排序实现及性能特点

1. 选择排序方法:首先找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小的元素那就和它自己交换)。再在剩下的元素中找到最小的元素,将它和数组的第二个元素交换;一直反复直到整个数组排序。特点: 运行时间和输入无关交换共次数为N,算法的时间效率取决于比较的次数 数据移动是最少 时间复杂度:N^2 空间复杂度: 12. 插入排序方法: 找到最小的...

2018-12-03 20:31:55 163

原创 二叉查找树的删除和插入

定义:一颗二叉查找树是一颗二叉树,其中每个结点都包含一个Comparable的键(以及向关联的值)且每个结点的键都大于其左子树中的任意结点的键而小于右子树中任意结点的键插入实现:先递归找出新结点插入的位置;逻辑是如果树是空的,就返回一个含有该键值对的新节点,如果要插入的键小于根结点的键,就继续在左子树递归查找插入改键,否则在右子树中插入该键private Node put(Node x,...

2018-11-17 17:51:41 348

原创 SpringMVC中Dispatcher的工作流程及各角色之间的交互

SpringMVC中的主要角色以及之间的交互Web开发框架的类型引入Front Controller的控制器结构Spring MVC框架的处理器策略Web开发框架的类型首先先了解下Web开发框架的类型,主要有两种:请求驱动的Web开发框架;又称为request/response框架(request/response framework)。这种框架是基于Servlet的请求/响应(reque...

2018-10-22 21:52:40 623

原创 Java并发核心:解决共享资源竞争

并发编程使我们将程序划分为多个分离的、独立运行的任务。 通过使用多线程机制,这些独立运行的任务(也被称为子任务)中的每一个都由一个执行线程来驱动。 一个线程就是在进程中的一个单一的顺序控制流,因此单个进程可以拥有多个并发执行的任务。实现并发最直接的方式是在操作系统级别使用进程; 进程是运行在它自己的地址空间内的自包容的程序; 而实现并发变成最大的困难是如何协调不同线程驱动的任务之间对这些...

2018-09-16 22:11:45 2153

原创 在jsp中用ajax调用另一个action并取得返回值

在后端写一个action来检验验证码是否正确,然后在jsp中ajax调用,并根据返回值执行不同的操作,这里生成验证码和登录页面的代码就不列举了,主要列举讲述如何异步调用检验的Controller并取得返回值:后端代码:将判断结果写入服务器的response对象中,然后前端代码通过ajax调用的时候会直接获取到返回结果public void check(HttpServletReque...

2018-09-05 18:15:51 2074

原创 jsp页面中利用弹窗增加数据

在对后台对数据进行管理的时候我们可以利用弹窗做很多事情,例如增加数据,原理就是利用layer弹窗技术打开另一个前端页面然后提交表单,刷新页面,当然也可以局部刷新。具体实现:在总页面中设置一个添加按钮绑定事件根据layer弹窗直接打开另一个jsp窗口,在另一个jsp页面中绑定form表单直接提交到后端执行增加数据的action,但不能在该action中设置其他视图跳转,最好把该方法返回值设为...

2018-09-05 18:10:17 4445

原创 重载和重写的实现原理

Java具有面向对象的三大特征:继承、封装、和多态。多态性特征的最基本体现有“重载”和“重写”,其实这两个体现在Java虚拟机中时分派的作用。分派又分为静态分派和动态分派,静态分派是指所有依赖静态类型来定位方法执行版本的分派动作,动态分派是指在运行期根据实际类型确定方法执行版本的分派过程。 Animal animal = new Bird();  在上面代码中Animal是父类,Bi...

2018-08-28 20:08:46 2430

原创 Java类加载过程

概述把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析、和初始化,最终形成可以被虚拟机直接使用的java类型。java是一门静态语言,在Java中,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销,但是能为Java程序提供高度的灵活性,Java天生可以动态拓展的语言特性就是依赖运行期动态加载和动态链接这个特点实现的...

2018-08-04 12:11:34 172

原创 Spring MVC前后端交互原理及实现(附实例代码)

前后端交互主要目的 个人觉得,前后端交互的目的无非就是为了实现视图和业务逻辑的转换,前端发出请求,后端根据前端请求进行相应的数据处理然后给出不同响应 先以Servlet为基础的Model工作流程了解一下前后端交互流程 主要实现 前后端交互有许多种实现方式,但都是围绕MVC...

2018-04-25 20:08:06 13065

转载 ssm常见面试题

1、什么是Spring框架?Spring框架有哪些主要模块?Spring框架是一个为Java应用程序的开发提供了综合、广泛的基础性支持的Java平台。Spring帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用程序的开发。Spring框架本身亦是按照设计模式精心打造,这使得我们可以在开发环境中安心的集成Spring框架,不必担心Spring是如何在后台进行工作的。Spring框架至今...

2018-03-07 17:41:31 23400 8

原创 JSP介绍和运行机制

JSP指的是Java Servlet Pages,是基于Java Servlet的Web开发技术,具有如下特点:  能够在任何Web或应用程序上运行             JSP可以适用于所有的平台。当从一个平台跨越到另一个平台时,JSP和JavaBean的代码不需要重新编译,这是因为Java字节码是与平台无关的。   将程序逻辑和页面显示相分离

2017-11-21 21:16:00 1449

原创 SSH项目整合实例

       刚接触SSH整合开发的时候不知道如何入手,下面分享一个简单实例来为大家讲解一下:   实例名称:用户管理系统  实现用户的添加、用户的删除、用户信息的更新以及查询4个操作   首先来搭建环境,struts2所用到的包:   Hibernate所用到的包: Spring所用到的包: 此外还额外用到了三个log4j的包:      把这...

2017-11-21 20:04:19 1441

原创 HIbernate简述

Hibernate是一个对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,使得可以使用对象编程思维来操纵数据库。看到这里应该了解到Hibernate也是一个持久层框架。  ORM的简单规则:类跟表对应 类属性与表字段对应 类实例与表中具体一条记录对应 一个类可与多个表对应,一个表也可对应多个类 DB中表与表之间的关系(如:外键)映射成为Object之间的关系...

2017-10-29 13:58:36 969

原创 数据库基本操作和JDBC编程步骤

在刚开始接触数据的时候会不知道从哪边入手,但其实在这方面我们要用的东西很少,只要知道几个基本的操作语句就可以了,下面我简单介绍一下基本的数据库操作语句和JDBC编程步骤: 连接命令:mysql -h[主机地址] -u[用户名] -p[用户密码]创建数据库:create database [库名]显示所有数据库: show databases;打开数据库:use [库名]当前...

2017-10-18 21:21:20 869

原创 Servlet基本概念及其生命周期和状态

Servlet简介:  Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,是用Java编写的运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层,主要功能在于交互式地浏览和修改数据,生成动态Web内容。  Sun公司在其API中...

2017-09-29 19:12:43 714

原创 struts编程出现There is no Action mapped for namespace [/] and action...除三大可能外的另一原因

可谓最经典的一个报错,There is no Action mapped for namespace [/] and action name [login!method1] associated with context,这是我写DEMO时运行遇到的问题。这应该也是最经典的一个问题,相信许多小伙伴们都在各种调namespace或者查看struts.xml文件到底有没有在src目录下,然后几个来

2017-09-24 21:28:37 855

原创 No configuration found for the specified action:问题

学习Struts2时,照着书敲DEMO的时候出现了一个bug,显示No configuration found for the specified action: 'login' in namespace: ''. Form action defaulting to 'action' attribute's literal value.login是我的一个Action名,运行没其他问题,但是反

2017-09-24 19:28:30 569

原创 Java 线程池原理及简单实现

线程池是和数据库连接池类似的一种池,而仅仅是把池里的对象换成了线程。核心思想:最主要就是复用的思想,把运行阶段尽量拉长,对每个任务的到来,不是重复创建、销毁,而是重复利用之前建立的线程来执行任务线程池的作用:在程序启动的时候就创建若干线程来响应处理,他们被称为线程池,里面的线程称之为工作线程。1.降低资源损耗。通过重复利用已经创建好的线程来减少在创建新线程和销毁的时候带...

2017-09-18 19:54:15 349

微信连接核心JAR包

包含连接必须的httpclient-4.5.5.jar、httpclient-cache-4.5.5.jar、httpcore-4.4.9.jar,绝对真实,亲测有效

2018-04-22

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

TA关注的人

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