
后端
文章平均质量分 63
Java
尽兴-
时间宝贵
展开
-
缓存分片哈希 vs 一致性哈希:优缺点、区别对比及适用场景(图示版)
在实际工程中,应根据业务需求选择合适的算法。对于动态扩展和高可用性要求高的场景,一致性哈希是更优的选择;而对于简单固定的场景,缓存分片哈希则更为合适。在分布式缓存系统中,数据分布策略是设计的关键之一。缓存分片哈希和一致性哈希是两种常见的数据分布算法,它们各有优缺点和适用场景。一致性哈希中,可以为每个物理节点分配多个虚拟节点,进一步优化负载均衡。无论是哪种算法,哈希函数的选择都至关重要。每个键通过哈希函数映射到环上的某个位置,然后。)将数据映射到固定的缓存节点,其中。最近的节点作为目标节点。原创 2025-04-29 10:00:35 · 724 阅读 · 0 评论 -
缓存一致性深度解析:从理论到电商大厂实践
缓存一致性没有银弹,我们参考学习淘天和京东的方案差异也印证了。原创 2025-04-29 09:40:35 · 910 阅读 · 0 评论 -
TCP vs UDP:核心区别、握手过程与应用场景(附对比图)
SYN=1, ACK=1, seq=y, ack=x+1 (我准备好了,你呢?ACK=1, seq=x+1, ack=y+1 (确认!:同步初始序列号(ISN),确保双方收发能力正常。ACK=1, ack=u+1 (收到请求)ACK=1, ack=v+1 (确认断开)因为TCP是全双工的,两端需分别确认关闭。FIN=1, seq=v (我也要断开)SYN=1, seq=x (我要连接)FIN=1, seq=u (我要断开)直接发送数据包(无握手)原创 2025-04-28 19:55:49 · 1148 阅读 · 0 评论 -
Git 撤回合并提交
是我们经常使用的功能。然而,有时合并后可能会发现问题,需要撤回合并。本文将基于一次实际场景,详细介绍如何撤回未推送到远程仓库的合并提交。:以上方法适用于尚未推送到远程仓库的合并。如果已经推送到远程仓库,撤回合并会修改历史记录,可能需要强制推送(如果不知道合并前的提交哈希值,可以使用。中可以看到,合并提交的上一个提交是。在日常开发中,Git 的合并操作(如果不想修改提交历史,可以使用。根据实际需求选择合适的方法即可。找到合并前的提交哈希值(例如。确保生成了一个新的撤销提交。确保合并提交已被移除。原创 2025-04-27 09:59:46 · 516 阅读 · 0 评论 -
Mac「brew」快速安装Redis
这会将 Redis 作为后台服务启动。如果是手动启动的 Redis,可以按。打开终端(Terminal)。Redis 的配置文件位于。原创 2025-04-25 09:24:13 · 543 阅读 · 0 评论 -
Mac 「brew」快速安装MySQL
(curl按照提示设置 root 密码、移除匿名用户、禁止远程 root 登录等。使用 root 用户登录 MySQL「原创 2025-04-25 09:26:54 · 1252 阅读 · 0 评论 -
常用 Git 命令详解
Git 是一个强大的版本控制工具,广泛用于软件开发和团队协作中。掌握 Git 命令可以帮助开发者更高效地管理代码版本和项目进度。本文将介绍一些常用的 Git 命令,并提供示例以帮助你更好地理解和应用这些命令。原创 2025-04-17 09:01:21 · 655 阅读 · 0 评论 -
IDEA 修改格式化仅格式化本次改动代码
最近总是发现格式化的时候会格式化文件所有代码,提交Git 后再看提交日志,就很不清晰。原创 2024-12-14 12:12:49 · 574 阅读 · 0 评论 -
从 Excel 文件中读取数据生成 SQL 语句[快捷main方法]
通过这个简单的程序,我们可以高效地将 Excel 中的数据转换为 SQL 语句,从而简化了数据导入的过程。希望这篇文章对你有所帮助!原创 2024-12-10 14:18:36 · 629 阅读 · 0 评论 -
MySQL 存储引擎切换场景与示例
InnoDB:支持事务、行级锁和外键约束,适合高并发和复杂的事务处理。MyISAM:不支持事务,但查询速度较快,适合读多写少的场景。Memory:将数据存储在内存中,速度极快,但在重启后数据会丢失。CSVARCHIVE:适用于特定需求的存储引擎。原创 2024-11-26 17:35:39 · 877 阅读 · 0 评论 -
Redis模拟延时队列 实现日程提醒
通过Redis的有序集合和简单的定时器,能够实现一个简洁有效的延时任务队列。当然,这个示例是一个简化的模型,在生产环境中,你需要考虑任务的幂等性、系统崩溃后的恢复策略、任务的优先级等问题。希望本文能为你提供实现延时队列的思路和参考。原创 2024-11-20 16:25:05 · 521 阅读 · 0 评论 -
Java异步线程
异步编程是一种编程范式,允许程序在执行某些耗时操作时,能够继续执行其他任务。在传统的同步编程中,程序会在执行耗时操作时阻塞,直到该操作完成,这样可能导致用户体验不佳。而异步编程则允许程序在等待某个操作完成的同时,继续处理其他请求,从而提高了应用的并发性能。原创 2024-11-06 17:43:52 · 436 阅读 · 0 评论 -
浏览器请求无缝导入Apifox(无需客户端,在线使用)方法
浏览器请求无缝导入apifox原创 2024-08-20 11:32:06 · 1135 阅读 · 0 评论 -
Java File类(文件操作类)
测试当前 File 对象表示的文件是否为一个绝对路径名。,当传入的path是一个实际存在的路径时,该File对象表示一个目录;返回表示当前对象的文件名或路径名(如果是路径,则返回最后一级子路径名)将当前 File 对象指定的文件更名为给定参数 File 指定的路径名。通过这种方式,我们可以。返回当前 File 对象指定的目录中满足指定过滤器的文件列表。创建一个目录,它的路径名由当前 File 对象指定。创建一个目录,它的路径名由当前 File 对象指定。返回当前 File 对象表示的文件最后修改的时间。原创 2024-03-27 20:52:33 · 1048 阅读 · 0 评论 -
Java常用Lambda表达式与Stream流应用
Lambda表达式最初由函数式编程语言引入,但现在已经成为许多编程语言中的常见特性。原创 2024-03-27 20:40:34 · 857 阅读 · 3 评论 -
Mybatis动态SQL中IF标签判断失效
短文简说,在使用Mybatis动态sql 过程中需要if判断失效问题:如图,我将改参数传递到Mybatis中但是实际查询结果并未改变,SQL条件失效。原创 2023-11-28 13:10:28 · 816 阅读 · 0 评论 -
SQL 遇上 IN / NOT IN 注意有坑️
这就是有问题的地方,在项目实际使用SQL过程中及时某个字段存在null值但是不代表这条记录无效,当我同时需要这些null记录的时候就不能用 NOT IN 过滤了。我是用的数据库是达梦,其他数据库如果在使用 IN 或 NOT IN 某个字段时候如果字段存在null值,会存在查询不出结果情况,注意需要 额外增加条件。注意num字段中是包含null值的,接下来我需要查询出 num 字段中不包含99的所有数据。正常我们使用 IN 或 NOT IN是需要结果中包含某值或者不包含某值。这才是我们想要的结果。原创 2023-11-16 09:36:05 · 1117 阅读 · 0 评论 -
Java实现文本查重(相似度) 无三方工具版本
为了避免此中情况发生,考虑对关键数据信息进行查重校验,原计划采用第三方标准查重接口,但过程比较繁琐,需要商务对接等时间,所以暂时在自身系统中实现数据查重检验。在对目标字符串和基础记录字符串进行预处理时,需要注意选择合适的方式来规范化这些字符串,例如字母大小写、空格和特殊符号等。在进行预处理时,要根据实际情况选择适当的方式来规范化文本,以便提高查重精度。当然,实现标准查重类似知网论文查重那种系统就太麻烦了,甚至可以独立出来一套系统了,所以就简单实现查重功能,针对名称 和 大文本内容实现查重。原创 2023-11-14 10:43:45 · 4061 阅读 · 0 评论 -
Java Aspose.Words进行word文档书签替换 、文档拼接
最近接到一个需求,步骤表单数据融合到world里。这个听起来简单,结合三方的DocxHelper填充数据不是什么难事,但是其中有一个需求是将动态将一个模版拼接多次。这个模版的数据是一个表格,每一列数据都要填充一次模版,所以模版循环拼接的次数是动态的。常规的子模版文件拼接父模版文件也是通过Aspose.Words完成的,拼接的位置是通过模版中的书签来确定,但是如果循环拼接就存在一个问题,这个书签我要动态的调整。昨天也是花了好久找这个修改书签的资料,但是大多都不好用,最后摸索出来一个方法,记录一下。原创 2023-10-13 11:34:39 · 1740 阅读 · 2 评论 -
Java导出Excel数据内容换行
一般我们所做的项目中不管是管理项目还是其他系统,基本上涉及表单基本上都会有导出数据的功能,将当前页面的数据导出到Excel中也是常规做法。正常的方式我们可能会想到将换行的字符串中拼接“\n” 或者 “”之类的换行符进行操作,但是实际上Excel不会识别成换行符。在 ASCII 编码中,CHR(10) 表示换行符(Newline),它是 ASCII 表中的第 10 个字符。但是指定的一些数据,比如一些分类数据或是逗号分隔的字符串,会有在Excel中实现换行的需求,其实很简单。原创 2023-09-25 16:12:34 · 4648 阅读 · 0 评论 -
SQL多行值合并一行字符串逗号分隔(LISTAGG )
是一个用于聚合操作的字符串函数,它在Oracle数据库系统中可用,当然达梦也可以。在其他数据库系统中,可能会有类似的函数用于字符串聚合操作,但具体的函数名称、语法和用法可能会有所不同。函数将相同学生的 “成绩” 字段值以逗号分隔的形式合并成一个字符串,并按照 “科目” 字段的顺序进行排序。在查询的SQL使用中我们可能会有这样一种需求:展示学生姓名和科目成绩,科目成绩用逗号分隔。聚合函数是 Oracle 数据库中的特定函数,用于将多个行的值进行连接。假设我们有一张学生表:姓名,科目,成绩。原创 2023-09-25 15:43:32 · 6372 阅读 · 1 评论 -
LINUX 下部署 DOCLEVER
LINUX 部署 DOCLEVER官网文档地址:文档阅读-DOClever 移动时代首选接口管理平台!配置Node环境cd /usr/localwget https://nodejs.org/dist/v9.3.0/node-v9.3.0-linux-x64.tar.xzxz -d node-v9.3.0-linux-x64.tar.xztar -xvf node-v9.3.0-linux-x64.tarmv node-v9.3.0-linux-x64 ./node 配置环境变量转载 2021-11-05 17:06:40 · 522 阅读 · 0 评论 -
maven安装报错 - please verify you invoked maven from the correct directory.
maven安装报错 - please verify you invoked maven from the correct directory.原创 2023-03-01 12:38:54 · 2805 阅读 · 1 评论 -
PostgreSQL 批量创建序列并使用序列
迁移生产数据库过程中发现问题,PG多张表公用一个序列,实际上如果表中数据每日变动量较小的话理论上是可行的。但是如果太大就考虑需要单独为每张表建立一个序列,并使其id自增。不过确实没有mysql方便可以直接设置“自增主键”,每次创建序列确实麻烦。于是...原创 2023-03-17 11:18:27 · 2272 阅读 · 0 评论 -
初识 Nacos,Feign
Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。他是使用 java 编写。原创 2023-04-06 18:09:49 · 323 阅读 · 0 评论 -
mybatis插入记录返回ID
执行插入数据库后我们需要这个插入数据的id;原创 2023-04-06 18:13:12 · 585 阅读 · 0 评论 -
SQL清空表(高效)
一般情况下我们需要清空表用到delete,但是delete是一条一条数据来删除的,直到表清空,但是遇到数据量大的时候差距就很明显了,耗时久。当然有更好的办法,删除表数据但保留表结构使用truncate更快速也更安全。原创 2023-04-12 16:41:33 · 8928 阅读 · 0 评论 -
redis-Pipeline(管道)
redis-Pipeline(管道)原创 2023-04-25 21:56:55 · 1198 阅读 · 0 评论 -
binlog、redoLog、undoLog(简洁)
主要记录了数据的逻辑变化,比如一条INSERT语句,对应一条DELETE的undo log,对于每个UPDATE语句,对应一条相反的UPDATE的undo log,这样在发生错误时,就能回滚到事务之前的数据状态。是InnoDB存储引擎层的日志,又称重做日志文件,用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来。是归档日志,属于逻辑日志,是以二进制的形式记录的,记录数据库执行的写入性操作(不包括查询)。主要场景有两个“ 主从复制”和“数据恢复”;原创 2023-05-06 10:15:35 · 103 阅读 · 0 评论 -
JWT讲解
传统cookie&session模式是通过认证后将用户session信息保存在服务端,下次用户请求时候带上cookie(也可以叫JssionID)值,服务器就能够识别是那个用户发出的请求。但是如果在分布式部署环境下cookie&session模式就会存在session共享问题(有多台服务器,session只存了其中一台服务器中,下次访问其他服务器需要重新校验),不利于扩展。随着用户量的增多,服务端的开销也会变大。原创 2023-05-22 10:24:59 · 246 阅读 · 1 评论 -
IDEA 中关闭覆盖率提示
不小心点到 Run 'Application' with Coverage 按钮。原创 2023-05-25 17:32:39 · 3203 阅读 · 0 评论 -
优雅的判断实体不为null
Optional类是Java 8中新增加的一个类,它可以用来解决空指针异常问题,同时也可以用来优雅地判断一个实体对象是否为null。Assert是JUnit框架中提供的一种断言方式,它可以用来判断某个条件是否为true,如果不为true则会抛出异常。这是最简单也是最普遍的判断方式,只需使用if语句判断实体对象是否为null,如果不为null,则执行相应处理逻辑。在实际开发中,使用哪种方式来判断实体对象是否为null,要根据具体情况来决定。,则可以使用Assert断言来判断。原创 2023-05-25 17:41:14 · 4964 阅读 · 0 评论 -
SpringBoot - 配置文件敏感信息加密
目的:为了保护敏感的数据库配置信息(如数据库用户名和密码),通常可以将它们加密后再储存在项目的配置文件中,以增加应用程序的安全性。Java Jasypt(Java Simplified Encryption)是一个Java加密库,用于易于使用的加密和解密文本、二进制数据和密码。它提供了简单、安全、灵活的加密技术,包括基于口令的、密钥的、哈希的和混淆的加密。原创 2023-06-07 12:24:24 · 531 阅读 · 0 评论 -
若依分离版 - 限制系统最大登录用户功能 - 实现
今天在处理这个功能时本能地想到,好像在配置文件中有印象过通过配置用户数量就可以实现 限制用户功能。但是找了半天没找到 ,后来想到 那是采用session时的一个maxSession参数,分离版使用JWT没有用到session也就没了。后来我就好奇为什么JWT没有类似的参数配置...(其实是因为我懒,不想写哈哈哈)原创 2023-06-19 18:24:48 · 979 阅读 · 0 评论 -
springBoot 部署Docker环境中
DockerFile文件内容(新建txt,修改文件内容后重命名)将你的jar包单独放一个文件夹中,开始编写docke。原创 2023-07-18 12:32:16 · 211 阅读 · 1 评论 -
GIT生成SSH密钥、IDEA拉取代码
1、在对应环境(或内网)文件内,点击鼠标右键,选择"Git Bash Here",打开Git命令窗口。在C:\用户\Administrator\.ssh目录下,查看生成的SSH密钥。注意:"21D@qq.com"是你自己的邮箱地址。最后下载完成后IDEA会跳转到新项目窗口。gitconfig里面是你的配置信息。打开IDEA,新创建版本项目。原创 2023-08-09 09:30:55 · 1137 阅读 · 0 评论