自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(119)
  • 资源 (1)
  • 收藏
  • 关注

原创 Linux快速入门(08)Shell脚本学习

简介:Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Ken Thompson的sh是第一种Unix Shell,Windows Explorer是一个典型的图形界面Shell。Shell教程入门1、shell脚本shell脚本shell script,是一种为shell而编写的脚本程序。然而通常所说的shell却是指

2020-11-22 19:58:29 1

原创 Linux快速入门(07)JDK、Maven和Git的安装

安装JDK6.1 用JDK安装包安装查看是否已经安装JDK:rpm -qa | grep -i java 若有则删除:rpm -e --nodeps java-xxx,删除所有相关的java 下载jdk8安装包,将gz压缩文件放到指定目录如/usr/local,解压:tar -zxvf jdk-8u181-linux-x64.tar.gz 设置全局变量:vim /etc/profile,追加 JAVA_HOME=/usr/local/jdk1.8.0_181 CLASSPATH=$JA.

2020-11-18 11:21:09 7

原创 Linux快速入门(06)XShell安装和Linux基本命令介绍

五 Linux基本命令Linux命令用法一般用man命令可以查看其帮助信息下面给出了一些比较常用的命令。推荐一个Linux命令快查网站,非常不错,大家如果遗忘某些命令或者对某些命令不理解都可以在这里得到解决。中文Linux命令帮助大全:http://man.linuxde.net/5.1 目录切换命令cd usr: 切换到该目录下usr目录 cd ..(或cd../): 切换到上一层目录 cd /: 切换到系统根目录 cd ~: 切换到用户主目录 cd -: 切换到上一个所在.

2020-11-13 23:51:46 47

原创 Linux快速入门(05)Linux文件系统介绍

Linux文件系统简介在Linux操作系统中,所有被操作系统管理的资源,例如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件或是目录都被看作是一个文件。也就是说在LINUX系统中有一个重要的概念:一切都是文件。其实这是UNIX哲学的一个体现,而Linux是重写UNIX而来,所以这个概念也就传承了下来。在UNIX系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。4.2 文件目录结构Lin

2020-11-13 23:39:55 43

原创 Linux快速入门(04)CentOS安装与固定IP配置

1、Linux虚拟机的安装Linux的发行版本中,有很多可供选择,其中最常用的就是Centos和Ubuntu。我们下面的学习都是在CentOS的环境上来学习Linux。CentOS的官网是https://www.centos.org ,如图:点击上面的Download 进入下载选择页面,我们直接选择CentOS Linux中的7版本(也是现在使用最多的版本,比较稳定),然后选择第一个64位的点击进去,进入后,会进入一个下载镜像的选择页面:上面一句话提示我们从原来的...

2020-11-13 23:16:39 25

原创 Linux快速入门(03)VMware安装与固定IP配置

1、VMware安装在我们工作学习的时候,我们使用的通常是windows操作系统或者苹果的操作系统。但是我们的项目在正式的生产环境中运行时,运行的服务器上面通常会安装Linux操作系统。不过现在我们是在学习Linux,一般还是使用window,然后在上面安装一些Linux虚拟机来学习。安装和管理虚拟机最常用的就是VMware,下面来进行一下安装。这里我们安装的是14版本。安装文件的下载网上有很多,破解秘钥也有很多,这里不提供,可以自行查找。VMware本身的安装并不复杂,直接连续下一步安装即可.

2020-11-08 19:27:31 26

原创 Linux快速入门(02)Linux简介

1、 Linux简介前面介绍操作系统时提到了Linux,我们这里只介绍三点。类Unix系统:Linux是一种自由、开放源码的类似Unix的操作系统 Linux内核:严格来说,Linux这个词本身只表示Linux内核 Linux之父:一个编程领域的传奇式人物。他是Linux内核的最早作者,随后发起了这个开源项目,担任Linux内核的首要架构师与项目协调者,是当今世界最著名的电脑程序员、黑客之一。他还发起了Git这个开源项目,并为主要的开发者。2、Linux诞生简介19...

2020-11-08 18:22:02 134 1

原创 Linux快速入门(01)认识操作系统

1、操作系统的简介我通过以下四点介绍什么是操作系统:操作系统(Operation System,简称OS)是管理计算机硬件与软件资源的程序,是计算机系统的内核与基石; 操作系统本质上是运行在计算机上的软件程序 ; 为用户提供一个与系统交互的操作界面 ; 操作系统分内核与外壳(我们可以把外壳理解成围绕着内核的应用程序,而内核就是能操作硬件的程序)。如下图所示:2、操作系统的分类操作系统可以简单分为以下几大类:1)Windows:目前最流行的个人桌面操作...

