自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

binling的专栏

主要是备忘性质的笔记和零言碎语

  • 博客(234)
  • 论坛 (113)
  • 收藏
  • 关注

原创 Coding的心态

这里写自定义目录标题新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入dddd11# 欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑

2021-09-14 12:06:57 6

原创 基于代数思维的coding

大概有两种思维,一种是面向过程的,就是想象一个数据结构上的操作步骤,推演一下,看看能不能接近一个solution。这种思维有诸多弊端:1)靠灵光一现的乱试,不可控,不可重复2)面向过程,比较复杂、麻烦,易出错3)逻辑性不强,为什么这么操作一番就能得出解? 这个问题很难回答,缺乏一种确信感。离散,不易证明代数的特点是什么?都是变量和公式推导,从不需要带入离散的具体值去验证,是自证明的,或者说你可以代入任何具体值,都是成立的,逻辑性非常强。比如求斐波那契数列的代数式算法:```def

2021-08-10 13:15:24 11

原创 LeetCode 32 Longest Valid Parentheses 2种优雅解法

思路一 递归DP定义子问题 : f(i) 为 以s[i] 结尾的子串的原问题,有:如果s[i] == ‘(’:f(i) = 0如果s[i] == ‘)’:如果s[i - 1] == ‘(’:f(i) = f(i - 2) + 2如果s[i - 1] == ‘)’:令 l = f(i -1), 如果s[ i - l - 1] == ‘(’,那么f(i) = f(i - 1) +...

2020-03-17 15:28:44 69

原创 c++ 二进制兼容本质

总的一条就是让client只依赖“名字”,而不依赖任何"实现"。“实现” 具体的就是2类1)函数体,code2)任何内存块大小,layout细节为什么会有二进制兼容问题,就是因为一般的c++头文件并不是单纯的接口声明,其中也还包括了“实现细节”,因为成员变量就是一种内存layout,就属于实现细节。对于函数,也有2种情况使得client依赖了实现:1)inline functi

2017-07-24 16:35:41 423

原创 Elastic Search 的分布式特点(和MongoDB对比)

Elastic Search 的分布式特点(和MongoDB对比)回顾一下mongoDB的分布式: replica set:若干mongod组成,只有一个master可写,自动选举 。 sharding: 若干mongos 作为前端router,每个shard对应一个replica set,还有一个replica set作为sharding metatadata的存储(config s

2016-12-31 01:24:54 6067

原创 MongoDB 的分布式属性(replication and sharding)

Cluster  and Replicate和mysql 类似,全局级的replicate 配置(cassandra 是每个key space可以独立配置) ,一个master,多个secondary,写只能在master上一致性:写操作返回可以配置为1)全部副本写成功(complete),2)多数(majority),3)只是primary写成功,4)仅仅是成功交给primary(f

2016-11-15 17:18:33 1150

原创 资源调度器的一些基本问题

1 调度算法Capacity based, DRF(dominant recourse fairness),label based等多态化,插件化,可以多种策略一起工作,对应于不同Job (优先级,job特性,service or batch job)2 容错,HA调度器一般处在一个中心位置,存在SPF问题。可以采用类似HDFS,JobTracker的HA方案1)act

2016-10-28 21:04:02 1264

原创 redis中hashtable 的 rehash/ resizing 策略

依赖于连续存储的数据结构(具体的,就是依赖array)都有一个resizing问题。对于vector,一般的策略就是满的时候double and copy,降到1/4时候 half 。Hashtable也可以这么做,均摊的复杂度模型是一样的。比如load factor (number of entry / hash table size) 大于5的时候触发 resize,创建一个double

2016-10-26 16:36:17 1156

原创 文件洞的处理

存储引擎经常要面对的一个问题,就是洞的处理。1)Segment File:2)segment file 之间整理3)Copy

2016-10-26 16:01:49 784

原创 自己动手写一个key value store

一涉及到persistent, 哪怕只是最基本的需求,很多人都会依赖数据库,或是其他现成的库或工具。确实,对于文件,大部分人很少直接打交道,或者只是诸如整体反序列化/序列化、按行读取、append new line等有限的操作。一个persistent store最基本的问题是如何组织数据,也就是access method, 大致有:1)队列(定长记录 or 不定长记录): kaf

2016-10-10 18:08:41 1282

原创 有限自动机总结

有限自动机A用来识别字符串,它由5部分组成:1)alphabet,字符集2)states,状态集合3)init,初始状态4)trans(s, ch),状态转移函数5)end 可接受state 集合A(str) == true的意思是,A可以接受字符串str,即从初始状态init读入str所有字符之后所达到的状态属于集合end, tran(init, str) 属于 end

2016-09-26 13:07:10 5751

原创 爬虫,索引,PageRank,搜索,综合例子

indexer 主要包含:html parser,word generator, url id generator,inverted index(keyword->[docId],docs table(url, id, refCount)word generator的职责是输入一个text文本,返回一个word iterable。具体参数有,最小word长度,exclude list,

2016-09-23 16:34:56 1243

原创 再谈Parser

Parser的作用就是把一个字符串(一维,流)parse成一个数据结构。Parser的写法大概有2种方式1)递归下降(recursive descend)2)事件驱动的状态机。状态就是一些表明当前状态的变量和最终要parse出的data structure。xml parser, json parser,key value pair parser, 都是第二种方法,其中所谓

2016-09-19 22:41:10 412

原创 TrieMap 实现

最大问题是占空间,R = 256,插入百万数量级的key就 OutOfMemory了。在key的数目比较小的情况下,正如理论指出的一样,性能高于HashMap;但到了占内存比较多的时候由于影响系统整体运行,性能不如HashMap。用HashMap而不是大小为256的数组作为link的时候,占内存少的多,几千万级的都不会OutOfMemory。仔细算一下 256-way Trie的一个N

2016-09-18 23:14:48 1473

原创 AC 自动机

多pattern的匹配, 比KMP更generalpublic class ACAutomata { static final int R = 26; private class Node { Node next[] = new Node[R]; Node fail; String prefix; int count; } public Node root = new

2016-09-18 10:38:28 276

原创 树堆TreapMap 实现

测试结果居然比红黑树,AVL都好。RBT,AVL,SBT,Treap 区别只是节点信息和 maintain函数。所有的读操作都可以放在普通BST里,insert 和 delete(除了RBT)也可以,只需要扩展Node 和 maintain函数就行。import java.util.Random;public class TreapMap, Value> { private

2016-09-15 19:48:51 544

原创 SBT(size balanced tree) 和AVL 合二为一

SBT 和AVL类似,只是是基于size 进行balance的,旋转的case是一样的。public class AVLOrSBTTreeMap, Value> { public enum BF {HEIGHT, SIZE, NONE}; //balance factor private BF bf = BF.HEIGHT; public AVLOrSBTTreeMap() { }

2016-09-15 19:40:04 564

原创 基于LLRB 红黑树的 TreeMap 实现

public class LLRBMap, Value> { private static final boolean RED = true; private static final boolean BLACK = false; private class Node { Key key; Value value; Node left, right; int sz, ht;

2016-09-14 14:51:32 588

原创 基于AVL自平衡树的TreeMap实现

自平衡的插入struct node { int val; struct node* left; struct node* right; int ht; node(int v) : val(v), left(nullptr), right(nullptr) {} node() : left(nullptr), right(nullptr) {} node(i

2016-09-08 16:35:35 552

原创 彻底解决数据库去中心化问题

1)首先垂直切分,按业务模块把一些紧密联系的表分在一起(按表切分),形成一个抽象的vertical partition2)水平切分。垂直切分之后的单个vertical partition(甚至其中单个表)仍然可能太大,一个server放不下,进一步按行切分,这时候需要选择一个聚合根作为记录的horizontal partiotion的标志,一般是userId,对于Forum模块,forumId

2016-08-12 18:40:16 3407 1

原创 再谈 循环/递归就是状态机

状态是相关变量的组合状态,一个变量相当于一个分量一次循环就是一轮状态状态转移初始状态 -> 按某种规则转移,有些状态属于终止状态,然后状态的某个变量就是所求当前状态下,各个变量间互动,迁移,达到另一个状态,状态机的一般形式是 while (true) { //转移规则}, for (int i = 0; i int state1 = 0, state2 = 1; //state

2016-08-04 19:20:27 1237

原创 再谈type ahead 问题

问题:给定一个词典,包括一些词和其出现的频率。实现type ahead功能,要求用户每键入一个字符,下拉框显示以当前输入为前缀的前10个最热门的词解法1:用不带data的Trie,实时查询法框架就是Triie的 startWithPrefix 查询,不同的是并不是返回遍历得到的所有词,而是像经典求top k那样,用一个大小为k的最小堆过滤。解法2: 用 带data的 T

2016-08-02 21:32:54 1060

原创 欧拉路径 LeetCode 332

图中一条路径,包含了所有边(且只包含一次)如果起点和终点是同一个点,则是一种特殊的欧拉路径——欧拉环路求法1:暴力法:遍历所有的路径,如果当前路径长度为总边数,则当前路径是一条欧拉路径,如果一直没有碰到这样的路径,则无解。一个图总共多少条路径(一般是有环的)1)不允许路径里有环,也就是路径里的点都只出现一次的,|V|!(第一个点|V|种选择,第二个|V| - 1种。。 n

2016-06-23 14:30:43 2017

原创 一致性的3种协议,并发,事务

Two Phase CommitMVCCPaxosTPC对应于传统数据库上的local cluster的一致性,分布式事务,每个节点上的local事务可以是不同的亦可以是相同的(replica)MVCC的思想是抓住Transaction的本质:server state从一个一致性state迁移到另一个一致性state,也就是Transaction是工作在一个snap

2016-04-14 16:26:54 399

原创 map reduce takeaways

首先是数据的partition,  share nothing parallel architecture,  执行task的machine独立,各自处理自己的partition,不需要通信暴露给用户的控制点只有2个 map function 和 reduce function,但是整个流程包含更多的步骤,(其他的步骤是infrastructure做的)load: 文件写到 hdfs 就完

2016-04-13 11:03:09 356

原创 关系代数,关系数据库基本概念

Data Model:1)structure  2) constraints 3) operationhierarchy/Treelike(give me my children), table, graph, stream(give me next n bytes)数据库 key ideaphysical data independence : interface with

2016-04-12 16:16:03 845

原创 顺序读写文件的实验

一个OutputStream不断append文件,一个InputStream读同一个文件,读的速度比写快。当Reader 赶上Writer的时候会EOF,但不存在data corruption问题,不需要用户同步。理论上也应该是这样:文件是按块存取的1)如果读写不在一个块,挨不着2)在一个块,变成了一个内存块的顺序读和顺序写的问题,也不需要同步内存块顺序读和顺序写的scen

2016-04-06 16:53:07 1378

原创 面向对象OO 设计、架构终极理解, 以及如何学习一个领域

程序就是一些互相引用的内存快,互相发消息。每个内存块就是一个状态机,状态的迁移规则是定制好的一些消息(方法)。构造函数用来初始化状态。一个内存块的方法除了改变自身状态,也有可能向引用的别内存快发消息,引起别的内存块发生状态转移。重点不在过程化的code,而在对象的状态,code只是定制好的对象状态转移的规则,重在掌握状态怎么转移。程序运行就是对象状态转移,一切都是状态,结果

2016-03-28 22:18:00 1027

原创 BigArray算法核心

几个Object: logical array, paged index files, data filesLogical Array: 1) head index: next array index to append2) tail index: start index of the array, typically 0, if not wrapped这两个是logica

2016-03-21 17:23:23 417

转载 BigQueue:The Architecture and Design of a Publish & Subscribe Messaging System Tailored for Big Data

The Architecture and Design of a Publish & Subscribe Messaging System Tailored for Big Data Collecting and AnalyticsMAR 27TH, 2013 | COMMENTSOverviewWith the advent of big data era, we a

2016-03-18 15:45:13 2366

原创 文件操作总结

seek 到一个大于文件length的值写:产生hole, size 包含hole的部分,size on disk只包含实际字节。seek到文件中间:覆盖,类似编辑模式中的覆盖,而不是insert,没有覆盖到的还是原来的内容,

2016-03-14 18:18:17 304

原创 队列实现的一些问题(scalable, persistent)

Persistent Queue的实现方式:1)Berkeley DB,一个基于文件的高效的key-value store。需要一个从key-value 存取系统到 FIFO存取系统的转换。维护一个自增的Long型的key,队头就是最小的key,队尾就是最大的key。2)paged file。队列由一系列文件或者块组成,只有第一个块和最后一个块是hot的,需要map到memory里

2016-03-14 17:42:49 410

原创 facebook 照片存储系统haystack的学习

之前的solution是POSIX based filesystem: 一些NAS(Network attached storage) 设备mount 到NFS上主要问题:per file metadata 导致过多的disk operation because of metadata lookup。读取一个文件一般至少3个步骤1)一次或者多次disk operation 访问到dir

2016-03-11 16:02:23 1742

原创 kafka设计要点

producer library linked to all kinds of services which generate logsbroker processes consumer library linked to consumer applicationzookeeper hold global informationMessage是有key的,map到topic的一个p

2016-01-23 16:20:51 362

原创 还是搜索、索引的问题

搜索要弄清2个基本问题:1)要搜索出什么类型的entity?2)entity的哪个方面/维度和关键词发生关联的?一般来说可以有多个角度link到entity,一个entity支持多个索引,可以从不同的column检索对于 web search,这两个问题都很简单,1)只有一种entity,就是网页,2)关键词和网页也只有一种关联关系,就是包含关系对于linkedin

2016-01-10 13:02:56 724

原创 由SSTable想到的:快速的,可读可写的,实时的,Persistent的data store方案

搜索引擎那样的,如Lucene, MDS等,先build index,然后用index提供查询服务。index是基于某一时刻的snapshot的index,是滞后的并不实时反应数据的变化。内存数据结构,如平衡树,hashtable等,不是persistent的类似数据库那样的,用B+树在磁盘上组织数据,是一个可选方案,缺点是虽然B+树已经很低,但是因为是基于磁盘的,每一次都

2015-12-29 14:03:03 472

原创 几种自旋锁SpinLock,TicketLock,CLHLock,以及可重入实现要点,非阻塞锁实现要点

最核心的东西:synchronization state,同步状态:指示当前线程是否可以proceed还是需要wait的状态。1.普通SpinLock (支持可重入的版本)class SpinLock { private AtomicReference owner = new AtomicReference(); // use thread itself as synchronizat

2015-12-28 17:03:22 4627 3

原创 我的java DCL-based Singleton

1)instance完全创建好了,另一个线程得到的还是null:用volatile解决2)对象内存块地址赋给了instance,但对象还没完全construct完毕:先访问一下对象,再赋instance,class Singleton { private volatile Singleton instance = null; private Singleton() {} public

2015-12-21 15:59:55 401

原创 再谈搜索,索引等问题

索引的本质是关联、link,key -> 记录地址( row locator等)或者字段 -> 主Id 的一个映射正排索引:id -> (col1, col2, col3), docId - > { wordId }倒排索引:col -> id, wordId -> docId为什么需要倒排索引?关系是这样的:用col 通过倒排索引得到Id, 进而用Id通过正排得到整体,也就是得到

2015-12-21 12:14:15 420

原创 事务的并发控制big picture

Goal:即满足一致性又尽量提高吞吐量Sequential equivalence checking: 两个事务的所有conflicting operation pair的相对顺序都是一样的悲观并发控制:用锁实现 Sequential equivalence锁的理解,2个作用1)基本数据完整性,防止同时修改导致的坏数据,2)操作完整性、事务完整性,复合状态的完整性,比如

2015-12-19 21:51:47 489

空空如也

怎样删去服务?

发表于 2002-11-11 最后回复 2012-11-23

如何让MySQL启动后自动执行一段sql脚本(或存储过程)?

发表于 2008-04-29 最后回复 2012-11-23

帮我看看代码吧,在ondraw中画位图的

发表于 2004-01-03 最后回复 2004-02-26

请问哪里有雷达图像的图片?(万分感激!)

发表于 2003-12-29 最后回复 2004-01-17

请问哪里有熵编码器的源码?

发表于 2004-01-05 最后回复 2004-01-09

求熵编码器源码!

发表于 2004-01-09 最后回复 2004-01-09

有搞雷达图像压缩编码的哥们吗?

发表于 2003-11-13 最后回复 2003-11-13

struts的<html:errors>

发表于 2003-04-02 最后回复 2003-06-21

大家帮我看看,太奇怪了!!!!

发表于 2003-05-09 最后回复 2003-05-09

求一函数,判断一个字符串是否是数字

发表于 2002-08-02 最后回复 2003-05-06

两个简单的问题

发表于 2002-07-15 最后回复 2003-05-06

我想用js打印,但一旦概念都没有,大家给我点拨一下吧!

发表于 2002-07-12 最后回复 2003-05-06

js中判断输入的值是不是数字的函数是什么?

发表于 2002-07-09 最后回复 2003-05-06

js中没有类似vbs中trim的函数?

发表于 2002-07-09 最后回复 2003-05-06

刚才没说清楚,这次争取说清楚一点

发表于 2002-07-08 最后回复 2003-05-06

这个问题怎么解决????

发表于 2002-07-07 最后回复 2003-05-06

动态生成的对象在以后的代码中不可以引用吗?

发表于 2002-07-06 最后回复 2003-05-06

超级简单的问题!

发表于 2002-07-05 最后回复 2003-05-06

怎样刷新iframe?

发表于 2002-07-04 最后回复 2003-05-06

checkbox怎么用啊?

发表于 2002-07-03 最后回复 2003-05-06

奇怪!为什么会多出来空格??

发表于 2002-07-03 最后回复 2003-05-06

在vbscript中if语句可以只有if,elseif end if而不要else么?

发表于 2002-07-02 最后回复 2003-05-06

求一正则表达式!匹配整数(包括负整数)

发表于 2002-08-02 最后回复 2003-04-24

关于struts或web framework可以做点工作写一篇硕士论文吗?

发表于 2003-04-12 最后回复 2003-04-14

struts中文问题

发表于 2003-03-31 最后回复 2003-04-08

问一个css的问题

发表于 2003-03-31 最后回复 2003-04-03

请问struts的message resource是什么东东?怎么用?

发表于 2003-03-24 最后回复 2003-04-02

struts求助:tomcat启动出现如下错误

发表于 2003-03-31 最后回复 2003-03-31

为什么不认同一个包中的类?

发表于 2003-03-31 最后回复 2003-03-31

大家帮我看看!!!

发表于 2003-03-30 最后回复 2003-03-31

小组怎样开发jsp?

发表于 2003-03-24 最后回复 2003-03-24

关于tomcat的问题

发表于 2003-01-05 最后回复 2003-01-06

小组开发jsp的问题

发表于 2003-01-05 最后回复 2003-01-05

刚安装完oracale的用户名和密码是多少?

发表于 2002-12-31 最后回复 2003-01-02

请问在那里可以下载oracle 标准版?

发表于 2002-12-30 最后回复 2002-12-30

关于classpath

发表于 2002-11-17 最后回复 2002-11-17

关于同时访问sql server2000中两个数据库的问题

发表于 2002-11-05 最后回复 2002-11-08

怎样用ado访问一个.dbf表?

发表于 2002-11-07 最后回复 2002-11-08

数据库中值为null,在asp代码中怎么判断?

发表于 2002-11-06 最后回复 2002-11-06

请问怎样让一段代码自动隔1秒执行一次

发表于 2002-11-05 最后回复 2002-11-05

空空如也

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

TA关注的人 TA的粉丝

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