自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

创意程序员的博客

分享一些实用的技能和技巧

  • 博客(53)
  • 收藏
  • 关注

原创 RabbitMQ开启TLS支持,解决AMQP明文身份验证漏洞

随着网络通信安全性的日益重要,我们不难发现,在企业级应用中,数据传输的安全防护措施已经成为不可或缺的一环。近期,不少使用RabbitMQ的开发团队收到了关于“远程主机允许明文身份验证”的漏洞警告。为确保敏感信息的安全传递,启用TLS(Transport Layer Security)支持成为了关键的解决方案。本文将详细介绍如何在RabbitMQ中启用TLS加密,以及在SpringBoot应用中配置TLS并设置EXTERNAL认证,通过实际操作步骤解决明文身份验证漏洞。

2024-02-26 13:55:20 1624

原创 Dubbo应用连接Zookeeper问题与解决方案

总的来说,在解决Dubbo应用启动时遇到的ZooKeeper连接问题时,需要综合考虑多种因素,但都离不开查看日志。同时,对于日志中出现的异常信息和间隔时间较长的日志,也需要深入分析并找到根本原因,异常信息是结果,间隔较长是问题现象,通过分析现象有助于找出根本原因。

2024-01-10 13:54:02 1037

原创 AidLux:手机/平板上的Linux环境与AI开发利器

AidLux是一个基于ARM架构的跨生态(鸿蒙/Android+Linux)一站式智能物联网(AIoT)应用开发和部署平台,正受到越来越多开发者和用户的青睐。既可以作为手机/平板上的一个Linux环境使用,也可以作为AI开发利器以发挥它强大的功能和独特的价值。

2023-12-06 20:04:39 2276 1

原创 sed 只用来替换文本?一文掌握 sed 更多用法

在 Linux 系统中,sed 命令是一款强大的文本处理工具,它可以进行文本替换、删除、插入等多种操作。本篇文章将详细介绍 sed 命令的用法。sed 是 stream editor 的缩写,是一款流式文本编辑器,它以行为单位处理文本数据。通过 sed 命令,我们可以对文本进行各种操作,例如替换、删除、插入等。sed 命令不仅可以独立使用(操作文件),还可以与其他命令配合使用(通过管道),实现更复杂的文本处理需求。

2023-12-04 21:25:00 838

原创 程序员日常使用Shell命令:提高工作效率的实用技巧

作为程序员,我们每天都在与代码和工具打交道。其中,Shell是一个非常重要的工具,它可以帮助我们高效地完成各种任务。本文将列举一些程序员日常使用Shell提高效率的操作,帮助大家更好地利用Shell提高工作效率。

2023-12-03 19:46:02 926

原创 函数式接口的妙用,让异步执行更简单

在需要进行异步调用的业务组件中,我们只需注入前面创建的组件AsyncUtil,然后就可以轻松地对同一个类中的方法进行异步调用。函数式接口(Functional Interface)是 Java 8 中引入的一个概念,是指只包含一个抽象方法的接口。函数式接口里面的抽象方法名称随意,如:exec()、run()等,但一个函数式接口只允许定义一个方法,否则IDE会提示错误。上述代码,通过匿名内部类的形式创建一个接口实例,并且在匿名内部类中直接完成exec()方法的实现,然后调用函数接口。

2023-12-03 15:44:18 438

原创 MySQL递归查询:洞悉数据的层层关联

递归查询是一种在数据库中处理具有层次结构的数据的方法,它使用带有自连接的表和公共表表达式(Common Table Expression,简称CTE),让我们可以在一个表中查询出具有父子关系的数据。

2023-11-27 13:40:13 1269

原创 将TiDB换成MySQL之后,我踩了一个坑

而MySQL高可用集群则是一个主从复制的三个节点结构,使用组复制技术将数据从主节点复制到从节点,采用的是异步复制方式。由于TiDB与MySQL的高度兼容性,我们在开发环境中使用MySQL,而在测试环境中使用TiDB。结合MySQL集群的特点,我终于明白了问题所在:登记订单时访问的是主库,而查询订单以检查是否重复下单时访问的是从库。不过,为了避免给主库增加查询压力,并结合业务特性,最终的解决方案是:交易结束后不主动释放用户分布式锁,而是让锁超时自动释放。正是因为这个优势,我们的一个项目踩到了一个坑。

2023-11-20 21:10:40 287

