自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员老猫

“程序员老猫|blog.ktdaddy.com”-“最好的学习方式是分享”

  • 博客(50)
  • 资源 (6)
  • 收藏
  • 关注

原创 系统设计到撸代码?我用了这些方法和工具

工欲上其事必先利器,以上是老猫日常系统设计过程中的设计思路以及期间使用的相关工具。希望能够给大家带来一点帮助。当然,如果大家有更好的设计软件或者是软件设计方面的思路,也欢迎大家能够在评论区留言。

2024-04-19 22:19:22 956

原创 一个小小逻辑符的错误使用,资损几万块?

以上就是老猫的一段经历,大家可以当做乐子看个热闹。当然,如果你也恰好维护同样的系统,对于这样的系统维护有其他新的认知,也欢迎大家能够在评论区留言。

2024-04-15 21:36:09 730

原创 遵循这些MySQL设计规范,再也没被组长喷过

当我们接到产品提的相关需求之后,我们就会开始进行相关的技术分析和设计,其中在设计阶段就会涉及基本的业务模型的设计。最终就是进行数据模型的设计。此时就会遇到上述的一些数据库设计的问题。通过上述一些注意点,相信很多小伙伴应该知道数据表设计阶段的一些注意点了。如果小伙伴们还有一些需要补充的,也欢迎大家在评论区留言。分享是一种美德,大家一起进步。

2024-04-09 22:29:05 720

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

这些让人眼花缭乱的锁,如果面试官问到的话,大家是否能够说出一二呢?相信看完上面的解释,大家心里多多少少也有数了吧。当然关于最后一点其他分类的锁,老猫没有展开。有兴趣的小伙伴可以自行查阅一下这些分类。

2024-04-02 22:37:21 706

原创 挺后悔,我敷衍地回答了“程序员如何提升抽象思维“

运用水平思维从多个角度看待问题,尽可能多地罗列出视角和点子。水平思维的发散性能让我们更容易看到事情的整体,并且想出许多有创意性的点子。对罗列的点进行排序,找到最重要的点。对最重要的点进行垂直分析。老猫觉得这种思考方式可能无论对于软件行业还是非软件行业的人都有比较好的帮助。老猫之前做过相关大客户的业务,和一些销售也打过一些交道,在他们实际和客户进行交流的过程中,我就发现他们在介绍业务的时候仅仅有条,最终表述出来的思路总结之后也差不多是上面几种。当然这也是老猫所能想到的一些提升抽象思维的一些方式。

2024-03-25 07:04:53 1049

原创 系统渐渐沦为“屎山”,这就是真相!

相信有很多小伙伴都有小猫这样的体会,尤其是接手一个老的系统的时候,总是会吐槽当前的系统很烂,恨不得马上将其完完全全重构掉。前段时间老猫还遇到一个比较逗的小伙伴,他想表达的意思大概是“代码写的烂也就算了,他居然还在注释里撒谎…”,结果他楼下哥们还在一个劲追问他的注释是怎么撒谎的,老猫当时边吃午饭边在刷手机,老猫看到评论后,笑到喷饭,当然在此也对这位小伙伴表示同情。其实很多时候一个系统的腐烂和破败并不是在开始的时候就出现了,而是在持续地迭代升级中渐渐腐化继而沦为“屎山”。

2024-03-18 22:09:46 607

原创 缓存把我坑惨了..

小猫的态度其实还是相当值得肯定的,当他下定决心从根本上排查问题的时候开始,小猫其实就是一名合格而且负责的研发,这也是我们每一位软件研发人员所需要具备的处理事情的态度。在软件系统演进的过程中,只有我们在修复历史遗留的问题的时候,才是真正意义上地对系统进行了维护,如果我们使用一些极端的手段(例如上述提到的后门接口curl语句)来保持古老而陈腐的代码继续工作的时候,这其实是一种苟且。

2024-03-14 10:48:10 547

原创 当了程序员之后?(真心话)

从一部电视剧入行进军IT行业

2024-03-08 23:42:06 657

原创 真香定律!我用这种模式重构了第三方登录

登录问题相信后端小伙伴都有接触过,最简单的可能就是做一个权限系统就会用到登录名+密码+验证码进行登录,继而稍微复杂一些可能会涉及手机验证码登录。现在随着第三方平台的层出不穷,我们很多网站其实都提供了联合登录。用户掏出手机简单地一个扫码动作即可完成初步的注册登录功能。这种方式一定程度上能够给当前的网站带来更多的流量。关于小猫遇到的问题,咱们尝试从下面几个点去解决。适配器模式(英文名:Adapter Pattern)是指将一个类的接口转换成用户期望的另一个接口,使得原本接口不兼容的类可以一起工作。

