自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

转载 mmap和常规文件操作的区别

mmap和常规文件操作的区别对linux文件系统不了解的朋友,请参阅我之前写的博文《从内核文件系统看文件读写过程》,我们首先简单的回顾一下常规文件系统操作(调用read/fread等类函数)中,函数的调用过程:1、进程发起读文件请求。2、内核通过查找进程文件符表,定位到内核已打开文件集上的文件信息...

2018-05-25 00:00:31

阅读数 642

评论数 0

转载 B+树与LSM树的区别与联系

首先来回答一个问题:为什么在磁盘中要使用b+树来进行文件存储呢?原因还是因为树的高度低得缘故,磁盘本身是一个顺序读写快,随机读写慢的系统,那么如果想高效的从磁盘中找到数据,势必需要满足一个最重要的条件:减少寻道次数。我们以平衡树为例进行对比,就会发现问题所在了:先上个图 这是个平衡树,可以看到基本...

2018-05-24 19:28:40

阅读数 217

评论数 0

转载 linux内存映射mmap原理分析

一直都对内存映射文件这个概念很模糊,不知道它和虚拟内存有什么区别,而且映射这个词也很让人迷茫,今天终于搞清楚了。。。下面,我先解释一下我对映射这个词的理解,再区分一下几个容易混淆的概念,之后,什么是内存映射就很明朗了。 原理首先,“映射”这个词,就和数学课上说的“一一映射”是一个意思,就是建立一种...

2018-05-17 21:04:37

阅读数 148

评论数 0

转载 mysql insert锁机制(insert死锁)

一、前言上周遇到一个因insert而引发的死锁问题,其成因比较令人费解。于是想要了解一下insert加锁机制,但是发现网上介绍的文章比较少且零散,挖掘过程比较忙乱。本以为只需要系统学习一个较完全的逻辑,但是实际牵扯很多innodb锁相关知识及加锁方式。我好像并没有那么大的能耐,把各种场景的加锁过程...

2018-05-07 00:11:29

阅读数 12119

评论数 5

转载 冒泡排序与选择排序区别

冒泡排序:冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数 放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数...

2018-05-31 21:46:16

阅读数 1741

评论数 0

转载 mysql的checkpoint

上一章的结尾我们留下了一个问题,就是在上一章所介绍的模型中,恢复管理器必须要通过全篇扫描整个undolog进行日志恢复,这样做显然是没有太大必要的,因为系统中断肯定是在最后几个事务受到影响,前面的事务应该已经完成commit或者rollback了,不会出现abort的情况,那我们如何知道哪些事务受...

2018-05-31 15:10:45

阅读数 134

评论数 0

转载 Elastic-job使用及原理

一、原理elastic-job有lite版和cloud版,最大的区别是有无调度中心,笔者采用的是lite版本,无中心化。tips:第一台服务器上线触发主服务器选举。主服务器一旦下线,则重新触发选举,选举过程中阻塞,只有主服务器选举完成,才会执行其他任务。某作业服务器上线时会自动将服务器信息注册到注...

2018-05-31 13:34:59

阅读数 682

评论数 0

转载 算法系列-大数据面试题-两个大文件中找出共同记录

1.题目描述给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?2.思考过程(1)首先我们最常想到的方法是读取文件a,建立哈希表(为什么要建立hash表?因为方便后面的查找),然后再读取文件b,遍历文件b中每个url,对于每个遍历,我们...

2018-05-31 00:35:14

阅读数 627

评论数 0

转载 性能案例-JVM频繁full GC 问题(JVM参数优化)

说明:这个是两三年前的一个案例,刚刚新开发的服务,jdk版本为1.71、问题描述:某服务线程十几分钟就出现一次full GC现象,需要优化(其他4个服务也存在类似问题)2、问题原因:jvm 永久带未配置(默认值过小)3、测试过程:以xx_core_service-1.0.0.jar线程为例,运行过...

2018-05-31 00:05:20

阅读数 1492

评论数 0

转载 64位Linux下JVM内存调设遇到GC问题的备忘

