<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[raiet]]></title><description><![CDATA[linux，分布式存储]]></description><link>https://blog.youkuaiyun.com/raiet</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; raiet]]></copyright><item><title><![CDATA[atoi的正确实现]]></title><link>https://blog.youkuaiyun.com/raiet/article/details/39084257</link><guid>https://blog.youkuaiyun.com/raiet/article/details/39084257</guid><author>raiet</author><pubDate>Fri, 05 Sep 2014 19:09:10 +0800</pubDate><description><![CDATA[String to Integer (atoi)
 





Implement atoi to convert a string to an integer.

Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask ]]></description><category></category></item><item><title><![CDATA[Spring IoC常用注解]]></title><link>https://blog.youkuaiyun.com/raiet/article/details/30806769</link><guid>https://blog.youkuaiyun.com/raiet/article/details/30806769</guid><author>raiet</author><pubDate>Sat, 14 Jun 2014 21:48:40 +0800</pubDate><description><![CDATA[Spring IoC容器

Spring IoC(Inversion of Control，控制反转)是Spring Framework的最核心的部分。

所谓控制反转，是指通过使用IoC容器对象依赖关系的管理被反转了，也就是说，对象之间的依赖关系由IoC容器进行管理，并且由Ioc容器通过依赖注入（DI，Dependency Injection）的方式来完成对象的注入。

 

在]]></description><category></category></item><item><title><![CDATA[JAVA动态代理]]></title><link>https://blog.youkuaiyun.com/raiet/article/details/30751495</link><guid>https://blog.youkuaiyun.com/raiet/article/details/30751495</guid><author>raiet</author><pubDate>Sat, 14 Jun 2014 16:12:56 +0800</pubDate><description><![CDATA[1.什么是动态代理?

答：动态代理可以提供对另一个对象的访问，同时隐藏实际对象的具体事实。代理一般会实现它所表示的实际对象的接口。代理可以访问实际对象，但是延迟实现实际对象的部分功能，实际对象实现系统的实际功能，代理对象对客户隐藏了实际对象。客户不知道它是与代理打交道还是与实际对象打交道。
2.为什么使用动态代理?

答：因为动态代理可以对请求进行任何处理

3.使用它有哪些好处?]]></description><category></category></item><item><title><![CDATA[JAVA反射机制]]></title><link>https://blog.youkuaiyun.com/raiet/article/details/30743517</link><guid>https://blog.youkuaiyun.com/raiet/article/details/30743517</guid><author>raiet</author><pubDate>Sat, 14 Jun 2014 15:01:25 +0800</pubDate><description><![CDATA[反射的概念是由Smith在1982年首次提出的，主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。Reflection 是 Java 程序开发语言的特征之一，它允许运行中的 Java 程序对自身进行检查，或者说“自审”，并能直接操作程序的内部属性和方法。他主要依托JVM中关于类的元数据信息来完成这一功能，有过C++编程经验的同学应该很了解C++中实现多态的虚表吧，在这里的元数据其实和虚表]]></description><category></category></item><item><title><![CDATA[解析xml文件]]></title><link>https://blog.youkuaiyun.com/raiet/article/details/30491791</link><guid>https://blog.youkuaiyun.com/raiet/article/details/30491791</guid><author>raiet</author><pubDate>Fri, 13 Jun 2014 15:43:48 +0800</pubDate><description><![CDATA[使用JDOM解析XML文件]]></description><category></category></item><item><title><![CDATA[Spring AOP]]></title><link>https://blog.youkuaiyun.com/raiet/article/details/30464355</link><guid>https://blog.youkuaiyun.com/raiet/article/details/30464355</guid><author>raiet</author><pubDate>Fri, 13 Jun 2014 10:58:02 +0800</pubDate><description><![CDATA[Spring是分层的java SE/EE应用的一站式的开源框架，以控制反转（Inverse of Control，IoC）和面向切面编程（Aspect Oriented Programming，AOP）为核心，提供了表现层spring MVC，持久层spring JDBC以及业务层事务管理等众多的企业级应用技术。Spring一贯遵守“好的设计优于具体实现，代码应该易于测试”这一理念。相对于传统的“]]></description><category></category></item><item><title><![CDATA[Spring MVC]]></title><link>https://blog.youkuaiyun.com/raiet/article/details/29193095</link><guid>https://blog.youkuaiyun.com/raiet/article/details/29193095</guid><author>raiet</author><pubDate>Sat, 07 Jun 2014 15:09:22 +0800</pubDate><description><![CDATA[当前流行的mvc框架主要有struts1，webwork，struts2，spring mvc，jsf。Struts 1 是最早的mvc框架，之后出来的webwork涉及思想非常优秀但是很遗憾，没有得到太多的应用。在struts1和webwork的基础上，发展起来了struts2的框架，这是目前主要使用的框架之一，jsf是一个事件驱动的mvc框架。Spring MVC 分离了控制器、模型对象、分派]]></description><category></category></item><item><title><![CDATA[SVN环境的搭建和使用]]></title><link>https://blog.youkuaiyun.com/raiet/article/details/28391665</link><guid>https://blog.youkuaiyun.com/raiet/article/details/28391665</guid><author>raiet</author><pubDate>Wed, 04 Jun 2014 09:58:14 +0800</pubDate><description><![CDATA[SVN环境的搭建和使用
 
