程序员需要知道的RAID基本原理 | Charles的技术博客 

作者:JerryXia | 发表于 , 阅读 (0)
RAID的基本作用RAID的一般有如下作用
数据冗余性能提升数据冗余是指把数据的校验信息存放在冗余的磁盘中,在某些磁盘数据损坏时,能从其他未损坏的磁盘中,重新构建数据。
性能提升是指RAID能把多块独立的磁盘组成磁盘阵列,通过把数据切成分片的方式,使得读/写数据能走多块磁盘,从而提升性能。
各级RAID的基本原理根据RAID的冗余信息程度,切分数据的方式等不同,可以把RAID分成不同的级别,分别是
RAID0RAID1RAID2RAID3RAID4RAID5RAID6接下来就讨论这些RAID级别的基本原理。
RAID0的基本原理RAID0设计的目标是为了提升读写性能,但并不带数据冗余信息。

如上图,RAID0会把数据切成块,分别存储在N个磁盘上。当读数据时,如果要读的数据块比较大,分布在多次磁盘上,那么能同时从多块盘读数据;当写数据时,如果要写的数据块比较大,分布式在多块磁盘上,那么同时能从多块盘写数据。
因为数据分布在多块盘上,当某块磁盘损坏时,整个RAID系统就不可用了。因此,N块盘的RAID0的特性如下:
读性能最好情况下是单块盘的N倍写性能最好情况下是单块盘...阅读全文

 零基础搭建自己炫酷的个人博客,我和Hexo的一天 | OkyCode 

作者:JerryXia | 发表于 , 阅读 (0)
好了,以上了解后,我门就动起手来搭建自己的个人博客吧。
创建 GitHub Pages首先你要拥有一个 GitHub帐号
在不购买服务器的前提下,我们的博客需要挂在GitHub Pages上。   进入 GitHub Pages,按步骤操作,这里要用到 git 命令,具体安装见这里,完成后就能在浏览器中打开http://yourGitName.github.io了。   至此,我门就拥有了一个初步的域名:http://yourGitName.github.io和一个免费的网络空间了。
安装 Hexo 博客框架具体安装请参考 官方文档。
建站安装 Hexo 很简单吧,按照官方文档一步步操作下来,Hexo 安装好后,我门就开始创建我门的博客了。
首先,把我门创建好的GitHub Pages仓库拉到本地,便于我门以后对博客的编辑和代码管理。在本地建立文件夹 myBlog 这是我的,然后进入 myBlog中,在 终端 执行命令1$ clone https://github.com/yourGitName/yourGitName.github.io
好了,此时会在 myblog 文件...阅读全文

 写给小白的git教程 | OkyCode 

作者:JerryXia | 发表于 , 阅读 (0)
这是一个故事众所周知,Linux 创建于1991年,其内核开源项目有着为数众广的参与者,这么多人在世界各地为 Linux 编写代码,那 Linux 的代码是如何管理的呢?
事实上,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给 Linus Torvalds( Linux 之父 ),然后由 Linus Torvalds 本人通过手工方式合并代码!
你会想象这是多么糟糕的一个情景,那么 Linus Torvalds 为什么不把 Linux 代码放到版本控制系统里呢?不是有 CVS、SVN 这些免费的版本控制系统吗?因为 Linus Torvalds 坚定地反对 CVS 和 SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比 CVS、SVN 好用,但那是付费的,和Linux的开源精神不符,Free,自由!
到了2002年,伴随着 Linux 代码库不断壮大,让 Linus Torvalds 很难继续通过手工方式管理了,于是 Linus Torvalds 不得不选择一款版本控制系统来管理 Linux,而 BitMove...阅读全文

 浅谈数据结构之链表 | OkyCode 

作者:JerryXia | 发表于 , 阅读 (0)
什么是链表链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
链表由一系列结点(元素)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 

相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。
牺牲随机访问,换取快速插入和删除。
单向链表单向链表又称单链表,是链表的一种,链表的链接方向是单向的,对单链表的访问要通过顺序读取从头部开始。
一个完整的单向链表包含一个head头节点,和一个tail尾节点,而尾节点的next指针域指向一个null空对象。好了,了解了一个单向链表的内部结构后,下面我门来创建一个我们自己的单链表。
首先,创建一个内部类,实例代表一个链表结点。12345678910public final class Node {    private T...阅读全文

 手把手教你如何生成一个 Android Demo 示例的 GIF 动态演示图 | OkyCode 

作者:JerryXia | 发表于 , 阅读 (0)
我们经常会在一些大牛的博文或开源项目的 README 中看到动态的演示示例,是不是感觉很炫酷样子,其实那就是一张 GIF 格式的图片,一个 GIF 示例演示图不仅可以让读者对你项目的功能一目了然,还可以吸引读者增加对你的关注,下面我们就来通过一个示例介绍怎么生成一张 GIF 演示图:
思路:进行屏幕录制,然后把视频格式转化成 GIF 格式
屏幕录制我门都知道对于 Android4.4(API level 19) 以上的手机,系统自带了一个命令 screenrecord,screenrecord 是一个shell命令,用它可以录制手机屏幕,支持录制 mp4 视频格式。1$ adb shell screenrecord /sdcard/mydemo.mp4
开始录制手机屏幕,存放为 mydemo.mp4 到手机sd卡里,默认录制时长为180秒,可以通过按下组合键 control+c强制结束录制。
指定录制时长1$ adb shell screenrecord --time-limit 10 /sdcard/mydemo.mp4限制视频录制时间为10秒,10秒后录制自动结束。
指定...阅读全文