- 博客(198)
- 收藏
- 关注
原创 Java线程池任务异常处理机制剖析
) r;// 如果任务正常完成,get()会立即返回t = ce;if (t!= null) {// 实际项目中这里应该使用日志框架System.err.println("线程池任务执行失败: " + t.getMessage());// 可以添加监控上报、告警等逻辑线程池的异常处理机制看似简单,实则暗藏玄机。通过本文的源码分析和实战演示,我们已经对Java线程池的异常处理有了更深入的理解。
2025-10-18 23:05:50
497
原创 Spring异步神器@Async实战与源码揭秘
简单来说,@Async是Spring框架提供的一个注解,用于标记一个方法是异步执行的。被它标注的方法不会在调用者的主线程中执行,而是会被提交到Spring的任务执行器(TaskExecutor)中,在单独的线程中运行。想象一下餐厅吃饭的场景:同步执行就像你点完菜后,厨师必须做完一道菜才能开始做下一道;而异步执行就像你点完菜后,多个厨师同时开工,大大缩短等待时间!识别阶段:通过后置处理器识别标注@Async的方法代理阶段:为包含异步方法的bean创建代理。
2025-10-13 20:41:30
744
原创 深入理解Java类加载机制:双亲委派模型与代码实战
Java类加载机制是指Java虚拟机(JVM)将类的.class文件加载到内存中,并对数据进行校验、转换解析和初始化,最终形成可以被JVM直接使用的Java类型的过程。这个特性让Java具备了"一次编写,到处运行"的能力。类加载的时机遵循"懒加载"原则,只有在第一次使用类时才会触发加载过程。@Overridetry {throw new ClassNotFoundException("类加载失败: " + name, e);= -1) {
2025-10-12 13:25:45
929
原创 HashMap和Hashtable的区别
作者平台:| CSDN:https://blog.csdn.net/qq_41153943(ID:苏格拉没有 底)| 掘金:https://juejin.cn/user/651387938290686(ID:jiangxia_1024)| 知乎:https://www.zhihu.com/people/1024-paper-96(ID:苏格拉没有底)| 微信公众号:1024笔记| 本文一共1170字,预计阅读8分钟。
2025-08-19 20:28:53
330
原创 面试题系列:一个 .java 源文件里究竟能塞几个类(非内部类)?有什么限制?
今天一起来分析一个经典的的基础面试题:「**一个 .java 源文件里究竟能塞几个类(非内部类)?有啥规矩?**」 别看它基础,可藏着Java语言设计的重要理念。搞明白了,代码组织、项目管理都更清晰。
2025-08-03 08:00:00
859
原创 如何使用Lambda表达式让你的代码直接起飞
在我们日常的编程中,很喜欢使用Lambda表达式,合理地使用过它不仅仅能大大的减少我们的代码量,而且能提高代码效率,让我们的代码飞起来!
2025-07-26 11:16:09
1034
原创 Hutool:提升效率的万能工具库,让你的代码起飞
在Java开发中,经常需要处理字符串、日期、加密、网络请求等基础操作。以上这些事情,要么自己动手写代码,要么从零零碎碎的各个不同的地方去找各种零零散散的代码来改造成自己需要的样子。
2025-07-26 10:49:35
991
原创 一文搞懂Java反射
反射机制被称为Java的"元编程能力",Spring、MyBatis等主流框架底层都重度依赖它。本文将深入剖析反射的核心原理,并通过实战代码演示其强大威力!
2025-07-24 20:54:17
973
原创 Python系列:python中split如何使用
在Python中,split是一个非常常用的字符串操作方法,用于将字符串按照指定的分隔符分割成子字符串,并返回一个包含这些子字符串的列表。separator:指定分隔符,可以是一个字符串或正则表达式。如果未指定,则默认分隔符是所有空格,包括空格、换行符\n、制表符\t等。需要注意的是,split方法返回的是一个列表,如果要将分割后的子字符串重新连接成一个新的字符串,可以使用join方法。maxsplit:可选参数,指定最大分割次数。如果未指定,则默认将字符串分割成所有可能的子字符串。
2023-09-24 18:44:20
715
原创 SpringCloud系列:负载均衡组件-Ribbon
前面几篇文章介绍了微服务相关的内容,比如什么是微服务,常见的一些服务注册中心组件,以及微服务之间是如何进行服务通信的。在微服务架构中还有常见的一种场景就是服务的负载均衡。今天就一起学习SpringCloud提供的负载均衡组件-Ribbon。Spring Cloud Ribbon是一个基于http和tcp的客户端负载均衡工具,是基于netflix ribbon实现的,通过Spring Cloud封装, 可以让我们将面向服务的resttemplate请求自动转换成客户端负载均衡的服务调用。
2023-07-18 20:30:31
1401
原创 SpringCloud系列:微服务间如何通信
使用resttemplate对象进行服务调用其实很简单,就是使用resttemplate提供的getForXX的方法,然后接受返回的对象即可
2022-07-24 21:32:50
7350
原创 SpringCloud系列:服务注册中心组件-consul
目前主流的服务注册中心有:eureka、nacos、consul、zookeeper。并且这几篇文章都分别介绍了这几款服务注册中心
2022-07-18 20:35:59
574
原创 SpringCloud系列:服务注册与发现组件-Eureka(上)
使用eureka server进行服务注册中心的开发,主要步骤就是创建相应的springcloud项目,然后导入springcloud和eureka server相关依赖,最后在配置文件中进行eureka server的配置,入口类上使用@EnableEurekaServer注解开启服务注册中心即可。...
2022-07-06 19:10:02
310
原创 zookeeper教程:入门篇
在分布式系统中,注册中心充当着重要角色,是服务发现、客户端负载均衡中不可缺少的一员。注册中心除了能够实现基本的功能外,它的稳定性、可用性和健壮性对整个分布式系统的流畅运行影响重大。dubbo作为国内一款主流的分布式系统,支持的注册中心有zookeeper、nacos和redis等第三方中间件。...
2022-07-03 14:15:02
1688
原创 MySQL数据库优化的几种方式(笔面试必问)
数据库优化不仅是笔面试中常问的知识点,在实际的开发应用中也会经常用到,如果有不正确的地方欢迎讨论指正!并且如果有其他更好的方法或者本文没有提及的地方,也欢迎交流讨论!
2022-07-02 11:47:24
2351
原创 一起学习SQL中各种join以及它们的区别
sql语句中的一些连接查询以及它们之间的区别,另外还有一种full join 表示全连接,但是mysql中不支持,可以使用左连接和右连接的合集进行表示。full join 表示的是左表和右表的并集,但是对于没有匹配的记录,则会以null表示。......
2022-07-01 20:27:43
1778
原创 介绍两款代码自动生成器,帮助提升工作效率
两种代码自动生成工具,可以根据自己的实际情况和需要选择使用,这样能够大大减少每次不必要的工作量,提高工作效率,早点完成工作,早点下班!
2022-06-30 21:44:32
6705
1
原创 SpringCloud:服务发现之如何搭建Nacos服务
Nacos 是阿里巴巴推出来的一个新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。...
2022-06-07 14:47:44
453
1
原创 SpringBoot系列:整合Spring Security
。spring security授权和认证的流程大致其实跟自定义拦截器进行权限拦截是一样的。认证的过程就是客户端用户登录,然后服务端将用户登录信息缓存起来,最后服务端将用户信息(基本信息、权限、token等)返回给客户端。授权的过程,首先客户端发起请求,携带token,服务端解析token,判断用户是否登录,再从缓存中查询用户的菜单,判断用户是否有权限请求菜单,最后返回数据给客户端。...
2022-06-04 09:43:34
580
原创 SpringBoot系列:MybatisPlus的入门级使用教程(下)
今天分享的是MP入门使用教程的最后的部分,也是使用的比较多的地方,就是如何使用MP进行条件查询!
2022-05-27 10:47:34
693
原创 SpringBoot系列:MybatisPlus的入门级使用教程(中)
文是在上一篇文章的基础之上进行拓展,所以如果有不清楚的可以先参考上一篇文章SpringBoot系列:MybatisPlus的入门级使用教程(上),源码地址会放在最后。
2022-05-26 10:20:54
301
原创 SpringBoot系列:MybatisPlus的入门级使用教程(上)
我们以前在使用Mybatis进行项目开发的时候,最繁琐的事情就是实体类,dao接口,mapper.xml文件的编写,几乎每个表都需要对应写一套,并且大部分的工作量都在最基本的增删改查上。如果表中的字段进行了修改,那么实体类,mapper文件甚至dao接口都要进行修改。
2022-05-25 10:58:51
421
原创 SpringBoot实现异步任务以及定时任务
在绝大多数的java应用中,很多场景都是采用的是同步的方式交互,那么一旦如果有第三方进行交互,则很有可能就会产生交互延迟的问题,那么这种时候就得考虑使用多线程,但是在Spring3以后它就已经内置了异步任务供我们使用。
2022-05-24 12:59:12
6301
1
原创 SpringBoot 实现发送邮件
发送邮件是很多公司必须的业务场景之一。常见的比如预警邮件、入职邮件、报告邮件等等。我们公司就有很多场景需要使用到邮件功能,今天就一起来学习如何使用springboot实现邮件业务场景,掌握邮件业务类的核心逻辑。
2022-05-23 10:18:19
5626
1
原创 Springboot处理请求参数的注解
在springboot中有几种处理url请求参数的注解,它们分别是:@PathVariable、@RequestHeader、@RequestParam、@MatrixVariable、@RequestBody,今天一起来学习下。
2022-05-22 12:11:30
2191
原创 SpringBoot集成slf4j日志系统
日志系统的强大的功能是我们日常开发,系统维护排查问题和解决问题的有利工具,所以根据自己的实际项目配置合理的日志系统,有助于我们更好地开发和维护好项目系统!
2022-05-21 11:59:24
4793
原创 SpringBoot系列:学习Yaml的使用
yaml格式文件在开发中使用比较广泛,它比properties文件更加直观,清楚,尤其非常适合用来做以数据为中心的配置文件。在springboot的配置中如果application.properties文件和application.yml文件同时存在,那么都会生效,如果两个文件中对同一配置进行设置,则会以properties文件为准。application.yml也可以写成application.yaml
2022-05-19 12:40:44
933
原创 SpringBoot缓存注解的使用
在springboot中使用缓存注解很简单,首先就只需要在依赖中引入spring-boot-starter-cache依赖,然后在application类中使用@EnableCaching注解开启缓存,然后在方法上根据需要使用具体的缓存注解即可。
2022-05-18 15:20:57
5041
原创 SpringBoot多数据源配置
在实际的开发或者线上环境中,一般都不仅仅是一个数据库走天下,而是根据业务进行拆分多个数据库,今天就来学习如何对springboot进行多数据源配置。
2022-05-17 11:00:55
16002
4
原创 SpringBoot整合Redis使用教程
Redis是现在最受欢迎的NoSQL数据库之一,Redis是一个使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库,
2022-05-14 18:02:36
731
原创 从零开始学设计模式(二十二):命令模式(Command Pattern)
命令模式(Command Pattern)又叫动作模式或事务模式。指的是将一个请求封装成一个对象,使发出请求的责任和执行请求的责任分割开,然后可以使用不同的请求把客户端参数化,这样可以使得两者之间通过命令对象进行沟通,从而方便将命令对象进行储存、传递、调用、增加与管理。命令模式是一种对象行为型模式。命令模式就是对命令的封装,就是把一系列的操作写到一个方法中,然后供客户端调用就行了。主要的作用就是对请求发送者与接收者进行耦合,发送者与接收者之间没有直接引用关系,使得对象之间的调用关系更加灵活,发送请求的对
2022-05-14 14:13:43
326
原创 从零开始学设计模式(二十一):解释器模式(Interpreter Pattern)
抽象表达式是生成语法集合的关键,每个非终结符表达式解释一个最小的语法单元,然后通过递归的方式将这些语法单元组合成完整的文法,这就是解释器模式。解释器模式在实际的使用中比较少,因为它的维护和性能效率是比较复杂的问题,所以对于解释器模式了解即可。
2022-05-13 10:42:10
226
原创 从零开始学设计模式(二十):迭代器模式(Iterator Pattern)
迭代器模式主要是提供了一种访问一个容器对象中各个元素的方法,并且不会暴露该对象的内部细节。但是很多语言在实现容器的时候都提供了迭代器,所以可以一般采用语言提供的迭代器模式就可以了,不需要刻意的去实践迭代器模式。
2022-05-12 10:23:41
307
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