<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[UFO___的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/UFO___</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; UFO___]]></copyright><item><title><![CDATA[正则表达式入门到熟练使用]]></title><link>https://blog.youkuaiyun.com/UFO___/article/details/104116110</link><guid>https://blog.youkuaiyun.com/UFO___/article/details/104116110</guid><author>UFO___</author><pubDate>Thu, 30 Jan 2020 19:17:49 +0800</pubDate><description><![CDATA[1、正则表达式介绍

用来处理复杂的字符串文本，例如查找、匹配、分割、替换等。大部分语言都有内置的支持，例如：Java、C++。

我会使用工具RegexBuddy进行演示

2、普通字符

在正则表达式中，字母、数字、下划线、以及没有特殊定义的标点符号都是普通字符。正则表达式中的普通字符在匹配的时候会匹配一个与之相等的一个字符。



上图中，上面的正则表达式 hello 就匹配到了对应下面字符...]]></description><category></category></item><item><title><![CDATA[Spring动态数据源与运行时动态添加数据源]]></title><link>https://blog.youkuaiyun.com/UFO___/article/details/98475522</link><guid>https://blog.youkuaiyun.com/UFO___/article/details/98475522</guid><author>UFO___</author><pubDate>Mon, 05 Aug 2019 11:34:36 +0800</pubDate><description><![CDATA[1、多数据源与动态数据源

当项目不只是要用到一个数据库的时候就需要使用到多个数据源了，这种场景很多，比如要查找的数据不在同一个数据库库中，或者是要做数据库读写分离。应对上面的问题主要有两种解决方法。

第一种：在Spring中注入多个DataSource，然后根据不同的DataSource生成不同的SqlSessionFactory，把要操作不同数据库的mapper接口放在不同的包下，并且使用M...]]></description><category></category></item><item><title><![CDATA[MySQL系列-优化之分页查询]]></title><link>https://blog.youkuaiyun.com/UFO___/article/details/81281630</link><guid>https://blog.youkuaiyun.com/UFO___/article/details/81281630</guid><author>UFO___</author><pubDate>Mon, 30 Jul 2018 15:26:33 +0800</pubDate><description><![CDATA[1.分页查询之前先按索引排序

我们经常会上一些小说网站看小说，他们总是会把最近更新了的小说放在最前面，也就是第一页，而很久没更新的就放在后面了。那么这样网站是如何实现的呢？我的猜想有一张小说表，表里面一个last_update表示最后更新字段，并且对这个字段建立了索引，按last_update从大到小排序之后再按需求的页面大小进行分页。

那为什么分页查询总是要排序呢？

由上面的例子可以看出，...]]></description><category></category></item><item><title><![CDATA[MySQL系列-优化之join多表连接]]></title><link>https://blog.youkuaiyun.com/UFO___/article/details/81279227</link><guid>https://blog.youkuaiyun.com/UFO___/article/details/81279227</guid><author>UFO___</author><pubDate>Mon, 30 Jul 2018 10:22:55 +0800</pubDate><description><![CDATA[1.先看一个单表案例

有如下下数据表，只有主键id



执行sql【explain select id,n1 from tb where n2='f' and n4&amp;gt;'c' order by n3 desc limit 1;】

通过explain分析：



不光是ALL全表扫描，而且还产生了一次内部排序using filesort，效率及其底下。

那么如何建立索引呢？首先n2这个字...]]></description><category></category></item><item><title><![CDATA[MySQL系列-优化之精准解读in和exists]]></title><link>https://blog.youkuaiyun.com/UFO___/article/details/81221983</link><guid>https://blog.youkuaiyun.com/UFO___/article/details/81221983</guid><author>UFO___</author><pubDate>Thu, 26 Jul 2018 17:42:02 +0800</pubDate><description><![CDATA[1.解读in和exists

这两个关键字的区别主要是在于子查询上面，in是独立子查询，exists是相关子查询，例如：

用in查询有员工的部门       ：select dept_name from dept where id in (select dept_id from emp);

