自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

龚小帅的博客

我想要开发一个能为自己做任何事的程序!

  • 博客(469)
  • 资源 (3)
  • 收藏
  • 关注

原创 MySQL 中删除重复的数据并只保留一条

要在 MySQL 中删除重复的数据并只保留一条,可以使用下面的方法。

2024-07-11 10:27:20 11227 29

原创 【人工智能】聊聊Transformer,深度学习的一股清流(13)

Transformer模型是一种深度学习模型,在自然语言处理领域取得了巨大成功。它在处理上下文信息方面表现出色,在自然语言生成、文本分类和语义理解等任务中广泛应用。随着BERT、GPT-2、T5等预训练模型的涌现,这一系列模型在效果上不断取得进展。然而,Transformer模型也存在一些问题,比如计算复杂度高和对大量训练数据的需求。为了解决这些问题,研究者们提出了一些改进方法,比如在BERT模型中使用小批量随机掩码和预测,以及在GPT-2模型中采用Top-k随机采样。

2024-02-08 14:09:25 1609 6

原创 Spring 之 @Cacheable 缓存使用教程

该抽象类提供 loadCaches() 方法,可以获取到所有 Cache 接口实现类。所以这里能够获取到所有缓存。那么肯定是可以使用双缓存。/*** 直接实现 AbstractCacheManager 抽象类的钩子方法,该类已经写好模版方法* 当执行的时候,如果 MyGuavaCacheManager 管理类 @Bean 的话,就会勾到这个方法逻辑* @return} }} }最终通过注入一个缓存管理类 MySimpleCacheManager 就可以使用到三个缓存。

2023-01-18 13:20:22 5242 2

原创 Spring 之 @EnableAspectJAutoProxy 简单使用和源码分析

注意这个类又什么特点呢?可以看出这个类是 Spring BeanPostProcessor 接口的应用。BeanPostProcessor 接口设计非常灵活。这里主要关注#postProcessAfterInstantiation() 方法,因为主要逻辑在这个方法里面。这个抽象类把公共的核心逻辑写好,子类只需要重写其中的一些方法即可,这其实是模版设计模式的一种体现。if(bean!= null) {

2022-12-31 19:39:55 4872 3

原创 SpringBoot 之自动装配简单使用

其实归根结底还是Spring 的 SpringFactoriesLoader 工厂加载机制 + @Import(DeferredImportSelector)实现的,之前说配置文件必须写死 META-INF/spring.factories 规范也就是 Spring 的 SpringFactoriesLoader 规范。上升到 SpringBoot 就完美利用这两点功能实现了自动装配。然后 SpringBoot 将 @EnableXxx 各式各类注解统一命名成 @简单明了!这也就是为什么。

2022-12-28 14:45:39 1830

原创 Spring 之 @Component 和 @Configuration 两者区别以及源码分析

之前一直搞不清 @Component 和 @Configuration 这两个注解到底有啥区别,一直认为被这两修饰的类可以被 Spring 实例化嘛,不,还是见识太短,直到今天才发现这两玩意有这么大区别。很幸运能够及时发现,后面可以少走点坑,下面就直接通过最简单的案例来说明它两的区别,颠覆你的认知。

2022-12-20 18:03:41 4223 1

原创 ThreadLocal使用陷阱详解

始终在finally块中调用remove()方法在线程池环境下格外小心注意对象的继承性问题使用ThreadLocal.withInitial()进行初始化明确跨方法调用的约束条件优先使用框架提供的工具类。

2025-03-15 17:11:54 386 1

原创 Typora 如何自定义自己个性化样式

h6,表示6个标题的缩进,将之前的0,1,2,3,4,5, 改为1,2,4,6,8,10,则可将缩进调大,也可按喜好更改。CSS 镜像地址的源在 cdnjs,上方的代码 href 采用了中国大陆的 BootCDN 的源。当时你下载好的字体也可以放到字体册中,这样在你的整个 Mac 系统其他地方都可以使用。使用方法与添加 Google Font 等网页字体无异,先引入 Web Font CSS 样式,然后在自己的样式表中设置字体即可。同样地,二者选其一。但此时,软件/编辑器的字体还是原来的,但平常可忽略。

2025-03-02 10:59:38 917 1

原创 Java函数式接口的巧妙应用

函数式接口是指仅包含一个抽象方法的接口。Java通过void run();Runnable:无参数,无返回值。:接受一个参数,无返回值。:无参数,返回一个值。:接受一个参数,返回一个值。:接受一个参数,返回布尔值。我们可以定义自己的函数式接口来实现特定的功能。// 使用Lambda表达式实现// 输出: 5// 输出: 6函数式接口是Java函数式编程的核心,它让代码更加简洁、灵活。通过本文的学习,你应该已经掌握了函数式接口的基本用法,并了解了一些巧妙的实际应用场景。

2025-02-22 15:03:59 895 1

原创 Java中的Stream API:从入门到实战

Stream API 是Java 8引入的一个新特性,用于处理集合数据。它允许你以声明式的方式对数据进行操作,比如过滤、映射、排序等。Stream API的核心思想是将数据操作分为中间操作和终端操作。中间操作:如filter()map()sorted(),它们返回一个新的Stream,可以链式调用。终端操作:如collect()forEach()reduce(),它们触发Stream的处理并返回结果。Stream API 是Java中处理集合数据的利器,它让代码更加简洁、易读且高效。

2025-02-22 15:02:44 1317

原创 Java 中反射的高级用法:窥探 Java 世界的魔法之门

反射,作为一种强大的工具,确实能够为我们打开一些非常方便的大门,但它也有其使用的边界。过度使用反射会导致性能下降,增加代码复杂性,甚至使得代码更加难以维护。因此,掌握它的高阶技巧固然令人激动,但理性地使用它才是我们作为开发者应该追求的目标。这就是反射的高级用法,背后有着强大的潜力,而掌握这些潜力,将使你在 Java 世界中行走如风,游刃有余。

2024-12-25 23:20:06 941 2

原创 Java CompletableFuture 的一些高级用法

通过,你可以轻松地实现并发任务的组合、异常处理和任务同步。它不仅支持多个任务的并行执行,还能在任务完成时自动执行后续操作,避免了回调地狱的出现。了解并熟练掌握的高级用法,将让你在处理复杂的异步任务时得心应手,提升代码的可读性和性能。希望这篇文章帮助你更好地理解的高级用法,提升你的编程技巧!

2024-12-25 22:57:01 1166

原创 GitHub 上非常厉害的 Function 代码写法参考

通过这些不同的Function使用场景,我们可以看到它的强大功能:从异步处理、懒加载、到与OptionalPredicate等接口的结合,Function在 Java 开发中有着极其广泛的应用。这些实际的代码示例展示了Function在复杂场景中的强大潜力,掌握这些技巧后,您将在开发过程中更加得心应手。

2024-12-25 22:44:14 940

原创 偷师高手!用 Java 实现一个爬虫,程序员的快乐回来了!

爬虫,听起来是不是很神秘又有趣?程序员的日常往往是面对无数的代码和框架,但当你突然间开始写一个爬虫,把数据从互联网上抓取下来时,简直就是一场“程序员的冒险”!今天,我们就一起来学习如何使用 Java 来实现一个简单的爬虫,并通过它去“偷”一些网络上的数据。放心,这只是一个合法的爬虫应用哦!当你写出第一个爬虫时,那种“我能抓取数据并利用它”的成就感,简直让人欲罢不能!

2024-12-21 20:47:54 1587 1

原创 玩转 Java 中的 try-catch:不仅仅是抓异常!

在 Java 开发中,try-catch是处理异常的核心工具。然而,很多人对它的理解仅停留在“捕获异常、打印日志”这种基础操作上。实际上,try-catch的玩法非常丰富,熟练掌握它的高级用法,不仅能让代码更健壮,还能提升代码的可维护性。本文将从实际开发中挖掘一些try-catch的高级玩法,助你成为异常处理的高手!try-catch是 Java 中的老朋友,但很多人只停留在基础用法上。更优雅地处理不同层级的异常。提升代码的可读性与维护性。在复杂场景中灵活应用异常机制,增强系统的健壮性。

2024-12-21 20:47:11 980

原创 @Validated 注解分组妙用指南:让你的校验精准又优雅!

在日常 Java 开发中,我们经常需要对用户输入的数据进行校验,比如注册、登录等场景。@Validated是 Spring 提供的一个非常好用的注解,用于校验请求参数的合法性。但当我们面对不同场景下需要校验不同字段的情况时,比如注册时需要校验用户名、密码,而更新资料时只校验邮箱、手机号,该如何优雅地处理?这时候,@Validated的分组功能就登场了!本文将以简单的例子通俗讲解其使用场景及具体实现方式。分组的本质是使用接口来标记不同的校验场景。通过分组校验,@Validated。

2024-12-21 20:46:50 1295

原创 Java 中 wait 和 sleep 的区别:从原理到实践全解析

在 Java 多线程编程中,wait和sleep是两位重量级角色。尽管它们都可以让线程暂停执行,但在实际使用中却有着天壤之别。wait和sleep有什么区别?。今天,我们就从它们的原理、使用场景、常见误区等方面做一个详细的讲解。特性sleepwait所属类ThreadObject是否释放锁否是唤醒方式自动notify或notifyAll使用场景模拟延迟、定时任务线程间通信、等待条件。

2024-12-21 20:45:44 1585

原创 Java 中 ConcurrentHashMap 和 HashMap 能存 null 吗?深挖原理和使用场景

当你使用HashMap或它们能存储null键或null值吗?初学者可能觉得无所谓,试一下不就知道了,但在真实项目中,这个问题可能导致严重的 bug。今天我们就来系统讲解这两个常用集合类对null键和值的支持情况,并深入分析其设计背后的逻辑。特性HashMap允许null键是否允许null值是否线程安全性否是典型使用场景单线程、灵活性需求高多线程、高并发环境记住这些差异,你就能在项目中更高效地选择合适的 Map 类型。如果你有任何疑问,欢迎留言一起探讨!😊。

2024-12-21 20:45:14 1065

原创 你还在用普通集合?手把手教你优雅玩转 Java Map!

Java 中的 Map 是开发者的 “百宝箱”,但你是否仅仅停留在用HashMap储存键值对的阶段?今天就带你解锁 Map 的多种用法,从基础到进阶,教你优雅高效地玩转 Java Map!Java 的 Map 远不止储存键值对这么简单,学会这些高阶用法,能让你的代码更优雅、更高效!赶紧试试这些技巧,把你的集合操作提升到新高度吧!如果本文对你有帮助,请分享给更多人,或者在评论区聊聊你的 Map 使用心得!😊。

2024-12-21 20:44:42 407

原创 Java 并发编程避坑指南:线程池踩坑现场+救场秘籍

在并发编程中,线程池是提高性能和资源管理的核心工具之一。但在使用线程池的过程中,如果不注意细节,很容易踩到一些坑,导致程序性能下降或甚至崩溃。今天,我们就来为你揭秘 Java 线程池的常见坑,教你如何规避这些问题,帮助你成为线程池的高手!Java 中的线程池可以大幅度提高并发编程的效率,但也伴随着一定的陷阱。了解这些常见的坑并采取合适的措施进行规避,可以让你的多线程编程更加稳健、有效。在实际开发中,合理配置线程池、优化线程管理,才能确保高效和稳定的执行!

2024-12-21 20:43:20 905

原创 从 0 到 1 掌握 Java 类加载器:踩坑与反转的奇妙之旅

Java 类加载器,看似一个晦涩难懂的概念,却在整个 Java 应用的生命周期中扮演着极为重要的角色。它负责加载类到 JVM 中,并且控制着类的访问与隔离。在你深入理解 Java 应用时,类加载器可能是一个你避而不谈的“黑箱”,但如果你不认真研究它,某些坑可能会在你最不经意的时候出现。今天,我们就来一场从 0 到 1 的奇妙旅程,深入探讨 Java 类加载器的工作原理、常见的踩坑案例,以及如何应对那些令人头疼的反转局面。准备好了吗?让我们出发吧!自定义类加载器的使用。

2024-12-21 20:42:50 606

原创 == 和 .equals() 的爱恨情仇:是兄弟就来比一场!

在 Java 编程的世界里,==和.equals()这对兄弟一直以来都备受争议。它们都是用来比较对象的,但作用和使用场景却大相径庭。很多初学者在面对这两个的选择时,总是摸不着头脑,甚至有时候会陷入一些难以察觉的坑中。今天,我们就要来一次深入的对比,看看这两者到底有多大区别,为什么它们的“爱恨情仇”会让程序员如此头疼。在 Java 中,==和.equals()作为兄弟,虽有着不同的职责,但也经常被误用。==主要用于基本类型或引用比较,而.equals()则是用来判断对象内容是否相等。

2024-12-21 20:42:18 784

原创 高并发架构设计:从 Java Callable 到 CompletableFuture 的进阶修炼

在现代的分布式系统中,高并发性能是一个决定系统能否成功的关键因素。而 Java 作为主流的后端开发语言,也提供了许多强大的工具来帮助我们处理并发任务。Callable和。通过这篇文章,你将从基础了解这些工具,逐步进入进阶用法,最后掌握如何在复杂的并发环境中使用它们来设计高效、可扩展的系统架构。通过学习从Callable到的演变,我们了解了 Java 提供的强大并发工具。在高并发架构设计中,Callable适合用来处理需要返回结果的简单任务,而则提供了更强大的功能,能够处理更复杂的异步操作和任务组合。

2024-12-21 20:41:32 956

原创 Spring 高级操作:教你如何优雅注入 List 和 Map 集合

在 Spring 的世界里,依赖注入(DI)是一个至关重要的概念。它让我们能够轻松地将不同的组件组合成一个功能强大的应用。而说到集合类注入,Spring 的魔力就显现得更加淋漓尽致了!今天,我们要探讨的就是如何优雅地将 List 和 Map 集合注入到 Spring Bean 中,让你的代码既简洁又高效。让我们一起进入这个充满魔法的世界!通过 Spring 提供的依赖注入(DI)机制,注入 List 和 Map 集合变得非常简单而优雅。无论是自动注入,还是通过@Value。

2024-12-21 20:40:39 663

原创 写了这么多年 Java,今天讲讲 Function一些高级玩法

Java 是一门严谨的编程语言,面向对象的特性让我们很早就开始接触类和对象的世界,但随着 Java 8 引入了函数式编程的一些特性,Function接口悄然走进了我们的生活。作为一个开发者,可能你在项目中见到过Function,也可能用过它,但你真的了解它的强大威力吗?今天,我们就一起来深入剖析 Java 中的Function接口,看看它如何在函数式编程的世界里大显身手,帮助你写出更加优雅、高效的代码。首先,了解一下Function接口的基本定义。Function。

2024-12-21 20:39:36 694 1

原创 Consumer、Supply 可以接受三个参数么?

Java 的Consumer本身只能接受一个参数。对于三个参数,可以自定义,使用Tuple或嵌套结构。如果需要更强大的函数式接口支持,考虑引入第三方库或切换到更高级的解决方案。Supplier本身不能接受任何参数,只负责提供一个值。如果需要接受两个参数并返回一个值:自定义BiSupplier。使用BiFunction替代。封装参数为一个对象,继续使用标准的Supplier。

2024-11-29 10:05:35 633 2

原创 干货合集:Spring Boot 使用技巧,让你的开发效率飙升!

Spring Boot 作为 Java 开发的 “开箱即用” 框架,以其便捷性和强大的功能广受欢迎。然而,很多开发者在使用中可能只停留在“能用”的阶段,未能挖掘出它真正的潜力。今天就带你解锁一些 Spring Boot 的实用技巧,提升开发效率,避免踩坑!Spring Boot 提供了强大的 profile 功能,可以为不同的环境(开发、测试、生产)设置不同的配置。在 或 中定义默认配置。创建不同环境的配置文件,例如:启动时通过 指定激活的环境:进阶技巧默认激活某个环境:合并配

2024-11-21 21:29:47 1639 8

原创 多线程并发造成的数据重复问题解决方案参考(笔记记录)

需要补充的关键点:当NULL值会导致索引失效、查询不命中或者业务规则不一致时,应该补充默认值。无需补充的关键点:如果NULL值在业务中是有效状态,且不会导致功能性问题,可以保留。最佳实践:补充历史数据前先分析业务需求,分批更新数据,并在测试环境中验证后上线,确保操作安全可靠。

2024-11-21 21:22:45 1234 1

原创 别再用错了!彻底搞懂 HashMap 和 ConcurrentHashMap 的区别!

HashMap 快速但不安全,适合单线程场景。ConcurrentHashMap 稍慢但稳定,专为多线程设计。下次在项目中选择 Map,别再犹豫,搞清楚你的场景需求,用对工具,写出健壮的代码!你在开发中遇到过 HashMap 或 ConcurrentHashMap 的坑吗?欢迎留言一起讨论!

2024-11-19 22:49:02 1219 9

原创 为什么 10 年经验的程序员还在纠结 Serializable?

Serializable 是 Java 提供的一个标记接口,实现它的类可以将对象的状态序列化为字节流,并反序列化回对象。简单来说,它就像是一张通行证,告诉 Java 的序列化机制:“嘿,这个类我允许你打包保存或者发到网络上去!Serializable 是 Java 生态中不可忽视的一部分,它让对象持久化、跨网络传输变得异常简单。但它也伴随着兼容性、性能等问题,让很多经验丰富的程序员纠结不已。如果你清楚自己的需求,并且了解它的优劣,就能在项目中游刃有余地使用 Serializable。

2024-11-19 22:48:01 718 1

原创 Java 开发者 99% 会忽略的 9 个性能优化技巧

Java 性能优化没有银弹,但以上 9 个小技巧能让你在开发中走得更远、更快。如果你还在写耗时的代码,试试这些方法吧,说不定下次性能瓶颈的锅就不会甩给你了!你最喜欢的优化技巧是什么?或者有其他独家秘笈?欢迎评论区分享!

2024-11-19 22:46:54 772

原创 Java 问题排查指南:从“头疼”到“真香”只需几步!

Java 开发中,遇到 Bug 和问题排查是一件家常便饭的事。有些问题像“明日黄花”,一眼就能找到原因;有些问题则像“深山老林”,让你迷失得不知所措。那么,怎么才能快速定位问题并高效解决呢?今天给大家分享一份 Java 问题排查的终极指南,让你不再焦头烂额!在排查问题前,先问自己几个问题:明确这些后,排查有了方向感。尽可能重现问题,把问题还原到你能控制的环境中。复现问题时收集以下信息:日志是排查问题的“放大镜”,但日志也需要合理规划。日志清晰地指出问题出在数据库连接上,为后续定位提供线索。手动翻日志效率低

2024-11-18 23:45:00 717 8

原创 掌握妙用:Java 中 @PathVariable 注解的正确打开方式

我们可以在。

2024-11-18 23:30:00 1284

原创 Spring 中的 @Qualifier:别再“认错人”!

在 Spring 中,如果有多个符合条件的 Bean,你该怎么告诉框架:“别乱点鸳鸯谱,我就要用这个!Spring 很体贴地给你准备了。

2024-11-18 22:02:09 1241

原创 别被坑了!Java 中 @SneakyThrows 的“偷懒神器”与隐藏的陷阱

Java 程序员的日常操作中,最烦的莫过于处理各种。

2024-11-18 22:01:39 1387

原创 全面揭开泛型的秘密:从基本概念到逆变与协变的设计之道

我写了几年泛型,才发现自己只是用个的工具人。今天,我们带你从泛型基础起步,一步步深入到逆变和协变的奥义,并用它们设计实用的代码场景。保证让你写出既优雅又专业的泛型代码,不再停留在 “工具人” 的水平!逆变和协变的优雅之处协变?extends T适合“读取为主”的场景。逆变?super T适合“写入为主”的场景。两者结合可以打造既灵活又安全的泛型代码。写泛型代码的终极心法明确“读多还是写多”。用协变处理只读场景,用逆变处理只写场景。代码中使用时遵循“能读别写,能写别读”的原则,减少歧义。

2024-11-18 22:00:45 840

原创 实际开发中的协变与逆变案例:数据处理流水线

/ 父类:订单// 子类:普通订单// 子类:会员订单协变(?extends T适合只读操作,数据来源多样化。典型场景:数据采集、读取列表内容。逆变(?super T适合只写操作,数据目标灵活多样。典型场景:数据存储、操作父类容器。协变与逆变结合适合需要“读取 + 写入”分工明确的场景,如数据流传输、数据转换。用协变和逆变设计代码,不仅让代码更灵活安全,还能显著提升复用性和可维护性!

2024-11-18 21:57:55 1002

原创 逆变与协变:Java 泛型的“双面间谍”,带你轻松拿捏!

泛型已经够烧脑了,啥还来个逆变和协变?别啊,我放弃!别慌,今天我们用最通俗易懂的方式,告诉你逆变和协变是什么、怎么用,以及它们出没的常见场景。看完保证你信心满满,直呼 “啊,原来这么简单!协变和逆变,是 Java 泛型中非常强大的工具,尤其适合应对复杂的类型安全问题。协变:适用于只读场景,比如迭代器、打印列表。逆变:适用于只写场景,比如批量添加数据。掌握了它们,你就能在写代码时游刃有余,灵活应对千变万化的需求!希望这篇文章能让你在协变与逆变的迷雾中拨云见日,写出让自己满意、同事膜拜的代码!😊。

2024-11-18 21:57:03 879

原创 Java 泛型:代码界的变形金刚,谁用谁上瘾!

听说过泛型,但从来没用过”,你是不是也这么说?“泛型?我用了呀,就是这个东西嘛。”你是不是这么想?泛型,是 Java 中为数不多的“既优雅又实用”的工具。掌握泛型,你的代码不仅能跑得更快,还能笑得更帅!所以,下次写代码时,不妨想想:“这里用泛型,能不能更优雅一点?今天的小挑战:写一个泛型类,支持装多个物品,但只能拿出来符合指定类型的物品,试试看吧!

2024-11-18 21:21:21 1244

原创 Java 中的 ImmutableMap 和 Maps 的巨坑:别让它坑哭了你!

是 Guava 提供的一个不可变的Map实现,一旦创建,不允许修改,包括添加、更新或删除键值对。

2024-11-18 11:00:00 1220 2

2023最新AI大模型学习与讨论

2023最新AI大模型学习与讨论:探索未知的智能边界! 迎接2023年,AI领域正迎来一场革命性的学术盛宴!我们诚邀您加入“2023最新AI大模型学习与讨论”——这是一个汇聚顶尖智能科学家、工程师和学者的独特平台,将AI的最新进展推向更高的高度。 在这里,您将深入了解2023年最激动人心的AI大模型,通过与同行的交流,共同揭开智能技术的神秘面纱。我们将探讨自然语言处理、计算机视觉、强化学习等领域的前沿研究,分享最新的模型架构、算法和应用案例。 无论您是刚踏入AI领域的新手,还是经验丰富的专业人士,这个学习与讨论的平台都为您提供了一个开放、包容的环境,让您可以与全球最杰出的思想领袖互动,共同推动AI技术的发展。 别错过这个与全球顶级AI专家交流见解的机会!加入我们,共同塑造未来智能的面貌,探索AI大模型的无限可能性! 看完可以了解AI大模型及微调概念、学以致用,走在技术最前沿

2024-01-17

截图工具FastStone.zip

截图工具方便下载

2021-03-28

最新反编译软件.zip

github下载太慢了, 所以上传一个以后备用, 大家也可以多多下载,用来理解源码执行顺序非常有好处

2021-03-14

春季面试突击版.zip

每次到了跳槽季,都要努力冲刺一波,刷刷面试, 这里准备了一份比较全的面试题,用来冲刺突击

2021-03-06

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

TA关注的人

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