- 博客(103)
- 资源 (3)
- 问答 (2)
- 收藏
- 关注
原创 【开发细节】SpringBoot项目将接口从HTTP换为HTTPS
把 Spring Boot 项目的接口放在 HTTPS 上,需要进行的步骤。
2023-06-20 15:12:31 5618
原创 【开发细节】SpringBoot配置文件的spring.profiles下的active和include属性的区别和作用
SpringBoot配置文件的spring.profiles下的active和include属性的区别和作用
2023-06-15 16:47:05 3678
原创 【Java基础】I/O流 —— Java中的流都需要关闭吗?
在Java中,指向内存的流和指向外部资源的流都可以通过类库中的IO相关类进行实现。那么所有的流都需要关闭吗?
2023-06-05 16:17:37 8882 5
原创 【Java设计模式】—— 享元模式概述和示例
围棋和五子棋中的黑白棋子,图像中的坐标点或颜色,局域网中的路由器、交换机和集线器,教室里的桌子和凳子等。这些对象有很多相似的地方,如果能把它们相同的部分提取出来共享,则能节省大量的系统资源,这就是享元模式的产生背景。
2023-06-04 15:47:26 1886 1
原创 锁的故事 —— Java中递归锁的基本概念、使用场景和实现案例
递归锁是一种特殊的互斥锁,允许同一线程多次获取同一个锁(递归锁则允许线程对同一资源进行重复加锁),从而避免死锁问题。在Java中使用递归锁的话,可以使用ReentrantLock类来实现。该类具有可重入的特性,即同一个线程可以重复获取同一个锁,而不会导致死锁。因此,必须要注意,是否使用可重入锁来实现递归锁,需要考虑锁的设计实现是否支持递归锁。通常情况下,实现递归锁需要专门设计实现,不能通过简单地使用可重入锁来实现。
2023-06-02 16:34:41 975
原创 Java设计模式 - 学习方法
设计模式软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。
2023-05-31 15:22:26 1103 3
原创 【计算机网络】UDP协议概述
UDP协议(User Datagram Protocol,用户数据报协议):面向无连接的协议,不保证可靠性,但是具有较低的延迟和更快的传输速度,常用于实时音视频传输、广播和多播等场景。传输层的主要功能是在网络中的两个应用程序之间提供端到端的通信服务,包括数据传输的可靠性和流量控制等,以确保应用程序之间的数据传输是稳定和有效的。在UDP中,广播和组播都是用于将数据同时传输给多个接收方的方式。:UDP协议的头部非常简单,只有8个字节,相较于TCP协议,UDP协议的数据头较小,需要的传输数据大小更小。
2023-05-23 14:30:58 2885 2
原创 HTTP接口调用和RESTful调用的区别
HTTP接口调用是一种基于HTTP协议的远程调用方式,可以通过URL进行调用,适用于不同编程语言之间的调用。而RESTful调用是一种基于REST架构风格的远程调用方式,是HTTP接口调用的一种特殊实现,只是HTTP接口调用不一定要遵循RESTful的设计原则。RESTful是HTTP接口调用的一种特殊实现,遵循REST架构风格的规范,能够提供更加标准化、统一化、可读性和易用性的API设计。RESTful调用相对于HTTP接口调用来说,具有更加清晰明了、易于理解和维护的API设计,扩展性和灵活性也更强。
2023-05-22 15:43:20 12495
原创 Java的RMI(远程方法调用)机制实现示例
Java的远程方法调用(Remote Method Invocation,简称RMI)是一种用于实现分布式应用系统的技术,通过RMI可以使得客户端程序能够调用远程服务器中的Java对象方法,就如同在本地调用Java对象一样简单和自然。具体实现过程如下:定义远程接口,包含需要远程调用的方法,接口必须要继承Remote接口。实现远程接口,编写实现了远程接口的Java类,这个类的对象将作为服务端提供远程调用的Java对象。
2023-05-22 10:41:32 1131
原创 【探讨】同样是微服务解决方案——Spring Cloud、Service Mesh的区别和优劣到底在哪?
Service Mesh可以提供更强大的控制平面和更弱的耦合性。我们知道,微服务应用中涉及到大量的服务调用和数据传输,如果没有足够的控制和监控,会导致严重的性能瓶颈、安全问题,或者无法及时发现和解决故障。Service Mesh为此提供了一系列强大的解决方案,包括路由管理模块、流量控制、负载均衡、故障恢复等,能够更好的提高微服务中的通信性能和稳定性,减轻了管理员的工作负担。同时,Istio为微服务提供了全面的监控和安全管理工具,详细记录微服务之间的调用关系,并能够监控应用程序的性能、因果关系和异常状态。
2023-05-19 17:32:51 1315
原创 【Java设计模式】策略模式概述
在客户端的代码中,我们只需要针对接口或抽象类编程,而不用关心具体的算法实现,从而实现了算法的可替换性和可扩展性。通过将算法的具体实现细节与客户端的代码分离开来,策略模式可以使得客户端的代码更加简洁、可读性更强,同时也方便后续的维护和扩展。它基于面向对象的设计思想,利用继承与多态的特性,将不同的算法或操作封装成独立的类,使得它们可以相互替换而不影响客户端的代码。需要注意的是,在实际应用中,我们可以进一步使用工厂模式或依赖注入等技术,将策略实例的创建过程抽象出来,更好地实现可扩展性和可维护性。
2023-05-19 16:32:21 202
原创 【数据结构】KMP算法概述
KMP算法,全称为Knuth-Morris-Pratt算法,是一种用于字符串匹配的算法。它的核心思想是利用已知信息来避免无用的比较操作,从而提高算法效率。KMP算法的时间复杂度为O(n + m),其中n为模式串的长度,m为文本串的长度。本文将介绍基础的KMP算法和它的变种。
2023-05-19 16:28:22 1817
原创 【Java】消息队列——ZeroMQ(ZMQ、0MQ)概述和使用演示
ZeroMQ是一个开源的通信库,它通过sockets API来提供一个简单的消息传递模式。ZeroMQ内部实现了一种高效的网络消息传递机制,可以在多线程或多进程的环境中高效地进行消息传递,同时具有低延迟和高吞吐量的特点。高性能:ZeroMQ可以通过更少的数据传输实现更多的并发请求和响应,减少了网络负载,并提高了网络传输的效率。简单易用:ZeroMQ的API接口非常简单,易于使用和部署。跨平台:ZeroMQ可用于Windows、Linux、Mac OS X等多种操作系统和编程环境。
2023-05-19 16:11:43 5458 1
原创 【Java基础Api】把时间字符串<dd MMM yyyy HH:mm:ss.SSS>格式转换为<yyyy-MM-dd HH:mm:ss.SSS>格式
【代码】【Java基础Api】把时间字符串<dd MMM yyyy HH:mm:ss.SSS>格式转换为<yyyy-MM-dd HH:mm:ss.SSS>格式。
2023-05-19 16:01:01 393
原创 MySQL中使用批量插入,但需要校验每条数据是否重复且是否已经存在数据库中
MySQL中使用批量插入,但需要校验每条数据是否重复且是否已经存在数据库中
2023-04-26 16:05:22 1492
原创 《周易》诗 赏析 翻译 译文
在阅读周易相关作品的时候,发现网上搜索不到具体的《周易》诗的译文和赏析,虽然大部分诗句已经存在于《易经》六十四卦中,但是没有一个汇总,没有度过《易经》的同学,也很难意识到本诗需要逐句去搜索,才能找到翻译,这次我统一汇总加上个人愚见,得出如下译文和总结:(已经标明出处)——出自易经第三十挂,离卦。君子即使处于卑微的地位,也能以谦虚的态度自我约束。——出自易经第十五卦,地山谦卦,卦名为谦。——出自易经第二十六卦,大畜卦。——出易经第六十三,既济卦。——出自易经第一卦,乾卦。——第十一卦,泰卦。
2023-04-06 09:41:05 618
原创 关于SpringBoot项目的jar包使用命令执行无法读取到外部logback配置文件的问题解决
关于SpringBoot项目的jar包使用命令执行无法读取到logback配置文件的问题解决
2023-03-28 15:57:05 3430
原创 maven打包缺少依赖异常eu.neilalexander:jnacl:jar:1.0.0 was not found in...解决
eu.neilalexander:jnacl:jar:1.0.0 was not found in
2022-12-27 21:03:51 1350 1
原创 SpringBoot整合RocketMQ项目启动报错...RocketMQTemplate‘ that could not be found.
踩坑记录。
2022-04-16 21:19:25 10889 2
原创 SpringBoot项目启动异常ClassNotFoundException: org.apache.rocketmq.client.consumer.DefaultLitePullConsumer
SpringBoot项目整合RocketMQ启动异常ClassNotFoundException: org.apache.rocketmq.client.consumer.DefaultLitePullConsumer解决方式如下1、检查你是否同时引入了以下两个依赖<dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter
2022-02-15 22:53:38 2581
原创 为什么Java中的实体类对象需要实现Serializable接口?
如果你的项目中有如下场景的任意一个场景,都需要实现Serializable:使用ObjectOutputStream序列化对象为二进制。使用RPC框架(如Dubbo、Thrift等)进行数据传输。直接使用RedisTemplate进行操作。原因是以上操作均会把对象转换为一个二进制文件。...
2022-02-09 14:26:07 824
原创 activiti7部署报错[Validation set: ‘activiti-executable-process‘ | Problem: ‘activiti-process-definition-
一般认为是你在bpmn文件中点击Task Listeners时卡住了点了多次导致。
2021-10-12 20:34:29 797
原创 idea安装插件actiBPM后右键xml文件没有Diagrams
1、idea社区版不支持Diagrams功能2、UML插件被关闭,开启即可,在idea错误日志可以看见,在日志中点击Enable UML。
2021-10-11 09:06:16 949
原创 SSM整合Caused by: org.xml.sax.SAXParseException; lineNumber: 1; 前言中不允许有内容
1、检查所有xml文件是否有UTF-8 BOM格式的,若有改为UTF-8格式在Idea中此方法可以移除UTF-8 BOM格式的文件为UTF-8格式2、向上检查,看是不是applictionContext.xml中的某个扫描路径未写全。比如我就是忘记写在SqlSessionFactoryBean的注入中忘记写匹配后缀了<property name="mapperLocations" value="classpath*:/com/xxx/crud/mapper"/>应该为<
2021-09-10 13:28:21 506
原创 StringBuffer、StringBuilder、ArrayList、Vertor的扩容性操作不同点
StringBuffer和StringBuilder扩容后的长度为原长度 * 2 + 2ArrayList扩容后长度为原长度*1.5Vertor扩容后长度为原长度 * 2
2021-08-25 21:19:42 87
如何理解里氏替换原则中的“方法的前置条件(即方法的输入参数)要比父类的方法更宽松”一项?
2022-04-21
Java实际开发中,重写toString方法是否违背了里氏替换原则?
2022-04-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人