- 博客(122)
- 资源 (10)
- 收藏
- 关注
翻译 mysql5.7官网直译SQL语句优化--索引合并的优化
索引合并是使用多个范围扫描去检索行数据并最终合并他们的结果为一个结果集的方法。这种合并至能发生在单一表的索引扫描上;不能夸表合并扫描结果。这个合并会产生union并集,交集,或者是既有并集又有交集。例如如下的查询将会使用索引合并:SELECT * FROM tbl_name WHERE key1 = 10 OR key2 = 20;SELECT * FROM tbl_name
2017-11-12 09:40:36 484
翻译 mysql5.7官网直译SQL语句优化--范围查询优化
范围查询的优化范围访问方法使用单一索引去检索表中的数据包含一个或者多个索引值的行记录。范围查询能够用于单一索引或者联合索引。下面的部分说明了优化器使用范围查询的条件。>范围访问方法对单一索引 对于单一索引,索引间隙值可以很容易的通过在where条件中正确的表现出来,表示为区域条件而不是间隙值 给一个单一索引值定义一个区域条件如下: 1)对于BTREE和HASH索引,当使用=,
2017-11-09 17:32:03 1621
翻译 mysql5.7官网直译SQL语句优化--where条件查询优化
这部分讨论的优化是针对WHERE条件的。通过SELECT语句来举例,但是同样的优化也适用于DELETE和UPDATE中的WHERE语句。 注意:因为mysql优化器的工作一直在继续,所以不可能把mysql执行优化的全部信息都展示在这里。你也许会在牺牲可读性的前提下重写查询从而来提高算法操作速度。因为mysql会自动去做同样的优化操作,所以你应该避免这样做,从而保证你的查询更加可理解且具
2017-11-07 18:53:40 720
翻译 mysql5.7官网直译SQL语句优化--select语句优化
8.2 sql语句优化大致内容如下:8.2.1:SELECT语句的优化8.2.2:优化子查询,派生表和试图引用8.2.3:优化INFORMATION_SCHEMA查询8.2.4:优化数据改变语句8.2.5:优化数据库权限8.2.6:其他优化建议数据库应用的核心逻辑是完成sql语句的执行,sql语句可以直接提交或者通过API后台提交。该部分指南帮助提高各种my
2017-11-07 15:18:52 253
翻译 mysql最新版explain详解来自官网直译(6)
为了得到执行计划的具体信息是以一个命名连接生成的,命令格式如下:EXPLAIN [options] FOR CONNECTION connection_id;EXPLAIN FOR CONNECTION返回的EXPLAIN信息就是当前被给出的连接所执行的查询的解析信息。因为数据的改变,也许会产生不同的结果当执行EXPLAIN去评估查询文本时。这种行为的不同能够对诊断更多瞬时行为问题有帮助。
2017-11-06 17:08:15 355
翻译 mysql最新版explain详解来自官网直译(5)
对于查询语句,Explain输出的额外扩展信息并不是Explain输出的一部分,而是需要通过SHOW Warning命令来查看,当执行EXPLAIN之后在执行即可。而输出的信息包含了优化器如何选择表和在查询中的列信息,在运用重写和优化规则之后的查询是怎么样的,还有一些可能的注意事项关于优化进程。额外的信息值有对查询语句有效,在执行Explain之后通过SHOW WARNING命令查看信息,而对
2017-11-06 16:07:07 300
翻译 mysql最新版explain详解来自官网直译(4)
EXPLAIN输出的解释说明通过Explain执行计划输出结果中的值,你能够得到明确的提示,如何才能完成一个好的表连接。也能告诉你大概需要扫描多少行的数据Mysql才能执行完成查询。如果你用max_join_size系统值限定了查询,这行的输出通常被用来决定哪一个multiple-table在查询中被执行和那些被去除。具体请看5.1.1的服务的配置。接下来的例子说明了一个多表连接的查询是怎
2017-11-05 17:35:41 193
翻译 mysql最新版explain详解来自官网直译(3)
Explain的连接类型EXPLAIN输出的type列的值说明了表是怎么样连接的。在以JSON格式的输出中,该列的值为access_type属性的值。下面从最好到最差的连接类型来说说明:system:表中只有一行数据的表,这也是一种特别类型的常数连接类型const:在执行查询开始的时候,大多数都只有一行是匹配成功的。因为是单行匹配,所以需要查找该行对应列的值可以被优化器看做是常数。常数
2017-11-04 21:08:13 362
翻译 mysql最新版explain详解来自官网直译(2)
explain输出信息详解id(JSON name:select_id): 这是select执行查询的顺序号。这个值也可以是null,当输出行引用的是其他行结果的合集时。在这种情况下,输出行的table这一列将会是一个类似于的值,表示这一行引用来自行id为M和N的结合。select_type(JSON name:none):查询的类型,下面表格中展示的类型都可以出现在这一列中。而对于JSO
2017-11-03 11:36:20 288
翻译 mysql最新版explain详解来自官网直译(1)
执行计划学习笔记8.8.1用查询计划优化查询mysql的执行计划提供了关于mysql执行语句的信息说明执行计划可以用于SELECT查询、DELETE删除、INSERT插入和UPDATE更新语句。当执行计划用于可使用执行计划的sql语句时,mysql会展示优化器关于执行sql语句的详细信息。也就是mysql会怎么样去执行这个sql语句,包括怎么做表连接和怎么排序。关于更具体的执行计划
2017-11-02 19:54:44 501
转载 简单实现排序算法java版本
1.直接插入排序(1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。(2)实例(3)代码实现:public class insertSort { public insertSort
2017-10-31 21:18:41 158
转载 Excel中多个shell内容合并的方法记录
1)新建一个shell用来保存合并后的数据集合2)在新建的shell名字地方右键单击,选择查看代码3)在弹出的Microsoft Visual Basic for Applications 中生成的工作簿中,复制粘贴进如下代码Sub 合并当前工作簿下的所有工作表()Application.ScreenUpdating = FalseFor j = 1 To Sheets.Cou
2017-10-29 19:32:01 4329
原创 springmvc事务控制批量插入多张表格
@Componentpublic class SynchronizationDataImpl implements SynchronizationData { private static final Logger logger = LoggerFactory.getLogger(SynchronizationDataImpl.class); @Autowired pri
2017-10-17 09:09:04 3786 1
原创 rocketmq入门学习笔记
特性:1)支持分布式2)可以保证严格的消息顺序3)支持高并发4)可以通过生产者push或者是消费者pull两种模式来消费消息5)通过nameServer来协调分布式。6)支持事务控制,支持失败重试。集群模式:单主、多主、多主多备(同步/异步)同时创建多个目录:mkdir -p home/rocketmq/store/{commitlog,consumequeue
2017-10-15 18:27:49 705
转载 使用 Docker搭建 ZooKeeper 集群
备注,此文来源:https://segmentfault.com/a/1190000006907443防止以后找不到,故记录一下:镜像下载hub.docker.com 上有不少 ZK 镜像, 不过为了稳定起见, 我们就使用官方的 ZK 镜像吧.首先执行如下命令:docker pull zookeeper当出现如下结果时, 表示镜像已经下载完成了:
2017-09-24 11:37:35 9024 5
原创 mysql函数大批量插入数据+java多线程并发案例
当前需要做个测试,mysql数据库需要5000万数据来完成性能测试,于是我们写了个函数来完成这个功能。函数定义如下:#批量插入数据库的函数BEGIN #定义需要插入数据库表中的字段; DECLARE id BIGINT(20); DECLARE phone_number varchar(11); #定义变量控制插入数据库表的行数
2017-09-23 21:42:56 15919 2
原创 dubbo常用配置总结
1)连接控制服务器端连接数(并发)控制的配置方式:dubbo:provider protocol="dubbo" accepts="10" />//服务提供者方的配置。或者:dubbo:protocol name="dubbo" accepts="10" /> //最多在同一时刻接受10个连接客户端连接数控制的配置方式:dubbo:reference interfa
2017-09-17 11:40:41 5069
原创 记录一次mac+idea+springmvc开发的applicationContext.xml读取文件找不到异常处理
普通的springmvc项目,不过是用mac+idea开发的,然后平时我很少用main方法来测试,都是通过controller测的调用,用postman工具来测试,而不会用main()方法测试。而最近公司通过dubbo服务提供RPC的调用,我们作为提供方,自然不会去写controller来调用,而是通过暴露接口的形式给友方调用。 然后自己在测试的时候,因为前辈们已经把application
2017-09-12 15:36:29 1691 2
转载 mysql 执行计划explain的列详解和说明
Mysql查询优化器是如何工作的,EXPLAIN的每个输出行提供一个表的相关信息,并且每个行包括下面的列:列:id: MySQL Query Optimizer选定的执行计划中查询的序列号。表示查询中执行select字句或操作表的顺序,id值越大优先级越高,越先被执行,id相同,执行顺序由上至下。列:select_type查询类型:SIMPLE:简单的select查询,不使用uni
2017-09-04 16:43:59 440
原创 idea导入spring源码提示jar包找不到错误修改方法
对于开发来说,spring足够强大到每个人都想研究研究,而对于idea工作环境越来越受欢迎,我们更希望将spring源码导入idea中来学习。安装git:从github中下载spring源码包并解压缩安装gradle:因为spring源码的编译工具不是maven而是gradle所以你需要安装这个打开idea import spring减压后的源码包 选择gradle编译并配置对应的gr
2017-08-31 17:18:50 7199
原创 3小时学会使用Git
GIT不仅仅是个版本控制系统,她还是个内容管理系统(CMS),工作管理系统等git与svn的区别点: 1)GIT是分布式的,SVN不是,这也是最核心的区别; 2)GIT把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里; 3)GIT分支和SVN的分支不同:分支在svn中一点不特别,就是版本库中的另外的一个目录; 4)GIT没有...
2017-08-27 11:08:03 399
原创 2小时学会使用SVN
svn的生命周期:创建版本库,检出,更新,执行变更,复查变化,修复错误,解决冲突,提交更改svn检出操作:svn checkout http://svn.server.com/svn/project_repo --username=user01svn解决冲突:svn diff 命令查看更改svn update 命令来更新当前版本库Select: (p) postpone,
2017-08-24 10:21:58 298
原创 Java与Python对比学习2
JAVA的输入操作可以分为:字符输入输出writer和read这样的函数,而字节的输入输出则是以inputsteam或者outputstream这样的类来完成。当然java也专门处理特定对象的装饰类就不一一叙述了。主要就在与read和writer,input和output. python3中要接受用户的输入用input()函数,来完成程序和用户之间的交互。如:messa
2017-08-20 16:25:19 362
原创 Java与Python对比学习1
java和python都是面向对象的语言,但是各种都有不同的特点,本文从对比的角度去看,java和python3的相同和不同之处。首先不同的是java是先编译后运行,java文件必选编译为class文件才可以运行,而不存在直接交互输出。而python3中可以直接在安装了python3之后直接输入print("helloworld")运行即可输出。不过java在将要推出的java9中同样也增加了
2017-08-12 12:00:18 1240
原创 线程池的执行流程
合理使用线程池能够带来3个好处:1)降低资源消耗;2)提高响应速度;3)提高线程的可管理性;4)提高应该程序的高可用性。那么线程池是如何工作的呢,借用并发编程艺术一书中的话来描述当一个任务提交给线程池之后,线程池会怎么做?首先,线程池会判断核心线程池里的线程(线程总数是30,则coreSize有可能是10)是否都在执行任务。如果没有比方说当前只有9个线程在工作,则从核心线程
2017-07-13 08:49:26 5959 2
原创 Join,CountDownLatch,CyclicBarrier,Semaphore和Exchanger
CountDownLatch允许一个或者多个线程等待其他线程完成操作,之后再对结果做统一处理; 适用场景,分布式系统中对多个微服务的调用,并发执行并且必须等待全部执行完成才能继续执行后续操作; 其实在java中默认的实现是join()方法,join()方法主要的作用是当前线程必须等待直到join线程执行完成之后才能继续执行后续的操作,
2017-07-10 09:03:30 236
原创 线程的同步控制synchronized和lock的对比和区别
我们在面试的时候,时常被问到如何保证线程同步已经对共享资源的多线程编程。我们当然用同步代码块,同步方法,又或者是用java提供的锁机制来达到对共享资源变量的同步控制。那么我们什么时候用synchronized,什么时候用lock,以及他们的区别是什么呢;首先来说synchronized 是Java的关键字,是Java的内置特性,在JVM层面实现了对临界资源的同步互斥访问,通过对对象的头文件
2017-06-26 15:57:21 21702 1
原创 JVM虚拟机调优过程总结--来自java程序性能优化一书
jvm虚拟机调优的主要过程有:1)确定堆内存的大小;通过参数-Xmx设置最大堆大小,-Xms设置最小堆大小,在jvm启动参数中添加即可;2)合理分配新生代和老年代(-XX:NewRatio用来设置新生代和老年代的比例,-Xmn用于设置新生代的大小一般是整个堆的1/4-1/3大小,-XX:SurvivorRatio用来设置新生代中,eden空间和s0空间的比例关系),确定永久区大小(-XX:
2017-06-16 11:10:15 439
原创 通过TransactionDefinition接口来学习spring事务的隔离级别和传播特性(4.3.4版本)
通过spring官方包中带的原代码来看spring的事务的5中隔离级别和7种传播特性; 基于4.3.4版本spring-tx-release-sources.jar的源码 源码如下:/* * Copyright 2002-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not
2017-06-15 18:17:54 9827
原创 Nio学习之通过通道实现最简单的文件复制代码
通过通道来实现文件的复制,输入参数分别为sourceFile和destFile,表示要复制的文件,和复制完成后目标文件的名称通过参数的形式输入,如果文件不可读或者不可写则抛出异常package part18;import java.io.FileInputStream;import java.io.FileOutputStream;import java.nio.ByteBuf
2017-05-30 18:09:21 323
原创 Nio学习之通道的获取
旧的I/O类库中有三个类被修改了,可以产生FileChannel.他们分别是可读的FileInputStream,用于生成通道;可写的FileOutputStream,用于生成通道,即可读又可写的RandomAccessFile,用于生成通道。并且都是字节操纵流。而字符流则不能用于产生通道;package part18;import java.io.FileInputStre
2017-05-30 17:48:25 265
原创 java开发常用工具类集合总结
1)java正则表达式的匹配包括:邮箱,手机,姓名,昵称,身份证号,银行卡号等;2)生成6位随机数;3)对url中字符串进行编码和解码4)获取客户端ip地址5)获取系统当前时间6)生成32位编码不含横线7)生成MD5编码8)通过身份证获取性别9)通过身份证获取生日10)通过身份证获取生日11)手机号中间4位替换成星号12)邮箱地址加星号13)生成随机
2017-05-24 10:08:16 7983
原创 JSONArray与Java对象之间的转换
通过接口调用或者配置文件,我们拿到了为json形式的字符串;其中已数组形式保存了同一类型的多个对象;我们要将其转换为Llst形式的java对象集合;直接上代码:首先是要保存的数据对象;@Data //该注解提供get/set方法,lombok插件public class PlatformModel { private String id; private St
2017-04-20 19:07:08 47583 4
原创 深入解读spring4的面向切面编程AOP
读了>中的面向切面编程一章后,觉得有必要记录一下,自己对面向切面编程的理解,必定概念是概念,理解是理解;为什么会有面向切面编程:主要是为了解脱业务主要功能模块,叫你的业务功能更专一,更简单,写起来更方便;对于面向对象编程的开发人员,都知道,如果有重用或者通用的功能,我们想到的很有可能是继承或者委托,但是这种方式如果大量存在,则会使得整个应用体系变的非常脆弱,牵一发而动全身,因为有一个共同的
2017-04-15 14:01:55 1773
原创 图解java的BI0,NIO,最简单直白的理解同步和异步IO模型
最古老的javaIO通信模式BIO,即阻塞IO,同步调用,性能低:在服务器端:有专门的客户连接 接收器Acceptor,当有新的客户端连接到达后,Acceptor负责第一步连接,然后给每一个客户端连接创建一个新的线程来处理对应的业务;处理完成后,通过输出流返回给客户端,并将线程销毁,这也是最典型的一对一服务模型。对应模型图如下:从图中可以明显看出对应Web Browser1,2
2017-03-31 14:31:46 4985 1
原创 mysql数据库索引学习总结
人们时常把索引比作是书本的目录,是一种用来提高数据库查询效率的方法,通过在指定字段上创建索引来提高查询效率;那么为什么使用索引可以提高效率,以及如何添加,删除和查询索引,查询创建的索引是否真正起作用,注意事项等,一一说明:索引的定义:对数据库中某一列或者多列(创建索引时指定)中的值进行排序并与表中结构一一映射的数据结构;索引生成的具体数据结构,有可能各不相同;这属于索引的具体实现;不在此做讨论
2017-03-20 16:11:32 6371 3
原创 java开发过程中遇到的csv文件生成和导出
首先要直达csv文件其实就是以逗号分隔的文本文件;那么我们要导出指定java对象的数据的时候该怎么样生成文件发送到指定邮箱或者是通过浏览器导出到本地;首先是文件的创建,方法如下://其中exportData参数表示的为要导出的数据对象集合,大多数情况来自数据库的查询//outPutPath参数表示你要导出的文件路径//fileName参数表示你要生成的csv文件的名字p
2017-03-14 16:29:58 1219 1
原创 java8时间转换函数学习,教你脱离jdf转换的痛苦
java8中提供的一批新的时间函数给开发者使用,有了这些时间转换函数,码农们再也不用担心繁杂的时间转换问题了; 新的时间函数所在包为:java.Time;日常开发中用到最多的函数可以分为三种:(1)处理日期的:LocalDate; LocalDate nowDay = LocalDate.now(); //获取系统当前时间的日期 如:2017-03-11LocalDate now
2017-03-11 11:42:20 794
原创 Netty高性能之道1-传统RPC调用性能差的三宗罪
这是阅读完李林峰的《Netty权威指南》之后,觉得本书中比较重点的部分,就做了摘抄,即加深了学习,又可以给大家提供一些帮助。传统RPC调用性能差的三宗罪1、网络传输方式问题。传统的RPC框架或者基于RMI等方式的远程服务(过程)调用采用了同步阻塞I/O,当客户端的并发压力或者网络延时增大之后,同步阻塞I/O会由于频繁的wait导致I/O线程经常性的阻塞,由于线程无法高效的工作,I/O处理能
2017-03-04 13:22:00 704
原创 JVM中Hotspot虚拟机中时常被问及的垃圾收集算法和垃圾收集器
垃圾收集算法:即虚拟机垃圾收集的具体过程展示;垃圾收集器:即使用具体垃圾收集算法来回收内存的具体实现;【标记--清除算法】是最基础的收集算法,分为两个阶段:首先是标记出所有需要回收的对象,而判定的标准是,是否有引用依然在引用当前对象,即是否可达,然后清除掉所有被标记出来的对象。该算法的缺点是:效率比较慢,因为java堆中存在有大量对象需要判断是否可达,从而做出标记,比较耗时,另外是清除
2017-02-25 21:45:57 237
visual studio 2008 编写的计算器
2013-04-19
详细java学习课件
2012-09-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人