原创 天气这么好,都外出了。顺便了解一下漏桶算法

漏桶算法(Leaky Bucket)是网络世界中流量整形(Traffic Shaping)或速率限制(Rate Limiting)时经常使用的一种算法,它的主要目的是控制数据注入到网络的速率,平滑网络上的突发流量。又是一个阳光明媚的周末,大家都外出了,路上到处堵车,尤其是各桥梁、隧道入口处,很多车排队等着进入,而出口处就像一个漏桶一样,一辆车接着一辆车有序且匀速开出。总之,漏桶算法就像一个默默无闻的守护者,默默地保护着我们的生活和工作,让我们周末可以愉快地外出。看到标题,你想到了些什么呢?

2023-11-19 21:07:13 119

原创 C语言算法:一文搞懂穷举算法

穷举算法,顾名思义,就是通过列举所有可能的情况来寻找问题的解决方案。它的核心思想是将问题的所有可能解逐一列举出来,然后逐一判断,找出满足条件的解。

2023-11-15 13:48:56 1031 2

原创 MySQL 分库分表与 TiDB(平凯数据库),如何选择?

随着互联网行业的飞速发展,数据量不断增长,传统的关系型数据库已经无法满足大规模数据处理的需求。为了解决这一问题,分库分表和分布式数据库应运而生。MySQL 分库分表和 TiDB 是两种不同的数据库解决方案,它们各自具有一些优点和缺点。在选择使用哪种方案时,需要根据实际需求和情况来进行权衡。

2023-11-15 13:44:38 419

原创 Java的流操作:让数据处理更简单,更高效

Java 8的流操作带来了数据处理的革命性突破,让开发者能够更方便、更简洁地处理数据。通过使用流,可以更简洁、更易读地编写代码来对集合进行复杂的操作,如过滤、映射、排序等。中间操作是对流中的元素进行某种处理的操作,例如过滤、映射、排序等。中间操作不会改变流本身,而是返回一个新的流,因此可以通过链式调用方法组合多个中间操作。使用流可以方便地处理数据,如过滤列表中库存大于0的产品,然后按产品类型进行分组。在某些情况下,由于线程切换的开销,并行流的性能可能不如串行流。要使用流,首先需要创建一个流。

2023-11-11 21:18:27 218 1

原创 使用 HTTP Client 轻松进行 API 测试

使用 JetBrains HTTP Client 工具可以轻松地进行 API 测试,发送 HTTP 请求、查看响应结果、保存测试脚本。这个工具的功能非常强大,本文只是介绍了它的基本用法,更多高级用法等待大家去探索。祝你在使用 HTTP Client 工具的过程中取得更多的开发成果!

2023-11-11 20:51:18 567

原创 使用CompletableFuture进行异步编程

CompletableFuture是Java 8中引入的一个异步编程工具,它实现了Future和CompletionStage接口,可以用于处理异步任务。CompletableFuture提供了丰富的方法,可以方便地组合多个异步任务,实现复杂的异步逻辑。通过使用CompletableFuture,我们可以实现高效的并发编程,并充分利用多核处理器的能力。

2023-11-11 20:38:30 161

原创 C语言动态规划解决0-1背包问题

基本思路动态规划(Dynamic Programming,简称DP)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题,它能够将问题分解为相互独立的子问题,并将子问题的解存储起来,以便下次需要时直接使用,从而减少计算量,提高效率。最经典的例子就是0-1背包问题。0-1背包问题描述:给定一组物品,每种物品都有自己的重量和价值,在限定的总重量内,选取若干种物品,使得物品的总价值最大。

2023-11-11 19:06:39 1259 3

原创 对称密钥加密与非对称密钥加密:原理与应用

在对称加密和非对称加密的选用上,我们需要根据具体的应用场景和需求进行选择。在数据传输和存储方面,对称加密具有较高的效率和安全性;而在数字签名和身份认证等安全性要求极高的场景中,非对称加密则更具优势。理解这两种加密方法的原理和应用,对于保障信息安全具有重要意义。

2023-11-11 16:04:18 557

原创 程序员如何提高自己的竞争力?

