RabbIT

AGC006C Rabbit Exercise

二次信任 提交于 2020-10-21 17:29:23
题目链接 problem 有 \(n\) 个兔子站成一排,每只兔子有自己的位置,有 \(m\) 次操作,第 \(i\) 次操作将 \(a_i\) 以相等的概率挪到关于 \(a_{i-1}\) 对称的位置或挪到与 \(a_{i+1}\) 对称的位置。 将这m次操作进行K轮。 问最终每只兔子位置坐标的期望。 solution 对于第 \(a_i\) 个兔子,设 \(a_i-a_{i-1}=x,a_{i+1}-a_i=y\) 。那么如果选择关于 \(a_{i-1}\) 对称,所到达的位置就是 \(l=a_{i-1}-x\) 。同样的,如果选择关于 \(a_{i+1}\) 对称,到达的位置就是 \(r=a_{i+1}+y\) ,根据期望的线性性,第 \(i\) 只兔子所在坐标的期望就是 \(t=\frac{l+r}{2}\) 。显然 \(t-l=r-t=x+y\) 。又因为 \(a_{i-1}-l=x,r-a_{i+1}=y\) 。所以就有 \(t-a_{i-1}=y,a_{i+1}-t=x\) 。 设 \(d_i=a_i-a_{i-1}\) ,对于第 \(i\) 个兔子进行一次操作,就相当于交换了 \(d_i\) 与 \(d_{i+1}\) 。 那么做法就很简单了,先根据 \(m\) 操作求出一个置换,然后利用快速幂计算置换 \(K\) 次后的答案。 复杂度 \(O(nlogK)\)

消息队列01-Rabbitmq安装和管理界面简介

ぃ、小莉子 提交于 2020-10-21 17:23:33
消息队列教程目录链接 https://my.oschina.net/u/4039389?tab=newest&catalogId=7011524 docker 安装Rabbitmq docker pull rabbitmq:3-management docker run -d --hostname my-rabbit --name rabbit15672 -v /home/rabbitmq/15672:/var/lib/rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:3-management 进入管理界面 http://127.0.0.1:15672 username:admin password:admin Overview Name:broker名称 File descriptors:broker打开的文件描述符和限制。 Socket descriptors:broker管理的网络套接字数量和限制。当限制被耗尽时,RabbitMQ将停止接受新的网络连接。 Erlang processes:erlang启动的进程数。 Memory:当前broker占用的内存。 Disk space:当前broker占用的硬盘。

rabbitmq群集

為{幸葍}努か 提交于 2020-10-11 07:32:37
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。 实验环境 centos6.5_x64 192.168.10.16 mq1_master 192.168.10.14 mq2_slave 4369 erlang发现 5672 client端通信口 25672 server间内部通信口 15672 管理界面ui端口 实验软件 rabbitmq-server-3.7.14-1.el6.noarch.rpm 软件安装 sed -i.bak 's/https/http/g' /etc/yum.repos.d/epel.repo cp -pv /etc/hosts /etc/hosts.bak cat /etc/hosts 192.168.10.16 mq1 192.168.10.14 mq2 cp -pv /etc/sysconfig/network /etc/sysconfig/network.bak cat /etc/sysconfig/network HOSTNAME=mq1 reboot/init5 重启生效修改主机名 scp /etc/hosts root@192.168.10.14:/etc

RabbitMq的简单使用

不问归期 提交于 2020-09-30 03:44:07
1.pom文件中加入依赖 < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-amqp </ artifactId > < version > 2.3.3.RELEASE </ version > </ dependency > 2.配置文件,配置mq 自动配置信息 这里我开启 ACK 消息确认 server.port=8088 # 服务器配置 spring.application.name=rabbitmq-test-sending #rabbitmq 连接参数 spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest # 开启发送确认 spring.rabbitmq.publisher-confirms=true # 开启发送失败退回 spring.rabbitmq.publisher-returns=true # 开启 ACK spring.rabbitmq.listener.direct.acknowledge-mode=manual 3

深入学习性能优化--面试使用

非 Y 不嫁゛ 提交于 2020-09-29 07:18:25
转载地址 1、 你对 APP 的启动有过研究吗? 有做过相关的启动优化吗? 程序员: 之前做热修复的时候研究过 Application 的启动原理。项目中也做过一些启动优化。 面试官: 哦,你之前研究过热修复? (这个时候有可能就会深入的问问热修复的原理,这里咱们就不讨论热修复原理) 那你说说对启动方面都做了哪些优化? 程序员: 1 .我发现程序在冷启动的时候,会有 1s 左右的白屏闪现,低版本是黑屏的现象,在这期间我通过翻阅系统主题源码,发现了系统 AppTheme 设置了一个 windowBackground ,由此推断就是这个属性捣的鬼,开始我是通过设置 windowIsTranslucent 透明属性,发现虽然没有了白屏,但是中间还是有一小段不可见,这个用户体验还是不好的。最后我观察了市面上大部分的 Android 软件在冷启动的时候都会有一个 Splash 的广告页,同时在增加一个倒数的计时器,最后才进入到登录页面或者主页面。我最后也是这样做的,原因是这样做的好处可以让用户先基于广告对本 APP 有一个基本认识,而且在倒数的时候也预留给咱们一些对插件和一些必须或者耗时的初始化做一些准备。 Ps:这里会让面试官感觉你是一个注重用户体验的 2 .通过翻阅 Application 启动的源码,当我们点击桌面图标进入我们软件应用的时候,会由 AMS 通过 Socket 给

