自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(181)
  • 收藏
  • 关注

原创 线程池中线程异常后,销毁还是复用?

提交到线程池并在执行过程中抛出异常时,如果这个异常没有在任务内被捕获,那么该异常会导致当前线程终止,并且异常会被打印到控制台或日志文件中。线程池会检测到这种线程终止,并创建一个新线程来替换它,从而保持配置的线程数不变。提交的任务,如果在任务执行中发生异常,这个异常不会直接打印出来。相反,异常会被封装在由。在这种情况下,线程不会因为异常而终止,它会继续存在于线程池中,准备执行后续的任务。提供更灵活的错误处理机制,因为它允许调用者决定如何处理异常,而。时,未捕获异常导致线程终止,线程池创建新线程替代;

2024-06-27 15:19:22 160

原创 面试官:为什么 Redis 不立刻删除已经过期的数据?

Redis 给缓存数据设置过期时间有什么用?Redis 是如何判断数据是否过期的呢?Redis 过期 key 删除策略了解么?大量 key 集中过期怎么办?

2024-06-27 15:18:05 776

原创 Spring Boot 性能太差?试试这几招

默认 Tomcat 容器改为 Undertow(Jboss 下的服务器,Tomcat 吞吐量 5000,Undertow 吞吐量 8000)线程池中执行,而这个线程池中的所有线程都是 Daemon(守护)线程,所以,当主线程结束时,这些线程无论执行完毕都会退出系统。实例就可以作为这次调用的契约,在将来任何场合,用于获得最终的计算结果。方法中,它会在一个新线程中,执行传入的参数。方法,这个方法可能是比较慢的,但这并不影响。这两个方法如果在不指定线程池的情况下,都是在。在该示例中,启动一个线程,此时。

2024-06-25 16:05:46 313

原创 一张长图透彻理解SpringBoot 启动原理,架构师必备知识,不为应付面试!

下图代码说明了,Spring在初始化全部 单例Bean以后,会执行 SmartInitializingSingleton 接口。SpringBoot 会在Spring完全启动完成后,才开启Http流量。应该在Spring启动完成后开启入口流量。Rpc和 MQ流量 也应该如此,所以建议大家 在 SmartLifecype 或者 ContextRefreshedEvent 等位置 注册服务,开启流量。

2024-06-25 16:04:58 912

原创 为什么一些团队反对使用Lombok?

Java,作为一款非常热门的编程语言,尽管它有着非常丰富的语言特性,完全面向对象编程,编程高度规范化,但是也有一个最受大家诟病的一个缺点:啰嗦,尤其是当你开发了很多年之后,你会明显的感受到,相比动态语言,java 定义变量之前,要先创建类,然后定义变量类型,每个类要写很多的等等方法。尤其是当一个实体类,高达几十个变量时,写完get、set方法之后,一个实体类的长度快接近一千行。为了避免写这些“罗嗦。

2024-06-24 16:31:56 817

原创 ISBN查询图书api接口

"bookDesc": "《超级漫画素描技法:头身比篇素描》中强调素描要在一开始的时候就做好决定。要把什么东西画成什么样子呢?“把这个东西画成这个样子。"bookName": "超级漫画素描技法.基础篇","author": "林晃,松本刚彦,森田和明","clcName": "素描、速写技法","format": "16开-胶版纸","press": "中国青年出版社","pressPlace": "北京","binding": "平装","pages": "416页",伽v 809137232。

2024-06-24 16:25:19 1111

原创 面试必备:10种分布式ID的生成方案

日常工作中,我们开发的系统、或者中间件,都是分布式部署的。比如你的订单数据库,做了分库分表,这时候,你需要一个唯一的ID来标记一条数据。这时候,就需要分布式ID。分布式ID是在分布式系统下使用的ID,用于在多个节点中生成全局唯一的标识符。

2024-06-24 16:24:20 685

原创 MySQL 中 Varchar(50) 和 varchar(500) 区别是什么?

其实sort_merge_passes对应的就是MySQL做归并排序的次数,也就是说,如果sort_merge_passes值比较大,说明sort_buffer和要排序的数据差距越大,我们可以通过增大sort_buffer_size或者让填入sort_buffer_size的键值对更小来缓解sort_merge_passes归并排序的次数。我发现86%的时花在数据传输上,接下来我们看状态部分,关注Created_tmp_files和sort_merge_passes。存储空间上是一样的,真的是这样吗?

