- 博客(152)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
原创 vmware+centos7虚拟机连接不到网络的问题
我用VMware Workstation 15 Pro + centos7 搭建了一台虚拟机,开始是没问题的。后来出现了网络连接不上。导致ifconfig命令中的ip获取不到。xshell当然就连接不上了。
2025-11-12 14:34:58
296
原创 LangChain4j最新版教学知识库实战
官网:https://docs.langchain4j.dev/LangChain4j的目标是简化与Java应用程序集成大模型。特性:统一API:LLM提供程序(如openai或阿里百炼)和嵌入(向量)存储(如redis或ES)使用专有API。LangChain4j提供了一个统一的API,以避免为每个API学习和特定的API。要实验不同的LLMs存储或嵌入的存储,您可以在他们之间轻松切换,而无需重新编写代码。LangChain4j目前支持15+热门LLM和20+嵌入模型。
2025-08-14 09:31:22
1328
原创 Java手写一个简单的sql解析执行器
是 Java 中处理正则表达式的基础方法,通过它可以将字符串形式的正则表达式编译成Pattern对象,进而使用Matcher对象进行匹配操作。掌握其用法可以方便地实现复杂的字符串匹配和处理逻辑。这句代码通过正则表达式解析简单的 SQLSELECT查询语句,提取关键部分(字段、表名、条件),并忽略大小写。它在实现简单的 SQL 解析器时非常有用。方法是 Java 正则表达式中非常重要的工具,用于提取匹配的子字符串。通过指定捕获组的索引,可以方便地获取正则表达式中定义的各个部分的内容。
2025-08-14 09:29:46
1155
原创 Shell第四弹资料
cut译为“剪切, 切割” , 是一个强大文本处理工具,它可以将文本按列进行划分的文本处理。cut命令逐行读入文本,然后按列划分字段并进行提取、输出等操作。sed (stream editor, 流编辑器) 是Linux下一款功能强大的非交互流式文本编辑器(vim是交互式文本编辑器),可以对文本文件的每一行数据匹配查询之后进行增、删、改、查等操作,支持按行、按字段、按正则匹配文本内容,灵活方便,特别适合于大文件的编辑.
2025-08-14 09:28:34
645
原创 Shell第三弹资料
expr (evaluate expressions 的缩写),译为“表达式求值”。Shell expr 是一个功能强大,并且比较复杂的命令,它除了可以实现整数计算,还可以结合一些选项对字符串进行处理,例如计算字符串长度、字符串比较、字符串匹配、字符串提取等.双小括号 (( )) , 用于进行数学运算表达式的执行 , 将数学运算表达式放在((和))之间。可以使用获取 (( )) 表达式命令的结果,这和使用获得变量值是一样的。
2025-08-14 09:27:41
925
原创 Shell第二弹资料
字符串(String)就是一系列字符的组合。字符串是 Shell 编程中最常用的数据类型之一(除了数字和字符串,也没有其他类型了)能够定义Shell数组能够获取Shell数组数据能够进行Shell数组的拼接, 删除Shell 支持数组(Array), 数组是若干数据的集合,其中的每一份数据都称为数组的元素。注意Bash Shell 只支持一维数组,不支持多维数组。在 Shell 中,用括号( )array_name=(item1 item2 ...) # 方式1。
2025-08-14 09:23:50
903
原创 Shell第一弹资料
理解Shell是什么理解Shell脚本是什么理解为什么学习Shell脚本(Shell脚本程序的作用)linux系统默认的Shell解析器通过编写Shell命令发送给linux内核去执行, 操作就是计算机硬件. 所以Shell命令是用户操作计算机硬件的桥梁,Shell是命令, 类似于windows系统Dos命令Shell是一个门程序设计语言, Shell里面含有变量, 函数, 逻辑控制语句等等sh解析器执行方式语法:sh 脚本文件。
2025-08-13 16:19:24
1061
原创 Flowable基础篇
FlowableUI是官方提供的,针对国内复杂的流程业务需求有时并不能很好的满足企业的工作流的需求。这时我们就可以基于bpmn.js来自定义流程设计器,官网地址:https://bpmn.io/toolkit/bpmn-js/walkthrough/开源的学习资料:https://github.com/LinDaiDai/bpmn-chinese-document/tree/master/LinDaiDai有了相关的用户信息。我们就可以来创建流程图了。这块我们需要通过建模应用程序来实现。
2025-08-13 16:18:15
596
原创 openGauss报错:Too many open files,解决方案
从上面的信息可以看出系统级默认限制是1024个,那我们就更改一下这里的数量,设置为DefaultLimitNOFILE=65535:524288,更新后重启数据库。通过上面的步骤一般情况下是可以解决问题的,但是现在我们重启服务后,发现问题依然存在,此时我们查看看一下数据库进程。从上面的数据信息可以得到openGauss的进程ID是180483,下面我们统计一下该进程的打开数量。到此问题找到了,进程实际限制的1024个,但是实际打开了1274个,故报此错误。你也可以指定特定的用户名来仅对特定用户生效。
2025-08-13 16:17:14
397
原创 Centos 7 安装系列 openGauss 3.0.0
零、关于卸载补充于20230404不要安装极简版,不要安装极简版,不要安装极简版。因为这版本没得卸载!本文中安装的就是极简版,算是踩了大坑了。关于各版本安装包名称:极简版:openGauss-x.x.x-openEuler-64bit.tar.bz2轻量版:openGauss-Lite-x.x.x-openEuler-aarch64.tar.gz企业版:openGauss-x.x.x-openEuler-64bit-all.tar.gz。
2025-08-13 16:16:26
1001
原创 Vue3 + ElementUI教学手册
在Vue 3项目中区别测试环境和本地环境,并标记接口的方法可以通过环境变量来实现。首先,你可以在你的项目根目录下创建一个.env文件,并定义你的环境变量。比如,你可以创建.env.local作为本地环境的配置文件,.env.test作为测试环境的配置文件。在这些配置文件中,你可以定义一些接口标记的变量,如:接下来,在你的代码中,你可以使用这些环境变量来标记你的接口。在Vue 3项目中,你可以在组件中使用前缀来访问这些环境变量。然后,你就可以根据不同的环境变量来确定接口地址。当你使用npm run se
2025-08-13 16:15:39
980
原创 使用PDFBox封装一个简单易用的工具类快速生成pdf文件-非原创
以起始位置至终点一条线,线宽以垂直于起始至终止连线方向发散,例如线宽20,起始位置(0,10),终止位置(500,10)则线实际所占位置为(0,0),(0,20),(500,0),(500,20)所围成的长方形区域。第一个参数 a={3,5} 3表明虚线宽度为3,5表明虚线间隔为5。当a={3}时表明虚线宽度为3,间隔为3。文档左下角为坐标原点,x轴向右从0增加,y轴向上增加。字的位置以左下角为原点向右上方发散。图位置以左下角为原点向右上方发散。2.otf类型字体加载。第二个参数0表明虚线。
2025-08-13 16:14:54
749
原创 手摸手带你学ClickHouse
官网:https://clickhouse.tech/,ClickHouse是面向 OLAP 的分布式列式DBMS。优点:1、灵活的MPP架构,支持线性扩展,简单方便,高可靠性2、多服务器分布式处理数据,完备的DBMS系统3、底层数据列式存储,优化索引数据4、快:比Vertica快5倍,比Hive快279倍,比MySQL快800倍,其可处理的数据级别已达到10亿级别5、功能多:支持数据统计分析各种场景,支持类SQL查询,异地复制部署。
2025-08-13 16:13:44
1033
原创 Netty 对 Java NIO 空轮询问题的处理
摘要: Java NIO在Linux平台使用epoll机制时存在空轮询问题,表现为Selector.select()在没有可处理IO事件时不断被唤醒,导致CPU占用100%。该问题源于底层epoll在socket异常终止(RST)时返回POLLHUP/POLLERR事件,但JDK未在SelectionKey中定义异常事件类型,导致上层无法处理。解决方案包括:JDK层面新增异常事件或扩大事件映射;应用层通过重建Selector(如Netty采用计数器统计空轮询次数,超过阈值512次时重建Selector)来规
2025-08-13 16:13:05
812
原创 Nginx+keepalived实现nginx高可用
2.查看keepalived是否安装成功,出现版本即成功。配置需要修改成主、从服务器上对应的启动命令。3.补充关闭、重启keepalived命令。2.查看keepalived是否启动成功。1.使用yum安装keepalived。2.将下面内容复制到脚本文件中。1.启动keepalived。1.使用vim修改脚本文件。1.如果以启动,则忽略。
2025-08-13 16:12:24
227
原创 开源服务器监控工具——Monit的介绍及使用
Monit是一个跨平台的用来监控Unix/Linux系统(比如Linux、BSD、OSX、Solaris)的工具。易于安装,轻量级(只有500KB大小),不依赖于任何第三方程序、插件或者库。Monit可以监控服务器进程状态、HTTP/TCP状态码、服务器资源变化、文件系统变动等等,根据这些变化,可以设定邮件报警、重启进程或服务。正因为其易于安装、轻量级,可以实现强大的功能,所以让Monit称为一个理想的后备监控工具。官网:https://mmonit.com/monit。
2025-08-13 16:11:30
900
原创 一站式kubernetes(K8S)教程精讲-非原创
它里面不仅有基本的可执行文件,还有应用运行时的整个系统环境。这就让镜像具有了非常好的跨平台便携性和兼容性所谓的“容器化的应用”,或者“应用的容器化”,就是指应用程序不再直接和操作系统打交道,而是封装成镜像,再交给容器环境去运行。常用的镜像操作有哪些镜像的完整名字由两个部分组成,名字和标签,中间用 : 连接起来。镜像仓库,术语叫 Registry,直译就是“注册中心”,意思是所有镜像的 Repository 都在这里登记保管,就像是一个巨大的档案馆。
2025-08-13 16:10:44
1266
原创 计算机原理之Linux操作系统(持续完善ING)
操作系统,是计算机科学中的皇冠,它作为一个平台,几乎集结了计算机科学里面的所有知识,如硬件,算法,架构,能够写出一个操作系统的人,无一不是行业里的翘楚或大神级人物,像Linux的创始人Torvalds,Android的创始人安迪·鲁宾,苹果早期电脑系统的开发者史蒂夫-沃兹尼亚克,哪一个不是牛逼的闪闪发光,让人膜拜。核心思想是:只要保存下当前程序执行现场,包括PC值、各寄存器值,那么不管CPU现在执行其他什么程序,都能恢复到上次程序执行的现场,并按照之前的执行顺序继续执行,就当什么事情也没有发送过一样。
2025-08-13 16:09:27
712
原创 异步执行获取不到登录态的问题排查(RequestContextHolder.getRequestAttributes()子线程获取问题)
由于是SSO统一认证,因此远程调用必须有登录状态,而我们的登录会话保存在当前请求(也就是主线程)的HttpServletRequest中,通过RequestContextHolder.getRequestAttributes().getRequest()来获取,而通过查看源码,发现RequestAttributes对象是存在ThreadLocal线程本地变量的,那问题可想而知了,问题根本原因就是,创建的子线程无法获取到会话信息,因为会话信息存在在主线程的本地变量里。实际获取到的是空的,然后查看了源码。
2025-08-13 16:08:33
674
原创 jstack命令示例(CPU100%&死锁排查流程)
转载自:https://www.cnblogs.com/MuXinu/p/17388443.html。
2025-08-13 16:07:20
1028
原创 线上服务挂掉的原因排查过程(springboot服务突然不可用)
接口调用时响应很久都没返回,还有一种现象是,出现out of memory错误后,应用占用cpu低,用jstat -gc 进程id查看GC也没有异常,看起来一切都正常,但偏偏无法响应请求。分析结果:请求连接超过了默认的10000,队列阻塞无法接收新的请求。这个接口是HttpRequest发起的远程调用接口,服务部署之后的前段时间是运行正常的,接口正常调用的,过若干天之后,接口就调不通了,状态码400,基于对400错误的理解,就是服务调用方出现了问题,经过百度得出结论。
2025-08-13 16:06:21
995
原创 自行研发一个大数据运维中台(拖拉拽自定义算子自动构建成flink算子链并运行)
开发开源的算子肯定是不能用的,只能直接提交到flink平台上,要想在自己平台拖拉拽,只能自己定义一套规则,让开发自定义算子时去遵循这套规则。Class<?Class<?Class<?还有一个自定义注解,用于标注自定义算子的特征信息/*** 名称*/String name() default "未命名";/*** 描述*/String desc() default "开发人员太懒,什么描述也没有";/*** 图标名字*/
2025-08-12 14:42:27
1006
原创 NIO 是不是就是IO多路复用?NO
似乎从互联网起源,BIO、NIO 的话题就从未间断,无论是平时还是面试。那么他们到底是什么?希望你看完这个文章彻底理解这些概念,同时这边文章也使用 Java 代码实现一个 I/O 多路复用的实例,最后到 I/O 原理。
2025-08-12 14:41:07
895
原创 java实现一个小型文件采集器 [特殊字符][特殊字符][特殊字符]实时监控文件的原理和使用
使用java实现对文件的监控功能,当文件发生修改,实时获取更新内容。1.要求对目标文件实时监控2.按行读取文件更行内容3.将获取内容进行落库。
2025-08-12 14:39:10
788
原创 springboot插件式开发 springboot-plugin-framework-v2.4.5使用文档
此框架可在SpringBoot项目上开发出用于扩展项目的插件,可在插件模块中单独定义接口、静态文件、mybatis-xml等扩展功能。● 可通过配置文件指定要启用或者禁用插件。● 支持上传插件和插件配置文件到服务器, 并且无需重启主程序, 动态部署插件、更新插件。● 支持查看插件运行状态, 查看插件安装位置。● 无需重启主程序, 动态的安装插件、卸载插件、启用插件、停止插件、备份插件、删除插件。● 只能用于主程序。
2025-08-12 14:37:52
1139
原创 Java实现大文件多线程下载 提速30倍(文章非全原创 感谢支持)
在下载的过程中,我们需要知道当前下载的速度是多少,所以需要定义一个显示下载速度的接口/*** 显示下载速度*//*** 显示下载速度*/@Overridelong speed;//不换行进行覆盖stringBuilder.append(task + " 文件总大小: " + totalSize + " KB,已下载:" + (temp / 1024) + "KB,下载速度:"+ (speed/1000)+"KB/S");try {});@Override。
2025-08-12 14:37:05
825
原创 Java实现文件下载/上传的限流算法
在做文件下载功能时,为了避免下载功能将服务器的带宽打满,从而影响服务器的其他服务。我们可以设计一个限流器来限制下载的速率,从而限制下载服务所占用的带宽。
2025-08-12 14:36:17
796
原创 springboot使用redis&lua脚本实现分布式限流starter
由于后续要使用lua脚本来做权限控制,所以必须自定义一个redisTemplate,此处如果不自定义redisTemplate,则执行lua脚本时会报错。
2025-08-12 14:35:07
463
原创 WebService简单教学[特殊字符][特殊字符]SpringBoot整合CXF的快速入门[特殊字符][特殊字符]CXF发布Rest服务
一,WebService的基本概念二, ApacheCXF 框架介绍三, ApacheCXF 实现WebService(Jax-ws)四, Spring 整合 ApacheCXF 实现WebService(Jax-ws)五,ApacheCXF 实现webservice (Jax-rs)六,Sping整合CXF实现基于Restful风格的webservice(jax-rs)
2025-08-12 14:33:56
963
原创 Java解决单机环境下多数据源的事务问题
在自定义数据源中注入上边那两个多数据源,维持多数据源执行事务期间用到的连接列表,在自定义数据源中添加事务相关业务,既在获取 连接的地方将 Connection 缓存到 ThreadLocal 中使用了@Primary。
2025-08-12 14:33:00
339
原创 MySQL主从复制和读写分离
在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的。无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力。有点类似于rsync,但是不同的是rsync是对磁盘文件做备份,而mysql主从复制是对数据库中的数据、语句做备份。mysql的主从复制原理和读写分离的原理。
2025-08-12 14:04:09
741
原创 Java基于解释器模式实现定义一种简单的语言功能示例
解释器模式:就是给定一个语言的文法表示,并且定义一个解释器,用来解释语言中的句子。解释器模式描述了怎样在有了一个简单的文法后,使用模式设计解释这些语句。
2025-08-12 14:03:01
406
原创 深入理解Java定时调度机制 (Timer)源码阅读
在实现定时调度功能的时候,我们往往会借助于第三方类库来完成,比如: quartz 、 spring schedule 等等。jdk从1.3版本开始,就提供了基于 timer 的定时调度功能。在 timer 中,任务的执行是串行的。这种特性在保证了线程安全的情况下,往往带来了一些严重的副作用,比如任务间相互影响、任务执行效率低下等问题。为了解决 timer 的这些问题,jdk从1.5版本开始,提供了基于 scheduledexecutorservice 的定时调度功能。本节我们主要分析 timer 的功能。
2025-08-12 14:02:15
898
原创 手写一个Callable和FutureTask,异步线程执行并得到结果,了解其原理
/ 1. 创建callable@Override// 模拟执行耗时 3秒try {return new User("用户" + new Date().getTime(), "29");// 2.创建futureTask// 3.放到线程中执行// 4.获取返回结果// 5.打印最后,这里是用wait和notify模拟的,还可以使用LockSupport来实现。
2025-08-07 10:41:04
614
UDP模拟客户端和服务端聊天不能连续发送消息?
2019-09-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