自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

中都

不知归路,宁愿一世无悔追逐!

  • 博客(190)
  • 资源 (1)

原创 枚举类型

枚举使用enum关键字,(枚举的实例是常量,因此按照命名规范它们都得大写,如果有多个单词用下划线将他们隔开),枚举属于一种类,它有自己的方法,枚举类型可以作为swatch语句的参数(JDK1.5以后支持的),枚举不可以产生实例对象(所有自定义的枚举都是继承Enum(一个抽象类),构造函数默认为私有的);swatch语句的参数只能是byte、short、char、int类型以及他们的包装类和Str...

2019-12-04 17:24:22 378

原创 SpringMVC(六)—— 异常处理机制

文章目录概念SpringMVC的异常处理机制一、创建相关的类二、创建配置文件三、部署四、使用概念系统中的异常分为两种:预期异常:通过try-catch来捕获异常或者抛出异常;运行时异常:RuntimeException,通过测试来检测;再mvc模式中,我们一般需要把dao层、service层、Controller层的异常一层一层往上抛,最后由前端控制器交由异常处理器处理;Sprin...

2019-09-22 16:52:17 130

原创 SpringMVC(五)—— 大文件的传输

文章目录概念大文件传输一、引入依赖二、创建对应的类三、创建配置文件四、部署项目到服务器五、使用概念在前面我们从网页表单获取一个 int 类型或者String类型的数据的时候都是通过一种 key-value 的形式传给后端的,但是对于那些比较大的文件,这种方法就不行了;大文件一般指:图片;视频;文件;大文件传输操作步骤:引入依赖;创建对应的类;创建配置文件;部署到服务器...

2019-09-22 15:27:09 84

原创 SpringMVC (四)—— 利用SSM实现一个简单的登录功能

