HashMap初始容量剖析 问题: 确定只装载10个元素, HashMap初始容量多少是最佳?答案: 16目的: 防止HashMap频繁扩容,影响性能解析:HashMap的底层数据结构是由 数组 和 单向链表 组成 扩容概念: 当所用数组的长度 大于 初始长度 * 0.75(负载因子)时,数组扩容 Map<String, String> map = new HashMap<String, String>(); 等同于 Map<String, String> map = ne
谈笑间学会模板方法模式 1 背景某天早上,Skr郎正在一边悠哉的吃着加了三跟烤肠的手抓饼,一边悠闲地逛着论坛,看着沙雕网友的帖子,Skr郎会心一笑,正欲给沙雕帖子点赞,邮件忽的弹出,Skr郎慢悠悠的打开邮件任务: 每日店铺交易表单导出时限: 一周要求如下: 1. 表头统一格式为Skr-店铺名称(eg:Skr-SM旗舰店) 2. 内容为店铺当日交易数据 3. 表尾为当天日期Skr郎心中暗喜,看我两天搞定,...
谈笑间学会策略模式 1 背景某天早上,Skr郎正在一边悠哉的吃着加了三个鸡蛋的手抓饼,一边悠闲地逛着论坛,看着沙雕网友的帖子,Skr郎会心一笑,正欲给沙雕帖子点赞,邮件忽的弹出,Skr郎慢悠悠的打开邮件任务: 对接阿里支付接口时限: 一周要求如下: 1. 单笔限额不超过1W 2. 可以成功提现 3. 发起提现后,可以主动查询提现结果Skr郎心中暗喜,看我两天搞定,剩下的时间就可以嘿嘿嘿了/**...
14 RabbitMQ解决分布式事务 1 原理最终一致性原理2 必要条件确认生产者将信息投递到MQ服务器中(采用MQ确认机制) 生产者向MQ发送消息失败,采用重试机制确认消费者能正确的消费消息,采用手动ACK模式(注意幂等性问题) 消费者消费消息失败,生产者无需回滚 ...
13 死信队列 文章目录1 图解2 消息如何进入死信队列3 应用场景4 代码样例4.1 生产者4.2 消费者5 注意事项1 图解2 消息如何进入死信队列消息过期队列长度已满消息被拒绝且不再重新尝试3 应用场景在定义业务队列时,指定一个死信交换机,并绑定一个死信队列当消息变成死信时,该消息就会被发送到该死信队列上这样就方便我们查看消息失败的原因4 代码样例4.1 生产者/*** 定...
12 补偿机制 文章目录1 出现场景2 实现原理2.1 @RabbitListener3 自定义重试4 如何选择重试机制4.1 需要重试4.2 无需重试5 幂等性1 出现场景rabbitmq 默认情况下,如果消费者程序出现异常,会自动实现补偿机制消费者出现异常,消息不会消费成功2 实现原理2.1 @RabbitListener@RabbitListener底层,使用Aop进行拦截,如果程序没有抛出异...
11 SpringBoot简单整合RabbitMQ 文章目录1 生产者1.1 代码地址1.2 项目2 消费者2.1 代码地址2.2 项目3 发送消息4 接收消息1 生产者1.1 代码地址https://github.com/3748/RabbitMq.git1.2 项目boot\rabbitmq-producer2 消费者2.1 代码地址https://github.com/3748/RabbitMq.git2.2 ...
10 交换机详解 文章目录1 交换机类型1.1 Direct(直连交换机)1.1.1 解释1.1.2 图解1.2 Fanout(扇型交换机)1.2.1 解释1.2.2 图解1.3 Topic(主题交换机)1.3.1 解释1.3.2 图解1.4 Headers(头交换机)1.4.1 解释1.4.2 匹配规则1.5 默认交换机1.5.1 解释1.5.2 默认交换机1.6 Dead Letter Exchange(死信交...
9 通配符模式 文章目录1 图解2 代码3 代码介绍3.1 引入必须依赖3.2 获取MQ连接3.3 消息消费者13.4 消息消费者23.5 消息生产者3.6 启动生产者4 通配符规则1 图解2 代码url: https://github.com/3748/RabbitMq.gitpackage: com.test.rabbitmq.topic3 代码介绍3.1 引入必须依赖p...
8 路由模式 文章目录1 图解2 代码3 代码介绍3.1 引入必须依赖3.2 获取MQ连接3.3 消息消费者13.4 消息消费者23.5 消息生产者3.6 启动生产者1 图解2 代码url: https://github.com/3748/RabbitMq.gitpackage: com.test.rabbitmq.routing3 代码介绍3.1 引入必须依赖pom.xm...
7 发布订阅模式 .@[TOC]1 图解2 代码url: https://github.com/3748/RabbitMq.gitpackage: com.test.rabbitmq.ps3 代码介绍3.1 引入必须依赖pom.xml3.2 获取MQ连接com.test.rabbitmq.util.ConnectionUtil3.3 消息消费者1com.test.r...
2 Rabbit安装--Linux 未完待续[root@root ~]# cd /usr/local/src/[root@root src]# mkdir rabbitmq[root@root src]# cd rabbitmq/[root@root rabbitmq]# wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm-...
3 企业付款(Transfers)Demo 1 企业转账Demo1.1 pingpp–java在下载的ping++ sdk中找到TransferExample复制到你的项目中1.2 替换参数/* * * Ping++ Server SDK * 说明: * 以下代码只是为了方便商户测试而提供的样例代码,商户可根据自己网站需求按照技术文档编写, 并非一定要使用该代码。 * 接入企业付款流程参考开发者中心:https://www...
2 账号,私钥,公钥获取 文章目录1 注册2 App_ID3 Secret Key 与 Ping++ 公钥4 商户 RSA 公钥4.1 进入公钥生成网址4.2 获取相应的私钥与公钥4.3 生成商户公钥4.4 将4.2中生成公钥复制进来4.5 商户公钥生成完成1 注册2 App_ID3 Secret Key 与 Ping++ 公钥4 商户 RSA 公钥4.1 进入公钥生成网址https://help.ping...
1 环境部署 文章目录1 引入依赖1.1 远程引入1.2 本地引入1 引入依赖1.1 远程引入<dependency> <groupId>Pingplusplus</groupId> <artifactId>pingpp-java</artifactId> <version>2.3.14</vers...
6 保证消息不丢失 文章目录1 问题背景2 自动确认3 手动确认1 问题背景队列是如何知道消息已经被消费2 自动确认// 自动确认channel.basicConsume(QUEUE_NAME, true, consumer);只要消息从队列中获取,无论消费者获取到消息后是否成功消息,都认为是消息已经成功消费。3 手动确认// 手动确认channel.basicConsume(QUEUE_NA...
5 工作队列 文章目录1 图解2 代码3 代码介绍3.1 引入必须依赖3.2 获取MQ连接3.3 消息消费者13.4 消息消费者23.5 消息生产者3.6 启动生产者1 图解2 代码url: https://github.com/3748/RabbitMq.gitpackage: com.test.rabbitmq.work3 代码介绍3.1 引入必须依赖pom.xml3.2 获取...
4 简单队列 文章目录1 图解2 代码3 代码介绍3.1 引入必须依赖3.2 获取MQ连接3.3 消息生产者3.4 启动生产者3.5 消息消费者3.6 启动消费者1 图解2 代码url: https://github.com/3748/RabbitMq.gitpackage: com.test.rabbitmq.simple3 代码介绍3.1 引入必须依赖pom.xml3.2 获...
3 Virtual Hosts 文章目录1 添加Virtual Hosts2 创建用户2.1 用户角色2.1.1 超级管理员(administrator)2.1.2 监控者(monitoring)2.1.3 策略制定者(policymaker)2.1.4 普通管理者(management)2.1.5 其他3 Virtual Hosts分配用户3 界面中的功能1 添加Virtual Hosts相当于在mysql中创建一个数据库...
1 Rabbit安装--Windows 文章目录1 安装[Erlang](https://pan.baidu.com/s/1hcO6vevn6gnVj_aFlC_ROA)2 安装[RabbitMQ](https://pan.baidu.com/s/1zZqtTLKItWYDs8kcw5QgsA)3 启动RabbitMQ4 检验是否安装成功1 安装Erlang1.1 类似于java开发需要jdk,RabbitMQ开发需要Erlan1...