2020-11-08 17:57:45 54

原创 MySQL复习笔记(07):EXPLAIN 命令详解学习

MySQL EXPLAIN 命令详解MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP)。这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL 语句的。这条命令并没有提供任何调整建议,但它能够提供重要的信息帮助你做出调优决策。1 语法MySQL 的EXPLAIN 语法可以运行在SELECT 语句或者特定表上。如果作用在表上,那么此命令等同于DESC 表命令。UPDATE和DELETE 命令也需要进行性能改进,当这些命令不是直接在表的主码上运行时,为了确保..

2020-09-26 18:08:15 36

原创 MySQL复习笔记(06):索引

本文主要介绍MySQL 中关于索引的一些问题,例如:索引的作用;怎么创建索引;设计索引的原则;怎么优化索引等等。一:索引概述索引一般是通过排序,然后查找时可以二分查找,这一特点来达到加速查找的目的的。所有的MySQL列类型都能创建索引,良好设计的索引能够很好地提高查询的性能,但如果索引过多,由于每次更新操作都会对索引进行更新,反而会影响到数据库的整体性能。因而,遵循一定的原则,设计合适的索引是非常重要的。(1):创建索引的语法CREATE [UNIQUE|FULLTEXT|SPQT.

2020-09-26 18:07:44 22

原创 MySQL复习笔记(05):MySQL表级锁和行级锁

一:概述相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);InnoDB存储引擎既支持行级锁( row-level locking),也支持表级锁,但默认情况下是采用行级锁。MySQL主要的两种锁的特性可大致归纳如下: 表级锁: 开销小,加锁快;不会出现死锁(因为MyISAM会一次性获得SQL所需的全部锁);锁定粒度大,发生锁冲突的概率最高,并发度最低.

2020-09-26 18:07:13 54

原创 MySQL复习笔记(04):存储引擎的选择

一:几种常用存储引擎汇总表二:如何选择一句话:除非需要InnoDB 不具备的特性,并且没有其他办法替代,否则都应该优先考虑InnoDB;或者,不需要InnoDB的特性,并且其他的引擎更加合适当前情况,例如 多读少写,对数据恢复要求不高,反而是 对存储空间要求较高。****尤其注意:不要低估数据崩溃后恢复的重要性,MyISAM将数据写入内存中,然后等待操作系统定期将数据刷回磁盘。MyISAM:默认的MySQL插件式存储引擎。如果应用是以读操作和插入操作为主,只有很少的更新...

2020-09-26 18:06:34 13

原创 MySQL复习笔记(03):常用函数

一:字符串函数需要注意的几个细节:1.cancat中有一个字符串为null,则结果为null。2.left(str,x) 和 right(str,x)中x为null,则不返回任何字符串,不是null.二:数值函数注意的几个细节:1.truncate(x,y) 和 round(x,y) 都能截断,只是round会四舍五入,而truncate不会。三:日期和时间函数四:流程函数五:其他函数原文链接:htt...

2020-09-24 19:18:16 11

原创 MySQL复习笔记(02):MySQL数据类型汇总及选择参考

本文主要介绍了MySQL 的常用数据类型,以及实际应用时如何选择合适的类型。******几个通用的简单原则:*******1. 更小的通常更好。但是要确保没有低估需要存储的值的范围,如果无法确定哪个数据类型是最好的,就选择不会超出范围的最小类型。2. 简单就好。优先选择MySQL内建的类型而不是字符串来存储日期,时间。3. 尽量避免NULL。可为NULL的列会使得索引的优化比较复杂。***********************************************..

2020-09-24 19:17:45 13

原创 MySQL复习笔记(01):SQL基础

定义:SQL即Structure Query Language(结构化查询语言)的缩写,是使用关系数据库的应用语言。包括三个类别:(1):DDL(Data Definition Language) 数据定义语言,主要用于这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用语句包括:create,drop,alter等。(2):DML(Data Manipulation Language) 数据操纵语言,主要用于添加,删除,更新和查询数据库记录,常用 关键字:i...

2020-09-24 19:17:15 14

原创 Spring MVC学习(01)入门

内容概览介绍Spring MVC初步学习和配置接受参数处理表单总结1、 介绍我们开发的很多应用实际上都是web应用,而现在最流行的框架当属Spring的MVC框架。Spring MVC框架基于模型-视图-控制器模式实现,能够帮助我们构建像spring那样灵活和松耦合的web应用程序。2、Spring MVC初步学习和配置每当用户在浏览器中点击链接或者提交表单时,请求就开始了。请求就像快递员一样,把信息从一个地方带到另一个地方,从离开浏览器开

