自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

稀有气体的技术博客

专注Java领域及后端各种技术

  • 博客(88)
  • 收藏
  • 关注

原创 【人人都能看懂的漫画算法】边打扑克边学插入排序算法,彻底搞懂时间复杂度

让我们跟着两只可爱的小动物,边打扑克边学习插入算法!海量图片、超详细讲解。零基础不是问题,让我们彻底搞懂插入排序算法,并在这个过程中理解什么是O记号、什么是渐进紧确界、如何计算时间复杂度!打好基础,后面的复杂算法也不是什么难事!

2023-07-27 23:07:40 658 7

原创 图文轻松理解计算机网络五层架构

为什么计算机网络有这么多层初接触计算机网络,不理解为什么有这么多层。发个信息不是很简单的事情吗?就像寄信,扔到邮筒里,邮递员投递到收信人邮箱。这个过程很简单啊,为什么计算机发个信息这么麻烦?寄信过程看似简单,其实和计算机发送信息的底层原理是一样的。计算机网络传输要做的事情,现实中寄信也一样不少。下面我们就通过寄信这个例子来理解计算机网络。一、分层和协议计算机网络有5层、7层模型。模型中的每层又有不同种类的协议。在进入例子前,我们先看看什么是分层和协议。分层分层是为了在逻辑上划分职责,确保每一

2022-05-12 09:29:43 5750 2

原创 图文结合彻底理解非对称加密、RSA原理及安全性(图文版)

图文结合彻底理解非对称加密(公钥密钥)、RSA原理及安全性前文详细讲解了对称加密及算法原理。那么是不是对称加密就万无一失了呢?对称加密有一个天然的缺点,就是加密方和解密方都要持有同样的密钥。你可以能会提出疑问:既然要加、解密,当然双方都要持有密钥,这有什么问题呢?别急,我们继续往下看。对称密钥的缺点我们先看一个例子,小明和小红要进行通信,但是不想被其他人知道通信的内容,所以双方决定采用对称加密的方式。他们做了下面的事情:1、双方商定了加密和解密的算法2、双方确定密钥3、通信过程中采用这个密钥进行

2021-11-21 23:49:54 6685 7

原创 加密就像玩魔方----图文详解对称加密(DES、AES)

你知道吗?如果不是密码学的发展,可能计算机的出现还要晚很多年。众所周知,图灵是计算机科学之父。图灵早年从事密码破解工作。在二战期间,图灵对破解德军 Enigma 密码机做出了巨大贡献,从而加快了二战结束的步伐。由于破解密码需要大量的计算工作,所以图灵参与了最早的电子计算机研发工作。最终图灵奠定了计算机科学的基础。某种意义上可以说是密码学的发展加快了了计算机的产生。为什么需要加密?密码学源于解决消息传递过程中的安全问题。我们可以思考下面的一个场景。上大学的小明给爸爸写信,让爸爸汇款1000块钱给他报

2021-10-11 22:53:04 1731 1

原创 做数据迁移差点累死的程序员有话要说----数据迁移经验分享

“结束了吗?”“不用再每天工作到凌晨两点了吗?”“不用再一遍遍核对数据了吗?”“不用再研究难读的mapping rule了吗?”“是在做梦,还是已经醒了?”睁开眼,此时是下午两点。昨夜结束了为期一年的数据迁移工作。历经多次上线上,数亿条数据从老系统进入新系统,开启了新生。回首数据迁移的整个过程,可以说是无比痛苦。当然,随之也获取了宝贵经验。据说每个程序员都会至少参与一次数据迁移工作。如果想在轮到你的那一次痛苦少一点,我们不妨继续看下去。为什么数据迁移项目难做如果你没有做过数据迁移项目,很容

2021-04-30 23:44:32 4781 3

原创 轻松理解 MySQL InnoDB 索引、B+树索引、查询原理

前言索引对于DB查询的性能起到至关重要的作用。对于索引如何提升查询性能,通常都会拿查字典来做类比。字典前面会有拼音索引,我们查字典会先查拼音索引,以此来提高查字典的速度。对于这个类比,我们可以思考的更深入点,看看通过拼音索引提升查询速度的根本原因是什么。我们考虑如下几个问题:1、通过拼音索引能直接定位到字的具体位置吗?不能,拼音索引只能定位到字所在的页,如果想找到所要的字或者词,还需要在页中再次定位。这个过程和InnoDB的索引设计相同,通过索引只能定位到数据所在页。2、定位到页后,如何定位到具体字

