- 博客(177)
- 资源 (1)
- 收藏
- 关注
原创 Java开发中的常用字段校验注解
在 Java 开发中,数据校验是确保应用程序的数据完整性和一致性的重要步骤。通过使用这些注解,可以有效地简化 Java 开发中的数据校验工作,确保应用程序的数据完整性和一致性。希望这些示例代码能帮助你更好地理解它们的用法和作用。
2024-06-15 14:50:57
874
1
原创 mysql分页查询优化
在数据量较大的情况下,使用LIMIT偏移量会导致查询效率低下。这种查询会读取 50050 条数据,并丢弃前 50000 条,只返回后 50 条。随着页码增大,查询的效率会显著降低。
2024-06-04 20:34:55
366
原创 mysql 索引和null值的关系
设计索引时,应充分考虑NULL值对索引效率和查询优化的潜在影响。对于可能包含大量NULL值的列,需要仔细权衡是否创建索引,以平衡查询性能与存储开销。:索引选择性衡量索引中不同值的比例,高选择性代表索引效率高。含有大量NULL值的索引会降低选择性,可能影响优化器对索引使用的决策。:索引包含NULL值会占用额外空间,因为每条索引记录需标记NULL状态,轻微增加索引大小和维护开销。等)且值为NULL,索引可能不会被使用,因为NULL与其他值的比较(除非。:在含有NULL值的索引列上,使用。
2024-06-03 20:42:44
844
1
原创 MySQL在某些情况下不使用索引
2、索引选择性低:如果索引列的值重复度很高(比如性别列,只有“男”和“女”两个值),索引的选择性就很低,这意味着使用索引可能并不会明显减少需要检查的行数,这时MySQL查询优化器可能会决定放弃使用索引而选择全表扫描。4、函数或表达式使用:在WHERE子句中,如果对索引列使用了函数或复杂的表达式,索引可能无法被有效利用,因为索引是基于列的原始值建立的。7、最左前缀原则:对于复合索引(多列索引),如果查询条件没有从索引的第一列开始,那么后续的列索引将无法被利用。
2024-06-03 20:39:07
384
原创 数据库主键设计:深入探讨与实践
在数据库设计中,主键的选择和生成策略对于系统的性能、可维护性和扩展性至关重要。本文将深入探讨几种常见的主键生成策略,分析它们的优缺点,并提供一些优化建议。
2024-05-15 11:45:06
465
原创 一、springboot 集成 spring-boot-starter-data-redis
文章目录前言一、 springboot 版本二、引入 redis 依赖三、增加配置文件四、增加配置类1、 RedissonConfig2、RedisConfig五、增加操作类,主要操作 string总结前言一、 springboot 版本 <spring-boot.version>2.3.5.RELEASE</spring-boot.version> <dependencyManagement> <dependencies&g
2024-03-19 15:15:29
946
原创 三、实现fastdfs文件上传与记录文件日志
希望实现 FastDFS文件上传的同时并记录文件日志提示:以下是本篇文章正文内容,下面案例可供参考。
2024-03-18 20:27:07
653
1
原创 二、实现fastdfs文件上传与延迟删除功能的Spring Boot项目
如何在Spring Boot项目中集成FastDFS实现文件上传功能,并添加支持延迟删除功能的实现。
2024-03-18 20:00:51
370
原创 装发送短信设计:实现灵活可扩展的短信发送功能
通过以上设计, 实现了一个灵活可扩展的短信发送功能,可以根据不同需求发送不同类型的短信通知,并根据短信类型动态获取对应的短信发送器。这样的设计使得代码结构清晰,易于维护和扩展,同时提高了代码的复用性和可读性。在实际项目中, 可以根据具体需求进一步定制和扩展短信发送功能,满足不同业务场景的需求。
2024-03-14 16:54:41
575
原创 数据库乐观锁
如果有冲突,则回滚事务。如果写操作非常频繁,乐观锁可能会导致大量的重试和性能下降。在这种情况下,可能需要考虑使用其他并发控制策略,如悲观锁或分布式锁。如果更新操作没有影响到任何行(即返回的行数为0),则表示有其他事务修改了数据,此时应根据业务需求进行处理,例如重试、记录日志或返回错误给调用者。在应用程序中,你需要按照上述步骤执行查询和更新操作,并处理可能出现的并发冲突。具体的实现方式取决于你使用的编程语言和框架。综上所述,实现乐观锁时需要注意以上常见错误,并结合具体的业务场景和需求进行合理的设计和实现。
2024-03-12 10:20:11
723
原创 定时任务探测发送邮件方法卡主超时不响应
业务服务调用一次,先写入数据库,然后定时任务 3s 查看 5 条,轮询发送 ,没发送 1 条,sleep 500ms,防止邮件服务器压力过大。1、cs 服务,发送业务服务定时任务,每 3s 一次,先写入当前时间都 reids 中,24h 过期。事故原因是,发邮件服务器不知为什么阻塞了,定时任务一直结果不了,卡住了,导致 邮件发送积压。2、增加一个定时任务,每 min 查看这个 key ,是否 5min 没更新,发送超时邮件。业务服务,调用基础服务 发邮件 一直没发出去,原因是 基础服务 发邮件逻辑是。
2024-02-26 17:36:51
501
原创 2、上线过程复盘
今年质量管理部联合研发部门一起做质量共建,为保证产品上线质量,为减少出现线上问题或事故;复盘过程中产品、测试、开发三方针对上线版本中存在的问题进行客观的分析及总结,不强制追究责任,更注重总结上线问题,意在减少上线过程中出现重复、基础的问题,减少简单错误出现次数,提高上线效率和质量。1)因为没有/有某个权限或指定角色 导致的问题或冲突;2)三方系统异常导致本项目上线受影响;3)线上/测试环境配置不一致导致问题;5)文件格式/大小/数量无限制;2)历史数据导致异常;4)字段长度未限制;1)刷数据导致异常;
2024-01-25 20:01:28
374
原创 java 业务 上线前准备
产品、开发、测试三方联合针对本次上线进行上线前checklist,互相提醒,避免因工作遗漏或沟通不及时导致上线时间过长或不能正常上线,意在为上线提效。4、上下游系统是否具体支持条件,如OA表单配置是否完成,测试流程是否配置等;上线当天早晨,全部项目组一起参与,明确各自的职责,时间尽量控制在半小时内;确认是普通上线或紧急上线,是否需要催相关领导审批;4)测试是否需要提前准备或开发、产品确认相关事项;5)产品是否需要提前准备相关事项,如权限配置等;5、相关定时任务、相关配置的开关是否启动等;
2024-01-25 19:59:38
458
原创 配置中心原理和选型
Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。整体上,Nacos部署简便,整合了注册中心和配置中心,方便管理和监控;这些问题当单体服务,或者公司服务少了,不需要考虑,随着人员的增多,服务的增多,就需要统筹考虑了。eureka,就很好,100% 可以,虽然配置可能不一致,但是修改频率很低,最终是一致就可以。是 cp 的,配置中心要求服务必须是高可用的,网络出现分区也要可以使用。
2024-01-20 14:55:21
957
原创 springboot2.3.0.升级 2.6.7
参考:https://blog.youkuaiyun.com/m290345792/article/details/123126937。spring 2.6.4 去除了对 ribbon 的支持,需要全部移除 ribbon 组件,使用。该组件,里面引用了 boot1.5.4 ,引用了 ribbon ,需要去除。坑 1: 进入页面 没有发现 注解内容,多方排查 ,需要增加。swager 升级为 3.0 版以上问题。增加 用户名和密码配置。
2024-01-09 17:55:14
609
原创 redis 主从同步和故障切换的几个坑
当我们从节点读取一个数据时,和主节点读取的数据不一致,这是因为主从同步的命令是异步进行的,一般情况下是主从同步延迟导致的,为什么会延迟,主要二个原因1、网络状态不好2、网络没问题,从节点执行耗时命令,之前的命令在排队,没有执行到对于 1,我们要检查网络状态,在硬件网络尽量把主从机器部署在一起,对于 2 ,可以开发一个监控主从复制进度的程序,及时的把主从复制进度大于一定差值的客户端移除,当复制进度赶上时,再增加进去数据不一致是不可避免的,我们尽量缩小不一致的时间,或者重要数据直接读主库我们使用主从集群
2024-01-09 16:43:14
1234
原创 idea统一代码格式,插件 Eclipse Code Formatter 和Save Actions
2、配置Eclipse Code Formatter:File → Settings → Other Settings → Eclipse Code Formatter。链接: https://pan.baidu.com/s/1yRpuYKf38flGGi-jwNID2Q?3、配置Save Actions:File → Settings → Other Settings → Save Actions。1、安装idea插件:File → Settings → plugins → 搜索插件并安装重启。
2024-01-03 15:41:12
895
原创 redis缓存与数据库同步策略
如何保证缓存(Redis)与数据库(MySQL)的一致性?对于热点数据(经常被查询,但不经常被修改的数据),我们一般会将其放入 Redis 缓存中,以增加查询效率,但需要保证从 Redis 中读取的数据与数据库中存储的数据 终是一致的,这就是经典的缓存与数据库同步问题。那么,如何保证缓存(Redis)与数据库(MySQL)的一致性呢?根据缓存是删除还是更新,以及操作顺序大概是可以分为下面四种情况:1.先更新数据库,再更新缓存2.先更新缓存,再更新数据库3.先删除缓存,再更新数据库。
2023-12-27 11:05:50
1126
原创 删除数据后, redis 内存占用还是很高怎么办?
active-defrag-cycle-max 75: 表示自动清理过程所用 CPU 时间的比例不高于 75%,一旦超过,就停止清理,从而避免在清理时,大量的内存拷贝阻塞 Redis,导致响应延迟升高。active-defrag-threshold-lower 10: 表示内存碎片空间占操作系统分配给 Redis 的总空间比例达到 10% 时,开始清理.1、最简单粗暴 :重启 redis 实例 ,缺点是导致一部分数据丢失、如果数据量大,aof 日志恢复,时间长,恢复期间无法提供服务。
2023-12-27 10:26:36
607
原创 Java获取客户端IP
X-Real-IP 获取不到,就依次获取Proxy-Client-IP 、WL-Proxy-Client-IP 、HTTP_CLIENT_IP 、 HTTP_X_FORWARDED_FOR。10.100.123.87 这个地址不是我想要的,和运维沟通后,是ha 的地址, 深入沟通后,这个是配置问题,nginx增加了这个配置,ok 了,目前是 cs 服务增加,后续需要单独申请。如果 X-Forwarded-For 获取不到,就去获取X-Real-IP ,X-Real-IP 就是记录请求的客户端真实IP。
2023-12-19 10:43:19
4149
原创 jvm 垃圾回收器
然而,对于特定的应用程序和场景,性能表现仍需进行实际测试和评估。需要注意的是,CMS垃圾收集器的并发标记和并发清理阶段与应用程序并发执行,以减少对应用程序暂停时间的影响。需要注意的是,Young GC和Full GC的行为取决于所使用的垃圾收集器类型和其配置参数。在没有显式设置初始堆大小的情况下,JVM可能会根据可用的物理内存来设置一个较大的初始堆大小,以充分利用系统资源。综上所述,合理配置初始堆大小(使用**-Xms**参数)可以避免不必要的资源浪费和性能问题,确保JVM在启动时具有适当的初始堆大小。
2023-05-16 16:36:31
1213
原创 通过yum获取rpm离线安装包
通过yum获取rpm离线安装包离线安装不可避免需要下载对应安装包,此时可以通过yum命令只下载不安装的rpm安装包。此时就将 nfs-utils 所需的安装下载到当前目录。如果服务器已经安装,出现当前服务器已安装导致不能下载安装包的情况。
2023-03-29 19:06:34
1082
原创 JVM(一)——浅析JVM类加载机制及双亲委派机制
将java文件打成jar包或者war包之后,由某个主类的main函数进行启动,需要通过类加载器把主类加载到JVM,jar包里的类不是一次性加载,是在使用到的时候才会加载。由C++实现,嵌入在JVM内部,负责加载JRE的lib目录下的核心类库,比如rt,jar、charsets.jar等由Java代码实现,在JVM启动器实例(sun.misc.Lanucher)初始化时创建,是负责加载JRE的lib目录下ext的jar包由Java代码实现,在JVM启动器实例(sun.misc.Lanucher)初始化时创建,
2023-03-28 19:38:43
457
原创 SpringCloud之注册中心nacos安装
这里的 IP 应该使用你本机分配到的内网 IP 地址。如果你使用的是 mac 或者 linux 系统,可以在命令行使用 ifconfig | grep “inet” 命令来获取本机 IP 地址,下图中红框标出的这行 inet 地址 192.168.1.100 就是本机的 IP 地址。所以现在我们要在 Nacos Server 的 conf 目录下创建 cluster.conf 文件,并将 nacos-cluster1 和 nacos-cluster2 这两台服务器的 IP 地址 + 端口号添加到文件中。
2023-03-27 14:28:41
581
原创 015行为型-职责链模式
责链模式是一种设计模式,其目的是使多个对象能够处理同一请求,但是并不知道下一个处理请求的对象是谁。它能够解耦请求的发送者和接收者之间的直接耦合关系。举个例子,假设你的公司有一个报销流程,需要依次提交给主管、经理和财务部门审核,如果一个人无法审核,那么就需要向下一个人提交审核请求。在这种情况下,职责链模式非常适用。在职责链模式中,每个处理请求的对象都可以尝试处理请求,如果自己无法处理,则将请求传递给下一个对象,直到有一个对象能够处理请求为止。
2023-03-24 18:56:43
571
原创 011代理模式
其中,@Before和@AfterReturning是比较简单的通知,它们分别在UserService的方法执行前和执行后被调用,而@Around是比较灵活和强大的通知,它可以在方法执行前、执行后和执行前后都被调用,并且还可以控制方法的执行过程。代理类继承了目标类,同时也包含了目标类的所有方法,代理类重写了目标类的方法,在重写的方法中加入了自己的扩展逻辑。JDK 动态代理是基于接口来实现的,它要求被代理的目标类必须实现接口,代理类实现了与目标类相同的接口,代理类的方法里面调用了目标类的方法。
2023-03-24 14:26:28
255
ifc 文件模型
2017-10-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人