2024-03-04 22:29:55 981

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

上述小猫和老六的案例中,其实存在的问题需要我们思考的。即使再小再简单的需求,作为研发开发完毕之后,我们可以直接上线么?其实很多时候事故往往就是由于“不以为意”发生的。事故的发生往往也遵循“墨菲定律”,这就要求我们更要敬畏线上,再小的需求点都需要经过严格的测试验证才能上线。说了那么多BeanUtils.copyProperties的坏话,那么这种拷贝方式是不是真的就一无是处呢?其实不是的,所谓存在即合理。很多时候使用的时候踩坑说白了我们没有理解好这个拷贝工具的特性。

2024-02-26 22:45:06 664

原创 处理问题,心态崩了?论一个程序员的基本素养

以上就是老猫由一次“生活事故”引发的一系列的对于日常工作的思考,如果有其他看法的小伙伴也欢迎留言。

2024-02-24 20:47:40 682

原创 一个单例模式,没必要这么卷吧

遇到上述小猫的这种情况,我们的思路是采用单例模式进行提取公共线程池执行器,然后根据不同的业务类型使用工厂模式进行分类管理。接下来,我们就单例模式开始吧。单例模式(Singleton)又叫单态模式,它出现目的是为了保证一个类在系统中只有一个实例,并提供一个访问它的全局访问点。从这点可以看出,单例模式的出现是为了可以保证系统中一个类只有一个实例而且该实例又易于外界访问,从而方便对实例个数的控制并节约系统资源而出现的解决方案。

2024-02-20 13:46:18 1002

原创 违反这些设计原则,系统就等着“腐烂”

之前看过一个故事,一栋楼的破败往往从一扇破窗户开始,慢慢腐朽。

2024-02-09 23:14:24 963

原创 服了,一个ThreadLocal被问出了花

ThreadLocal英文翻译过来就是:线程本地量,它其实是一种线程的隔离机制,保障了多线程环境下对于共享变量访问的安全性。看到上面的定义之后,那么问题就来了,ThreadLocal是如何解决共享变量访问的安全性的呢?其实ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。由于副本都归属于各自的线程,所以就不存在多线程共享的问题了。

2024-02-03 14:49:03 621

原创 忍不了,客户让我在一个接口里兼容多种业务逻辑

所谓的单一职责的软件设计模式并不是绝对的,我们会根据业务的需求形态做出动态调整。如何遵循好单一职责的设计原则,其实还是需要我们能够对业务有一个比较精准的领域划分。

2024-01-31 08:25:20 805

原创 梳理拯救烂怂代码?我是这么做的

类图是什么呢?比较专业一点的说法:在软件工程中,类图是一种静态的结构图,描述了系统的类的集合,类的属性和类之间的关系,可以简化了人们对系统的理解;类图是系统分析和设计阶段的重要产物,是系统编码和测试的重要模型。其实不仅仅是软件工程中,其他很多时候需要理清复杂关系的时候,咱们也可以用到这种表示方式。接下来,跟着老猫揭开类图的神秘面纱…为了让小猫更好地优化梳理烂怂代码,老猫花了好几个晚上整理出来了绘制的方法。其实无论是多么复杂的类,只要我们把握清楚其中的类图关系,然后再结合上一篇。

2024-01-26 23:12:43 700

原创 新接手一个业务系统,我是这么熟悉的

当新接手一个业务系统之后,很多时候大家都会束手无策,那么如何才能快速介入复杂的老业务系统呢?来看看老猫是怎么做的吧

2024-01-22 20:54:08 890

原创 一次缓存失效引发的惨案!

所谓缓存击穿就是原本由于缓存组件抗住的流量结果全部打到了数据库层,给数据库带来了巨大的压力,甚至严重的情况下直接把数据库干跨。导致缓存失效的原因也是很显然易见的,由于缓存在一个无法预期的一个场景下缓存失效了。在小猫的案例中可以看到是热卖的商品在redis中Key值全部同时失效导致的。

2024-01-19 22:39:32 820

原创 前任开发在代码里下毒了,支付下单居然没加幂等

在我们日常的开发中,一些重要的接口还是需要大家谨慎对待,即使是前任开发留下的接口,没有任何改动,当有人咨询的时候,其实就要好好去了解一下里面的实现,看看方案有没有问题,看看技术实现有没有问题,这应该也是每一个程序员的基本素养。

