用逆向思维学习技术

news2024/11/27 23:34:36

tip: 作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。

推荐:体系化学习Java(Java面试专题)

前言

学习任何知识,我都喜欢先去了解一个知识的脉络,然后再有计划的的学习。举个例子,我是从事 Java 开发的,我习惯了解整个 Java 的生态都需要学习什么,我要进阶成中级工程师,我需要学习哪些技术?我要进阶成资深工程师,我需要学习哪些技术?这些技术都要掌握到什么程度?
我会去梳理这样一张思维导图,这样在我的脑海里,我就能清楚的知道每个阶段需要学会什么,也像游戏一样,我打怪打到什么程度,我就可以升级。
在这里插入图片描述
如上图这种,当然这种是偏向于宏观的。还有一个种是微观的方法,是针对于具体学习某个技术的。

逆向思维的学习方法

比如我想要学习一下 Redis ,首先我们得先整理学习 Redis 需要掌握哪些方法,结构化的展示要学习的内容,如下:

1、基础
1.1、找到官方文档、资料,了解什么是 Redis 以及它的应用场景,有什么优缺点;
1.2、学习 Redis 的基本概念和使用方法,包括数据结构、常用命令和配置参数等;
1.3、在项目中使用 Redis,找个使用场景练习;
2、进阶
2.1、了解 Redis 在缓存、消息队列、计数器等方面的应用;
2.2、学习 Redis 的高级特性,包括事务、持久化、复制、集群等;
2.3、搭建 Redis 的环境,对 Redis 事务、持久化、复制、集群等实践操作;
3、精通
3.1、学习 Redis key 的生命周期,以及一些淘汰策略;
3.2、深入学习 Redis 的数据结构是如何设计的;
3.3、深入学习 Redis 的 RDB、AOF 持久化是怎么实现的,实现细节;
3.4、深入学习 Redis 的事件驱动模型,集群、哨兵等;

当然知识脉络的展现形式,我习惯以思维导图的形式,这样更清晰,脑海中映象更深刻。在学习过程中,我习惯用逆向思维去学习知识,举个例子:
比如学习 Redis 的设计细节,那么我习惯思考如果 Redis 是我写的,或者说我要写一个类似于它的缓存,我该从哪些方面考虑呢?这又是一个梳理的过程,可能最终我梳理的不够完全,也可能有偏差,但是跟它的真实设计一对比的时候,你就会发现,原来是这么回事,并且你对这个知识的映象也会很深刻。
我简单陈述下我的思考过程:

让我设计一个缓存,我首先需要清晰的知道缓存是干什么用的,然后再去设计。
1、缓存在我心里就是类似于一个商场里临时的存储柜这样一个东西,我去商场想临时存个东西,那么选择一个柜子,将我的东西存进去,然后拿着对应号牌的钥匙,这样就完成了临时存储。缓存也一样,所以我们需要提供 key-value 这种形式的接口。当然我们 value 有很多种结构。所以这里定义数据结构很重要,我们需要提供用户多种多样的数据结构,方便存储。那么第一我需要设计数据结构
2、缓存的特性是临时的、但将来也有可能需要保证持久性。那么我就需要提供增、删、改、查的功能,如果要永久存储,那么我们还需要设计落盘。所以第二步我们需要设计增、删、改、查以及持久化。
3、就像上面举例的,商场上存储的东西,也有可能主人忘记了,没有去拿,那么商场如果不提供清理,就一直占着位置,别人就无法使用,缓存也一样,所以第三步我们需要考虑设计一个清理策略
还有配置化、监控、线程安全等等问题,就不一一介绍了,本文只是展示这样一个学习方法。

如果我们学习的方式如上面这样,我相信真有一天,有人让你手写一个,相信也不是问题。

总结

最后总结一下:
1、要掌握知识生态,就用宏观的方法去梳理;
2、要掌握具体的知识,就用逆向思维就推演;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/620649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新Ubuntu怎么装Nidia驱动,cuda和cudnn