2020-09-24 19:09:18 23

原创 Spring AOP学习(01)面向切面的编程

内容概览什么是面向切面的编程通过切点来选择连接点使用注解创建切面在xml中声明切面总结1. 什么是面向切面的编程前面的内容我们讨论和学习了Spring的依赖注入,依赖注入有助于应用对象之间的解耦。这部分内容我们主要了解Spring AOP(面向切面的编程)。那么什么是aop呢?我们先回顾一下OOP:Object Oriented Programming,OOP作为面向对象编程的模式,获得了巨大的成功,OOP的主要功能是数据封装、继承和多态。AO

2020-09-24 19:08:21 33

原创 Spring IOC学习(02)Bean的高级装配

内容概览环境与profile条件化的bean自动装配的歧义性Bean的作用域运行时值注入总结1. 环境与profile在项目开发的过程中,不可避免的一个问题是项目需要在不同的环境之间运行与切换,比如最经典的例子,通常大部分中小型的项目分为开发(dev),测试(test),生产(prod)三个环境,这三个环境中,配置的数据库,缓存,常量或者秘钥等内容非常有可能是不同的,环境的切换通常非常有可能引发非预期的问题,详细大家都深有体会。这种多

2020-09-24 19:07:08 10

原创 Spring IOC学习(01)Bean的装配

内容概览简化Java开发Spring BeanSpring Bean生命周期装配Bean的可选方案自动化装配Bean通过Java配置类装配Bean通过XML装配Bean导入和混合配置总结1. 简化Java开发Spring框架是为了解决Java开发的复杂性而创建的,相对于EJB的复杂,Spring只用简单的JavaBean(或者Bean)组件就能实现EJB所完成的事情。而且因为Spring的简单,松耦合等特性

2020-09-24 19:05:38 30

原创 MyBatis框架实现(08)总结

前面的步骤基本上已经把mybatis框架实现类,主要的流程都在。下面我们来执行一次测试代码:现在在使用上很接近mybatis了,看一下运行结果:没有问题,框架正常工作!前面的所有内容都只是实现了一个框架的基本流程,并不算实现了一个框架,目前这个框架只能做查询对象功能,局限性很大。我们看到从开始到结束把jdbc分成了很多步骤,在这里分其实意义不大,但是对于一个完整的框架,很有必要,我们分出来的每一部分,包括sqlSession,执行器,参数处理器,结果处理器,结果对象生成...

2020-09-23 00:13:37 7

原创 MyBatis框架实现(07)处理执行结果

书接上回,SQL语句已经执行完了,就差处理结果了,先简单定义结果处理类:让参数处理器进行调用:这样前面SQL语句的执行就圆满了,下面来专门看结果处理器resultHandler。结果处理的大致流程是,利用反射生成结果对象实例,然后把执行SQL获取的结果放到返回类型实例当中,最后返回这个结果,除了第一行获取返回类型对象外,其它的组装结果都实现了,这里的很多代码都和反射有关系,有对反射知识遗忘的可以再去看看。大体的流程就是把结果返回到对象的每个字段当中。现在再来...

2020-09-23 00:12:57 15

原创 MyBatis框架实现(06)执行SQL语句

书接上回,我们获取了mapper对象,可以开始执行SQL语句了,执行时我们调用的起点是从mapper中的方法开始的,流程如下:1、调用mapper中的方法2、mapper代理类调用sqlSession中的方法3、sqlSession调用执行器的方法4、执行器执行时,会调用mybatis中的statement处理SQL语句,将参数替换为实际值5、结果处理器resultHandler对象直接执行,并处理返回的结果上面是一个简略的流程,虽然简略,但是也能反映mybatis真正的处理流程

2020-09-23 00:12:01 13

原创 MyBatis框架实现(05)从sqlSession中获取mapper

继续我们的简单版mybatis。前面的内容以及可以获取sqlSession了,下面我们来看从sqlSession中获取mapper。关于mapper我们只定义了接口,没有实现类,通过源码分析我们知道mybatis使用动态代理为我们生成。所以首先来创建一个mapper代理类:代理类中包含两个属性,一个是sqlSession,一个是接口类,invoke方法中,通过传入方法的全路径获取了我们自定义的MapperMethod对象,如果对象不为空就真正执行数据库方法,这里执行的内容先不定义。下面我们在sqlS

2020-09-23 00:11:25 9

原创 MyBatis框架实现(04)读取mapper配置