2024-01-16 08:31:37 815

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

知其然还得知其所以然,很多技术只是停留在使用上是不够的的,必要的时候还是得了解其原理

2024-01-12 08:13:24 855

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

有时候业务催的确实比较急,我们也不得不加班加点赶工撸代码。但是我们不能由于这样的原因而舍弃对系统性能的追求。

2024-01-06 19:32:47 870

原创 面试官:做过支付资产?那先聊聊热点账户吧

相信很多小伙伴在一些中小型的企业,面对高并发,高流量其实很多时候都没有机会接触到的,虽然很多时候都是在实现非常基础的功能,但是大家有没有设想过把当前的业务放在大流量,大并发的场景下,又会存在什么样的问题?其实很多时候有了前瞻思考,可能才会有更好的进步,面对突如其来的问题才能成竹于胸,小伙伴们,你们觉得呢?当然如果小伙伴们还有其他更好的方案或者是更好的工具推荐也欢迎大家在评论区留言,相互交流,一起进步。

2023-12-30 22:26:22 839

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

100==100 为 true,1000==1000为false?

2023-12-24 12:15:34 770

原创 接手了个项目,被if..else搞懵逼了

else {// else 后面没有其他业务时,可省略最后的else,使代码简洁当然这里面要注意的点是,一定要确认是最后的else,并没有其他的业务逻辑。

2023-12-24 12:11:43 855

原创 面试造火箭系列,栽在了cglib和jdk动态代理

“喂,你好,我是XX巴巴公司的技术面试官,请问你是张小帅吗”。声音是从电话那头传来的“是的,你好”。小帅暗喜,大厂终于找上我了。“下面我们来进行一下电话面试吧,请先自我介绍一下吧”“balabalabla…”小帅把之前的经历大概描述了一下“嗯,经历很丰富呀,接下来咱们来聊聊技术吧,请问cglib和jdk动态代理的区别是什么呢?”“额(⊙o⊙)…”,张小帅蒙了,场面一度尴尬。…面试的事情就发生在刚才,由于第一题就栽了,后面面试官的问题,小帅基本啥信心都没了,此时小帅心情久久不能平静,“这就是大厂

2021-12-29 10:27:37 344

原创 跟着老猫来搞GO,“面向对象“

前言之前和大家分享了容器以及相关的基础语法,以及函数,相信如果大家有接触过C++或者java的朋友都晓得面向对象,其实在GO语言中也存在面向对象,但是还是比较简单的,下面我们来看一下GO语言的“面向对象”。面向对象结构体的定义其实在GO语言中并不能准确得说是面向对象,go语言其实是面向接口函数编程的语言。为什么要说成GO语言的面向对象,其实也是部分特性类似于面向对象。GO语言中的面向对象还是比较简单的,GO语言仅支持封装,不支持多态和继承。语言没有class,只有struct。结构体本质上也是一种

2021-11-30 23:27:10 304

原创 跟着老猫来搞GO-内建容器Map

前期回顾在上面的文章中,老猫和大家分享了GO语言中比较重要的两种数据结构,一种是数组,另外一种是基于数组的slice。本篇文章想要继续和大家分享剩下的容器以及字符字符串的处理。MAPmap的定义在Java语言中其实还有一个键值对的容器,叫做Map,当然在我们GO语言中也有这种数据结构,例如,下面咱们就来看一下GO语言中Map的写法以及用法。看下一Map的语法定义,如下例子:m :=map[string]string { "name":"ktdaddy", "age":"28", "jo

2021-11-24 22:07:21 225

原创 跟着老猫来搞GO-内建容器slice

前期回顾前面的一章主要和大家分享了GO语言的函数的定义,以及GO语言中的指针的简单用法,那么本章,老猫就和大家一起来学习一下GO语言中的容器。数组数组的定义说到容器,大家有编程经验的肯定第一个想到的就是数组了,当然也有编程经验的小伙伴会觉得数组并不是容器。但是无论如何,说到数组其实它就是存储和组织数据的一种方式而已,大家就不要太过纠结叫法了。咱们直接上数组定义的例子,具体如下:var arr1 [5]int //定义一个长度为5的默认类型arr2:=[3]int{1,2,3} //定义一个数组

2021-11-24 22:06:26 253

原创 跟着老猫来搞GO-基础进阶

回顾一下上一篇博客,主要是和大家分享了GO语言的基础语法,其中包含变量定义,基本类型,条件语句,循环语句。那本篇呢就开始和大家同步一下GO语言基础的进阶。函数的定义上次其实在很多的DEMO中已经写出来一些函数了,但是没有讲清楚其函数定义。接下来我们同样地要举例说明一下,直接看代码。func calculate(a,b int, op string) int { switch op { case "+": return a + b case "-": return a - b case

2021-11-24 22:05:23 212

原创 跟着老猫来搞GO-基础语法

上次博客中,老猫已经和大家同步了如何搭建相关的GO语言的开发环境,相信在车上的小伙伴应该都已经搞定了环境了。那么本篇开始,我们就来熟悉GO语言的基础语法。本篇搞定之后,其实期待大家可以和老猫一样,能够写出一些比较简单的代码片段。变量定义变量的定义其实也是比较简单的,主要就是利用var关键字+变量的名称+变量的类型。例子如下:func variableDefinition() { var a int var s string fmt.Printf("%d %q\n",a,s)}大家可以比较

2021-11-24 22:04:07 93

原创 跟着老猫来搞GO,集跬步而致千里

上次博客中,老猫已经和大家同步了如何搭建相关的GO语言的开发环境,相信在车上的小伙伴应该都已经搞定了环境了。那么本篇开始,我们就来熟悉GO语言的基础语法。本篇搞定之后,其实期待大家可以和老猫一样,能够写出一些比较简单的代码片段。变量定义变量的定义其实也是比较简单的,主要就是利用var关键字+变量的名称+变量的类型。例子如下:func variableDefinition() { var a int var s string fmt.Printf("%d %q\n",a,s)}大家可以比较

2021-11-01 22:07:34 93

原创 跟着老猫来搞GO——工欲善其事必先利器

老猫的GO学习系列博客已经正式发车了,相信大家以前学习一门编程语言的时候也有经验,咱们一般都是从环境开始,在此呢,大家也跟着老猫从最开始的搭建环境开始。GO语言的安装首先呢,我们开始需要下载GO语言的安装包。GO国外的官网地址是https://golang.org/,当然这个仅限于有条件的小伙伴去官网下载了。我们一般下载呢都有所限制,不过没关系,在国内其实也有对应的网站为https://golang.google.cn/。还有一个网站中也可以下载,差不多是一个GO语言的学习社区,地址为https://s

2021-10-29 22:28:25 6949

原创 跟着老猫来搞GO——启程

为什么想要开篇这么一个系列博客主题?我想有很多小伙伴想要问我这个,其实主要有以下几个原因。在粉丝面前丢脸了之前写过几篇关于java分布式系统的一些坑,然后就有小伙伴挺崇拜的,认为老猫啥都会,甚至想找我做老师,比如:上面这个回答,事后老猫想想回答的真是不谦虚,还真的是把自己当成哪门子大牛了,还回答有问题就来问,其实顶多也就是一起讨论一下。刚回答完,后面就被打脸了。老猫真的不晓得什么是ceph,而且还是头一次听说,写到这里,可能很多小伙伴要喷我了,“lowB 这个都不晓得”。后来老猫去网上搜了一

2021-10-29 22:26:19 104

原创 承诺兑现,完成一个权限系统开源

承诺兑现好久好久都没有来博客了。上次更新是说要自己完成一个权限系统的开发,然后开源给大家。之前就写了一个Whale系统的用户认证,后面就没有然后了,老猫承认,懒了~相信很多读者失望了,有的小伙伴已经开始嘲讽了,比如:老猫其实也并没有闲着,其实用空闲时间也完成了权限系统的大部分的开发工作,目前其实也出了一个乞丐版本,有兴趣的小伙伴可以到老猫的公众号—“程序员老猫”,回复“whale源码”获取对应的源代码。废话不多说了,接下来就看看系统的样子。系统初体验以上老猫只是给大家简单截取了几个图,目前老

2021-10-17 11:23:04 154

原创 whale系统实战,聊聊用户认证

Stay Hungry,Stay Foolish。 ——乔布斯写在前面上次老猫和大家说过想要开发一个系统,从简单的权限开始做起,有的网友表示还是挺支持的,但是有的网友嗤之以鼻,认为太简单了,不过也没事,简单归简单,主要的还是个人技术的一个整合和实战。没错,系统的名称老猫也已经定义好了叫做whale,whale是鲸鱼的意思。其实没有别的意思,也是老猫拍脑袋想出来的,可能是受到docker图标的影响。另外的真要说有点啥么,那就是老猫希望这个系统是成长的,是演变的,能从简单的小鱼系统成长为遨游海洋的鲸鱼.

2021-04-20 22:33:02 344

原创 以‘权限系统‘开篇不晓得会不会遭到鄙视

前言距离上一篇博客《关于技术人员自身能力提高的一些思考》已经相隔将近一个月,现在才去更新博文,一方面工作上面确实有点忙,另外一方面自己也可能真的最近有所松懈。老猫也就不去找说辞了。上次发布博文之后,网友反响其实还是挺大的,每个人都有自己的看法。大概是这样的,老猫截取了其中一些网友的留言。其实从上面的留言里面可以看到两种意见,第一种,赞成学习研究技术,主要目的作为知识储备。一旦用到,重新翻看学习的成本会比较低,即使忘记了。第二种,赞成通过实际的开源项目去实践相关的技术,这样才会更加深刻。后来老猫想

2021-04-08 23:24:06 87 1

原创 关于技术人员自身能力提升的一些思考

老猫最近在学习这事儿上渐渐有点迷茫起来,并不是说不知道该去学一些什么,而是知道太多想要学习的东西,从而让人手忙脚乱,不知道该如何入手去学习。现状随着年纪的增长,工作繁忙,生活琐碎,老猫渐渐发现学习效率会变得很低很低。比方说有段时间可能学习欲望比较高涨,决定好好去研究一门技术。起初的时候动力很足,基本每天会学习一些,一页一页翻过去之后,会觉得还是比较有成就感。然而很多技术类的书籍都是越看到后面越感到难懂,这时候慢慢地就消磨了学习的意志。每当这个时候老猫往往会去找一些其他的书籍去看,寻思着如果看单一的书籍

2021-04-08 23:22:44 828

原创 【分布式限流】你被12306的验证码坑过么?

Stay Hungry,Stay Foolish——求知若饥,虚心若愚目录前言基本概念解决方案基于guava实现限流网关层面实现限流中间件实现限流常用限流算法令牌桶算法漏桶算法实战基于guava的限流实战基于Nginx限流实战基于Redis+Lua的限流组件(略)写在最后前言相信很多在中小型企业或者TO B企业的小伙伴们都未曾接触过限流。举个例子,小伙伴们就会发现,原来软件限流就在身边。相信很多小伙伴们都有12306买票回家的体验吧。如下图大家应.

2021-02-22 22:25:36 293 4

原创 【分布式锁的演化】终章!手撸ZK分布式锁!

前言这应该是分布式锁演化的最后一个章节了,相信很多小伙伴们看完这个章节之后在应对高并发的情况下,如何保证线程安全心里肯定也会有谱了。在实际的项目中也可以参考一下老猫的github上的例子,当然代码没有经过特意的封装,需要小伙伴们自己再好好封装一下。那么接下来,就和大家分享一下基于zookeeper的分布式锁,由于此篇主要分享的是zk的分布式锁,所以对于zk本身的相关知识点,并不会涉及很多。和分布式锁实现有关的zk知识点会提及。Zookeeper实现分布式锁何为ZK?(为了打字简单,后续老猫均以ZK来代

2021-01-17 10:06:58 209

原创 【分布式锁演化】redis实现分布式锁~

前言上一篇老猫和小伙伴们分享了为什么要使用分布式锁以及分布式锁的实现思路原理,目前我们主要采用第三方的组件作为分布式锁的工具。上一篇运用了Mysql中的select …for update实现了分布式锁,但是我们说这种实现方式并不常用,因为当大并发量的时候,会给数据库带来比较大的压力。当然也有小伙伴给老猫留言说“ 在quartz的集群模式中,就是使用了基于mysql的分布式锁,select for update ”。没错,其实quartz的集群模式中,任务执行的节点个数是可预知的,而且没有那么大的量级,所

2021-01-09 22:21:49 205

新闻发布系统

完全可以跑起来的新闻发布系统软件,欢迎大家进行相关的下载

2015-05-06

图书管理系统前端代码设计

可以直接用的图书管理系统前端代码,不用麻烦的进行前端的设计,您只需编写后台即可

2014-04-16

俄罗斯方块源代码

java开发的俄罗斯方块小游戏,包括了源码以及所需要的开发图片

2013-07-17

天天动听软件java源代码

天天动听的软件的java源代码 感兴趣的可以试着用一下的

2013-04-21

坦克大战游戏源代码

带图片的坦克游戏大战, 练习java的比较好的方法就是做这种小型的游戏

2013-04-16

串口助手源文件

有待改善 但是基本的功能已经有了 还期待给位大侠能够帮忙改善 谢谢了

2012-11-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除