算法十分钟LeetCode1884双蛋问题 题解思路思路一:数学公式推导二分法是找不到的,因为只有两个鸡蛋,两次都碎了就没得用了 一种可行的做法就是用一个鸡蛋从1层开始逐层实验,但显然不是最少的步骤 根据第二个例子,采用一种很妙的阶段性枚举的方法即用第一个鸡蛋测试可能的上限,第二个鸡蛋再逐层找到。 这个例子存在的问题是它正向列出了第一个鸡蛋从9层开始实验,但不告诉你为什么从9层开始。 继续顺着这个思路思考,我们目前想做的事情是用第一个鸡蛋 2024-11-10 算法 #算法
Akka-模式 缓存消息 stashing message缓存消息提供将消息暂时缓存,当正确的时机到来时,重新将消息放入邮箱并进行处理 如下例子,通过继承stash trait来实现相关功能。 当收到某条消息,但当前无法处理,直接调用stash方法,将消息进行缓存 当要处理缓存的消息时,直接调用unstash方法,所有消息再次进入mailbox 1234567891011121314151617181920212 2024-07-21 开源项目 > Akka #Akka
Akka-基础设施 定时器和执行计划 scheduler and timer定时器和执行计划提供定期,定时执行代码逻辑的功能 执行计划scheduler用于指定执行时间和执行逻辑,代码如下: 通过system.scheduler.scheduleOnce(1 second)来指定内部逻辑在指定时间后执行。 通过system.scheduler.schedule(1 second, 2 seconds)来指定经过1s延 2024-07-19 开源项目 > Akka #Akka
Akka基础-异常处理和容忍 actor的开启、停止和观测通过context.actorof的方式来创建和启动一个actor, 停止actor有两种方法: 通过context.stop的方法来停止一个actor 通发送特定的毒药信息,所有接受到这条消息的actor都会停止(不推荐) 123456789101112131415161718class Parent extends Actor with ActorLogging & 2024-07-15 开源项目 > Akka #Akka
Akka基础-测试方法 基本写法基本写法如下,继承三个trait,重写afterAll方法。每个should结构用于测试一个actor。其中包含多个in结构,每个测试该actor的一种行为。通过expectMsgAllOf()方法来指定预期的返回值。 123456789101112131415161718192021222324252627282930313233343536373839class BasicSpec 2024-07-06 开源项目 > Akka #Akka
Akka基础-actors Actor model是一种处理并发问题的概念模型,定义了系统组件的行为和交互规则。 在传统的并发编程中,处理对象时: 将其状态存储为数据 调用其方法进行各种操作在actor model中: 将所有对象视为actor 将其状态进行存储 通过异步发送消息来进行交互,不直接调用方法actor model的核心是单线程和异步,通过消息的形式,将所有交互都变成了异步单线程。解决了线程冲突问题,同 2024-07-03 开源项目 > Akka #Akka
栈 基本概念栈是一种很常用,很基础的数据结构。用于存储元素,支持元素的加入和取出。最大的特点就是元素的写入和写入顺序为先进后出。举一个现实的例子,想象一叠垒起来的盘子,先放入的盘子在下面,后放入的在上面。当你要拿取盘子的时候,想拿下面的盘子要先把上面的盘子移开。 栈应用非常广泛,函数调用靠栈来维护调用顺序,对于匹配的验证,对于元素和其左右元素大小关系的寻找等场景都会用到栈。 基础实现java中两种方式 2024-05-07 算法 #算法
多线程的应用-交替打印 对于Java多线程的考察,一个经典的问题就是让两个线程交替打印输出。我们通过这个例子来回顾一下Java多线程中的相关概念。 代码实现12345678910111213141516171819202122232425262728293031323334public class MultiThread { public static void main(String[] args) & 2024-04-27 编程语言 > Java #Java #MultiThread
Spark基础-生产与应用 Spark运行过程程序架构 driver:负责控制整个spark应用程序的执行并维护集群状态。与集群管理器交互以获得物理资源并启动executor executor:执行由driver分配的任务,上报结果 集群管理器:负责维护一组运行spark程序的机器。spark目前支持三种集群管理器: 内置独立管理器 Mesos Hadoop YARN 集群管理器由一个driver节点和若干工作节点构成 2024-04-25 读书笔记 > Spark #Spark
Spark基础-低级非结构化API 低级API有两种低级API 处理分布式数据(RDD) 用于分发和处理分布式共享变量(广播变量和累加器) 使用时机 当高级API不满足需求时,比如对集群中数据的物理存储进行非常严格的操作 需要维护遗留的旧版本代码时 需要执行一些自定义共享变量操作时 RDD(弹性分布式数据集) RDD是一个只读不可变的且已经分块的记录合集,可以被并行处理。RDD中记录的仅仅是对应的Java,scala或py 2024-04-25 读书笔记 > Spark #Spark