自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(407)
  • 资源 (2)
  • 收藏
  • 关注

原创 跑男寻宝游戏,AR,及基于地理位置的移动广告技术

以下描述的是一个基于地理位置加AR的移动广告自助发布查询系统:(1)用户用手机打开GPS定位功能,然后走到某一特定地理位置(前提条件1);然后打开照相机,扫描这个环境下的所有物体(前提条件2),gps坐标和视频流会上传到服务器端,如果2者产生匹配,则使用AR技术在用户手机上显示一则广告,或者用户可以发布一条广告(2)仅仅基于gps坐标显示广告会导致作弊,所以必须加上环境特征识别

2016-08-08 13:13:28 2455

原创 Mastering Python-Packt Publishing 2016(读书笔记)第1版(讲解3.5的coroutine、asyncio、metaclass等)

Mastering Python:Master the art of writing beautiful and powerful Python by using all of the features that Python 3.5 offers目录1Get Started2Python风格指南3容器与集合4FP:可读性 vs Brev

2016-08-02 16:31:22 1080

原创 Decentralized Applications(读书笔记)-O'Reilly 2016.8

Decentralized Applications:Harnessing Bitcoin’s Blockchain Technology目录1什么是去中心化应用2Dapp生态系统3创建你的第一个Dapp4OpenBazaar5Lighthouse(分布式众筹)6La'Zooz什么是去中心化应用拜占庭将军问题(即分

2016-07-31 19:32:11 1748

原创 You need to scale your work up and out

借用服务器后端开发的2个术语。Scale up:这意味着必须提高你的工作的技术难度——不是别的什么人随随便便也能完成你做的工作。这让你的核心竞争力不可替代 。Scale out:你的工作最好是能够通过无成本的复制卖给大量顾客。在一个大企业里当螺丝钉显然不行。写一个自己的软件或者写一本书也许可能。

2016-07-17 16:40:09 732

原创 Mac上安装WireShark,然后用它来探测视频直播类应用的Url

安装WireShark:可以直接从官网下载dmg安装,或者用brew instgall wireshark --with-qt运行图形界面之前,需要先执行命令:sudo chmod 777 /dev/bpf*现在考虑如何用它来探测视频直播类应用的Url:思路很简单,在一台带无线网卡的Mac笔记本上启用WiFi热点(?),然后让移动设备通过此热点访问网络;笔记本上启动wire

2016-07-12 10:55:20 2344

原创 Vert.x 3.3 server.js失败的尝试(怎么就没NodeJS好使呢?)

Server.js内容:// server.js load('vertx.js'); vertx.createHttpServer().requestHandler(function(req){ req.response.end("hello vertx!"); }).listen(8080, 'localhost'); 尝试运行:D:\vert

2016-07-05 13:37:47 1311

原创 亲爱的,人只能活一百年。有些人没活到,那是他们把它折算成福利捐献给了别人。

亲爱的,人只能活一百年。有些人没活到,那是他们把它折算成福利捐献给了别人。2016/7/2 0:56:59在你眼里,我就是一ds而已。我在忐忑不安,想给你打电话的时候。你正在床上被人骑。2016/7/2 0:58:31未曾相爱,但已经失忆。我想象不起,眼前的这个庸脂俗粉,怎么给过去的天真烂漫相比。2016/7/2 1:01:21代拟灵魂致辞:谢谢你,

2016-07-02 13:35:37 806

原创 微软的垃圾Windows 10,简直就是一坨屎!!!!!!!

http://answers.microsoft.com/zh-hans/windows/forum/windows_10-start/%E5%BC%80%E5%A7%8B%E7%95%8C%E9%9D%A2%E5%92%8C/198f7ce4-120c-474e-85b4-f9e9fb856756开始界面和消息栏无法打开鲲卓 提问时间 八月 13, 2015

2016-06-28 15:01:48 11171

原创 CSS Floating:Floats and Float Shapes-O'Reilly 2016(读书笔记)

