自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 CAP理论的理解

这个CAP理论有几个版本, 其中对于A和P的定义非常之模糊。 导致我对于可用性和分区容忍性的区别一直没有把握好。直到我读了很多文章,并进行下面的总结的时候,我都不确定我的理解是否合理。 我最终接受的说法是,Seth Gilbert和Nancy Lynch的定义。 主要来自于它们的两篇文章 ...

2017-04-16 21:52:35

阅读数 462

评论数 0

原创 数据库学习的3个维度

如果一个人说其工作内容是有关数据库的,他的工作可能与你理解的不一样,因为有关数据库的工作可能有以下3种。 1.普通用户和应用程序 他们要求对数据进行访问和修改。 使用语言:一切编程语言,但是最终都会转化为SQL语句 2.数据库管理员(database administrator,DBA) ...

2017-01-15 15:55:13

阅读数 479

评论数 0

原创 磁盘系统基本概念以及磁盘的顺序读写与随机读写

本文总结自 (1)《数据库系统实现》 (2)知乎:https://www.zhihu.com/question/48254780 1.基本概念 2.细节 3.顺序读写和随机读写 1.基本概念 (1)磁盘组合 盘片=2盘面 主轴 磁道 柱面 扇区 间隙 块...

2017-01-13 10:08:38

阅读数 17325

评论数 0

原创 目前流行的存储系统

这里对于一些我所知道的存储系统做一个总结,会不定期更新。 这里讨论的系统通常是面对用户的,所以不会去细分存储是块存储、文件存储、对象存储,讨论的都是可以直接面向业务的存储系统。 1.文件系统 (1)GFS (2)HDFS 2.K-V系统/表格系统/NoSQL (1)Memcached ...

2016-11-26 12:02:08

阅读数 349

评论数 0

原创 分布式之CAP定理

总结自: 1.CAP Theorem:Revisited 2.网络编程(七):CAP原理推导和应用 先说定义吧 一致性(Consistency):对于某次读取返回的内容是该信息的最新版本。 可用性(Availability):一个正常工作的节点,对于client的请求会在合理的时间内返回一个合...

2016-10-19 17:10:53

阅读数 339

评论数 0

原创 用C++实现单例模式

1.C++11 借助std::call_once和std::once_flag #include template class Singleton{ public: Singleton(const Singleton&) = delete; Singleton&...

2016-08-28 11:25:10

阅读数 502

评论数 0

原创 C/C++输入输出

1.scanf和printf的优缺点 A。缺点 (1)对于不同类型的使用繁琐、不统一 (2)不能够指定大小,存在缓冲区溢出风险 (3)不可扩展,不容易针对用户自定义类型 设计printf的类型缩写 B。优点 (1)打印多个值相当于一次函数调用,具备线程安全性。 (2)容易控制格式 ...

2016-08-11 17:53:30

阅读数 216

评论数 0

原创 排序算法的稳定性

今天专门来讲一下排序算法的稳定性。 1.稳定性的含义 这个稳定性的意思就是说,在排序过程中,具有相同数值的对象的相对顺序被不被打乱。 如果可以保证不被打乱就是稳定的,如果不能保证就是不稳定的。 2.稳定性的作用 因为有可能一个值又多重属性,我们需要对其各个属性分别排序。 如果在对某一种属性排序的过...

2016-08-02 15:20:42

阅读数 342

评论数 0

原创 Paxos协议学习---3.Paxos Made Simple

先读Parliament再读simple确实,要好很多。 下面是阅读笔记 Paxos made simple P2 1.为什么不是采用一个acceptor就好? 答:因为那个节点可能失败。 2.为什么任意qrm的人通过了一个值,就能确定一个值? 答:因为任意qrm至少有一个相...

2016-08-01 12:11:09

阅读数 324

评论数 0

原创 Paxos协议学习---2.由3大条件证明一致性

Paxos是分布式的一致性协议,最重要的部分当然是这个一致性的证明。 在朴素Paxos协议中给出了3大条件,只要达到了这3大条件 可以证明,如果Paxos协议达成了一次成功的表决,那么这个表决具有一致性。 需要说明的是,这3大条件并不保证进行性,也就是说并不保证一定会达成成功的表决。 但是...

2016-07-28 22:28:04

阅读数 630

评论数 0

原创 Paxos协议学习---1.总纲

