- 博客(162)
- 资源 (1)
- 收藏
- 关注
原创 Java【CompletableFuture】灵活用法
Java 8 中,CompletableFuture 提供了一种非常强大的方式来处理异步编程,它使得编写非阻塞代码变得更加简单和灵活。相比传统的 Future,CompletableFuture 可以让你在异步操作完成后,执行多个后续操作(如回调、合并任务、异常处理等),大大提高了代码的可读性和可维护性。支持链式调用、组合多个异步操作以及更复杂的异步控制流。
2025-01-21 15:50:37
660
原创 Gitlab仓库权限查看及分配
GitLab中的权限级别从低到高依次为:如果你是项目的Maintainer或Owner,可以按照以下步骤分配权限:
2024-12-16 09:50:54
1673
原创 【DB】根据某字段生成序号
如下图所示:根据RCV_ORD_NUM,生成明细行号,当RCV_ORD_NUM相同时,序号自增,不同时,从1开始并始终保持四位字符串。
2024-11-30 21:29:05
422
原创 idea2024启动Java项目报Error running CloudPlApplication. Command line is too long.
3、在Edit Configurations界面下方新增的Shorten command line选项中选择JAR manifest或classpath file。2、点击Modify options设置,勾选Shorten command line。1、打开Edit Configurations。
2024-10-16 16:00:34
583
原创 Linux安装Redis
4、查看redis安装的路径,默认安装路径为:/var/lib/redis。开启aof 持久化,rdb是默认开启的,aof 恢复的数据更完整。1、查看redis的运行进程,图中没有运行的redis进程。2、如果有进程杀死存在的进程。3、删除redis相关的目录。若连接不上开放防火墙和安全组。查看 6379 是否开放成功。修改密码(也可不设置密码)7、进入redis 客户端。2、添加EPEL仓库。
2024-09-24 15:15:12
313
原创 Linux安装Niginx
Nginx(发音为"engine x")是一个高性能的HTTP和反向代理服务器,可以用于静态资源的快速传输和负载均衡。
2024-09-05 11:25:37
751
原创 Java 实现异步的几种方式
/ 核心线程数// 最大线程数// 队列大小// 线程前缀名每种方案的选择取决于具体的应用场景、复杂度和性能要求。简单的异步任务可能仅需使用Future和Callable,而复杂的异步流程控制和跨服务通信则可能更适合采用CompletableFuture或消息队列。
2024-07-24 15:06:03
867
原创 JAVA【JUC 包中的 Atomic 原子类】
Atomic 翻译成中文是“原子”的意思。在化学上,原子是构成物质的最小单位,在化学反应中不可分割。在编程中,Atomic 指的是一个操作具有原子性,即该操作不可分割、不可中断。即使在多个线程同时执行时,该操作要么全部执行完成,要么不执行,不会被其他线程看到部分完成的状态。原子类简单来说就是具有原子性操作特征的类。java.util.concurrent.atomic 包中的 Atomic 原子类提供了一种线程安全的方式来操作单个变量。
2024-07-23 16:27:19
801
原创 Java实现Excel导入和导出【最全】
目录前言一、功能测试1.1 测试准备1.2 数据导入1.2.1 导入解析为JSON1.2.2 导入解析为对象(基础)1.2.3 导入解析为对象(字段自动映射)1.2.4 导入解析为对象(获取行号)1.2.5 导入解析为对象(获取原始数据)1.2.6 导入解析为对象(获取错误提示)1.2.7 导入解析为对象(限制字段长度)1.2.8 导入解析为对象(必填字段验证)1.2.9 导入解析为对象(数据唯一性验证)1.2.10 导入多Sheet页1.3数据导出1.3.1 动态导出(基础)1.3.2
2024-07-03 14:13:18
9197
5
原创 springboot接口防抖【防重复提交】
所谓防抖,一是防用户手抖,二是防网络抖动。在Web系统中,表单提交是一个非常常见的功能,如果不加控制,容易因为用户的误操作或网络延迟导致同一请求被发送多次,进而生成重复的数据记录。要针对用户的误操作,前端通常会实现按钮的loading状态,阻止用户进行多次点击。而对于网络波动造成的请求重发问题,仅靠前端是不行的。为此,后端也应实施相应的防抖逻辑,确保在网络波动的情况下不会接收并处理同一请求多次。逻辑正确,也就是不能误判;响应迅速,不能太慢;易于集成,逻辑与业务解耦;
2024-07-01 11:14:39
1041
原创 Linux 安装 MySQL 8.0.26
数据库初始化./bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize命令,得到临时密码。1)将mysql.server启动文件复制到/etc/init.d目录,使用cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld命令。需要注意:记录一下mysql数据库的临时密码:e0l?
2024-06-27 15:52:26
1378
原创 BigDecimal常用记录
如果在代码中出现 if (a属性.compareTo(b属性) > 0)具体地,a属性.compareTo(b属性) 是用来比较 a属性和 b属性的大小关系。返回值是一个整数,表示两个对象的比较结果。
2024-05-21 09:19:27
554
原创 【设计模式】——策略模式
策略模式是一种强大而灵活的设计模式,它可以帮助我们处理不同的算法或行为,并使系统更具可维护性和扩展性。通过封装具体的策略类和使用上下文对象,我们可以轻松地选择和切换不同的策略,而无需修改现有的代码。
2024-05-15 13:33:42
1011
原创 JAVA【jvm层级的仿DataFrame工具——JDFrame】
jvm层级的仿DataFrame工具,语意化和简化java8的stream流式处理工具。
2024-04-29 14:02:57
773
1
原创 【Java】@Transactional 事务注解
Spring的事务边界是在调用业务方法之前开始的,业务方法执行完毕之后来执行commit or rollback(Spring默认取决于是否抛出runtimeException)。1、就是@Transactional注解保证的是每个方法处在一个事务,如果有try一定在catch中抛出运行时异常。2、方法必须是public修饰符。否则注解不会生效,但是加了注解也没啥毛病,不会报错,只是没卵用而已。3、this.本方法的调用,被调用方法上注解是不生效的,因为无法再次进行切面增强。
2024-01-17 15:32:58
627
原创 【JAVA】easyExcel导出导入使用
EasyExcel是阿里巴巴开源插件之一,主要解决了poi框架使用复杂,sax解析模式不容易操作,数据量大起来容易OOM,解决了POI并发造成的报错。主要解决方式:通过解压文件的方式加载,一行一行地加载,并且抛弃样式字体等不重要的数据,降低内存的占用。EasyExcel在SpringBoot的集成 引入对应的pom依赖@ColumnWith 列宽@ContentFontStyle 文本字体样式@ContentLoopMerge 文本合并@ContentRowHeight 文本行高度。
2023-04-23 13:36:54
6257
原创 【.net core】Excel导入导出之Npoi.Mapper
引入Npoi.Mapper的nuget包<PackageReference Include="Npoi.Mapper" Version="3.5.1" />导出操作新建类作为数据承载的载体,以下定义: public class MortgageInfo { /// <summary> /// 编号 /// </summary> public string JYCode { get; se
2022-03-06 21:59:57
1122
原创 [.net core]创建后台服务项目结构
方式一安装dotnet new --install DotNetCore.ApiTemplate.CSharp::1.0.2帮助dotnet new dncat --help/////////////////////////////DotNetCoreApiTemplate -ha|--hangfire 是否使用hangfire bool - Required-r|--rabbitmq 是否使用RabbitMQ,使用 RabbitMQ.Event
2022-02-19 09:26:03
315
原创 .NET CORE【ES】
一、基础查询 //条件单个 var mustQuerys = new List<Func<QueryContainerDescriptor<RequestFunds>, QueryContainer>>(); //条件集合 if (input.BrokerIds.Any()) { mustQuerys.Add(q => q.Terms(t => t.Field(f => f.BrokerId).Terms(input.BrokerId
2021-09-23 15:16:03
637
原创 ES基础语句
1、基础查询GET trans_deposit/_search{ //条件查询 "query": { "bool": { "must": [ {"term": { "jYCode": { "value": "JY202108040004" } }} ] } }}//分组查询GET trans_deposit/_search{ "aggs": {
2021-09-23 14:34:45
513
原创 【Pgsql】笔记
pgsql小笔记SELECT d."JYCode" 交易编号, -- 字符串 to_char( d."DepositDate", 'YYYY-MM-DD' ) 转定日期, --日期格式化 concat_ws ( '-', d."SigningBrokerName", d."SigningBrokerPhone" ) AS "经纪人信息", -- 字符串拼接 ( SELECT string_agg ( "MeansTypeNm", ';' ) FROM "BackupFiles"
2021-09-14 15:51:30
180
原创 .NET CORE【EF】
//根据id查询var transPlan = await _context.TransPlans.FindAsync(detailParam.TransPlanId);//条件查询 返回一条 var query = _context.TransPlans.Where(q => q.Id == inputParam.TransPlanId).FirstOrDefault();//条件查询 返回集合 var signAccessoryList = await _context.Mort
2021-08-18 11:55:36
708
原创 .Net日期时间格式转换【C#】
时间戳转换 /// <summary> /// 时间戳和日期的转化 /// </summary> public class DateTimeUtility { /// <summary> /// 日期转换为时间戳(时间戳单位秒) /// </summary> /// <param name="TimeStamp"></param&
2021-08-18 09:44:01
2029
原创 【.net Redis 哈希(Hash)】
hash又称为散列、杂凑等,是将任意长度的输入通过散列算法变换为固定长度的输出,最终输出也就是哈希值。这种转换是一种压缩映射。也就是说,散列值的空间通常要远小于输入控件,不同的输入可能会散列成相同的输出,所以不可能通过散列值来确定唯一的输入值。哈希表hash table是为了将数据映射到数组中某个位置,通过数组下标访问元素以提高数据的查询速度,这种查询的平均期望时间复杂度为O(1)。Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。Redis .
2021-08-08 15:45:14
577
原创 【.NET】Redis分布式锁
介绍分布式锁,首先要提到与分布式锁相对应的是线程锁、进程锁。线程锁:主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。进程锁:为了控制同一操作系统中多个进程访问某个共享资源,因为进程具有独立性,各个进程无法访问其他进程的资源。分布式锁:当多个进程不在同一个系统中,用分布式锁控制多个进程对资源的访问。设计思路由于Redis是单线程模型,命令操作原子性,所以利用这个特性可以很容易的实现分布式锁。A用户端在Resdis写入1个KEY,其他的用户无法写入.
2021-08-08 15:36:19
1255
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人