2020-08-23 10:54:02 2190 7

原创 你绝对能看懂的Kafka源代码分析-NetworkClient类代码分析

目录:《Kafka Producer设计分析》《KafkaProducer类代码分析》《RecordAccumulator类代码分析》《Sender类代码分析》《NetworkClient类代码分析》-------------------------------------------------------------------上一节《Sender类代码分析》通...

2019-04-08 18:24:30 3143 2

原创 你绝对能看懂的Kafka源代码分析-Sender类代码分析

目录:《Kafka Producer设计分析》《KafkaProducer类代码分析》《RecordAccumulator类代码分析》《Sender类代码分析》《NetworkClient类代码分析》-------------------------------------------------------------------上一节《RecordAccumulat...

2019-04-04 10:09:46 2406

原创 ZooKeeper实际应用案例-开发实战

本原创入门教程,涵盖ZooKeeper核心内容,通过实例和大量图表,结合实战,帮助学习者理解和运用,任何问题欢迎留言。目录:zookeeper介绍与核心概念 安装和使用 ZooKeeper分布式锁实现 ZooKeeper框架Curator分布式锁实现及源代码分析 zookeeper 开发实战(java客户端)前面几章,我们学习了zookeeper的概念和使用,并且分析了curat...

2018-12-18 14:14:51 50278 28

原创 ZooKeeper框架Curator分布式锁实现及源代码分析

本原创入门教程,涵盖ZooKeeper核心内容,通过实例和大量图表,结合实战,帮助学习者理解和运用,任何问题欢迎留言。目录:zookeeper介绍与核心概念 安装和使用 ZooKeeper分布式锁实现 ZooKeeper框架Curator分布式锁实现及源代码分析 zookeeper 开发实战(java客户端)上一篇文章中,我们使用zookeeper的java api实现了分布式排...

2018-11-09 13:25:27 6064 5

原创 Apache Kafka核心概念-多图-形象易懂(入门教程轻松学)

本入门教程,涵盖Kafka核心内容,通过实例和大量图表,帮助学习者理解,任何问题欢迎留言。目录:kafka简介 kafka安装和使用 kafka核心概念 kafka核心组件和流程--控制器 kafka核心组件和流程--协调器 kafka核心组件和流程--日志管理器 kafka核心组件和流程--副本管理器 kafka编程实战本章是学习kafka的核心章节,涵盖内容比较多,在理...

2018-09-21 18:43:03 16439 39

原创 2张图彻底搞懂 MySQL InnoDB 中数据页、索引页、redo log、binlog、undo的文件、内存、刷盘机制

只需收藏文中两张精心总结绘制的图,便可搞懂MySQL InnoDB的核心工作方式以及文件、内存。本文主要围绕表空间文件、redo log、binlog、undo log 这几种最重要的文件(日志),讲解 MySQL 核心功能的实现,涉及 MySQL 和 InnoDB 对磁盘、内存的使用,核心线程及其工作方式。

2024-04-12 08:30:00 980

原创 微服务架构中的服务拆分方案和案例

本文的微服务拆分方案旨在提供一种平滑拆分微服务的方法。尽量降低服务拆分的风险,并且能够回滚。本方案在实际项目中有过验证,基本做到了零问题,平稳拆分。

2024-04-08 17:37:42 638

原创 程序员,你喜欢写文档吗?

这是一个很矛盾的事情,程序员非常不喜欢写文档,但又非常讨厌别的程序员不写文档。正所谓己所不欲,勿施于人。作为有职业操守的程序员,需要认真写文档、写高质量的文档。

2023-07-11 16:44:30 169

原创 什么是程序员亲手制造的,你却找不到

根据我十多年的程序员经验,逻辑问题都好查找和解决。最难问题是不能稳定复现的问题,也就是俗称的“灵异Bug”。有的时候分人、有的时候分电脑、有的时候分时间,总之就是让你摸不清头绪,不知道什么时候就冒出来。

2023-07-11 16:39:51 260

原创 涛哥入住大别墅后的奇怪发现

程序员如何通过自己的努力入住大别墅?在别墅里,涛哥发现了一件奇怪的事情。。。。。。

2023-06-28 22:50:06 71

原创 程序员错觉之『这个Bug很快搞定!』

