KittyDaddy's blog KittyDaddy's blog
首页
  • 学习笔记

    • 《Java基础》
    • 《常用设计模式》
    • 《MYSQL》
    • 《GO语言》
    • 《Spring源码解读》
  • 微服务解决方案

    • 锁的演化
    • 简单限流方案
    • 海量数据切分
  • 中间件

    • Nginx
    • MQ
    • Redis
    • Keepalived
  • 面试记
  • 杂文
  • 开源
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

老猫

万物皆系统
首页
  • 学习笔记

    • 《Java基础》
    • 《常用设计模式》
    • 《MYSQL》
    • 《GO语言》
    • 《Spring源码解读》
  • 微服务解决方案

    • 锁的演化
    • 简单限流方案
    • 海量数据切分
  • 中间件

    • Nginx
    • MQ
    • Redis
    • Keepalived
  • 面试记
  • 杂文
  • 开源
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
全部分类
更多 6 杂文 11 架构 6 微服务解决方案 6 定时器 1 《MYSQL》笔记 3 《Java基础》笔记 14 《常用设计模式》笔记 11 《Spring源码解读》 1 面试记 1 《MQ》 2 《Go语言》 7 开源 3 《锁的演化》 6 《海量数据切分》 1 《Redis》 4 《Keepalived》 1 《Nginx》 9

如此丝滑的API设计,用起来就是爽

老猫 2024-05-16 《Java基础》笔记 API设计

# 故事

工位上,小猫一边撸着代码,一边吐槽着前人设计的接口。

如下:

“我艹,货架模型明明和商品SKU模型是一对多的关系,接口入参的时候偏偏要以最小粒度的SKU将重复入参进行平铺”。

“一个接口居然做了多件事情,传入参数复杂异常,不是一块业务类型的东西,非得全部揉在一起”。

“如此长的业务流程,接口能快起来么,难怪天天收到接口慢的告警”。

业务告警

“这都啥啊,这名字怎么能这么取呢,这也太随意了吧....”

......

小猫一边写着V2版本的新接口,一边骂着现状接口。

阅读全文

简直了,被“Java并发锁”问题追问到自闭... 原创

老猫 2024-03-28 《Java基础》笔记 小帅面经Java并发锁

# 故事

地铁上,小帅双目空洞地望着窗外...绝望,发自内心地感到绝望...

距离失业已经过去两个月了,这是小帅接到的第四次面试邀请。“回去等通知吧...”,简简单单的六个字,把小帅的心再次打入了冰窖。

上次“【ThreadLocal问出花】”,小帅其实也有吸取教训得,这次对于多线程的问题还是做了很多准备的...可是没想到这次的结果居然也还是这样。

“Java中的锁了解吧?介绍一下吧”,面试官不紧不慢地问到。

阅读全文

都说了别用BeanUtils.copyProperties,这不翻车了吧

老猫 2024-02-25 《Java基础》笔记 小猫日常踩坑

分享是最有效的学习方式。
博客:https://blog.ktdaddy.com/

# 故事

新年新气象,小猫也是踏上了新年新征程,自从小猫按照老猫给的建议【系统梳理大法】完完整整地梳理完毕系统之后,小猫对整个系统的把控可谓又是上到可一个新的高度。开工一周,事情还不是很多,寥寥几个需求,小猫分分钟搞定。

类似于开放平台的老六接到客户的需求,需要在查询订单新增一个下单时间的返回值,然后这就需要提供底层服务的小猫在接口层给出这个字段,然后老六通过包装之后给客户。由于需求比较简单,所以加完字段之后,老六和小猫也就直接上线了。

上线之后事儿来了,对面客户研发一直询问为什么还是没有下单时间,总是空的。老六于是直接找到了小猫,可是小猫经过了一些列的自测发现返回值都是有的,后来排查到在老六封装之后值不见了。经过仔细排查,终于找到了问题,虽然没有造成太大的影响,但是总归给客户研发的心里留下了一个不好的印象。

虽然下单时间老六和小猫定义的都是orderTime这样一个字段,但是字段类型小猫用的是Date类型而老六用的是LocalDate,恰巧老六在进行对象赋值的时候偷了个懒直接用了spring的BeanUtils.copyProperties工具类,于是导致日期类型的值并没有被赋值过去,踩坑了。

老六这才回想起前段时间架构师在群里@ALL的一段话,“大家用BeanUtils拷贝对象的时候注意点,有坑啊,大家尽量用get,set方法啊”。当时的老六不以为意,想着,“切,这得多麻烦,一个个set不花时间啊,有工具类不用”。现在想来看来是真踩到BeanUtils的坑了。

老六一边改着代码一边叨叨:“这也没说坑在哪里啊......”

阅读全文

小帅面试记-又栽了,惨遭ThreadLocal夺命连环问 原创

老猫 2024-01-31 《Java基础》笔记 ThreadLocal小帅面经

# 故事

地铁上,小帅无力地倚靠着杆子,脑子里尽是刚才面试官的夺命连环问,“用过TheadLocal么?ThreadLocal是如何解决共享变量访问的安全性的呢?你觉得啥场景下会用到TheadLocal? 我们在日常用ThreadLocal的时候需要注意什么?ThreadLocal在高并发场景下会造成内存泄漏吗?为什么?如何避免?......”

这些问题,如同阴影一般,在小帅的脑海里挥之不去。

是的,他万万没想到,自诩“多线程小能手”的他栽在了ThreadLocal上。

这是小帅苦投了半个月简历之后才拿到的面试机会,然而又丧失了。当下行情实在是卷到了极点。

