- 博客(28)
- 资源 (1)
- 收藏
- 关注
原创 pdf文件ocr识别
本文介绍了一个程序员为解决PDF扫描版无法直接转换为可听读文本的问题,自行开发OCR识别脚本的过程。首先通过PyMuPDF库分析PDF类型(文本型、扫描版或混合型),再使用Tesseract OCR引擎对扫描版PDF进行文字识别。脚本可自动提取PDF中的图片并转换为文本,支持中英文识别,最终输出为可编辑的文本文件。实测表明该方案识别率高、速度较快,有效解决了收费转换工具的限制问题。
2025-08-03 10:52:49
179
原创 okhhtp连接池设置引起的诡异超时排查、及原因定位
摘要:针对okhttp出现间歇性12秒readTimeout问题,分析发现是TCP长连接失效导致。通过抓包发现客户端和服务端均收到RST包
2025-07-11 17:08:42
21
原创 Redission可重入锁,tryLock多次,但只释放一次一次引起的问题
可重入锁,支持同一个现成多次去获取锁、锁内部有一个计数器,记录重入获取锁的次数。如果unlock 也要释放多次,先ublock最新的锁计数、类似栈结构。因此解锁的次数 必须要对应重入的次数。才能完全释放锁。
2025-04-16 14:19:36
50
原创 JDK1.7是否支持TLS1.2
查找资料后得出是jdk1.7不支持tls1.2、推测应该是线上调用的服务网关配置强制tls1.2及以上了、不再支持tls1.1了。继续搜索、有的说要jdk1.7 u95的更新版才支持、orcale官网最新版彩u80 何来u95、即https请求时 客户端不支持tls1.2协议、关于https的tls协议这里不多讲述、异常栈。查看异常位点、代码是使用的apache-httpClient 请求oa时报的错、报错信息明显。根据查询解决结果、网上大体分两派、一是加jvm运营参数派,增加如下配置。
2025-02-11 13:49:35
411
原创 Redis如何实现ACID事务
Redis事务不具备回滚特性 只能保证批量执行过程中不会插入其他命令(对性能有一定影响、建议开启慢日志 方便定位) 具体的回滚要通过业务操作 例如lua脚本实现回滚 最能保证acid事务的实现只有lua脚本。WATCH:监视一个或多个键,如果在事务执行之前键被其他命令改动,事务将被打断。如果监视的键被修改了,事务会被打断,你需要重新执行整个过程。如果在执行命令的过程中,监视的键没有被修改,事务会执行。DISCARD:取消事务,放弃执行事务中的所有命令。EXEC:执行事务中的所有命令。命令监视一个或多个键。
2024-10-12 12:08:51
93
原创 Invalid bound statement (not found)解决
Invalid bound statement (not found)解决
2022-10-14 10:21:34
2638
原创 对象循环引用的json序列化溢出问题
目录问题描述排查问题demo模拟解决方案某系统线上容器大规模504告警查看监控 org.apache.catalina.connector.ClientAbortException大量报错load高达20多 cpu升高机器完全卡死 业务指标都不上传了 监控显示大量old gc综上所述是GC导致的一些列问题发现未知问题先回滚。定位是fullgc导致、进一步观察错误日志定位到 定位到是GSON 进行json序列化时发生了溢出。定位下来是gson对HttpRequest进行toJson()导致的。初步判断是对象的
2022-06-22 20:15:16
496
原创 一例线上高并发情况下的RT抖动优化
目录背景:现象:定位&分析:解决:背景:某项目由于业务需求,某个接口QPS需2000左右。比平时该项目全部请求QPS增加100倍。上线后收到间歇性504超时告警。现象:分析Cat long-url 筛选3s以上的请求。分析多个请求的logView后,并未发现耗时的点。 怀疑gc,发现gc没有配置垃圾回收器。用的jdk8默认的回收器UseParallelGC 即 Parallel Scavenge + Parallel Old。cat上并未出现预想中的打.
2022-04-08 19:30:11
603
原创 spring httpInvoker 导致的大量tomcat线程阻塞问题排查
背景、现象 nginx 504告警、大量请求504。客户反馈用户打不开页面。 问题排查、定位 处理方案
2021-06-10 11:46:14
944
2
原创 canal集群TableMetatsdb(时序表结构方案设计)配置理解、实现原理
目录1. Tsdb作用2. Tsdb实现方式(单机h2、集群mysql)3. Tsdb常见问题4. 配置了tsdb后依然出现column size is not match for table: 的异常1. Tsdb作用主要解决MySQL 某一时刻发生DDL变更,如果回溯时间跨越DDL变更的时刻,产生解析字段不一致的问题。参照https://github.com/alibaba/canal/wiki/TableMetaTSDB2. Tsdb实现方式(单机h2、集群m...
2021-03-29 10:36:50
2016
原创 OpenApi开放平台架构
鉴权 token认证 令牌动态交换参数auth认证 防止重放攻击调用次数 限流兼容内网SOA可配置的Url 路径 调用内网服务命 方法 调用参数 返回数据的映射RPC 动态调用 类的动态加载#mermaid-svg-BfrGqKw1t2IrsY7G .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg.
2020-10-29 22:19:50
2320
原创 java编程规范心得
一、编程规约(一)命名规约 【强制】 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 反例: _name / __name / $Object / name_ / name$ / Object$ 【强制】 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。 说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式 也要避免采用。 反例: DaZhePromotion [打折] / getPing...
2020-08-13 11:50:51
701
原创 DirectByteBuffer 堆外内存高引起G1 gc cpu load高 || cpu busy
对外内存监控示例设置-XX:-+DisableExplicitGC 限制堆外内存大小 如果没有设置默认上限和 -Xmx 大小一致 堆外内存不够将触发full gc回收堆内对象,有引用堆外内存的对象被回收后触发finalize回收堆外内存 或者触发cleaner回收。 堆外内存查看 JDK 获取堆外内存使用情况 /Library/Java/JavaVirtualMach...
2020-04-15 12:04:23
988
原创 G1 日志解析
GC 日志2020-04-08T13:37:57.402+0800: 317780.856: Application time: 1.7859709 seconds2020-04-08T13:38:00.137+0800: 317783.591: Application time: 2.7316155 seconds{Heap before GC invocations=54601 (f...
2020-04-08 13:59:56
857
原创 JVM获取系统逻辑CPU数量
导语上文分析到JVM 默认-XX:ParallelGCThreads参数源码分析时看到得到的计算公式8 + (n- 8) * (5/8) 这个n大家都知道是机器CPU。可以具体什么类型的CPU呢?逻辑CPU、物理CPU?这两者区别是什么?JVM用的优势那种CPU呢?带着这些疑问,笔者进行了继续的分析。机器CPU类型释疑首先如何查看Linux机器CPU信息。大家都知道...
2020-02-27 16:35:36
992
原创 JDK9-G1 -XX:ParallelGCThreads 默认选择源码解析
参数含义源码分析参数含义-XX:ParallelGCThreads 并行阶段最大的线程数源码分析 hotspot/src/share/vm/runtime/vm_version.hpp /* * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved....
2020-02-27 11:34:29
2247
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人