生产 Bug 改起来需要格外小心不说,还有一堆流程要走。哪怕只改一行代码,全部单元测试跑一遍、Code Review 走一遍、Pipline 跑一轮、QA 测一遍。造成 Bug 的代码,坑非常多,触一发而动全身。改一个 Bug,冒出来仨,还是很常见的。听到自己程序有 Bug 的第一反应是:不可能!这里不仅有专属程序员的幽默,还有职场段子、生活糗事,也有软件设计知识干货!对了,Bug最好一次搞定,哪怕都费点功夫。接下来即使确认了Bug,也会回以小问题很快搞定!这个态度是必须的,死活也要守住自己面子的底线。

2023-06-08 14:14:25 319

原创 80后程序员涛哥的童年

今天是儿童节特刊,让我们一起走进80后程序员涛哥的童年。足球是涛哥最喜欢的运动。和小伙伴们踢上一下午都不会累,再来瓶汽水,倍儿爽!程序员王涛,外号涛哥。人间大炮,一级准备,二级准备,放!山间溪边的夏日生活,鱼没抓到多少,鞋倒是被冲走不少。

2023-06-02 09:25:20 364

原创 程序员错觉之『出差下周就回来了!』

对于出差,我们应泰然处之,有自己的判断。如果做特定的事项,如UAT支持、员工培训,出差时长会比较准确。如果是救火之类,时长是不靠谱的。你很在意出差时长的话,最好提前和经理聊清楚。出差过程中如果被一拖再拖,你需要讲出你的诉求和难处,否则如果项目很需要你出差,经理会尽可能拖延你回来的时间。

2023-06-02 09:19:47 114 1

原创 【漫画程序员涛哥】程序员是如何换灯泡的?

任何工作都是解决问题的过程。程序员也是如此。但是程序员解决问题的过程具有一定特色。那么假如涛哥是一位物业维修员,我们看看他是怎么换灯泡的。

2023-05-16 14:16:07 99

原创 程序员错觉之这个需求两天搞定-程序员如何正确评估工作量

有些影响不大的因素,我们根据发生的可能性适当给予 buffer 即可。但是对于评估影响非常大的不确定因素,我们需要和业务方确定前提、假设。非技术人员,甚至经验不足的程序员很容易错误的判断工作量。对工作量预估应建立在对系统、工作方式、基础环境的了解之上,根据风险大小给予一定的Buffer。凭借对自己技术水平的自信以及简单的需求描述给出的评估往往会过于激进。我们需要尽量将不确定的因素转化为确定的因素。估算的方法有很多,这里不再讨论。

2023-05-06 10:10:23 344

原创 漫画程序员涛哥--面试被问到设计模式的尴尬经历

当涛哥还是工作一年的初级程序员,根本不知道设计模式为何物。他又是如何回答面试中设计模式的问题呢?

2023-04-11 14:47:07 102

原创 《程序员新声》-Tech Lead 如何带领团队

作为Tech Lead,除了关注技术,更需要关注团队。软件开发是团队活动,任何团队的问题都会直接影响软件项目的交付结果。例如:- 团队组建阶段,人员配备不当可能会对项目的交付产生负面影响。- 在开发过程中,团队成员没有充分表达自己的疑惑和问题,或针对某些问题过度争吵,这可能会导致工作效率下降和团队成员的不满。- 缺乏清晰的工作流程和规范,导致沟通不畅、重复工作和质量问题。- 在高效的执行期,开发效率很高,但沟通会因为对上下文和方案有足够的认知而减少,这可能会导致团队趋于保守和僵化。

2023-02-24 11:39:43 496

原创 电子签名-为你的数据签字画押

信息加密保证了机密性。这是否意味着只要合理使用加密技术就足够安全了呢?答案肯定是否定的。加密技术仅仅解决了信息传递过程中的机密性。但如果信息被攻击者截获,篡改了里面的内容,再用公钥加密发出来,接收人是无法识别的。这里就需要使用电子签名来保证信息的完整性。

2022-12-03 00:48:54 1227

原创 Tech Lead(技术经理) 带人之道

Tech Lead 跨过带人的心理关以及构建起自己的影响力都不是太大的问题。带人的难点在于因材施教。这需要Tech Lead 分析每位团队成员的情况,根据情景领导力模型,找到其所处的阶段。根据每个阶段的特点来指导团队成员工作。

2022-09-14 00:44:55 581

原创 证书-解决非对称加密的公钥信任问题

证书的出现是为了解决通信方公钥的信任问题。但同时引出了认证机构的公钥信任问题。虽然存在认证机构层级认证,但并不彻底解决信任问题。最终我们回归本源,看看信任是如何产生的。

2022-08-07 22:57:45 891

