- 博客(958)
- 资源 (1)
- 收藏
- 关注
原创 【Docker】为什么“容器化“技术很重要?从虚拟机到 Docker
容器化技术的出现,就像工业革命中的标准化集装箱,彻底改变了软件的开发、部署和管理方式。它让应用变得更加轻量、可移植、易扩展,加速了云原生时代的到来。
2025-12-31 10:28:01
588
原创 【开发工具】IDEA 免费版发布!终于不用破解了
IDEA Ultimate 终极版和 Community Edition 社区版正式 合二为一,只有一个安装包,不需要纠结选哪个版本了。在统一版 IDEA 中,订阅 Ultimate 可以解锁所有高级专业功能。但即使没有订阅,IDEA 依然能够正常使用,可以 免费用于商业和非商业项目,畅享 Java 和 Kotlin 开发所需的全部功能。
2025-12-31 09:45:29
813
原创 【k8s】Kubernetes Pod重启策略和健康检查
Kubernetes提供两种健康检查:readinessProbe 和 livenessProbe。它们都使用相同类型的探针处理程序(HTTP GET请求,TCP连接和命令执行)。他们对未通过检查的Pod做出的纠错措施有所不同。 livenessProbe将重新启动容器,预期重启后错误不再发生。 readinessProbe会将Pod与流量隔离,直到故障原因消失。
2025-12-30 22:14:37
516
原创 【K8S】Kubernetes(K8S)-ConfigMap 实现应用和配置分离
Kubernetes 是目前最流行的容器编排系统之一,它提供了丰富的功能来支持容器化应用程序的管理和部署。ConfigMap 是 Kubernetes 中重要的资源对象,用于存储不敏感的配置信息并将其注入到 Pod 中。本文将介绍 ConfigMap 的创建方式和使用方法,并讨论其注意事项。
2025-12-30 21:28:38
670
原创 【k8s】Kubernetes 探针(livenessProbe、readinessProbe、startupProbe)
探针:是由 kubelet 对容器执行的定期诊断要执行诊断,则需kubelet 调用由容器实现的 Handler。探针有三种类型的处理程序:- ExecAction:在容器内执行指定命令。如果命令退出时返回码为 0 则认为诊断成功。- CPSocketAction:对指定端口上的容器的 IP 地址进行 TCP 检查。如果端口打开,则诊断被认为是成功的。- HTTPGetAction:对指定的端口和路径上的容器的 IP 地址执行 HTTP Get 请求。如果响应的状态码大于等于200 且小于 400
2025-12-29 20:59:55
825
原创 【k8s】Kubernetes(K8s)YAML 配置文件
Kubernetes(K8s)YAML 配置文件讲解,Kubernetes(K8s)YAML 配置文件编写教程,Kubernetes
2025-12-29 20:19:56
1201
原创 【python】用python实现类AI自动执行终端指令
Python的subprocess模块是实现终端指令自动化的利器。该模块提供多种执行命令的方式:获取返回码、捕获输出、设置超时控制等基础功能,还支持管道操作和交互式程序通信。通过封装通用函数可提高代码复用性,如示例中的run_command()函数支持工作目录、环境变量等参数配置,并处理超时和异常情况。这些功能让开发者能轻松实现命令行自动化,替代人工执行重复性操作。
2025-12-28 14:48:39
415
原创 【java】什么时候用 for,什么时候用 Stream?
前几天写代码的时候,有一个很简单的需求:从一堆用户里找出 VIP 用户,把他们的名字转成大写,然后再打印出来。我下意识写了行 for 循环,但写到一半又犹豫了,现在不是都推荐用 Stream 吗?会不会显得代码太老派?于是我在想到底什么时候该用 for,什么时候该用 Stream?查了一圈资料,发现很多人和我一样纠结。其实答案并不复杂,今天给大家分享一下。
2025-12-25 08:28:25
567
原创 【网络】ipv4和ipv6的区别
IPv4与IPv6的主要区别包括:1)地址长度不同,IPv4为32位(约43亿地址),IPv6为128位(约340亿亿亿地址);2)地址配置方式不同,IPv4支持手动/DHCP配置,IPv6需通过ICMPv6或SLAAC配置;3)IPv6具有内置身份验证和加密功能,IPv4则没有;4)数据包处理差异,IPv6由发送主机完成碎片处理,包头更长(40字节),且要求1280字节的最小数据包大小;5)DNS记录类型不同。IPv6的出现主要解决了IPv4地址枯竭问题,并提供更高效、更安全的网络协议标准。
2025-12-18 17:17:54
420
原创 【表分区】MySQL表分区(partition)创建、查询、删除以及重建分区等
MySQL 支持表分区功能,可以通过分区来提高大型表的性能。分区可以基于不同的策略进行,例如基于范围(RANGE)、列表(LIST)、散列(HASH)或键(KEY)。请注意,分区操作可能会导致大量的 I/O 操作,特别是在大型表上。因此,在执行这些操作时应该谨慎,并考虑在低峰时段进行。以上示例展示了基本的分区操作。根据实际需求,可能还需要结合其他 SQL 语句来管理分区,例如。查询分区表与查询普通表相似,不需要特别的语法。下面是一些基本的示例,展示如何在 MySQL 中创建、查询、删除以及重建分区。
2024-09-30 20:47:25
1646
原创 【数据库】两个集群数据实现同步方案
要实现实时的数据同步方案,尤其是在两个集群之间,通常需要考虑多种因素,包括数据的一致性、性能影响、网络延迟以及故障恢复能力等
2024-08-29 19:16:07
2315
原创 【数据库】Oracle和Mysql的区别
Oracle 和 MySQL 是两种非常流行的数据库管理系统(DBMS),它们各有特色,在 SQL 语法上也存在一些差异。这些只是 Oracle 和 MySQL 之间的一些基本区别。具体使用时还需要参考各自的产品文档以了解更详细的语法和功能。
2024-08-29 18:33:26
3033
原创 【SpringBoot】SpringBoot应用Yaml 解析冒号(:)字符串踩坑排查记录
另外,还要注意的是,这里按“0x”开头的字符串如果不加引号,则按十六进制整数规则解析;一开始,我以为是Nacos的问题,同事提醒说直接在application.yml文件中这么配置,解析出来的也是 6841,所以可以确定是SpringBoot解析的时候出的问题。于是开始排查SpringBoot项目启动解析yml文件的过程,一步步断点,调试,发现SpringBoot项目是采用snakeyaml解析yml配置文件的。代码中预期获取的是字符串:“114:1”,但是日志打印出来的却是 6841。
2024-06-29 06:08:48
1297
原创 【 技术栈】技术方案到底怎么写?
技术方案应该是相关方共同参与并且需要达成共识,技术方案需要考虑现有的资源成本,现有系统影响,以及合理性多方位来分析,通过技术文档可以让相关方理解整个功能的业务流转逻辑,对于后续工作推进也有一定作用。本文结合作者工作中写技术方案的经验做了总结,存在不足欢迎补充或者指正,欢迎大家在评论区分享下自己如何写技术方案。关注我们一起学习技术吧,坚持相信有输入一定要有输出,希望我们的技术能力越来越强大。
2024-06-08 18:48:26
2472
原创 【数据库】SQL中为什么不要使用1=1
1=1”在SQL语句中可能看起来无害,但实际上它是一种不良的编程习惯,可能会导致性能下降。就像在做饭时不会无缘无故地多加调料一样,我们在编写SQL语句时也应该避免添加无意义的条件。每一行代码都应该有它存在的理由,不要让人和数据库浪费时间在不必要的事情上。
2024-05-24 18:50:36
1260
原创 【Nginx】nginx如何实现透转?
通过精心配置,Nginx不仅能够高效地处理请求,还能在复杂网络架构中忠实传递每一份真实。记住,安全总是多层防御的结果,IP透传虽好,但别忘了结合其它安全措施,共同织就一张牢不可破的防护网。
2024-04-30 08:36:29
1752
原创 【linux】使用less命令查找文件中的关键字
一般我们查看文件内容时,使用基本的cat,tail,more命令就可以了。但如果我们有时候想查询文件中的关键字内容时,这个时候就不得不依靠less命令。在Linux上输入less a.txt(文件名),会看到a.txt文件的内容。这个时候我们想用关键字搜索的话,有两种方式。一种是从上往下搜索另一种是从下往上搜索从下往上搜索内容需要输入G命令,让光标移到文件最后。从上往下搜索时,需要输入"/关键字"命令,从下往上搜索时,输入"G”命令后,还需要输入"?关键字"命令。文件中含有关键字,会高亮显示。
2024-03-18 14:38:47
2095
2
原创 【linux】Linux下vim常用命令:编辑、保存、退出
vim是我们在使用Linux是经常会使用的工具,新手总是忘记使用方法(当然我也是)。在这里记录下常用命令以防止以后再忘记。保存并退出: :wq (英文冒号,保存并退出当前编辑的文件);保存编辑文本: :w (英文冒号,保存当前编辑的文件);强制退出: :q!(英文冒号,强制退出不保存)。退出编辑文件: :q(英文冒号,退出当前编辑的文件);进入编辑模式: i (在当前位置插入,开始编辑);
2024-02-29 22:29:07
1300
1
原创 ps -ef | grep 命令详解
grep 命令是查找(Global Regular Expression。Print),能使用正则表达式搜索文本,然后把匹配的行显示出来;| 符号,是个管道符号,表示ps 和 grep 命令同时执行;a :显示终端上的所有进程,包括其他用户的进程。u :以用户为主的格式来显示程序状况。x :显示所有程序,不以终端机来区分。ps 命令的作用是显示进程信息的;r :只显示正在运行的进程。-e : 显示所有进程。-h : 不显示标题。
2024-01-04 20:56:14
1927
原创 数据库中间件介绍
数据库中间件是一种介于数据库系统和应用程序之间的软件层。它充当了一个抽象层,屏蔽了底层数据库的细节,为应用程序提供了更简化的接口。数据库中间件的主要目标是提供更高的性能、可用性、可扩展性,并简化数据库管理。典型的数据库中间件设计方案有3种:proxy、smart-client、单元化架构方式优点缺点Proxy 模式1.多语言支持2.对业务开发透明1.实现复杂2.Proxy 需要保证高可用3.租户隔离需要考虑Smart-client 模式1.实现简单,易于使用2.天然去中心化。
2023-12-24 19:17:57
2473
原创 【Java】Java8 将List转换为用逗号隔开的字符串的几种方法
【代码】【Java】Java8 将List转换为用逗号隔开的字符串的几种方法。
2023-12-14 08:17:12
2065
1
原创 从理论分析高可用
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,通常是指通过设计减少系统不能提供服务的时间。很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为8.76个小时。为了保证系统的高可用,我们可以从事前、事中和事后三个时间阶段,从技术和业务两个层面来解决问题。对于保证系统的高可用,我们可以通过事前、事中和事后三个时间阶段以及技术和业务两个层面综合进行处理。事前的准备是最多的,因为我们要尽最大努力去保证不出现问题。
2023-12-12 21:22:43
889
原创 【MQ】Rocketmq如何保证消息不丢失
RocketMQ可以理解成一个特殊的存储系统,这个存储系统特殊之处数据是一般只会被使用一次,这种情况下,如何保证这个被消费一次的消息不丢失是非常重要的。本文将分析RocketMQ从哪些方面来保证消息的不丢失。消息系统将不同的系统进行解耦,在提高了系统的高吞吐量和异步性能的同时,也对系统稳定性带来了挑战,消息保证可靠性不丢失就是非常关键的一个稳定性挑战,本文分别从生产者,Broker,消费者端三端来考虑对应方案来处理消息不丢失的手段。
2023-12-11 21:21:09
1093
原创 一次事务失效问题的排查
解决起来也很简单,开一个新的事务就可以了,这个时候testRollback()跟test()两个方法便是两个事务了,当然,如果业务要求testRollback()跟test()两个方法的数据是要同生共死的,那代码就不能这样写了。有一次代码评审,同事有一个问题,如果一个方法有多个事务同步管理器,他们的执行顺序是怎样的,我也是写这个博客,重新看了下代码才找到原因,玄机在这行代码中,有兴趣的朋友可以去看看。事务提交之后,会重置事务状态,这个时候自动提交会变更为true,也就是这个数据库连接其实已经没有事务了。
2023-12-10 21:51:15
2248
原创 【Spring】Spring 微服务中的数据分区和分片
在微服务架构中,高效的数据管理至关重要。当处理大量数据和高流量应用程序时,服务可能会遇到性能瓶颈。这就是数据分区和分片发挥作用的地方,确保数据的最佳分布以提高效率和性能。在本文中,我们将深入研究数据分区和分片的概念,以及如何在基于 Spring 的微服务中实现它们。在数据库和数据管理领域,分区是优化数据检索和存储的主要策略之一。数据分区涉及将数据库或表划分为更小、更易于管理的部分,并将每个部分视为更大数据集的组成部分。数字数据的指数级增长推动了对有效管理这种洪流的策略的需求。
2023-12-07 20:45:18
1013
原创 【Spring Boot 】Spring Boot 常用配置总结
在涉及项目开发时,通常我们会灵活地把一些配置项集中在一起,如果你的项目不是很大的情况下,那么通过配置文件集中不失为一个很好的解决方案。在 Spring Boot 中,我们可以方便地通过读取格式的配置文件,进而注入我们的项目中。app:name: demo...这个自定义的内容,我们又怎么获取呢?
2023-12-06 09:34:08
2267
原创 【Spring Boot】忽视日志吃大亏手把手教你学习Spring Boot日志
不知有多少人和笔者一样,在刚学习编程的时候,对日志并不重视。那时候学习java代码是用System.out.println(),相信屏幕前不少人一开始也是这样。后来即使加入了项目,用上了日志插件,也只是使用,对写日志也并无兴致。不过随着开发年限的上升,你就会发现,开发的工作其实写代码只有一半,而另一半主要是排查问题。写的时候少写一行日志很爽,排查的时候,少这一行日志恐怕就要抓破脑袋了学习完本文,你应当对现在这几个常用框架的有所了解,并能基础应用了。
2023-12-01 22:10:34
811
原创 聊聊接口最大并发处理数
生活在 2023 年的互联网时代下,又是在国内互联网越发内卷的背景下,相信大家面试找工作、网上学习查资料时都了解过互联网系统设计三高指标,那就是高并发、高性能、高可用。本文主要讲高并发、高性能相关。本质上高性能也是为了给高并发铺平道路。而高并发设计中一部分也就是对应了本文主题接口最大并发数。
2023-11-30 23:12:25
1634
原创 【DDD】领域驱动设计总结——如何构造领域模型
了解了如何创建和运用模型之后,我们再来探讨下如何构造一个领域模型。这就需要我们对领域进行分离,了解领域对象的分类及生命周期的管理。
2023-11-30 23:07:18
1229
原创 【Spring Boot】使用 Spring Boot 进行开发时经常会遇到的问题总结
后端开发是任何 Web 应用程序的支柱,负责处理数据、逻辑以及前端和数据库之间的交互。虽然 Spring Boot 简化了构建健壮后端系统的许多方面,但仍然存在开发人员需要警惕的常见问题。在这篇文章中,我将探讨其中的一些陷阱,并提供使用 Spring Boot 的 Java 示例代码来说明后端开发需要从多方面出发,考虑应对不同问题的方法。在这篇文章中,我深入研究了后端工程师面临的其他挑战,提供了使用 Spring Boot 的 Java 实际示例。
2023-11-30 22:56:48
1081
原创 【java】记一次Java应用查询不到最新数据的问题
主备机房数据库做同步,redis可没做同步,那如果备机房之前测的时候把旧数据缓存起来了,之后在主机房管理平台修改了配置,数据库数据是改了,主机房redis是清了,数据库也同步到备机房了,但是备机房redis不会触发清除啊!复盘一下,首先是部署拓扑,做的主备机房异地灾备,主备机房数据库做同步,查看了两边数据是一致的!其实这个问题的关键是,备机房也和主机房一起工作了,导致备机房的redis有了缓存数据,按正常使用方式,备机房只有主机房故障才会启用,不会并且也不建议同时使用,因为可能还会有其他问题。
2023-11-30 22:45:24
739
原创 【Linux】Linux 系统 grep 命令超详细讲解
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。用于过滤/搜索的特定字符。可使用正则表达式能配合多种命令使用,使用上十分灵活。)命令用于根据给定的正则表达式搜索文本,并将匹配的行打印出来。grep 命令是一项非常有用的工具。
2023-11-26 21:50:39
2051
原创 【java】想要限制每次查询的结果集不能超过10000行,该如何实现?
对于一些Saas化软件,当某个租户在执行查询SQL时,如果查询条件出现了BUG,导致去查了所有租户的数据,这种情况是非常严重的,此时就需要在架构层面做限制,禁止一些特殊SQL的执行,另外,为了保护数据库,也可能会限制某些查询语句不要查询太多的数据,那么怎样在平台架构层面对业务层的SQL做拦截和校验呢?本文分享一下我司的做法。我们集团里有的项目用的Mybatis,有的项目用的Spring Data JPA,共同点在于都用的Druid连接池,所以可以在Druid层面做SQL的拦截和校验。
2023-11-22 22:23:29
1236
原创 【JVM】JVM异常不打印堆栈信息 [ -XX:-OmitStackTraceInFastThrow ]
JVM对一些特定的异常类型做了Fast Throw优化,如果检测到在代码里某个位置连续多次抛出同一类型异常的话,C2会决定用FastThrow方式来抛出异常,而异常Trace即详细的异常栈信息会被清空。这种异常抛出速度非常快,因为不需要在堆里分配内存,也不需要构造完整的异常栈信息。生产环境日志突然膨胀到100G+, 为了定位问题,所以截取了部分报错日志,问题是 堆栈信息呢?哪里报的NPE在哪?,省略异常栈信息从而快速抛出异常.
2023-11-21 20:01:01
2090
原创 【Spring boot】RedisTemplate中String、Hash、List设置过期时间
时间类型:TimeUnitTimeUnit . SECONDS : 秒 TimeUnit . MINUTES :分 TimeUnit . HOURS :时 TimeUnit . DAYS :日 TimeUnit . MILLISECONDS :毫秒 TimeUnit . MILLISECONDS :微秒 TimeUnit . NANOSECONDS :纳秒。
2023-11-20 22:30:00
2804
原创 【Redis】RedisTemplate最全的常用方法
RedisTemplate常用方法String类型Hash类型List类型Set类型zSet类型Redis常用的数据类型:String、Hash、List、Set、zSet。
2023-11-19 22:06:19
1708
原创 【Java】ArrayList和LinkedList使用不当,性能差距会如此之大!
在面试的时候,经常会被问到几个问题:ArrayList是基于数组实现,LinkedList是基于链表实现当随机访问List时,ArrayList比LinkedList的效率更高,等等ArrayList和LinkedList在新增、删除元素时,LinkedList的效率要高于 ArrayList,而在遍历的时候,ArrayList的效率要高于LinkedList那这个回答是否准确呢?今天我们就来研究研究!从源码角度解析ArrayList.subList的几个坑。
2023-11-18 21:13:26
586
原创 【JAVA】去掉 if...else 的七种绝佳之法...
我相信小伙伴一定看过多篇怎么去掉 if…else 的文章,也知道大家都很有心得,知道多种方法来去掉 if…else ,比如 Option,策略模式等等,但我相信这篇文章绝对是最全,最完备怎么去掉 if…else 的文章,里面有些方法我相信有小伙伴肯定不知道,我也不卖关子,直接进入主题,如何干掉 if…else。
2023-11-13 22:55:20
3119
原创 【架构】后端项目经典分层架构介绍
开发后端项目时,我们最常见的一种架构模式就是分层架构。所谓的分层架构,就是把系统自上而下分为多个不同的层,每一层都有特定的功能和职责,且只和自己的直接上层与直接下层 “打交道”。分层架构的优点是:每一层都有明确定义的职责,易于理解和维护;而且各层可以独立扩展,以适应不同的需求。所以分层架构也是最适合新手入门学习、并且实际开发中应用最多的架构。
2023-11-10 22:29:15
3904
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