文章目录需要创建的类需要配置的文件配置文件JSP页面部署项目到服务器使用对应的数据库表User:需要创建的类创建bean类User:public class User { private int id; private String name; private String passwd; //get、set、toString方法;}创建da...

2019-09-21 17:25:51 654

原创 SpringMVC(三)—— SSM整合

文章目录概念介绍实现步骤一、导入依赖二、创建对应的类;bean类:dao层接口service层对应的类Controller层对应的类三、创建对应的文件创建Mapper的配置文件创建MyBatis的配置文件创建Spring的配置文件SpringMVC的配置文件创建JSP显示页面文件配置web.xml文件四、部署项目五、使用概念介绍SSM:Spring+SpringMVC+MyBatisSpri...

2019-09-21 13:54:55 100

原创 SpringMVC(二)—— SpringMVC的基本使用(配置和注解实现)

文章目录配置实现注解实现这节主要讲述 SpringMVC的基本使用,注意我用的是伪代码,即并没有与底层数据库交互,主要在于SpringMVC的基本使用(配置和注解实现);操作步骤:引入依赖(主要是Spring核心包、SpringMVC相关的包);配置和开发(配置:前端控制器、处理器映射器、处理器适配器、配置视图解析器,开发:开发Handler、开发视图);部署到服务器上(Tomcat、...

2019-09-17 13:31:29 201

原创 SpringMVC(一) —— 初识SpringMVC

SpringMVC是Spring的一部分,提供了前台展示相关内容,SpringMVC的底层需要用到Servlet;MVC是一种设计模式:M(model):数据,bean、dao;V(View):页面,JSP;C(Controller):根据请求不同,获取不同的model,返回不同的view;用户请求数据到返回的大体流程:SpringMVC运行的原理:SpringMVC的具体执...

2019-09-15 16:45:25 220

原创 Spring(五)—— Spring对事务的管理

文章目录回顾Spring对事务管理的两种实现方式通过配置实现通过注解实现回顾先来回顾一下事务的相关知识吧;事务的概念:事务是一种SQL 语句的执行,要么成功,要么失败,不能出现部分成功,部分失败,具有原子性;事务所有的SQL全部执行完,才能提交(commit)事务,将数据存储到磁盘;事务执行过程中只要有SQL出现问题,那么事务就必须回滚到最初的状态;事务的特征:ACIDA:事...

2019-09-09 20:28:42 139

原创 Spring(四)—— Spring-Mybatis整合

文章目录第一种方式第二种方式上一节介绍了jdbcTemplate,但是它的手动映射让人感觉很麻烦,这节主要讲述Spring提供的另一种dao层解决方案,即使用Spring-Mybatis整合框架,这也是我学的第一个整合框架;整合的思路:将SqlSessionFactory交给Spring管理;使用步骤:引入依赖;创建bean类,dao层、service层、controller层相关的类...

2019-09-09 18:16:46 136

原创 Spring(三)—— JdbcTemplate

文章目录JdbcTemplate介绍JdbcTemplate介绍前面我们说过 ,Spring是一个一站式框架,就是说我们只需要使用这一个框架就够了,你需要的东西这个框架都有,JdbcTemplate就是一个Spring用来处理数据库的,当然还有一种方法就是使用Spring-Mybatis整合,这节主要介绍JdbcTemplate;Spring在各层都提供了相关的处理办法:web层:ser...

2019-09-08 16:26:31 6930 1

原创 Spring (二)—— Spring AOP

文章目录AOP概念AOP相关术语AOP的实现通过配置实现通过注解实现AOP概念AOP是面向切面,即扩展功能但是不修改源代码,AOP采取横向抽取机制,一般用于 性能监控、事务管理、安全检查、缓存;这里先介绍一下纵向抽取机制:我们一般添加功能是这样做的:public class User { public void add() { //添加用户的功能 ...

2019-09-08 13:10:16 185

原创 Spring(一)—— Spring IOC

文章目录Spring简介无参构造创建实例对象有参构造创建实例对象Spring简介Spring是一个企业级开发框架,为解决企业级项目开发过于复杂而创建的,框架的主要优势之一就是分层架构,允许开发者自主选择组件。Spring的两大核心机制是IOC(控制反转)和AOP(面向切面编程),从开发的角度讲,我们使用Spring框架就是用它的IOC和AOP。IOC是典型的工厂模式,通过工厂去注入对象,...

2019-09-06 23:13:58 2940

原创 MyBatis (八)—— 自定义一个小MyBatis

最近研究了一下Mybatis的底层代码,准备写一个操作数据库的小工具,实现了Mybatis的部分功能:1. SQL语句在mapper.xml中配置。2. 支持int,String,自定义数据类型的入参。3. 根据mapper.xml动态创建接口的代理实现对象。功能有限,目的是搞清楚MyBatis框架的底层思想,多学习研究优秀框架的实现思路,对提升自己的编码能力大有裨益。小工具使用到的核心...

2019-09-06 21:39:17 2740 1

原创 MyBatis(七) —— MyBatis的动态代理

动态代理的相关知识参考我前面的一篇文章→Mybatis(二)—— 动态代理,这篇文章主要看看MyBatis的底层源码,看它是如何实现动态代理的:在前面的MyBatis的使用中,我们可以看到,每次都会用到这句代码:那我们就从getMapper进去,看看MyBatis底层是如何生成代理对象的:显然,它运用到了configuration对象(configuration是一个单例对象,它作为一个...

2019-09-06 21:39:11 310

原创 MyBatis(六)——逆向工程

文章目录什么是Mybatis逆向工程?为什么要使用Mybatis逆向工程?Mybatis逆向工程有什么不足?如何使用Mybatis逆向工程?什么是Mybatis逆向工程?可以针对单表自动生成MyBatis执行所需要的代码,包括:Mapper.java,Mapper.xml,实体类。为什么要使用Mybatis逆向工程?我们之前说过MyBatis是一个"半自动"的ORM框架,SQL语句需要开发...

2019-09-06 21:39:06 2538

原创 MyBatis (五)—— 延迟加载

文章目录高级映射一对一关联映射方式一:resultType方式二:resultMap一对多关联映射方式一:resultType方式二:resultMap多对多关联映射延迟加载高级映射在学习延迟加载之前,先来学习什么是高级映射吧;高级映射其实就是数据库表与表之间的关系,那么具体的关系又可以分为三种(拿学生表和班级表做说明):一对一关系;如学生之于班级一对多关系;如班级至于学生多对多关系...

2019-09-06 21:38:37 3051

原创 MyBatis(四) —— 缓存

文章目录什么是Mybatis缓存?Mybatis缓存分类什么是Mybatis缓存?使用缓存可以减少Java Application与数据库的交互次数,从而提升程序的运行效率。比如,查询id=1的user对象,第一次查询出来之后,会自动将该对象保存到缓存中。下一次查询该对象时,就可以直接从缓存中获取,不需要发送SQL查询数据库了。Mybatis缓存分类一级缓存:SqlSession级别,默认...

2019-09-06 21:38:32 2932

原创 MyBatis(三)—— 动态SQL详解

在业务比较复杂的情况下,我们通常需要去拼接SQL语句来完成相关操作,这样出错率很高,不过,MyBatis有一个非常方便且强大的功能就是动态SQL,使用动态SQL,可以摆脱手动拼SQL的痛苦,接下来我们就一起来学习如何使用MyBatis动态SQL。先来看看我们用的student表:目录结构:Student实体类:/** * @ClassName Student * @Descri...

2019-09-06 21:38:27 2277

原创 MyBtis(二)—— 动态代理

按照代理的创建时期,代理类可以分为两种: 静态:由程序员创建代理类或特定工具自动生成源代码再对其编译。在程序运行前代理类的.class文件就已经存在了。动态:在程序运行时运用反射机制动态创建而成。

2019-09-06 21:38:11 235

原创 MyBtis(一)—— 初识MyBatis

文章目录mybatis基础知识Mybatis入门级使用mybatis基础知识MyBatis是一个实现了数据持久化的开源框架,其实它就像netty之于NIO一样,Mybatis是JDBC的封装,所以:JDBC的缺点:需要频繁的进行数据库的建立、连接、断开操作,浪费资源,影响数据库性能;解决:连接池将SQL语句直接编码在Java代码中,需求改变时,需要修改Java代码;解决:将S...

2019-09-06 21:38:03 302

原创 Java虚拟机(三)—— JVM性能调优

参数设置:设置参数,两种形式:对当前JVM实例设置;对所有的JVM实例进行设置,在全局配置文件*.vm设置堆:-Xms20M 设置堆内存容量的最小值为20M,必须以M为单位-Xmx20M 设置堆内存容量的最大值为20M-XX:PermSize=10M 设置堆中永久代的容量,必须以M为单位-XX:MaxPermSize=20M 设置永久代的最大容量为20M-Xmn10 设置年...

2019-07-25 12:01:12 258

原创 Java虚拟机(二)—— 垃圾回收

文章目录JVM垃圾回收简介如何将对象识别为垃圾:垃圾回收算法标记—清除复制算法标记—整理分代回收算法垃圾回收器内存分配与回收策略方法区的回收JVM垃圾回收简介在JVM提供垃圾回收,将内存空间不在使用的对象进行回收,垃圾回收主要针对堆空间,垃圾回收操作需要消耗一定的资源和时间;JVM对堆空间进行分区:年轻代、年老代、永久代;对年轻代的垃圾回收:minor GC对年轻代和老年代同时作用的GC...

2019-07-20 18:22:48 646 1

原创 Java虚拟机(一)—— 虚拟机原理

文章目录代码的大体执行过程代码在JVM里面的详细执行过程类加载器详解运行时数据区详解先来看下面这一段代码:public class APP { public int add() { int a = 1; int b = 2; int c = (a+b)*3; return c; } public stat...

2019-07-18 12:19:33 7387 9

原创 数据库(八)——数据库连接池

文章目录数据库连接池介绍c3p0、DBCP、Druid的使用c3p0dbcpdruid三大连接池的区别自己实现一个数据库连接池数据库连接池介绍对于简单的数据库连接,在使用之前创建一个连接,在使用之后释放连接,当系统比较复杂时,频繁的进行资源的连接和释放时很消耗系统性能的;数据库连接池:负责分配、管理和释放数据库的连接,它允许服务重复使用一个数据库既有的数据库连接,不需要重复连接;连接池的优...

2019-07-06 19:15:41 478

原创 数据库(七)——JDBC编程

JDBC:Java提供的一套操作数据库数据的应用编程接口,作用在于通过Java代码操作数据库;dk所提供的相应的编程接口;JDBC组件:DriverManager:一系列的数据驱动程序,匹配连接使用通信协议从Java应用程序中获取合适的数据库驱动;Connection:所有和数据库相关的上下文操作通过该接口提供,提供数据库的事务操作,Statment对象等接口方法;Statment:使...

2019-06-29 20:41:51 379

原创 数据库(六)—— 事务、存储引擎、锁

定义:为解除请求的发送者和接收者之间的耦合,而使多个对象都有机会处理这个请求,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它;说明:将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则交给链上的下一个对象处理;就像奖学金的评审一样:责任链模式结构图:①Handler(抽象处理者):定义了一个处...

2019-06-29 20:41:13 377

原创 数据库(五)—— 索引

目录索引:索引的分类:索引的创建和删除的SQL:索引执行过程分析:索引的底层原理索引:索引是一种提高查询效率的数据结构(B树或者是哈希结构);索引是创建在数据库表中,是对数据库表中的一列或者多列;值的进行排序的一个结果,好处就是提高查询效率;索引的分类:普通索引:没有任何限制,可以给任意字段创建普通索引;唯一性索引:使用unique修饰的字段,值不能重复的,主键索引就属于唯一性索引...

2019-06-23 15:50:16 436 1

原创 数据库(四)——数据查询

目录一、单表查询:二、SQL提供的函数:三、取别名:四、多表联合查询㈠ 内查询㈡ 外查询五、实际问题数据库的重点就在于数据的查询:SQL查询语句基本格式:select 属性列表 from 表名 [where 条件表达式]group by 属性名 [Having 条件表达式2][order by 属性 [ASC][DESC]]一、单表查询:带in的子查询:select 属性列表...

2019-06-23 15:48:50 581

原创 数据库(三)——常用函数

目录1、字符串函数2、数值函数3、日期和时间函数4、流程函数5、其他常用函数1、字符串函数函数作用concat(s1,s2......sn)连接s1,s2…sn为一个字符串insert(str,x,y,instr)将字符串str从x位置开始,y个字符长的子串替换为instrlower(str) / upper(str)把字符串转换成小写 / 或大写...

2019-06-23 15:48:20 423

原创 数据库(二)——SQL基本命令

目录一、关于数据库的基本操作1、创建数据库2、查看有哪些数据库3、选择要操作的数据库4、查看数据库中创建的所有数据表5、删除数据库二、关于数据库中表的基本操作6、创建表7、查看表的定义8、删除表9、修改表三、对表中数据的插、删、改、查1、插入记录2、删除记录3、更新(修改)记录4、查询记录MySQL的SQL语句类别划分:DDL(Data Definition Language):数据库定义语言...

2019-06-23 15:47:37 883

原创 数据库(一)——数据库基础

目录一、数据库基本概念二、数据库范式1、第一范式(1NF):2、第二范式(2NF):3、第三范式(3NF):三、启动和关闭数据库的命令:一、数据库基本概念数据库:以一定的方式保存在计算机存储设备上的相互关联、可共享的数据的集合;MySQL目前属于Oracle甲骨文公司,MySQL称之为关系型数据库、微软的SQL server ;MySQL数据库是一种C/S模型即客户端和服务端模型;客户...

2019-06-23 15:47:21 1762

原创 自己实现一个mini的数据库连接池

自己实现一个mini的数据库连接池注意点:数据库连接池中存放的就是数据库操作管道,不仅仅是存放,而且应该是管理这些管道;应该提供外部配置文件去初始化数据库连接池;如果一个数据库操作管道已经被占用,那么其他请求是否应该得到这个管道,也就是说我们要考虑多线程并发下,管道的分配问题;如果做到管道的复用?放回池子中,标示可用,并不是真正的关闭管道;/** * @ClassName XML...

2019-06-23 15:44:01 328

原创 图 —— 最短路径(二)Floyd算法

Floyd最短路算法(全局/多源最短路)求任意两个点之间的最短路径。这个问题这也被称为“多源最短路径”问题。Floyd算法是一个经典的动态规划算法。是解决任意两点间的最短路径(称为多源最短路径问题)的一种算法,可以正确处理有向图或负权的最短路径问题。算法思想从任意节点i到任意节点j的最短路径不外乎2种可能:直接从节点i到节点j,从节点i经过若干个节点k到节点j。所以,我们...

2019-06-23 15:43:08 328

原创 图 —— 最短路径(一)Dijkstra算法

目录1、最短路径概念2、Dijkstra最短路算法图解3、求最短路径的简单代码(1)如果要求打印出指定起点到其他各点的最短路径长度(2)如果要求打印出指定起点到其他各点的最短路径 即连路径也要打印出来1、最短路径概念最短路径就是图中两点之间经过的最短距离(就是最小权值),图必须是带有权值的,可以是无向可以是有向的,算法具体的形式包括:确定起点的最短路径问题:即已知起始结点,求最短路径...

2019-06-23 15:42:42 394

原创 图 —— 拓扑排序

当每个任务有前后置关系时,需要找到一种满足前后置关系的路线,将任务完成。如果将每个任务看成一个节点,任务之间的前后置关系表示为有向图时,这种路线顺序叫做为图进行拓扑排序。也叫关键路径分析。这里的图用邻接矩阵法表示,算法的关键是:找到一个没有后继的顶点 ;在图中删除它,放入结果数组中 ;重复 步骤 1 ,步骤 2 直到图中没有多余的节点;代码:/** * @ClassName N...

2019-06-23 15:42:33 409

原创 图 —— 最小生成树

目录无权图的最小生成树带权图的最小生成树1、无向带权图的最小生成树2、有向带权图的最小生成树说明和总结注意:最小生成树和最短路径不一样的,实际应用中就是:最小生成树求的是经过所有城市的最短的那条路,最短路径只是求两个城市之间最短的那条路,它并不经过所有城市!无权图的最小生成树无权的实现很简单:随便从一个顶点开始找一个经过所有节点的路径即可;下面的代码也是基于深度优先搜索实现的:/**...

2019-06-23 15:41:56 460

原创 图——深度优先搜索和广度优先搜索

目录图的深度优先搜索图的广度优先搜索图的实现方式主要用到矩阵或链表,这里用的矩阵;图的深度优先搜索就是一条路径一条路径的往完了走,需要用到栈;而广度优先搜索就是一层一层的搜索,需要用到队列;这个是两种遍历方式都会用到的表示图节点的代码:/** * @ClassName Node * @Description 图节点 * @Author lzq * @Date 2019/6/19 0...

2019-06-23 15:41:18 430

原创 跳跃表

相比于经常使用的平衡数据结构:B树、红黑树、AVL树等。跳跃表在保证了与他们不相上下的效率的同时实现还相对简单的多;目录跳跃表原理跳跃表的查询跳跃表的插入跳跃表的删除跳跃表的实现跳跃表原理我们平时实现的一个有序链表是这样的:对,跳跃表也是一个有序的数据结构,然后看看上面这个例图,我们在查找数据的时候是需要遍历这个链表的(当然有的时候不需要全部遍历,不过这个数据结构查找的平均时间复杂度还是...

2019-06-23 15:39:54 570

原创 树——2-3-4树、B树(B+树、B-树)

目录2-3-4树B树2-3-4树2-3-4树的特点:它是平衡树;每个节点最多可以存三个数据项;不存在空节点;叶节点可以有数据项没有子节点;插入数据项的时候数据总是插入在叶节点中,这点很重要;对于非叶节点来说:有一个数据项的节点总是有两个子节点;有两个数据项的节点总是有三个子节点;有三个数据项的节点总是有四个子节点;L:表示子节点个数;D:表示数据项个数;针对非叶节...

2019-06-23 15:39:34 635

原创 树——红黑树

文章目录红黑树的定义红黑树的性质定义:红黑树的左旋和右旋红黑树的插入操作红黑树的删除操作实现代码红黑树的定义AVL树为了维护节点平衡,在插入和删除时做了大量的旋转操作,当数据量大了以后,AVL树的旋转操作就拖慢了插入删除的时间,那么红黑树相比于AVL树,插入删除的旋转次数要少了很多,那是因为红黑树并不是一颗绝对平衡的树,它的节点左右子树的高度差不超过2倍(长不超过短的2倍)。红黑树的性质定义...

2019-06-23 15:38:57 648 2

世界名画陈列馆问题——不重复监视

期末的课程设计,找了许多网上的资料,发现都不全,或者不好理解,所以自己写了一个简单易懂符合题目要求的的代码,用回溯法实现

2018-07-10

空空如也

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