![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
文章平均质量分 86
索码理
阿里云专家博主,专注于Java技术领域,Java开发持续学习中,知道的越多,不知道的越多 ,路漫漫其修远兮,吾将上下而求索。
展开
-
Java热插拔技术之SPI
总的来说,Java SPI 的实现原理是通过类加载器动态加载配置文件,再利用反射机制实例化具体的服务提供者,并将其注入到应用程序中供服务消费者使用。原创 2024-01-16 08:30:00 · 940 阅读 · 0 评论 -
从理论到实践:深度解读BIO、NIO、AIO的优缺点及使用场景
BIO、NIO和AIO是Java编程语言中用于处理输入输出(IO)操作的三种不同的机制,它们分别代表同步阻塞I/O,同步非阻塞I/O和异步非阻塞I/O。原创 2023-11-13 09:03:28 · 641 阅读 · 0 评论 -
JVM类加载机制
类加载机制是什么?原创 2023-04-06 08:45:00 · 490 阅读 · 0 评论 -
【每日一题】如何保证缓存和数据库的一致性?
如何保证缓存和数据库的一致性?原创 2023-02-27 08:45:00 · 355 阅读 · 0 评论 -
聊一聊双亲委派模式
聊一聊双亲委派模型,面试中经常会被问到原创 2023-01-10 09:00:00 · 430 阅读 · 0 评论 -
Hotspot垃圾收集器一览
上篇文章我们介绍了如何判断对象是否为垃圾,有垃圾就要清理,清理就需要 垃圾收集器。垃圾收集器(Garbage Collector)是垃圾收集GC的实现,根据是否分代收集可将垃圾收集器分为两种类型:分代收集和不分代收集。Serial垃圾收集器是最简单的垃圾回收器的实现,同时它也是最古老的垃圾回收器,在jdk 1.3之前是HotSpot虚拟机新生代收集器的唯一选择。Serial翻译成中文的意思是“串行的”,顾名思义Serial垃圾收集器就是一个单线程的垃圾回收器,它的这个串行指的是当它要进行垃圾回收时,其他所有原创 2022-12-08 09:00:00 · 389 阅读 · 0 评论 -
如何判断对象是否是垃圾
本文主要介绍了JVM是通过可达性分析算法来判断对象是否为可回收对象,同时介绍了哪些对象或者是类可作为可达性分析算法的GC Root,最后介绍了对象在Finalize方法中的回收过程和方法区的回收。想学习关于JVM的文章可关注我,会持续更新。参考书籍:《深入了解JVM虚拟机》原创 2022-12-01 09:15:00 · 862 阅读 · 0 评论 -
通过工具和字节码带你深入理解运行时数据区
本文通过JHSDB工具和字节码层面来更深入的了解JVM运行时数据区,对于JHSDB工具和字节码也只是一个简单的使用和说明,感兴趣的可以再深入了解一下。原创 2022-11-18 09:15:00 · 174 阅读 · 0 评论 -
JVM垃圾回收算法
垃圾回收算法没有好坏之分,只是应用场景不同。老年代存活对象比较多,所以一般采用标记-清除和标记-整理算法,相反,新生代存活对象比较少,所以一般采用复制算法。根据不同的区域的特征采用不同的算法,这就是分代收集理论。原创 2022-11-29 09:00:00 · 285 阅读 · 0 评论 -
Java中的堆和栈
栈和堆是Java程序在代码执行期间使用的两个区域。除了这两个之外,还有其他内存区域,如方法区域、寄存器、本地方法域等等。每种区域在Java应用程序中都有其特定的用途。但是,从程序员的角度来看,栈和堆是JVM必须理解的区域。原创 2022-11-10 09:15:00 · 8318 阅读 · 0 评论 -
canal 安装及入门教程
canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费,目前主要支持了mysql。原创 2022-11-08 09:15:00 · 869 阅读 · 0 评论 -
动态追踪技术之BTrace
作为 Java的动态追踪技术,站在比较底层的角度上来说,底层无非就是基ASM、Java Attach API、Instrument开发的创建。Arthas 都是针前面这些技术的一个封装而已。原创 2022-10-27 10:03:45 · 704 阅读 · 0 评论 -
动态追踪之java agent
本篇文章我们分别使用Java Agent的静态加载和动态加载成功的对字节码进行了修改、追踪,并完成了一个打印方法耗时的简单示例。Java Agent能够访问加载到JVM中的类,它的应用十分广泛,可用于实现Java IDE的调试功能、热部署功能、线上诊断⼯具和性能分析⼯具。本篇只是触及了Java Agent的皮毛,感兴趣的可以深入了解一下。下篇文章将介绍一个动态追踪框架BTrace。原创 2022-10-26 09:00:00 · 664 阅读 · 0 评论 -
线上诊断之arthas
arthas是一个很好的java线上诊断工具,在JVM监控部分命令是整合了JVM自带的内存调优工具,在方法进行监控部分使用了动态追踪技术,其他部分也集成了java方面的工具。感兴趣的可以去官网多了解一下,在我们进行线上诊断时用处挺大的。原创 2022-10-24 10:13:30 · 608 阅读 · 0 评论 -
jvm 自带调优工具一览
关于JVM的一些优化工具,这里只是简单的介绍了一下,有兴趣的可以深入了解一下,对JVM进行优化时大有用处。原创 2022-09-29 11:07:34 · 485 阅读 · 0 评论 -
java 注解再学习
注解(Annotation)是在java 1.5开始引入的,它是java中很重要的一个知识点。现在使用的很多框架,例如:SpringBoot、Hibernate等都大量的使用了注解。原创 2022-09-22 09:45:19 · 249 阅读 · 0 评论 -
关于java中的反射,我只能努力到这一步了
反射是java高级特性之一,常用的框架,例如:spring、mybatis等在实现的过程中都使用到了反射,所以还是非常有必要了解反射的。原创 2022-09-20 10:18:32 · 281 阅读 · 0 评论 -
java list分组成map
将List集合分成分组成map在工作中常常会遇到原创 2022-08-16 09:45:00 · 3740 阅读 · 0 评论 -
面试官:Redis的key过期之后是立即删除吗
面试官:Redis的key过期之后是立即删除吗原创 2022-05-24 09:45:00 · 3859 阅读 · 0 评论 -
JVM运行时数据区了解一下?
JVM运行时内存数据区了解一下?原创 2022-05-12 09:30:00 · 1000 阅读 · 1 评论 -
如何判断一个对象占用多少字节?
如何判断一个对象占用多少字节?这是我之前遇到的一个面试题,在这里分享一下原创 2022-04-16 11:41:40 · 2285 阅读 · 5 评论 -
HashMap面试题总结(从浅到深,持续更新)
HashMap 面试题总结,从此不用再怕HashMap面试了原创 2022-03-18 17:27:58 · 985 阅读 · 7 评论 -
ThreadPoolExecutor线程池状态你知道吗?
线程池状态主池控制状态 ctl 是一个原子整数,封装了两个概念字段 :1、workerCount 表示线程的有效数量2、runState 表示是否正在运行、关闭等为了把它们包装成一个int类型,workerCount 被限制在(2^29)-1(约5亿) 而不是(2^31)-1(20亿),如果这在未来成为一个问题,可以将变量更改为 AtomicLong,并调整下面的 移位/掩码常量,但是在需要之前,这段代码使用 int 会更快更简单。workerCount 是允许启动和不允许停止的工作队列数量,该值原创 2022-03-16 09:54:32 · 1414 阅读 · 22 评论 -
java类型擦除知多少
文章目录何为类型擦除一探究竟类型擦除规则介绍类型擦除之前先看看以下代码:public static void genericRemove() throws InvocationTargetException, IllegalAccessException, NoSuchMethodException { List<Integer> list = new ArrayList<>(); list.add(1); Method addM原创 2022-02-28 10:30:00 · 1038 阅读 · 4 评论 -
java 8 日期操作,真香
java 8 的日期类已经出来很长一段时间了,一直以来也没怎么用过,最近用到了感觉太好用了,真香。java 8 在java.time提供了很多日期、时间相关类可以使用,这些类都是线程安全的,而且使用起来比Date日期类方便很多原创 2022-01-26 10:00:00 · 689 阅读 · 1 评论 -
Java比较两个对象是否相同并获取值不同的属性
最新项目中要加操作日志,同时要把用户修改了那些字段记录下来,在更新的时候就需要比较之前的数据和现在的数据有哪些不同,这么多类一个一个的比较就太麻烦了,所以打算写一个工具类。主要思想还是通过反射获取类的属性的getter方法,调用getter方法获取值并比较是否相同,相同就忽略不同就返回属性信息,方法都不复杂,主要是利用反射思想。代码如下:定义一个类保存比较后的返回值信息@Datapublic class PropertyModelInfo { //属性名 private Strin原创 2020-06-15 18:49:45 · 7394 阅读 · 6 评论 -
java 导出Excel表格通用方法
目录背景POI版本自定义注解逻辑代码实现测试背景最近项目需要导出数据到Excel 表格中,在包装好获取表格方法之后,剩下的就是往单元格中添加数据和添加标题。写了一两个地方之后发现设置数据这块东西基本都是类似的重复代码,无非就是设置的数据不一样而已,看到这样的代码就很烦,想把它们封装起来,首先想到的就是通过自定义注解的方式来实现。POI版本我用的是POI导出Excel,版本如下:<!-- https://mvnrepository.com/artifact/org.apache.poi/poi原创 2020-06-08 07:31:58 · 1903 阅读 · 0 评论 -
根据json的key获取到对应的value
项目中偶尔会用到解析json,然后获取某个key的值的问题,这个有两个办法,一个是通过json创建一个对象出来,然后通过json转对象,然后通过对象获取对应的value,第二个是通过JsonObject获取对应key的value,但是只能从顶级一层一层的获取你想要的值。如果json简单,两种方法都可以。如果json复杂一点,两种方法都挺麻烦的,所以就打算自己写一个工具类,通过传进去一个key就能直接获取到value了。但是有个问题就是如果key有多个重复的话就只能获取到第一个key了,不过这个问题也可以原创 2020-05-09 17:43:25 · 15445 阅读 · 0 评论 -
关于属性命名你应该注意的点
对于bean的属性想必大家都很熟悉,一般都是通过get、set方法进行封装,然后暴露给外界调用。但是在给属性命名时还是除去命名规范有两点需要注意的,以下两点在前端传值的时候会特别容易出错1、Boolean 类型的字段不能以is开头Boolean 类型在生成get和set方法时和别的类型不太一样,Boolean的get方法是isXXX、或getXXX或者把is去掉getXXX,在生成set方法时...原创 2020-04-18 22:21:57 · 799 阅读 · 0 评论 -
java 判断一个对象是否为空对象
最近项目中遇到一个问题,在用户没填数据的时候,我们需要接收从前端传过来的对象为null,但是前端说他们一个一个判断特别麻烦,只能传个空对象过来,我第一个想法就是可以通过反射来判断对象是否为空。第一版:User.javapublic class User { private String username; private Boolean active; priva......原创 2020-03-30 22:29:29 · 30833 阅读 · 4 评论 -
java 将月份、星期转换为英文
最近在项目中遇到这样一个问题,后端要生成PDF,由于项目最终是在国外上线,PDF中要显示月份的缩写类似于“OCT 2019”这个样子 (难道用阿拉伯数字不香吗?也不知道为啥非要英文缩写,咱也不敢说,咱也不敢问),刚开始想着自己写个switch判断一下就得了,但想着java 应该有这样的api,就在群里问了下,果真有,在此记录一下。就我所知,目前有两种方法:1、自定义工具类这种方法实现...原创 2019-11-05 08:59:36 · 6815 阅读 · 1 评论 -
JAVA 日期格式化
最近项目中需要用到SimpleDateFormat 格式化日期,但是因为对日期格式的不熟练多花了十分钟左右的时间在日期格式化上面,所以趁着周末外面下着大雨闲着无聊整理一下日期格式问题。日期格式化学习 预定义格式日期格式化样式自定义日期格式化预定义格式java提供了预定义的日期格式,预定义的日期格式可以满足绝大多数的场景需要。格式化日期需要两步:1、通过DateFormat.getDate......原创 2019-07-07 20:39:47 · 24697 阅读 · 1 评论