- 第八章完成
- ResNet 验证一下 CA,为什么效果会变差
- 虾皮笔试
- webpack
红宝书第八章 -- 类
类构造函数和构造函数的区别是:类构造函数必须通过 new 关键词来调用
其他点没什么,类的混入有点意思
很多 JavaScript 框架(特别是 React)已经抛弃混入模式,转向了组合模式(把方法提取到独立的类和辅助对象中,然后把它们组合起来,但不使用继承)。这反映了那个众所周知的软件设计原则:“组合胜过继承(composition over inheritance)。”这个设计原则被很多人遵循,在代码设计中能提供极大的灵活性。
class Vehicle {}
let FooMixin = (Superclass) => class extends Superclass {
foo() {
console.log('foo');
}
};
let BarMixin = (Superclass) => class extends Superclass {
bar() {
console.log('bar');
}
};
let BazMixin = (Superclass) => class extends Superclass {
baz() {
console.log('baz');
}
};
function mix(BaseClass, ...Mixins) {
return Mixins.reduce((accumulator, current) => current(accumulator), BaseClass);
}
class Bus extends mix(Vehicle, FooMixin, BarMixin, BazMixin) {}
CA
加了多个 ca 出现了局部最优的情况,loss 不降,明天试试预训练效果。并且搞清楚,注意力机制的权重计算时怎么回事
webpack
- 通过
externals来拒绝一些第三方库打包,但是需要在 html 模板中手动添加 CDN 连接
external: {
juqery: 'jquery '
}
dll对某些库进行单独打包,需要配置webpack.dll.js文件来实现
性能优化总结
- 开发环境
- 通过 HMR 热模块替换来使用减少打包时间,相当于使用缓存,只是重新打包修改过的文件
- 通过 source-map 来优化代码调试,通过打包前后的代码映射关系来找出错误位置
- 生产环境
- oneOf 来优化打包构建的速度,如果不设置 oneOf 的话每一文件都会经过所有的 loader 的检查,但是使用 oneOf 包裹的话,只会匹配一个 loader
- babel 缓存类似于开发环境的 HMR,如果有很多文件组成的一个 chunk,由于一个文件的修改,打包就要所有重新一起打包,使用 babel 缓存可以加快打包的速度
- hash 缓存来优化运行速度: [hash-chunkhash-contenthash ]
- tree shaking 去除应用程序中未使用的代码,可以使用
sideEffect取消删除 - 通过
代码分割分割来减少不必要的引用,通过懒加载或者预加载来优化 - 通过 dll 对第三方库进行一次打包成单独的文件