时间管理对于程序员来说同样重要,因此需要合理安排自己的时间,以便在保证工作质量的同时,还能够有足够的时间学习新技术、提高自己的能力。可以通过制定工作计划、使用时间管理工具、培养良好的生活习惯等方式来提高自己的时间管理能力。作为程序员,我们要关注行业动态,不断学习新的技术和编程语言,以适应行业的发展。编程能力是程序员的核心能力,提高编程能力可以帮助我们在项目中更好地解决问题,提高工作效率。拓展人际关系可以帮助我们了解更多的行业信息,为自己的职业发展提供更多的机会。7. 保持积极的心态和健康的身体。

2023-11-11 12:32:28 119 2

原创 你的代码有bug

通过接受批评和建议,我们可以发现自己的不足并加以改进,这不仅有助于提高我们的技术水平,还能增强我们的团队合作能力。总之,作为程序员,我们应该以开放的心态接受别人的批评和建议。通过不断学习和改进,我们可以提高自己的技术水平,并成为更好的程序员。所以,当别人对你说“你的代码有bug”时,不要气馁或愤怒,而是将其视为一个成长的机会。通过良好的沟通技巧,可以减少冲突和误解,并建立更好的合作关系。不要将别人的批评视为质疑,而是将其视为一个成长的机会。通过理解别人的反馈,我们可以更好地认识自己的不足并寻找改进的方向。

2023-11-11 12:23:17 471 2

原创 Python算法:动态规划解决0-1背包问题

分析子问题“将前 i 件物品放入容量为 c 的背包中”,考虑第 i 件物品放或不放入背包,可以转化为一个只牵扯前 i-1 件物品的问题:如果不放第 i 件物品,那么问题就转化为“前 i-1 件物品放入容量为 c 的背包中”,价值为 f[i-1][c];如果放第 i 件物品,那么问题就转化为“前 i-1 件物品放入剩下的容量为 c-wi 的背包中”,此时能获得的最大价值就是 f[i-1][c-wi] 再加上通过放入第 i 件物品获得的价值 vi。所以按照这个方程递推完毕后,最终的答案一定是 f[i][c]。

2023-11-10 20:25:40 496

原创 一文搞懂穷举算法

穷举算法是一种简单直接的解决问题的方法,适用于小规模问题。随着问题规模的增大,计算量也会增长,导致效率降低(如穷举法破解密码)。因此,在实际应用中,需要根据问题的具体特点选择合适的算法。

2023-11-10 20:22:04 661

原创 Java 8 的新特性还没用起来,先不要想着升级到 Java 17

虽然Java 17为开发者带来了许多新的特性和改进,但如果我们能够首先深入挖掘和利用Java 8的潜力,那么我们可能会发现现有的版本已经足够满足我们的需求。当然,为了适应新的环境和团队的发展,对于团队的新项目,可以考虑尝试使用Java 17。

2023-10-27 21:00:00 217 3

原创 为何开发需要更多地考虑运维便利性

如果开发人员只关注开发过程的便捷性,而忽视了运维部署的复杂性,那么他们可能会开发出一些难以部署的软件。如果软件的部署过程复杂,那么运维人员在部署时就需要花费大量的时间和精力,这无疑会增加运维的难度和压力,也增加产生问题的可能性。如果开发人员没有考虑到这一点,在部署过程中,可能会导致其他相关的功能和模块出现问题,或者各相关模块的更新相互依赖太严重,增加部署的复杂度,甚至因为某个模块的原因影响整个部署。当然,还必需考虑到运维人员的需求,提供详细的部署文档和指南,帮助运维人员更好地理解和部署软件。

2023-10-27 18:08:39 168

原创 比Nginx测试桩更方便,ShenYu网关的Mock插件

使用Apache ShenYu网关的Mock插件可以方便地从管理后台界面维护模拟返回报文。Mock 插件为请求指定响应状态码和响应体,方便进行测试。支持用户使用 SpEL 表达式生 mock 数据。使用 SpEL 表达式可能会导致执行恶意脚本或应用破坏性程序的风险,因此应尽可能在安全的环境中使用。相比使用Nginx测试桩,ShenYu网关的Mock插件更加简单易用,适合初级开发和测试人员使用。希望以上介绍能够帮助大家更好地利用ShenYu网关的Mock插件进行接口测试。

2023-10-26 21:00:00 717

原创 一招解决文件同步问题:rsync用法详解

导语:在工作和生活中,我们经常需要将文件从一个地方复制到另一个地方。传统的复制方法费时费力,而今天我们要介绍的 rsync 命令则可以轻松解决这个问题。本文将详细介绍 rsync 的用法,让你轻松掌握文件同步的技巧。

2023-10-26 12:23:49 2638 1

