“约定优于配置”与Magento总结

预告中的性能测试,结果我不想贴了,因为改造前后实在是看不出明显差距(用的Apache的ab)睡觉。这个结果其实有心理准备,或者说在预料当中。虽然配置文件的加载(config.xml等)在Magento接收一个请求的整个进程中影响不小(处理时间和内存占用),但我这次的改造对配置文件总量的缩减不够明显,对最后结果的影响自然就不明显了。

瘦身效果多不明显,有数据为证,用Alan大神的Configviewer模块分别记录下改造前后的总配置文件(聚合之后),改造前的xml总行数(拷贝到编辑器格式化之后,后面同理)是9465行,改造之后(删除我所谓的所有可被约定所替代的配置)的总行数是8718行,瘦身的百分比只有大概8%,这个程度的瘦身,再加上我为了实现“按约定加载”所添加在核心的php代码的影响(负面影响)抵消,最终的结果也就很好理解了。

    这次的折腾到此为止确实是很像一次玩票,不过我倒是没有觉得所花的时间是浪费的。首先,再一次读了下Magento的核心代码(以前也看过,但没想那么多),核心代码写得好的部分可以学习,写的不好的部分也可以学习(作为反面例子),无法判定好或坏的部分,也可以作为思考的源泉。其次,我依然认为Magento某些方面有过度设计,与“约定优于配置”这个流行的思想不一致,虽然我之前做的改造没有取得明显的效果,但一方面除了前面指出的这些,Magento必然还有不少地方值得改造,需要时间和工具(比如APM)去挖掘,另一方面改造的思路没错,但我个人写的实现这个思路的具体代码本身可能还没有做到性能最优(越是底层的代码,对系统的整体性能的影响越大,特别是有并发的情况下)。通俗点讲,道路虽然是正确的,但路还是要一步一步走出来的。

    前面说到配置文件的加载对一次系统请求影响不小,其实有另一个很简单的方式去瘦身,这个方式算是Magento的常识之一,也是很多新手很容易不注意的地方(或者觉得无关紧要而忽视的)。这个方式就是关掉你所不需要的Magento模块,关闭的方式是去找app/etc/modules下面的xml,找到对应的模块定义,把模块状态改为false(或者直接删掉该文件)。以做中文站为例,在国内用不到的支付方式(paypal等),配送方式(dhl等)所有对应的模块都是可以直接关闭的。以Phoenix_Moneybookers模块为例,在上面的改造后基础上,仅仅是关闭Phoenix_Moneybookers模块,总配置文件的xml总行数就从8718下降到了8544行(我的改造费老大劲也就干掉了不到一千行尴尬

    

<config>
    <modules>
        <Phoenix_Moneybookers>
            <active>false</active>
            <codePool>community</codePool>
        </Phoenix_Moneybookers>
    </modules>
</config>

每个基于Magento做的网站都有各自不同的特性,国内或国外,食品或衣服,大众商品或个性商品等,所以就Magento自带模块(先不讨论第三方模块)来说,每个网站都会有一些自带模块是用不到的,A网站需要用A模块而不需要B模块,而B网站需要用B模块而不需要A模块等。关闭掉自己不需要的模块是强烈建议做的一件事,前面提到有些新手觉得这个无关紧要,是因为没有意识到关闭无用模块对性能的提升其实挺明显。有点扯远了,关模块这个其实是另一个值得一讲的话题,有时间可以单独写一章讲一讲。

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 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、付费专栏及课程。

余额充值