MySQL Join的底层实现原理

mysql只支持一种join算法:Nested-Loop Join(嵌套循环连接),但Nested-Loop Join有三种变种:Simple Nested-Loop Join,Index Nested-Loop Join,Block Nested-Loop Join

Mehr lesen

Java百万级数据存入MySql

我又来了,又是百万数据的导入,其实又是项目中遇到的,那么怎么快速导入呢,因为我们项目用的是JPA,有时也使用jdbcTemplate,没错又是jdbcTemplate。对于这种大数据的处理,我们能业务代码方面最基本的能想到的就是块处理和使用线程。此处可以参考JAVA向Mysql插入亿级别数据—测评

Mehr lesen

MySQL百万数据关联查询优化

前段时间写过一篇MySQL Join的底层实现原理,里面稍微有提到怎么通过索引优化,即Index Nested-Loop Join,今天在获取数据时,正好做到了优化一下。

Mehr lesen

MySQL数据库分区

数据库分区处理

如果一张表的数据量太大的话,myd、myi就会变得很大,查找数据就会变的很慢,我接触到的是有关温州出租车网约车GPS数据量的查询,大概数据量为1天4000万条记录,不分区查询速度慢到怀疑人生。在物理上我们可以把数据表分割成不同的小块,查找数据只需要查找需要的那一块数据即可,查询速度大大提升。

Mehr lesen

内存溢出OutOfMemoryError

java.lang.OutOfMemoryError: PermGen space

java虚拟机(JVM)管理着类内存,堆和非堆。堆是给开发人员用的,在JVM启动时才会创建。非堆是JVM留给自己用的,用来放类的信息,非堆在运行生命周期内GC是不会主动释放空间的。发生这个错误的情况是我们开发的代码量很大或者用到的第三方jar包量比较大时,而Tomcat的MaxPermSize设置的不合理时,就会出现这个错。

Mehr lesen

每日java题

一切程序语言都离不开最基本的基础,虽然这篇或许看着会很基础,不过平时空闲下来回过头来看看也还是有必要的,时间久了也可能会忘记了

Mehr lesen

使用POI将datagrid数据导出Excel

这个功能也是因公司项目要求,之前毕设的时候有做过一个将数据导出Excel的功能,不过时隔一年,全然忘了,也不知道是不是用的POI,这次用的POI来实现将datagrid的数据导成Excel表,其实看了下文档挺简单的。

Mehr lesen

Java NIO有关笔记

首先先来了解一下NIO和传统IO的区别:

传统的IO是基于Byte(字节)和Stream(数据流)的,相应的IO操作都是阻塞的,主要问题就是系统资源的浪费。从流中一次可以读取一个或多个字节,这里没有任何缓存而且只能顺序从流中读取数据,如果需要跳过一些字节或者再读取已经读过的字节,你必须将从流中读取的数据缓存起来
而NIO是面向块的,数据会先被读/写到Buffer中,而且可以控制读取什么位置的数据。不过你需要增加额外的工作就是检查你需要的数据是否已经全部到了Buffer中,还需要保证当有更多数据进入Buffer中时,原先Buffer中还未被处理的数据不会被覆盖

Mehr lesen

redis实现二级缓存

缓存的作用就是降低数据库的使用率,来减轻数据库的负担。我们平常的操作一般都是查>改,所以数据库的有些查操作是重复的,如果一直使用数据库就会有负担。Mybatis也会做缓存,也会有一级缓存和二级缓存:

Mehr lesen

初识集合类(java)

现在一些公司面试,对于集合类的使用是比较看重的,也的确,我们平时用的也比较多,之前自己在这方面也只是会用,所以现在抽空来整理整理集合类的一些相关的内容。我们所熟知的java.util包中包含了一系列的集合类,掌握其内部结构是至关重要的。

Mehr lesen