原创 还在为 Dubbo 服务写 Controller?因为未使用 ShenYu 网关

Dubbo 是一款高性能、轻量级的开源 Java RPC 框架,它可以帮助开发人员快速构建分布式服务。在 Dubbo 应用中,我们经常需要提供 HTTP 调用,如供 H5、外部系统等调用。一般的做法是为需要提供 HTTP 调用的服务编写 Controller,但这并非必需,可以通过网关来适配。

2023-10-22 21:00:00 646 3

原创 IDEA提高工作效率的实用技巧

IDEA是一款备受开发者喜爱的集成开发环境,它提供了许多实用的功能,可以帮助我们更快速、更高效地编写代码。本文将介绍一些IDEA的使用技巧提高工作效率的实用技巧。在弹出窗口中,键入与该正则表达式匹配的测试字符串。本文只是介绍了IDEA中的部分技巧,后续将继续介绍更多实用的技巧,包括一些实用的实时模板。

2023-10-19 21:00:00 447 1

原创 钥匙被反锁车内,与程序员有什么关系

因此,支付系统需要捕获通知失败的异常,并且安抚用户稍后关注结果,然后以一定的时间间隔不断尝试重新通知商户,直到通知成功,或者超过设定的重试次数。当开发一个新的业务流程时,如果还没有成熟的方案可供参考,我们可以假设各种可能的异常情况来模拟业务处理过程,思考各种异常情况对用户的影响,分析哪些情况只需要告知用户即可,哪些可以由系统自动补偿,哪些需要手动补偿。汽车的普及为我们的出行提供了巨大的便利,然而,一些设计上的不足也给人们的生活带来了不必要的麻烦,钥匙被反锁在车内就是一个典型的问题。一个常见的异常处理——

2023-10-13 18:17:08 404 4

原创 极简二叉树

二叉树由一系列节点组成,每个节点最多有两个子节点,通常称为左子节点和右子节点。每个节点包含一个值和两个指向其子节点的指针。二叉树的遍历方式包括先序遍历、中序遍历和后序遍历。这些遍历方式描述了访问二叉树中节点的特定顺序。

2023-10-11 19:44:34 501 1

原创 在RabbitMQ中使用新的MQTT 5.0功能

MQTT是物联网(IoT)的标准协议,是轻量级的,协议头很小,可以节省网络带宽。MQTT也很有效,与其他消息传递协议相比,客户端通过更短的握手进行连接和身份验证。

2023-10-08 19:27:02 2149 3

原创 逐步升级Dubbo:注意事项与实施建议

通过详细的测试计划、兼容性测试、性能测试、异常情况处理、监控和日志分析,以及逐步升级策略,可以降低升级过程中的风险,并逐步改进系统的安全性、性能和功能。通过升级到新版本的Dubbo,可以解决这些问题,实现更可靠和方便的优雅停机机制,从而减少系统维护和升级所带来的影响。确保已升级的Dubbo服务与其他相关组件和系统之间的集成是正常的,避免出现因升级而引入的新问题。Dubbo的新版本通常会引入新的功能和改进,通过升级可以获得更多强大和灵活的功能。通过合适的监控工具和日志分析工具,及时发现潜在的问题和异常。

2023-05-22 14:01:12 910 13

原创 探索树结构及其应用:从二叉树到B树、B+树和B*树

树是一种非线性的数据结构,由节点和边组成。树中的每个节点可以有零个或多个子节点,而节点之间通过边连接,形成层次结构。二叉树是一种特殊的树结构,每个节点最多有两个子节点:左子节点和右子节点。二叉树的特点包括有序性和递归性。B*树是Oracle数据库中使用的一种索引结构,用于优化大型数据库的查询性能。B*树是一种多维的、自适应的树结构,能够高效地处理多个查询条件。二叉树适用于表示层级关系,B树适用于有序数据的存储和检索,B+树适用于范围查询和排序操作,B*树通过优化内部节点的填充度进一步提高了查询性能。

2023-05-17 14:01:15 886 18

原创 栈和队列:理解与使用

栈是一种后进先出(LIFO)的数据结构,数据项按照后进先出的顺序存储和访问,最后进入栈的元素是第一个被访问和移除的元素。队列是一种先进先出(FIFO)的数据结构,数据项按照先进先出的顺序存储和访问,最先进入队列的元素是第一个被访问和移除的元素。栈常用于需要后进先出顺序的场景,如函数调用、表达式求值、括号匹配等。队列常用于需要先进先出顺序的场景,如任务调度、缓冲区管理、广度优先搜索等。

