Java线程池ThreadPoolExecutor源码解析
Java线程池ThreadPoolExecutor源码解析
1.ThreadPoolExecutor的构造实现
以jdk8为准,常说线程池有七大参数,通常而言,有四个参数是比较重要的
public ThreadPoolExecutor(int corePoolSize,
...[2023/12/27]
创建一个双模式跨运行时的 JavaScript 包
本文将指导你发布双模式、跨运行时的 JavaScript 包。了解如何创建与 ESM 和 CommonJS 以及 Node.js、Deno 和浏览器等不同运行时兼容的库。
随着 JavaScript 开发的不断发展,人们越来越需要能在多种环境中运行的强大依赖包。在本文中,我们将探讨如何发布跨运...[2023/12/27]
反向 Debug 了解一下?揭秘 Java DEBUG 的基本原理
Debug 的时候,都遇到过手速太快,直接跳过了自己想调试的方法、代码的时候吧……
一旦跳过,可能就得重新执行一遍,准备数据、重新启动可能几分钟就过去了。
好在IDE 们都很强大,还给你后悔的机会,可以直接删除某个 Stack Frame,直接返回到之前的状态,确切的说是返回到之前的某个...[2023/12/26]
SpringBoot 这么实现动态数据源切换,就很丝滑!SpringBoot 这么实现动态数据源切换,就很丝滑!
大家好,我是小富~
简介
项目开发中经常会遇到多数据源同时使用的场景,比如冷热数据的查询等情况,我们可以使用类似现成的工具包来解决问题,但在多数据源的使用中通常伴随着定制化的业务,所以一般的公司还是会自行实现多数据源切换的功能,接下来一起使用实现自定义注解的形式来实现一下。
基础配置
yml配...[2023/12/26]
Java并发(二十一)----wait notify介绍
1、小故事 - 为什么需要 wait
由于条件不满足(没烟干不了活啊,等小M把烟送过来),小南不能继续进行计算
但小南如果一直占用着锁,其它人就得一直阻塞,效率太低
于是老王单开了一间休息室(调用 wait 方法),让小南到休息室(WaitSet)等着去了,但这时锁释放开...[2023/12/26]
jextract的使用
写这个博客的目的:新人去看jextract的官网是看不懂的,就算看懂了也不会使用,一头雾水,我会从0开始教如何使用,如何搭配java去调用c函数。
首先我们得了解jextract是什么,官网的解释是一种从本机库头文件机械地生成 Java 绑定的工具。该工具利用 clang C API 来解析与...[2023/12/22]
5分钟攻略Spring-Retry框架实现经典重试场景
前言
今天分享干货,控制了篇幅,5分钟内就能看完学会。
主题是Spring-Retry框架的应用,做了一个很清晰的案例,代码可下载自测。
框架介绍
Spring-Retry框架是Spring自带的功能,具备间隔重试、包含异常、排除异常、控制重试频率等特点,是项目开发中很实用的一种框架。
本...[2023/12/22]
Java8函数式编程应用
我们经常提到,Java8是革命性的一个版本,原因就是正式引入了函数式编程,那Java的函数式编程在实际应用中到底有什么用呢?结合实际的应用,我整理出了函数式在Java的几个经典用途。
缓求值
惰性求值(Lazy evaluation)是在需要时才进...[2023/12/22]
为啥不建议用BeanUtils.copyProperties拷贝数据为啥不建议用BeanUtils.copyProperties拷贝数据
在实际的业务开发中,我们经常会碰到VO、BO、PO、DTO等对象属性之间的赋值,当属性较多的时候我们使用get,set的方式进行赋值的工作量相对较大,因此很多人会选择使用spring提供的拷贝工具BeanUtils的copyProperties方法完成对象之间属性的拷贝。通过这种方式可以很大程度...[2023/12/22]
如何 使 Java、C# md5 加密的值保持一致如何 使 Java、C# md5 加密的值保持一致
Java C# md5 加密值保持一致,一般是编码不一致造成的值不同
JAVA (加密:123456)
C#(加密:123456)
UTF-8
e10adc3949ba59abbe56e057f20f883e
UTF8
e10adc3949ba59abbe56e057f20f8...[2023/12/22]
【流式传输】使用Spring Boot实现ChatGpt流式传输
引言
在ChatGpt火了这么久,他的那种单字单字返回的格式可能让很多朋友感到好奇,在之前我用c#写了一个版本的,同时支持IAsyncEnumerable以及SSE,今天把之前写的Java版本的也发出来,和大家一起学习,有不对的地方,欢迎各位大佬指正。
Code
我这边用的是J...[2023/12/21]
玩转Spring状态机
说起Spring状态机,大家很容易联想到这个状态机和设计模式中状态模式的区别是啥呢?没错,Spring状态机就是状态模式的一种实现,在介绍Spring状态机之前,让我们来看看设计模式中的状态模式。
1. 状态模式
状态模式的定义如下:
状态模式(State Pattern)是一种行为型设计模...[2023/12/21]
Java五种设计模式实现奶茶订单生成系统小DEMO
前言
这是大学时候上设计模式这门课写的程序,当时课程任务是要求结合五个设计模式写一个系统,最近偶然翻到,把系统分享一下。
成品预览
主界面
?
功能介绍
订单管理系统,实现了对订单的增删改查。且实现了将订单内容写入文件,每次增删改查都会做保存,下次重启程...[2023/12/18]
Spring Cache + Caffeine的整合与使用Spring Cache + Caffeine的整合与使用
前言
对于一些项目里需要对数据库里的某些数据一直重复请求的,且这些数据基本是固定的,在这种情况下,可以借助简单使用本地缓存来缓存这些数据。这些介绍一下Spring Cache和Caffeine的使用。
引入依赖和CacheConfig
在pom文件里面引入下面的依赖:
<dep...[2023/12/15]
项目实战接口开发SpringBoot
目录一、springboot官方demo开发二、使用SpringBoot开发get方法接口三、一个要求携带cookie信息访问的get接口开发四、需要携带参数的get请求两种开发方式4.1 方式1:url:key=value&key=value4.2 方式2:url:ip:port/ge...[2023/12/15]
spring cloud生态中Feign、Ribbon、loadbalancer的一些历史
背景
本意是想写个feign中loadbalancer组件和nacos相遇后,一个兼容相关的问题,后面发现Feign这套东西很深,想一篇文章写清楚很难,就先开一篇,讲历史。
Feign、OpenFeign、Spring Cloud OpenFeign
Feign
Feign是Java生态中的一...[2023/12/15]
springboot下添加全局异常处理和自定义异常处理
前言
在spring项目中,优雅处理异常,好处是可以将系统产生的全部异常统一捕获处理,自定义的异常也由全局异常来捕获,如果涉及到validator参数校验器使用全局异常捕获也是较为方便。
相关代码:
GlobalExceptionHandler类:
@Slf4j
@RestControlle...[2023/12/13]
必知必会Java命令-jps
你好,我是阿光。
最近想着把工作中使用过的java命令都梳理一下,方便日后查阅。虽然这类文章很多,但自己梳理总结后,还是会有一些新的收获。这也是这篇笔记的由来。
今天先聊聊 jps 命令。
命令概述?
jps命令是JDK提供的一个工具,用于查看目标系统上的Java进程基本信息(进程ID, ...[2023/12/11]
聊聊数据库连接池 Druid
在 Spring Boot 项目中,数据库连接池已经成为标配,然而,我曾经遇到过不少连接池异常导致业务错误的事故。很多经验丰富的工程师也可能不小心在这方面出现问题。
在这篇文章中,我们将探讨数据库连接池,深入解析其实现机制,以便更好地理解和规避潜在的风险。
1 为什么需要连接池
假如没有...[2023/12/11]
Java并发(十七)----变量的线程安全分析Java并发(十七)----变量的线程安全分析
1、成员变量和静态变量是否线程安全
如果它们没有共享,则线程安全
如果它们被共享了,根据它们的状态是否能够改变,又分两种情况
如果只有读操作,则线程安全
如果有读写操作,则这段代码是临界区,需要考虑线程安全
2、局部变量是否线程安全
局部变量是...[2023/12/11]
ConcurrentModificationException日志关键字报警引发的思考
本文将记录和分析日志中的ConcurrentModificationException关键字报警,还有一些我的思考,希望对大家有帮助。
一、背景
近期,在日常的日志关键字报警分析时,发现我负责的一个电商核心系统在某时段存在较多ConcurrentModificationException异常日...[2023/12/11]
Prometheus+Grafana 监控平台实践-搭建&常用服务监控&告警Prometheus+Grafana 监控平台实践-搭建&常用服务监控&告警
前言
Prometheus 是一个开放性的监控解决方案,通过各种 Exporter 采集当前主机/服务的数据,和 Grafana 相结合可以实现强大的监控和可视化功能
本篇将分享使用 docker compose 构建 Prometheus+Grafana,并监控之前文章所搭建的主机&...[2023/12/8]
Java开发者的Python快速进修指南:实战之跳表pro版本Java开发者的Python快速进修指南:实战之跳表pro版本
之前我们讲解了简易版的跳表,我希望你能亲自动手实现一个更完善的跳表,同时也可以尝试实现其他数据结构,例如动态数组或哈希表等。通过实践,我们能够发现自己在哪些方面还有所欠缺。这些方法只有在熟练掌握之后才会真正理解,就像我在编写代码的过程中,难免会忘记一些方法或如何声明属性等等。
我不太愿意写一些...[2023/12/8]
【实用+干货】如何使用Clickhouse搭建百亿级用户画像平台看这一篇就够了
背景
如果你是用户,当你使用抖音、小红书的时候,假如平台能根据你的属性、偏好、行为推荐给你感兴趣的内容,那就能够为你节省大量获取内容的时间。
如果你是商家,当你要进行广告投放的时候,假如平台推送的用户都是你潜在的买家,那你就可以花更少的钱,带来更大的收益。
这两者背后都有一项共同的技术支撑,...[2023/12/5]
这下对阿里java这几条规范有更深理解了
背景
阿里java开发规范是阿里巴巴总结多年来的最佳编程实践,其中每一条规范都经过仔细打磨或踩坑而来,目的是为社区提供一份最佳编程规范,提升代码质量,减少bug。
这基本也是java业界都认可的开发规范,我们团队也是以此规范为基础,在结合实际情况,补充完善。最近在团队遇到的几个问题,加深了我对...[2023/12/5]
GOF23--23种设计模式(一)GOF23--23种设计模式(一)
一.什么是设计模式
设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决一系列特定问题的套路。
它不是语法规定,而是一套用来提高代码复用性,可读性,可维护性,稳健性,安全性的解决方案
设计模式的雏形:
1995年,GOF(Gang of&nb...[2023/12/5]
SpringMvc集成开源流量监控、限流、熔断降级、负载保护组件Sentinel
前言:作者查阅了Sentinel官网、51CTO、CSDN、码农家园、博客园等很多技术文章都没有很准确的springmvc集成Sentinel的示例,因此整理了本文,主要介绍SpringMvc集成Sentinel
SpringMvc集成Sentinel
一、Sentinel 介绍
随着微服务的...[2023/12/1]
springboot如何用jar包启动,同时为不同机房设置不同的配置文件
1、首先先把配置文件从jar中抽离
示例代码:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artif...[2023/12/1]
Java 21 官方速览:全面拥抱虚拟线程
前言
首先,感谢一下不少xdm私信关心我的身体状况,我也不是什么厉害的大佬,点开通知看到一堆私信还是蛮感动的。
近来有意大幅缩短了更新频率,增加了日常调养身体的时间,淋巴结确实变小了,睡眠也逐渐正常,每晚23:30-00:00之间就可以自然入睡,所以精神也好了许多。
上周感冒比较严重,这周才...[2023/12/1]
SpringBoot进阶教程(七十八)邮件服务SpringBoot进阶教程(七十八)邮件服务
Sun公司提供了JavaMail用来实现邮件发送,但是配置烦琐,Spring中提供了JavaMailSender用来简化邮件配置,Spring Boot则提供了MailSenderAutoConfiguration对邮件的发送做了进一步简化。
v准备工作
开通POP3/SMTP服务或者I...[2023/12/1]
用户注册这样玩,保你平安
前言
基本上每个系统系统都包含用户注册、发送验证码等基本操作。在前些年,我还记得我在逛 csdn、贴吧、网易新闻等网站的时候是可以不登陆也能浏览完网页内容的,但是近几年这些网站已经改成了不登陆不让用,浏览网页时不时提醒你要进行登录,对于一些不喜欢注册的用户造成了相当大的困扰。
但是不知道大家有...[2023/12/1]
Spring Cloud 整合
前言
玩SpringCloud之前最好懂SpringBoot,别搞撑死骆驼的事。Servlet整一下变成Spring;SSM封装、加入东西就变为SpringBoot;SpringBoot再封装、加入东西就变为SpringCloud
额外说明:
吊毛些,别跟贫道说没有目录,看起来不方便了,俺也...[2023/11/29]
三个月写了个短信平台,开源出来!
1 初心
大家好,我是勇哥。花了三个月的时间,我手写了个短信平台服务 platform-sms,今天开源出来 Beta 版本。
写这个开源项目的初心其实很简单:"帮助初中级研发工程师入门架构设计,提升他们的技术认知"。
2018年,作为架构师,我参与一个短信平台的重构。发送短信的场景包括...[2023/11/29]
你知道Spring中BeanFactoryPostProcessors是如何执行的吗?你知道Spring中BeanFactoryPostProcessors是如何执行的吗?
Spring中的BeanFactoryPostProce or是在Spring容器实例化Bean之后,初始化之前执行的一个扩展机制。它允许开发者在Bean的实例化和初始化之前对BeanDefinition进行修改和处理,从而对Bean的创建过程进行干预和定制化。
BeanFactoryPost...[2023/11/29]
🔥🔥Java开发者的Python快速实战指南:探索向量数据库之文本搜索
前言
如果说Python是跟随我的步伐学习的话,我觉得我在日常开发方面已经没有太大的问题了。然而,由于我没有Python开发经验,我思考着应该写些什么内容。我回想起学习Java时的学习路线,直接操作数据库是其中一项重要内容,无论使用哪种编程语言,与数据库的交互都是不可避免的。然而,直接操作MyS...[2023/11/29]
Calendar日历类型常见方法(必看!!)Calendar日历类型常见方法(必看!!)
Hi i,m JinXiang
? 前言 ?
本篇文章主要介绍Calendar日历类型的几种常见方法以及部分理论知识
??欢迎点赞 ?? 收藏 ?留言评论 ??私信必回哟??
??博主收将持续更新学习记录获,友友们有任何问题可以在评...[2023/11/22]
《最新出炉》系列初窥篇-Python+Playwright自动化测试-31-JavaScript的调用执行-上篇 - 北京-宏哥
1.简介
在做web自动化时,有些情况playwright的api无法完成以及无法应对,需要通过或者借助第三方手段比如js来完成实现,比如:去改变某些元素对象的属性或者进行一些特殊的操作,本文讲解playwright怎样来调用JavaScript完成特殊操作。
2.用法
上一篇中就提到过,...[2023/11/22]
ASM字节码操作类库(打开java语言世界通往字节码世界的大门)
前言:授人以鱼不如授人以渔,应用asm的文章有很多,简单demo的也很多,那么ASM都具备哪些能力呢?如何去学习编写ASM代码呢?什么样的情景需要用到ASM呢?让我们带着这些问题阅读这篇文章吧。
这里由于篇幅限制做了删减(第六部分TreeApi和CoreApi的比较、核心API类的介绍等),如...[2023/11/22]
Java Stream中的API你都用过了吗?Java Stream中的API你都用过了吗?
公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享。
在本教程中,您将通过大量示例来学习 Java 8 Stream API。
Java 在 Java 8 中提供了一个新的附加包,称为 java.util.stream。该包由类、接口和枚举组成,允许对元素进行函数...[2023/11/22]
《最新出炉》系列初窥篇-Python+Playwright自动化测试-32-JavaScript的调用执行-下篇 - 北京-宏哥
1.简介
在实际工作中,我们需要对处理的元素进行高亮显示,或者有时候为了看清楚操作过程和步骤我们需要跟踪鼠标点击了哪些元素需要标记出来。虽然很少遇到,但是为了以后大家可以参考或者提供一种思路,今天宏哥就在这里把这种测试场景playwright是如何处理的讲解和分享一下。
2.用法
...[2023/11/22]
null 不好,我真的推荐你使用 Optional
"Null 很糟糕." - Doug Lea。
Doug Lea 是一位美国的计算机科学家,他是 Java 平台的并发和集合框架的主要设计者之一。他在 2014 年的一篇文章中说过:“Null sucks.”1,意思是 null 很糟糕。他认为 null 是一种不明确的表示,它既可以表示一...[2023/11/20]
JAVA中的函数接口,你都用过吗JAVA中的函数接口,你都用过吗
公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享。
在这篇文章中,我们将通过示例来学习 Java 函数式接口。
函数式接口的特点
只包含一个抽象方法的接口称为函数式接口。
它可以有任意数量的默认静态方法,但只能包含一个抽象方法。它还可以声明对象类的方法。
函数接...[2023/11/20]
放弃"Jenkins"的种种理由,期待更好赋能研发的持续交付平台
Jenkins 很酷,但是不完美,有历史局限性造成的问题。本文仅从“如何更好给研发团队赋能的角度”,剖析Jenkins, 探讨理想的持续交付平台, 不带货无广告~
不完美的Jenkins
Jenkins的前身是Hudson, Hudson是SUN公司时期就有的CI工具,后来因为ORA...[2023/11/20]
记录jdk17相对于jdk8增加的一下主要语法糖和新特性
jdk17 发布已经好久了,作为java的长期支持版本,引入了许多有趣且实用的新特性。这些特性不仅提高了开发效率,还增强了语言的表现力和安全性。并且是SpringBoot 3.0以后版本的硬性要求,之后势必会是java开发的主要版本。
经过我个人的测试体验,在 Java 17 环境中运...[2023/11/17]
简单地聊一聊Spring Boot的构架
本文由葡萄城技术团队发布。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。
前言
本文小编将详细解析Spring Boot框架,并通过代码举例说明每个层的作用。我们将深入探讨Spring Boot的整体架构,包括展示层、业务逻辑层和数据访问层。通...[2023/11/15]
SpringBoot 项目优雅实现读写分离
一、读写分离介绍
当使用Spring Boot开发数据库应用时,读写分离是一种常见的优化策略。读写分离将读操作和写操作分别分配给不同的数据库实例,以提高系统的吞吐量和性能。
读写分离实现主要是通过动态数据源功能实现的,动态数据源是一种通过在运行时动态切换数据库连接的机制。它允许应用程序根据不同...[2023/11/15]
Welcome to YARP - 7.目标健康检查 - coding-y
目录
Welcome to YARP - 1.认识YARP并搭建反向代理服务
Welcome to YARP - 2.配置功能
2.1 - 配置文件(Configuration Files)
2.2 - 配置提供者(Configuration Providers)
2.3 - 配置过滤器(C...[2023/11/15]
TIOBE 11月榜单:Java和 C# 之间的差距缩小到0.7
TIOBE 公布了 2023 年 11 月的编程语言排行榜。 虽然这期重点介绍的是Kotlin,本月,它的排名上升了 0.17%,从第 18 位上升到第 15 位,前进了 3 位。 TIOBE的10月份榜单,C# 和 Java 之间的差距越来越小,达到了历史新低,10月份两者的差距仅为 1.2%...[2023/11/13]
Spring Cloud Seata 系列:Seata-Server (1.7.1)安装与配置(集成 Nacos)
目录一、简介术语事务模式XA 模式AT 模式TCC 模式Sage 模式说明二、Seata Server 存储模式1、file 模式①修改application.xml②启动Seata-Server2、db 模式①运行mysql.sql脚本②修改application.xml③修改 config....[2023/11/13]
Spring 缓存注解这样用,太香了!
作者最近在开发公司项目时使用到 Redis 缓存,并在翻看前人代码时,看到了一种关于 @Cacheable 注解的自定义缓存有效期的解决方案,感觉比较实用,因此作者自己拓展完善了一番后分享给各位。
Spring 缓存常规配置
Spring Cache 框架给我们提供了 @Cacheable 注...[2023/11/10]