分布式的一致性算法。 这个算法始于两篇论文《The Part-time Parliament》《Paxos Made Simple》 这篇文章主要源于阅读《The Part-time Parliament》 其中主要的内容就是 1.神会协议 The Single-Decree Synod 2.议会...

2016-07-27 16:06:42

阅读数 329

评论数 0

原创 LeetCode---6.RestEasy

1.题目思路 1. 292. Nim Game 关键词:求余 思路:这个根据两个人可以报的数,枚举所有情况发现。 不管第一个人报什么,第二个人总能报到4. 那么如果能被4整除,第二个人可确保赢。 如果不能被4整除,第一个人将其余数报了, 这样第一个人相当于能整除情况得第一个人,可确保...

2016-07-27 10:46:27

阅读数 221

评论数 0

原创 理解KMP算法

KMP算法用于字符串的匹配。 1.KMP的原理 通常我们采用的方法是暴力匹配。时间复杂度为O(N*M) 这里面可能有很多冗余操作。 假设是在text字符串里面寻找pattern字符串。 假设N为text长度,M为pattern长度。 设N = 20, M = 8 我们从text和...

2016-07-21 23:15:11

阅读数 233

评论数 0

原创 基于比较的排序算法的最优下界---NlogN

这个最优下界的意思就是说,这种算法最好的情况也至少需要这么多步骤才能排出来。 进行非严格的推导。 N个数,一共有N!种排列。 比较i、j两个元素,最多能够确定多少种情况呢? 是N!/2,仔细想想快速排序,如果选到了一个号元素可以减少一半,如果不是一个好元素,并不能减少这么多。所以这样推出来...

2016-07-21 15:31:52

阅读数 1992

评论数 1

原创 LeetCode---5.MathEasy

1.题目思路 1. 7.Reverse Integer 关键词:整数每位的获取 思路:①取得符号,如果是负数转为正数方便处理。 ②一次取得每一位,恰好就再拼接就正好reverse了 ③特别注意溢出问题,因为这里的输入时int,所以用一个long来盛放, 最后进行判断也可以。 但是不用...

2016-07-21 11:56:47

阅读数 230

评论数 0

原创 LeetCode---4.ListEasy

1.题目思路 1. 19.Remove Nth Node From End of List 关键词:双指针 思路:注意题中条件已经说了,考虑的是n是valid,也就是说1 实际上题目的答案在给出的时候,如果n>实际长度,应该得出等于n取size的结果。 但是测试用例里面都没有大于实...

2016-07-20 09:28:26

阅读数 217

评论数 0

原创 数据库的索引

索引这个东西很抽象,今天就来探究一下,它究竟是用来干什么的?它的原理又是什么? 索引的英文是index,在MySQL里面建立索引的关键字是key 索引是对字段建立的,可以是一个字段,可以是多个字段 对多个字段建立索引的时候,在第一个字段相同时才按第二个字段来排序,并以此类推。 假如我们要对...

2016-07-18 21:52:28

阅读数 262

评论数 0

原创 LeetCode---3.TreeEasy

1.题目思路 1. 100.Same Tree 关键词:值、结构 思路: (1)采用递归。递归时先要搞清楚结束条件,本例有三个结束条件 ①两者都为NULL(值、结构相同) ②一者为NULL,一者不为NULL(结构不同) ③结构相同,val不同(值不同) (2)采用迭代 这种可以使...

2016-07-17 20:36:35

阅读数 158

评论数 0

原创 LeetCode---2.StringEasy

1.题目思路 1. 6.ZigZag Conversion 关键词:构造规律 思路:这个主要就是认识到,中间层是row-2,比如总的7行,中间就是5行。 所以一个完整的循环是2*row-2个元素,然后分为第一,最后,中间来计算。 需要记住的一点是,模块化不是代码的模块化而是逻辑的...

2016-07-15 20:36:03

阅读数 321

评论数 0

原创 数据库设计之问卷模块的设计2

2016/07/13更新 整个实习已经告一段落了,其实整个问卷模块的数据库设计,在6月初基本上已经最终敲定并实现出来了。 本次的总结分为两个部分。 一、对之前提出的几个遗留问题,解决了的做一个说明 二、最终总结一下,问卷模块的核心:问卷、试题、选项几个实体之间的关系如何表示,如实记录之中的...

2016-07-14 01:16:37

