摘要:代理是一种常用的设计模式,其解决的问题是当两个类需要通信时,引入第三方代理类,将两个类的关系解耦,让客户端只了解代理类即可,从而控制对委托类对象的直接访问,隐藏和保护委托类对象。为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。 静态:由程序员创建代理类或
阅读全文
摘要:final 1. final修饰类: final修饰类即表示此类已经是“最后的、最终的”含义。因此,用final修饰的类不能被继承,即不能拥有自己的子类。 如果试图对一个已经用final修饰的类进行继承,在编译期间或发生错误。 2. final修饰方法: final修饰的方法表示此方法已经是“最后的
阅读全文
摘要:mqtt 以订阅的主题为key,订阅者为value,使用Trie前缀树存储(按key遍历,当找到一个key,它所在的节点会存储所有订阅者) Raft 是一个一致性算法,保证每个状态机的状态一致,常用于服务器集群 原理:每个状态机安装相同的序列执行相同的指令 实现:每个节点三个状态:follower,
阅读全文
摘要:Android相关知识: AIDL Runnable与Thread区别 HashMap线程安全问题 类的加载顺序、类中变量实例化顺序 HTTP get和post请求的区别 Serializable与parcelable的区别 EventBus是否会发生内存泄漏 宕机问题怎么查看 怎么做到注入jsBr
阅读全文
摘要:城市的天际线是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。现在,假设您获得了城市风光照片(图A)上显示的所有建筑物的位置和高度,请编写一个程序以输出由这些建筑物形成的天际线(图B)。 每个建筑物的几何信息用三元组 [Li,Ri,Hi] 表示,其中 Li 和 Ri 分别是第 i 座建筑物左右边缘
阅读全文
摘要:给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2: 输入: nums = [1], k = 1输出: [1] 提示: 你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元
阅读全文
摘要:给定一个二维网格 board 和一个字典中的单词列表 words,找出所有同时在二维网格和字典中出现的单词。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。 示例: 输入: words = [
阅读全文
摘要:KMP是一种在一个字符串中定义另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法的时间复杂度为O(m+n)。 一个极端的例子是:在S="AAAAAA...AAB"(100个A)中查找T="AAAAAAAAAB",简单匹配算法每次都是匹配到T的结尾,发现字符不同,然后T的下标回
阅读全文
摘要:现在你总共有 n 门课需要选,记为 0 到 n-1。 在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。 可能会有多个正确的顺序,你只要返回一种就可以
阅读全文
摘要:实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。 示例: Trie trie = new Trie(); trie.insert("apple");trie.search("apple"); // 返回 truetrie.search("a
阅读全文