问题:jar提交到64位的linux环境中执行,由于文件过大,5G左右,发现数据一致导入不了,于是设置了JVM内存,执行命令如下:java -Xmx10240m -jar vip.jar结果爆出GC错误:java.lang.OutOfMemoryError: GC overhead limit ...

2018-05-31 00:05:06

阅读数 180

评论数 0

转载 JVM之垃圾回收遇到的问题

JVM之垃圾回收遇到的问题 怎么判断对象可以被回收 根搜索算法  在主流的商用程序语言中(java和c#),都是使用根搜索算法(GC Roots Tracing)判断对象是否存活的。这个算法的基本思路就是通过一系列的名为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径...

2018-05-31 00:05:00

阅读数 320

评论数 0

转载 [转]Java 的强引用、弱引用、软引用、虚引用

1、强引用(StrongReference)        强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下:Object o=new Object(); // 强引用       当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使...

2018-05-31 00:04:56

阅读数 62

评论数 0

转载 函数入栈出栈以及栈帧

参考一函数调用是程序设计中的重要环节,也是程序员应聘时常被问及的,本文就函数调用的过程进行分析。一、堆和栈首先要清楚的是程序对内存的使用分为以下几个区:l         栈区(stack):由编译器自动分配和释放,存放函数的参数值,局部变量的值等。操作方式类似于数据结构中的栈。l        ...

2018-05-31 00:04:50

阅读数 1505

评论数 0

转载 红黑树增加旋转两次,删除旋转三次

红黑树增加旋转两次:插入的是红节点:       红黑树要求从根节点到叶子所有叶子节点上经过的黑色节点个数是相同的,因此如果插入的节点着色为黑色,那必然有可能导致某条路径上的黑色节点数量大于其他路径上的黑色节点数量,因此默认插入的节点必须是红色的,以此来维持红黑树的性质插入需要的两次旋转:1、即出...

2018-05-31 00:04:44

阅读数 1489

评论数 0

转载 函数调用栈 剖析+图解

栈: 在函数调用时,第一个进栈的是主函数中函数调用后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向最开始存的地...

2018-05-30 23:11:52

阅读数 118

评论数 0

转载 函数调用栈——初探!

好些日子以前,我接触了Java,当时碰到一个问题——方法调用栈。当时不太明白,直到前段时间学了《数据结构》中的 栈 才略微的明白了一些,先将这个曾经不懂的地方总结一下。首先,必须对 栈 这种结构的特性有所了解。栈的特性——后进先出。在程序中,调用函数和被调用函数之间的链接及信息交换需要通过栈这种结...

2018-05-30 23:11:13

阅读数 204

评论数 0

转载 Arraylist动态扩容详解

ArrayList 概述ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长。 ArrayList不是线程安全的,只能用在单线程环境下。 实现了Serializable接口,因此它支持序列化,能够通过序列化传输; 实现了RandomAccess接口,支持快速随机访问,实际上就是通过...

2018-05-30 22:34:57

阅读数 117

评论数 0

转载 浅谈ArrayList动态扩容

环境:eclipse,jdk1.8简介ArrayList实现了List接口,继承了AbstractList,底层是数组实现的,一般我们把它认为是可以自增扩容的数组。它是非线程安全的,一般多用于单线程环境下(与Vector最大的区别就是,Vector是线程安全的,所以ArrayList 性能相对Ve...

2018-05-30 22:34:05

阅读数 930

评论数 0

转载 redis sentinel搭建以及在jedis中使用

一、redis主从搭建1、搭建redis master1>redis安装mkdir -p /usr/local/webserver/redis //安装目录 cd /usr/local/webserver/redis wget http://download.redis.i...

2018-05-30 21:12:24

阅读数 141

评论数 0

转载 java面试题之int和Integer的区别

int和Integer的区别1、Integer是int的包装类,int则是java的一种基本数据类型 2、Integer变量必须实例化后才能使用,而int变量不需要 3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 4、I...

2018-05-30 21:02:17

阅读数 68

评论数 0

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