- 博客(106)
- 收藏
- 关注
原创 Centos8升级到Centos 8 stream
CentOS 8 stream 是 CentOS 8 的下一代版本,它采用的是“滚动发布”的方式,即在 CentOS 8.4 发布后,每个组件的更新都将立即推送给用户,而不是等到下一个大版本发布。为了升级到 CentOS 8 stream,需要更改系统的更新源。在升级 CentOS 8 到 CentOS 8 stream 之前,应该先更新系统。此命令将 CentOS 8 的 Linux 库切换到 CentOS 8 stream 的库。此命令将升级系统组件到 CentOS 8 stream 的版本。
2025-07-10 09:50:20
484
原创 Mybatis-plus的分页总数为0,分页功能失效,以及多租户插件的使用。
你可能没有正确地引入这个插件,或者在应用中没有正确地使用它。再说说多租户插件的使用。在大型系统中,多个组织或团单位可能需要使用到相同的系统,这就需要实现多租户功能,使得各个租户之间的数据隔离,各自只能查看和操作自己的数据。使用 Mybatis-plus 进行分页查询时,发现获得的总数为0,这可能是由于你没有正确使用 Mybatis-plus 的分页插件所导致。在 Mybatis-plus 中,多租户的实现通常是通过插入一个租户过滤器组件,给所有的 SQL 语句自动添加额外的租户标识字段。
2025-07-09 10:54:17
308
原创 基于Spring Data Redis与RabbitMQ实现字符串缓存和计数功能(数据同步)
对于服务器的流量来说,如果把每一个用户的请求比作是一种特色香料, 那Spring Data Redis 就是我们的“味道存储器”。前者供我们提供出色的数据存储和缓存能力,后者则可以帮助我们在复杂的分布式系统环境中实现可靠的消息传递。您可能已经意识到一个问题,我们的“味道存储器”随着用户的使用会愈来愈“丰富”,也就是我们的内存会袈裟袈裟地装满数据。于是我们需要一个“厨师”,将存储器中过多的“调料”进行处理并用饭进行搭配,这就是我们后面要说的RabbitMQ了。在Spring Boot应用中我们可以利用。
2025-07-09 10:22:09
306
原创 自动化运维 打造高效DevOps流水线
通过构建一个高效的DevOps流水线,我们不仅提高了开发效率,还增强了产品的稳定性和可靠性。随着技术的不断进步,未来DevOps流水线将更加智能化,能够处理更复杂的场景,为企业带来更大的价值。一个优秀的流水线应该是模块化的、可重用的,并且能够快速反馈。在工具的选择上,我们采用了Jenkins作为持续集成服务器,Git作为版本控制系统,Docker容器技术进行环境隔离,以及Ansible进行配置管理和自动化部署。但只要坚持不懈,就能够打造出真正高效且可靠的DevOps流水线,为企业的发展提供坚实的技术支撑。
2025-07-08 10:47:07
382
原创 使用Docker容器化改进Java应用部署
Docker是一个开源的应用容器引擎,它允许开发者打包他们的应用及依赖包到一个可移植的容器中,然后发布到任何支持Docker的平台上。与传统虚拟机相比,Docker的容器不需要包含完整的操作系统,这大大减少了部署的大小和启动时间。Docker作为一种轻量级的容器化技术,为解决这一挑战提供了有效的工具。为了将Java应用容器化,首先需要创建一个Dockerfile。Dockerfile是一个文本文件,包含了所有的命令,用于构建Docker镜像。这条命令会启动一个新的容器实例,将容器的8080端。
2025-07-08 10:45:49
239
原创 Python中的多进程编程技巧
多进程是指操作系统同时运行多个进程,每个进程都有独立的内存空间和系统资源。多进程编程是指利用这些进程来完成任务,从而提高计算机的运行效率。在上面的代码中,使用with语句创建了一个进程池,该进程池包含4个进程。进程池 进程池是指预先创建一组进程,并将它们保存在池中,以便随时使用。本文介绍了Python中的多进程编程技巧,包括进程创建、进程间通信和进程池。进程间通信 进程间通信(IPC)是指不同进程之间进行信息交流的过程。Queue是一个线程安全的队列,可以用来在多个进程之间传输数据。
2025-07-08 10:03:35
317
原创 深入理解PHP中的命名空间和自动加载机制
PHP的命名空间是一种对代码进行逻辑分组的机制,它允许开发者将函数、类和常量封装在不同的命名空间中。例如,你可能在你的项目中使用了一个名为"Database"的类,而另一个库也定义了一个同名的类。最后,命名空间和自动加载的结合使用为现代PHP项目带来了巨大的好处。当尝试使用尚未被加载的类时,PHP会自动查找并加载包含该类的文件。为了解决这一问题,Composer作为一个流行的依赖管理工具,提供了一个强大的自动加载功能。文件,这个文件利用了Composer的自动加载器来注册所有已安装库的自动加载规则。
2025-07-08 10:00:30
259
原创 访问修饰符 public private protected 及默认情况的区别解析
方法没有显式指定访问修饰符,它们具有默认的包级访问权限,只能在同一个包内的类中被访问,其他包中的类无法访问。修饰符是访问权限最宽松的修饰符,表示任何类都可以访问被修饰的类或类成员。类的子类,可以访问这些受保护的成员。同时,在同一个包内的其他类也可以访问。如果在类或成员声明时未显式指定访问修饰符,则默认为包级访问权限。修饰的成员只能在类内部访问,类的外部(包括其子类)无法访问。修饰符允许类的成员在同一包内或继承关系中的子类中访问。类内部访问,其他类无法直接访问这些成员。,因此任何其他包中的类都可以访问它们。
2025-07-07 10:23:00
436
原创 如何把docsify项目部署到基于CentOS系统的Nginx中
如果你使用的是CentOS系统的内置防火墙(firewalld),需要允许HTTP流量通过。接下来,配置Nginx以便正确地为你的docsify项目提供服务。现在,你应该能够通过你指定的域名访问你的docsify项目了。在网页浏览器中,输入你的域名(例如。首先,确保你的服务器运行在CentOS系统上。这将从CentOS官方源安装EPEL仓库并将Nginx软件包安装到你的系统中。现在,需要启动Nginx服务,并设置为在系统启动时自动启动。为了使新的服务器块配置生效,需要重新加载Nginx配置。
2025-07-06 11:47:16
257
原创 Docker环境下的ROS Noetic:Ubuntu 20.04 系统下的解决方案
首先,需要创建一个含有Ubuntu 20.04操作系统的新的Docker镜像。可以从Docker Hub中下载一个Ubuntu镜像,然后根据需要进行配置使用。你现在已经进入了你的Docker容器,并且你的ROS Noetic已经配置完成了。ROS现在是在你的Docker的Ubuntu 20.04操作系统中运行了。一、创建一个新的Docker镜像。二、安装ROS Noetic。
2025-07-06 11:18:14
227
原创 C语言指针深度解析及常见陷阱避免
C语言中的指针是一个强大而复杂的特性,它允许程序员直接操作内存,但也带来了潜在的错误和陷阱。通过深入理解指针的工作原理和常见陷阱,并采取适当的避免方法,程序员可以更安全、更有效地使用指针。掌握指针是成为一名优秀的C语言程序员的关键之一。希望本文的解析和示例能够帮助读者更好地理解和使用C语言中的指针。
2025-07-04 11:03:37
302
原创 C语言中的不完整类型:定义、应用
然而,在C语言的类型系统中,有一种特殊的存在——不完整类型(Incomplete Type),它们为程序员提供了灵活性和便利,同时也伴随着潜在的风险。综上所述,C语言中的不完整类型是一种强大的工具,它允许程序员在编译时仅提供必要的类型信息,从而提高了代码的灵活性和编译效率。换句话说,当编译器遇到一个类型声明,但尚未看到该类型的完整定义时,该类型就被视为不完整类型。未完成的定义:在结构体或联合体的定义被分割到多个文件中时,如果某个文件在引用该类型时还未看到其完整定义,则该类型在该文件中被视为不完整类型。
2025-07-04 10:59:56
346
原创 C语言中的动态内存分配函数(mallocfree)详解
动态内存分配是C语言中处理内存的强大工具,malloc和free分别用于内存的分配和释放。通过正确使用这些函数,程序员可以灵活高效地管理内存,避免内存泄漏和错误的内存访问。掌握动态内存管理的技巧是每个C语言程序员必须具备的基本能力。
2025-07-04 10:56:03
261
原创 Java“MissingResourceException”错误解决
【代码】Java“MissingResourceException”错误解决。
2025-07-04 10:49:34
332
原创 在Docker上部署Ollama+AnythingLLM完成本地LLM Agent部署
本文将详细介绍如何在Docker上部署Ollama和AnythingLLM,从而实现本地LLM Agent的功能。将会涵盖环境准备、Docker安装、Ollama和AnythingLLM的配置和运行。
2025-07-03 10:24:54
513
原创 Python中的异步编程 理解并使用Asyncio
简单来说,异步编程是一种程序设计模式,它允许程序在等待某些操作(通常是I/O操作)完成的过程中继续执行其他任务。asyncio是基于协程的概念构建的,协程是一种用户级线程,它允许程序在执行过程中暂停和恢复,而不需要操作系统的上下文切换。除了基本的协程支持外,asyncio还提供了更复杂的功能,如事件循环、任务、未来对象等。事件循环是asyncio的核心,它是负责调度和运行所有协程的中心。在Python中使用asyncio,首先需要导入相应的模块,然后定义异步函数。开始,表示这是一个协程函数。
2025-07-01 09:49:55
165
原创 C语言:防止缓冲区溢出
那么,您应该认为如果您的缓冲区足够大,可以处理可能的最长名称,您的程序会安全,对吗?它可以做与 gets()所做的同样的事情,但它接受用来限制读入字符数目的大小参数,因此,提供了一种防止缓冲区溢出的方法。(在以后的专栏文章中,将演示一个基于这种方法的、草草了事的扫描工具,并告诉您有关如何构建它的想法。然而,获得效率的代价是,C 程序员必须十分警觉,并且有极强的安全意识,才能防止他们的程序出现问题,而且即使这些,使代码不出问题也不容易。即使安全的调用有时会留下未终止的字符串,或者会发生微妙的相差一位错误。
2025-06-30 20:04:35
934
原创 C语言常用的一些转换工具函数!
而对应的十进制为 65 整型65,4个字节32bit,即u32 十六进制为 0x41 二进制为 0000 0000 0000 0000 0000 0000 0100 0001。效果:len为数据类型为 u16(short),比如 0x11 0x22,转为u8(usigned char)数组。效果:整型 50 转字符数组 {‘\0’,’\0’,’\0’,’2’}效果:字符数组 {‘\0’,’\0’,’\0’,’2’}转为整型 50。十六进制:0x13 0xAA 0x02转为字符串:”13AAA2”
2025-06-30 19:59:08
288
原创 Python中的列表推导式
本文将详细介绍列表推导式的概念、语法和使用方法,并通过实例展示其在数据处理中的应用。其中,expression是对item进行操作的表达式,iterable是一个可迭代对象(如列表、元组或字符串),condition是一个可选的过滤条件。列表推导式也可以用于对列表中的元素进行映射操作,即将每个元素转换为另一种形式。列表推导式是一种基于现有列表创建新列表的方法。它使用一种简洁的语法,可以在一行代码中实现对列表的过滤、映射和组合等操作。我们可以使用列表推导式对列表进行过滤,即只保留满足特定条件的元素。
2025-06-30 10:42:02
270
原创 linux mv命令实战
mv命令是Linux系统中的一个常用命令,用于移动文件或重命名文件。选项可以在移动文件时进行交互式确认,如果目标路径已经存在同名文件,会提示是否覆盖。选项可以强制移动文件,如果目标路径已经存在同名文件,则覆盖它。
2025-06-27 15:09:39
195
原创 Centos7系统Haproxy安装配置
现在,HAProxy已经成功安装和配置在您的CentOS 7系统上。它将监听您配置的端口,并根据负载均衡策略将请求转发到后端服务器。定义后端服务器和负载均衡方式(这里使用的是轮询算法)。定义前端监听端口和模式,
2025-06-25 16:57:20
209
原创 深入理解 org.springframework.web.context.request.RequestContextHolder
是Spring提供的一个持有器(holder)类,用于存储和获取当前线程的请求相关信息。它通过ThreadLocal机制,将当前请求的上下文信息与线程绑定,从而使得在应用的任何地方都能访问到这些信息。自定义拦截器中可以通过获取请求信息来做日志记录或其他处理。
2025-06-24 10:00:57
254
原创 自动化运维:使用Ansible管理服务器
Ansible是一个开源的自动化平台,它使用YAML语言编写配置文件,并通过SSH协议连接到目标服务器执行任务。Playbooks是用于描述自动化任务的脚本文件,Tasks是具体的操作步骤,而Modules则是预先编写好的可重用代码块。其中,"hosts"字段指定了目标服务器组(在这个例子中为"web_servers"),"become"字段表示需要以root权限运行任务。接下来,我们来看一个实际的例子。Ansible将会根据Playbook中的配置信息连接到目标服务器,并依次执行每个任务。
2025-06-24 09:57:45
196
原创 String StringBuffer StringBuilder 区别详解与对比分析
String:适合处理少量的字符串操作,或需要线程安全的场景。:适合在多线程环境下进行大量的字符串操作。:适合在单线程环境下进行大量的字符串操作,性能最佳。在实际开发中,应根据具体场景选择合适的字符串处理类,以平衡性能和线程安全性的需求。
2025-06-23 09:45:27
537
原创 MySQL PXC集群多个节点同时大量并发update同一行
另外笔者测试了在同一节点同时批量更新的情况,结果与不同节点是完全一样的,这也印证了对于PXC集群的节点使用,是可以采用负载均衡机制连接不同节点的。在node1、node2同时批量执行更新最后一条记录,采用Secure CRT的"Send Commands to All Sessions"操作技巧同时发起操作,同时观察两个节点的日志信息。可见PXC集群应对这种同时对同一行数据的大批量更新,是有固定策略的,部分失败在所难免,可以从应用实现方面解决这个问题,如提前显式锁定、单线程顺序执行、变量标识等。
2025-06-20 09:23:45
348
原创 供应链场景使用ClickHouse最佳实践
ClickHouse是一款由俄罗斯公司Yandex开发的开源列式数据库管理系统,以其高性能的分析查询能力和高压缩比著称。供应链场景中,数据量大且数据类型复杂,需要高效的数据存储和快速的查询性能,ClickHouse在这些方面具有显著优势。
2025-06-19 15:23:16
231
原创 jquery和CSS3圆形倒计时特效
这是一款jquery和CSS3圆形倒计时特效。该特效使用CSS对页面进行布局,生成用于倒计时的圆环,然后通过jquery代码来控制圆环的倒计时进度。
2025-06-17 09:42:56
275
原创 jQuery倒计时插件TimeTo
TimeTo是一款jQuery倒计时插件。该jq倒计时插件可精确到毫秒,默认实现翻页式倒计时效果,非常实用炫酷。
2025-06-17 09:38:25
471
原创 golang使用gopsutil获取系统信息
在python中有个psutil库用于获取系统信息,而go语言也有一个类似的库——gopsutil,功能差不多。
2025-06-17 09:22:58
299
原创 在Ubuntu上利用SANE API实现跨平台扫描功能的指南
sudo adduser USERsaned替换USER为你的用户名,这个命令会赋予你操控扫描术的权力。这些命令就像是食谱上的材料清单,按部就班地把SANE及其附属的调料添入你的系统。XSane会给你一个能够视觉操控的盾牌,使命令行中的文字变成可点击的图标。以HP为例,这条命令会安装HP的驱动工具包,让HP的扫描怪兽乖乖听话。如果一切顺利,上面的命令将列出所有SANE能够察觉到的扫描设备。这两个命令就像侦探一样,帮你找出隐藏在系统中的扫描仪。观察终端的反应,如果你获得了图像文件,那么实验成功。
2025-06-16 09:36:49
469
原创 jQuery 3D透明蓄水池状柱状图插件
这是一款 jQuery 3D透明蓄水池状柱状图插件。该插件基于HTML5 canvas来制作3D立体蓄水池状柱状图。点击柱状图可以动态的改变水柱的高度,并可以自定义水柱的宽度、高度、颜色和初始值等。
2025-06-15 10:13:28
245
原创 jQuery基于窗口的照片查看器插件
photoviewer.js是一款基于窗口的照片查看器jQuery插件。该插件可以对一组图片生成预览,并将图片放置在一个窗口中,该窗口可以自由拖动,缩放,里面的图片可以缩放、旋转等。
2025-06-15 10:05:14
243
原创 普通Dom转换为可拖拽、最大化、最小化窗口js插件
这是一款可以将任何HTML元素转换为可平移、拖拽、最大化、最小化窗口的js插件。你可以使用插件全部功能,或者只使用某个子功能,入单独使用最小化功能。
2025-06-14 17:44:57
324
原创 lua读取请求体
nginx默认不读取请求体的数据,但可以通过内置变量来获取。存在内存中,如果它的字节大小超过nginx配置的的值,nginx就会把请求体存放到临时文件中。此时数据就不在内存中了,这会导致为空。
2025-06-13 09:55:41
554
原创 ping命令 – 测试主机间网络连通性
不过值得我们注意的是Linux与Windows相比有一定差异,Windows系统下的ping命令会发送出去4个请求后自动结束该命令;而Linux系统则不会自动终止,需要用户手动按下组合键“Ctrl+c”才能结束,或是发起命令时加入-c参数限定发送个数。ping命令的功能是用于测试主机间网络连通性,发送出基于ICMP传输协议的数据包,要求对方主机予以回复,若对方主机的网络功能没有问题且防火墙放行流量,则就会回复该信息,我们也就可得知对方主机系统在线并运行正常了。ping [参数] 目标主机。
2025-06-12 15:38:06
543
原创 jQuery带动画特效的圆形导航菜单特效
这是一款jQuery带动画特效的圆形导航菜单特效。该导航菜单在被点击时,会以动画的方式移动到屏幕中间,并展开为一个圆形菜单,效果非常炫酷。
2025-06-10 17:43:56
323
原创 Linux系统下快速批量创建和删除文件的方法
这个脚本的工作原理是这样的:for循环会遍历1到100的所有数字,每次循环,它都会将当前的数字赋值给变量i,然后执行do和done之间的命令。但是,需要注意的是,rm命令是非常危险的,如果使用不当,可能会导致重要文件的丢失。此外,如果你需要在更复杂的情况下批量处理文件,例如,你需要在多个目录中查找并删除特定的文件,或者你需要根据文件的内容或属性来决定是否删除文件,那么你可能需要学习更多的shell脚本知识,例如find命令,if语句,以及正则表达式等。接下来,我们来看看如何批量删除文件。
2025-06-10 16:31:52
393
原创 IDEA中配置HTML和Thymeleaf热部署的步骤
在IntelliJ IDEA中配置HTML和Thymeleaf热部署,可以让你在开发过程中实时看到代码的变化,而无需每次都重新启动应用。下面是具体的步骤:步骤一:打开IDEA,选择你的项目。步骤二:在顶部菜单栏中,选择“File” -> “Settings”。步骤三:在弹出的设置窗口中,选择“Build, Execution, Deployment” -> “Compiler”。
2025-06-10 16:30:13
468
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