自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(158)
  • 问答 (1)
  • 收藏
  • 关注

原创 线上运行的项目突然变得很卡如何排查?

线上运行的项目突然变得很卡如何排查?​ 我们可能在项目部署后遇到一些问题,某一块模块功能或者全部的模块功能在某一时间段特别卡,我们应该如那些方面去排查呢?接下来我们一起去探究一下。​​ 1、如果所有的模块都卡:​ 极有可能是网络出问题,cpu被拉满了。​ 2、如果是单一个模块的变得卡,其他模块都正常:​ 变卡的问题可能性点:文件句柄,IO流,SOCKET流,代码中sql不规范,数据库连接资源,数据库连接问题导致锁无法释放,代码中sleep过长,线程池使用不规范等等。​

2021-07-24 18:23:24 19069 79

原创 使用Mybatis-plus时,获取的LocalDateTime类型字段为空时报错:Error attempting to get column ‘xxx_time‘ from result set.

在3.0.7版本中,类型处理器中获取字段时对LocalDateTime类型的返回字段进行的null值处理。

2024-03-15 17:44:53 404 1

原创 java.lang.AbstractMethodError: ch.qos.logback.classic.pattern.EnsureExceptionHandling.process(Lch/qo

【代码】java.lang.AbstractMethodError: ch.qos.logback.classic.pattern.EnsureExceptionHandling.process(Lch/qo。

2023-09-07 10:29:30 2608

原创 Communications link failure The last packet successfully received from the server was 20 millisecon

相关url链接加入一些参数解决,如下所示。

2023-07-21 10:37:38 2608

原创 Multimaps【概述、适用场景、java demo】

Multimaps是 Google Guava 提供的一个工具类,用于处理多值映射的数据结构。它提供了一种方便的方式来创建和操作多值映射,其中每个键都可以关联一个或多个值。Multimaps。

2023-06-21 15:21:56 3452

原创 模版方法设计模式(Template Method Design Pattern)[论点:概念、组成角色、相关图示、示例代码、适用场景]

模板方法设计模式(Template Method Design Pattern)是一种行为型设计模式,它定义了一个算法的步骤骨架,将这些步骤的具体实现延迟到子类中。模板方法模式可以使子类在不改变算法结构的情况下,重新定义算法中的某些步骤。

2023-04-30 18:24:20 4888 20

原创 观察者设计模式(Observer Design Pattern)[论点:概念、组成角色、相关图示、示例代码、框架中的运用、适用场景]

观察者设计模式(Observer Design Pattern)是一种行为型设计模式,它定义了一种对象间的一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,当主题对象状态发生改变时,通知所有观察者对象,使它们能够自动更新。方法中,我们创建了一个具体主题和两个具体观察者,将观察者添加到主题中,然后改变主题的状态并观察输出结果。方法中,它会遍历所有注册的监听器,并将事件分发给匹配的监听器。,该方法会遍历注册的监听器,并将事件分发给匹配的监听器。接口,因此在Spring中,事件发布主要由。

2023-04-24 17:08:11 1191 87

原创 使用状态机实现幂等性

对于每个状态和操作,我们定义了一个状态转换接口的实现。在执行操作时,我们根据订单的当前状态和请求的操作来查找相应的状态转换。当收到一个请求时,根据当前状态和请求类型来判断是否允许执行操作,如果允许则执行操作并更新状态,否则拒绝操作。例如,对于一个删除记录的操作,如果删除成功,无论执行多少次,记录都会保持被删除的状态。类似地,对于一个更新操作,如果更新成功,无论执行多少次,更新后的状态都保持不变。幂等(Idempotency)是指对于一个系统,一个具有幂等性质的操作,无论执行多少次,其结果始终保持一致。

2023-04-23 17:42:27 1023 14

原创 备忘录设计模式(Memento Pattern)[论点:概念、组成角色、示例代码、框架中的运用、适用场景]

每次执行操作时,我们都将当前余额保存到一个BankAccountMemento(Memento)对象中,并将其添加到BankAccountCaretaker对象的列表中。当需要执行撤销操作时,我们可以通过BankAccountCaretaker对象获取相应的BankAccountMemento对象,并将BankAccount的余额恢复到先前的状态。备忘录模式(Memento Pattern)是一种行为型设计模式,主要用于保存对象的内部状态,以便在需要时恢复到先前的状态。组件,并添加撤销和重做按钮。

2023-04-23 16:20:20 698 2

原创 中介者设计模式(Mediator Design Pattern)[论点:概念、组成角色、相关图示、示例代码、适用场景]

中介者设计模式是一种行为型设计模式,它通过引入一个中介对象来封装一组对象之间的交互,使得对象之间不需要显式地相互引用,从而降低它们之间的耦合。通过将对象间的通信封装到中介者对象中,可以更容易地对这些对象的交互进行维护和修改。

2023-04-21 17:56:07 674 9

原创 迭代器设计模式(Iterator Design Pattern)[论点:概念、组成角色、相关图示、示例代码、框架中的运用、适用场景]

迭代器设计模式(Iterator Design Pattern)是一种行为型设计模式,它提供了一种方法来顺序访问一个聚合对象(如集合)的元素,而不需要暴露该对象的底层表示。迭代器模式可以帮助我们在不关心底层数据结构的情况下,遍历一个集合。

2023-04-19 16:03:35 515 16

原创 命令设计模式(Command Pattern)[论点:概念、组成角色、相关图示、示例代码、框架中的运用、适用场景]

(Command Pattern)是一种行为设计模式,它将请求的操作封装为一个对象,从而实现请求者和执行者之间的解耦。这样,请求者只需要知道如何发送请求,而无需关心请求的具体执行过程。在Dubbo框架中,命令模式被用于处理网络通信中的请求和响应。这是Dubbo通信层中的一个关键接口,它代表了一个通信通道。对象,并调用相应的方法进行处理。例如,当分发器收到一个请求时,它会调用。接口,它负责分发请求和响应。2、当通道收到一个请求或响应时,它会将其封装为。类包含请求的数据以及请求的ID,而。

2023-04-18 14:04:04 835 27

原创 策略设计模式(Strategy Pattern)[论点:概念、组成角色、相关图示、示例代码、适用场景]

(Strategy Pattern)是一种行为设计模式,它定义了一系列的算法,并将每一个算法封装起来,使它们可以相互替换。策略模式使得算法可以独立于使用它的客户端变化。这种模式的主要目的是将算法的定义与使用分离,以提高代码的灵活性和可重用性。

2023-04-14 18:00:25 485 14

原创 带你玩转状态机(论点:概念、相关图示、示例代码、适用场景、相关文档)

状态机(State Machine)是一种用于描述系统在不同状态下的行为及状态之间转换的数学模型。状态(State)、事件(Event)和转换。

2023-04-14 15:32:34 2218 27

原创 状态设计模式(State Pattern)[论点:概念、相关角色、图示、示例代码、框架中的运用、适用场景]

一个常见的使用状态设计模式的例子是Java线程的状态管理。Java的Thread类使用了状态模式来表示线程的不同状态,例如:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED。这些状态之间的转换由Thread类和相关的方法控制。(State Pattern)是一种行为型设计模式,用于解决对象在不同状态下的行为问题。它允许一个对象在其内部状态改变时改变它的行为。

2023-04-13 17:07:09 963 32

原创 责任链设计模式(Chain of Responsibility Pattern)[论点:概念、组成角色、图示、相关代码、框架中的运用、适用场景]

责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,其主要目的是将请求的发送者和接收者解耦。当一个请求到来时,这些处理器按照顺序处理请求,直到其中一个处理器成功处理请求为止。:在Spring MVC框架中,当请求经过过滤器链处理并到达Servlet之后,请求会被传递给DispatcherServlet。DispatcherServlet的主要职责是将请求分发给适当的处理器(如Controller方法)。

2023-04-12 16:55:36 708 22

原创 生成器设计模式(Builder Design Pattern)[论点:概念、图示、示例、框架中的应用、场景]

生成器模式通过将对象的构建过程与其表示分离,使得相同的构建过程可以创建不同的表示。例如,假设有一个Report类,它需要根据不同的数据源(如CSV文件、数据库等)以及不同的格式(如HTML、PDF等)生成报告。在这种情况下,可以创建多个生成器,每个生成器负责从特定的数据源中读取数据并生成特定格式的报告。在这种情况下,我们可以使用一个汽车生成者,并通过提供不同的颜色、轮胎类型和发动机类型来创建具有不同属性的汽车。当一个复杂对象的变化仅仅是属性值的变化,而不涉及到整体结构的变化时,只需要一个生成者。

2023-04-11 16:03:37 2129 43

原创 如何用栈对二叉树进行前序、中序、后序遍历

如何用栈对二叉树进行前序、中序、后序遍历。

2023-04-06 15:20:10 706 4

原创 万字长文带你走进MySql优化(系统层面优化、软件层面优化、SQL层面优化)

缺点是可能会导致数据不一致,例如,当一个表的数据需要更新时,可能需要在多个小型数据库中进行更新操作。例如,可以将一个电商系统中的用户表、订单表、商品表等拆分成多个小型数据库,每个小型数据库中只包含一部分相关的表。垂直分库的优点是易于管理,每个小型数据库中包含的表都具有相似的特点。缺点是可能会导致数据不一致,例如,当一个表的数据需要更新时,可能需要在多个小型数据库中进行更新操作。如果表中存在自增主键,并且插入的数据量很大,那么每次插入数据时,MySQL 都需要重新计算自增主键的值,这可能会导致插入数据变慢。

2023-03-09 18:27:22 2967 77

原创 大数据flink框架入门分享(起源与发展、实时与离线计算、场景、处理流程、相关概念、特性普及、入门Demo)

​ 起源于一个叫作 Stratosphere 的项目,它是由 3 所地处柏林的大学和欧洲其他一些大学在 2010~2014 年共同进行的研究项目,由柏林理工大学的教授沃克尔·马尔科(Volker Markl)领衔开发。2014 年 4 月,Stratosphere 的代码被复制并捐赠给了 Apache 软件基金会, 就是在此基础上被重新设计出来的。​ 在德语中,一词表示“快速、灵巧”。项目的 logo 是一只彩色的松鼠,当然了,这不仅是因为 Apache 大数据项目对动物

2023-03-06 10:48:43 2597 52

原创 为什么说新一代流处理器Flink是第三代流处理器(论点:发展历史、区别、适用场景)

Flink 被认为是第三代流处理器,这是因为 Flink 在设计时参考了前两代流处理器的经验教训并引入了一些新的技术和思想,从而使得 Flink 具有更高的性能和更广泛的应用场景。下面我带大家了解一下流处理器从第一代到第三代的发展历史。对于有状态的流处理,当数据越来越多时,我们必须用分布式的集群架构来获取更大的吞吐量。但是分布式架构会带来另一个问题:怎样保证数据处理的顺序是正确的呢?带着疑问往下看。

2023-03-02 17:49:30 3389 78

原创 你知道服务器CPU密集型和IO密集型吗?(论点:概念、区别、场景、辨别)

什么是CPU密集型和IO密集型服务器? 服务器是指需要大量的来完成任务的服务器。这些服务器通常会运行,这些应用程序需要来完成任务,因此较高。 服务器是指需要来完成任务的服务器。这些服务器通常会、、等应用程序。这些应用程序需要大量的操作,而不需要太多的。 如何区分CPU密集型和IO密集型服务器? 以下是一些常见的指标,可用于区分CPU密集型和IO密集型服务器: 服务器通常具有,而服务器通常具有。如果服务器的非常高(例如,超过80%),则它

2023-02-20 14:24:49 3910 98

原创 maven解决包冲突简单方式(插件maven helper | maven指令)

在Java开发中,常常会遇到不同jar包之间存在冲突的情况,这可能会导致编译错误、运行时异常等问题。可用插件maven helper 或者 maven指令(mvn dependency:tree)进行排查

2023-02-15 17:25:40 2856 8

原创 作为研发如何使用Github Api?

🌟个人主页:🚵‍♀️个人介绍:每天进步一点点,生活变得好一点点。📌作为一位开发,不管是非工作的还是工作中的人士,或多或少都有和Github接触。下面我就讲一下如何调用Github的api,其中有一些功能还是蛮好的,对于大部分人来说算是福利了。

2023-02-08 11:35:05 6049 66

原创 一文了解编程领域的模版

🍊在编程领域,模板是一种代码片段,它可以被重复使用,并允许您在保持代码的基本结构不变的情况下,根据需要调整其中的内容。模板通常在构建大型程序或开发一类相关程序时非常有用,以减少代码冗余并提高代码可读性。🍊模板可以通过多种方式实现,具体取决于使用的编程语言。在 C++ 中,可以使用模板来实现泛型编程。在 Java 中,可以使用泛型来实现类似模板的功能。此外,许多编程语言都提供了模板引擎,可以生成静态 HTML 或动态网页。

2023-02-03 15:11:17 1843 71

原创 一文了解websocket和socket(论点:概念、流程、区别)

🌞websocket和socket,字面意思的差别就是一个web,那么他俩之间到底有什么关系呢,以及区别是啥,接下来带大家详细了解一下。

2023-02-02 15:52:53 4185 12

原创 一文了解HTTP、HTTPS、TCP、UDP、Websocket(论点:概念、通信流程、异同点、应用领域)

🌝大家其实都有听过HTTP、HTTPS、TCP、UDP、Websocket,有部分小伙伴只知道概念或者对其有一些模糊的认知,下面我就带大家了解一下。HTTP、HTTPS、TCP、UDP、Websocket的概念、通信流程、异同之处、应用领域

2023-02-01 15:06:11 19704 96

原创 Springboot2.x+Websocket+js实现实时在线文本协同编辑,并展示协同用户

展示当前用户以及同时编辑文本的人员名称。编写WebSocketConfig和WebSocketHandler配置类,实现对WebSocket的配置。实现页面实时在线文本协同编辑,且显示当前同时编辑文本的用户。同时打开多个页面,当编辑信息时会显示到同时编辑的用户列表。上面实现为简易实现,仅供参考,可能并不适用一些业务场景。当前用户点击保存时推出当前同时编辑的用户列表。//可以选择没人编辑的时候隐藏当前列表。好久没写前端了,写起来有点费劲!//获取当前文本同时编辑的用户。//点击保存后输入框变为只读。

2023-01-31 17:18:44 4444 11

原创 使用Springboot 2.7+Websocket+js实现服务端消息实时推送

在页面中使用JavaScript实现Websocket的前端实现,建立连接,接收并显示消息。在页面关闭时通过JavaScript关闭Websocket连接,以确保连接正常关闭。编写一个WebSocketServer类,实现服务端主动推送消息的逻辑(此处服务端推送客户端消息的逻辑采用定时任务自动推送,模拟服务端主动推送消息给客户端,同时展示客户端发送给客户端的消息以及服务端推送给客户的消息。//防止每次刷新页面产生新的WebSocket连接,在此加入判断。//建立websocket连接。

2023-01-30 16:36:54 1527 3

原创 一文了解WebSocket及Springboot集成WebSocket

🍊WebSocket与HTTP协议不同,它使用了独立的端口,并且在建立连接后,不需要在每次数据传输时重新建立连接。与 HTTP 通信不同的是,WebSocket 通信是基于TCP的,所以它是一个持久连接。如下图所示,发起一个websocket链接之后,请求和响应的参数里会有一些websocket相关的参数,该报文中有一个upgrade首部,它的作用是告诉服务端需要将通信协议切换到websocket。🍊WebSocket协议是一种全双工协议,它允许服务器主动发送信息给客户端,而不是等待客户端的请求。

2023-01-29 14:57:27 4360 21

原创 [前端]每间隔一段时间查询接口获取到百分比,在页面上按照百分比展示进度条,百分比进度后下载文件

文件上传到oss,前端每间隔一段时间查询接口获取后端返回的进度,并在页面上按照百分比展示进度条,当达到百分比进度的时候下载文件。//此处后端返回逻辑需要修改,返回int类型的数值,如后端返回String类型的50%,可能识别不了,%放到前端处理就好了。此篇文章中后端所用到的进度查询,以及进度达到100%返回的文件名,需要对上面参考文章的返回结构进行修改。//当进度到达100下载文件。

2023-01-18 10:33:40 916 9

原创 文件上传oss,并查询上传进度(SpringBoot+Redis+Oss+Swagger3)

实现这个功能的由来是有可能上传的文件较大,并不能在调用上传接口得到文件上传成功或者失败的回应。文件下载时的进度也可以参考上述代码,进度存储也可以使用其他方式,如ConcurrentHashMap、Mysql等,当然前端也可以实现等。启动项目无报错后访问:http://localhost:8080/swagger-ui/index.html#/Swagger UI页面可以让后端开发更变便捷的操作接口,个人感觉像个快捷版的Postman吧。可以看到我们的接口在页面上有显示,可以点击对应的接口进行操作。

2023-01-17 17:55:42 2635 4

原创 研发与环境的那些事儿

环境是开发工作的核心步骤之一,对研发的开发测试是有影响的。研发与环境之间的关系是非常重要的,研发环境的质量直接影响研发人员的工作效率和代码质量。这里的“环境”只是研发环境的一部分,特指开发使用的机器环境,包括开发机器的获取、网络配置、基本工具以及代码的获取和配置。就像低劣的空气质量和食物质量会影响我们的身体健康一样,不理想的研发环境会严重降低研发效能。下述图示中是部分单体环境的测试到上线的流程,在下面图是中我们可以看到,测试环境分为多套,如测试基准环境,测试多环境。

2023-01-13 17:00:42 1076 3

原创 Flink多流转换(Flink Stream Unoin、Flink Stream Connect、Flink Stream Window Join)

unionconnect、 和join是可用于组合多个流的不同操作。union:该union操作用于将多个流合并为一个流。它只是将一个流的元素附加到另一个流。输入流中的元素不会以任何方式组合或修改。union当您有多个具有相同类型元素的流并且您希望将它们作为一个流一起处理时,这很有用。connect: 该connect操作用于组合两个流并使用自定义允许您定义如何根据类型处理来自两个输入流的元素。connect当您希望根据元素的类型对来自不同输入流的元素执行不同的操作时,该操作很有用。

2023-01-11 18:35:37 626 20

原创 Flink应用简单案例-统计TopN

🍊诉求:网站中一个非常经典的例子,就是实时统计一段时间内的热门 url。例如,需要统计最近10 秒钟内最热门的两个 url 链接,并且每 5 秒钟更新一次。我们知道,这可以用一个滑动窗口来实现,而“热门度”一般可以直接用访问量来表示。于是就需要开滑动窗口收集 url 的访问数据,按照不同的 url 进行统计,而后汇总排序并最终输出前两名。这其实就是著名的“Top N”问题。🍊很显然,简单的增量聚合可以得到 url 链接的访问量,但是后续的排序输出 Top N 就很难实现了。

2023-01-06 19:43:37 423 1

原创 Flink处理函数(ProcessFunction、KeyedProcessFunction、ProcessWindowFunction、 ProcessAllWindowFunction)

DataStream API,这也是 Flink 编程的核心。而我们知道,为了让代码有更强大的表现力和易用性,Flink 本身提供了多层 API,DataStream API 只是中间的一环,如下图所示: 在更底层,我们可以不定义任何具体的算子(比如 map,filter,或者 window),而只是提炼出一个统一的“处理”(process)操作——它是所有转换算子的一个概括性的表达,可以自定义处理逻辑,所以这一层接口就被叫作“处理函数”(process function)。在处理函数中,我们

2023-01-06 15:07:21 1615

原创 Flink数据流类型之间的转换(WindowedStream、DataStream、KeyedStream、AllWindowStream之间的转换)

🍊WindowedStream是一种特殊的流,其中数据已按时间或数据元素的键进行分组,并且每个分组的数据都在窗口中按时间划分。这意味着,如果你有一个WindowedStream,你可以对每个窗口执行转换,例如聚合或统计。🍊KeyedStream是一种特殊的DataStream,其中数据已按照一个键(通常是一个数值或字符串)进行分组。🍊DataStream是Flink中最基本的流类型,表示一个无界的、有序的数据流。它可以是任何类型的数据,例如数值、字符串或复杂的对象。

2023-01-05 19:54:42 1408

原创 Flink对迟到数据的处理

🍊水位线WaterMarker:Flink 使用水位线来跟踪流中的时间进度。水位线是由源发出的周期性时间戳,用于确定一条数据的延迟时间。您可以根据水位线指定数据的最大延迟。例如,您可以指定延迟超过 10 个水位线的数据应该被删除。🍊窗口延迟数据:Flink 允许为预计在窗口内无序到达的数据指定最大延迟(延迟)。allowedLateness可以在定义窗口时使用参数设置此最大延迟。任何在最大延迟时间之后到达的数据都将被丢弃。🍊侧输入流:Flink 还允许您使用侧输入来处理延迟数据。

2023-01-04 14:15:22 1560

原创 Flink窗口的生命周期

之后的方法调用就完全一样了。此外,在这两者之间,还可以基于 WindowedStream 调用.trigger()自定义触发器、调用.evictor()定义移除器、调用.allowedLateness()指定允许延迟时间、调用.sideOutputLateData()将迟到数据写入侧输出流,这些都是可选的 API,一般不需要实现。当我们设置了允许延迟,那么如果水位线超过了窗口结束时间、但还没有到达设定的最大延迟时间,这期间内到达的迟到数据也会触发窗口计算。窗口有自己的生命周期,即从窗口的开始到窗口的结束。

2023-01-03 15:56:19 664 1

原创 Go语言web极速入门-(Gin+Mysql实现后端接口)

gin 是一个轻量级的 Go 语言 Web 框架,旨在提供一种简单、快速的方式来构建 Web 应用程序。它提供了一组简单的 API,可以让你轻松地处理 HTTP 请求、路由、模板渲染、中间件等功能。**Gin 的特点有:- 简单易用:Gin 提供了一组简单的 API,使用起来非常方便。- 高性能:Gin 在性能方面表现优秀,常常可以达到接近原生性能的水平。- 支持中间件:Gin 支持使用中间件来扩展框架的功能,可以方便地实现认证、日志、跨域等功能。- 支持多种模板引擎

2022-12-23 14:08:29 1788 1

空空如也

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

TA关注的人

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