类型系统

深入剖析 RabbitMQ —— Spring 框架下实现 AMQP 高级消息队列协议

倾然丶 夕夏残阳落幕 提交于 2019-11-26 17:12:06
前言 消息队列在现今数据量超大,并发量超高的系统中是十分常用的。本文将会对现时最常用到的几款消息队列框架 ActiveMQ、RabbitMQ、Kafka 进行分析对比。 详细介绍 RabbitMQ 在 Sprinig 框架下的结构及实现原理,从Producer 端的事务、回调函数(ConfirmCallback / ReturnCallback)到 Consumer 端的 MessageListenerContainer 信息接收容器进行详细的分析。通过对 RabbitTemplate、SimpleMessageListenerContainer、DirectMessageListenerContainer 等常用类型介绍,深入剖析在消息处理各个传输环节中的原理及注意事项。 并举以实例对死信队列、持久化操作进行一一介绍。 目录 一、RabbitMQ 与 AMQP 的关系 二、RabbitMQ 的实现原理 三、RabbitMQ 应用实例 四、Producer 端的消息发送与监控 五、Consumer 端的消息接收与监控 六、死信队列 七、持久化操作 一、RabbitMQ 与 AMQP 的关系 1.1 AMQP简介 AMQP(Advanced Message Queue Protocol 高级消息队列协议)是一个消息队列协议,它支持符合条件的客户端和消息代理中间件(message

网络协议总结一

北城余情 提交于 2019-11-26 16:03:26
网络协议 OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型是一个逻辑上的定义和规范; 把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备, 比如路由器,交换机 OSI 七层模型是一种框架性的设计方法,其最主要的功能就是帮助不同类型的主机实现数据传输; 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯 来源: https://www.cnblogs.com/a19960101/p/11325428.html

数据库设计60个技巧

为君一笑 提交于 2019-11-26 12:47:01
数据库设计指南 如果把企业的数据比做生命所必需的血液,那么数据库的设计就是应用中最重要的一部分。有关数据库设计的材料汗牛充栋,大学学位课程里也有专门的讲述。不过,就如我们反复强调的那样,再好的老师也比不过经验的教诲。所以我们最近找了些对数据库设计颇有造诣的专业人士给大家传授一些设计数据库的技巧和经验。我们的编辑从收到的130 个反馈中精选了其中的60 个最佳技巧,并把这些技巧编写成了本文,为了方便索引其内容划分为5 个部分: 第1 部分— 设计数据库之前 这一部分罗列了12 个基本技巧,包括命名规范和明确业务需求等。 第2 部分— 设计数据库表 总共24 个指南性技巧,涵盖表内字段设计以及应该避免的常见问题等。 第3 部分— 选择键 怎么选择键呢?这里有10 个技巧专门涉及系统生成的主键的正确用法,还有何时以及如何索引字段以获得最佳性能等。 第 4 部分 — 保证数据完整性 讨论如何保持数据库的清晰和健壮,如何把有害数据降低到最小程度。 第5 部分— 各种小技巧 不包括在以上4 个部分中的其他技巧,五花八门,有 了它们希望你的数据库开发工作会更轻松一些。 第1 部分— 设计数据库之前 考察现有环境 在设计一个新数据库时,你不但应该仔细研究业务需求而且还要考察现有的系统。大多数数据库项目都不是从头开始建立的;通常,机构内总会存在用来满足特定需求的现有系统(可能没有实现自动计算)。显然

Java介绍-百度百科

断了今生、忘了曾经 提交于 2019-11-26 12:06:50
Java 是一门 面向对象 编程语言,不仅吸收了 C++ 语言的各种优点,还摒弃了C++里难以理解的 多继承 、 指针 等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 [1] 。 1996年1月,Sun公司发布了Java的第一个开发工具包 (JDK 1.0) ,这是Java发展历程中的重要里程碑,标志着Java成为一种独立的开发工具。9月,约8.3万个网页应用了Java技术来制作。10月,Sun公司发布了Java平台的第一个即时 (JIT) 编译器。 1997年2月,JDK 1.1面世,在随后的3周时间里,达到了22万次的下载量。4月2日,Java One会议召开,参会者逾一万人,创当时全球同类会议规模之纪录。9月,Java Developer Connection社区成员超过10万。 1998年12月8日,第二代Java平台的企业版J2EE发布。1999年6月,Sun公司发布了第二代Java平台(简称为Java2)的3个版本: J2ME (Java2 Micro Edition,Java2平台的微型版),应用于移动、无线及有限资源的环境; J2SE (Java 2 Standard Edition,Java 2平台的标准版),应用于桌面环境; J2EE

Qt--Qt的简单介绍以及坐标系统

喜欢而已 提交于 2019-11-26 02:32:47
一.Qt Creator工程介绍 Qt Creator以工程项目的方式对源码进行管理 A.一个Qt Creator工程包含不同类型的文件 .pro项目描述文件 .pro.user用户配置文件 .h头文件 .cpp源文件 .ui界面描述文件 资源文件-图片、音频等 B.pro项目描述文件的基本构成 C.pro项目描述文件中的高级变量 D.CONFIG用于设定项目的配置信息和编译选项 CONFIG的常用选项 1.debug-构建debug版本的可执行程序 2.release--构建release版本的可执行程序 3.debug_and_release--一同构建debug版和release版 4.warn_on--尽可能多的输出警告信息 5.warn_off-不能输出警告信息 .pro文件的本质为Qt中的Makefile文件 .pro项目文件分析 QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = HelloWorld TEMPLATE = app INCLUDEPATH += E:/BCC/include \ E:/VC/include SOURCES += Main.cpp \ HelloWorld.cpp HEADERS += HelloWorld.h FORMS +=

自制小工具大大加速MySQL SQL语句优化(附源码)

你离开我真会死。 提交于 2019-11-25 20:40:57
引言 优化SQL,是DBA常见的工作之一。如何高效、快速地优化一条语句,是每个DBA经常要面对的一个问题。在日常的优化工作中,我发现有很多操作是在优化过程中必不可少的步骤。然而这些步骤重复性的执行,又会耗费DBA很多精力。于是萌发了自己编写小工具,提高优化效率的想法。 那选择何种语言来开发工具呢? 对于一名DBA来说,掌握一门语言配合自己的工作是非常必要的。相对于shell的简单、perl的飘逸,Python是一种严谨的高级语言。其具备上手快、语法简单、扩展丰富、跨平台等多种优点。很多人把它称为一种“胶水”语言,通过大量丰富的类库、模块,可以快速搭建出自己需要的工具。 于是乎,这个小工具就成了我学习Python的第一个作业,我把它称之为“MySQL语句优化辅助工具”。而且从此以后,我深深爱上了Python,并开发了很多数据库相关的小工具,以后有机会介绍给大家。 一、优化手段、步骤 下面在介绍工具使用之前,首先说明下MySQL中语句优化常用的手段、方法及需要注意的问题。这也是大家在日常手工优化中,需要了解掌握的。 1、执行计划 — EXPLAIN命令 执行计划是语句优化的主要切入点,通过执行计划的判读了解语句的执行过程。在执行计划生成方面,MySQL与Oracle明显不同,它不会缓存执行计划,每次都执行“硬解析”。查看执行计划的方法,就是使用EXPLAIN命令。 1)基本用法