书接前文,我们写了一个架子,从SqlSessionFactory中获取SqlSession,但是中间还缺内容,下面我们要做的就是从配置文件中读取映射文件的配置。先来看一下现在的全局配置文件:现在我们只配置了数据源,在mybatis中最少要配置两个内容,一个是数据源,另一个就是映射文件。下面加入映射文件的配置:现在在resource下面加入映射文件:这里的SQL语句的参数先写成字符串的配置形式,其它的内容不变。然后我们在配置文件中读取mapper的内容,在读取前,首先考虑获取mappe

2020-09-22 12:07:06 16

原创 MyBatis框架实现(03)获取一个sqlSession

书接上回,我们读取数据源以后,目的是为了获取一个连接,在mybatis中就是获取一个sqlSession来执行数据库。首先定义一个SqlSessionFactory:我们直接简化定义,创建一个配置属性和一个构造方法,我们的使用步骤就可以加上SqlSessionFactory的创建:然后在这里面写一个获取sqlSession的方法,获取前,首先初步定义SqlSession类:然后在SqlSessionFactory中定义获取sqlSession的方法:然后我们使用框架时就可以直

2020-09-22 12:06:36 6

原创 MyBatis框架实现(02)从配置文件读取数据源

前面回顾了JDBC的写法,下面正式开始手写mybatis。我们自己实现的不是功能全面的,而是一个简单版的mybatis。目的是为了更加熟悉mybatis的流程。读取数据源首先实现mybatis的全局配置读取:1、设定mybatis的全局配置文件就在maven项目的resource文件夹下面2、是一个普通的xml文件,里面包含了数据库的配置和mapper的读取3、读取xml文件使用dom4j技术上面三个是读取的前提条件。现在的目的是先实现,扩展可以以后再做。先来看...

2020-09-22 12:06:04 16

原创 MyBatis框架实现(01)从JDBC开始

学习了mybatis的用法,简单的查看了mybatis的源码,现在我们来徒手实现一个简单的mybatis。mybatis框架是对JDBC的封装,里面涉及到了很多设计模式,比如动态代理,责任链等等。可以说手写一个框架是对Java能力的一个综合应用。下面我们还从JDBC开始。JDBC我们现在改一种写法,使用JDK7的TWR形式,定义dao类:这种方式不用管理资源的关闭。下面来看一下调用方法:这里直接获取编译对象,然后获取结果,看一下调用方法:可以看到,运行结果正...

2020-09-22 12:05:31 7

原创 MyBatis源码分析(06)流程总结

前面对一个查询过程使用debug进行了粗略的源码分析。其实无论是JDBC还是mybatis,都可以归纳为一个大的流程:1、解析数据库配置加载到内存中2、解析SQL语句加载到内存中3、操作数据库我们可以把前面的过程总结为一张简单的流程图:...

2020-09-22 12:04:52 7

原创 MyBatis源码分析(05)执行查询SQL

前面的获取对象的过程基本都debug完了,下面看最后一行:String name = mapper.selectNameById(1);也就是执行SQL语句的具体过程。下面从SQL语句的执行开始debug:1、String name = mapper.selectNameById(1);我们自定义的接口UserMapper是个接口,没有实现类,前面分析获取mapper时我们知道,mybatis会为mapper类生成代理类,生成代理类的方法是使用Mapp...

2020-09-22 12:04:14 20

原创 MyBatis源码分析(04)获取mapper

通过前面的debug,我们知道了SqlSessionFactory和SqlSession两个对象是如何构建的,下面我看一下如何从sqlSession中获取mapper对象,也就是这一行:UserMapper mapper = session.getMapper(UserMapper.class);首先,定位起点:1、UserMapper mapper = session.getMapper(UserMapper.class);这里sqlSession的默认...

2020-09-22 12:03:33 19

原创 MyBatis源码分析(03)SqlSession和Executor

前面的内容在源码中查看了SqlSessionFactory对象的整个构建过程,就是下面这一行代码:SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(inputStream);下面我们来看一下SqlSession对象的构建过程,也就是下面这一行代码:SqlSession session = sqlSessionFactory.openSession();...

2020-09-22 12:02:53 4

原创 MyBatis源码分析(02)Configuration和SqlSessionFactory

分析和学习一个框架的源码是一件非常枯燥和无聊的事(看同事的代码也是如此),所以我们遵循简单的步骤,从粗到细,从我们熟悉的内容到具体内容,一点点来学习mybatis。其实我们对jdbc是很熟悉的,也了解jdbc的步骤,mybatis的底层是jdbc,那么mybatis在大步骤上一定和jdbc是差不多的,而在每一步上面,mybatis又是如何加入了自己的特色和元素,这是我们要分析和学习的地方。首先来看一下我们前面写过的代码:上面的代码第一行和第二行是用来读取资源文件的,最后一行...

