10 2017 档案

摘要:数据库优化几个方面:库表设计,表的物理设计(索引,数据类型,分区表),sql语句优化 经常看到有人会写出一些很复杂的sql。我很好奇他们是怎样想到这样写的。毕竟我写的都是很简单的sql。 来看一个很常见的场景: 有一个用户发帖表有如下三个字段,user_id,bolg_id,post_date。一个 阅读全文
posted @ 2017-10-26 14:59 java林森 阅读(157) 评论(0) 推荐(0)
摘要:mysq,oracle的索引组织表是按主键顺序存储数据的(页内)。 如果数据插入顺序和主键不一致,页间无法保证物理上的顺序存储。移动数据块的代价很大。可以通过工具重新顺序化存储结构。 mysql新增数据块时,会留一定的空间给未来新增的数据用,另外当数据块的充满程度达到一定比例时,不会再允许新增数据 阅读全文
posted @ 2017-10-24 18:08 java林森 阅读(290) 评论(0) 推荐(0)
摘要:5.6版本是mysql一个重大改进版,优化了很多内容,查询优化器也有改进。因此有必要做个测试 对于最常见的子查询问题,in和exists,如何优化,做个简单测试。 首先建三张表:film,actor,film_actor 电影,演员,电影-演员关联表,很简单的一个多对多关联。 给关联表添加外键,如果 阅读全文
posted @ 2017-10-24 15:47 java林森 阅读(201) 评论(0) 推荐(0)
摘要:我们在学习使用Java的过程中,一般认为new出来的对象都是被分配在堆上,但是这个结论不是那么的绝对,通过对Java对象分配的过程分析,可以知道有两个地方会导致Java中new出来的对象并一定分别在所认为的堆上。这两个点分别是Java中的逃逸分析和TLAB(Thread Local Allocati 阅读全文
posted @ 2017-10-12 10:50 java林森 阅读(317) 评论(0) 推荐(0)
摘要:范围:要回收哪些区域 在JVM五种内存模型中,有三个是不需要进行垃圾回收的:程序计数器、JVM栈、本地方法栈。因为它们的生命周期是和线程同步的,随着线程的销毁,它们占用的内存会自动释放,所以只有方法区和堆需要进行GC。 前提:如何判断对象已死 所有的垃圾收集算法都面临同一个问题,那就是找出应用程序不 阅读全文
posted @ 2017-10-12 10:33 java林森 阅读(123) 评论(0) 推荐(0)
摘要:ClassLoader Java程序并不是一个原生的可执行文件,而是由许多独立的类文件组成,每一个文件对应一个Java类。此外,这些类文件并非立即全部装入内存的,而是根据程序需要装入内存。ClassLoader专门负责类文件装入到内存。 数组类的 Class 对象不是由类加载器创建的,而是由 Jav 阅读全文
posted @ 2017-10-12 10:32 java林森 阅读(163) 评论(0) 推荐(0)
摘要:JVM定义了若干个程序执行期间使用的数据区域。这个区域里的一些数据在JVM启动的时候创建,在JVM退出的时候销毁。而其他的数据依赖于每一个线程,在线程创建时创建,在线程退出时销毁。 程序计数器 程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。分支、循环、跳转、异常处理、 阅读全文
posted @ 2017-10-12 09:44 java林森 阅读(178) 评论(0) 推荐(0)