「原理分析」Spring Boot启动时基于spring.factories自动读取远端Environment实现的原理源码分析 Spring

「原理分析」Spring Boot启动时基于spring.factories自动读取远端Environment实现的原理源码分析

采用Spring标准的事件/监听器模型,通过Spring SPI的方式,在Spring Boot启动时,自动读取远端「远程服务器、本地硬盘等」Environment配置,方便在Spring Boot启动前,对配置进行灵活调整,增加灵活性,减少硬编码。 本文先从原理进行分析,表明其可行性,下一篇文章再展示具体的代码实现。首先从SPI的基础开始讲起。 1. 服务发现的基础:SPI 注:此...
阅读全文
Java垃圾回收详解 Java

Java垃圾回收详解

1.GC介绍 什么是垃圾回收(GC)? 垃圾回收,顾名思义,便是将已经分配出去的,但却不再使用的内存回收回来,以便能够再次分配。 在 Java 虚拟机的语境下, 垃圾 指的是死亡的对象所占据的堆空间。 Java 虚拟机中的垃圾回收器采用 可达性分析 来探索所有存活的对象。它从一系列 GC Roots 出发,边标记边探索所有被引用的对象。 为了防止在标记过程中堆栈...
阅读全文
「原理分析」Spring Boot启动时基于spring.factories自动读取远端Environment实现的原理源码分析 Spring

「原理分析」Spring Boot启动时基于spring.factories自动读取远端Environment实现的原理源码分析

采用Spring标准的事件/监听器模型,通过Spring SPI的方式,在Spring Boot启动时,自动读取远端「远程服务器、本地硬盘等」Environment配置,方便在Spring Boot启动前,对配置进行灵活调整,增加灵活性,减少硬编码。 本文先从原理进行分析,表明其可行性,下一篇文章再展示具体的代码实现。首先从SPI的基础开始讲起。 1. 服务发现的基础:SPI 注:此...
阅读全文
「原理分析」Spring Boot启动时基于spring.factories自动读取远端Environment实现的原理源码分析 Java

「原理分析」Spring Boot启动时基于spring.factories自动读取远端Environment实现的原理源码分析

采用Spring标准的事件/监听器模型,通过Spring SPI的方式,在Spring Boot启动时,自动读取远端「远程服务器、本地硬盘等」Environment配置,方便在Spring Boot启动前,对配置进行灵活调整,增加灵活性,减少硬编码。 本文先从原理进行分析,表明其可行性,下一篇文章再展示具体的代码实现。首先从SPI的基础开始讲起。 1. 服务发现的基础:SPI 注:此...
阅读全文
手写死锁及死锁排查 Java

手写死锁及死锁排查

死锁是指两个或多个以上的进程在执行过程中,因争夺资源而造成一种互相等待的现象,若无外力干涉那他们都将无法推进下去,如果资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。 产生死锁的原因 系统资源不足 进程运行推进的顺序不对 资源分配不当 死锁产生的四个必要条件 互斥 解决方法:把互斥的共享资源封装...
阅读全文
手工编写简化版CommonsCollections6,带你实现Java8全版本反序列化利用 Java

手工编写简化版CommonsCollections6,带你实现Java8全版本反序列化利用

这是代码审计知识星球中《Java安全漫谈》的第十二篇文章。 本文带大家编写一个简化版的CommonsCollections6利用链,代码量相比于ysoserial减少50%,能够让大家更好理解。 上一篇文章我们详细分析了CommonsCollections1这个利用链和其中的LazyMap原理。但是我们说到,在Java 8u71以后,这个利用链不能再利用了,主要原因是 ...
阅读全文
权限设计算法基础 Java

权限设计算法基础

权限管理在一个系统中是不可或缺的,总的来说还是一个数学的问题。 最笨的方法 之前这个系统的权限管理是通过配置文件来处理的,大概流程是这样的,把用户分成多个用户组,然后每个用户组对应着多个用户的 id,每次访问页面的时候,都会读取这个配置文件的信息,判断登录用户的 id 属于哪个用户组,然后在页面判断这个用户组是否有访问这个链接的权限。配置文件的格式是这样的: {"adm&quo...
阅读全文
今日头条 Android ' 秒 ' 级编译速度优化 编程技术

今日头条 Android ' 秒 ' 级编译速度优化

背景介绍 Android 项目一般使用 gradle 作为构建打包工具,而其执行速度慢也一直为人所诟病,对于今日头条 Android 项目这种千万行级别的大型工程来说,全量编译一次的时间可能高达六七分钟,在某些需要快速验证功能的场景,改动一行代码的增量编译甚至也需要等两三分钟,这般龟速严重影响了开发体验与效率,因此针对 gradle 编译构建耗时进行优化显得尤为重要。 在今日头条 Andr...
阅读全文
支付系统 - Swagger 的快乐你不懂[减压文] 软件架构

支付系统 - Swagger 的快乐你不懂[减压文]

前言 这篇文章聊一点放松的内容(反正我觉得挺放松挺解压的,水完这篇文章以后,我准备睡个好觉) 经常和前端联调的时候,需要提供文档(就很烦)。如果是自己新写的接口还好,怕就怕是之前的老接口,各种返回值的逻辑都不太清楚了,找原来的文档又找不到,找到了还一定是最新的。此时,我就在想能不能搞个东西让它自动生成文档。解决一下这个文档不跟着代码走的老大难问题。 好在是,优秀的人总是不...
阅读全文
转转小程序自动化构建部署方案 Java

转转小程序自动化构建部署方案

关注我们文末有福利 作者简介 强敏 一个三年前端经验正在茁壮成长的程序媛,目前主要负责小程序业务生态,偶尔也写点VUE,未来希望再写写node能够跑通全链路 转眼之间,距离微信小程序诞生至今已有 3 年历史,背靠微信这个巨大流量池,小程序以其轻量级,即用即走的特点赢得了广大用户的青睐。 微信公开数据显示,截止 2019 年 11 月,当前已上线小程序总数超...
阅读全文
Loading...