原创 Tech Lead 如何应对团队发展不同阶段

现在你已经成功组建了你的团队。看起来人员搭配合理、个个精兵良将、人人充满干劲。貌似只差一声枪响,就可以在赛场上呼风唤雨、连创佳绩。

2022-08-03 01:04:49 427

原创 Tech Lead 如何应对编码时间下降

Tech Lead作为技术管理者,编码时间会大幅下降。那么TL 应该写一些什么代码呢?如何保持技术的判断力和创新能力呢?

2022-05-24 00:36:31 321

原创 再玩五分钟手机就开始学习

再玩五分钟手机就开始学习你有没有遇到过这种情况。原本计划好晚上学习,结果一拖再拖。下班回到家中。工作了一天太累了,先休息一会,看五分钟手机就开始学习!5 分钟后…时间还早,再玩一会。半小时过后…糟糕,怎么只刷了几个短视频就过去了半小时。开始学习吧!等等,今天游戏的任务还没做!先花10分钟做完任务,然后必须开始学习了!又过了半个小时…哎呀,进了游戏没忍住打了两局,任务还没做。赶紧做任务。又过了20分钟…任务做完啦!可以开始学习了!嗯?已经11点半了!怪不得有点困。马上到12点睡觉时间了,学半个小时

2022-04-29 00:10:21 1658

原创 千万不要相信程序员说 “等我10分钟,修完这个bug就走。”

千万不要相信程序员说 “等我10分钟,修完这个bug就走。”前两天写到程序员的几个美德–傲慢、懒惰、急躁。今天聊一聊程序员的通病–乐观。先讲个小故事。某天傍晚7点,我收拾好东西准备回家。这时,一直在盯着屏幕的好基友抬头看了我一眼。“等我一会,咱们一块走?”“你还得多久?”“改完这个bug,大概10分钟。”“别逗我!改bug至少半小时!我先撤了。”晚上10点,我刷到好基友的朋友圈:“终于可以下班了!”。配图是西二旗灯火通明的大楼。这种事情在软件开发中经常会发生。早会说这张卡测一测,今天就

2022-04-29 00:08:47 1015

原创 Tech Lead(技术主管) 如何避免远离代码

TL 如何避免远离代码前两天聊到开发成为 TL 后,职责发生了变化,导致编码量下降。编码已经不再是 TL 的主要工作。那么 TL 是不是可以不写代码了?答案一定是否定的。TL 为什么要写代码?TL 非常有必要写代码,原因如下:TL 的根是 Tech,TL 的管理工作以技术为根基只有自己完整的开发一个story,才能切身体会到自己制定的流程、规范是否合理写代码过程中可以找到团队痛点和改进方向写代码过程中可以了解到团队成员的代码质量通过开发一个story,熟悉了整体代码,面对客户的问题不会慌

2022-04-29 00:06:00 265

原创 Tech Lead(技术主管)编码时间下降后的困惑

Tech Lead 没时间写代码怎么办?

2022-04-26 11:29:04 244

原创 Tech Lead (TL)需要掌握技术到什么程度?

Tech Lead 需要掌握技术到什么程度?TL 需要掌握技术到什么程度?这个问题可能每个 TL 都会时不时问自己。首先作为 TL,永远不要觉得自己技术已经够用了。即使你的技术已经能完全驾驭你的工作,但谁能保证明天你的工作又是什么呢?你需要不断拓宽自己的知识领地,不断砸实自己的技术基础。你工作的内容经常会发生变化,碰到不熟悉的技术是常有的事。不同工作内容对技术掌握的深度要求也不一样。面对这种情况,我应该学习技术到什么程度呢?每门技术都需要精深吗?显然这是不可能的,因为人的精力有限。

2022-04-26 11:23:16 601

原创 当你从研发 “不小心” 成为 Tech Lead 后----Tech lead 指南

从开发成长为TL作为一名软件工程师,技术这条路确实异常艰辛。伴随着一个个熬到爆肝的深夜,你解决掉一个个技术难题,学习了一门门技术。虽然你变秃了,但你也变强了。凭着追求卓越的精神和优秀的熬夜能力,你已经从一无所知的小白,成长为无所不能的技术大拿。你从初级程序员一路成长为高级程序员。人称 8 倍速程序员( 1 人干 8 人的工作)。这一天经理找到你。“王伟,近期要新起一个项目,你作为 Tech Lead 带一下开发团队。”“没问题,团队多少人?”“大概 20 人。”“嗯…我没带过这么大的团队啊”“

