打印两个有序链表的公共部分 发表于 2020-06-13 分类于 算法日常练习 题目给定两个有序链表的头指针head1和head2, 打印两个链表的公共部分.链表使用如下结构: 1234567public class Node { public int value; public Node next; public Node(int data) { this.value = data; }} 思路 head1 < head2, head1后移 head1 > head2, head2后移 head1 = head2, 打印value, head1和head2同时后移 阅读全文 »
汉诺塔问题 发表于 2020-06-12 分类于 算法日常练习 题目在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制:(1) 每次只能移动一个盘子;(2) 盘子只能从柱子顶端滑出移到下一根柱子;(3) 盘子只能叠在比它大的盘子上。 请编写程序,用栈将所有盘子从第一根柱子移到最后一根柱子。 阅读全文 »
用一个栈实现另一个栈的排序 发表于 2020-06-11 分类于 算法日常练习 题目一个栈中的元素类型为整型, 现在想将栈从顶到底按从大到小的顺序排序, 只需申请一个栈.除此之外, 可以申请新的变量,但不能申请额外的数据结构, 如何完成排序? 思路 利用两个栈+临时变量, 通过比较, 使得辅助栈中元素有序申请一个辅助栈, 将原始栈的元素挨个取出, 通过比较最终使得辅助栈内的元素顶->底, 小->大排序. 阅读全文 »
猫狗队列 发表于 2020-06-10 分类于 算法日常练习 题目宠物、狗和猫的类如下: 1234567891011121314151617181920212223public class Pet { private String type; public Pet(String type) { this.type = type; } public String getPetType() { return this.type; } } public class Dog extends Pet { public Dog() { super("dog"); } } public class Cat extends Pet { public Cat() { super("cat"); } } 实现一种猫狗队列的结构, 要求如下: 阅读全文 »
由两个栈组成的队列 发表于 2020-06-08 分类于 算法日常练习 题目编写一个类, 用两个栈实现队列, 支持队列的基本操作(add, poll, peek). 思路栈是FILO, 队列是FIFO. 一个栈stackPush按用户操作顺序存储, 提供入队操作. 另一个栈stackPop按照相反顺序存储, 提供出队操作. 阅读全文 »
设计一个有getMin功能的栈 发表于 2020-06-07 分类于 算法日常练习 题目实现一个特殊的栈, 在实现栈的基本功能的基础上, 再实现返回栈中最小元素的操作. 要求 pop, push, getMin操作的时间复杂度都是O(1) 设计的栈类型可以使用现有的栈结构 思路先考虑下getMin的特殊情况 应该有一个数据结构能存储,并在入栈和出栈时都要维护当前最小值 可以用另一个栈来存储当前的最小值. 阅读全文 »
数据收集(1)-Flume 发表于 2020-05-08 分类于 读书笔记 一. 背景日志收集面临诸多难题: 数据源种类繁多: 各服务产生日志格式不同,产生的方式也不同(本地文件,HTTP远程发送等) 数据源是物理分布的: 日志是在分布式机器上,甚至跨机房 流式的、不间断产生: 有些日志需要实时或近实时收集到,以供后端分析挖掘 对可靠性有一定要求 阅读全文 »
HDFS原理 发表于 2020-05-04 分类于 读书笔记 Block的副本放置策略 第一个副本: 放置在上传文件的DataNode; 如果是集群外提交, 随机挑选一台 磁盘不太满, CPU不太忙的节点 第二个副本: 放置在跟第一个副本不同机架的节点上(容灾备份) 第三个副本: 尽量跟第二个副本相同机架(节约网络资源) 更多副本: 随机节点 阅读全文 »
Designing Data-Intensive Applications 7 - 事务 发表于 2020-05-03 分类于 读书笔记 深入理解事务ACID的含义原子性(Atomicity)在出错时中止事务, 并将部分完成的写入全部丢弃可中止性。简化了排错过程,事务如果中止, 应用可以安全地重试一致性(Consistency)对数据有特定的预期状态, 任何数据更改必须满足这些状态约束(或者恒等条件)本质上要求应用层来维护一致应用程序可能借助数据库提供的原子性和隔离性, 以达到一致性, 但一致性本身并不源于数据库 阅读全文 »