自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 理解JVM-内存模型

JVM(虚拟机,Java Virtual Machine)的内存空间分类:    程序计数器    堆内存    JVM虚拟机栈    本地方法栈    方法区程序计数器:    程序计数器是什么:        一块较小的内存空间,指向字节码解释器正在执行的行数,记录了当前线程正在执行的那一条字节

2016-05-27 12:48:57 279

原创 epoll详解

linux中存在许多I/O流,文件流,socket流等等。无论是文件,还是管道,我们都可以称之为流。通过read操作,我们可以从流中读入数据,通过write操作,我们可以往流写入数据。大部分文件都是存储在磁盘而非主存,频繁的I/O会使程序性能降低,所以linux存在缓冲区,引入缓冲区是为了减少频繁的I/O调用。有了缓冲区之后,我们大部分的操作都是在缓冲区中进行。

2016-05-26 09:37:53 329

原创 网络I/O中的阻塞,非阻塞,同步,异步的两个例子讲解

同步和异步:    同步:调用者在发出一个调用时,若被调用函数没有操作完成得到结果,则一直不返回,直到被调用函数操作完成并且得到结果,才进行返回    异步:调用者在发出一个调用时,无论被调用函数有没有操作完成,都立即返回,等待被调用函数操作完成并且得到结果时,通知调用者    阻塞和非阻塞:    阻塞:调用者在发出一个调用时,没有得到结果时一直等

2016-05-26 09:36:23 956

原创 并发5-synchronized和Lock

1.上一篇说到了synchronized的缺陷:    synchronized的缺陷:    1.使用synchronized包住的代码块,只可能有两种状态:顺利执行完毕释放锁,执行发生异常释放锁,不会由于异常导致出现死锁现象    2.如果synchronized包住的代码块中有sleep等操作,比如I/O阻塞,但是其他线程还是需要等待,这样程序的效率就比较低了

2016-05-26 09:34:05 265

原创 并发4-线程安全

