[译]数据结构_链表

LL,Stack,Queue,DLL,Deque

链表(Linked List)是一种数据结构,它由一组节点组成,它们作为一个整体表示一个序列。最简单的情形下,每一个节点由一个值data和指向下序列中一节点的引用link组成。

在链表中查找数77
search_77

链表及其变体是用来实现列表(List)、栈(Stack)、Queue(队列)、Deque ADTs1(双端队列)的底层数据结构。
Linked List and its variations are used as underlying data structure to implement List, Stack, Queue, and Deque ADTs

下面我们会讨论链表(只包含一个next指针)和它的两个变体:Stack和Queue,还会讨论Doubly Linked List(DLL)(双向链表)(包含next指针和previous指针),及其变体:Deque。

动机

链表这个数据结构通常会在大学本科阶段学习,有以下几个原因:

  1. 它是一个简单的线性数据结构。
  2. 作为一个抽象数据类型的列表,它有一系列的应用,例如学生列表,事件列表,任职列表等等(尽管有其他更多高级数据结构能做到同样(甚至更好))或者作为栈/队列/双端队列的抽象数据类型。
  3. 它有一些有趣的边界用例,指出了数据结构的良好实现的必要。
  4. 它包含多种自定义的选项,因此特别适合使用OOP Programming面向对象编程来实现。

[译]log15_Readme[译]

log15包提供了一种固执且简洁的最佳实践工具包(both human and machine readable)。它是仿造标准库ionet/http构建的。

这个包强制仅记录key/value对。键必须是字符串。值可以是任何类型。默认的输出格式是logfmt,也可以选择使用JSON格式。例如:
log.Info("page accessed", "path", r.URL。Path, "user_id", user.id)
输出一行记录如下:
lvl=info t=2014-05-02T16:07:23-0700 msg="page accessed" path=/org/71/profile user_id=9

MySQL锁

Myisam表锁

锁模式

  1. 共享锁(S锁,亦读锁):如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排它锁。获取共享锁的事务只能读数据,不能写数据。
  2. 排它锁(X锁,亦写锁):如果事务T对数据A加上排它锁后,则其他事务不能再对A加任务类型的锁。获取排它锁的事务既能读数据,也能写数据。

第一行为请求锁模式, 第一列为当前锁模式

None 读锁 写锁
读锁
写锁
  1. 当前锁为读锁,请求锁为读锁,正常读取。(图1)
  2. 当前锁为读锁,请求锁为写锁,阻塞。(图2)
  3. 当前锁为写锁,请求锁为读锁,阻塞。(图3)
  4. 当前锁为写锁,请求锁为写锁,阻塞。(图4)