阅读数 4544

评论数 1

原创 LeetCode---1.ArrayEasy

1.题目思路 1. 1.Two Sum 关键词:hashMap 思路:采用哈希表,将值作为key,将下标作为value, 这样可以使用值的一些运算后在加去作为key查询。 2. 26.Remove Duplicates from Sorted Array 关键词:下标移动 思路:采用一个下...

2016-07-13 21:35:10

阅读数 384

评论数 0

原创 LeetCode刷题总结

其实,刷这个题就是保持一个编程的状态,这个帖子是用来记录、总结自身通过leetcode刷题的感悟、技巧、方法的。 1.ArrayEasy

2016-07-13 21:20:15

阅读数 739

评论数 0

原创 STL中的Sort

下面是对于STL中的sort进行一个小结,包含 insert_sort bubble_sort quick_sort heap_sort merge_sort 几种 1.stl_sort 这个是STL算法里面的标准sort,因为关联容器如果用红黑树实现本身已经排好序,如果用哈希表实现排序会破坏其结...

2016-07-10 16:35:29

阅读数 459

评论数 0

原创 STL中的RB-tree

set和map的底层结构都是红黑树,它们最后基本只是对红黑树接口的简单调用。 这里就主要来说一说红黑树。 1.红黑树的定义 红黑树首先是一棵二叉搜索树(BST),二叉的意思是每个节点最多有两个儿子,搜索的意思是根节点大于左儿子,小于右儿子。 在此基础上还要满足以下5个条件: (1)只有红色和黑色2...

2016-07-07 09:54:54

阅读数 751

评论数 0

原创 Tair源码阅读1---ConfigServer

ConfigServer里面涉及到的几个最重要的对象是,configServer,dataServer,table,group 1.对象介绍 (1)table,对照表 key通过hash之后,再取模可以得到value存放在哪个桶。这个桶是放在哪个dataServer的信息,可以由一个表来表示...

2016-07-02 17:18:44

阅读数 1373

评论数 0

原创 阿里中间件三大存储系统

直接上名字:Tair、TDDL、TFS 它们都是分布式存储系统,下面来说说异同。 1.Tair 存储类型:K-V,缓存 语言:C++ 2.TFS 存储类型:非结构化存储文件系统,NoSQL 3.TDDL 存储类型:RDBMS结构化数据库存储 分布式存储系统的一些考虑 1.服务路由 2.负载均衡...

2016-06-29 16:44:17

阅读数 1406

评论数 0

原创 C++中的trivial、standard layout、POD

在学习STL的时候,会反复出现trivial和POD这样的术语,这几个概念如果要特别仔细地区分,只能说是蛋疼。 但是结合其在STL里面的用意,为了性能优化,不那么学究地去考究其意义还是相对好理解的。 trivial是从其拷贝控制函数是否是系统合成的来说明的 standard layout是从其内部...

2016-06-29 11:39:27

阅读数 840

评论数 0

原创 STL中的Vector

看了一下vector的实现,感觉C++的内存管理,确实是需要非常认真对待的。 为了追求效率,自身就需要仔细万分,总结了3,4点感觉尤其如此。 1.vector的底层实现 这个倒是很简单,vector就是一段动态分配内存的数组,加上冗余空间,所以用三个指针(迭代器)就能表示出来,底层的数据结构。 分...

2016-06-27 23:59:57

阅读数 215

评论数 0

原创 数据库查询语句拾遗

先上一个总览 select ①字段名、可以使用集合函数 ②from + left join + on  ③where  ④group by + having ⑤order by ⑥limit (1)集合函数 就是常见的MAX MIN COUNT SUM AVG GROUP_CONCAT 它们经常和...

2016-06-21 16:32:06

阅读数 285

评论数 0

原创 C语言拾遗

对一些C语言的知识进行总结,重点是最后关于字符数组、字符指针、字符串的讨论。 1.变量的初始化 简单说就是,静态变量初始化为0,自动变量不初始化。 什么是不初始化呢?就是说,可能是任意值。 注意: (1)对于非指针变量,当你声明了一个变量时,你就获得了掌控权,系统保证了除非你自己实现,否则这个变量...

2016-06-21 10:21:12

阅读数 180

评论数 0

原创 STL中的Iterator

