/images/avatar.jpg

好久不见,别来无恙

DevContainer 实践:VS Code vs JetBrains 深度对比

DevContainer 实践:VS Code vs JetBrains 深度对比

为什么需要 DevContainer

作为 GIS 后端开发,我经常遇到这些痛点:

  • 环境依赖复杂:Python + C++ 扩展(GDAL、Shapely)编译环境难以统一
  • 团队协作困难:「在我电脑上能跑」成为日常
  • 迁移成本高:换电脑或服务器部署时重新折腾环境

DevContainer 的核心思想很简单:把开发环境装进容器,代码挂载进去,IDE 连进去开发

ENU/ECEF/WGS84坐标系理解

ENU/ECEF/WGS84坐标系理解

核心概念

/posts/202512/ecef_enu_wgs84/assets/ecef.png

定义

ecef的z轴指向北极,x轴是本初子午线和赤道的交汇处,由地心指向,y轴则是满足右手坐标系

wgs84定义在椭球面上,LLA(对应x轴方向夹角经度lon,z方向夹角维度lat,和相对于椭球面高度alt)

spring源码理解bean生命周期

spring IOC 源码理解

注:本文参考 spring版本6.2.10,各个大版本可能有一些细微区别,但大致原理相同

  • 本文不准备贴大段的代码,那个并没有什么特别的意义,除非特别关键的。阅读框架的思想是抽象大于细节,找到最高层次的抽象,找到入口函数。理解思想。对于spring bean 的ioc容器,而且最后搜集到一个concurrenthashmap中去。主线就是bean的生命周期管理。从bean的搜集->初始化->成熟->销毁。这是一个相当简化的模型,结合了相当多的回调函数,但是核心还是继承了beanFactoryPostProcessor和beanPostProcessor这两个接口,甚至你会发现所谓的bean搜集,就是beanFactoryPostProcessor的子接口BeanDefinitionRegistryPostProcessor的做的,aop切面则是beanPostProcessor做的。
  • spring beans这个包有着比较重要的几个抽象接口,下面依次说明。在阅读代码的时候建议之间查看uml图,重点查看继承关系,特别是这种框架代码很多模版方法,很多具体的细节在抽象类而不是具体实现类。

spring IOC

入口函数

spring的最重要的函数是AbstractApplicationContext的refresh函数,这里是一切的起点。建议阅读源码的时候从这里开始打断点,你可以一步一步进去看看是怎么做的。