2024-06-14 10:47:49 1201

原创 如何实现一个合格的分布式锁

在多线程的环境下,为了保证一个代码块在同一时间只能由一个线程访问,Java中我们一般可以使用语法和去保证,这实际上是本地锁的方式。而在如今分布式架构的热潮下,如何保证不同节点的线程同步执行呢?实际上,对于分布式场景,我们可以使用分布式锁,分布式锁是用于分布式环境下并发控制的一种机制,用于控制某个资源在同一时刻只能被一个应用所使用。综上所述,基于 Redis 节点实现分布式锁时,我们至少需要实现以下需求:加锁/解锁包括了读取锁变量、检查锁变量值和设置锁变量值三个操作,但需要以原子操作的方式完成;

2024-06-14 10:43:53 311

原创 如何设计一个秒杀系统?

如何从整体角度,去设计一个秒杀系统。秒杀系统主要有这几个特征:瞬时间的流量特别高。过了秒杀的时间,流量就会瞬时结束大批量用户同时请求极少数商品在秒杀时间前,可能会有很多请求过来。比如在11点抢票开始,10点59分你可能会提前去刷新页面请求。所以特意写篇文章给大家说说。

2024-06-12 11:05:42 949

原创 @Transactional 中使用线程锁导致了锁失效,震惊我一整年!

很多小伙伴使用Spring事务时,为了省事都喜欢使用。但是配合锁,会导致一些预期之外的问题!在此举例说明。

2024-06-12 10:24:27 213

原创 Spring Boot 分片上传、断点续传、大文件上传、秒传,应有尽有

分片上传,就是将所要上传的文件,按照一定的大小,将整个文件分隔成多个数据块(我们称之为Part)来进行分别上传,上传完之后再由服务端对所有上传的文件进行汇总整合成原始的文件。断点续传是在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传或下载,如果碰到网络故障,可以从已经上传或下载的部分开始继续上传或者下载未完成的部分,而没有必要从头开始上传或者下载。本文的断点续传主要是针对断点上传场景。

2024-06-11 09:27:09 1221

原创 ISBN查询图书api接口

"bookDesc": "《超级漫画素描技法:头身比篇素描》中强调素描要在一开始的时候就做好决定。而绘画中的素描草图,就是从最初决定的基点到最后完成作品必须要走的一条路。"bookName": "超级漫画素描技法.基础篇","author": "林晃,松本刚彦,森田和明","clcName": "素描、速写技法","format": "16开-胶版纸","press": "中国青年出版社","pressPlace": "北京","binding": "平装","pages": "416页",

2024-06-11 09:22:10 1170

原创 公司禁止在 SpringBoot 中使用 @Autowired 注解,为什么?

我们已经看到,基于字段的注入应该尽可能地避免,因为它有许多缺点,无论它看起来多么优雅。推荐的方法是使用基于构造函数和基于setter的依赖注入。对于必需的依赖,建议使用基于构造函数的注入,设置它们为不可变的,并防止它们为 null。对于可选的依赖项,建议使用基于 setter 的注入。

2024-06-11 09:17:58 1002

原创 还在用WebSocket实现实时消息推送?

消息中间件应用越来越广泛,不仅可以实现可靠的异步通信,还可以实现即时通讯,掌握一个消息中间件还是很有必要的。如果没有特殊业务需求,客户端或者前端直接使用 MQTT 对接消息中间件即可实现即时通讯,有特殊需求的时候也可以使用 SpringBoot 集成 MQTT 的方式来实现,总之消息中间件是实现即时通讯的一个好选择!

2024-05-30 20:59:47 1019

原创 把 Spring Boot 项目从 18.18M 瘦身到 0.18M,部署超级快

SpringBoot部署起来虽然简单,如果服务器部署在公司内网,速度还行,但是如果部署在公网(阿里云等云服务器上),部署起来实在头疼:编译出来的 Jar 包很大,如果工程引入了许多开源组件(SpringCloud等),那就更大了。这个时候如果想要对线上运行工程有一些微调,则非常痛苦。

2024-05-30 20:58:55 292

原创 循环增删 ArrayList ,小心有坑