用exists查询有员工的部门：select dept_name from dept where exi...]]></description><category></category></item><item><title><![CDATA[MySQL系列-优化之count()]]></title><link>https://blog.youkuaiyun.com/UFO___/article/details/81178296</link><guid>https://blog.youkuaiyun.com/UFO___/article/details/81178296</guid><author>UFO___</author><pubDate>Tue, 24 Jul 2018 09:40:52 +0800</pubDate><description><![CDATA[1.count()函数的作用

count()函数有两个作用，一是统计表数据的行数，二是统计某列非空值得数量。



我们用count(*)来统计行数，当然这个*可以是任意的常量，比如 1 'x' 666 之类的。

count(row)用来统计某列非空值得数量，这个row是列名。

2.count(1)会比count(*)快吗？

答案是不会，起码在我的mysql5.5上是这样的。

【当MyS...]]></description><category></category></item><item><title><![CDATA[MySQL系列-优化之like关键字]]></title><link>https://blog.youkuaiyun.com/UFO___/article/details/81164996</link><guid>https://blog.youkuaiyun.com/UFO___/article/details/81164996</guid><author>UFO___</author><pubDate>Mon, 23 Jul 2018 11:55:17 +0800</pubDate><description><![CDATA[like关键字我们也是经常使用，用来模糊查询用户名，那么like如何进行优化呢？这篇博客就简单讨论一下like的优化，但是真实的生产环境要比这复杂多了。

1.%号不放最左边

先创建表和索引。



然后进行查询【explain select * from tb where name like 'e%';】



可以看到我们的查询使用上了idx_name这个索引，因为我们的 'e%' 规定了只...]]></description><category></category></item><item><title><![CDATA[MySQL系列-优化之覆盖索引]]></title><link>https://blog.youkuaiyun.com/UFO___/article/details/81162087</link><guid>https://blog.youkuaiyun.com/UFO___/article/details/81162087</guid><author>UFO___</author><pubDate>Mon, 23 Jul 2018 10:22:42 +0800</pubDate><description><![CDATA[1.什么是覆盖索引

我们知道MySQL的B+Tree索引是用我们字段的数据来建立索引的，比如说我们的主键id字段，就是用所有的id来组织这颗索引树，如果我们再对name字段建立索引的话，这个二级索引就是用name字段的数据来组织这颗索引树。那么问题就来了，我们知道对于二级索引而言他的叶子节点存储了对应数据行的id（MySQL系列-B+Tree索引详解），也就是说最后我们的查询还是要通过主键id来...]]></description><category></category></item><item><title><![CDATA[MySQL系列-优化之查询索引优化]]></title><link>https://blog.youkuaiyun.com/UFO___/article/details/81158035</link><guid>https://blog.youkuaiyun.com/UFO___/article/details/81158035</guid><author>UFO___</author><pubDate>Sun, 22 Jul 2018 22:27:23 +0800</pubDate><description><![CDATA[这篇博客我们来谈谈如何正确使用索引以及正确建立索引，当然在开发当中情况比这个复杂多了，还要根据业务实际情况来，这篇博客就只能算是入门了，要想继续进阶的话可以和公司的DBA混个两年，前提是他愿意要带你玩。话不多说，进入正题。

如果不了解explain执行计划可以看我之前的文章MySQL系列-优化之explain执行计划详解

说明：我使用的是mysq5.5，windows10操作系统。可能实验测试...]]></description><category></category></item><item><title><![CDATA[MySQL系列-优化之explain执行计划详解]]></title><link>https://blog.youkuaiyun.com/UFO___/article/details/80951869</link><guid>https://blog.youkuaiyun.com/UFO___/article/details/80951869</guid><author>UFO___</author><pubDate>Sat, 07 Jul 2018 17:37:42 +0800</pubDate><description><![CDATA[1.id介绍

这个id不是主键的意思，他是用来标识select查询的序列号，包含一组数字，表示查询中执行select子句或者操作表的顺序。

会出现以下情况：

id相同：按从上到下顺序执行

id不同：id值越大，优先级越高，越先被执行

id相同不同的同时存在：优先执行id值大的，如果id值相同，则按从上到下的顺序执行

