【01】进步太慢缘于没有一个好习惯

(1)一个人只要自己不放弃自己,整个世界也不会放弃你.
(2)天生我才必有大用
(3)不能忍受学习之苦就一定要忍受生活之苦,这是多么痛苦而深刻的领悟.
(4)做难事必有所得
(5)精神乃真正的刀锋
(6)战胜对手有两次,第一次在内心中.
(7)好好活就是做有意义的事情.
(8)亡羊补牢,为时未晚
(9)科技领域,没有捷径与投机取巧。
(10)有实力,一年365天都是应聘的旺季,没实力,天天都是应聘的淡季。
(11)基础不牢,地动天摇
(12)写博客初心:成长自己,辅助他人。当某一天离开人世,希望博客中的思想还能帮人指引方向.
(13)编写实属不易,若喜欢或者对你有帮助记得点赞+关注或者收藏哦~

进步太慢缘于没有一个好习惯

0.前言

文章摘自简书
原文地址

1.如何做好架构设计?怎样灵活运用设计模式?

我的回答是,你做不好这些只是因为你没有养成一个良好的编程习惯。

2.为什么写这么多开源框架,还长期保持维护?

(1)除了我想让更多人受益于开源外,还有一点就是,我想保持我良好的编程习惯。
(2)写业务代码也可以保持良好的编程习惯啊,能,但是太慢!

3.写业务时无法注意到的细节

(1)在写业务代码时,即使项目时间充裕,你也会忽略掉很多细节,而这些细节正是影响你进步速度的关键,但你自己却很难察觉,在不知不觉间就对你的进阶之路造成了很大的影响。

(2)所以你的进步速度非常之慢,做了多年也只是熟练而已,无法更进一步。

(3)业务代码和框架代码最直观的差别就是,业务代码可以随意修改,而框架代码,使用者不能直接修改。

(4)由于业务代码的修改不受限制,所以一有需求变动,你就直接通过修改问题代码的方式来快速解决问题,即使这个代码的变动非常频繁,但你的第一反应却不是通过代码设计的方式来解决后续的扩展问题,因为这看似一劳永逸的方式,会浪费你当下大量的时间。

(5)人类的潜意识会更注重当下付出的成本,而忽略掉未来会获得的收益。

(6)这个时候如果有一个好的 leader 能每天 review 你的代码,还时常提醒你这些问题,只要你慢慢改成,并养成习惯,那你的进阶之路也会十分顺畅。

(7)但如此好的 leader 是可遇不可求的,那我们如果没有一个好 leader,该如何养成一个好习惯呢?

(8)我的建议就是做开源库,而且尽量做开源框架,比如架构框架、UI 框架,网络框架、图片框架,尽量少做开源 App(当然如果为了学习某项技术也是可以的)

(9)因为开源 App 主要是帮助你和别人学习某些技术,也是有大量的业务代码存在的,无非就是用了一些新的技术,而且还是你一个人写,有些细节你更不会考虑 …

(10)而开源框架是拿给别人调用的,所以对代码质量要求更高,考虑的细节更多,对你的提升也越大。

(11)并且你的框架代码是放在服务器上的,使用者无法修改你的代码,这就会强迫你更关注代码的耦合性、灵活性、可扩展性,甚至是你写业务时根本不会注重的注释和文档。

(12)因为使用者用得稍有不爽就会给你发起 issue,不断地督促你优化你的代码、注释、文档,不断地帮助你培养一个良好的编程习惯。

(13)这就好比你有成百上千个好 leader 每天 review 你的代码,并指出你的问题,给予更好的建议,而且这些 leader 中绝对藏龙卧虎,这样日积月累下去,你怎能不成长?

4.良好的编程习惯助你快速进步

(1)我的很多编程习惯,经过不断的纠错,优化,纠错,优化,已经深深的刻进我的脑子里了。

(2)我框架用到的大多数设计模式,都不是我刻意去用的,都是遇到某些问题,或者使用者需要增加什么功能,我为了不影响之前的版本,保证扩展性的前提下,去解决这些问题,而不得不去使用这些设计模式,很多情况下,代码已经写完了,才知道,原来我用的是 xx 设计模式。

(3)在这种不断优化代码,养成的良好编程习惯下,我写代码时,使用设计模式已经变成了潜意识的行为,根本说不出为什么要用这个设计模式,只因为觉得这样用才是最优解,这就好比拳击手,遇到攻击时会潜意识的躲闪、反击一样,这就是不断实战、不断训练的结果。

(4)我的所有开源框架加起来每个月平均下载量在 5 万左右,每天都有各种 issue 向我飞来,这些成千上万的使用者(监督者),迫使我不断地优化自己的代码,甚至连每个注释我都精雕细琢。

(5)框架要做到满足所有人的需求太难了,但只要你不断优化,能做到让大部分人满意,那对你的提升绝对是巨大的,而且你的编程习惯也会有巨大的飞跃。

(6)比如我写注释的编程习惯培养起来后,我的每个开源框架,都写了大量的注释,描述的非常详细,保证大部分人都能明白原理,但还是有很多人跑过来问我文档和注释上已经写了的问题。

(7)一个好的习惯,坚持一天,就往目标前进一步

(8)一个坏的习惯,持续一天,也就浪费一天时间

(9)我做开源三年时间改掉了我很多不好的编程习惯,让我进步飞速,所以我感谢开源

(10)我也鼓励更多的人积极参与开源,让别人受益的同时,别人也让你不断进步

(11)当然做开源,并不只是代码写的好,就能收获大量的 star,他还需要综合性的能力,比如框架定位、产品需求分析、运营、推广等很多东西,其中最重要的就是持续维护。

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值