因为它在循环第二次的时候,也remove成功了,但是第三次判断next的时候cursor的值为2导致不等于现在的size 1,所以执行了next方法,最重要的来了,之前remove的操作导致ArrayList的modCount值加1,然后Itr类中的expectedModCount保持不变,所以会抛出异常。因为它在remove元素1之后,它的size-1变成1,然后Itr内部的cursor变量由0变成1,此时1=1,循环结束,所以成功了。其实它只循环了一次,所以成功了。

2024-05-29 16:09:33 311

原创 SpringBoot的自动装配

Spring Boot 的自动装配(Auto-Configuration)是指 Spring Boot 会根据项目中添加的依赖和其他因素,自动配置你的 Spring 应用程序。这一特性使得开发者在创建 Spring 应用程序时,可以省去大量的手动配置工作,从而快速启动和运行应用程序。

2024-05-29 16:08:11 856

原创 Spring如何管理Bean的生命周期呢?

首先,你需要在Spring的配置文件(如XML配置文件或Java配置类)中定义Bean。这包括指定Bean的类名、作用域、初始化方法、销毁方法以及可能的依赖关系等。Spring容器会读取这些配置,并将Bean定义信息存储在其内部的数据结构中,通常是BeanDefinition对象。

2024-05-28 09:44:55 1139 1

原创 别再用 BeanUtils 了,这款 PO VO DTO 转换神器不香么?

关于lombok和mapstruct的版本兼容问题多说几句,maven插件要使用3.6.0版本以上、lombok使用1.16.16版本以上,另外编译的lombok mapstruct的插件不要忘了加上。介绍一个开源项目 mapstruct ,可以轻松优雅的进行转换,简化你的代码。实体类是开发过程少不了的,就算是用工具生成肯定也是要有的,需要手写的部分就是这个Mapper的接口,编译完成后会自动生成相应的实现类。mapper可以进行字段映射,改变字段类型,指定格式化的方式,包括一些日期的默认处理。

2024-05-28 09:44:02 134

原创 ISBN查询图书api接口

"bookDesc": "《超级漫画素描技法:头身比篇素描》中强调素描要在一开始的时候就做好决定。而绘画中的素描草图,就是从最初决定的基点到最后完成作品必须要走的一条路。"bookName": "超级漫画素描技法.基础篇","author": "林晃,松本刚彦,森田和明","clcName": "素描、速写技法","format": "16开-胶版纸","press": "中国青年出版社","pressPlace": "北京","binding": "平装","pages": "416页",

2024-05-27 08:50:11 1547

原创 Java如何根据历史数据预测下个月的数据?

现在在 AI 的大环境当中,有很多人解除到关于预测模型,而且现在的客户接触到了 AI 这块的内容之后,也不管现在的项目是什么样子的,就开始让我们开发去做关于预测的的相关内容,今天了不起就来带大家看看如何使用 Java 代码来做预测。

2024-05-27 08:48:38 394

原创 使用缓存,踩过的7个坑

缓存在我们日常工作中,经常会使用,但如果用不好坑也挺多的。这篇文章总结了我工作中使用缓存遇到过的7个坑,还是非常有参考价值得,希望对你会有所帮助。

2024-05-25 09:47:11 607

原创 居然还有人不知道如何在 IDEA 中生成 Maven 依赖关系图?

IDEA提供了查看依赖关系的方式,但是使用起来目前的IDE都还不是很方便,还只能是一个简单的辅助,拖动起来查看太麻烦。不过有IDEA插件可以更方便的做依赖关系冲突排查。

2024-05-25 09:42:45 304

原创 如何优雅的实现在线人数统计功能?

zadd命令有三个参数key:有序集合的名称。score1、score2 等:分数值,可以是整数值或双精度浮点数。member1、member2 等:要添加到有序集合的成员。

2024-05-25 09:41:54 268

原创 10个高级的 SQL 查询技巧

