- 博客(60)
- 收藏
- 关注

原创 【经纬度转地址实现方案】根据给定的经纬度,查询对应城市,通过建立经纬度geohash-行政区映射表,实现快速查询
本文介绍了一个将经纬度坐标快速匹配到对应行政区的实现方案。该方案主要包括以下步骤:通过高德API获取所有行政区信息和边界点,将行政区数据存储到(行政单位信息表),计算行政区的中心点,转成geohash编码,并记录geohash和行政区的映射关系到,本方案适用于热力图、行车轨迹灯不要求精确位置的场景。 该方案的优势在于高效性:通过GeoHash编码,将经纬度坐标转换为较短的字符串,便于存储和搜索,提高了匹配效率。准确性:使用外接矩形的中心点作为行政区的代表点,能快速计算出中心点可扩展性。
2024-11-21 18:18:27
1988
原创 【mac】ClaudeCode安装教程
配置系统变量,完成身份验证,设置api token。启动 Claude Code:执行 claude。
2025-07-09 11:06:34
191
1
原创 【Cursor】开发chrome插件,实现网页tab根据域名分组插件
我们日常工作和学习中经常需要同时打开大量网页标签页。无论是研究某个技术主题、还是同时处理多个工作任务,浏览器中打开的标签页数量往往会迅速增长。随之而来的是标签栏变得拥挤不堪,标签缩小到只能看到图标,严重影响了工作效率和浏览体验。那能不能开发一个工具来做好标签页分组呢?最好是轻量级的,自己够用的就行。想了想,最简单的方式就是Chrome扩展开发了,轻量高效。提示:以下代码内容均是由cursor生成。
2025-06-04 17:07:47
390
原创 【Deppseek+RAG】RAG是什么?一文读懂检索增强生成技术
简单介绍近期常听到的 deepseek+RAG组合,清晰介绍RAG是什么?简单的原理是什么样?并提供了RAG的实现技术方案和示例代码
2025-04-14 18:00:27
940
原创 【Java导出word】使用poi-tl轻松实现Java导出数据到Word文档
传统POI的API操作繁琐(需手动创建Run/Paragraph等元素)、复杂格式难以保持一致性大文件导出易引发内存溢出。poi-tl作为基于Apache POI的模板引擎,通过声明式模板设计实现了代码与样式的解耦,其轻量级内核(仅1.2MB)相比原生POI减少80%的代码量,在10万行数据量场景下内存消耗降低65%。本文基于实际报表需求场景,详解如何通过模板语法与数据绑定机制实现高效文档输出,助力你摆脱低效的文档构造模式,掌握导出数据到word到技术能力。核心技术价值。
2025-03-19 15:58:07
1727
2
原创 【DeepSeek】为什么国产大模型DeepSeek突然火了?普通人也能听懂的技术解读
最近国产大模型DeepSeek突然刷屏,数学题秒解、代码自动写,甚至传说“智商超过GPT-4”。这个横空出世的模型为什么这么强?背后到底用了什么黑科技?作为普通人,看完这篇你就懂了。DeepSeek的成功证明:在特定领域,高质量数据+定向优化+工程落地的组合拳,完全可以超越一味追求参数量的“大力出奇迹”。下次看到它秒解你的高数作业时,别忘了这背后是一群工程师给AI做了两年《五年高考三年模拟》的疯狂特训。这就是典型的国产AI的“衡水中学模式”。国产大模型deepseek的崛起,让AI的使用门槛,进一步降低。
2025-02-08 14:21:25
1151
原创 【Git场景】本地提交内容,未push到远程分支,撤销了commit,导致新建的文件也没有了,怎么恢复?
写代码的过程中,发现commit的内容包含了不想提交的文件,因此执行了commit回滚命令很开心,轻轻松松就解决问题,幸好没有把不想提交的文件,提交到远程分支。但是随着IDEA目录一刷新,我的天都要塌了,我本次新增的那些文件全部消失了!!!一整天白干??!!
2025-02-08 13:41:06
492
原创 【由浅入深认识Maven】第4部分 maven在持续集成中的应用
大家一定会在项目开发中接触到持续集成 (CI)的概念。持续集成是现代软件开发中常见的实践,旨在通过自动化的构建、测试和部署流程,确保代码能够在任何时候都可以稳定地运行。在实现持续集成的过程中,如何高效地使用构建工具来确保流程的顺畅与高效,是一个关键问题,学会了可以加钱。在我之前参与的多个项目中,Maven与持续集成系统(如 Jenkins、GitLab CI)结合,帮助团队大幅提升了开发效率。Maven 不仅仅是一个构建工具,它的自动化构建特性使得代码能够在提交后自动触发构建,并确保每次构建都是一致的。
2025-01-26 22:58:29
1508
原创 【由浅入深认识Maven】第3部分 maven多模块管理
开发大型项目时,我们通常需要将项目拆分为多个模块,每个模块负责不同的功能。这样做不仅能够提高代码的可维护性,还能让团队成员分工合作,减少冲突。项目的规模不断扩展,随之而来的问题是,如何有效地管理这些模块之间的依赖关系。在这种情况下,Maven 的多模块项目支持功能显得尤为重要。参与企业级应用开发时,由于项目分成了多个模块,每个模块分别处理不同的业务逻辑。刚开始,大家在构建各自模块时都比较顺利,但当涉及到模块间的依赖和版本管理时,问题开始浮现:有些模块的版本不一致,某些模块需要更新,依赖关系很难清晰地管理。
2025-01-26 22:51:32
1417
原创 【由浅入深认识Maven】第2部分 maven依赖管理与仓库机制
后端研发同学经常面临项目中需要依赖大量第三方库的情况。这些依赖库通常是我们工作中的基础工具,例如Spring、Log4j、JUnit等,它们大大简化了开发过程。当项目越来越大,依赖越来越多时,如何管理这些库就成了一个大问题。在没有有效管理的情况下,可能会遇到重复下载JAR包、版本冲突、依赖版本不一致等问题,甚至会影响到项目的稳定性和可维护性。记得刚开始接触Maven时,我也曾经有过类似的困惑。
2025-01-25 23:05:40
1219
原创 【由浅入深认识Maven】第1部分 maven简介与核心概念
构建工具的选择与使用始终是提高工作效率的关键之一。代码编译、测试、打包、发布以及依赖管理。面对这些复杂的任务,如果没有一个合适的工具来规范和自动化这些过程,我们可能会花费大量的时间来处理重复且低效的操作,就没有办法准时下班了,无法高效工作,就要加班加点了。为了更好的平衡工作与生活,学会通过构建工具来提效,是很重要的能力。Maven的出现,极大地简化了我们在开发过程中的构建和管理工作。无论是依赖库的管理,还是构建过程的自动化,Maven都提供了高效的解决方案。
2025-01-25 22:17:17
1489
原创 《Effective Java》学习笔记——第8部分 序列化
Effective Java》第8部分“序列化”深入讨论了 Java 中的序列化机制及其最佳实践。序列化是将对象的状态转换为字节流,以便于存储或通过网络传输。Java 提供了内置的序列化机制,但在使用时需要谨慎,尤其是在处理复杂对象和版本控制时。合理使用序列化能够确保系统的稳定性、兼容性和性能。原因:默认的序列化行为可能无法满足某些特定需求。通过自定义序列化方法,可以控制序列化和反序列化的行为,如对字段的加密、压缩等操作。重写和方法来自定义序列化和反序列化的行为。在自定义序列化过程中,要注意处理和。
2025-01-24 22:44:31
935
原创 《Effective Java》学习笔记——第7部分并发
Effective Java》第7部分“并发”介绍了如何编写高效、安全的多线程程序。随着多核处理器的普及,Java 的并发编程变得更加重要。本部分的内容涵盖了并发编程中的一些常见问题,并提供了一些最佳实践和技巧,以帮助开发编写出更加可靠且高效的并发程序。
2025-01-24 22:41:52
964
原创 《Effective Java》学习笔记——第6部分枚举和注解
Effective Java》第6部分“枚举和注解”详细讲了如何在 Java 中使用枚举(enum)和注解(annotation)这两个重要特性。枚举和注解自 Java 5 引入以来,极大地增强了 Java 的表达能力和类型安全性。正确地使用它们可以提高代码的可读性、可维护性和可靠性。原因:自定义注解可以用于标记类、方法、字段等,允许开发者在编程时嵌入特定的元数据。这些元数据可以通过反射 API 来读取,从而实现一些额外的功能,如代码检查、日志生成、配置读取等。
2025-01-23 08:30:00
718
原创 《Effective Java》学习笔记——第5部分 泛型的使用
Effective Java》共有多个章节,每个章节提供了若干条建议或最佳实践,整理了对应章节关键的实践内容,用于自己后续代码开发过程中,参考对照,自查代码习惯,从而提升输出的代码质量。《Effective Java》第5部分“泛型”主要讲如何在 Java 中正确有效地使用泛型。泛型是 Java 5 引入的重要特性,它增强了类型安全性、减少了类型转换的需求,并且使得代码更加通用和灵活。但是,泛型的使用不当也可能导致程序的错误或性能问题。掌握泛型的使用技巧和最佳实践,对于提升个人代码能力非常重要。
2025-01-23 08:15:00
684
原创 《Effective Java》学习笔记--第4部分 类和接口设计实现最佳实践
Effective Java》共有多个章节,每个章节提供了若干条建议或最佳实践,整理了对应章节关键的实践内容,用于自己后续代码开发过程中,参考对照,自查代码习惯,从而提升输出的代码质量。《Effective Java》第4部分“类和接口”深入探讨了如何设计高质量的类和接口。在 Java 中,类和接口是构建程序的核心单元,良好的类和接口设计能够增强代码的可维护性、可扩展性和可重用性。书中通过一系列的最佳实践和设计建议,帮助我们构建清晰且高效的类和接口。
2025-01-22 09:15:00
1525
原创 《Effective Java》学习笔记--第3部分 方法设计和实现最佳实践
Effective Java》共有多个章节,每个章节提供了若干条建议或最佳实践,整理了对应章节关键的实践内容,用于自己后续代码开发过程中,参考对照,自查代码习惯,从而提升输出的代码质量。当前我的编码要求是方法做到单一职责,每个方法的实现行数不要超过50行。这种方式可以避免裹脚布似的长代码,给自己和后来者留条活路。
2025-01-22 08:30:00
1460
原创 《Effective Java》学习笔记——第2部分 对象通用方法最佳实践
Effective Java》共有多个章节,每个章节提供了若干条建议或最佳实践,整理了对应章节关键的实践内容,用于自己后续代码开发过程中,参考对照,自查代码习惯,从而提升输出的代码质量。
2025-01-21 18:11:41
1161
原创 《Effective Java》学习笔记——第1部分 创建对象和销毁对象的最佳实践
Effective Java》共有多个章节,每个章节提供了若干条建议或最佳实践,整理了对应章节关键的实践内容,用于自己后续代码开发过程中,参考对照,自查代码习惯,从而提升输出的代码质量。
2025-01-21 16:11:00
1024
原创 【Java 数据导出到 Word实现方案】使用EasyPOI 工具包进行简易的word操作
最近业务方说周报、月报让他们很头疼,每次都要统计数据后,手动录入到word文档里,希望我负责的平台能够提供这个功能。他们只需要轻轻一点导出,平台就可以帮他们把数据统计好,然后填入到word模板文件指定位置,导出成word文件,给到他们。毕竟要考业务方给饭吃,肯定得答应呀。所以就开始看看java和word是怎么交互的,用什么工具包来搞定这个开发需求。使用 EasyPOI 导出 Word 文件的过程非常简便,尤其适合那些不需要进行复杂 Word 文件操作的场景。
2025-01-16 18:33:20
2039
原创 《手写Mybatis渐进式源码实践》实践笔记(第九章 细化XML语句构建器)
定义脚本语言驱动接口,提供创建 SQL 信息的方法,入参包括了配置、元素、参数。其实它的实现类一共有3个;,这里我们只是实现了默认的第一个即可。本章节把一整块实现功能流程的代码块,通过设计原则进行拆分和解耦,运用不用的类来承担不同的职责,完成整个功能的实现。映射构建器、语句构建器、源码构建器的综合使用,以及对应的引用脚本语言驱动和脚本构建器解析,处理我们的 XML 中的 SQL 语句。通过这样的重构代码,也能让我们对平常的业务开发中的大片面向过程的流程代码。
2025-01-16 17:44:50
1087
原创 《手写Mybatis渐进式源码实践》实践笔记(第八章 元对象反射工具包)
任何类型的反射调用,都离不开对象和入参,只要我们把这两个字段和返回结果做通用的定义,就可以涵盖不同策略的实现类了。// 调用方法// 获取类型Class<?// get// set// 查找属性// 取得getter的名字列表// 取得setter的名字列表//取得setter的类型Class<?// 取得getter的类型Class<?// 是否有指定的setter// 是否有指定的getter// 实例化属性// 是否是集合// 添加属性。
2025-01-06 11:03:20
1031
原创 【MySQL】踩坑笔记——保存带有换行符等特殊字符的数据,需要进行转义保存
从DBeaver中导出了部分业务数据的 insert sql,明明在开发、测试环境都可以一把执行通过,却在预发环境执行前的语法检查失败了,提示有SQL语法错误。这条SQL长这样,default_sql是要在odps上执行的sql语句,提前配置好放数据库里,方便后续读取。
2024-12-26 17:46:06
771
原创 《手写Mybatis渐进式源码实践》实践笔记(第七章 SQL执行器的创建和使用)
模板模式(Template Method Pattern)是行为型设计模式之一,它在父类中定义了一个算法的框架,允许子类在不改变算法结构的情况下重写算法的某些特定步骤。这种模式主要用来解决代码复用的问题,它通过把一些相同步骤提取到父类中,而将不同的步骤延迟到子类中实现,从而避免代码重复。执行器分为接口、抽象类、简单执行器实现类三部分,通常在框架的源码中对于一些标准流程的处理,都会有抽象类的存在。它负责提供共性功能逻辑,以及对接口方法的执行过程进行定义和处理,并提供抽象接口交由子类实现。
2024-12-25 11:53:15
1242
原创 知识点扫盲——SpringCloud feign是什么?
今天在概要设计评审过程中,领导问了一个问题,为什么要使用feign调用,而不是直接走http接口调用?我草草回答了 使用http接口调用走公网,涉及接口签名和验签,会引入额外的工作量,糊弄了过去,会后开始补课,学习一下什么是feign。Feign是Spring Cloud中一个声明式的Web服务客户端,它使得编写Web服务客户端变得更加简单。Feign的声明式特性意味着开发者只需要通过创建一个接口并使用注解的方式来定义服务调用,Feign会自动生成代理实现类。这种方式与Spring的。
2024-12-24 15:28:14
846
原创 《手写Mybatis渐进式源码实践》实践笔记(第六章数据源池化技术操作解析-补充)
本文我们详细分析了数据源的池化技术实现,主要包括连接的放入()、取出()、强制关闭所有连接()以及连接有效性检查()的操作处理。以下是各个操作的详细解析:pushConnection(放入连接)该方法负责将连接放回连接池。首先判断连接是否有效,如果有效且空闲连接数量不足,则将其加入空闲连接列表;否则关闭连接。代码中使用了同步机制来确保线程安全,并在连接回收后通知其他线程。popConnection(取出连接)该方法通过循环尝试获取连接,若空闲连接存在则返回;
2024-12-17 20:00:00
987
原创 《手写Mybatis渐进式源码实践》实践笔记(第六章 数据源池化技术的实现)
本章节我们完成了 Mybatis 数据源池化的设计和实现,通过这样的分析、实现、验证的过程,让大家更加理解我们平常使用的连接池所遇到的一些真实问题都是怎么发生的。另外关于连接池的实现重点可以随着调试验证的过程中进行学习,包括:synchronized 加锁、创建连接、活跃数量控制、休眠等待时长,抛异常逻辑等,这些都与我们日常使用连接池时的配置息息相关。
2024-12-17 15:33:11
1032
原创 《手写Mybatis渐进式源码实践》实践笔记(第五章 数据源的创建和使用)
以解析 XML 配置解析为入口,添加数据源的整合和包装,引出事务工厂对 JDBC 事务的处理,并加载到环境配置中进行使用。那么通过数据源的引入就可以在中从Configuration 配置引入环境信息,把对应的 SQL 语句提交给 JDBC 进行处理并简单封装结果数据。结合本章节建立起来的框架结构,数据源、事务、简单的SQL调用,下个章节将继续这部分内容的扩展处理,让整个功能模块逐渐完善。参考书籍:《手写Mybatis渐进式源码实践》
2024-12-13 18:38:12
841
原创 《手写Mybatis渐进式源码实践》实践笔记(第四章 Mapper XML的解析和注册使用)
熟悉ORM 处理的核心流程,知晓每一章节对应核心流程的步骤,和要完成的内容,熟悉代理、封装、解析和返回结果的过程,后续才能更好的完成整个框架的实现。SqlSessionFactoryBuilder 的引入包装了整个执行过程,包括:XML 文件的解析、Configuration 配置类的处理,让 DefaultSqlSession 可以更加灵活的拿到对应的信息,获取 Mapper 和 SQL 语句。
2024-12-12 18:03:05
1105
原创 《手写Mybatis渐进式源码实践》实践笔记 (第三章 映射器的注册和使用)
SqlSessionSqlSession定义用来执行 SQL、获取映射器对象以及后续管理事务操作的标准接口。目前这个接口中对于数据库的操作仅仅只提供了 selectOne,后续还会有相应其他方法的定义扩展。/*** 根据给定的执行SQL获取一条记录的封装对象.* @return/*** 根据给定的执行SQL获取一条记录的封装对象,带参数.* @return/*** 获取映射器.* 这里使用了泛型,使得类型安全.* @return。
2024-12-10 18:00:00
2021
原创 《手写Mybatis渐进式源码实践》实践笔记 (第二章 创建简单的映射器代理工厂)
本章节我们初步对 Mybatis 框架中的数据库 DAO 操作接口和映射器通过代理类的方式进行链接,这一步也是 ORM 框架里非常核心的部分。后续就可以在代理类中进行自定义的逻辑扩展了。在框架实现方面引入简单工厂模式包装代理类,屏蔽创建细节,这个设计模式的使用,也可以迁移到大家的日常开发中。目前内容还比较简单的,可以手动操作练习,随着我们内容的增加,会有越来越多的包和类引入,完善 ORM 框架功能。参考书籍:《手写Mybatis渐进式源码实践》
2024-12-06 18:41:37
738
原创 《手写Mybatis渐进式源码实践》实践笔记 (第一章 实现一个简单的ORM框架)
在本章节中,我们简单实现一个类似mybatis的ORM框架,当前只是实现了基本功能,后续可以基于这个框架再进行完善。通过编写测试用例,验证了该 ORM 框架的基本功能,包括查询单个对象和对象列表。测试结果表明,该框架能够正常与数据库进行交互,并正确映射查询结果到 Java 对象。参考书籍:《手写Mybatis渐进式源码实践》书籍源代码:https://github.com/fuzhengwei/book-small-mybatis。
2024-12-06 10:35:21
1170
2
原创 《手写Mybatis渐进式源码实践》实践笔记 (开篇)
MyBatis 是一个半自动 ORM(对象关系映射)持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作,可以通过 XML 或注解的方式进行配置。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects, 普通的 Java对象)映射成数据库中的记录。
2024-12-05 18:15:48
833
原创 《手写Spring渐进式源码实践》实践笔记 (第二十一章 将ORM框架整合到Spring容器中)
本章节成功实现了MyBatis与Spring的整合,提供了一个简化配置、自动管理事务和异常处理的框架,使得开发者可以更专注于业务逻辑的实现。通过自动配置和代理机制,MyBatis-Spring框架简化了MyBatis与Spring的集成过程,提高了开发效率和代码的可维护性。参考书籍:《手写Spring渐进式源码实践》书籍源代码:https://github.com/fuzhengwei/small-spring。
2024-12-02 19:38:23
829
原创 《手写Spring渐进式源码实践》实践笔记(第十九章 实现事务管理@Transactional注解)
这是一个接口,定义了事务的一些属性。比如事务的传播性、事务隔离级别、超时时间等这个类是TransactionDefine接口的实现类。用来设置事务的传播、隔离、超时等属性直接看这个接口的名字含义是属性的属性。确实如此,这个接口继承TransactionDefine,添加了一个方法。在进行事务回滚前用来判断对于当前发生的异常是否需要回滚。这个类并没做特殊的事情,就是常规属性的设置对于这个方法在这里进行了实现。如果当前异常是运行时异常或者error,那么返回的是ture这个类比较重要的方法是。
2024-11-28 18:24:07
1314
原创 【mysql】基于城市多边形,配合mysql库,查询目标点是否在指定城市内
最近遇到一个需求,需要查询给定的经纬度坐标点,是否在指定的城市内。分析需求,需要获取城市区域的边界,再判断目标坐标点是否在边界内。组内的大佬说mysql有这块空间函数的支持,可以了解一下。所以有了这篇内容。
2024-11-13 10:11:15
1188
原创 《手写Spring渐进式源码实践》实践笔记(第二十章 实现简单ORM框架)
在本章节中,我们简单实现一个类似mybatis的ORM框架,当前只是实现了基本功能,后续可以基于这个框架再进行完善。通过编写测试用例,验证了该 ORM 框架的基本功能,包括查询单个对象和对象列表。测试结果表明,该框架能够正常与数据库进行交互,并正确映射查询结果到 Java 对象。参考书籍:《手写Spring渐进式源码实践》书籍源代码:https://github.com/fuzhengwei/small-spring。
2024-11-12 11:02:13
1126
原创 《手写Spring渐进式源码实践》实践笔记(第十八章 JDBC功能整合)
在本章节中,我们深入探讨了JDBC(Java Database Connectivity)的功能整合,特别是如何通过Spring框架中的来简化JDBC编程。我们详细分析了JDBC的核心组件、关键特性和用法,并展示了如何通过来执行数据库操作,包括查询、更新处理等。通过本节的学习,我们可以借鉴这些代码的结构和风格,提高自己的编码水平。可以帮助我们后续再遇到查询数据库遇到的问题时,可以更快排查定位问题。参考书籍:《手写Spring渐进式源码实践》
2024-11-09 21:29:07
1132
原创 《手写Spring渐进式源码实践》实践笔记(第十七章 数据类型转换)
本章节实现的类型转换操作如果只是功能性的开发,就像你自己承接的需求那样,可能只是简单的if判断就搞定了,但放在一个成熟的框架要中要考虑的是可复用性、可扩展性,所以会看到接口的定义、工厂的使用等等设计模式在这里体现。恭喜你,能够坚持学习到这一章节。如果你在学习过程中,每一章节都是通过阅读文章、编写代码、调试错误以及理解设计来完成的,那么一定会在这个过程中获得很多宝贵的经验和知识。以后再次阅读Spring源码时,就不会觉得那么困难了。参考书籍:《手写Spring渐进式源码实践》
2024-11-08 09:11:54
897
原创 《手写Spring渐进式源码实践》实践笔记(第十六章 三级缓存解决循环依赖)
Spring 中所有的功能都是以解决 Java 编程中的特性而存在的,就像我们本章节处理的循环依赖,如果没有 Spring 框架的情况下,可能我们也会尽可能避免写出循环依赖的操作,因为在没有经过加工处理后,这样的依赖关系肯定会报错的。那么这也就是程序从能用到好用的升级在解决循环依赖的核心流程中,主要是提前暴露对象的设计,以及建立三级缓存的数据结构来存放不同时期的对象,如果说没有如切面和工厂中的代理对象,那么二级缓存也就可以解决了,哪怕是只有一级缓存。
2024-11-06 11:56:47
917
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人