- 博客(66)
- 资源 (3)
- 收藏
- 关注
原创 Centos 系列:磁盘挂载和磁盘扩容(新加硬盘方式)
红框圈中的即是本次要挂载的磁盘,与 /dev/sda 和 /dev/sdb 相比,其没有下方的 /dev/sda1 等信息,代表 /dev/sdc 磁盘并没有进行过分区操作,是一个新加的硬盘。如果需要挂载到根目录或者其他路径,只需根据实际情况修改 vgextend 和 lvextend 的具体卷组和逻辑卷即可,灵活使用。/dev/vgnew/lvnew 为逻辑卷的固定格式:/dev/卷组名/逻辑卷名,具体可通过 lvdisplay 命令进行确定。
2025-06-04 14:19:03
1008
原创 使用SQL查询ES数据
需要首先安装ES8.x 和 Kibana8.x,自行安装。如何按照上面的步骤,安装成功后就可以学习今天的内容了。这里使用的是python脚本,直接运行即可。这一步部分填写你自己的信息即可。
2025-04-07 14:22:05
394
原创 记一次多线程导入问题排查过程
大数据量的核对:现在有1000个excel文件,每个excel文件内有21个sheet页,现在要对这些数据进行核对,需要先将这些数据导入到库中,再进行核对。
2025-03-07 11:36:43
233
原创 记一次堆内存泄漏排查过程
写了一个升级脚本,执行过程中给内存干爆了,不作处理,自己又好了,神奇吗?日志中内存溢出:java.lang.OutOfMemoryError: Java heap space。
2024-09-26 17:00:47
438
原创 发票连号判断-两种实现方式
在做票据夹功能的时候,有一个功能叫查找这个单据中所有连号的发票。INVOICE_CODE - ROW_NUMBER():计算每个记录的 INVOICE_CODE 减去行号,作为分组依据。ROW_NUMBER() OVER ( ORDER BY INVOICE_CODE ):根据 INVOICE_CODE。使用sql, 一条sql语句查询出所有连号的发票,本人使用的是mysql8+;使用java,也就是把所有的发票号码查出来,通过写java代码来实现这个功能;相减的结果是:0,0,2,5,5。
2024-09-25 11:18:42
790
原创 SpringBoot原理篇
由于方式一种需要将spring管控的bean全部写在xml文件中,对于程序员来说非常不友好,所以就有了第二种方式。哪一个类要受到spring管控加载成bean,就在这个类的上面加一个注解,还可以顺带起一个bean的名字(id)。这里可以使用的注解有@Component以及三个衍生注解@Service、@Controller、@Repository。@Service。
2024-08-23 17:32:13
1072
2
原创 Netty04-优化与源码
序列化,反序列化主要用在消息正文的转换上目前的代码仅支持 Java 自带的序列化,反序列化机制,核心代码如下为了支持更多序列化算法,抽象一个 Serializer 接口提供两个实现,我这里直接将实现加入了枚举类 Serializer.Algorithm 中增加配置类和配置文件配置文件修改编解码器其中确定具体消息类型,可以根据消息类型字节获取到对应的。
2024-08-23 17:28:08
478
原创 Netty03-进阶
服务端代码客户端代码希望发送 10 个消息,每个消息是 16 字节服务器端的某次输出,可以看到一次就接收了 160 个字节,而非分 10 次接收1.2 半包现象客户端代码希望发送 1 个消息,这个消息是 160 字节,代码改为为现象明显,服务端修改一下接收缓冲区,其它代码不变服务器端的某次输出,可以看到接收的消息被分为两节,第一次 20 字节,第二次 140 字节1.3 现象分析粘包半包本质是因为 TCP 是流式协议,消息无边界以解决粘包为例输出,略让所有数据包长度固定(假设长度为 8
2024-08-23 16:00:00
667
原创 Netty01-NIO
non-blocking io 非阻塞 IOchannel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么是输入,要么是输出,channel 比 stream 更为底层channelbuffer常见的 Channel 有buffer 则用来缓冲读写数据,常见的 buffer 有selector 单从字面意思不好理解,需要结合服务器的设计演化来理解它的用途socket1t
2024-08-20 11:33:34
465
原创 Redis消息队列
所谓解耦,举一个生活中的例子就是:快递员(生产者)把快递放到快递柜里边(Message Queue)去,我们(消费者)从快递柜里边去拿东西,这就是一个异步,如果耦合,那么这个快递员相当于直接把快递交给你,这事固然好,但是万一你不在家,那么快递员就会一直等你,这就浪费了快递员的时间,所以这种思想在我们日常开发中,是非常有必要的。注意:当我们指定起始ID为$时,代表读取最新的消息,如果我们处理一条消息的过程中,又有超过1条以上的消息到达队列,则下次获取时也只能获取到最新的一条,会出现漏读消息的问题。
2024-05-24 10:19:07
1064
原创 Mybatis 源码分析
1. 手写持久层框架-ipersistent1.1 JDBC操作数据库_问题分析JDBC API 允许应用程序访问任何形式的表格数据,特别是存储在关系数据库中的数据代码示例:1.2 JDBC问题分析&解决思路剖开代码,逐个分析:(1)加载驱动,获取链接:存在问题1:数据库配置信息存在硬编码问题。存在问题2:频繁创建、释放数据库连接问题。(2)定义sql、设置参数、执行查询:存在问题3:SQL语句、设置参数、获取结果集参数均存在硬编码问题 。(2)遍历查询结果集:存在问题4:手动封装返回结果集,较为繁
2024-05-08 12:08:30
912
原创 黑马微服务常见面试题
这个题目主要考察对SpringCloud的组件基本了解:简单SpringCloud包含的组件很多,有很多功能是重复的。其中最常用组件包括:•注册中心组件:Eureka、Nacos等•负载均衡组件:Ribbon•远程调用组件:OpenFeign•网关组件:Zuul、Gateway•服务保护组件:Hystrix、Sentinel•服务配置管理组件:SpringCloudConfig、Nacos。
2024-03-06 08:55:53
1365
1
原创 RabbitMQ基础
多个消费者绑定到一个队列,同一条消息只会被一个消费者处理通过设置prefetch来控制消费者预取的消息数量交换机的作用是什么?接收publisher发送的消息将消息按照规则路由到与之绑定的队列不能缓存消息,路由失败,消息丢失FanoutExchange的会将消息路由到每个绑定的队列描述下Direct交换机与Fanout交换机的差异?Fanout交换机将消息路由给每一个与之绑定的队列Direct交换机根据RoutingKey判断路由给哪个队列。
2024-03-06 08:47:32
1074
原创 RabbitMQ 高级
每个只能配置一个,因此我们可以在配置类中统一设置。我们在publisher模块定义一个配置类:log . error("触发return callback,");} });} }log . error("触发return callback,");} });} }Slf4j;import orglog . error("触发return callback,");} });} }
2024-03-05 15:56:38
1271
原创 filebeat 后端运行,自动退出解决
通过nohub方式启动filebeat,运行一段时间后filebeat自动退出,原因是filebeat默认会定期检测文件是否有新的内容,如果超过一定时间检测的文件没有任务新日志写入,那么filebeat会自动退出,解决办法就是将filebeat通过系统后台的方式长期运行。
2023-12-12 14:42:55
1520
原创 Java 调用 GitLabAPI 获取仓库里的文件件 提交记录
自定义令牌是为了后续接口访问有权限而建立的。在任何页面的右上角,单击您的个人资料照片,然后单击 “Settings(设置)”。在左侧边栏中,单击 “Developer settings(开发者设置)”。在左侧边栏中,单击 “Personal access tokens(个人访问令牌)”。单击 “Generate new token(生成新令牌)”。给令牌一个描述性名称。选择要授予此令牌的作用域或权限。要使用令牌从命令行访问仓库,请选择 “repo(仓库)”。
2023-09-20 09:42:27
2677
2
原创 VUE Element UI 排序功能结合后端接口实现
要求在页面列表上点击某个列的排序按钮,能够联动后端接口一起排序分页。上述JS仅仅提供的是排序相关代码,其他代码自行补充。所以 后端代码就知道该怎么写了吧。对你有帮助给点个👍再走呗。若有错误,希望大佬指出。废话不多说,直接上代码。
2023-09-20 09:12:26
994
原创 Redis缓存击穿问题及解决思路
缓存击穿也叫热点key问题,就是一个被高并发访问并且缓存重建业务比较复杂的key突然失效了,无数的请求会在一瞬间给数据库带来巨大的冲击。也是缓存雪崩中的一个特例。
2022-08-25 11:09:55
1042
1
原创 Redis缓存穿透问题的解决思路
缓存穿透是指客户端请求的数据在缓冲中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库中。缓存穿透产生的原因是什么?用户请求的数据在缓存中和数据库中都不存在,不断发起这样的请求,给数据库带来巨大压力缓存穿透的解决方案有哪些?缓存null值布隆过滤增强id的复杂度,避免被猜测id规律做好数据的基础格式校验加强用户权限校验做好热点参数的限流黑马Redis资料。若有错误,希望大佬指出。对你有帮助给点个👍再走呗。
2022-08-24 10:34:49
501
原创 ArrayList扩容机制分析
ArrayList的底层是数组队列,相当于动态数组。与Java中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用ensureCapacity操作来增加ArrayList实例的容量。这可以减少递增式再分配的数量。ArrayList继承于,实现了这些接口。}.}.}RandomAccess是一个标志接口,表明实现这个这个接口的List集合是支持快速随机访问的。在ArrayList中,我们即可以通过元素的序号快速获取元素对象,这就是快速随机访问。............
2022-07-20 11:12:22
615
1
原创 单例模式的六种写法
单例(Singleton)Intent确保一个类只有一个实例,并提供该实例的全局访问点。Class Diagram使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。ImplementationⅠ 懒汉式-线程不安全以下实现中,私有静态变量 uniqueInstance 被延迟实例化,这样做的好处是,如果没有用到该类,那么就不会实例化 uniqueInstance,从而节约资源。这
2022-04-26 22:13:34
175
原创 Spring动态代理的两种方式
Spring动态代理的两种方式1. Spring创建的动态代理类在哪⾥?1.1 什么叫动态字节码技术?2.1. Spring创建的动态代理类在哪⾥?Spring 框架在运行时,通过字节码技术,在jvm创建的,运营在jvm内部,等程序结束后,会和jvm一起消失。1.1 什么叫动态字节码技术?通过第三方动态字节码框架,在jvm中创建对应类的字节码,进而创建对象,当虚拟机结束,动态字节码跟着消失。==结论:动态代理不需要定义类文件,都是在jvm运行过程中创建的,所以不会造成静态代理,类文件数量过多,影
2022-04-26 22:06:27
4393
2
原创 Struts2升级2.5.30的那些坑
1.版本修改将pom.xml 文件修改为2.5.30版本<properties> <struts2-version>2.5.30</struts2-version> </properties><dependencies> <dependency> <groupId>org.apache.struts</groupId> <artifactId>s
2022-04-18 15:42:51
10094
35
原创 Spring⼯⼚创建复杂对象3种方式(FactoryBean,实例工厂,静态工厂)
Spring⼯⼚创建复杂对象3种方式1. 什么是复杂对象2. Spring⼯⼚创建复杂对象3种方式2.1FactoryBean 接口2.2 实例工厂2.3静态工厂1. 什么是复杂对象1.简单对象:指的就是可以 直接通过new 构造方法创建对象例如: userDAO User2.复杂对象指不能直接通过new 构造方法创建对象例如: Connection SqlSesscionFactory2. Spring⼯⼚创建复杂对象3种方式2.1FactoryBean 接口开发步骤1.实
2022-04-18 11:45:03
549
原创 Apache Struts2远程代码执行漏洞(CVE-2021-31805)安全通告
1. 事件描述监测发现,开源应用框架Apache Struts存在远程代码执行漏洞(CVE-2021-31805),攻击者可构造恶意的OGNL表达式触发漏洞,实现远程代码执行。受影响版本为Apache Struts 2.0.0~2.5.29。目前,该漏洞已在Apache Struts 2.5.30版本中修复。事件类型:漏洞利用事件等级:高危2. 影响范围远程代码执行漏洞影响范围:2.0.0<=Apache Struts <= 2.5.29不受影响版本Apache Struts
2022-04-15 10:05:09
6584
2
原创 Linux crontab 命令
Linux crontab 命令1.简介2.语法3. 示例4. 脚本无法执行问题5. 实战6.彩蛋1.简介Linux crontab 是用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。而 linux 任务调度的工作主要分为以下两类:系统执行的工作:系统周期性所要执行
2022-04-13 15:01:41
1834
转载 初学者对java数组中栈和堆的认识
java数组中栈和堆的认识1.示例:2.结论3.图例子1.示例:public static void main(String[] args) { String[] Array = null; Array = new String[3]; Array[0] = "安徽合肥"; Array[1] = "江苏苏州"; Array[2] = "安徽铜陵"; for(int i=0;i<=2;i++){
2022-03-02 14:37:36
213
原创 MySQL 动态 行转列
MySQL 动态 行转列1.需求2.建表3.插入数据4. 转换前结果5. 动态转换1.需求在每一行的内容不确定的情况下,需要动态的把行转为列。2.建表DROP TABLE IF EXISTS tb_score;CREATE TABLE tb_score( id INT(11) NOT NULL auto_increment, userid VARCHAR(20) NOT NULL COMMENT '用户id', subject VARCHAR(20) COMMENT '科
2022-02-24 17:05:56
6598
8
原创 HashMap 集合底层 存储数据的过程 + 面试题
一、HashMap 集合简介HashMap 基于哈希表的 Map 接口实现,是以 key-value 存储形式存在,即主要用来存放键值对。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的 key、value 都可以为 null,此外,HashMap 中的映射不是有序的。jdk1.8 之前 HashMap 由 数组 + 链表 组成,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突(两个对象调用的 hashCode 方法计算的哈希值一致导致计算的教组索引值相同)而存在的(
2021-12-17 17:15:51
798
2
原创 mysql 之 去重(三行重复数据,取列权重最高行的一行留下)
mysql 之 去重 三行重复数据,取列权重最高行的一行留下 1.需求2. 解决1.需求将图一 数据 加工成 图二的数据图一:图二:IS_SD_CALL/IS_ZB_WOSALE/IS_CBSS 字段下的数字 表示权重,数字越大权重越高,权重最高的那一行留下 ,其他行消除。2. 解决整体解决方案:select x.no ,x.number , case when x.IS_SD_CALL <> '' and x.IS_SD_CALL = '10' then
2021-12-03 10:08:09
976
1
原创 Java JDK8 Stream 使用详解
Stream 的 筛选/去重/截取跳过映射/合并多个流/匹配/归约 简单示例1.什么是流?2.流的特点3.流的操作种类4.流的操作过程5. 使用流1.什么是流?流是Java8引入的全新概念,它用来处理集合中的数据,暂且可以把它理解为一种高级集合。众所周知,集合操作非常麻烦,若要对集合进行筛选、投影,需要写大量的代码,而流是以声明的形式操作集合,它就像SQL语句,我们只需告诉流需要对集合进行什么操作,它就会自动进行操作,并将执行结果交给你,无需我们自己手写代码。因此,流的集合操作对我们来说是透明的,我
2021-09-28 16:16:25
636
原创 Java 与 C++ 的区别
近期在学习C++,简单介绍下 Java 和 C++区别Java 是纯粹的面向对象语言,所有的对象都继承自 java.lang.Object,C++ 为了兼容 C 即支持面向对象也支持面向过程。Java 通过虚拟机从而实现跨平台特性,但是 C++ 依赖于特定的平台。Java 没有指针,它的引用可以理解为安全指针,而 C++ 具有和 C 一样的指针。Java 支持自动垃圾回收,而 C++ 需要手动回收。Java 不支持多重继承,只能通过实现多个接口来达到相同目的,而 C++ 支持多重继承。Java
2021-09-27 17:20:58
182
原创 idea插件translation插件 提示:翻译失败: 未知错误
idea插件translation插件“翻译失败: 未知错误”idea插件translation插件 提示:翻译失败: 未知错误解决方案效果图idea插件translation插件 提示:翻译失败: 未知错误问题:translation插件 这两天一直无法进行翻译 提示 翻译失败: 未知错误网上看了很多 改 有道的 百度的 都需要去相应官网申请,比较繁琐,不是想要的效果,下面将会介绍一个简单的方案。解决方案打开idea —》settings —》Tools —》翻译(插件名)把 使用tran
2021-09-18 15:11:51
6956
22
原创 多线程创建 - 通过实现Callable接口创建多线程
通过实现Callable接口创建多线程1.介绍2.具体代码实现3. 使用Callable接口创建多线程 实现一个龟兔赛跑小游戏1.介绍Callabled 接口有点儿像是Runnable 接口的增强版,它以call()方法作为线程执行体, call()方法比run()方法功能更强大。call()方法可以有返回值,可以声明抛出异常类。获取call()方法里的返回值: 通过FutureTask 类(实现Future 接口)的实例对象的get()方法得到,得到结果类型与创建TutureTask 类给的泛型一
2021-09-15 11:09:30
395
1
原创 单例模式的六种写法
单例(Singleton)Intent确保一个类只有一个实例,并提供该实例的全局访问点。Class Diagram使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。 ImplementationⅠ 懒汉式-线程不安全以下实现中,私有静态变量 uniqueInstance 被延迟实例化,这样做的好处是,如果没有用到该类,那么就不会实例化 uniqueInstance,从而节约资源。
2021-09-15 10:30:22
162
java调用佳博条码机tsclib.zip
2019-08-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人