如果您注意到,CTE很有用,因为您可以将代码分解为较小的块,但它们也很有用,因为它允许您为每个CTE分配变量名称(即。递归CTE尤其有用,它涉及查询组织结构图,文件系统,网页之间的链接图等的分层数据,尤其有用。示例问题:给定下面的员工表,写出一个SQL查询,了解员工的工资,这些员工比其管理人员工资更多。例如,如果您有一个月列,并且您希望为每个月创建一个单个列,则可以使用语句追溯数据的情况。示例问题:给定天气表,写一个SQL查询,以查找与其上一个(昨天)日期相比的温度较高的所有日期的ID。

2024-05-24 09:11:47 789

原创 浅谈 Java 反射技术

反射 (Reflection) 是 Java 的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性。Oracle 官方对反射的解释是:简而言之,通过反射,我们可以在运行时获得程序或程序集中每一个类型的成员和成员的信息。程序中一般的对象的类型都是在编译期就确定下来的,而 Java 反射机制可以动态地创建对象并调用其属性,这样的对象的类型在编译期是未知的。所以我们可以通过反射机制直接创建对象,即使这个对象的类型在编译期是未知的。

2024-05-23 09:03:57 471

原创 为什么不推荐在Spring Boot中使用@Value加载配置

比如,同一个配置,可能背多个Service或者Controller使用,当我们再要修改它的时候,就会存在一个遗漏的风险。注解相信很多Spring Boot的开发者都已经有接触了,通过使用该注解,我们可以快速的把配置信息加载到Spring的Bean中。其他Service或者Controller要使用这些配置的时候,就通过注入。另外,在这里,其实还可以增加对配置的校验,主要在pom.xml中引入。这个注解可以说非常的好用!来分类和加载各种配置信息,比如,我要加载关于。这就轻松实现配置的校验了,是不是很方便呢?

2024-05-23 09:02:58 124

原创 Spring Boot中的 6 种API请求参数读取方式

使用Spring Boot开发API的时候,读取请求参数是服务端编码中最基本的一项操作,Spring Boot中也提供了多种机制来满足不同的API设计要求。接下来,就通过本文,为大家总结6种常用的请求参数读取方式。如果你发现自己知道的不到6种,那么赶紧来查漏补缺一下。如果你知道的不止6种,那么告诉大家,一起互相学习一下吧~

2024-05-23 09:02:10 461 1

原创 用了Stream,代码丑爆了!姿势不对,别喷!

stream和parallelStream的简单区分:stream是顺序流,由主线程按顺序对流执行操作,而parallelStream是并行流,内部以多线程并行执行的方式对流进行操作,但前提是流中的数据处理没有顺序要求。Java 8 是一个非常成功的版本,这个版本新增的Stream,配合同版本出现的 Lambda ,给我们操作集合(Collection)提供了极大的便利。Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行操作,比如:筛选、排序、聚合等。

2024-05-21 09:46:02 771

原创 对象属性拷贝,常用库工具对比分析

下面我们来创建两个类FromBeanToBean//... 省略 setter 和 getter//... 省略 setter 和 getter/*** 使用的工具包名称* @return*//*** 执行复制* @return*//*** 进行复制*/System.out.println("使用的工具包:" + beanCopyService.methodName());

2024-05-21 09:40:18 372

原创 Springboot 配置文件、隐私数据脱敏的最佳实践

这几天公司在排查内部数据账号泄漏,原因是发现某些实习生小可爱居然连带着账号、密码将源码私传到GitHub上,导致核心数据外漏,孩子还是没挨过社会毒打,这种事的后果可大可小。说起这个我是比较有感触的,之前我TM被删库的经历,到现在想起来心里还难受,我也是把数据库账号明文密码误提交到GitHub,然后被哪个大宝贝给我测试库删了,后边我长记性了把配置文件内容都加密了,数据安全问题真的不容小觑,不管工作汇还是生活,敏感数据一定要做脱敏处理。

2024-05-20 08:51:53 788

原创 ISBN查询图书api接口

"bookDesc": "《超级漫画素描技法:头身比篇素描》中强调素描要在一开始的时候就做好决定。而绘画中的素描草图,就是从最初决定的基点到最后完成作品必须要走的一条路。"bookName": "超级漫画素描技法.基础篇","author": "林晃,松本刚彦,森田和明","clcName": "素描、速写技法","format": "16开-胶版纸","press": "中国青年出版社","pressPlace": "北京","binding": "平装","pages": "416页",

2024-05-20 08:47:51 1776

原创 MySQL 用 limit 为什么会影响性能?有什么优化方案?

Limit 是一种常用的分页查询语句,它可以指定返回记录行的偏移量和最大数目。这样的语句看起来很简单,但是在实际使用中,可能会出现性能问题。为什么呢?我们需要从 Mysql 的索引结构和查询过程来分析。

2024-05-17 08:58:08 439

原创 【禁止血压飙升】如何拥有一个优雅的 Controller?

见过几千行代码的 controller吗?我见过。见过全是 try catch 的 controller 吗,我见过。见过全是字段校验的 controller 吗,我见过。见过全是业务代码的 controller 吗?不好意思,我们公司很多业务写在 controller 的。看见这些我真的血压高。不是很明白为什么有些喜欢在 controller 写业务逻辑的,曾经有个同事问我(就是喜欢在 controller 写业务的),你这个接口写在那里,我需要调一下你这个接口。我满脸问号??

2024-05-17 08:57:03 625

原创 一万字教程详解:教会你如何在 SpringBoot 中使用 WebSocket

这里,我们可以设置拦截器,在做请求参数,或者权限认证的时候,不用在建立链接的函数里面去处理可以理解为 springMvc 每次请求前的拦截器/*** @createTime 2023年07月19日*/@Slf4j/*** 建立请求之前,可以用来做权限判断* session;* @return*/@Override// 模拟用户(通常利用JWT令牌解析用户信息)try {

2024-05-17 08:56:14 698

原创 实现高并发秒杀的七种方式

高并发场景在现场的日常工作中很常见,特别是在互联网公司中,这篇文章就来通过秒杀商品来模拟高并发的场景。文章末尾会附上文章的所有代码、脚本和测试用例。Jmeter减库存->创建订单->模拟支付。

2024-05-16 09:23:57 323

原创 盘点Lombok的几个骚操作,你绝对没用过

比如,你有一个类叫做A,它有一个方法叫做sayHello(),你想让另一个类B也能用这个方法,那就可以在B类中加上一个A类型的字段,并在这个字段上加上@Delegate注解,这样,B类就可以直接调用sayHello()方法,就像它是自己的方法一样。注解可以用在集合类型的字段上,它会生成两个方法,一个是添加单个元素的方法,一个是添加整个集合的方法。有的方法看看就好,知道可以这么用,但是否应用到实际开发中,那就仁者见仁,智者见智了。允许你创建一个新的对象,该对象是当前对象的副本,但某些字段的值已被更改。

2024-05-16 09:22:39 239

原创 Java项目防止SQL注入的四种方案

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。SQL案列。

2024-05-15 09:16:44 357

原创 Spring Boot + MDC 实现全链路调用日志跟踪

MDC(Mapped Diagnostic Context,映射调试上下文)是log4jlogback及log4j2提供的一种方便在多线程条件下记录日志的功能。MDC可以看成是一个与当前线程绑定的哈希表,可以往其中添加键值对。MDC 中包含的内容可以被同一线程中执行的代码所访问。当前线程的子线程会继承其父线程中的 MDC 的内容。当需要记录日志时,只需要从 MDC 中获取所需的信息即可。MDC 的内容则由程序在适当的时候保存进去。对于一个 Web 应用来说,通常是在请求被处理的最开始保存这些数据。

2024-05-15 09:16:08 531 1

《中国图书馆图书分类法》(第五版)详表(中图分类号查询表)

《中国图书馆图书分类法》(第五版)详表(中图分类号查询表)

2024-06-07

ISBN图书基础数据资源12

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、语言、字数、开本等等)

2024-04-25

ISBN图书基础数据资源11

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、语言、字数、开本等等) ,

2024-04-25

ISBN图书基础数据资源10

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、开本等等) 表格中含1w条图书数据

2023-07-20

ISBN图书基础数据资源9

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、开本等等) 表格中含1w条图书数据

2023-07-20

ISBN图书基础数据资源8

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、开本等等) 表格中含1w条图书数据

2023-07-20

ISBN图书基础数据资源7

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、开本等等) 表格中含1w条图书数据

2023-07-20

ISBN图书基础数据资源6

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、开本等等) 表格中含1w条图书数据

2023-07-20

ISBN图书基础数据资源5

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、开本等等)

2023-07-20

ISBN图书基础数据资源4

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、开本等等)

2023-07-20

ISBN图书基础数据资源3

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、开本等等)

2023-07-20

ISBN图书基础数据资源2

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、开本等等)

2023-07-20

ISBN图书基础数据资源1

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、开本等等)

2023-07-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除