- 博客(207)
- 收藏
- 关注
原创 ISBN 批量匹配结果如何合并回库存表?先分清书目字段与业务字段
用 ISBN 补充书名、作者和出版社后,如何保留原表里的库存、库位和备注?本文介绍关联键、重复记录、字段冲突与合并检查,适用于 Excel 整理和 API 接入场景。
2026-09-13 10:08:44
99
原创 ISBN 图书封面字段怎么用?从 API 图片地址到 Excel 展示的处理思路
ISBN 返回封面信息,不等于 Excel 已嵌入图片。本文介绍 pictures 字段与封面列的含义、标准模板的使用方式,以及 API 图片加载、失败处理和带封面工作簿的实现注意点。
2026-09-10 17:59:09
264
原创 ISBN 图书查询 API 接入:别把 AppKey 写进前端页面
扫码查书页面如何接入 ISBN API,同时避免把 AppKey 暴露给浏览器?本文说明前端环境变量的边界、服务端调用、日志脱敏和请求控制,并介绍 API 与 Excel 批量匹配的使用入口。
2026-09-08 17:09:56
231
原创 ISBN 不是馆藏条码:图书查询结果如何关联到每一本实物
ISBN 对应出版物的特定版本和出版形式,馆藏条码区分每册实物。本文用假设场景说明书目与复本的区别,以及如何通过 Excel 批量匹配和图书查询 API 补充书目信息,同时保留位置、状态和库存明细。
2026-09-07 17:53:18
208
原创 ISBN 批量匹配后,如何用 Excel 检查书目信息完整度?
ISBN 匹配成功并不等于所有字段齐全。本文从必需字段、Excel 空值筛选、版本核对和封面检查出发,说明怎样验收批量书目,并介绍批量匹配与公开 API 的适用场景。
2026-09-07 17:06:41
239
原创 把一列 ISBN 稳定整理成可用书目:一套可复查的批量流程
从 Excel 模板、ISBN 标准化、去重分批查询到结果校验,整理一套适合图书馆、出版社和书店使用的批量书目处理流程。
2026-09-06 10:06:33
354
原创 ISBN 批量整理实战:用公开接口补全书名、作者与出版社
整理 Excel 中的 ISBN 时,先做格式标准化和去重,再按批次查询本地数据或公开接口,并保留原始列、匹配状态和失败原因。
2026-09-04 17:50:08
284
原创 发现一个 ISBN 批量查询工具:上传 Excel,自动匹配图书数据
最近接触到不少出版社、图书馆、书商和资料整理人员,他们经常遇到一个问题:手里有几千甚至几万个 ISBN,但只有 ISBN,没有书名、作者、出版社、定价、封面和中图分类号等信息。如果逐条查询,工作量非常大;如果让开发人员写程序,又需要接口对接和技术成本。因此,我做了一个不需要编程的“图书批量匹配”功能。只需要准备一个 Excel 文件,系统就会自动匹配图书信息,匹配完成后按实际匹配成功的数据收费。
2026-08-14 11:13:49
261
原创 推荐一个实用的免费 ISBN API 查询接口
在处理图书元数据、开发图书管理系统时,ISBN 接口是刚需。最近在开发相关功能时,发现了一个国内的小工具站,实测返回数据比较完整,且稳定性不错,分享给各位做开发的同行。对于个人站或中小项目来说,这个工具站已经足够好用了。作为开发者,我们少造轮子,多用工具,把时间花在核心业务上。大家如果有更好的免费接口,也欢迎在评论区推荐交流!
2026-04-23 11:01:04
915
1
原创 Stream很好,Map很酷,但答应我别用toMap()!
你不信邪,断点一打,堆栈一看,硕大的 uniqKeys 摆在了面前,凭借四级 424 分的优秀战绩你顿时菊花一紧,点开一看,谁家好人 map key 还要去重判断啊。看着运行完美无缺的代码,你一时陷入了沉思,数分钟过去了,你删除了 for 循环,换上 Stream 与 Optional 不羁的外衣,安心的提交了代码,这口细糠一定也要让好同事去尝一尝。这 TM 不是一个循环就万事大吉了吗,不信邪的你回归初心,回归了 for 循环的怀抱,又写了一版。答应我,一定打消你的这个想法,否则这将成为你噩梦的开端。
2025-06-27 11:15:57
391
原创 你还不知道这款 Spring 源码学习神器吗?
Spring Pass 是一个 Spring 代码浏览器,旨在使 Spring 源码学习变得更简单。通过辅助性的源码解释,让复杂的源码变得更清晰易懂。
2025-06-27 11:14:14
342
原创 牛X,新同事把代码耗时从 27s 优化到了 748ms
这其实就是时间复杂度,for循环嵌套for循环,就好比 循环每一个 user ,拿出 userId 需要在里面的循环从 userMemo list集合里面 按顺序去开盲盒匹配,拿出第一个,看看userId ,拿出第二个,看看userId ,一直找匹配的。相当于拿到userId 想去开盲盒的时候, 根据userId 这个key hash完能直接找到数组里面的索引标记位, 如果底下没链表(有的话O(logN)),直接取出来就完事了。其实数据量小的话,其实没多大性能差别,不过我们还是需要知道一些技巧点。
2025-06-26 16:00:43
1036
原创 一条Redis命令是如何执行的?
注意,本次执行 readQueryFromClient 前,client 状态已被设置为 「CLIENT_PENDING_READ」 ,所以执行时,client 不会再次加入任务队列,而是进入真正的执行流程。若启用,则主线程将该连接客户端加入「clients_pending_read」读就绪队列,并将客户端 flag 标记为「CLIENT_PENDING_READ」,表示可读。解析客户端命令,执行对应操作逻辑(如 GET/SET/HSET),支持丰富的数据结构(String、Hash、List 等)。
2025-06-26 15:59:10
1147
原创 SpringBoot中5种拦截器使用场景
Overridetry {@Data@Data@Data@NotBlank(message = "用户名不能为空")@Size(min = 4, max = 20, message = "用户名长度必须在4-20之间")@Pattern(regexp = "^[a-zA-Z0-9_]+$", message = "用户名只能包含字母、数字和下划线")@NotBlank(message = "密码不能为空")
2025-06-25 14:47:48
973
原创 告别复杂审批流!SpringBoot + flowable 快速实现工作流
对于业务建模,我们需要一种通用的语言来描绘,这样在沟通上和实现上会降低难度,就像中文、英文一样,BPMN2.0便是一种国际通用的建模语言,他能让自然人轻松阅读,更能被计算机所解析。协议中元素的主要分类为,事件-任务-连线-网关。一个流程必须包含一个事件(如:开始事件)和至少一个结束(事件)。其中网关的作用是流程流转逻辑的控制。任务则分很多类型,他们各司其职,所有节点均由连线联系起来。下面我就以每种类型的节点简单地概括一下其作用。网关:互斥网关(Exclusive Gateway)
2025-06-25 14:44:34
1383
原创 图书数据接口
第三部分(第8章~第10章)阐述不同场景下Python数据采集的方法与应用,包括基于文件和设备的数据采集、基于SQLite数据库的数据采集、基于网页的数据采集。"bookName": "python程序设计与数据采集 微课版 大中专理科计算机 ","press": "人民邮电出版社","pressPlace": "北京","clcName": "工业技术","author": "董付国","binding": "平装","format": "16开","pages": "240页",
2025-06-25 14:39:05
2303
原创 Java 拟引入全新语法:再见空指针!
ava 语言在处理null引用方面一直让开发者头疼。尽管许多开发者在编码时假设某些变量永远不会是null,但在现有的 Java 语法中却无法明确表达这一意图,导致潜在的空指针异常(NullPointerException)无处不在。为了解决这一痛点,Java 正在引入一项新的预览特性——Null-Restricted 和 Nullable 类型。[1]这项特性旨在让开发者能够在类型定义中明确指出该类型是否允许null值,从而在编译时和运行时提供更强的类型安全和检测机制。Foo!
2024-08-22 14:09:14
617
1
原创 MySQL用limit为什么会影响性能?
MySQL的LIMIT看上去是个很简单的东西,用它可以限制查询返回的记录数,比如SELECT * FROM orders LIMIT 10,乍一看挺好——一次查10条数据,结果集小,速度应该快吧?因为要排序,你让MySQL先从数据库中挑出符合条件的所有数据,然后再按你指定的顺序排序,再返回指定数量的记录。说实话,这里有几个不错的技巧,学会了以后,MySQL对你来说就是战场,而你则是指挥官。不过,通过优化索引、使用覆盖索引、分页优化、避免不必要的排序,以及在排序中使用堆排序,我们可以大大改善这些性能瓶颈。
2024-08-22 14:08:19
1247
原创 为什么Java中 “1000==1000” 为false,而 “100==100” 为true
这就是它有趣的地方了。如果你看去看 Integer.java 类,你会发现有一个内部私有类,IntegerCache.java,它缓存了从-128到127之间的所有的整数对象。基本知识:我们知道,如果两个引用指向同一个对象,用==表示它们是相等的。如果两个引用指向不同的对象,用==表示它们是不相等的,即使它们的内容相同。合乎逻辑的理由是,在此范围内的“小”整数使用率比大整数要高,因此,使用相同的底层对象是有价值的,可以减少潜在的内存占用。所以事情就成了,所有的小整数在内部缓存,然后当我们声明类似。
2024-08-21 09:17:49
476
原创 10 个 Java Stream 顶级技巧,大量简化代码
Java Stream API对于 Java 开发人员来说就像一把瑞士军刀 — 它用途广泛、结构紧凑,并且可以轻松处理各种任务。它为开发人员提供了一种函数式和声明式的方式来表达复杂的数据转换和操作,使代码更加简洁和富有表现力。但能力越大,责任越大,有效地使用Stream API需要对最佳实践和常见陷阱有深入的了解。今天,我们将探讨使用Java Stream API的一些最佳实践,并展示如何释放这个神奇工具的全部潜力。
2024-08-21 09:15:45
601
原创 高性能、无侵入的 Java 性能监控神器
随着所在公司的发展,应用服务的规模不断扩大,原有的垂直应用架构已无法满足产品的发展,几十个工程师在一个项目里并行开发不同的功能,开发效率不断降低。无法知道每个服务的运行情况,例如,某一台服务它目前的 QPS 是多少?它的平均延迟是多少,99% 的延迟是多少,99.9% 的延迟又是多少?如何评估服务的容量,随着服务的调用量越来越大,这个服务需要多少机器来支撑?采用内存复用的方式,整个生命周期只产生极少的临时对象,不影响应用程序的GC。当服务出现抖动时,如何判断是 DB、Cache 还是下游服务引起的?
2024-08-20 09:30:32
539
原创 SpringCloud远程调用为啥要采用HTTP,而不是RPC?
1. 首先SpringCloud开启Web服务依赖于内部封装的Tomcat容器,而今信息飞速发展,适应大流量的微服务,采用Tomcat处理HTTP请求,开发者编写Json作为资源传输,服务器做出相应的响应,可以更加的灵活处理业务数据,而HTTP协议是跨平台的,符合微服务B/C数据交互的方式,可以的一套服务器对应移动H5、App、小程序提供服务。灵活性方面:HTTP更灵活,不需要关系实现的细节,可以跨平台,跨语言。HTTP方式更加灵活,没有规定API和语言,跨语言,跨平台。首先,两者十分相似,有请求有响应。
2024-08-20 09:27:01
1172
1
原创 SpringBoot 整合 Excel 轻松实现数据自由导入导出
在实际的业务系统开发过程中,操作 Excel 实现数据的导入导出基本上是个非常常见的需求。之前,我们有介绍一款非常好用的工具:EasyPoi,有读者提出在数据量大的情况下,EasyPoi 会占用内存大,性能不够好,严重的时候,还会出现内存异常的现象。今天我给大家推荐一款性能更好的 Excel 导入导出工具:EasyExcel,希望对大家有所帮助!
2024-08-19 09:30:15
1175
原创 ISBN书号API接口
示例:https://data.isbn.work/openApi/book/page?appKey=ae1718d4587744b0b79f940fbef69e77&bookName=我们¤t=1。
2024-08-19 09:28:24
2538
1
原创 追踪团贷网第1968天:重磅!派生科技的股权准备拍卖!合计8.51亿
340亿左右总待收,100亿左右已经发还给出借人,125亿真标坏账,还差了115亿左右。换句说,如果小唐当初把这些股票在高位全部套现,然后再把坏账催收得好点的话,搞不好。派生科技的股票合计分成了62份,合计有1.87亿股,起拍价合计约8.51亿。派生科技的股价,在2019年3月28日出事前,大概已经涨到了52元/股。小唐被抓后,股价一路下跌,跌到现在只剩下4.5元/股,缩水超过11倍。这周又有重大进展,派生科技的股权与股票,终于要开始拍卖了。这还是查出来的,没查出来,究竟还有多少,无从得知。
2024-08-17 10:21:48
1165
原创 线程池中线程异常后,销毁还是复用?
提交到线程池并在执行过程中抛出异常时,如果这个异常没有在任务内被捕获,那么该异常会导致当前线程终止,并且异常会被打印到控制台或日志文件中。线程池会检测到这种线程终止,并创建一个新线程来替换它,从而保持配置的线程数不变。提交的任务,如果在任务执行中发生异常,这个异常不会直接打印出来。相反,异常会被封装在由。在这种情况下,线程不会因为异常而终止,它会继续存在于线程池中,准备执行后续的任务。提供更灵活的错误处理机制,因为它允许调用者决定如何处理异常,而。时,未捕获异常导致线程终止,线程池创建新线程替代;
2024-06-27 15:19:22
611
原创 面试官:为什么 Redis 不立刻删除已经过期的数据?
Redis 给缓存数据设置过期时间有什么用?Redis 是如何判断数据是否过期的呢?Redis 过期 key 删除策略了解么?大量 key 集中过期怎么办?
2024-06-27 15:18:05
1601
原创 Spring Boot 性能太差?试试这几招
默认 Tomcat 容器改为 Undertow(Jboss 下的服务器,Tomcat 吞吐量 5000,Undertow 吞吐量 8000)线程池中执行,而这个线程池中的所有线程都是 Daemon(守护)线程,所以,当主线程结束时,这些线程无论执行完毕都会退出系统。实例就可以作为这次调用的契约,在将来任何场合,用于获得最终的计算结果。方法中,它会在一个新线程中,执行传入的参数。方法,这个方法可能是比较慢的,但这并不影响。这两个方法如果在不指定线程池的情况下,都是在。在该示例中,启动一个线程,此时。
2024-06-25 16:05:46
542
原创 一张长图透彻理解SpringBoot 启动原理,架构师必备知识,不为应付面试!
下图代码说明了,Spring在初始化全部 单例Bean以后,会执行 SmartInitializingSingleton 接口。SpringBoot 会在Spring完全启动完成后,才开启Http流量。应该在Spring启动完成后开启入口流量。Rpc和 MQ流量 也应该如此,所以建议大家 在 SmartLifecype 或者 ContextRefreshedEvent 等位置 注册服务,开启流量。
2024-06-25 16:04:58
1223
原创 为什么一些团队反对使用Lombok?
Java,作为一款非常热门的编程语言,尽管它有着非常丰富的语言特性,完全面向对象编程,编程高度规范化,但是也有一个最受大家诟病的一个缺点:啰嗦,尤其是当你开发了很多年之后,你会明显的感受到,相比动态语言,java 定义变量之前,要先创建类,然后定义变量类型,每个类要写很多的等等方法。尤其是当一个实体类,高达几十个变量时,写完get、set方法之后,一个实体类的长度快接近一千行。为了避免写这些“罗嗦。
2024-06-24 16:31:56
1024
原创 ISBN查询图书api接口
"bookDesc": "《超级漫画素描技法:头身比篇素描》中强调素描要在一开始的时候就做好决定。要把什么东西画成什么样子呢?“把这个东西画成这个样子。"bookName": "超级漫画素描技法.基础篇","author": "林晃,松本刚彦,森田和明","clcName": "素描、速写技法","format": "16开-胶版纸","press": "中国青年出版社","pressPlace": "北京","binding": "平装","pages": "416页",伽v 809137232。
2024-06-24 16:25:19
1878
原创 面试必备:10种分布式ID的生成方案
日常工作中,我们开发的系统、或者中间件,都是分布式部署的。比如你的订单数据库,做了分库分表,这时候,你需要一个唯一的ID来标记一条数据。这时候,就需要分布式ID。分布式ID是在分布式系统下使用的ID,用于在多个节点中生成全局唯一的标识符。
2024-06-24 16:24:20
2863
原创 MySQL 中 Varchar(50) 和 varchar(500) 区别是什么?
其实sort_merge_passes对应的就是MySQL做归并排序的次数,也就是说,如果sort_merge_passes值比较大,说明sort_buffer和要排序的数据差距越大,我们可以通过增大sort_buffer_size或者让填入sort_buffer_size的键值对更小来缓解sort_merge_passes归并排序的次数。我发现86%的时花在数据传输上,接下来我们看状态部分,关注Created_tmp_files和sort_merge_passes。存储空间上是一样的,真的是这样吗?
2024-06-14 10:47:49
1661
转载 如何实现一个合格的分布式锁
在多线程的环境下,为了保证一个代码块在同一时间只能由一个线程访问,Java中我们一般可以使用语法和去保证,这实际上是本地锁的方式。而在如今分布式架构的热潮下,如何保证不同节点的线程同步执行呢?实际上,对于分布式场景,我们可以使用分布式锁,分布式锁是用于分布式环境下并发控制的一种机制,用于控制某个资源在同一时刻只能被一个应用所使用。综上所述,基于 Redis 节点实现分布式锁时,我们至少需要实现以下需求:加锁/解锁包括了读取锁变量、检查锁变量值和设置锁变量值三个操作,但需要以原子操作的方式完成;
2024-06-14 10:43:53
588
原创 如何设计一个秒杀系统?
如何从整体角度,去设计一个秒杀系统。秒杀系统主要有这几个特征:瞬时间的流量特别高。过了秒杀的时间,流量就会瞬时结束大批量用户同时请求极少数商品在秒杀时间前,可能会有很多请求过来。比如在11点抢票开始,10点59分你可能会提前去刷新页面请求。所以特意写篇文章给大家说说。
2024-06-12 11:05:42
1237
原创 @Transactional 中使用线程锁导致了锁失效,震惊我一整年!
很多小伙伴使用Spring事务时,为了省事都喜欢使用。但是配合锁,会导致一些预期之外的问题!在此举例说明。
2024-06-12 10:24:27
471
1
原创 Spring Boot 分片上传、断点续传、大文件上传、秒传,应有尽有
分片上传,就是将所要上传的文件,按照一定的大小,将整个文件分隔成多个数据块(我们称之为Part)来进行分别上传,上传完之后再由服务端对所有上传的文件进行汇总整合成原始的文件。断点续传是在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传或下载,如果碰到网络故障,可以从已经上传或下载的部分开始继续上传或者下载未完成的部分,而没有必要从头开始上传或者下载。本文的断点续传主要是针对断点上传场景。
2024-06-11 09:27:09
2070
原创 ISBN查询图书api接口
"bookDesc": "《超级漫画素描技法:头身比篇素描》中强调素描要在一开始的时候就做好决定。而绘画中的素描草图,就是从最初决定的基点到最后完成作品必须要走的一条路。"bookName": "超级漫画素描技法.基础篇","author": "林晃,松本刚彦,森田和明","clcName": "素描、速写技法","format": "16开-胶版纸","press": "中国青年出版社","pressPlace": "北京","binding": "平装","pages": "416页",
2024-06-11 09:22:10
1739
原创 公司禁止在 SpringBoot 中使用 @Autowired 注解,为什么?
我们已经看到,基于字段的注入应该尽可能地避免,因为它有许多缺点,无论它看起来多么优雅。推荐的方法是使用基于构造函数和基于setter的依赖注入。对于必需的依赖,建议使用基于构造函数的注入,设置它们为不可变的,并防止它们为 null。对于可选的依赖项,建议使用基于 setter 的注入。
2024-06-11 09:17:58
1188
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