自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Away From Comfort Zone

找啊找啊找工作

  • 博客(35)
  • 收藏
  • 关注

原创 Redis多机数据库的实现

Redis笔记多机数据库的实现复制在redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制replicate另一个服务器,我们称呼被复制服务器为主服务器master,对主服务器进行复制的服务器称为从服务器slave。进行复制中的主从服务器双方的数据库将保存相同的数据,将这种现象称作数据库状态一致。旧版复制功能的实现Redis复制功能分为同步sync和命令传播c

2015-11-27 17:31:11 784

原创 Redis单机数据库实现

Redis笔记单机数据库的实现服务器中的数据库Redis服务器将所有数据库都保存在服务器状态redis.h/redisServer结构的db数组中,sb数组的每个项都是一个redis.h/redisDb结构,每个redisDb结构代表一个数据库:struct redisSerer{ //一个数组,保存着服务器中的所有数据库 redisDb *db; //服务器的数据库数量 默认为

2015-11-26 00:00:58 397

原创 Redis数据结构与对象

Redis笔记数据结构与对象Redis是key—value数据库, 同时支持列表,哈希,集合和有序集。简单动态字符串SDS(Simple Dynamic String,简单动态字符串)是Redis默认的字符串表示。SDS定义struct sdshdr{//记录buf数组中已使用字节的数量//等于SDS所保存字符串的长度 int len;//记录buf数组中未使用自己的数量 int fr

2015-11-23 17:35:40 467

原创 MurmurHash算法

MurmurHash算法MurmurHash算法是由Austin Appleby08年创立的。项目链接:https://code.google.com/p/smhasher/原文摘录,作者应为Austin ApplebyThere are three versions of MurmurHash -MurmurHash1 was my first attempt, and was measurabl

2015-11-23 17:33:29 728

原创 Notes on Understanding the Linux Kernel

第七章进程地址空间内核中的函数可以直接获得动态内存,调用__get_free_pages()使用伙伴系统获得页框,kmem_cache_alloc()或kmalloc()使用slab分配器为专用或通用对象分配块,以及vmalloc()获得一块非连续的内存区。如果锁清秋的内存区能被满足,这些函数都返回一个线性地址,这个线性地址就是所分配的动态内存区的起始地址。内核使用一种新的资源成功实现了对进程动态内

2015-11-21 21:24:15 320

原创 Notes on Understanding the Linux Kernel

第六章内存管理RAM中一部分永久保存了内核代码和内核静态数据结构。而剩余部分就是动态内存。系统的性能取决于如何有效管理动态内存。 本章通过三部分内容介绍内核分配动态内存。“页框管理”和“内存区管理”两节分别介绍两种对连续物理内存区处理的技术。“非连续内存区管理”一节介绍了处理不连续的内存区。页框管理Intel的奔腾处理器采用两种不同的页框大小,4k和4M。Linux采用4KB页框大小作为标准的内存

2015-11-19 17:30:11 285

转载 Java并发编程:volatile关键字解析

转载自作者:海子 出处:http://www.cnblogs.com/dolphin0520/原文写的很详尽。粗略查了一下JDK1.7和Java语言规范第三版,未发现volatile关键字。这是能找到的相对较完善的文章。Java并发编程:volatile关键字解析   volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是

2015-11-19 16:09:14 275

原创 Java拾遗

遍历map对象for (Entry<String, String> entry : map.entrySet()){ System.out.println(entry.getKey() + "/" + entry.getValue());}需要 import java.util.Map.Entry;如何将String转化为IntInteger i = Integer.valueOf(str);

2015-11-19 15:45:38 369

转载 Linux内核4级页表的演进

原文链接:http://larmbr.com/2014/01/19/the-evolution-of-4-level-page-talbe-in-linux/Linux内存寻址的页表的升级,实际上是跟进64位操作系统对于内存管理的升级。换言之,本质上并没有什么技术变化,是对三级页表的演变。Linux内核4级页表的演进larmbr | 20

2015-11-18 16:49:05 3451

原创 缓冲

缓冲缓冲区是一块特定的内存区域。开辟缓冲区的作用是通过缓解应用程序上下文之间的性能差异,提高系统性能。 缓冲可以协调上层组件和下层组件之间的性能差。缓冲最常用的场景就是提高io的速度。 当使用filewriter时,进行文件写操作的代码如下:Writer writer = new

2015-11-17 21:19:56 345

原创 Notes on Understanding the Linux Kernel

第五章 定时测量硬时钟内核与三种时钟打交道实时时钟 Real Time Clock RTC时间标记计数器 Time Stamp Counter TSC可编程间隔定时器 Programmable Interval Time PIT实时时钟RTC独立于CPU和其他所有芯片,靠小电池供电。Linux获取时间和日期。时间标记计数器Linux通过寄存器获得更精确的时间测量。|2^32/f| f是以

2015-11-17 17:36:03 300

原创 Notes on Understanding the Linux Kernel

中断和异常中断通常被定义为改变处理器指令顺序的事件。这些事件对应于CPU芯片内部和外部的硬件电路产生的电信号。 中断通常被分为同步中断和异步中断同步中断是指指令执行时由cpu控制单元产生的,之所以称为同步,是因为只有在指令执行完成后,CPU才会发出中断。异步中断指的是由其他硬件设备根据cpu时钟信号随机产生。中断是由间隔定时器和IO设备发出的,异常是由程序错误产生的。中断信号的作用中断信号

2015-11-17 16:04:32 285

转载 Java中的静态编译和动态编译

本文是转载,很详实但也累赘。个人认为的重点在文中以粗体标注。

2015-11-16 17:29:10 5770

转载 JVM介绍

这篇转载的JVM知识很详细,适合JVM进阶学习java内存组成介绍:堆(Heap)和非堆(Non-heap)内存按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非

2015-11-11 15:29:20 362

翻译 Java Internals

原文链接:http://blog.jamesdbloom.com/JVMInternals.html这哥们写的真不错,之前一篇翻译Java code也是他写的,可结合起来看This article explains the internal architecture of the Java Virtual Machine (JVM). The following diagr

2015-11-11 11:46:00 450

原创 享元模式

享元模式是设计模式中少数几个以提高系统性能为目的的模式之一。核心思想是,在系统中存在多个相同的对象,那么只需共享一份对象的拷贝,而不必为每一次使用都创建新的对象。享元模式提升性能的两方面:节省重复创建对象的开销,被享元模式维护的相同对象只会被创建一次,当创建对象耗时时,节省大量时间。由于创建对象的数量减少,所以对系统内存的需求也减小,这将使得GC的压力也相应地降低,进而使得系统拥有一个更健

2015-11-09 22:41:20 266

转载 Java栈和Java堆

原文地址:http://www.blogjava.net/nkjava/archive/2012/03/15/371971.htmlJVM栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;JVM堆解决的是数据存储的问题,即数据怎么放、放在哪儿,另外JVM堆中存的是对象。JVM栈中存的是基本数据类型和JVM堆中对象的引用。JVM基础概念:JVM堆与JVM栈数据类型

2015-11-09 15:13:33 281

翻译 Java Code To Byte Code

原文地址:http://blog.jamesdbloom.com/JavaCodeToByteCode_PartOne.html#variables This article explains how Java code is compiled into byte code and executed on the JVM. To understand the internal archit

2015-11-09 11:46:37 573

原创 ClassLoader

类装载器工作机制类装载器就是寻找类的字节码文件并构造出类在JVM内部表示的对象组件,共分三个步骤1.装载:导入class文件2.链接:执行校验、准备和解析步骤校验:检查载入class文件数据的正确性准备:给类的静态变量分配存储空间,初始化为默认值解析:将符号引用转成直接引用3.初始化:对类的静态变量、静态代码块执行初始化工作,赋予正确的初始值。类的加载将

2015-11-09 10:09:54 375

原创 代理模式

延迟加载是代理模式的一种体现方式。试想在系统启动时,消耗资源最多的方法交由代理模式隔离,此时的方法并未并没有被实际调用,为了减少用户等待时间,加快系统启动速度。等系统真正调用此类方法时,再经由代理模式完成方法的调用,加载系统资源。这个过程的实现就叫做延迟加载。延迟加载的核心思想是:如果当前系统并没有使用该组件,并不需要真正的初始化它,使用一个代理对象替代它原有的位置,只要在真正需要使用的时

2015-11-07 19:01:38 574

转载 深入理解JVM内部结构

下图显示了符合Java SE 7 版本的Java虚拟机规范的一个典型JVM中的关键内部组件。       图中显示的组件将会在下面两部分中进行逐一的解释。第一部分涉及JVM为每一个线程都会创建的组件;第二部分则是独立于线程进行创建的组件。1. Thread      Thread是一个程序中的一个执行线程。JVM允许一个应用程序有多个执行线程

2015-11-06 16:08:56 274

原创 BigDecimal

public class BigDecimal不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。因此,BigDecimal 表示的数值是 (unscaledValue × 10-scale)。BigDe

2015-11-06 15:38:54 328

转载 Hibernate主键生成策略

native: 对于 oracle 采用 Sequence 方式,对于MySQL 和 SQL Server 采用identity(自增主键生成机制),native就是将主键的生成工作交由数据库完成,hibernate不管(很常用)。 uuid: 采用128位的uuid算法生成主键,uuid被编码为一个32位16进制数字的字符串。占用空间大(字符串类型)。 hilo: 使用hilo生成策略,

2015-11-06 15:30:42 247

原创 ResultSet

表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。ResultSet 对象具有指向其当前数据行的光标。最初,光标被置于第一行之前。next 方法将光标移动到下一行;因为该方法在 ResultSet对象没有下一行时返回 false,所以可以在 while 循环中使用它来迭代结果集。默认的 ResultSet 对象不可更新,仅有一个向前移动的光标。因此,只能迭代它一次,并且只能按从第

2015-11-06 15:10:46 380

原创 IoC

Inverse of Control控制反转对于软件来说,是指某一接口的具体实现类的选择控制权从调用类转给第三方。Dependency Injection依赖注入调用类对某一接口实现类的依赖关系由第三方(容器或协作类)注入。IoC的类型从注入方法上看,有三钟:构造函数注入,属性注入和接口注入构造函数

2015-11-05 17:14:13 258

原创 Annotation

Java注解作用分类①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】② 代码分析:通过代码里标识的元数据对代码进行分析【使用反射】③编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查【Override】

2015-11-05 16:58:15 198

原创 Java多态override

关于Override有几点要注意的地方: 1.被覆盖方法的访问控制级别可以不一样。 但子类的访问级别必须要高于父类被覆盖方法的访问级别,如果父类是public的而子类是protected的则是错误的。2.方法被定义为private或static或final的则不能被覆盖。 3.方法的返回类型:子类的返回类型可以是更具体的对象,例如可以将子类的返回类型改为父类也正确。而倒过来则错误。

2015-11-05 15:31:42 299

转载 Serializable&Extemalizable

对象序列化?对象序列化的概念加入到语言中为了提供对两种主要特性的支持:1 、远程方法调用2 、 Java Beans 状态的保存与恢复  ObjectInput 接口继承 DataInput 接口ObjectOutput 接口继承 DataOutput 接口ObjectOutputStream 类实现了 DataOutput,ObjectOutputObject

2015-11-05 14:28:44 584

原创 Java对象序列化

序列化概念在Java平台中,Java对象的生命周期是小于JVM。那么,在JVM停止后或者在JVM之外,如何持久化Java对象并且读取,是Java对象序列化存在的意义。并且,在通信过程中,Java对象也必须转换成二进制字节流,在网络中传输。Java对象序列化是保存的对象的成员变量。序列化:对象转化为字节序列的过程反序列化:字节序列恢复为对象的过程序列化APIjava.io.O

2015-11-05 11:01:25 219

原创 优化单例模式

单例模式用于产生对象的具体实例,可以确保系统中一个类只产生一个实例。好处是,省略创建对象所花费的时间;减少系统内存的使用率,降低GC压力,缩短GC停顿时间。饿汉模式public class Singleton{ private Singleton(){ } private static Singleton instance = new Singleton(); public

2015-11-04 21:24:50 345

原创 Amdahl定律

Amdahl定律定义了串行系统并行化后加速比的计算公式和理论上限。加速比:优化前系统耗时/优化后系统耗时设加速比为speedup,系统内必须串行化得程序比重为F,CPU处理器数量为Nspeedup使用多核CPU对系统进行优化,优化的效果取决于CPU的数量以及系统中串行程序的比重。CPU数量越多,串行化比重越低,则优化效果越好。

2015-11-03 17:40:54 260

转载 Abstract class&Interface

abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。 abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于 abstract class和interface的选择显得比较随意。其实,两者之间

2015-11-03 11:27:39 229

原创 StringBuffer

String类是字符串常量,是不可更改的常量。而StringBuffer是字符串变量,它的对象是可以扩充和修改的。         所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。         在StringBuffer类中存在很多和String类一样的方法,这些方法在功能上和String类中的功能是完全一样

2015-11-03 11:23:11 253

转载 Open-Closed Principle,OCP

开闭原则是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一,其它很多的设计原则都是实现开闭原则的一种手段。

2015-11-03 11:01:07 326

原创 Notes Understanding the Linux kernel

第三章 进程进程,轻量级进程和线程进程是程序执行时的一个实例。从内核观点看,进程的目的是担当分配系统资源的实体。当一个进程创建时,它几乎与父进程相同。它接受父进程地址空间的一个逻辑拷贝,从进程创建系统调用的下一条指令开始执行与父进程相同的代码。尽管父子进程可以共享含有程序代码的页,但是它们有各自独立的数据拷贝(栈和堆),因此子进程对一个内存单元的修改对父进程是不可见的,反之亦然。从

2015-11-03 00:11:54 305

空空如也

空空如也

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

TA关注的人

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