自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

方亮的专栏

方亮的专栏

  • 博客(572)
  • 资源 (2)
  • 收藏
  • 关注

原创 RabbitMQ实践——交换器(Exchange)和绑定(Banding)

在队列页面,我们看到named_queue_a、named_queue_c各有一条消息,而named_queue_b则没有,因为我们没有发送Routing key为named_queue_b的消息到默认交换器。比如Routing key是a.a.a的消息,它匹配了a.#、#.a.#和#.a这些规则。由于named_queue_a、named_queue_c这两个队列存在,所以在发送Routing key为named_queue_a、named_queue_c的消息时,会看到如下提示。

2024-06-14 03:15:00 1544

原创 RabbitMQ实践——通过Springboot收发消息

在中,我们在管理后台实践了消息的生产、发送和接收功能。本文我们将使用Springboot框架,实现RabbitMQ消息的收发功能。

2024-06-14 00:30:00 713

原创 RabbitMQ实践——在管理后台测试消息收发功能

我们搭建完RabbitMQ服务以及管理后台。本文我们将管理后台,进行一次简单的消息收发实验。

2024-06-14 00:15:00 373

原创 RabbitMQ实践——配置Prometheus和Grafana报表

在中我们已经安装成功RabbitMQ及其管理后台。在此基础上,我们将打通它和Prometheus、Grafana的通信,完成对RabbitMQ的可视化监控。

2024-06-13 00:56:12 854

原创 RabbitMQ实践——在Ubuntu上安装并启用管理后台

RabbitMQ是一款功能强大、灵活可靠的消息代理软件,为分布式系统中的通信问题提供了优秀的解决方案。无论是在大规模数据处理、实时分析还是微服务架构中,RabbitMQ都能发挥出色的性能,帮助开发者构建高效、稳定的系统。本系列我们将基于Java技术栈,探索RabbitMQ的一些使用。

2024-06-13 00:09:12 812

原创 Mysql使用中的性能优化——索引数对插入操作性能的影响

表的索引可以给数据检索提升效率,但是也给表的增删改操作带来代价。本文我们将关注,索引数量对INSERT操作的影响。

2024-06-09 03:00:00 715

原创 Mysql使用中的性能优化——索引对插入操作的性能影响

当我们往表中插入数据时,如果表中有索引,则会给插入操作增加更多的工作量。带来的好处是可以提升查询效率。但是这种优劣该如何权衡,则需要通过数据对比来提供佐证。本文我们将对比没有索引、有一个普通索引、有一个唯一索引的性能差距。

2024-06-09 02:45:00 822

原创 Mysql使用中的性能优化——批量插入的规模对比

在中,我们观察到单次批量插入的数量和耗时呈指数型关系。这个说明,不是单次批量插入的数量越多越好。本文我们将通过实验测试出本测试案例中最佳的单次批量插入数量。

2024-06-08 00:51:01 1079 1

原创 Mysql使用中的性能优化——单次插入和批量插入的性能差异

一般Mysql的客户端和服务端不在一台机器上,所以它们之间的通信需要通过网络进行。我们本次实验,希望抛开网络的影响,测试不同SQL方案在Mysql服务器上的执行效率的对比。于是我们使用“存储过程”来辅助测试。

2024-06-08 00:50:29 1126 1

原创 Redis使用中的性能优化——搭建Redis的监测服务

抛开场景和数据,谈论性能优化,就是纸上谈兵。这个系列我们将通过相关数据来展现常见的Mysql优化前后的性能差距。这样会给大家有个直观的认识。

2024-06-07 04:00:00 808

原创 Mysql使用中的性能优化——搭建Mysql的监测服务

抛开场景和数据,谈论性能优化,就是纸上谈兵。这个系列我们将通过相关数据来展现常见的Mysql优化前后的性能差距。这样会给大家有个直观的认识。

2024-06-07 03:45:00 984

原创 0基础学习区块链技术——51%攻击和双花

在一文中,讲解了区块链分叉相关的原因。这种分叉是CAP原则的结果,大部分分布式系统都会优先保证Availability(可用性)和Partition Tolerance(分区容错性)。而对于Consistency(一致性)则相对宽松。也就是说并不要求无时无刻保持强一致性,可以容忍在相对短的时间内出现不一致的情况。之后通过后续的其他策略进行补偿,从而达到最终的一致性。在这篇文章中我们还看到了:一条被部分人认可的主链并不一定会成为最终的主链。

2024-06-06 00:30:00 999

原创 0基础学习区块链技术——分叉