1.线程安全问题:    在多线程中,有可能出现多个线程同时使用同一个资源的情况,这个资源可以是变量,数据表,txt文件等。这个资源称作"临界资源"    举个例子:取钱这个线程分为两个步骤:    1.读取金额    2.取款    3.更新金额    有个典型的线程安全的例子,倘若A,B两人使用同一个账户(1000

2016-05-26 09:33:43 216

原创 并发3-Thread类和API

1.Thread类详解:    无论是通过继承Thread还是实现Runnable接口来实现多线程编程,都离不开Thread。    Thread译为线程,线程有以下几种状态,接下来我会按照Thread类中的方法来逐一讲解。        1.Thread t = new Thread()仅仅只是创建了线程,并没有为线程分配任何资源   

2016-05-26 09:33:02 225

原创 并发2-Thread和Runnable

1.java xx.class发生了什么:    编写JVMThread.javapublic class JVMThread {    public static void main(String[] agrs){        for(int i = 0; i                System.out.println(i);        }    }}    

2016-05-26 09:32:22 213

原创 并发1-并发模型

并发系统有多种并发模型:        并行工作者模式:        在并行工作者模式中,委派者接收到任务(如刚才说讲的listen to request),分发给工作者完成任务(如handler request to work thread)。举个例子,如果在汽车工厂执行该模式,那么每个工人拿到图纸之后,该工人从头到尾负责整个产品。    并行工作者模型

2016-05-26 09:28:19 289

原创 并发0-并发概论

介绍:    在传统的单CPU时代,每个CPU在某一个时间点只能运行一个程序,后来发展到多任务阶段,任务1和任务2两个任务可以在某一个时间范围“并发执行”,比如两个个任务交替执行100ms,在1s这个时间范围内,我们就认为他们其实在并发执行,但其实在某一个特定的时间点该CPU还是只能运行一个程序,这也就是为什么我们可以在电脑上同时听歌和浏览网页的原因,听歌和浏览网页两个程序在很短的时间交替

2016-05-26 09:27:44 277

原创 数据库sharding-基本策略和原理

1.分库分表(sharding)的原因    在网站初期,为了节约资源,常常部署单点(单一服务器)mysql作为数据存储。随着网站业务量增大,机器的性能有限,单点mysql的I/O性能瓶颈马上达到高潮。    为了突破单节点I/O的性能,聪明的架构师开始引入多节点,这就是所谓分库。如果说单节点是单线程串行计算,那么多节点就是多线程并行计算。多节点的mysql服务借鉴了并行的思

2016-05-26 09:23:56 962

原创 实习半年感悟

开始:    15年9月,研二伊始,我进入了一家活力五射的互联网公司开始了实习生涯。迈出了从科大到工程应用的第一步(现在觉得当时的这一小步,是我整个人生的一大步啊!),至今半年,收益颇丰亦深有感触。拜师学艺,自然要有师傅,这里需要感谢严格高标准的师傅、机智有内涵的成成、架构组的浩浩荡荡之风骚霸气,全民共污的贤者之team。艰难的日子:    首当其冲的

2016-05-26 09:21:33 969 1

原创 数据库索引-最左前缀原理及其优化

你一定听过最左前缀原理,要高效地使用msyql的索引进行查询,我们就必须掌握最左前缀原理,达到建立合适索引的目的这里我们使用mysql自带的employees数据库,请读者自行下载:这里先说一下联合索引的概念。在上文中,我们都是假设索引只引用了单个的列,实际上,MySQL中的索引可以以一定顺序引用多个列,这种索引叫做联合索引,一般的,一个联合索引是一个有序元组,其中各个元素

2016-05-26 07:46:09 1477

原创 数据库索引-数据结构

在上一篇文章中我们说了数据库索引的本质和使用二叉树实现的数据库索引,然而在实际的数据库系统中,基本没有使用二叉树实现索引,大多使用改进后的B+树作为索引。我们就来说一说其中的原因。    改进后的B+树基于B+树,B+树又基于B树,所以我们先从B树谈起    我们还是以Person(id,name,age)这个实例来讲诉B树。B树是这样的一个数据

2016-05-26 07:44:33 1722

原创 数据库索引-建立索引的判断标准

索引虽然能加快查询速度,但是也带来了一定的缺点。因为索引虽然加快了查询速度,但是索引也是有代价的:索引本身会消耗内存空间,同时在对数据库进行增删改查的时候,也需要维护索引。因此索引并不是越多越好,需要因地制宜。有两种情况不建议建立索引:1.表的记录太少,一般以5000条为界限。对5000条记录以下的数据表建立索引还不如进行全表扫描。2.索引的选择性比较低: 

2016-05-26 07:43:54 2678

原创 数据库索引-该不该设立主键

上文讨论了InnoDB的数据文件实现,使用聚集索引,数据文件即主键索引,非叶节点存放主键索引值,叶节点存放真实的数据节点没这就要求同一个叶子节点内的各条数据按主键存放。如图:    由于InnoDB的实现方式如此,所以我们尽量要使用一个与业务无关的自增主键。理由如下:    自增主键严格递增,mysql根据所插入的数据节点的主键值找到相应的叶节点(一般会放在

2016-05-26 07:41:32 1766

原创 数据库索引-从计算机组成原理谈起

一般来说,索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储的磁盘上。这样的话,索引查找过程中就要产生磁盘I/O消耗,相对于内存存取,I/O存取的消耗要高几个数量级,所以评价一个数据结构作为索引的优劣最重要的指标就是在查找过程中磁盘I/O操作次数的复杂度。换句话说,索引的结构组织要尽量减少查找过程中磁盘I/O的存取次数。下面先介绍内存和磁盘存取原理,然后再结合这些原理分析B-

2016-05-26 07:39:32 367

原创 数据结构索引-InnoDB索引

我们知道,MyISAM索引文件和数据文件是分离的,索引文件仅仅保存了数据记录的地址。在InnoDB中,数据文件本身就是索引文件,表文件本身就是一个按照B+树组织的一个索引结构,叶节点data保存了完整的数据记录,这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引。    上图是InnoDB数据文件(主索引)的示意图,叶节点包含了所有

2016-05-26 07:38:07 1465

原创 数据库索引-本质

mysql的官方定义是:索引是提高查询速度的一种数据结构。由此可见,索引是一种数据结构。在数据库的增删改查中,查这个操作是最主要的功能之一。查询的主要方式有:    1.顺序查询,算法复杂度为O(n)    2.二分查找,要求数据有序,算法复杂度为O(log[2]N)    3.二叉查找树,要求数据存放在二叉查找树中如下所示:    有一张存

2016-05-26 07:35:21 483

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除