摘要: RabbitMQ 是一个基于 AMQP(Advanced Message Queuing Protocol)的消息队列系统,支持高并发、可扩展,并提供多种客户端和协议支持。其核心概念包括生产者、消费者,交换器、队列和绑定。消息通过交换器路由到队列,保证了消息传输和处理的可靠性。RabbitMQ的工作模式包括简单模式、工作模式、发布订阅模式、路由模式和主题模式。消息传输使用信道来传输数据,并通过事务机制和Confirm机制保证消息的可靠性。高可用性方面,RabbitMQ提供普通集群模式和镜像集群模式。为解决延时和过期失效问题,可以设置消息的TTL和采用批量重导的方式补充丢失的数据。
RabbitMQ 是一个在 AMQP(Advanced Message Queuing Protocol )基础上实现的,可复用的企业消息系统。它可以用于大型软件系统各个模块之间的高效通信,支持高并发,支持可扩展。它支持多种客户端如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP 等,支持 AJAX,持久化,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 RabbitMQ 是使用 Erlang 编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的...
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生 SQL 查询,将接口和 Java 的实体类映射成数据库中的记录。 优点分析 灵活:MyBatis 不会对应用程序或数据库的现有设计强加任何限制。它使用简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO 为数据库中的记录。 易于学习:MyBatis 相对于其他 ORM 框架来说,学习曲线较低,因为它不需要开发人员学...
计算机网络基础 网络分层模型 OSI七层 OSI七层协议 [常见网络协议](https://j...
线程 线程和进程 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。 在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。 线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不...
摘要: IEEE 754单精度浮点数标准规定了float在Java中占用32位,包括1位符号位、8位指数和23位尾数。由于二进制浮点数表示的限制,很多十进制小数在二进制中是无限循环小数,导致浮点数只能存储近似值。具体计算中,2.0f和1.9f的近似表示分别导致2.0f-1.9f结果为0.100000024,1.8f和1.7f的近似表示导致1.8f-1.7f结果为0.099999905。这是因为1.9f和1.8f在二进制中无法精确表示,而1.7f和2.0f是精确的浮点数。
float a = 2.0f - 1.9f; float b = 1.8f - 1.7f; System.out.println(a);// 0.100000024 System.out.println(b);// 0.099999905 System.out.println(a == b);// false 1. IEEE 754 单精度浮点数标准 单精度浮点数 (float) 在 Java 中占用 32 位,分为三个部分: 1 位符号位**:表示正数或负数。 8 位指数**:表示二进制科学记数法中的指数部分。 23 位尾...
关于双指针的快慢指针和左右指针的用法,可以参见前文 双指针技巧汇总,本文就解决一类最难掌握的双指针技巧:滑动窗口技巧。并总结出一套框架,可以保你闭着眼睛都能写出正确的解法。 滑动窗口框架概览 滑动窗口算法技巧主要用来解决子数组问题,比如让你寻找符合某个条件的最长/最短子数组。 如果用暴力解的话,你需要嵌套 for 循环这样穷举所有子数组,时间复杂度是 O(N2)O(N^2): ...
传染病防控 问题描述 R市正在进行传染病防控,R 市总共有 $n$ 个人。具体的,每个人有一个位置 $(x, y)$,现在已知有一个高风险人员,但未指明具体是谁。同时我们定义一个安全距离$k$,如果某个人和这个高风险人员的距离不超过$k$,那么这个人也将被列为高风险人员。为了减少防控对市民生活的影响,工作人员希望知道所有可能情况下最多的高风险人员数量。 两个人 $(x_1, y_1)$ 和 $(x_2, y_2)$ 的距离定义为:$|x_1 - x_2| + |y_1 - y_2|$ 输入描述 第一行:两个整数 n, k。表示有 n 个人以及距离阈值 k。 ...
题 1 题目描述 整数 1 ~ n,计算选择 k 个数能够获得多少积分。 计分规则:初始积分为 0,对于被选取的整数 i,如果 i + 1 没选取,则积分加 1。 输入描述 每个测试文件中包含多组测试数据。 第一行输入一个整数 T (1 ≤ T ≤ 10^5) 代表数据组数。 每组测试数据描述如下: 在一行上输入两个整数 n, k (1 ≤ n, k ≤ 10^12; k < n),含义和题面描述一致。 输出描述 对于每一组测试数据,在一行上输出一个整数,代表最多能够获得的积分。 示例 输入 2 1...
1 哈希 1. 两数之和 class Solution { public int[] twoSum(int[] nums, int target) { Map hashMap = new HashMap(); for (int i = 0; i < nums.length; i++) { if (hashMap.containsKey(target - nums[i])) { return new int[] { hashMap....
题 1 import java.util.Scanner; public class Fibonacci { // 方法:计算斐波那契数列的第n项 public static int fibonacci(int n) { if (n == 0) { return 0; } else if (n == 1) { return 1; } // 从2开始,利用两个变量存储前两项 int a = 0, b = 1,...