id为null表示是用来合并结果集的，在sql使用union关键字合并...]]></description><category></category></item><item><title><![CDATA[MySQL系列-优化之再谈索引及explain简介]]></title><link>https://blog.youkuaiyun.com/UFO___/article/details/80918976</link><guid>https://blog.youkuaiyun.com/UFO___/article/details/80918976</guid><author>UFO___</author><pubDate>Wed, 04 Jul 2018 23:39:06 +0800</pubDate><description><![CDATA[1.再谈索引

前面我出了一篇关于索引的博客MySQL系列-B+Tree索引详解，索引太重要了可以多谈谈，简单来说索引是排好序的快速查找的数据结构。一般来说一张表建立的索引不要超过5个，数据规模没有达到百万级别，建不建索引也没太大区别。

2.索引的优势

索引具备两个优势

一 、可以快速查找

二、他已经按建立索引的字段排好序了。

3.索引的劣势

一、索引也是存储在磁盘中的，需要占的空间比...]]></description><category></category></item><item><title><![CDATA[MySQL系列-innoDB行锁详解]]></title><link>https://blog.youkuaiyun.com/UFO___/article/details/80877533</link><guid>https://blog.youkuaiyun.com/UFO___/article/details/80877533</guid><author>UFO___</author><pubDate>Sun, 01 Jul 2018 21:28:17 +0800</pubDate><description><![CDATA[一直都很想讨论一下innoDB的行锁，但是看到了何登成大神的博客之后发现他的研究更深入说的更好，是一篇非常优秀的博客，但是需要对索引有比较深入的了解，因此看他的博客之前可以先看看我的一篇关于索引的文章MySQL系列-B+Tree索引详解。同时也深感数据库易学难精，一条SQL下去可能发生了很多你不知道的细节，要想学的很透彻靠博客和书籍是不够的，还是得直接阅读源码，这是一个非常漫长的路。下面是大神的博...]]></description><category></category></item><item><title><![CDATA[MySQL系列-事务及乐观锁悲观锁]]></title><link>https://blog.youkuaiyun.com/UFO___/article/details/80868317</link><guid>https://blog.youkuaiyun.com/UFO___/article/details/80868317</guid><author>UFO___</author><pubDate>Sun, 01 Jul 2018 00:40:26 +0800</pubDate><description><![CDATA[以下我们针对innoDB存储引擎进行分析，作为MySQL的默认存储引擎，innoDB越来越重要了。

1.什么是事务

数据库事务（Database Transaction）,是指作为单个逻辑工作单元执行的一系列操作，要么完全执行，要么完全地不执行。