安装环境：
1、win8 
2、VisualSVN-Server-2.7.6.msi（SVN服务器）
3、TortoiseSVN-1.8.7.25475-x64-svn-1.8.9.msi（SVN客户端）
4、LanguagePack_1.8.7.25475-x64-zh_CN.msi（客户端汉化包）
 
服务器安装
双击VisualSVN-Serve]]></description><category></category></item><item><title><![CDATA[乐观锁和悲观锁]]></title><link>https://blog.youkuaiyun.com/raiet/article/details/27052167</link><guid>https://blog.youkuaiyun.com/raiet/article/details/27052167</guid><author>raiet</author><pubDate>Mon, 26 May 2014 09:28:05 +0800</pubDate><description><![CDATA[为了得到最大的性能，一般数据库都有并发机制，不过带来的问题就是数据访问的冲突。这会产生得冲突，就是著名的并发性问题。典型的冲突有：
丢失更新：一个事务的更新覆盖了其它事务的更新结果，就是所谓的更新丢失。例如：用户A把值从6改为2，用户B把值从2改为6，则用户A丢失了他的更新。
脏读：当一个事务读取其它完成一半事务的记录时，就会发生脏读取。例如：用户A,B看到的值都是6，用户B把值改为2，用户A]]></description><category></category></item><item><title><![CDATA[【redis源码分析】RDB持久化机制]]></title><link>https://blog.youkuaiyun.com/raiet/article/details/26862501</link><guid>https://blog.youkuaiyun.com/raiet/article/details/26862501</guid><author>raiet</author><pubDate>Sat, 24 May 2014 22:04:06 +0800</pubDate><description><![CDATA[rdb是redis保存内存数据到磁盘数据的其中一种方式(另一种是AOF)。Rdb的主要原理就是在某个时间点把内存中的所有数据的快照保存一份到磁盘上。在条件达到时通过fork一个子进程把内存中的数据写到一个临时文件中来实现保存数据快照。在所有数据写完后再把这个临时文件用原子函数rename(2)重命名为目标rdb文件。这种实现方式充分利用fork的copy
 on write。

　　另外一种]]></description><category></category></item><item><title><![CDATA[【redis源码分析】redis持久化概述]]></title><link>https://blog.youkuaiyun.com/raiet/article/details/26860811</link><guid>https://blog.youkuaiyun.com/raiet/article/details/26860811</guid><author>raiet</author><pubDate>Sat, 24 May 2014 19:46:25 +0800</pubDate><description><![CDATA[所谓的redis的持久化也就是数据落地，对于任何一个数据系统都要考虑是不是需要数据落地。在系统崩溃或是机房掉点等的原因下，将有用的数据记录在非易失性存储器上面，防止数据丢失或者系统重启时的数据恢复。
对于一般的写操作，他的大致流程如下面几个过程：
1.客户端向服务端发送写操作(数据在客户端的内存中)
　　2.数据库服务端接收到写请求的数据(数据在服务端的内存中)
　　3.服务端调用writ]]></description><category></category></item><item><title><![CDATA[CAP原理以及一致性和强一致性]]></title><link>https://blog.youkuaiyun.com/raiet/article/details/26706599</link><guid>https://blog.youkuaiyun.com/raiet/article/details/26706599</guid><author>raiet</author><pubDate>Fri, 23 May 2014 15:00:59 +0800</pubDate><description><![CDATA[在足球比赛里，一个球员在一场比赛中进三个球，称之为帽子戏法(Hat-trick)。在分布式数据系统中，也有一个帽子原理(CAP Theorem)，不过此帽子非彼帽子。CAP原理中，有三个要素：

一致性(Consistency)可用性(Availability)分区容忍性(Partition tolerance)