区块链是一种分布式存储技术。一谈到分布式服务,就会提及CAP原则。它是分布式系统设计中的一个基本原则。这个原则指出,在一个分布式系统中,这三个要素最多只能同时满足两个,即不可能同时达到三者兼顾的状态。一般情况下,在这三者之中,我们往往选择保留AP,即Availability(可用性)和Partition Tolerance(分区容错性),而战术性放弃Consistency(一致性)。这是因为如果分布式服务不可用,那这个服务还有什么存在的意义?所以一定要保证Availability(可用性)。

2024-06-06 00:15:00 796

原创 0基础学习区块链技术——链之间数据同步样例

使用可视化工具体验区块链同步过程

2024-06-05 00:39:44 1067

原创 0基础学习区块链技术——去中心化

去中心化”是区块链技术的核心。那么我们该如何理解这个概念呢?在这样的交易过程中,每个连接都是单点的。假如银行系统出现问题,或者银行变得不可信,可能它会吞掉这笔转账,即从发起方的账户中扣掉了钱,而收款方并没有收到。还可能收款方系统出现问题,或者收款方银行变得不可信。这在我们日常生活中不太常见,毕竟一般我们资金流动都发生在国内银行间。这些银行会受到银监会监管,它们一般不敢胡作非为。但是如果这样的交易发生在国与国之间,事情就会变得不太一样。

2024-06-05 00:38:59 939

原创 0基础学习区块链技术——推演猜想

在一文中,我们结合可视化工具,直观地感受了下区块的结构,以及链式的前后关系。本文我们将抛弃之前的知识,从0开始思考和推演,区块链技术可能是如何构思出来的。

2024-06-04 16:07:46 649

原创 0基础学习区块链技术——入门

本文力求简单,不讨论任何技术细节,只是从简单的组成来介绍区块链技术,以方便大家快速入门。同时借助一些可视化工具,辅助大家有直观的认识。

2024-06-04 16:06:11 892 1

原创 带Lettuce连接池、多数据源配置的RedisTemplate方案

在现实项目中,我们往往会遇到需要使用多个Redis数据源的场景。本文介绍的是一种高度定制化的方案。每个独立的数据源都会使用自己的配置,其中包括针对该数据源的连接池配置。

2024-05-22 19:00:00 1232

原创 0基础学习Mybatis系列数据库操作框架——Mysql的Geometry数据处理之WKB方案

在《0基础学习Mybatis系列数据库操作框架——Mysql的Geometry数据处理之WKT方案》中,我们介绍WTK方案的优点,也感受到它的繁琐和缺陷。比如:没有一种GeomFromText方案可以覆盖所有的Geometry结构,使得类似的SQL要写多份。没有针对LinearRing(一种特殊的LineString)的处理方法。而本文介绍的WKB方法,则可以解决上述问题。WKB全程Well-Known Binary,它是一种二进制存储几何信息的方法。在《0基础学习Mybatis系列数据

2024-05-21 18:09:41 1182

原创 0基础学习Mybatis系列数据库操作框架——Mysql的Geometry数据处理之WKT方案

很多数据库为了兼容Mysql,针对Geometry类型,在WKT模式下是兼容的。因为如何将WKT转换成自己数据库内部的结构,即对ST_GeomFromText等方法的实现是可以自己内部处理,让用户不会感知。这让WKT方案在跨数据库时有比较好的兼容性。但是如果只是针对Mysql数据库,或者像OceanBase这类对Mysql底层也兼容很好的数据库,则可以考虑WKB方案。这块的内容我们会在《0基础学习Mybatis系列数据库操作框架——Mysql的Geometry数据处理之WKB方案》中介绍。

2024-05-21 18:09:01 1379

原创 自定义RedisTemplate序列化器

最后我们介绍结合了《使用java.io库序列化Java对象》和《RedisTemplate保存二进制数据的方法》的方式。首先定义序列化器IoSerializer,它继承于RedisSerializer。中间的序列化和反序列化步骤已经在《使用java.io库序列化Java对象》中有过介绍。

2024-05-20 19:15:00 1093

原创 RedisTemplate保存二进制数据的方法

在工作中,我们经常可以见到值是字符串类型的RedisTemplate。而有些场景下,比如我们希望保存某个对象,而又不想使用外部的一些序列化方法,则可以考虑将数据保存而为二进制,然后保存到Redis中。这个时候,我们就可以使用Value类型是byte[]类型的RedisTemplate。为了区分一般项目中常用的RedisTemplate类型,我们给新的Bean取一个名字bytesRedisTemplate。

2024-05-20 07:00:00 562

原创 使用java.io库序列化Java对象

在我们使用诸如Redis这类缓存系统时,我们往往会存在如下需求:将Java对象保存到Redis缓存中,然后在其他机器上还原回来。

2024-05-14 19:00:00 599