话不多说,就是总结几个问题 1.什么是迭代器 (1)迭代器可以看做一种智能指针,他会重载*和->运算符。 (2)但是它并不一定具备指针的所有运算符:p++,p--,p+n,p-n,p[n],p1-p2,p1 有可能它只提供一部分,比如:p++,p--,p1!=p2 (3)STL强数据容器与算...

2016-06-19 21:30:05

阅读数 802

评论数 0

转载 编程的智慧

这几天,陆陆续续写了一些代码,在写代码的过程中,确实感觉要写好代码需要一些技巧以及好的习惯。 又去读了一下,王垠的《编程的智慧》,并总结了提纲。 原文地址为:http://www.yinwang.org/blog-cn/2015/11/21/programming-philosophy 1.反复推...

2016-06-18 11:31:20

阅读数 210

评论数 0

原创 STL中的Allocator

最近在看STL,写一点博客。 关于一些细节可能就不放上来了,就写一些我自己的心得。 1.为什么要用Allocator C++容器的设计思路是,对存放到里面的东西是拷贝一份放进去。 而且里面的空间都是动态分配的。 所以在构建容器的时候,需要必要的①内存分配②构造对象。 2.new operato...

2016-06-13 15:32:44

阅读数 840

评论数 0

原创 Java中的hashMap

首先上个图 key经过hash函数作用后得到一个槽(buckets或slots)的索引(index),槽中保存着我们想要获取的值 本文讨论给出的部分源码,来源于Oracle JDK 1.7.0_71 本文主要讲述hashMap的三个问题 1.Object的has...

2016-06-13 10:37:52

阅读数 241

评论数 0

原创 Java的JDK和JRE

就是说说这两个的区别,最主要的难点就是说,JDK下面也有一个JRE为什么需要这个JRE 1.JRE下面有什么? JRE下面主要就是①JVM和②一些类库,比如BOOTSTRAP加载器需要加载的一些系统核心类库。 直接上图 2.JDK下面有什么? ①JRE②JAVA开发程序,比如将Java代码编译...

2016-06-05 10:50:10

阅读数 218

评论数 0

原创 Java类加载与反射

今天又看了李刚的《疯狂Java讲义》里面关于类加载机制与反射的知识。 以前一直不知道,反射的原理,其实现在感觉还是比较自然的。 1.类加载的三大步骤 (1)加载 将类的class文件读入内存,并为之创建一个java.lang.Class对象。 (2)连接 把类的二进制数据合并到jre中 ①验证:检...

2016-06-03 23:04:50

阅读数 210

评论数 0

原创 C++学习之多态的实现

多态又分为静态多态和动态多态。 静态多态其实就是函数重载,动态多态就是一般我们所说的多态。 多态作为面向对象的三大特征之一,需要另外两大特征:封装、继承的支持。 本文主要讲讲,我看了一点《深度探索C++模型》总结多态是怎样实现的。 1.C++内存布局 C++对象主要可以有如下几种成员: (1)数据...

2016-05-30 22:56:00

阅读数 351

评论数 0

原创 数据库表关联小结

1.inner、left、right join的区别? 这里暂时不讨论这几种join的原理,与效率上的区别。 只考虑同样的查询语句,会不会导致不同的查询结果。 这3种关联的区别是,当两个表有不关联的字段存在时,得出的结果才会有差别。 比如a、b两个表,关联关系为a.b_id = b.id 如果a中...

2016-05-24 14:43:52

阅读数 735

评论数 0

原创 数据库设计之问卷模块的设计1

这两个星期在设计一个问卷调查的数据库,现在做一番总结。 平时作为用户,感觉很简单的一个模块,现在参与设计,虽然感觉还有无数不完善的地方,但是设计的时候,还是考虑了很多很多。 问卷模块的设计 最主要的几个实体就是:问卷、试题、选项、试题类型 问卷与试题是多对多的关系,采用关联表 将问卷与试题看做...

2016-05-22 23:33:34

阅读数 8258

评论数 1

原创 Java多线程volatile和synchronized

看了慕课网的视频,并发编程网的文章,疯狂Java的教科书。 现在就来说说,这两个关键字。 1.synchronized (Object obj) synchronized关键字,最令人疑惑的莫过于它后面的一个任意对象的参数了。 同步代码块就同步代码块嘛,只要进入同步代码块就实现同步不就可以...

2016-05-22 11:11:55

阅读数 227

评论数 0

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