CAP原理指的是，这三个要素最多只能同时实现两点，不可能三者兼顾。因此在进]]></description><category></category></item><item><title><![CDATA[【redis源码分析】redis对象和hash表---redisObject+hashType]]></title><link>https://blog.youkuaiyun.com/raiet/article/details/26623633</link><guid>https://blog.youkuaiyun.com/raiet/article/details/26623633</guid><author>raiet</author><pubDate>Thu, 22 May 2014 21:54:36 +0800</pubDate><description><![CDATA[Redis对象
数据结构如下：
typedef struct redisObject {
    // 类型
    unsigned type:4;
    // 对齐位
    unsigned notused:2;
    // 编码方式
    unsigned encoding:4;
    // LRU 时间（相对于 server.lruclock）
    uns]]></description><category></category></item><item><title><![CDATA[【redis源码分析】压缩列表---ziplist]]></title><link>https://blog.youkuaiyun.com/raiet/article/details/26570667</link><guid>https://blog.youkuaiyun.com/raiet/article/details/26570667</guid><author>raiet</author><pubDate>Thu, 22 May 2014 11:24:10 +0800</pubDate><description><![CDATA[压缩列表：
 
 
 
每个节点的构成：
 
上面的两个数据结构就可以实现整个压缩链表，其实他就是一个连续内存占用的双向链表，只不过没有以固定的节点大小来表示每个节点，而是以各个节点内部的长度标识了节点的额大小，这样可以更加剩内存，
在实现的过程中，使用了如下的技巧来保证压缩列表的性质：
1，根据编码方式的不同， pre_entry_length 域可能占用 1 字节或者 5 字节]]></description><category></category></item><item><title><![CDATA[【redis源码分析】跳跃表--skiplist]]></title><link>https://blog.youkuaiyun.com/raiet/article/details/26559313</link><guid>https://blog.youkuaiyun.com/raiet/article/details/26559313</guid><author>raiet</author><pubDate>Thu, 22 May 2014 10:04:01 +0800</pubDate><description><![CDATA[跳跃表实际上可以看作是一种]]></description><category></category></item><item><title><![CDATA[【redis源码分析】数字集合--intset]]></title><link>https://blog.youkuaiyun.com/raiet/article/details/26505429</link><guid>https://blog.youkuaiyun.com/raiet/article/details/26505429</guid><author>raiet</author><pubDate>Wed, 21 May 2014 20:19:14 +0800</pubDate><description><![CDATA[下面是intset的相关定义]]></description><category></category></item><item><title><![CDATA[【redis源码分析】字典---dict]]></title><link>https://blog.youkuaiyun.com/raiet/article/details/26399279</link><guid>https://blog.youkuaiyun.com/raiet/article/details/26399279</guid><author>raiet</author><pubDate>Tue, 20 May 2014 21:59:41 +0800</pubDate><description><![CDATA[字典结构是redis的一个核心结构，设计]]></description><category></category></item><item><title><![CDATA[【redis源码分析】双向链表---adlist]]></title><link>https://blog.youkuaiyun.com/raiet/article/details/26245183</link><guid>https://blog.youkuaiyun.com/raiet/article/details/26245183</guid><author>raiet</author><pubDate>Mon, 19 May 2014 14:36:58 +0800</pubDate><description><![CDATA[双向链表的头文件定义：]]></description><category></category></item><item><title><![CDATA[对redis中单元测试框架的简单修改]]></title><link>https://blog.youkuaiyun.com/raiet/article/details/26215579</link><guid>https://blog.youkuaiyun.com/raiet/article/details/26215579</guid><author>raiet</author><pubDate>Mon, 19 May 2014 09:33:43 +0800</pubDate><description><![CDATA[/* This is a really minimal testing framework for C.
 *
 * Example:
 *
 * test_cond("Check if 1 == 1", 1==1)
 * test_cond("Check if 5 > 10", 5 > 10)
 * test_report()
 *
 * ----------------------------]]></description><category></category></item><item><title><![CDATA[【redis源码分析】动态字符串--sds]]></title><link>https://blog.youkuaiyun.com/raiet/article/details/26169113</link><guid>https://blog.youkuaiyun.com/raiet/article/details/26169113</guid><author>raiet</author><pubDate>Sun, 18 May 2014 21:36:45 +0800</pubDate><description><![CDATA[#ifndef __SDS_H
#define __SDS_H

#define SDS_MAX_PREALLOC (1024*1024)

#include 
#include 

// sds 类型
typedef char *sds;

// sdshdr 结构，注意这个结构体的大小只有4+4，最后的buf是不占空间的
struct sdshdr {

    // buf 已占用长度，相当]]></description><category></category></item></channel></rss>