2020-09-22 12:02:17 13

原创 MyBatis源码分析(01)核心概念

核心概念在对mybatis框架进行源码分析之前,先来说几个mybatis的核心概念,也是前面讨论框架时遇到的知识点:我们前面在练习mybatis框架的使用时,有个全局配置的mybatis-config.xml文件,它对应的类就是第一个核心概念中的Cnfiguration类。SQLSessionFactory和SqlSession是我们使用常见的操作类,后面几个核心类就是具体的一次操作数据库的不同阶段负责的类。这些核心概念是我们深入了解mybatis需要牢记的内容。...

2020-09-22 11:21:57 8

原创 MyBatis快速入门(22)SpringBoot集成Mybatis

用法参考:https://www.jianshu.com/p/87b37d1e3f21https://www.jianshu.com/p/c338c58a1279声明式事务参考:https://www.jianshu.com/p/b866ab01f90b

2020-09-21 19:09:25 9

原创 MyBatis快速入门(21)Spring集成Mybatis

前面的内容讨论了mybatis的用法,在实际开发中,最常用的是使用spring与mybatis做整合。因此要用到MyBatis-Spring。MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。它将允许 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapper 和SqlSession并注入到 bean 中,以及将 Mybatis 的异常转换为 Spring 的DataAccessException。最终,可以做到应用代码不依赖于 MyBa...

2020-09-21 19:08:40 11

原创 MyBatis快速入门(20)MyBatis通用Mapper4

通用Mapper可以极大的方便开发人员。可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法。极其方便的使用MyBatis单表的增删改查。支持单表操作,不支持通用的多表联合查询。通用 Mapper 支持 Mybatis-3.2.4 及以上版本。添加依赖配置sqlSession修改实体类注意表名与实体类不是一个单词的要配置表名。mapper继承测试selectOne方法...

2020-09-21 19:07:15 22

原创 MyBatis快速入门(19)Mybatis分页插件

下面讨论mybatis中经典的分页插件的使用方法。1. 引入分页插件2. 配置拦截器插件helperDialect:分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。 你可以配置helperDialect属性来指定分页插件使用哪种方言。配置时,可以使用下面的缩写值:oracle,mysql,mariadb,sqlite,hsqldb,postgresql,db2,sqlserver,informix,h2,sqlserver2012,derby特别注...

2020-09-21 19:06:40 31

原创 MyBatis快速入门(18)Mybatis API方法介绍

我们已经讨论过如何配置 MyBatis 和创建映射文件了。MyBatis 的 Java API 就是你收获你所做的努力的地方。正如你即将看到的,和 JDBC 相比,MyBatis 很大程度简化了你的代码并保持代码简洁,容易理解并维护。MyBatis 3 已经引入了很多重要的改进来使得 SQL 映射更加优秀。SqlSessions使用 MyBatis 的主要 Java 接口就是 SqlSession。你可以通过这个接口来执行命令,获取映射器和管理事务。我们会概括讨论...

2020-09-21 19:06:01 18

原创 MyBatis快速入门(17)注解映射方式

mybatis注解方式就是将SQL语句直接写在接口上,优点是对于需求简单,SQL语句简单的系统,开发效率高,不用写xml文件。缺点是当SQL有变化时,需要从新编译代码,一般情况下,不建议使用注解方式,还是建议使用xml映射文件的方式,下面简单介绍一下注解方式。Select注解首先来看注解形式的查询写法:使用注解就是在方法接口上面写增删改查四种形式的注解,并把SQL语句写在@Select注解里面,写法上和xml文件中没什么区别,关于参数上的注解,其实单个参数是不用加的,...

2020-09-21 19:05:08 21

原创 MyBatis快速入门(16)动态SQL

MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射语句中的强大的动态 SQL 语言得以改进这种情形。动态 SQL 元素和 JSTL 或基于类似 XML 的文本处理器相似。在 MyBa

2020-09-21 19:04:33 16

Java技术手册

《Java技术手册 第6版》为《Java 技术手册》的升级版,涵盖全新的Java 7 和Java 8。第1部分介绍Java 编程语言和Java 平台,主要内容有Java 环境、Java 基本句法、Java 面向对象编程、Java 类型系统、Java的面向对象设计、Java 实现内存管理和并发编程的方式。第2部分通过大量示例来阐述如何在Java 环境中完成实际的编程任务,主要内容有编程和文档约定,使用Java 集合和数组,处理常见的数据格式,处理文件和I/O,类加载、反射和方法句柄,Nashorn,以及平台工具和配置。

2019-01-03

空空如也

空空如也

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

TA关注的人 TA的粉丝

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