Producer-Consumer 模式 Posted on 2018-09-06 | In java多线程设计模式 Words count in article: 1.3k | Reading time ≈ 5 Producer-Consumer 模式Producer是“生产者”的意思,指的是生成数据的线程。Consumer则是“消费者”的意思,指的是使用数据的线程。 生产者安全地将数据交给消费者。虽然仅是这样看似简单的操作,但当生产者和消费者以不同的线程运行时,两者之间的处理速度差异便会引起问题。例如,消 ... Read more »
Read-Write Lock 模式 Posted on 2018-09-06 | In java多线程设计模式 Words count in article: 1.4k | Reading time ≈ 6 Read-Write Lock 模式当线程“读取”实例的状态时,示例的状态不会发生变化。示例的状态尽在线程执行“写入”操作时才会发生变化。从实例的状态变化这个观点来看,“读取”和“写入”有着本质的区别。 在Read-Write Lock模式中,读取操作和写入操作是分开考虑的,在执行读取操作之前,线程 ... Read more »
Balking 模式 Posted on 2018-09-05 | In java多线程设计模式 Words count in article: 553 | Reading time ≈ 2 Balking 模式所谓Balk,就是“停止并返回”的意思,如果现在不适合执行这个操作,或者没有必要执行这个操作,就停止处理,直接返回。 示例程序我们来看一个使用了Balking模式的简单示例程序。这个程序会定期将当前数据内容写入文件中。当数据内容被写入时,会完全覆盖上次写入的内容,只有最新的内容才 ... Read more »
319. 灯泡开关 Posted on 2018-09-05 | In leetcode Words count in article: 219 | Reading time ≈ 1 题目初始时有 n 个灯泡关闭。 第 1 轮,你打开所有的灯泡。 第 2 轮,每两个灯泡你关闭一次。 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。第 i 轮,每 i 个灯泡切换一次开关。 对于第 n 轮,你只切换最后一个灯泡的开关。 找出 n 轮后有多少个亮着的灯泡。 示例1 ... Read more »
535. TinyURL 的加密与解密 Posted on 2018-09-05 | In leetcode Words count in article: 189 | Reading time ≈ 1 题目TinyURL是一种URL简化服务, 比如:当你输入一个URL https://leetcode.com/problems/design-tinyurl 时,它将返回一个简化的URL http://tinyurl.com/4e9iAk. 要求:设计一个 TinyURL 的加密 encode 和解 ... Read more »
672. 灯泡开关 Ⅱ Posted on 2018-09-05 | In leetcode Words count in article: 297 | Reading time ≈ 1 题目现有一个房间,墙上挂有 n 只已经打开的灯泡和 4 个按钮。在进行了 m 次未知操作后,你需要返回这 n 只灯泡可能有多少种不同的状态。 假设这 n 只灯泡被编号为 [1, 2, 3 …, n],这 4 个按钮的功能如下: 将所有灯泡的状态反转(即开变为关,关变为开) 将编号为偶数的灯泡的状态 ... Read more »
118. 杨辉三角 Posted on 2018-09-05 | In leetcode Words count in article: 221 | Reading time ≈ 1 题目给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 在杨辉三角中,每个数是它左上方和右上方的数的和。 示例1:123456789输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]] 示例2:12输 ... Read more »
232. 用栈实现队列 Posted on 2018-09-05 | In leetcode Words count in article: 536 | Reading time ≈ 2 题目请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 int peek() 返回队列开头的元素 ... Read more »
521. 最长特殊序列 Ⅰ Posted on 2018-09-05 | In leetcode Words count in article: 514 | Reading time ≈ 2 题目给你两个字符串 a 和 b,请返回 这两个字符串中 最长的特殊序列 的长度。如果不存在,则返回 -1 。 「最长特殊序列」 定义如下:该序列为 某字符串独有的最长子序列(即不能是其他字符串的子序列) 。 字符串 s 的子序列是在从 s 中删除任意数量的字符后可以获得的字符串。 例如," ... Read more »
551. 学生出勤纪录 I Posted on 2018-09-05 | In leetcode Words count in article: 253 | Reading time ≈ 1 题目给定一个字符串来代表一个学生的出勤纪录,这个纪录仅包含以下三个字符: ‘A‘ : Absent,缺勤 ‘L‘ : Late,迟到 ‘P‘ : Present,到场 如果一个学生的出勤纪录中不超过一个’A’(缺勤)并且不超过两个连续的’L’(迟到),那么这个学生会被奖赏。 你需要根据这个学生的 ... Read more »