2023-05-12 13:49:44 1540 32

原创 Python算法:数论问题

数论是研究整数及其性质的数学学科。在数论中,研究的对象主要是整数、质数、素数、约数、同余、模运算等基本概念和性质。数论的问题简单而又充满了智慧,本文将探讨一些基本的数论问题和算法。

2023-05-08 13:56:55 1170 13

原创 C语言算法:数论问题

数论是研究整数及其性质的数学学科。在数论中,研究的对象主要是整数、质数、素数、约数、同余、模运算等基本概念和性质。数论的问题简单而又充满了智慧,本文将探讨一些基本的数论问题和算法。

2023-05-05 13:48:57 839 15

原创 使用Shell脚本提高接口测试效率,简化Dubbo接口测试

Shell 脚本可以帮我们做很多事情,并减少重复工作。上面的脚本稍做修改,就可以用于其它接口的测试。带来方便的同时,也会让你更喜欢测试。

2023-05-04 21:13:43 896 6

原创 使用单元测试提高代码质量与可维护性

测试类放在 src/test 目录下,该目录与 main 目录同级。默认情况下,测试类所在的包,与它所对应的被测试类的包名称相同,类名称为被它所测试的类名称+Text。//测试代码单元测试是开发高质量、可维护和可靠代码的重要手段。开发人员应该了解测试框架的基本概念和用法,并编写可重复、覆盖所有代码路径和测试边界条件的测试。通过这些方法,可以确保代码在开发和维护过程中的质量和可靠性。

2023-04-28 19:25:12 1507 13

原创 动态行转列:处理不确定数量的行转列操作

行转列操作是一种常见的数据转换技术,它可以将原始的行数据转换为列数据,从而更方便地进行分析和可视化。然而,传统的行转列方式只能处理固定数量的行转列操作,无法处理不确定数量的行转列操作。为了解决这个问题,我们可以使用动态行转列技术。动态行转列可以处理不确定数量的行转列操作,因为它使用动态 SQL 语句生成动态的列名。动态行转列具有高度的灵活性和扩展性,可以适应不同的数据结构和应用场景。在本文中,我们将介绍如何使用动态 SQL 实现动态行转列,并提供一个具体的案例演示。

2023-04-24 18:26:31 1570 4

原创 设计模式:使用观察者实现配置修改准实时生效

在观察者模式中,有两个核心角色:主题和观察者。主题是被观察的对象,观察者是观察主题的对象。当主题状态发生变化时,它会通知所有的观察者,让它们自动更新。这种模式中,主题和观察者是松耦合的,它们之间没有直接的依赖关系。这样,当我们需要增加新的观察者时,只需要实现观察者接口即可,不需要修改主题的代码。

2023-04-23 19:22:42 453 1

原创 桌面添加视疲劳缓解图

程序员的眼睛长时间盯着计算机屏幕,很容易导致眼睛疲劳,且在办公室看不了远处,于是想起了视疲劳缓解图,又叫远眺图。但是不能一直显示在桌面上,那样就看不到自己喜欢的壁纸了,将桌面壁纸设置为幻灯片放映,让远眺图每隔一段时间显示几分钟。因为工作时主要使用外接显示器,笔记本的显示屏经常是空闲的,当发现笔记本桌面出现了远眺图时,就可以抽空看一会儿。至于每隔多久显示多久,我的做法是将没有远眺图的壁纸复制几份,文件名使用数字顺序编号,至于复制几份,就结合幻灯片切换时间来定吧。

2023-04-21 19:35:19 250 1

原创 Shell的字符串比较:使用[]还是[[]]

在shell(如Bash或其他类似Unix的shell)中,可以使用单括号 [] 和双括号 [[]] 进行字符串比较,但它们的行为方式有所不同。单括号用于基本的模式匹配和字符串比较,并且它们在不同的shell之间更具可移植性。双括号用于更高级的模式匹配和字符串比较,并且它们是特定于Bash的,建议在Bash中使用双括号进行字符串比较,因为它们提供了更大的灵活性和更好的边缘情况处理。然而,如果需要编写更具可移植性的Shell脚本,建议使用单括号。

2023-04-20 17:48:58 1464 2

空空如也

空空如也

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

TA关注的人

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