什么是索引 索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。 假设我们创建了一个名为people的表: CREATE TABLE people (peopleid SMALLINT NOT NULL, name CHAR(50) NOT NULL); 然后,我们完全随机把1000个不同name值插入到people表。下图显示了people表所在数据文件的一小部分(在数据文件中name列没有任何明确的次序): 如果我们创建了name列的索引,MySQL将在索引中排序name列: 对于索引中的每一项,MySQL在内部为它保存一个数据文件中实际记录 继续阅读 >>


董恒毅 17/11/16 16:44:37
在看《Spring实战》第七章的时候,需要上传文件,书上说的是将上传的图片保存在/tmp/uploads这个目录下,因此我给项目的根路径下创建了/tmp/uploads这个目录,但是却出现了标题中的错误,经过一番斗争之后,明白了问题的所在。 问题分析 要解决这个问题,我们需要看一下Spring的源码: public class StandardMultipartHttpServletRequest extends AbstractMultipartHttpServletRequest { //中间代码省略 /** * Spring MultipartFile adapter, wrapping a Servlet 3.0 Part object. */ @SuppressWarnings("serial") private static class StandardMultipartFile implements MultipartF 继续阅读 >>


董恒毅 17/11/14 08:52:43
package spittr.model; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; /** * Created by hg_yi on 17-11-7. */ public class Spitter { private Integer id; @NotNull @Size(min=5, max=16, message="{username.size}") private String username; @NotNull @Size(min=5, max=25, message="{pas 继续阅读 >>


董恒毅 17/11/10 10:49:02
原文地址:关于SpringMVC中表单验证无效问题 作者:championhengyi 发表于 2017/11/10 10:23:15 原文链接 http://blog.csdn.net/championhengyi/article/details/78497029 阅读:176 继续阅读 >>


董恒毅 17/11/10 10:23:15
原文地址:SpringMVC中使用bean来接收form表单提交的参数时的注意点 作者:championhengyi 发表于 2017/11/08 23:33:46 原文链接 http://blog.csdn.net/championhengyi/article/details/78484679 阅读:127 继续阅读 >>


董恒毅 17/11/08 23:33:46
原文地址:【intellij idea】Project Structure 讲解 作者:championhengyi 发表于2017/11/6 17:58:12 原文链接 阅读:0 评论:0 查看评论 继续阅读 >>


董恒毅 17/11/06 17:58:12
IDEA报错如下: Caused by: java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1465) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1310) 解决办法: 1.将 org.apache.commons.commons-dbcp2 和 org.apache.commons.commons-pool2 jar包同时添加进pom.xml文件并在Project Structure 的 Artifacts模块中将这两个依赖添加进WEB-INF中的lib下,如图: 这是没有添加进WEB_INF的时候,添加成功后右边的栏目会和并到左边的WEB_INF下的lib中,只要 继续阅读 >>


董恒毅 17/11/06 17:49:28
什么是缓存Cache? 为什么人们要使用它? 一个使用缓存Cache的站点会监听客户端向服务器端发出的请求,并保存服务器端的回应——比如HTML页面、图片等文件。接着,如果再次使用相同URL发送请求,他能够使用之前已经保存下来的反馈文件,而不是再次向服务器发出请求。 有两个主要的理由让人们使用缓存: 减少延迟 — 因为所发出的网页请求是指向更接近客户端的缓存而不再是源服务器端,因此请求所花费时间更短,这让网站看上去反应更快。 降低网络负荷 — 因为缓存文件可以重复使用,节省了不少的带宽.这也给用户省了不少流量. 缓存 Caches种类 浏览器缓存 Caches 浏览器缓存机制,其实主要就是HTTP协议定义的缓存机制(如: Expires; Cache-control等)。 Expires策略(忽略) Expires是Web服务器响应消息头字段,在响应http请求时告诉浏览器在过期时间前浏览器可以直接从浏览器缓存取数据,而无需再次请求。 不过Expires是HTTP 1.0的东西,现在默认浏览器均默认使用 继续阅读 >>


董恒毅 17/11/01 11:46:48
之所以将属性表拿出来单独进行讲解,就是因为在上一篇博客中我已经说过,在Class类文件中,最重要的当属常量池与属性表部分,而属性表中的属性目前已高达21项,当然我们不用全部记住它们,只需要熟悉其中的几个关键属性。 属性表基本结构 首先来看一下这21种不同的属性: 图片来源于他人博客。可以看到的是,在JDK1.5之前是只有9中基本属性的,在之后增加到了21项。 每个属性的名称都引用自常量池中一个CONSTANT_Utf8_info类型的常量来表示,属性值的结构则完全是自定义,只需要一个u4长度属性去说明属性值所占用的位数即可。 属性表结构如图: Code属性 Java方法体中的代码经过Javac编译之后,最终变为字节码存储在Code属性中,Code属性出现在方法表的属性集合之中。接口或抽象类中的方法并不存在Code属性,因为他们并没有对方法进行具体的实现。 Code属性表的结构如下图: 在这里我尝试挑几个概念上比较重要来进行记录。 max-stack,要解释清楚它,需要了解操作数栈,栈帧等知识,所以这个属性字段 继续阅读 >>


董恒毅 17/10/30 16:10:04
首先来看一段代码: #include<stdio.h> void foo(const char **p) { } void main(int argc, char **argv) { foo(argv); return ; } 我们对这段代码进行编译,发现它报出了警告: test.c: In function ‘main’: test.c:14:9: warning: passing argument 1 of ‘foo’ from incompatible pointer type [-Wincompatible-pointer-types] foo(argv); ^ test.c:10:6: note: expected ‘const char **’ but argument is of type ‘char **’ void foo(const char **p) { } ^ 一般来说,对程序运行结果没有影响的警告我们会进行忽略,但是这个程序很短,非常易读 继续阅读 >>


董恒毅 17/10/27 00:24:51