![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基本功
文章平均质量分 89
纵横千里,捭阖四方
弱小,是最大的罪过;没有行动,梦想终究是想一想
展开
-
携程Apollo配置中心架构介绍
Apollo(阿波罗)是携程框架部研发并开源的一款生产级的配置中心产品,它能够集中管理应用在不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。Apollo目前在国内开发者社区比较热,在Github上有超过5k颗星,在国内众多互联网公司有落地案例,可以说Apollo是目前配置中心产品领域Number1的产品,其成熟度和企业级特性要远远强于Spring Cloud体系中的Spring Cloud Config产品。原创 2022-12-19 11:32:42 · 2590 阅读 · 0 评论 -
Java使用Excel的问题:自动跳过空字段、中文加拼音和时间处理错误的解决方法
在Java中解析Excel是很多管理类系统的重要功能, 目前主要有阿里的easyExcel和HSSF两种开源工具,如何使用网上有大量的例子,不再赘述,我们这里看三个我亲身经历的问题:自动跳过空字段中文内容自动给加了拼音时间处理错误。本文首先分析故障现象或者原因,之后给出解决方案。原创 2022-11-08 19:46:06 · 4840 阅读 · 0 评论 -
谈谈Java对象的生命周期
经过前面的分析 ,我们现在来看一下创建的对象到底是什么东西,并且完整的总结一下一个对象从创建到回收到底经过了哪些阶段。原创 2022-10-30 16:07:59 · 705 阅读 · 0 评论 -
JVM的堆工作过程原来就是收拾房间
当Eden的空间填满时,程序又需要创建对象,JVM的垃圾回收器将对Eden区进行垃圾回收(MinorGC),Eden区中不再被其他对象引用的对象就是要被清理的,但是此时仍然有仍然在使用的,此时会将活的对象整理都移动到Survivor0区,之后Eden区就完全清空,可以继续存放新的对象了。另外,虽然不同对象的周期不同,但是70%-99%的对象是临时对象,也就是很多对象都是朝生夕死的,如果分代的话,把新创建的对象放到某一地方,当GC的时候先把这块存储“朝生夕死”对象的区域进行回收,这样就会腾出很大的空间出来。原创 2022-10-30 15:01:35 · 251 阅读 · 0 评论 -
一文理解JVM的方法区
常量池可以看做是一张表,常量池内部的内容比较多,例如数量值、字符串值、类引用、字段引用、方法引用等等,虚拟机指令根据这张常量表找到要执行的类名、方法名、参数类型、字面量等类型。域的相关信息包括:域名称,域类型,域修饰符例如public,private,protected,static,final,volatile,transient等等。方法的修饰符(public,private,protected,static,final,synchronized,native,abstract的一个子集)原创 2022-10-30 11:41:29 · 283 阅读 · 1 评论 -
一文理解虚拟机栈
在JVM中,将符号转换为调用方法的直接引用与方法的绑定机制相关。绑定时参考的一个重要信息来源就是常量池,根据常量池的信息将这些内容转换为实际的地址。//一个方法对应一块栈帧内存区域int a = 1;int b = 2;return c;}}}我们通过javap -v Math.class 查看其字节码中main()方法的内容根据上图的信息我们可以推断出,new对应的就是new Math()原创 2022-10-30 11:29:13 · 634 阅读 · 0 评论 -
从源码理解双亲委派机制,原来如此简单
Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象。而且加载某个类的class文件时,Java虚拟机采用的是双亲委派模式。简单来说,双亲委派机制,就是app加载器先向上交由父类加载器进行加载,父类中找不到,再由子类加载器自行加载。具体来说:如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行;原创 2022-10-26 20:12:39 · 643 阅读 · 0 评论 -
从源码透彻理解JVM类加载机制
接下来,我们就逐个介绍一下几种类加载器。第一种:启动类加载器启动类加载器(引导类加载器,Bootstrap ClassLoader)这个类加载使用C/C++语言实现的,嵌套在JVM内部它用来加载Java的核心库(JAVA_HOME/jre/lib/rt.jar、resources.jar或sun.boot.class.path路径下的内容),用于提供JVM自身需要的类万物之祖,不继承其他类,没有父加载器加载扩展类和应用程序类加载器,并作为他们的父类加载器。原创 2022-10-26 20:02:54 · 621 阅读 · 0 评论 -
一文搞定JVM常见工具和优化策略
本文通过大量的示例和图示分析了常见的JVM工具的是呀方法和解决问题的思路步骤原创 2022-07-01 22:00:32 · 562 阅读 · 0 评论 -
一文搞定class的微观结构和指令
本文介绍了字节码的解析原理、字节码中的内容和指令执行的基本原理以及常见的指令原创 2022-07-01 21:12:36 · 265 阅读 · 0 评论 -
一文搞定垃圾回收器
本文介绍了JVM中垃圾回收器的核心问题,包括实现方法、常见垃圾回收器,以及相关特征等原创 2022-07-01 21:07:27 · 353 阅读 · 0 评论 -
一文搞定JVM的内存结构
本文详细介绍了JVM内部各个部分的功能、特征、相互协作过程等等,通过大量代码和示例揭示了JVM内存(运行时数据区)工作的基本过程。原创 2022-07-01 00:22:09 · 352 阅读 · 0 评论 -
透彻理解JVM类加载子系统
本问详细介绍了JVM类加载子系统的基本工作过程、类加载器分类和双亲委派机制等核心问题原创 2022-07-01 00:03:25 · 123 阅读 · 0 评论 -
如何优雅地用1小时处理1600万条数据库记录
有些业务场景发生改变时经常需要先修复历史数据,例如最近双清单政策出来之后,要求对用户敏感数据都要加密,主要是姓名、手机号和地址三个字段。过度方案很简单,先为三个字段 分别创建一个对应的name_encrypt,phone_encrypt和address_encrypt,先将对应的数据都加密保存起来,上线稳定后再将明文字段name,phone和address删掉。现在有个服务有1600万条记录,每条记录都要先处理一遍,那此时该如何做比较好呢?我们通过进阶的方式来逐步展开。第一级:多线程执行这种修理数据原创 2021-12-22 20:24:32 · 811 阅读 · 0 评论 -
log4j2爆出漏洞,如何快速升级
近日,Apache Log4j 的远程代码执行漏洞细节被公开,该漏洞一旦被攻击者利用会造成严重危害。Apache Log4j 是一款开源的Log4j2 室一款开源的Java日志记录工具,大量的业务框架都使用了该组件。此次漏洞是用于Log4j2 提供的lookup功能造成的,该功能允许开发者通过一些协议去读取相应环境中的配置。但在实现过程中,并未对输入进行严格的判断,从而造成漏洞的发生。解决方法最有效的就是将其升级到2.15.0。今天改造了公司的一个服务,因为是公司项目,不写太多的内容,只写几个修改的原创 2021-12-10 20:08:35 · 4692 阅读 · 0 评论