原创 使用protoc-jar-maven-plugin生成grpc项目

在中我们使用protobuf-maven-plugin完成了grpc代码的翻译。本文我们将只是替换pom.xml中的部分内容,使用protoc-jar-maven-plugin来完成相同的功能。总体来说protoc-jar-maven-plugin方案更加简便。

2024-05-03 00:21:25 1389

原创 使用protobuf-maven-plugin生成grpc项目

在一文中,我们使用了protobuf-maven-plugin来生成proto中的message类型结构体。本文我们将使用该插件,完成grpc依赖的生成。

2024-05-03 00:06:18 1673 1

原创 在不同操作系统上自动生成Protocol Buffers的Java语言包的方法2

在中我们使用了protobuf-maven-plugin插件来给Proto文件生成Java语言版代码。本文我们将使用一种更简单的插件来完成这个功能。本文实验的操作系统和代码库都和一样。区别仅仅是pom.xml文件。

2024-05-01 20:51:25 908

原创 在不同操作系统上自动生成Protocol Buffers的Java语言包的方法

Protocol Buffers是一个强大的数据序列化工具,它提供了一种高效、便捷、可读性强且安全性高的方式来处理结构化数据。它能够将复杂的数据结构转换为紧凑的二进制格式,从而方便地进行网络传输或硬盘存储。接收方可以使用相同的数据结构定义来解析这些二进制数据,从而还原成原始的数据。ProtoBuf的用途广泛,特别适用于需要频繁处理数据的场景,如网络通信和数据存储。在网络通信中,ProtoBuf可以帮助开发者在不同系统和平台之间实现高效、可靠的数据交换和通信。

2024-05-01 12:46:44 1385 2

原创 单机单实例部署RocketMQ及测试

部署Apache RocketMQ需要准备NameServer、Broker、Proxy三个组件。

2024-04-23 18:15:00 818

原创 Springboot3集成Web、RedisTemplate、Test和knife4j

然后我们在http://127.0.0.1:8080/doc.html就可以看到各个接口的文档。使用RedisTemplate自动化加载上述配置,然后借用它的方法完成Redis的操作。由于我们使用的是Java22,会使用到一些新特性,在Vscode中编译时会报如下错误。我们只需要在Pom.xml中加入如下内容,即可解决(重启Vscode)packages-to-scan是我们让knife4j搜索的包名。KeyGenerator是我用于生成测试数据的工具类。用于指定Redis的地址和端口信息。

2024-04-22 18:30:00 1176 1

原创 单机单实例部署Kafka及测试

在我们做和kafka开发相关的工作时,往往希望独立部署一套kafka测试环境。而kafka部署时,不能只是简单安装kafka自身组件,还要安装zookeeper、JDK之类的辅助软件。这让其部署变得不是那么方便。本文将使用kafka和zookeeper的官方编译包来做部署。

2024-04-22 18:30:00 545

原创 Language APIs & SDKs-C++-Exporters

要将指标数据发送到Prometheus,您可以启用Prometheus的OTLP接收器并使用OTLP导出器,也可以使用PrometheusHttpServer——一个MetricReader来启动HTTP服务器,该服务器将收集指标并根据请求序列化为 Prometheus文本格式。如果您已经设置了Prometheus或与Prometheus兼容的后端,则可以跳过本节并为您的应用程序设置Prometheus或OTLP导出器依赖项。最后,您还可以编写自己的导出器。该收集器现在能够通过OTLP接受遥测数据。

2024-04-19 18:00:00 624 1

原创 Language APIs & SDKs-C++-Instrumentation

然后,您将使用SDK初始化 OpenTelemetry并使用API来测量您的代码。这将从您的应用程序以及您安装的任何也附带测量装置的库发出遥测数据。如果您要测量库,请仅安装适合您的语言的OpenTelemetry API包。Metrics SDK 将隐式创建一个缺失的视图,其中包含装置和聚合之间的默认映射。当给定Span处于活动状态时,新创建的Span将继承活动Span的trace ID和其他上下文属性。活动Span的概念很重要,因为在没有显式指定父级的情况下创建的任何Span都是当前活动Span的父级。

2024-04-18 18:30:00 1194

原创 Opentelemetry——分析C++项目链接时循环依赖导致的错误

它的意思是找不到opentelemetry::v1::sdk::common::internal_log::GlobalLogHandler::GetHandlerAndLevel()的定义。我们到工程中定位该文件,然后看它编译到哪个项目里去了。

2024-04-18 18:15:00 1620

原创 Opentelemetry-Language APIs & SDKs-C++-Getting Started