比如说简单的转账事务包含两个SQL语句，一条是给转账人减钱，另一条是给被转账人加钱，这俩条SQL要么都执行，要么读不执行，不允许中间因为停电或者出...]]></description><category></category></item><item><title><![CDATA[MySQL系列-MyISAM表锁详解]]></title><link>https://blog.youkuaiyun.com/UFO___/article/details/80794902</link><guid>https://blog.youkuaiyun.com/UFO___/article/details/80794902</guid><author>UFO___</author><pubDate>Sun, 24 Jun 2018 23:33:02 +0800</pubDate><description><![CDATA[1.S锁和X锁S锁（共享锁）又称读锁，若事务T对数据对象A加上S锁，则事务T可以读A但不能修改A，其他事务只能再对A加S锁，而不能加X锁，直到T释放A上的S锁。这保证了其他事务可以读A，但在T释放A上的S锁之前不能对A做任何修改，除非先获取A的X锁。X锁（排他锁）又称写锁，若事务T对数据对象A加上X锁，事务T可以读A也可以修改A，其他事务不能再对A加任何锁，直到T释放A上的锁。这保证了其他事务在T...]]></description><category></category></item><item><title><![CDATA[MySQL系列-查询语句练习题]]></title><link>https://blog.youkuaiyun.com/UFO___/article/details/80707670</link><guid>https://blog.youkuaiyun.com/UFO___/article/details/80707670</guid><author>UFO___</author><pubDate>Fri, 15 Jun 2018 22:03:45 +0800</pubDate><description><![CDATA[先准备4张表：学生表老师表课程表成绩表1.查询选修课程'8105'且成绩在80到90之间的所有记录解析：简单题答案：select * from sc where cno='8105' and grade &amp;lt;=90 and grade &amp;gt;=80;2.查询成绩为79、89、或99的记录解析：简单题答案：2. select * from sc where grade in('79','89'...]]></description><category></category></item><item><title><![CDATA[MySQL系列-查询语句]]></title><link>https://blog.youkuaiyun.com/UFO___/article/details/80658051</link><guid>https://blog.youkuaiyun.com/UFO___/article/details/80658051</guid><author>UFO___</author><pubDate>Mon, 11 Jun 2018 22:50:28 +0800</pubDate><description><![CDATA[先准备两张表：tb1tb21.查询所有字段select * from tb1;2.查询指定的列select id from tb1;3.给表取别名 select id from tb1 t1; 或者 select id from tb1 as t1;4.给列取别名select id as ip from tb2 as t1 where t1.id=1;在sql语句里面要t1.id获取id这一列，但...]]></description><category></category></item><item><title><![CDATA[MySQL系列-详解DDL语句]]></title><link>https://blog.youkuaiyun.com/UFO___/article/details/80642231</link><guid>https://blog.youkuaiyun.com/UFO___/article/details/80642231</guid><author>UFO___</author><pubDate>Sun, 10 Jun 2018 20:55:47 +0800</pubDate><description><![CDATA[DDL（Data Definition Languages）语句：数据定义语言，这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter等。下面具体介绍各种常用DDL语句：1.数据库级别显示所有数据库：show databases;进入某个数据库：use db_name;创建一个数据库：create databse db_na...]]></description><category></category></item><item><title><![CDATA[MySQL系列-使用JDBC操作MySQL常用数据类型]]></title><link>https://blog.youkuaiyun.com/UFO___/article/details/80634301</link><guid>https://blog.youkuaiyun.com/UFO___/article/details/80634301</guid><author>UFO___</author><pubDate>Sun, 10 Jun 2018 11:31:38 +0800</pubDate><description><![CDATA[MySQL常用数据类型有这些 MySQL系列-常用数据类型1.插入和获取日期类型表的设计如下表中数据如下：如何从结果集中获取这些类型的数据呢?第一个date类型，我们可以使用getDate()方法获取。例如：Date d = resultSet.getDate(1);//返回 java.sql.Date 但是 java.sql.Date extends java.util.Date打印结果为201...]]></description><category></category></item><item><title><![CDATA[MySQL系列-正确使用原生JDBC]]></title><link>https://blog.youkuaiyun.com/UFO___/article/details/80620675</link><guid>https://blog.youkuaiyun.com/UFO___/article/details/80620675</guid><author>UFO___</author><pubDate>Fri, 08 Jun 2018 14:45:10 +0800</pubDate><description><![CDATA[一般我们也很少原生JDBC，都是在ORM框架上做二次开发，确实框架帮我们做了很多事情，但是原生JDBC我们还是需要掌握的，网上很多代码为了省事写的很不规范，很容易误导第一次接触的人JDBC的人，接下来我详细解释一下使用原生JDBC的每个步骤，以及规范的编写代码，以MySQL为例。主要分为以下六个步骤：1.加载数据库驱动2.根据配置的信息(用户、密码等等)获取链接3.根据链接获取向数据库发送SQL语...]]></description><category></category></item><item><title><![CDATA[MySQL系列-常用数据类型]]></title><link>https://blog.youkuaiyun.com/UFO___/article/details/80616971</link><guid>https://blog.youkuaiyun.com/UFO___/article/details/80616971</guid><author>UFO___</author><pubDate>Fri, 08 Jun 2018 01:18:11 +0800</pubDate><description><![CDATA[1.MySQL常用数据类型分类日期类型 数字类型(整数和小数) 字符类型 二进制类型2.日期类型MySQL数据类型字节数含义date3字节日期，格式：2014-09-18time3字节时间，格式：08:42:30datetime8字节日期时间，格式：2014-09-18 08:42:30timestamp4字节 格式和datetime一样但是它可以根据mysql设置的时区自动修改year1字节年份...]]></description><category></category></item></channel></rss>