自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(100)
  • 收藏
  • 关注

原创 SpringBoot下测试框架的入门总结

测试框架JUnitJUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。JUnit框架下的常用类有:JUnitCore,Assert,TestCase,TestResult,TestSuite,@Test本节参考jUnit 教程JUnitCore用于运行测试代码,类似main函数。Result result = JUnitCore.runClasses(TestJunit.

2020-08-21 19:20:22 428

原创 Spring4.x 读后小结

索引1.IoC(单例模式,工厂模式)容器级别的类:Bean级别的类:2.容器事件(观察者模式)3.AOP(代理模式)Spring对AOP的实现基于JDK动态代理的AOP基于CGLib动态代理的AOP性能问题AspectJ对AOP的实现LTW(Load Time Weaving)4.Spring Cache与Redis5.Spring DAO相关基础结构事务连接泄露6.Quartz7.SpringMVCController1. Request/Response消息解析2. Request参数获取3. 数据转换

2020-07-28 21:40:40 228

原创 深入浅出MySQL——小结

1.基础概念1.1.存储引擎MyISAM不支持事务,不支持外键,访问速度快每张表由3个文件构成照(存储表定义文件,数据存储文件,索引文件)支持3种存储格式(默认为静态表,会自动将把保存的内容的空格去除)InnoDB外键绑定功能提供事务能力其他MEMORY,MERGE,TokuDB1.2.数据类型的选择varchar,text,blobtext,blob可以存储大文本,但是若存在大量删除该字段的情况时,最好定时采用optimize命令优化表结构text,blob的精确匹配

2020-06-11 20:44:02 292

转载 Mybatis Generator配置详解

转载自:Mybatis Generator最完整配置详解<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org...

2019-07-31 10:24:38 157

原创 基于Redis分布式锁

基本概况分布式锁的要求:**互斥性。**在任意时刻,只有一个客户端能持有锁。**不会发生死锁。**即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。**独立性。**加锁和解锁必须是同一个客户端,客户端自己不能把别人加的锁给解了。**具有容错性。**只要大部分的Redis节点正常运行,客户端就可以加锁和解锁。互斥性SET key value ...

2019-06-10 20:10:12 227

原创 Git取消跟踪文件

1.取消新加文件的跟踪此时只要配置.gitignore文件即可,具体的文件编写方法可以自行查询2.取消已追踪文件的跟踪要用到git rm -r -n --cached <file>命令,其中,-n代表暂不执行该命令,仅显示会受到该命令影响的文件.在确定后,可以取消添加-u,即git rm -r --cached <file>来完成文件的取消跟踪,然后将文件加入.git...

2019-04-17 20:11:51 2147

原创 Git stash

Git stashgit stash命令可以用在不想commit当前工作进度,但是要checkout分支的时候,此时就可以用git stash来保存当前进度到堆栈中.stash的相关命令如下:git stash 将当前工作存入栈中;git stash pop 在当前分支中,把栈中的工作进度恢复出来,并删除栈中对应内容;git stash apply 在当前分支中,把栈中的工作进度恢复出来...

2019-04-09 21:21:23 796

原创 Java枚举类

简述Java中的枚举类其实可以理解为有固定数量实例的普通类.这两者的差别主要是:在枚举类中,我们要先确定好实例的名称和种类.如下所示:// 定义一个星期的枚举类public enum WeekEnum { // 在第一行显式地列出7个枚举实例(枚举值),系统会自动添加 public static final 修饰 SUNDAY, MONDAY, TUESDAY, WEDNES...

2019-04-08 20:13:55 184

转载 Java8 日期/时间(Date Time)API指南

Java 8日期/时间( Date/Time)API是开发人员最受追捧的变化之一,Java从一开始就没有对日期时间处理的一致性方法,因此日期/时间API也是除Java核心API以外另一项倍受欢迎的内容。为什么我们需要新的Java日期/时间API?在开始研究Java 8日期/时间API之前,让我们先来看一下为什么我们需要这样一个新的API。在Java中,现有的与日期和时间相关的类存在诸多问题,其...

2019-03-27 20:33:14 223

原创 git cherry-pick 和 rebase

cherry-pick该方法可以用于将一个分支的提交在另一个分支复现一遍。举个例子,当不小心在test分支上编写了新功能,并commit后,虽然新功能无误,但是自己的工作分支mywork却没有新功能,则此时方法有两个,一个是删除mywork分支,并重新从test分支新建一个mywork2分支.另一个是采用cherry-pick方法.即首先查出在test分支上提交新功能的commit版本号,...

2019-03-25 21:22:08 507

原创 Bean的参数配置

Bean的参数配置可以分为:作用域;生命周期1. 作用域作用域可以分为:singleton,prototype,request,session。singleton的意思为同一Bean容器中仅保留一份实例。prototype的意思为每次调用都生成新的实例对象,并且该对象会被垃圾回收。request的意思为在同一request中仅生成一份实例。session为在同一session中仅生成...

2019-03-18 20:48:56 851

转载 Mongodb系列- spring-data-mongodb使用MongoTemplate实现分页查询

转载于:http://www.cnblogs.com/jycboy/p/8969035.html在用spring-data-mongodb框架开发的过程中,需要实现分页查询,就百度了下,没找到满意的又google了下,找到了思路.在spring-data-mongodb 官方文档中,建议你使用PagingAndSortingRepository 来实现分页,但是我是真的不喜欢这个设计啊!!...

2019-03-08 11:24:27 961

原创 基于Introspector的DO,DTO类转换方法

JavaBean作为一种简单的Java类,可用作数据的载体。针对这种简单的Java类,我们要想对其本身进行操作就可以使用内省操作。具体涉及的类有3个:Introspector,BeanInfo,PropertyDescriptor....//通过Introspector获得Object类对应的JavaBean的BeanInfo,再通过BeanInfo获得所有属性的属性描述器。Bea...

2018-09-04 14:28:13 500

原创 NIO

本地传输参考:NIO 入门 以往的IO的数据传输方式是以流来进行的。类似两个位置间又一条水渠,数据就是流水,会从一点流向另一点,也正因如此,流的方向都是单向的,并且要想缓存数据流就要通过BufferedInputStream类(相当于水箱)。而NIO则通过引入channel和buffer的概念,改变了传输方式。在NIO中,两点的数据传输首先是修路,修好的路就是channel,然后是通车,这个...

2018-07-12 16:16:25 990

原创 IO

参考: 深入分析 Java I/O 的工作机制 Java IO 中的“装饰模式”和“适配器模式”装饰者模式参考:图说设计模式–装饰模式 当考虑为一个类增加功能时,我们可以使用继承机制。但是当功能繁多并且要不断嵌套复用时,继承就不是一个好的选择了。对此我们可以采用装饰模式来达到这个目的。即将一个类的对象嵌入另一个对象中,由另一个对象来决定是否调用嵌入对象的行为以便扩展自己的行为,我...

2018-07-12 15:54:21 288

原创 Lambda表达式

函数式接口参考:Java 8函数式接口functional interface的秘密 函数式接口是指只定义了唯一的抽象方法的接口(除了隐含的Object对象的公共方法), 因此最开始也就做SAM类型的接口(Single Abstract Method)。除了Java API里面已有的一些接口(Runnable,Comparator,FileFilter,InvocationHandler,A...

2018-07-06 16:27:42 319

转载 类加载

转载自:【深入Java虚拟机】之四:类加载机制类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。它们开始的顺序如下图所示: 类加载过程包括了:加载,验证,准备,解析,初始化,共计5个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开...

2018-07-04 15:30:58 209

原创 再看代理模式

参考: Java 技术之动态代理机制 代理模式及Java实现动态代理静态代理需求:假如对于接口A来说,其实现类ImplementA类实现了A接口的方法,现在若要在ImplementA实现的方法的基础上再加入新的操作,如计时,检查等,我们可以使用继承(随之会带来继承泛滥,因此继承常用于有较强层级关系的类中),也可以参考装饰者模式中的思想,即实现一个新的实现类NewA,该类通过调用Im...

2018-07-03 21:00:39 216

原创 Floyd算法

参考: 算法6:只有五行的 Floyd 最短路算法 Floyd算法 Floyd算法求最短路径并记录路径算法简介Floyd算法可以用于含有负权重路径但是没有负权重环的有向图,该算法的作用是寻找全源最短路径的集合,因此其结果应该保存在一个二维数组dis之中,该数组dis[i][j]存放的是节点i到节点j的最小代价。Floyd算法的核心思想是动态规划,即每次都会比较当前状态的结果和上一...

2018-07-03 09:15:34 667

原创 Bellman-Ford算法

参考: Single-Source Shortest Path:Bellman-Ford Algorithm SPFA——基于Bellman-Ford的队列优化 How is the Bellman Ford algorithm a case of dynamic programming? Shortest Path and Dynamic Programming Algorithms...

2018-06-29 16:56:27 473

原创 Dijkstra算法

算法简介Dijkstra算法是用于非负有向图的单源最短路径算法。该算法的核心思想是广度优先搜索,具体可以参看维基百科的动图。 算法思路首先建立两个链表,openList和closeList,用于维护当前进度,前者表示待检查的点,后者表示未检查的点。再建立一个数组dis,用于表示当前点到起点s的花费/距离,dis一开始全为无穷大。(如果是将距离起点的花费作为node类的属性则可以不用单...

2018-06-29 09:33:36 396

原创 A*搜索算法

参考: A星算法详解(个人认为最详细,最通俗易懂的一个版本) 最短路径A*算法原理及java代码实现(看不懂是我的失败)算法简介A*搜索算法结合了基于广度搜索的Dijkstra算法和贪心思想的BFS最佳优先搜索的优点设计的最短路径算法,他可以用于含有障碍物的图算法之中。其思想是首先将节点的邻近节点加入带处理队列之中,但是并不是依次处理,而是通过一个评估函数,依据该函数有优先级地对待...

2018-06-28 18:22:37 7985 1

原创 红黑树

2-3树即节点可以包含1或2个Node,子节点有2或3个的树。查找2-3树的查找采用了迭代的方法,即当不等于当前节点的key时,则迭代进入子节点进行查找,若子节点为空则返回父节点和未找到的标记。若等于当前节点则返回当前节点和找到的标记。find(node, Key){//也适用于B-tree if(node==null) return {isFind...

2018-06-26 09:59:03 268

原创 堆排序

思想:堆排序利用了优先队列的数据结构,其排序方法是将所有数据放入优先队列中,然后依次从堆顶取出元素,放在数组中,完成排序。因此,其核心是优先队列的实现。 优先队列的实现是依靠二叉堆进行的。二叉堆的性质是其两个子节点都要小于等于父节点(不分左右)。对应的有上浮和下沉两个操作。 上浮:当元素比父节点大时交换二者,直至满足元素小于父节点。 下沉:将元素的左右子节点比较,并把元素与较大子节点交换...

2018-06-20 10:26:37 237

原创 快速排序

思想:快速排序的核心思想是切分,即选定一个元素,大于他的放一边,小于等于他的放另一边。当切分好的数组恰好都是有序的时候,那整个数组就都有序了。为了保证切分的数组有序,就只用对两个子数组进行再次快排(切分),直至被切为单位长度1的数组。 切分操作至少保证了一个切分元素是在正确位置上的。复杂度:时间复杂度:O(nlgn)O(nlgn)O(nlgn)空间复杂度:O(1)O(1)O(1)...

2018-06-19 20:12:50 185

原创 归并排序

思想:归并排序的核心是归并,即将两个有序数组合并成一个有序数组的操作。通过该方法加上分治的思想我们设计了归并排序,首先将一个数组划分为两个数组,由于这两个数组并未排好序,因此要继续划分,直至变成两个有序的数组(即长度为1),这时再逐级调用归并算法,不断将有序小数组归并成有序大数组。自上而下&amp;amp;amp;amp;自下而上归并的区别: 自上而下:采用了分治的思想,因此每次划分的数组大小都是差不多一样大的...

2018-06-19 17:11:02 246

原创 希尔排序--加速版插入排序

思想:类似于插排,不过进行比较和交换的两个数之间距离并不为1,由此可以产生多组序列,希尔排序正是先对各组序列(每组序列的数间距都为h)进行插排,然后减小步长h,再次插排,直至h减至1。由于插排会受输入数组的顺序影响,因此首先进行的大步长插排其实就是对普通插排的加速过程。希尔排序的关键是h的选择。复杂度:时间复杂度:O(n2)O(n2)O(n^2)比较操作耗时为O(n2)O(n2)...

2018-06-19 14:25:37 208

原创 插入排序

思想:从选择第一个元素开始直至最后一个元素,将选择元素朝前依次与前面排序好的元素比较,若小于该元素,则将该元素插入。复杂度:时间复杂度:O(n2)O(n2)O(n^2)比较操作耗时为O(n2)O(n2)O(n^2)交换操作耗时为O(n2)O(n2)O(n^2)空间复杂度:O(1)O(1)O(1)特点:不占额外空间运行时间与输入有关,排序性能取决于初始排序程度...

2018-06-19 13:57:20 183

原创 选择排序

思想:从第一个元素开始,依次与之后的元素比较,从而找出最小值,并将最小值与第一个值交换,然后对第二个元素重复上一步。复杂度:时间复杂度:O(n2)O(n2)O(n^2)比较操作耗时为O(n2)O(n2)O(n^2)交换操作耗时为O(n)O(n)O(n)空间复杂度:O(1)O(1)O(1)特点:不占额外空间数据移动(交换)次数少运行时间与输入无关...

2018-06-19 11:08:47 169

原创 Servlet/JSP入门学习笔记

servletCookieCookie采用name-value的方式保存,用于弥补http的无状态无连接的特性。 Cookie可以分为两种,一种是未设置生存周期的临时性的,一旦网页关闭就会消失。并且临时性Cookie只能通过本窗口和其衍生的子窗口打开,新建的独立窗口是没法打开临时性Cookie的。 另一种是设置了生存时间的Cookie,该类Cookie会在生存周期内缓存于客户端账户...

2018-06-14 17:24:17 433

原创 JDBC学习笔记

我是通过易百教程和JDBC获取连接对象源码分析进行JDBC的粗略学习了,主要是为了梳理知识脉络。现在总结如下。 JDBC是用来建立Java程序与数据库的连接的,Java规定了一系列的API,然后让各个类型的数据库公司去实现这些API,Java只负责通过API与数据库通信。数据库公司实现好的API打包成一个jar包,我们称之为数据库的驱动包。通过将该包导入到Java的库中,就可以使用对应的数据...

2018-06-07 11:08:37 249

原创 数据链路层入门笔记

数据链路层提供的服务是将数据报从一个物理节点传输到另一个物理节点。 在该层中,上层数据报加上头尾构成了帧,帧是在数据链路层的传递数据单元。帧头部一般是MAC地址,用于标识该帧的去处。该层所要解决的问题是保证数据的可靠交付,处理多数据源发送数据时信道的分配。差错编码为了保证数据的可靠交付,我们采用了差错编码的方式进行数据的差错检测和纠正。原理如下: 差错编码的检测和纠正都要依据与数据...

2018-05-24 22:04:28 819

原创 网络层入门笔记

网络层服务模型网络层的主要功能有两个:转发和路由。按照是否预先建立连接,可以分为无连接服务模型和连接服务模型。其中无连接服务模型的代表是数据报模型。有链接的代表是虚电路网络模型。虚电路网络(Virtual Circuit network)特点是:复杂网络,简化边缘 VC模型是基于连接服务模型的,类似于传统的电话电路网络,会首先建立连接,然后依据该链接进行传输,最后在关闭该链接。其好处...

2018-05-24 10:53:29 646

原创 “计算机网络”分类备注

本条目下的文章皆为学习MOOC–计算机网络课程的学习笔记,其中笔记中的图片也都来源于课程的PPT。

2018-05-20 19:05:51 384

原创 传输层入门笔记

多路复用和多路分用因为网络层只有一个IP协议,而应用层则有HTTP,SMTP等各种协议。因此为了将消息合并/分解就需要传输层进行多路复用/分用。 多路分用无连接分用—UDP一个进程至少有一个端口号,一个端口号对应一个socket。 一个UDPsocket包含了SP(源端口号)和DP(目标端口号)两个标识。面向连接分用—TCP在运输层中面向连接的网络传输多使用TC...

2018-05-20 19:03:44 597

原创 Socket编程入门笔记

套接字用于应用层到传输层的接口,就想起名字描述的一样,起到了插头与插座的作用。他帮助客户进程正确的找到目标服务器的目标进程。因此套接字对外采用的是IP地址+端口号的形式,对内采用的是套接字描述符(int)。 套接字类型可以分为STREAM,DGRAM,RAW三类。 STREAM用于TCP,DGRAM用于UDP,RAW用于网络层(跨过了传输层)。 ...

2018-05-19 12:53:15 201

原创 网络应用层入门笔记

网络应用的体系结构 客户机/服务器结构(C/S); 点对点结构(P2P); 混合结构; 网络应用进程通信 进程寻址方法:IP地址定主机,端口号(Web:80,E-MAIL:25)定进程。 应用层协议 公开协议:由RFC文档定义 私有协议:自己设置,如P2P使用的。 应用层协议包含的内容:消息类型,消息语法,字段语义,规则描述。 网络应用对传输的要求 时延,数据丢失率,带宽 ...

2018-05-18 15:42:09 223

原创 计算机网络体系笔记

OSI参考模型共分为7层,应用层,网络层,数据链路层和物理层。其中前4层只有端口有,故叫端对端层。后3层则为非端对端层。 物理层:该层主要用于数据的物理传输实现,如01的表示方法,传输接口等等。 数据链路层:该层用于将上层数据进行加头加尾,保证数据可以从01的物理层中顺利提取出来。另外还在头部加入了目标地址和源地址,保证数据传输方向。除此之外还有流量控制,差错控制,访问控制等功能。 网络层:...

2018-05-17 21:31:12 211

原创 MySQL---基本命令总结

DDL–数据定义语句创建数据库/表数据库CREATE DATABASE crashcourse or CREATE SCHEMA crashcourse;表CREATE TABLE test(column_name1 column_type1 constraints, column_name2 column_type2 const...

2018-05-17 09:42:38 556

原创 多线程--基础部分

Java的多线程在一定情况下可以提高CPU效率,但是多线程对同一变量的访问可能会造成竞争状态,为此可以通过线程间的沟通或者同步的方式解决。要使用同步,可以使用synchronized关键字和wait等方法组合使用。不过作为一种重量级锁,同步会降低程序的执行效率,带来阻塞。为改善阻塞情况,我们在一些特点的场合可以把同步改为使用volatile关键字。另一方面,同步作为悲观锁的一种,我们也可以采用CAS操作等乐观锁的方式

2018-05-05 16:43:29 227

空空如也

空空如也

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

TA关注的人

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