都两个月了,面试机会少,居然还每次都被问翻,这样下去真要回老家另谋出路了,小帅内心五味成杂......

小伙伴们,试问一下,如果是你,面对上述的问题,你能否对答如流呢?

阅读全文

小猫日常踩坑-糟糕!商详页进不去了,缓存被击穿了 原创

老猫 2024-01-17 《Java基础》笔记 缓存穿透

# 故事

对于小猫来讲,最近的一段日子是不好过的,纵使听着再有节拍的音乐,也换不起他对生活的热情。由于上一次“幂等事件”躺枪,他已经有几天没有休息好了。他感觉人生到了低谷。

当接手这个商城项目之后,他感觉他一直没有好过。他的内心彷徨,在工位上边写着事故报告,边嘀咕着“今年到底是犯了啥冲...为什么...”

然而屋漏又遭连夜雨,船破偏遇当头风,好像坏事儿又找上了他。

坐他旁边的哥们在一旁抱怨,“啥情况,我就想给公司助助力,买点咱自家公司的产品,咋商详页咋点来点去进不了,你看看你的呢?”。

“你自己手机不行了吧,你瞧你那老破烂也该换了,iphone15 pmax搞起...” 旁边的老六开涮道。

然而却触动了小猫的神经,他赶紧打开app,发现自己的也进不去了。他赶紧打开Grafana,脸色苍白,口干舌燥....数据库连接全部打满。

不到一会组长的电话也收到了客服反馈的客诉,组长向小猫投来质疑的目光。

小猫无辜而又无奈:“我真的没有动过代码......”。

经过一轮彻彻底底的摸排,事情的原因也终于水落石出。

阅读全文

小猫日常踩坑-前任开发在代码里下毒了,支付下单居然没加幂等 原创

老猫 2024-01-14 《Java基础》笔记 幂等设计

# 故事

又是一个风和日丽没好的一天,小猫戴着耳机,安逸地听着音乐,撸着代码,这种没有会议的日子真的是巴适得板。

不料祸从天降,组长火急火燎地跑过来找到了小猫。“快排查一下,目前有A公司用户反馈积分被多扣了”。

小猫回忆了一下“不对啊,这接口我也没动过啊,前几天对外平台的老六直接找我要个支付接口,我就给他了的,以前的代码,我都没有动过的......”。

于是小猫一边疑惑一边翻看着以前的代码,越看脸色越差......

小猫做的是一个标准的积分兑换商城,以前和客户合作的时候,客户直接用的是小猫单位自己定制的h5页面。这次合作了一家公司有点特殊,由于公司想要定制化自己个性化的H5,加上本身A公司自己有开发能力,所以经过讨论就以接口的方式直接将相关接口给出去,A客户H5开发完成之后自己来对接。

慢慢地,原因也水落石出,之前好好的业务一直没有问题是因为商城的本身H5页面做了防重复提交,由于量小,并且一般对接方式用的都是纯H5,所以都没有什么问题,然后这次是直接将接口给出去了,完了接口居然没有加幂等......

小猫躺枪,数据订正当然是少不了了,事故报告当然也少不了了。

正所谓前人挖坑,后人遭殃,前人锅后人背。

阅读全文

java基础-背会了常见的几个线程池用法,结果被问翻了 原创

老猫 2024-01-08 《Java基础》笔记 线程池小帅面经

# 背景

这是张小帅失业之后的第三场面试。

面试官:“实际开发中用过多线程吧,那聊聊线程池吧”。

“有CachedThreadPool:可缓存线程池,FixedThreadPool:定长线程池.......balabala”。小帅暗暗窃喜,还好把这几种线程池背下来了,看来这次可以上岸了。

面试官点点头,继续问到“那线程池底层是如何实现复用的?”

“额,这个....”

阅读全文

麻了,这让人绝望的大事务提交 原创

老猫 2024-01-05 《Java基础》笔记 事务优化

# 背景

继上次的if else优化也有段时间了,最近小猫又又又着道了,接手的那个项目又遇到了坑爹的地方,经常性的报死锁异常,经常性的主从延迟......通过报错信息按图索骥,发现代码是这样的。

阅读全文

java基础-拓展了个新业务枚举类型,资损了 原创

老猫 2023-12-12 《Java基础》笔记 Java基础基础类型对象比较

# 案例背景

翻车了,为了cover线上一个业务场景,小猫新增了一个新的枚举类型,盲目自信就没有测试发生产了,由于是底层服务,上层调用导致计算逻辑有误,造成资损。老板很生气,后果很严重。

阅读全文

java基础-注解 原创

老猫 2022-09-17 《Java基础》笔记 Java基础注解

# 背景

为什么要再次梳理一下java注解,显而易见,因为重要啊。也是为研究各大类开源框架做铺垫,只有弄清楚Java注解相关原理,才能看懂大部分框架底层的设计。

# 缘起

注解也叫做元数据,是JDK1.5版本开始引入的一个特性,用来对代码进行标记说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解修饰。其本身不包含任何业务逻辑。 一般注解大类分为三种:

阅读全文

上一页

12

下一页

全部分类
更多 6 杂文 11 架构 6 微服务解决方案 6 定时器 1 《MYSQL》笔记 3 《Java基础》笔记 14 《常用设计模式》笔记 11 《Spring源码解读》 1 面试记 1 《MQ》 2 《Go语言》 7 开源 3 《锁的演化》 6 《海量数据切分》 1 《Redis》 4 《Keepalived》 1 《Nginx》 9
Theme by Vdoing | Copyright © 2020-2025 Kitty Daddy | License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式