首页
学习
活动
专区
工具
TVP
发布

后端开发随笔

后端开发,数据库,中间件,DevOps,分布式架构,Docker
专栏作者
293
文章
413864
阅读量
35
订阅数
排查Java反射调用的InvocationTargetExcetion问题
在Java中通过反射调用方法时,常见的一个异常是:java.lang.reflect.InvocationTargetException,将异常信息打印到日志文件中时通常会有如下一句信息:java.lang.reflect.InvocationTargetException: null,由于在异常信息中存在"null",一开始就会非常敏感,会误以为是空指针异常。 其实不然,从java.lang.reflect.Method.invoke()方法注释描述中可以知道,当抛出InvocationTargetException异常时表明是在执行底层方法时异常。这里的“底层”并不是指JDK的底层实现,而是相对于反射调用的入口而言,通常是业务代码的实现方法。
编程随笔
2024-05-07
880
按功能划分的常用Java库
可以使用Jackson,Gson或者FastJson作为JSON解析库。 其中FastJson又分为fastjson1和fastjson2两个版本。
编程随笔
2024-03-24
650
gRPC简单示例
gRPC是一种跨语言的RPC框架,之所以它能跨语言,是因为它基于protobuf描述对象实体和方法,最后通过protobuf编译器生成指定语言的代码。 这样,就能通过一套protobuf声明生成多种语言的相同API,对于实现跨语言的RPC通信非常便利,同时也使用protobuf作为通信的序列化协议。
编程随笔
2024-03-21
1210
彻底搞懂Java中的Runnable和Thread
今天在阅读ThreadPoolExecutor源码的时候觉得有些地方理解起来似是而非,很别扭!最后才猛然发现,原来是我自己的问题:没有真正理解Runnable和Thread的含义! 我之前对于Runnable和Thread理解的误区在于:“Runnble和Thread是实现多线程的两种方式,在Java中要实现多线程运行要么实现Runnable接口,要么继承Thread类”。咋一看对于这样的描述似乎也没毛病,但是它没有真正阐述清楚诸如“如何在Java中实现一个线程运行”,“Runnable与Thread的区别是什么”这样的问题。而且我看网上很多中文博客对于类似Runnable与Thread的区别这样的讨论也都大同小异,人云亦云,还是没有真正解答我心中的疑惑。
编程随笔
2023-10-15
3330
Nacos启动时报错No DataSource set排查
最近在学习Nacos组件,使用的是最新版本:2.2.3。 在本地虚拟机CentOS 8.5.2111环境中安装Nacos,并使用standalone模式启动,同时配置使用外部MySQL数据库,MySQL版本为:8.0.34。 关于数据库的配置参数如下:
编程随笔
2023-10-15
1.2K0
Java的SPI机制实践
先给出结论:“Java的SPI是一种服务发现机制,用于约定接口和动态发现实现类,体现了分层解耦的思想”。 Java的SPI机制常用于框架扩展或组件替换,最常见的Java SPI应用就是JDBC Driver,JDK提供了java.sql.Driver接口,却将具体的实现交给了相应的数据库驱动,比如:在mysql-connector-java-6.0.6.jar文件中可以看到一个遵循Java SPI机制的文件META-INF/services/java.sql.Driver,并且在该文件中定义了具体的驱动实现类完整限定名称:com.mysql.cj.jdbc.Driver。
编程随笔
2023-10-15
1380
使用Java线程同步工具类CyclicBarrier
java.util.concurrent.CyclicBarrier是Java并发并发编程中的线程同步工具类,基于java.util.concurrent.locks.ReentrantLock实现。 CyclicBarrier工具类主要应用在如下场景:让一组线程同时到达栅栏位置才能开始执行。
编程随笔
2023-10-15
1230
使用Java线程同步工具类CountDownLatch
java.util.concurrent.CountDownLatch是Java并发并发编程中的线程同步工具类,基于AQS(java.util.concurrent.locks.AbstractQueuedSynchronizer)实现。 CountDownLatch工具类主要应用在如下场景:等待一组线程执行完毕后继续执行后续操作。
编程随笔
2023-10-15
1380
Java日期格式化带来的年份不正确
一个线上项目之前一直运行得很稳定,从没出过数据错误的问题,但是在2021.12.26这天却“意外”地出现了数据计算错误。 刚开始一头雾水,不知道是什么问题,后来经过日志排查才定位到原来是日期格式化引起的问题,原本应该是“2021-12-26”日期字符串,但是格式化为“2022-12-26”了。 现场还原:
编程随笔
2022-11-28
2.3K0
一个有意思的问题:Kafka的消费Offset会溢出吗
最近在项目上接入公司APP产品的用户点击日志数据时,发现消费者组的Offset值非常大,才一天的时间,已提交的Offset值就有千亿级别了。 于是不禁想了一个问题:假设一个Topic就只有一个Partition,每天产生数据量为100000000000(千亿)条,那是否会出现该分区下的消费Offset溢出的情况呢? 经过搜索发现,果然也有类似的问题被提过,答案是:完全不用担心Kafka分区的消费Offset会出现溢出的情况! 简单计算如下: 1.假设Kafka只有一个Topic,且该Topic只有一个Partition,每天写入的数据量刚好是1千亿,那么多长时间之后会出现消费Offset溢出的情况呢? 2.Kafka中的消费Offset使用的是java.lang.Long类型,最大值为:9223372036854775807 3.按每天的生产量为1千亿算,Kafka的最大消费Offset可以支持:9223372天=9223372036854775807/1千亿 => 25269年
编程随笔
2022-10-28
6830
Java常用编程类库
Java语言已经有许多非常成熟的开源基础类库,封装了日常开发中的各种常用操作,如:对象判空,字符串编码,本地缓存等等。 可以直接在项目中引入对应类库使用即可,或者参与完善相应类库的方法。 现将常用的基础类库整理如下,供使用参考。
编程随笔
2022-09-27
5080
常用定时任务方案
单机版定时任务方案比较简单,通常用于控制单台主机或者单个进程的定时任务。 常用的单机版定时任务方案有: 1.Linux crontab 2.JDK TimerTask,Spring Task,Quartz(Java语言开发) 3.APScheduler框架,schedule模块(Python语言)
编程随笔
2022-04-29
2630
IDEA必备插件
在使用MyBatis作为ORM框架时,通常是查询接口在Java代码中写,但是SQL语句却在XML文件中,需要查看接口对应的SQL语句时需要一层层跳转,操作起来非常不方便,Free MyBatis plugin就可以实现Java接口与XML文件之间来回快速跳转的功能,大大提高了生产效率。 从Java接口跳转xml文件SQL语句:
编程随笔
2022-01-20
4060
通过反射方式无法获取对象属性
最近在一个项目上开发的接口与业务方联调时计算参数签名总是对不上,经过排查后定位到原因: 1.父类定义的属性列表,全部为public类型 2.子类中未定义新的属性,所有属性都继承自父类 3.在计算签名时传递的是子类对象,子类对象使用反射方式调用getDeclaredFields()方法无法获取到从父类继承的属性
编程随笔
2021-12-21
2.7K0
如何快速使用LayUI MINI框架
LayUI MINI是基于LayUI框架开发的一套最简洁、易用的后台框架模板,它已经是一个非常完整的脚手架,有现成的页面模板可以参考甚至是直接使用。 通常来说,如果我们准备开发一套管理系统的WEB界面,一定是需要基于某个前端技术或框架来做的。实际上,可供选择的组件也比较多,比如最原始的HTML+CSS+JavaScript三件套,或者直接使用某个Bootstrap框架,如:AdminLTE,又或者是某个MVC框架,如:AngularJS,Vue 。 选择不同的框架是需要根据实际的需求而定的,不同框架实现技术不同,使用难易程度不同,适用的场景也不同。有的框架直接是一个脚手架项目,可以直接基于它就能快速地开发出业务系统的WEB界面,有的框架仅仅提供的了满足各种需求的组件,还需要开发者自己基于此搭建起不同风格的整体界面。 LayUI MINI比LayUI更易于使用的地方在于:它已经是一个现成且完整的后台管理系统框架模板,直接拿来使用即可;而LayUI本身只是提供了一些封装好的组件模块,完整的界面框架还是需要使用者根据具体需求来实现。不论如何,在涉及到具体的UI组件使用上,还是LayUI框架提供的。 由于一些未知的原因,LayUI框架的官网已经不在继续维护了,作者将LayUI完全托管于Gitee。 LayUI MINI的官网是正常运行的,详见:http://layuimini.99php.cn/ 。
编程随笔
2021-10-25
1.8K0
细说Spring框架之核心01-概述
官网:https://spring.io/projects/spring-framework 文档:https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/index.html
编程随笔
2020-05-01
2990
谈谈Tomcat占用cpu高的问题
测试环境tomcat进程占用CPU一直持续99%,但是通过jstack查看log,也没有任何线程死锁的情况。 此时通过$catalina_home/bin/shutdown.sh脚本无法正常停止tomcat。
编程随笔
2020-03-24
2.8K0
一次对JDK进行"减肥"的记录
起因 最近做的一个小项目,因为要涉及到批量部署,每次在部署之前都需要在各个主机上先安装jdk环境(为了使用jdk自带的工具如jps等,所以没有单纯安装jre),但是因为jdk文件太大(以jdk-8u1
编程随笔
2019-09-11
1.5K0
Java NIO概述
Java NIO是从JDK1.4开始引入的一个新的IO接口。 Java NIO包含三大核心组件:Channel,Buffer,Selector。三者相互配合,才给NIO带来了比BIO更加高效的处理能力。
编程随笔
2019-09-11
3880
深入浅出mybatis之返回主键ID
添加记录后获取主键ID,这是一个很常见的需求,特别是在一次前端调用中需要插入多个表的场景。 除了添加单条记录时获取主键值,有时候可能需要获取批量添加记录时各记录的主键值,MyBatis从3.3.1版本开始支持批量添加记录并返回各记录主键字段值。
编程随笔
2019-09-11
3.2K0
点击加载更多
社区活动
RAG七天入门训练营
鹅厂大牛手把手带你上手实战,赢鹅厂证书、公仔好礼!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档