- 博客(158)
- 资源 (7)
- 问答 (2)
- 收藏
- 关注
原创 cas5.3统一登录前后端分离改造方案(源码)
5.3 版本是最新的支持jdk8 的版本,并且项目架构基于maven ,商业项目中jdk8 仍是主流,在考虑商业收益的情况下,如果客户不要求,不会升级jdk, 基于Maven的项目比gradle 简单,易于掌握。所以在选择cas版本的时候综合考虑历史情况,和技术现状,选择了5.3.16版本。
2024-09-30 23:00:03 402
原创 Kerberos 认证 javax.security.auth.logon.LoginException:拒绝链接 (Connection refused)
Kerberos 服务认证 内嵌在jdk中,某些jdk版本会导致Kerberos 认证异常,Kerberos 认证抛出的异常信息不足,很多时候排查问题比较耗费时间甄别,这种突然爆出的异常 应该和程序初始化有关系,或者Kerberos 服务重启之后的某些因素影响。问题比较罕见,如果应用服务中环境可以通过防火墙策略配置,不建议使用Kerberos 认真大数据组件。
2024-03-28 08:59:04 717
原创 kerberos 认证 Unable to obtain password from user 异常排查
生产环境突然遇到kerberos 认证异常,java应用连接hive之前的认证异常报Unable to obtain password from user很常见的报错异常。
2024-01-10 17:42:22 1838 1
原创 oshi.util.Util.freeMemory 报异常的解决方法.NoSuchMethodError: com.sun.jna.Memory.close()V
oshi 的版本和jna 的版本搭配不当导致,有些版本的jna 不存在 Memory.close()方法。
2023-08-30 14:56:00 1275
原创 线上线程堆积导致的oom排查思路
背景一个项目文件存储服务选型seaweedfs,一个go 实现的分布式存储系统,项目使用Java作为开发语言,一个场景是客户通过http上传文件到fileService服务,fileService 收到文件之后,调用seaWeedFs-client 上传文件到seaweedfs 服务器,在运行一段时间之后发现大量的文件上传等待线程,最终导致项目oom.
2023-04-07 22:49:19 1052 1
原创 docker 快速搭建minio 服务
minio 是开源的文件存储服务,实现了亚马逊的S3 协议。本文介绍了docker 快速搭建minio 服务的过程。
2023-04-04 00:16:06 324
原创 CyclicBarrier 和 ThreadPoolExecutor搭配使用
如果线程池参数配置为无界队列那么整个逻辑无法执行,CyclicBarrier 等待三个线程执行完毕,线程池只有两个工作线程,导致资源等待。多线程执行的时候确保所有线程到达同一位置后再执行。线程池,避免频繁新建现场的损耗。
2023-03-03 14:24:21 306
原创 Swagger Resolver error at definitions异常解决
Swagger 对于localDate、LocalDateTime 处理会报错,或者存在复杂的数据结构时,不支持。需要再swagger配置文件中自定义类型对应规则。
2023-02-02 10:39:13 590
原创 arthas 使用技巧
参考资料:https://www.jianshu.com/p/e34556a857ae。监控重载方法例如 rocketMQ 发送时。可以精确监测到某个方法避免 打印重复信息。增加条件参数个数大于3。
2022-11-01 14:20:00 1361
原创 spring cache 的常规使用
逻辑,实现了一级缓存使用 caffeine 在服务的内存中,二级缓存在redis 中共享,平衡了内存资源的使用参考源码:https://github.com/xiaolyuh/layering-cache反例是一种在service 中实现的缓存逻辑反例可以实现功能但是 封装的不够优雅,代码复用性不佳。
2022-09-18 17:07:18 499
原创 window docker 启动提示 The kubectl config cannot be modified while the lock is held
参考资料:https://forums.docker.com/t/the-kubectl-config-is-locked/68210。启动window docker DeskTop 时 弹出提示信息。删除.kube 文件夹,以防万一先备份一个。删除之后重启docker ,提示信息消失。但是点击 unlock 却不生效。
2022-09-11 13:24:08 510 1
原创 springboot 集成druid 启动报 llegalAccessError
2.JDK动态代理利用的是接口信息来实现的代理,委托类必须实现某个或者某些接口,而Cglib则是利用继承关系,利用asm在运行时动态生成委托类的子类,从而实现对委托类的代理。3.Cglib由于是利用继承关系来实现代理的,因此无法代理被final修饰的类以及被final修饰的方法。参考资料:https://www.oschina.net/question/2342541_2319258。4.Cglib一般来说效率要比JDK动态代理效率更高,可以实现的代理也更为强大。...
2022-08-30 22:11:49 766
原创 TCC-Transaction Dubbo 项目 demo
最早接触 TCC-TRANSACTION 在16年,当时团队成员做了分布式事务的选型研究,可惜没有亲自参与研读代码,后边项目分布式事务的架构基本上使用了seata 和 rocket 事务消息,或者使用消息做最终一致性。在成为架构师的学习路上,分布式事务的深入研究必不可少,以TCC-TRANSACTION 作为切入点。
2022-08-24 22:37:24 548 1
原创 Spring Security 注解AuthenticationPrincipal 失效排查
背景项目使用了springframework.security接口入参使用了springframework.security 注解 @AuthenticationPrincipal注解失效,前端请求接口的时候发现Principal 为空。
2022-08-23 22:36:58 1841
原创 疑难问题:JDK 1.8 java.lang.IllegalStateException信息排查
背景生产环境有一个批量创建问文件夹的接口,接口逻辑一次传入多个文件夹名称,去发号器批量申请文件夹id某个场景下前端入参的文件夹名称重复,导致服务端报错如下。
2022-07-28 00:49:15 391
原创 IDEA for mac index 分析解决
一、分析问题idea 隔一段时间就是在打开项目的时候一致index,两次都是卡在jdk1.8开始怀疑是jdk 版本的问题,机器上安装了jdk11 和jdk1.8切换jdk 版本之后仍然如此二、删除cache 和index 文件夹mac 电脑上idea 的cache 的目录是$ pwd/Users/admin/Library/Caches/JetBrains/IntelliJIdea2021.2/caches$ pwd/Users/admin/Library/Caches/JetBrai
2022-05-26 16:34:03 808
原创 kubernetes服务重启排查
假期中的服务重启公司配置了服务重启的钉钉报警,假期中偶然发现自己负责的商业网盘工程,竟然连续三天深夜重启了。第一想到的是定时任务,定时任务一般设置在夜里,业务访问量很少的情况,自信查看了三天的重启时间,发现是随机的,而且工程也没有oom 报警,只是单纯的重新启动。疫情中的排查因为团队处于创业阶段,身兼数珠,第一天在排查一个bug 的同时,开始思考工程重启的原因,先看了监控,发现确实深夜中异常重启,重启的时间发现了异常的网络流量,开始怀疑是不是其他项目的定时任务调用了我的工程,转念意向,我的工程服务
2022-04-07 01:02:24 1629
原创 Mybatis-plus 自定义SqlSessionFactory
项目中需要用到Mybatis的插件,配置插件的时候需要自定义SqlSessionFactory网上的信息不太准确,本文记录订正并共享大家。Mybatis-plus 和Mybatis 是兼容的。所以网上的配置 mybatis 的SqlSessionFactory 的方法基本上可行,但是对于mybatis-plus 的一些特性会丢失例如@TableField(fill = FieldFill.INSERT)注解正确的配置方式:@Componentpublic class DateAutoFil
2022-03-09 22:36:55 10699 1
原创 分布式系统id生成方案分析
一、分布式系统的id 生成分布式id 需要保证全局唯一,在此基础上 尽可能的保证有序,语义性。有序性是为了匹配mysql 总innodb引擎的 数据存储结构语义性是便于查找问题,例如从id 中可以辨识出业务类型,时间等信息。二、UUID 分析UUID 是一种过去比较流流行的分布式id 生成方案,使用方式简单,Mybatis-plus 内置了UUID 主键生成器。UUID 可以保证唯一性,但是没有顺序,更没有语义含义。在分布式系统中 UUID 虽然可以使用,但是影响了mysql 数据写入性能。
2022-03-06 21:52:01 549
原创 Redis lua脚本 采坑实践
lua 中的慎用的命令redis 中一些命令耗时比较长,个人理解属于运维使用的命令例如 keysscan业务中切记 不要使用这些命令特别是 在lua 脚本中,由于lua 在redis执行的原子性, scan 命令也会随着key 的数量 耗时逐渐增大lua 脚本性能的影响lua 脚本一旦耗时比较长,就会影响redis 的其他命令执行,进而影响整个业务。lua 的脚本 建议耗时需要控制在50 毫秒之内。尽可能的避免大key阿里云给出的大key 标准参考:通常以Key的大小和Key中成员的数
2022-03-06 00:21:20 1063
原创 java Redission执行 Redis lua脚本实践
一、业务场景一个行业网盘产品,用户分为主账号和子账户,多个子账户都可以操作公司主账号下的网盘,在多个子账户操作文件结构的时候,存在并发问题,如果简单的串行处理又明显影响用户体验举例:上传下载的时候肯定需要多线程上传文件,你串行化了怎么办。两个人同时上传文件 你也不能串行化。二、逻辑锁的设计举例:同一个文件夹 支持并发写入同一个文件夹 支持并发删除三、技术选型3.1 redis由于本身的并发并不高,锁的范围是主账户下,多个子账户操作,理论上可以使用java逻辑、数据库来实现并发逻辑控制,
2022-02-22 23:13:39 4118 1
原创 Java8 优雅的判断对象是否为空
对象判空项目中经常遇到对象判空,如果是对象成员变量逐层判断, 会写很多if else 的逻辑语句 public String testSimple(Context c) { if (c == null) { return ""; } if (c.getUser() == null) { return ""; } if (c.getUser().getCity() == n
2022-02-08 23:30:52 6770
原创 制作springBoot Docker 镜像快速教程
项目打包配置maven plugin <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </
2022-02-08 01:08:02 958
原创 程序员面试系列(3)起点低怎么赶超
今天面了一位7年专科的程序员,有多年的项目经验,从外地来杭州不久。结合之前的面试经历说说专科起点的程序员的特点。我职业生涯中经历的几家公司都不排斥专科学历,只要有工作经验,hr都会给到面试官,简历的区别往往体现出一个人是否在努力,有些人的项目经验越来越复杂,有些人起点是外包,过了一段时间跳到了非外包的岗位,有些人则是在小项目兜兜转转,一般团队小于5人的项目基本上不会有什么挑战,所以程序员在找工作中待遇是一方面,发展也很重要,你必须在简历中有复杂的项目核心开发经验,核心的意思是项目离开了你就很难继续运转。
2022-01-06 23:50:34 167
原创 程序员面试系列(2)非计算机专业程序员
大学中读了一个非计算机专业,就业之后发现程序员收入高,很多人勇敢的选择了转行,我们公司不对应聘者的大学专业有要求,基本上大专以上学历,工作三年经验就可以通过hr 的简历筛选,我在最近的面试中遇到了两位有了三年经验的非计算机专业的程序员,他们能力都超过了应届毕业生,可以独立的完成简单的需求,例如:分页查询某类信息,条件搜索分页,简单的连表查询,但对于复杂的任务就有点力不从心的感觉,问道一些原理上的东西就会暴露出一些缺点。一、转行的勇气无论面试结果如何,我都对非计算机专业的程序员表示钦佩,我身边也有很多人高
2022-01-05 00:31:16 1180
原创 专业网盘设计分析
预计未来相当一段时间的主要精力会集中在优化一个行业专业网盘,其中主要的挑战是 大数据,某个行业第一公司一次迁移12TB 的业务资料,一个是并发,虽然是TB 业务,但是网盘的数据权限是企业主账户,一个主账户下有若干子账户,子账户同时操作网盘会产品并发问题。不同于个人数据,商业数据往往具备一定的价值,客户付费的情况下,不能让客户的数据产生逻辑异常。还有就是数据权限的控制,往往客户希望不同的子账户有不同的数据权限。这些逻辑冗杂的在一起,公司又仅仅投入2个人,挑战可想。一、网盘的作用专业网盘不仅仅有管理资料
2022-01-02 23:47:11 755
原创 mac idea 使用技巧-长期更新
公司配发了新款Mac book pro M1以前都是使用window 版本,切换成了mac 操作idea 很多技巧需要重新掌握,现在总结文档。idea 版本试用版,建议大家自行购买账户idea 在Mac 环境下游多中快捷键组合注意事先设置好Mac OS一、快捷键Mac键盘符号和修饰键说明⌘ Command⇧ Shift⌥ Option⌃ Control↩︎ Return/Enter⌫ Delete⌦ 向前删除键(Fn+Delete)↑ 上箭头↓ 下箭头← 左箭头→
2021-11-20 21:46:48 3067
原创 Mac 系统idea gradle 跳过测试
日志中出现此行表明配置成功19:41:40: Executing task ' build -x test'...配置方式:在Run 中直接写入build -x testidea 会自动给提示
2021-09-29 19:59:22 492
原创 window 环境下docker 安装 rocketMQ
RocketMQ 使用docker 安装启动服务,网上资料众多,由于版本更新,很多时候并不会启动成功,特别是在winddows 环境下笔者耗时两天共6个小时才成功在docker 环境安装了RocketMQ现在将经验分享,本文章禁止任何形式的转载,所有权利保留。windows docker环境准备读者自行学习安装一搜索RocketMQ 镜像C:\Users\hamish>docker search rocketmq笔者选择的是foxiswho/rocketmq下载镜像docke
2021-09-29 00:43:26 1998
原创 jdk升级17 项目报错java.lang.reflect.InaccessibleObjectException
java11 升级到java17 项目启动正常,执行mybatis 查询的时候报错根据报错信息怀疑mybatis xml 配置问题,发现其实没有问题,jdk11 的时候正常启动reating a new SqlSessionSqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3c88e19e] was not registered for synchronization because synchronization is
2021-09-20 23:04:31 22771 9
原创 ReentrantLock和Condition 实现生产者 运输者 消费者
生产者、运输者、消费者 三个线程协作使用公平锁实现,Condition 条件限制。/** * 三个线程,一个生产商 A 一个中间商B 一个消费者C * 生产商 每次生产1个商品 * 中间商每次运送 2个商品 ,消费者每次消费3个商品 * 如果梳理不满足 则不运送 不消费 */public class ThreePersionLockCondition { private final static ReentrantLock lock = new ReentrantLock(t
2021-08-24 23:26:04 157
java源码中一个抽象类初始化方法中包含一个super(),该怎么理解
2015-08-13
Maven 环境配置[黑魔法]
2015-05-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人