- 博客(100)
- 收藏
- 关注
原创 spring脑图-动态代理-静态代理-通俗易懂理解
动态代理(而在动态代理中,你可能不确定哪个代购人员会帮你购物,但你希望有人能够替你完成购物任务。在需要购物时,你会根据代购人员的可用性和能力来选择合适的人选。不同的代购人员可能有不同的购物方式和策略,以满足你的需求)静态代理(想象你委托一个特定的代购人员帮你购买所有的商品。无论你需要什么东西,你都会联系这个特定的代购人员,他会按照你预先告知的清单和方式去购买商品。)
2024-02-23 15:55:21
445
原创 3DTiles/TERRAIN/TMS/KML/GLTF/GLB/XYZ
想加载整个城市的三维模型→ 用3DTiles想看到有山有谷的立体地形→ 用TERRAIN想加载预切好的地图图片→ 用TMS想在地图上标记点、线、面→ 用KML想把标记和图片打包一起带走→ 用KMZ想放一个精致的3D模型→ 用GLTF/GLB想按规则找地图块→ 用XYZ。
2026-02-10 14:26:41
339
原创 WMS/WMTS/WFS /MVT 做对比
本文对比了多种地理信息服务协议的特点:WMS提供动态地图但速度慢;WMTS通过预切片提升速度;WFS支持矢量数据操作;WCS处理栅格数据;WPS支持空间计算。重点介绍了MVT(Mapbox Vector Tiles)作为矢量瓦片格式的优势,包括二进制压缩、前端渲染和快速加载。MVT介于WMTS和WFS之间,兼具矢量数据的灵活性和瓦片的高效性。文章还梳理了各类协议的适用场景,帮助理解地理信息服务的完整体系。
2026-02-10 11:32:25
927
原创 先搞懂:SHP,3DTiles不管是TIF/IMG/DEM(栅格),OBJ/FBX/GLTF/OSGB(模型)=原始数据 → 转换/切片成3DTiles格式 → 发布成HTTP服务 → 前端按需加载*
SHP不能直接加载的核心:是本地二进制多文件格式,前端无原生解析能力,大文件直接加载性能崩溃;转换/入库的目的:将SHP适配成“切片/数据库/服务”,实现轻量化、按需加载、兼容三维/二维引擎;GeoJSON/KML能直接加载,只适用于小数据量,大数据量仍需走服务化路线。如果你的场景是“加载SHP到三维场景(如Cesium)”,我可以给你具体的转换流程(比如用FME/SuperMap/开源工具转3DTiles),一步一步教你操作。
2026-02-10 11:01:11
276
原创 Redis 分布式锁+接口幂等性使用+当下流行的限流方案「落地实操」+用户连续点击两下按钮的解决方案自用总结
连续点击:前端禁用 + 后端幂等(唯一索引/Token)。脚本攻击:IP/接口限流 + 消息队列异步削峰。你核心想掌握Token+Redis SETNX实现接口幂等的具体落地、Redis分布式锁的面试核心知识点,以及当下流行的限流方案(含代码/实操),而且要能直接落地应用,接下来我会把每个点拆成核心原理+实操步骤+代码实现+面试考点,全程贴合实际开发和面试场景,不用再记空方案。SETNX不是完整的分布式锁,但它是分布式锁/幂等校验的核心基础,后面会先讲这个点,再按你的需求逐个落地。
2026-02-06 10:21:32
1046
原创 用最 **通俗易懂的方式**,把 **阿里 OSS** 和 **SeaweedFS** 的大文件断点续传步骤总结
步骤阿里 OSSSeaweedFS1初始化 UploadId获取 fid(目标文件 ID)2分片上传,每块记录状态一次上传整个文件,或用 S3 兼容层手动分片3中断恢复上传(官方支持)中断恢复需要自己实现逻辑4合并分片生成完整文件原生接口直接完成;分片上传需客户端合并一句话总结OSS:4 个步骤,官方帮你管断点,稳定可靠。SeaweedFS:2~3 个步骤,断点续传要自己实现,接口更原始。
2026-02-04 10:52:03
265
原创 IPv6 / IPv4 / 127.0.0.1“是什么 → 有什么区别 → 什么时候该用”
摘要:本文清晰区分了IPv4、IPv6和127.0.0.1三种地址类型。IPv4是当前互联网主力,稳定通用;IPv6(如fe80::)因兼容性问题不适合服务注册和跨机器通信;127.0.0.1仅用于本机访问。关键结论:对外服务必须用IPv4,本地开发用127.0.0.1,避免使用IPv6的fe80::地址。三者本质区别在于:IPv4可被他人访问,IPv6仅限于系统内部,127.0.0.1仅指向本机。
2026-02-04 10:38:55
290
原创 分布式文件上传&节点同步 技术问题排查&解决方案记录(含NFS/GlusterFS/Spring集成)
本文档覆盖分布式架构下文件上传、节点同步的核心场景,重点梳理NFS、GlusterFS的部署、Spring集成、Java操作及Windows兼容问题,所有解决方案均为可直接落地的实操方案,避坑要点针对新手常见问题,后续查阅可按「场景→问题→解决方案→避坑」快速定位,减少重复踩坑。通俗定义:将一个存储介质(本地磁盘、网络存储)的目录,映射到本地系统的一个目录(挂载点),使得访问本地挂载点,等同于访问该存储介质的目标目录,本质是“打通访问通道”。2. 挂载时配置开机自动挂载(/etc/fstab);
2026-01-25 01:00:00
568
原创 DolphinScheduler StorageOperator 注入与 SPI 加载问题排查记录
❌ 不要假设 StorageOperator 是 Spring Bean❌ 不要只在 IDEA 里跑 API 就认为 SPI 一定生效❌ JVM 的-classpath不能直接写*.jar✅ 线上环境 classpath 和 IDE 本地环境是完全不同的✅ SPI + Spring 适配层是二次开发最稳方案。
2026-01-23 15:29:54
422
原创 DolphinScheduler StorageOperator 注入与 SPI 加载问题排查记录
❌ 不要假设 StorageOperator 是 Spring Bean❌ 不要只在 IDEA 里跑 API 就认为 SPI 一定生效❌ JVM 的-classpath不能直接写*.jar✅ 线上环境 classpath 和 IDE 本地环境是完全不同的✅ SPI + Spring 适配层是二次开发最稳方案。
2026-01-23 15:25:40
473
原创 SeaweedFS Filer 目录重命名 / 复制问题排查记录***SeaweedFS 没有目录对象,只有路径前缀。
SeaweedFS 没有目录对象,只有路径前缀。如果你愿意,我可以把这张表直接嵌进刚才那份排查文档里,作为“设计认知”章节,后面谁看那份文档都不会再问这个问题。不是 listAllObjects 写错不是 SeaweedFS 权限问题而是请求返回类型错误(HTML vs JSON)给人看的 → HTML给程序用的 →?pretty=y此规则未意识到之前,所有目录类操作都会踩坑。
2026-01-23 15:21:38
482
原创 # Spring Boot 跨域请求未到达后端问题排查记录
该问题不是“接口没写好”,而是“请求根本没进入后端”浏览器跨域请求被拦截(CORS / 预检失败)Spring Security 未放行 OPTIONS 请求与组合导致浏览器拒绝响应浏览器请求接口失败,但后端无任何日志前端报错:CORS error / Network Error / Failed to fetchPostman 可访问,浏览器不可访问OPTIONS 请求失败,真实请求未发送前端反馈“后端接口没通”,但后端确认服务正常。
2026-01-23 15:16:56
627
原创 最近遇到技术问题、误区、排查路径、根因与最终解决方案
《SeaweedFS S3断点续传问题复盘》是一份工程化的问题排查文档,采用"认知误区→现象→排查→根因→解决方案→结论"的结构组织。文档明确区分了S3/SeaweedFS的能力边界、HTTP/Tomcat的非业务限制以及客户端与服务端的责任划分。核心认知包括:SeaweedFS实现了S3 MultipartUpload协议而非完全兼容S3;断点续传问题根因是HTTP容器限制而非S3不支持;S3的MultipartUpload已原生支持分片存储、校验和断点续传功能。该文档可作为团队技术沉
2026-01-23 15:12:57
44
原创 技术问题排查与解决记录文档
认知偏差修正:参考Batu老师提供的HTML代码中,默认包含“buckets”层级路径,误将该路径层级当作“已创建的存储桶”,导致前期误以为桶已存在,未执行创建操作。参考第三方代码(如本次Batu老师提供的HTML代码)时,需区分代码中的层级路径与实际存储桶的创建逻辑,避免将路径层级当作已存在的桶实体;在实现对象存储断点续传功能时,持续出现403错误,无法正常完成文件上传操作;间接原因:混淆了HTML代码中的“buckets”层级路径与实际存储桶实体,造成“桶已创建”的误判,未提前手动创建对应存储桶。
2026-01-23 15:02:30
336
原创 *NFS、SMB、FTP、MinIO** 这四种文件共享方案的核心区别
方案是否是共享文件夹同步核心同步逻辑NFS✅ 是挂载为本地文件夹,实时自动同步SMB✅ 是挂载为本地文件夹,实时自动同步FTP❌ 否手动上传/下载实现数据交换MinIO❌ 否通过 API 上传/下载实现数据交换。
2026-01-12 10:48:06
427
原创 *NFS、SMB、FTP、MinIO** 这四种文件共享方案的核心区别
SMB→ 完全匹配你的需求:Windows 节点为主、免繁琐配置、Java 易集成;FTP→ 适合小批量文件传输,作为补充方案;MinIO→ 适合未来节点扩容、需要海量存储时升级;NFS→ 不推荐(Windows 配置太麻烦,和你的需求冲突)。
2026-01-12 10:46:39
644
原创 文件上传的数据同步方案
同步方式核心原理优点缺点适用场景统一共享存储(NFS/MinIO)中心化存储,节点直接访问无同步延迟、一致性高、实现简单依赖共享存储服务、有单点风险(可规避)生产环境首选、大部分分布式场景Master主动推送Master推文件到所有节点无需共享存储、实时同步、可控性高Master压力大、大文件耗带宽中小集群、无共享存储、小文件节点被动拉取节点主动从Master下载Master无压力、实现简单同步有延迟、需处理版本冲突低频更新文件(配置、静态资源)分布式同步工具。
2026-01-12 10:33:34
952
原创 Java 中常用的设计模式可分为三大类
Java设计模式分为创建型、结构型和行为型三大类,每种模式解决特定场景问题。创建型模式(如单例、工厂、建造者)关注对象创建机制;结构型模式(如代理、装饰器、适配器)处理类或对象组合;行为型模式(如观察者、策略、模板方法)管理对象间通信。核心设计原则包括开闭原则、单一职责等,合理运用设计模式可提升代码复用性、扩展性和可维护性,但需避免过度设计。实际开发中,Spring等框架广泛应用了这些模式。
2025-10-11 10:25:57
484
原创 @SneakyThrows`是Lombok提供的一个注解
是Lombok提供的一个注解,它的主要作用是简化异常处理,在一定程度上减少样板代码,让代码更加简洁易读。
2025-09-18 10:07:58
354
原创 英语笔记+比较级和最高级
as”结构中无需加“more”,直接用原级“exciting”即可,因此需删除“more”。as” 中间的形容词/副词需用原形(如 “fast” 而非 “faster”,“beautiful” 而非 “more beautiful”),因为它比较的是“两者程度相同”,而非“一者比另一者更……在英语中,最高级修饰的名词通常是“特定范围内的唯一者”(如“市场上最便宜的那一款平板”),定冠词 “the” 的作用就是特指这个“唯一的最高级对象”,这是最高级作表语或定语时的固定语法要求。帮我矫正英语错误;
2025-08-21 15:05:04
875
原创 Nexus【应用 01】上传jar包到私有Maven仓库的两种方法:手动 Upload 和 mvn deploy 命令(配置+操作流程)
手动Upload和mvn deploy命令两种上传方式的应用场景不同,手动上传适用于工具类的jar包,比如项目需要引入的lib文件,这种可以选择手动上传。复杂的、有较多依赖的jar包则需要连同pom文件一起上传,此时需要使用mvn deploy。以下内容均以 Sonatype Nexus Repository Manager OSS 3.27.0-03版本进行说明。如果不勾选,上传成功后没有。1.1 手动Upload。
2025-08-19 16:02:03
1090
原创 内置redis使用方法
在Spring Boot项目中,通过注解实现嵌入式Redis缓存可以简化开发流程。主要步骤包括:引入Spring Cache、Redis客户端和嵌入式Redis依赖;在配置文件启用嵌入式Redis并设置缓存参数;在启动类添加@EnableCaching注解开启缓存功能;使用@Cacheable、@CachePut、@CacheEvict等注解实现自动缓存逻辑。这种方法无需手动操作Redis,通过注解即可完成缓存的查询、更新和删除操作。嵌入式Redis适合开发测试环境,生产环境需切换为独立Redis服务。
2025-08-11 16:15:03
1202
原创 geomtry空间索引sql查询慢优化
👉 如果第三条结果非常少(<1000),那就绝对不应该全表 JOIN。使用执行计划查看是否走索引,发现走了索引,但是查询速度还是特别慢。✅ 极大减少无效 ST_Intersects 的计算次数。✅ 以每个 polygon 为主,查其范围内可能的点。➤ 2. 打印所有相交 ID 看看“哪里交集了”➤ 1. 看看是否真的有交集(先打印有几条)✅ 利用空间索引缩小搜索空间。
2025-07-25 15:34:41
277
原创 # 根据圆心点的经纬度以及半径生成一个**二维平面、多边形缓冲(圆形)**,基于经纬度点,生成半径 2000 米的圆形多边形,且SRID正确匹配,方便QGIS使用。需要依赖posgreSql 数据库的
【代码】# 根据圆心点的经纬度以及半径生成一个**二维平面、多边形缓冲(圆形)**,基于经纬度点,生成半径 2000 米的圆形多边形,且SRID正确匹配,方便QGIS使用。需要依赖posgreSql 数据库的。
2025-07-16 10:12:49
239
原创 通俗易懂的解释一下对象存储和s3
对象存储**在不同领域中,“S3标准”可能指代不同的内容,其中最广为人知的是亚马逊S3(Amazon Simple Storage Service)的存储标准,即“S3标准存储类别”。亚马逊S3标准存储类别(S3 Standard)亚马逊S3是亚马逊云服务(AWS)提供的对象存储服务,用于存储和检索任意数量的数据。“S3标准”是其默认的存储类别,针对频繁访问的数据优化,具备高可用性、高持久性和低延迟的特点。
2025-07-16 10:06:55
1844
原创 英语学习笔记2.0
used ten mint in 公司 ✏️ it takes ten minutes to get to the company “used”不对,这里要说“it takes 时间 to 地点”,另外“mint” 应为 “minutes”,“公司”是 company。“have lunch” / “have breakfast” / “have dinner” 就是说“吃午饭/早餐/晚饭”的意思。(你今天吃早餐了吗?其实,“eat” 更强调动作“吃”,而 “have” 更强调整个“吃饭”的过程。
2025-07-10 16:00:18
1039
原创 英语笔记1.0
当然可以!我们一步一步来,从最基础的语法和时态讲起,用最通俗的方式解释。我们先从两个关键内容开始:英文的核心句子结构很简单,可以记成:例子:🔍 说明:英语有很多时态,但常用的就几种,先学懂这四个:👉 表示经常、习惯、事实例子:💡 特点:👉 表示过去发生的事情例子:💡 特点:👉 表示将来要发生的事例子:💡 特点:👉 表示正在进行的事情例子:💡 特点:📚 一、5W1H 疑问词通俗讲解🎯 二、这些疑问词要怎么用?大多数疑问句结构都是:疑问词 + 助动词/Be动词 + 主语 + 动词(+ 其
2025-07-10 15:51:09
1240
原创 在 Linux 系统中,Java 配置主要涉及以下几个方面:1. 环境变量配置JAVA_HOME :这是最重要的 Java 环境变量。它指向 Java 的安装目录。例如,如果你安装的 JDK 路径
如果用户自行下载并安装了 Java,安装路径可能是根据用户的选择而定,比如安装在。
2025-05-07 11:36:25
502
原创 几何类型(Geometry Types)虽然名称相似,但在结构、维度和用途上是有明显区别的
例如:POLYGON Z ((0 0 10, 10 0 10, 10 10 10, 0 10 10, 0 0 10))例如:MULTILINESTRING Z ((0 0 10, 1 1 20), (2 2 30, 3 3 40))例如:MULTILINESTRING((0 0, 1 1), (2 2, 3 3))MULTILINESTRINGZ: 和上面相同,但每个点有 Z 值。PolygonZ: 一个封闭的区域,且每个点有 Z 值(高度)例如:LINESTRING(0 0, 1 1, 2 2)
2025-05-06 16:54:10
436
原创 Spring 中四种常见初始化方法,对比 static {} 和 @PostConstruct 在并发,Spring 加载顺序大致为: JVM 加载类
✅ 推荐用 @Component + @PostConstruct 方式做初始化(上面给的那种),能配合配置文件读取、统一容器生命周期控制。✅ 4. CommandLineRunner —— 启动后执行,参数来自 main(String[] args)✅ 3. ApplicationRunner —— Spring Boot 启动完成后执行(可接收参数)❌ 不要将 gdal 初始化写在静态代码块中,否则类一被引用就执行,不受 Spring 控制。✅ 1. @PostConstruct —— 最常用、简洁。
2025-05-06 14:32:39
1129
原创 空间参考系统核心基础概念
地理信息处理的本质是 “让数据在正确的空间框架下说话”。从坐标系的选择(EPSG:4326 为何重要)到数据转换(为何要转 GB4326),再到分析与可视化,核心都是围绕 “空间参考系统” 展开 —— 这是所有后续操作的地基。掌握这些基础,才能避免 “差之毫厘,谬以千里” 的错误,确保地理数据的科学性和实用性。
2025-04-28 11:49:56
940
原创 PostgreSQL 数据库的作用、原理及 `geometry` 类型解析
PostgreSQL 凭借强大的关系型数据管理能力和 PostGIS 扩展,成为空间数据存储与分析的核心工具作用:既是通用数据库,也是空间数据库,支持从业务数据到地理数据的统一管理。原理:通过标准化的空间数据类型(geometrygeography)、空间索引和 OpenGIS 函数,将几何运算融入 SQL 生态,实现“数据+空间”的双重查询能力。geometry本质。
2025-04-28 11:47:35
935
原创 使用GDAL将geojson传入的面转成点阵数据 ,并且处理多个面取最大的经纬度四个点闭合,同时将参数化 将 GeoJSON 中的 Polygon / MultiPolygon 转为点阵;
摘要:该Java工具类GeoJsonGridGenerator实现了将GeoJSON中的多边形/多多边形转为规则点阵的功能。主要特性包括:1) 支持设置点间距(度单位);2)可限制每个面的最大点数和最大面积;3)输出结构包含每个面的索引、点数、面积及坐标点集。通过GDAL库读取几何要素,采用边界盒遍历和空间包含检测生成点阵,当达到点数或面积限制时自动跳过处理。使用示例展示了如何传入GeoJSON路径和三个控制参数获取转换结果。
2025-04-28 11:46:35
171
原创 Caffeine的两种实现方式
你的配置代码 +@Cacheable是Spring 标准方式,简单方便,但 TTL 不灵活;是手动缓存方式,更灵活、可控,适合复杂缓存策略。
2025-04-11 16:39:09
389
原创 select、poll 和 epoll 是处理多任务网络请求的三种常见方法。
/ 屏幕显示当前需要处理的学生。// 挨个询问名单里的学生。学生桌上有一个按钮,想提问时按按钮(触发事件),老师的屏幕会直接显示需要帮助的学生座位号,老师只需要看屏幕过去解答。// 记录学生1可能提问。
2025-03-18 18:24:58
498
原创 redis中的list的底层数据结构有两种:双向链表(Doubly Linked List)和压缩列表(ZipList)/hash也有两种哈希表(Hash Table)和压缩列表(ZipList) 。
Redis 的数据结构是为了在内存中快速操作而设计的,而 Java 的数据结构则更侧重于通用性和灵活性。Redis 是一个开源的内存数据结构存储系统,它支持多种数据类型,每种数据类型都有其特定的底层数据结构来实现。综上所述,虽然Redis的Hash和Java的Map在底层都使用了数组和链表来解决哈希冲突,但在具体的实现细节上存在一些差异,特别是在处理哈希冲突和扩容机制上。Redis 的数据类型和底层数据结构的设计使得它能够提供高性能的数据操作和存储能力,适用于多种应用场景,如缓存、消息队列、排行榜等。
2025-03-12 00:00:00
1347
原创 客户端请求在 Spring Cloud Alibaba 框架中,包括 Nginx、Gateway、Nacos、Dubbo、Sentinel、RocketMQ 和 Seata 的调用链路描述
这个调用链路详细描述了一个客户端请求在 Spring Cloud Alibaba 框架中如何经过 Nginx、Gateway、Nacos、Dubbo、Sentinel、RocketMQ 和 Seata 的全过程。每个组件在不同的阶段发挥作用,确保请求的高效处理、服务的稳定性和数据的一致性。
2025-03-11 00:00:00
1974
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