2022-03-16 09:10:04 1124

原创 卖房不必亲自跑腿,交给代理更轻松---代理模式

代理模式代理模式又称为委托模式。代理模式从字面上很好理解,有些事情你可以不必亲自去做,而是通过更为专业的人或者机构去做。比如你开公司需要工商注册。你可以选择自己去了解相关的规章制度,亲自跑腿去办理。也可以通过专业机构办理。这样你就不需要去了解办理的细节,只需把材料交给机构。机构会为你完成注册工作。在这个过程中,机构不但会为你完成机构注册,而且还有可能为你办理一些你并不知道的增值服务。这就是典型的代理模式。代理模式又称为委托模式。代理模式从字面上很好理解,有些事情你可以不必亲自去做,而是通过更为专业的人或

2021-11-23 23:29:54 529

原创 别看单例模式简单,但是玩出的花样可不少(Java版)

单例模式单例模式是设计模式中最简单的设计模式之一。他和工厂模式同属于创建型模式,都用于类的实例化。不过两者的区别很大,要解决的问题也不一样。单例模式保证一个类只会被实例化一次,使用的时候通过单例提供的方法来获取实例。在确保线程安全的前提下,很多时候我们只需要同一个类的一个实例即可,而不是在任何使用的地方都实例化一个新对象。新对象创建是有成本的,不但要花时间,而且占用内存。另外有的时候我们需要一个全局唯一的实例,比如计数器,全局多个计数器就会计数混乱不准确,如下图所示。单例模式就是为了实现全局一个实例的需

2021-11-23 23:21:28 277

原创 设计模式之策略模式(Java 实现)

设计模式之策略模式(Java 实现)大家一定都使用过电子地图。在地图中输入出发地和目的地,然后再选取你的出行方式,就可以计算出最优线路以及预估的时长。出行方式有驾车、公交、步行、骑行等。出行方式不同,计算的线路和时间当然也不同。其实出行方式换个词就是出行策略。而策略模式就是针对此类问题的设计模式。生活中这种例子太多了,比如购物促销打折的策略、计算税费的策略等等。相应的策略模式也是一种常用的设计模式。本节我们会以电子地图为例,比较工厂模式和策略模式,讲解策略模式的原理。最后结合工厂模式改造策略模式的代码实

2021-10-24 13:52:53 1417

原创 设计模式之简单工厂模式(Java 实现)

本文首发于http://www.imooc.com/wiki/Designlesson/factory.html简单工厂模式是平时开发过程中最常见的设计模式。工厂模式解决类的实例化问题,它属于创建型模式。工厂模式也经常会和其他设计模式组合使用。试想你去麦当劳买一个汉堡。你只需要告诉收银员要一个xx汉堡。过一会就会有一个此类型的汉堡被制作出来。而你完全不需要知道这个汉堡是怎么被制作出来的。这个例子中你就是客户端代码,麦当劳就是工厂,负责生产汉堡。汉堡是接口,而具体的某一种汉堡,比如说香辣鸡腿堡,就是实.

2021-10-24 13:39:19 632

原创 设计模式简介

文章首发于imooc http://www.imooc.com/wiki/Designlesson/designpatternintroduction.html设计模式简介相信你只要接触过软件编程,那么一定听说过设计模式。所谓设计模式,是为解决特定问题,一套通用的、可重用的软件设计方案。我们通常所说的设计模式,是针对面向对象语言而言。对于每一位使用面向对象语言的从业者,在学习完该语言的基础知识后,也一定了解如何编写面向对象的程序。但是,面向对象究竟有什么好处,我们又应该如何灵活运用面向对象来设计程序.

2021-10-23 15:20:00 124

原创 软件设计模式从何而来?------“抄袭来的” 设计模式

“请问你开发中使用过设计模式吗?”“能说一下工厂模式如何实现吗?”“请问Spring 使用了哪几种设计模式?”上面这些问题是不是很熟悉?想必大家面试都被问过。还记得我第一次被问到时的一脸懵逼。随后立刻被对面投来的鄙夷眼神一万点暴击。铩羽而归后,一口气学完23种设计模式。不禁连连感叹:代码还可以这么写!!接下来的日子里,即使是写hello world,我也会问自己:“你知道有23种写法吗?”。现在想想真的是 too young! too simple!从生搬硬套到灵活运用,我体验过设计模式的

2021-10-23 15:10:26 1276 3

空空如也

空空如也

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

TA关注的人

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