怎么安装nvidia驱动 软件更新->附加驱动 选择一个喜欢的 或者找推荐的 Ubuntu 20.04安装CUDA & CUDNN 手把手带你撸_ubuntu20.04 无图形化安装cuda_哈希Map的博客-CSDN博客 sudo ubuntu-drivers autoinstall 怎么安装cuda gcc 不用降级 (我没降级就安装好…

设计模式-02.经典设计原则-第二节[必读]

设计模式经典设计原则-第二节 依赖反转原则(DIP) 关于 SOLID 原则,我们已经学过单一职责、开闭、里式替换、接口隔离这四个原则。今天,我们再来学习最后一个原则:依赖反转原则。在前面,我们讲到&#xff…

C++ 深入理解多态及拓展

文章目录 1. 理解虚表1.1 虚表1.2 验证1.3 子类虚表1.4 相同类不同对象的虚表 2. 静态绑定和动态绑定2.1 静态绑定2.2 动态绑定 3. 多态的实现原理3.1 向上转型3.2 多继承3.3 原理 4. 拓展4.1 构造函数能不能是虚函数4.2 父类和子类的析构函数在底层的命名问题4.3 对象之间无法…

c++实现smtp发送邮件,支持ssl的465端口发送,支持附件、一次发送多人、抄送等

前言 c实现smtp发送邮件,支持ssl的465端口发送,支持附件、一次发送多人、抄送等。 这里只使用了openssl库(用来支持ssl的465端口),其他部分是原生c,支持在win/linux运行。 网上很多都是原始的支持25端口,明…

Fiddler抓包工具之高级工具栏中的重定向AutoResponder的用法

重定向AutoResponder的用法 关于Fiddler的AutoResponder重定向功能,主要是时进行会话的拦截,然后替换原始资源的功能。 它与手动修该reponse是一样的,只是更加方便了,可以创建相应的rules,适合批处理的重定向功能。 …

[SQL Server]数据库入门之多表查询

🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集! 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指…

使用vant,实现密码输入框右边提供可视按钮(最简单)

在实际项目开发中,要实现密码输入框带密码可见切换按钮(右侧的眼睛),点眼睛可以显示或隐藏密码。 实现原理:动态绑定输入框类型 1.绑定密码框的type属性,在密码框使用插槽 ps:由于icon标签不…

美股怎么交易?有哪些美股交易基础知识?

美股市场相对成熟,投资回报率也更高一些,受到投资者喜爱。美股怎么交易?首先就需要了解美股交易基础知识。 美股交易基础知识一、美股交易市场 美股主要交易市场有NYSE纽约证券交易所、NASDAQ纳斯达克证券市场、AMEX美国证券交易所。 美股交…

GitOps 最佳实践(上)| 基于 Amazon EKS 构建 CI/CD 流水线

GitOps 是目前比较理想的方法来实现基于 Kuberentes 集群的持续部署。 了解了 GitOps 的概念以及 CI/CD 流水线的架构,接下来我们将通过以下四个模块逐步完成构建 CI/CD 流水线的最佳实践: 通过 IaC 部署云基础架构;在 Amazon EKS 集群上部…

2023年新课标I卷作文,5位人工智能考生(ChatGPT,文心一言,GPT4, ChatGLM-6b, ChatT5)来写作,看谁写得最好

大家好,我是微学AI,今天是2023年6月7日,一年一度的高考又来了,今年的高考作文题也新鲜出炉。今年是特殊的一年,有人说2023是AI的元年,这一年里有大语言模型的爆发,每天都有大模型的公布&#xf…

23年测试岗,测试工程师从初级到中高级进阶,测试晋升之路...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 调查显示&#xf…

【旋转摆正验证码】移动积分兑换影视会员活动旋转摆正验证码识别——识别解绝方法

移动积分兑换影视会员活动旋转验证码的0~200ms级小模型识别思路 具体讲解识别思路 移动积分兑换影视会员活动拖动旋转验证码被破解?当代流行的人机验证到底安不安全? 提示:以下是皆为学习交流之,如有侵权 ,望通知删帖…

年内BEV落地之战:华为遥遥领先,还是蔚小理登上王座?

作者 | 张祥威 编辑 | 德新 落地城市NOA,是今年最重磅的自动驾驶大战。而BEV感知,目前看来是 通往城市NOA的必经之路。 年内落地BEV,已经是国内自动驾驶头部玩家的共识。 其实,BEV是很早就提出的算法,又称鸟瞰图或上帝…

R730调整风扇转速

整整一个月没有写文章了,一是因为最近太忙,有点休息的时间就想躺着;二是买了Tesla P40显卡,想写个安装教程,结果快一个月了,安装还是失败。 大家如果谁懂在R730的ESXi上,用直通方式安装Tesla&am…

MMPretrain代码课

安装注意事项 训练时需要基于算法库源码进行开发,所以需要git clone mmpretrain仓库。如果只调用,则pip install 即可。 from mmpretrain import get_model, list_models,inference_model分别用于模型的获取、例举、推理 此时还没加载预训练权重 tor…

Redis-Cluster集群架构

Redis-Cluster 1.哨兵模式和redis-cluster模式的区别 哨兵模式的问题:1.只有一个master节点可以提供写的操作,qps 最多10w,对于高并发特别高的大型互联网系统 ​ 2.单节点不会内存太大,内存很大会给主节点造成压力,…

如何用数据资产管理,解锁数据新价值

数字经济和数字化转型的发展有什么共通点吗?这个问题的答案也很明显,数据就是数字经济数字化转型的基础,也是推动两者快速发展的核心要素。数字化时代,数据已经成为了个人、机构、企业乃至国家的重要战略资产,所以如何…

CnOpenData数字经济专利及引用被引用数据

一、数据简介 自人类社会进入信息时代以来,数字技术的快速发展和广泛应用衍生出数字经济。与农耕时代的农业经济、工业时代的工业经济大有不同,数字经济是一种新的经济、新的动能、新的业态,并引发了社会和经济的整体性深刻变革。现阶段&…

Nginx网络服务——页面优化与安全

Nginx网络服务——优化与防盗链 一、Nginx的网页优化1.Nginx的网页压缩2.Nginx的图片缓存3.Nginx的连接超时设置4.Nginx的并发设置 二、Nginx的页面安全1.查看Nginx版本的方式2.隐藏版本号 三、Nginx的日志分割1.编写日志分割脚本2. 执行脚本进行测试3. 将日志脚本添加至计划性…

InnoDB - 行格式

文章目录 InnoDB - 行格式1. 什么是行格式2. 四种行格式3. Compact行格式 InnoDB - 行格式 1. 什么是行格式 我们平时是以行记录为单位向表中插入数据的,这些数据在磁盘上的存放方式被称为行格式或者记录格式。 InnoDB引擎中支持四种行格式:Compact、…