rabbitmq_cluster

烂漫一生 提交于 2020-09-28 16:56:11
RabbitMQ是什么? MQ(Message Queue,消息队列)消息中间件,一般以集群方式部署,主要提供消息的接受和发送,实现各微服务之间的消息同步。 原理介绍 rabbitmq是依据erlang的分布式特性(RabbitMQ底层是通过Erlang架构来实现的,所以rabbitmqctl会启动Erlang节点,并基于Erlang节点来使用Erlang系统连接RabbitMQ节点,在连接过程中需要正确的Erlang Cookie和节点名称,Erlang节点通过交换Erlang Cookie以获得认证)来实现的,所以部署rabbitmq分布式集群时要先安装erlang,并把其中一个服务的cookie复制到另外的节点 rabbitmq集群中,各个rabbitmq为对等节点,即每个节点均提供给客户端连接,进行消息的接收和发送。节点分为内存节点和磁盘节点,一般的,均应建立为磁盘节点,为了防止机器重启后的消息消失; RabbitMQ的Cluster集群模式一般分为两种,普通模式和镜像模式。消息队列通过rabbitmq HA镜像队列进行消息队列实体复制 1.普通模式下,以两个节点(rabbit01、rabbit02)为例来进行说明。对于Queue来说,消息实体只存在于其中一个节点rabbit01(或者rabbit02),rabbit01和rabbit02两个节点仅有相同的元数据

解决RabbitMQ http://localhost:15672 访问不了问题

痴心易碎 提交于 2020-09-24 07:27:13
解决rabbitmqctl status 报错RabbitMQ http://localhost:15672 访问不了问题 查看 C:\ProgramData\RabbitMQ\log 下的报错日志文件 erl_crash.dump =erl_crash_dump:0.5 Wed Aug 26 19:18:10 2020 Slogan: init terminating in do_boot ({error,{cannot_delete_plugins_expand_dir,[c:/ProgramData/RabbitMQ/db/rabbit@localhost-plugins-expand, {cannot_delete,[_],eio}]}}) System version: Erlang/OTP 23 [erts-11.0] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:64] Compiled: Tue May 12 22:02:00 2020 Taints: asn1rt_nif,crypto Atoms: 43061 Calling Thread: scheduler:2 =scheduler:1 Scheduler Sleep Info Flags: SLEEPING | TSE_SLEEPING | WAITING

RabbitMQ 延迟队列-基于PHP实现

妖精的绣舞 提交于 2020-08-17 14:05:53
安装 RabbitMQ 延迟队列插件 RabbitMQ 延迟队列插件未安装直接使用的话,会报错: unknown exchange type 'x-delayed-message' 插件下载地址:https://www.rabbitmq.com/community-plugins.html 。下载 Erlang 可执行文件之后,复制到rabbit服务的插件目录(自己的安装目录,我的是 C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.14\plugins )中,然后开启插件服务: rabbitmq-plugins enable rabbitmq_delayed_message_exchange 测试步骤 创建测试项目的目录 mq 从 https://github.com/php-amqplib/php-amqplib 下载AMQP库(当然也可以通过 composer 安装,这里为了简单直接自己处理了),放入 mq 目录 编写 index.php,实现自动加载 创建 test 目录,里面分别创建 mqc.php 消费者和 mqp.php 生产者两个文件 跑脚本,测试消息的生产和消费: php -f index.php delayP p 3 生产消息,延时3秒 php -f index.php delayC c 消费消息 目录结构

配置动态刷新RefreshScope注解使用局限性(一)

家住魔仙堡 提交于 2020-08-16 17:49:06
在 Spring Cloud 体系的项目中,配置中心主要用于提供分布式的配置管理,其中有一个重要的注解:@RefreshScope,如果代码中需要动态刷新配置,在需要的类上加上该注解就行。本文分享一下笔者遇到与 @ConditionalOnSingleCandidate 注解冲突的问题 问题背景 项目再引入 RabbitMQ,在自定义 connectionFactory 时,手滑加上了 @RefreshScope @Bean @RefreshScope public CachingConnectionFactory connectionFactory() { CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); connectionFactory.setAddresses("172.17.0.111"); connectionFactory.setUsername("guest"); connectionFactory.setPassword("guest"); connectionFactory.setVirtualHost("/"); return connectionFactory; } 系统报错无法注入 RabbitTemplate org.springframework

简单的实现java多线程——龟兔赛跑

为君一笑 提交于 2020-08-16 14:44:13
题目: 实现龟兔赛跑 提示:可以采用Math.random()取得0~1之间的随机数模拟比赛进程, 如总距离为100米,在随机数0 0.3之间代表兔子跑,每次跑2米,在0.3 1之间代表乌龟跑,每次跑1 米,先跑完100米者为胜利者 结构: Race类:产生RabbitAndTurtle的两个实例,分别代表兔子和乌龟 RabbitAndTurtle类:继承Thread类,实现赛跑的逻辑 代码实现: Rabbit类 package ch08; public class Rabbit extends Thread { private int RabbitDistance; @Override public void run() { RabbitDistance = 0; while (RabbitDistance < 100) { double i = Math.random(); if (i > 0.3 && i < 1.0) { RabbitDistance++; System.out.println(getName()+"已经跑了" + RabbitDistance); } } System.out.println("-----------Rabbit获胜-----------"); } } Turtle类 package ch08; public class Turtle