在您的otel-cpp-starter文件夹中,创建一个子文件夹roll-dice,其中将通过引用oatpp头文件,并在编译项目时链接它们来使用Oat++库。要将OpenTelemetry添加到您的应用程序,请让CMakeLists.txt使用以下附加依赖项,并更新文件。在该roll-dice文件夹中,创建一个名为main.cpp的文件,并将以下代码添加到该文件中。此命令将在您的系统上安装构建的oatpp库和头文件,使其可以在您的项目中进行开发。成功构建项目后,您可以运行生成的可执行文件。

2024-04-17 19:00:00 802

原创 Opentelemetry——Sampling

例如,生成大量跟踪数据的一组服务可能首先使用头部采样仅对一小部分跟踪进行采样,然后在Telemetry管道中使用尾部采样做出更复杂的采样决策,然后再导出到后端。在这种情况下,采样决策是根据Trace ID和所需的采样Trace百分比做出的。尾部采样是通过考虑Trace内的全部或大部分Span来决定对Trace哪些地方的Span进行采样的方法。尾部采样允许您根据Trace的不同部分派生出的特定条件对Trace进行采样,而头部采样则无法提供此选项。不同的组织不仅有自己的采样原因,而且也有自己想要采样的对象。

2024-04-17 06:45:00 701

原创 Opentelemetry——Components

此外,许多对遥测数据进行操作的工具都支持 OTLP(例如Prometheus、Jaeger和大多数供应商),在您需要时为您提供高度的灵活性。OpenTelemetry 还提供了针对特定语言的 SDK,让您可以使用 OpenTelemetry API 使用您选择的语言生成遥测数据,并将该数据导出到首选的后端。OpenTelemetry社区当前提供预构建的Lambda层,自动测量您的应用程序,以及可以使用的独立Collector Lambda层的选项用于手动或自动测量应用程序。

2024-04-16 18:30:00 715

原创 Opentelemetry——Instrumentation-Libraries

在单个响应的情况下,网络上只有一个上下文,它成为库创建的新Span的父Span。采样输出的Span是低功耗的,您可以检查Span是否正在记录,以避免在填充属性时进行额外的分配以及高功耗的计算。特别注意Span名称;公共 API 是Trace的良好使用方法:为公共 API 调用创建的Span允许用户将遥测数据映射到应用程序代码,了解库调用的持续时间和结果。获取Tracer时,提供您的库(或跟踪插件)名称和版本——它们显示在遥测数据上,并帮助用户处理和过滤遥测数据,了解它的来源,并调试/报告任何测量装置问题。

2024-04-16 18:15:00 1095

原创 Opentelemetry——Instrumentation-Code-based

您在此处选择的名称应该精确表达正在检测的具体内容—— 例如,如果您正在编写一个库,那么您应该以您的库命名它(例如 com.example.myLibrary),因为该名称将为所有生成的Span或Metric Events提供命名空间。进程内导出数据要求您引入并依赖一个或多个导出器、库,这些库将 OpenTelemetry 的内存中Span和Metric对象转换为适合遥测数据分析工具(如 Jaeger 或 Prometheus)需要的格式。如果您的操作对象是独立的进程或服务,那么您将依赖API和SDK。

2024-04-15 18:45:00 594

原创 Opentelemetry——Instrumentation-Zero-code

零代码检测通常以代理或类似代理安装的方式将OpenTelemetry API 和 SDK 功能添加到您的应用程序中。OpenTelemetry可让您快速获得服务的一些可观测性,而无需使用 OpenTelemetry API 和 SDK 进行基于代码的检测。通常,零代码检测会为您正在使用的库添加检测量化装置。要检测您的代码,您需要使用基于代码的检测。首先,您只需要配置一个服务名称,以便您可以在您选择的可观测性后端中识别该服务。此外,零代码检测允许您配置需要加载的检测量化库和导出器。

2024-04-15 18:15:00 880

原创 Opentelemetry——Instrumentation

基于代码的解决方案使您可以从应用程序本身获得更深入的洞察和丰富的遥测数据。它们允许您使用 OpenTelemetry API 从应用程序生成遥测数据,这是对零代码解决方案生成的遥测数据的重要补充。它们从您使用的库和/或应用程序运行的环境中提供丰富的遥测数据。OpenTelemetry 提供的不仅仅是零代码和基于代码的遥测解决方案。为了使系统可观察,必须对其进行检测量化,也就是说,来自系统组件的代码必须发出Traces, Metrics和Logs。了解设置基于代码的Instrumentation的基本步骤。

2024-04-14 16:00:00 770

LuaCmdTest

我用于测试的一个lua脚本,没啥用,不用下载。

2012-11-27

同步双工管道

http://blog.csdn.net/breaksoftware/article/details/7001672文中的工程

2011-11-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除