CSS Floating:Floats and Float Shapesfloat: left|right|none;不能超出其containing block的范围;也不能超过其所在行前面的line box元素的top(嗯?)冲突:如果浮动元素的宽度高度超过其containing block的范围怎么办?默认允许bottom溢出(因为规范只

2016-06-25 22:27:10 935 1

原创 单调栈:平面上N个底部对齐紧靠在一起的矩形,宽高是任意整数,求其最大内切矩形的面积(版本2)

注意,RangeItem里有了width的状态定义,实际上不需要2次遍历,新代码如下:include #include #include struct Box { int width; int height;};struct RangeItem { int start_index=-1; int end_index=-1; int widt

2016-06-25 00:38:44 656

原创 单调栈:平面上N个底部对齐紧靠在一起的矩形,宽高是任意整数,求其最大内切矩形的面积

//// acm-icpc-mono-stack.cpp#include #include #include struct Box { //Or name to Rect; int width; int height;};struct RangeItem { int start_index=-1; int end_index=-1; in

2016-06-25 00:12:04 500

原创 HTML5页面渲染性能的”程序转换“思路

做浏览器内核引擎的,一般都会考虑怎么做性能优化,这个优化实际上包括下面的内容:(1)内存占用的优化,特别是对于嵌入式设备尤其重要,chromium有个blimp thin client的模块,不知道有没有用处;(2)渲染性能的提高,注意核心就是尽量利用硬件GPU来做渲染,避免CPU计算和内存Copy的开销(3)网络IO性能的提高,改善页面加载、响应数据,乃至云加速压缩流量、广告过滤屏蔽

2016-06-22 20:43:32 1311

原创 Chromium内核net模块disk cache/index file的文件存储机制

http://localhost:8080/source/xref/greentea-7.2/net/disk_cache/simple/simple_index_file.cc (M43版本)// static// staticvoid SimpleIndexFile::Deserialize(const char* data, int data_len,

2016-06-21 16:50:05 1317

原创 Chromium的当前net/disk_cache/simple file模块没有实现缓存的原子更新

问题:当服务器端初始响应浏览器的HTTP GET请求并设置Date头部字段,浏览器缓存了cache的第一个版本;其后下一次请求revalidate时,浏览器设置If-Modified-Since,并期望得到一个304。不幸的是,浏览器却返回了200,并重新发回完整的response body响应。这种情况下,Chromium的net/disk_cache/simple file模块将尝试更新cac

2016-06-20 12:58:29 1037

原创 关于XSS和CSRF

XSS(跨站)指的是CMS/SNS类网站没有对用户输入进行安全过滤,导致用户可以上传恶意的html代码,并引诱此网站的其他用户访问包含了恶意代码的页面,导致用户信息泄露,甚至可以扩展为蠕虫病毒。CSRF(跨域)指的是在攻击者控制的A网站上制作特定的URL链接,理论上来讲,受害者(用户)如果点击这个链接,会导致对目标B网站的访问,而用户可能当前浏览器Tab页面中B网站处于登录状态,这样就会导

2016-06-17 23:22:05 534

原创 浏览器多用户Profile容器化技术

Mozilla Firefox最近推出了浏览器的多用户容器化模式。简单说来,就是创建多个隔离的用户Profile,这样就可以允许多个用户登录使用。事实上,我比较鄙视Mozilla,浏览器核心技术毫无创新,Pdf.js让人惊喜了一下,但是Asm.js这种Type Hints的编译器优化技术一个High点都没有。不过这也说明Mozilla里面有一些产品和PR做得顺溜的人,比如那个Don

2016-06-17 23:05:30 999

原创 关于“微信订阅号/制作相册”

微信订阅号/制作相册:用户上传几张图片,然后选择参数,发布为一个带有动画特效的“相册”。纯粹就是一个功能单一的web服务吧,这里主要的问题在于图片数据托管存在哪里? 其实搞个“绿茶订阅号”也没什么打不了的,不过问题是,图片存储这个网络传输过程很不可靠。可以做成本地模式。但是复杂的“个性化编辑”功能就需要较大的开发量。 这里的一个问题是:用户不满意页面上的版权性文字(XXX制

2016-06-17 22:43:05 8720

原创 Another active Homebrew process is already using mysql问题的解决方法

brew install mysqll命令执行到一半,屏幕锁屏了,结果重现打开进去后,进度不动了,Ctrl + Z结束掉,然后:chenzhixiangdeMacBook-Pro:my-yesod-project chenzhixiang$ brew install mysqlError: Operation already in progress for mysqlAnother act

2016-06-17 15:33:21 3458

原创 下一个高性能Web框架应该选择哪一个????

Phonenix(基于Erlang/Elixir语言的):Erlang虚拟机的并发、可靠性做得不错,并且它有20年的工业应用历史。JVM还没这么长呢Python 3.5 + TornadoTornado的generator用来做异步IO编程挺不错的,但是当前4.3版本老是不更新,对HTTP/2的支持也不到位。NodeJS+Express/Koa?JavaScript

2016-06-17 13:42:18 2425

原创 HTTP/2在一个TCP连接里以frame封装的数据包方式多工传输。

HTTP/2在一个TCP连接里以frame封装的数据包方式多工传输。UDP本身支持数据包,但是UDP不保证到达顺序。在一个TCP stream上传输多个虚拟流的frame,解决了顺序问题、阻塞问题,同时还避免了连接反复建立的开销。同时,HTTP/2支持https(TLS)加密,保证端到端通信的安全。不足之处:(1)对于低性能低嵌入式设备,部署http2会不会代价太大?

2016-06-17 10:56:48 1900

原创 dumpheaders_http_threading_server.py脚本的Python 3.5迁移版

该脚本的主要用处是作为http服务器使用,并且可以输出请求/响应的http头部。import http.serverimport timeimport socketserverimport osimport threadingimport socketPORT = 8000class MyThreadingHTTPServer(socketserver.ThreadingTC

2016-06-06 18:11:27 629

原创 rMBP安装日志:brew install gcc

chenzhiangdeMBP:openresty-1.9.15.1 chenzhixiang$ brew install gcc==> Installing dependencies for gcc:gmp, mpfr, libmpc, isl==> Installing gcc dependency:gmp==> Downloading https://homebrew.b

2016-06-06 18:03:05 3240

原创 Python 3.5 HTTP服务器端重定向测试脚本

#!/usr/bin/python3import sysimport socketserverimport socketimport http.serverimport threadingimport io# Use supplied portif sys.argv[1:]: port = int(sys.argv[1])else: port = 8889

2016-06-04 15:58:59 2615

原创 从支持异步并发编程的Web后端框架到数据存储服务的分布式一致性哈希路由

异步并发框架应该可以解决web后端开发的IO性能问题,比如node、go?、tornado、openresty?,剩下的就是数据存储如何做切分和LB了,当然,可以考虑使用内存数据库,这样数据存储不需要管持久化关键的持久化仍然可以使用mysql,要么做主从分离,要么做jdbc前端转发,但是mysql的水平切分仍然是个技术活(对于业务逻辑复杂的情况)假如不考虑索引需求,所有

2016-06-01 21:42:02 1034

原创 论经济学、宗教及人类的社会生活

经济学不仅仅要保证效率也要保证公平。譬如过去利用民劳力贱而征过去开运河,到老了这群人必然得腰肌劳损、关节炎类风湿而死。现在则是虽然民工的工价高了,但这群人也没有什么社保,荒谬的是他们现在还要交钱。老了必然也没有什么好下场。何况价高卖苦力赚来的纸币最终也会随着货币滥发通货膨胀一文不值。说白了,经济学只是政府及其官-僚-系-统奴-役-劳动人民的工具。同样,就算劳动人民觉悟了,起来革

2016-05-29 16:06:33 594

原创 阅读王垠《怎样写一个解释器》一文后的一些体会

http://www.yinwang.org/blog-cn/2012/08/01/interpreter 怎样写一个解释器R2语言实现了表达式解释器,支持单变量let绑定、函数调用、函数作为参数传递(对于FP解释器而言这实际上不是问题),讲解了文法作用域与闭包的概念。缺点:直接利用了Racket语言的match语言,这有点偷懒,不过作者确实也说了不考虑parser的一些琐碎问题,

2016-05-27 12:30:39 2540

原创 React.js Essentials - Packt 2015(读书笔记)

React.js Essentials目录1安装开发环境2创建你的第一个React Element3React组件(状态机)4使React组件变成响应式的5React组件里使用其他库6更新React组件7创建复杂的React组件8Jest测试9Flux10Flux无痛项目维护安装开发环境Tw

2016-05-26 12:47:40 1161

原创 租房签合同之前的注意事项

租房签合同之前的注意事项0、确认房间内是否有异味1、确认房间面积2、确认是否南北通透(白天的通风)3、确认窗帘是否不透光(睡眠时的光线污染影响睡眠质量)4、确认床的大小(越大越好)5、谨记一条:签合同交钱之前,你是老大;签合同之后,房东是老大6、确认合同签几年,若要求必须签一年,可能哪里有问题  强势的房东可能是因为房源紧张,但也有可能表面房屋哪里存在问题,

2016-05-20 13:37:48 1629

原创 最近在上海浦东新区的租房经历

最近在上海浦东新区的租房经历缘起:我原来租住在张江镇的古桐五村,和一对房东老夫妻合住,租金从一开始的1600涨到1900(包水电)。一个月前房东老太突然说不租了,但是之前由于没有续签正式的合同,导致我很被动。3天前房东老汉却又说可以涨到2200续租。这2人表里不一,一个唱红脸一个唱黑脸的行为深深令我厌恶。再加上之前他们表现出的精明铿吝,我决心搬家。听公司的HR胖姐说川沙那边

2016-05-17 11:27:01 4864

原创 基于node-http-proxy的脚本:功能更新,现在支持把GFW屏蔽的URL作快速404失败返回处理;支持把墙外的CDN url映射为本地host

"use strict";//to support let-of syntax;var ProxyPort = 8888;var http = require('http'), net = require('net'), url = require('url'), httpProxy = require('http-proxy'); //需要安装Node 5.0,

2016-05-15 20:00:25 1575 1

原创 Pragmatic Scala:Create Expressive, Concise, and Scalable Applications (读书笔记)

Pragmatic Scala:Create Expressive, Concise, and Scalable Applications目录1From Java to Scala2Objects3Types4Function Values and Closures5Traits6Collections7模式匹配与正则

2016-05-11 18:55:01 1008

原创 阅读WebKit最近搞的一个存储开销小的、快速自适应的Locking机制

https://webkit.org/blog/6161/locking-in-webkit/主要受Linux内核futex设计的启发:https://www.kernel.org/doc/ols/2002/ols2002-pages-479-495.pdf Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux

2016-05-08 17:51:00 607

原创 Mozilla Rust最近发布的MIR的一个评论

原来Rust似乎是直接从AST翻译到LLVM IR,现在则拆分为HIR和MIR了。什么是MIR呢?仔细看了原始的blog文章和RFC,可以认为MIR其实就是对CFG的一种抽象,只有内存结构,没有线性化的序列化反序列化表示。这里要理解的一个核心概念是:AST只是高级层面的对原始语言的文法结构抽象,直接对应于前端parser的处理结果。而这个AST下降到MIR要做一系列的程序转换:这里

2016-05-08 16:19:35 1258

原创 基于DevTools协议+Chromium headless的客户端爬虫框架

之前的做法是使用PhantomJS以及一个html+嵌套iframe包含目标网站URL+跨域dom操作的简单性能优化。PhantomJS实现下面的核心需求:(1)无头模式,然而PhantomJS内核基于老版本的QtWebKit,与最新版本的Chromium代码相比,版本太老了,很多特性用不了(虽然目前国内网站应该也还没开始用上这些?比如ServiceWorker、CSS Custo

2016-05-08 16:08:04 6208

原创 经典的基于图着色模型的寄存器分配

经典的基于图着色模型的寄存器分配:1、如果变量(在指令/语句序列中,或称程序“基本块”?)不再被use(def也是use),则它dead2、否则变量live(活着)3、如果2个变量在一个block/program中都是live,则不能赋以相同的寄存器,在对应的RIG(register inference graph)中,在这2个变量节点之间连接一条边由上面的描述

2016-05-07 14:58:24 6245

转载 增加人口的好办法

增加人口的好办法:(1)允许一夫多妻制(2)每一个妻子只要有娃生,就直接分走富人财产的一部分,不需要等到遗产继承若富人不生娃,最终的结果就是财产充公。

2016-05-05 22:13:47 722

原创 从嵌套表达式谈抽象语法树(AST)到平台无关中间指令(IR)的翻译过程(线性化)

从嵌套表达式谈抽象语法树(AST)到平台无关中间指令(IR)的翻译过程(线性化)#一些想到的东西:## 要掌握编译器前端Parser的语法解析是怎么回事,不需要用完整的C语言系的字符串,只要考虑带括号的数学中缀表达式怎么处理就行了。## 这之间,关键的3点需要掌握:(1)怎么写一个算符优先、递归下降的BNF文法(2)怎么处理优先级和结合性的问题

2016-04-26 22:23:36 3453

原创 Android Security Internals, An In-Depth Guide to Android's Security Architecture 笔记

Android Security Internals, An In-Depth Guide to Android's Security Architecture目录1Android安全模型2权限3包管理机制4用户管理5加密服务6网络安全与PKI7凭据存储8在线账户管理9企业安全10设备安全11NFC和安

2016-04-05 14:25:56 1147

原创 Seven More Languages in Seven Weeks (读书笔记):Julia

JuliaDay 1julia> typeof(5)~0 位取反5 $ 6 //=> 3implicit = {:a => 1, :b => 2, :c => 3}explicit = [:a => 1, :b => 2, :c => 3] //静态类型限定?Float64[1, 2, 3] //有点Go语言语法的味道?切片:animals[2:end]多维数组:A = [1 2

2016-03-30 19:57:54 787

原创 Seven More Languages in Seven Weeks (读书笔记):Idris

IdrisDay 1基本上还是Haskell的语法?*functions> :t mapPrelude.Functor.map : Functor f => (a -> b) -> (f a) -> f bmap (\x => x * 0.5) (the (List Float) [3.14, 2.78])数据类型:idris/day1/data_types.idrda

2016-03-30 18:38:02 640

TCP/IP Sockets in Java, 2rd Edition

Contents Preface xi 1 Introduction 1 1.1 Networks, Packets, and Protocols 1 1.2 About Addresses 4 1.3 About Names 6 1.4 Clients and Servers 6 1.5 What Is a Socket? 7 1.6 Exercises 8 2 Basic Sockets 9 2.1 Socket Addresses 9 2.2 TCP Sockets 15 2.2.1 TCP Client 16 2.2.2 TCP Server 21 2.2.3 Input and Output Streams 25 2.3 UDP Sockets 26 2.3.1 DatagramPacket 27 2.3.2 UDP Client 29 2.3.3 UDP Server 34 2.3.4 Sending and Receiving with UDP Sockets 36 2.4 Exercises 38 3 Sending and Receiving Data 39 3.1 Encoding Information 40 3.1.1 Primitive Integers 40 3.1.2 Strings and Text 45 3.1.3 Bit-Diddling: Encoding Booleans 47 3.2 Composing I/O Streams 48 3.3 Framing and Parsing 49 3.4 Java-Specific Encodings 55 3.5 Constructing and Parsing Protocol Messages 55 3.5.1 Text-Based Representation 58 3.5.2 Binary Representation 61 3.5.3 Sending and Receiving 63 3.6 Wrapping Up 71 3.7 Exercises 71 4 Beyond the Basics 73 4.1 Multitasking 73 4.1.1 Java Threads 74 4.1.2 Server Protocol 76 4.1.3 Thread-per-Client 80 4.1.4 Thread Pool 82 4.1.5 System-Managed Dispatching: The Executor Interface 84 4.2 Blocking and Timeouts 86 4.2.1 accept(), read(), and receive() 87 4.2.2 Connecting and Writing 87 4.2.3 Limiting Per-Client Time 87 4.3 Multiple Recipients 89 4.3.1 Broadcast 90 4.3.2 Multicast 90 4.4 Controlling Default Behaviors 95 4.4.1 Keep-Alive 96 4.4.2 Send and Receive Buffer Size 96 4.4.3 Timeout 97 4.4.4 Address Reuse 97 4.4.5 Eliminating Buffering Delay 98 4.4.6 Urgent Data 98 4.4.7 Lingering after Close 99 4.4.8 Broadcast Permission 99 4.4.9 Traffic Class 100 4.4.10 Performance-Based Protocol Selection 100 4.5 Closing Connections 101 4.6 Applets 107 4.7 Wrapping Up 107 4.8 Exercises 108 5 NIO 109 5.1 Why Do We Need This? 109 5.2 Using Channels with Buffers 112 5.3 Selectors 115 5.4 Buffers in Detail 121 5.4.1 Buffer Indices 121 5.4.2 Buffer Creation 122 5.4.3 Storing and Retrieving Data 124 5.4.4 Preparing Buffers: clear(), flip(), and rewind() 126 5.4.5 Compacting Data in a Buffer 128 5.4.6 Buffer Perspectives: duplicate(), slice(), etc. 129 5.4.7 Character Coding 131 5.5 Stream (TCP) Channels in Detail 132 5.6 Selectors in Detail 135 5.6.1 Registering Interest in Channels 135 5.6.2 Selecting and Identifying Ready Channels 138 5.6.3 Channel Attachments 140 5.6.4 Selectors in a Nutshell 140 5.7 Datagram (UDP) Channels 141 5.8 Exercises 145 6 Under the Hood 147 6.1 Buffering and TCP 150 6.2 Deadlock Danger 152 6.3 Performance Implications 155 6.4 TCP Socket Life Cycle 155 6.4.1 Connecting 156 6.4.2 Closing a TCP Connection 160 6.5 Demultiplexing Demystified 163 6.6 Exercises 165 Bibliography 167 Index 169

2008-11-28

Advanced Data Structures

里面讲述了许多特殊的索引树结构,推荐! Preface page xi 1 Elementary Structures 1 1.1 Stack 1 1.2 Queue 8 1.3 Double-Ended Queue 16 1.4 Dynamical Allocation of Nodes 16 1.5 Shadow Copies of Array-Based Structures 18 2 Search Trees 23 2.1 Two Models of Search Trees 23 2.2 General Properties and Transformations 26 2.3 Height of a Search Tree 29 2.4 Basic Find, Insert, and Delete 31 2.5 Returning fromLeaf to Root 35 2.6 Dealing with Nonunique Keys 37 2.7 Queries for the Keys in an Interval 38 2.8 Building Optimal Search Trees 40 2.9 Converting Trees into Lists 47 2.10 Removing a Tree 48 3 Balanced Search Trees 50 3.1 Height-Balanced Trees 50 3.2 Weight-Balanced Trees 61 3.3 (a, b)- and B-Trees 72 3.4 Red-Black Trees and Trees of Almost Optimal Height 89 3.5 Top-Down Rebalancing for Red-Black Trees 101 3.6 Trees with Constant Update Time at a Known Location 111 3.7 Finger Trees and Level Linking 114 vii 3.8 Trees with Partial Rebuilding: Amortized Analysis 119 3.9 Splay Trees: Adaptive Data Structures 122 3.10 Skip Lists: Randomized Data Structures 135 3.11 Joining and Splitting Balanced Search Trees 143 4 Tree Structures for Sets of Intervals 148 4.1 Interval Trees 148 4.2 Segment Trees 154 4.3 Trees for the Union of Intervals 162 4.4 Trees for Sums of Weighted Intervals 169 4.5 Trees for Interval-Restricted Maximum Sum Queries 174 4.6 Orthogonal Range Trees 182 4.7 Higher-Dimensional Segment Trees 196 4.8 Other Systems of Building Blocks 199 4.9 Range-Counting and the Semigroup Model 202 4.10 kd-Trees and Related Structures 204 5 Heaps 209 5.1 Balanced Search Trees as Heaps 210 5.2 Array-Based Heaps 214 5.3 Heap-Ordered Trees and Half-Ordered Trees 221 5.4 Leftist Heaps 227 5.5 Skew Heaps 235 5.6 Binomial Heaps 239 5.7 Changing Keys in Heaps 248 5.8 Fibonacci Heaps 250 5.9 Heaps of Optimal Complexity 262 5.10 Double-Ended Heap Structures and Multidimensional Heaps 267 5.11 Heap-Related Structures with Constant-Time Updates 271 6 Union-Find and Related Structures 278 6.1 Union-Find: Merging Classes of a Partition 279 6.2 Union-Find with Copies and Dynamic Segment Trees 293 6.3 List Splitting 303 6.4 Problems on Root-Directed Trees 306 6.5 Maintaining a Linear Order 317 7 Data Structure Transformations 321 7.1 Making Structures Dynamic 321 7.2 Making Structures Persistent 330 8 Data Structures for Strings 335 8.1 Tries and Compressed Tries 336 8.2 Dictionaries Allowing Errors in Queries 356 8.3 Suffix Trees 360 8.4 Suffix Arrays 367 9 Hash Tables 374 9.1 Basic Hash Tables and Collision Resolution 374 9.2 Universal Families of Hash Functions 380 9.3 Perfect Hash Functions 391 9.4 Hash Trees 397 9.5 Extendible Hashing 398 9.6 Membership Testers and Bloom Filters 402 10 Appendix 406 10.1 The Pointer Machine and Alternative Computation Models 406 10.2 External Memory Models and Cache-Oblivious Algorithms 408 10.3 Naming of Data Structures 409 10.4 Solving Linear Recurrences 410 10.5 Very Slowly Growing Functions 412 11 References 415 Author Index 441 Subject Index 455

2008-11-28

空空如也

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

TA关注的人

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