WebAssembly学习记录 流程背景编译C/C++指定函数到wasm文件,为JavaScript提供计算密集型任务的高效解决方案。流程概述按照emscripten官方文档安装编译器并对C/C++打包。注:也可以编译整个C/C++文件到wasm,本流程只导出函数运行和激活编译器环境运行编译成wasm文件命令说明注:官网上提到过导出cwrap,ccall来给JavaScript调用导出的C/C++函数。但是安装最新版emscripten发现没用。指明导出的C/C++函数,函数名前需要加下划线-O指明编译优化方案,和g++中-O。
Webpack的Loader和Plugin 1.总类型前置loader普通loader内联loader后置loader2.默认类型默认为normal类型3.修改类型配置时可以通过enforce修改类型。Plugin在Webpack工作流程插入操作来扩展Webpack功能。
组件库打UMD包 项目使用的是antd4.x,在组件库未单独打umd包前还需要引入样式文件,在打包时还配置了插件将antd依赖的momentjs转为体积较小的dayjs。最后的umd包的体积是960KB左右,我们的目标是1.2MB左右,说明仍然可以借助提取第三方包作为外部依赖来压缩umd包的体积。在上面几个问题的解决中已经把一些体积较大的包放入外部依赖,但是打包成umd后进行体积分析,发现体积很大,最后的umd包的体积是1.49MB左右。打包时在common组件库打包入口类似于antd的es包引入了所有组件并重新导出。
Webpack学习记录 打包入口,从一个或多个入口打包打包文件输出位置webpack本身只能编译JavaScript处理模块化。编译CSS等其它资源需要借助loader。扩展webpack的功能。开发模式下运行项目并热更新。开发模式development和生产模式production。
TypeScript类型注释 typescript使用类型注释来进行静态类型检查其中基本类型正常注释即可,选择大小写均可。对于引用类型需要特别注意。如果使用Object或object注释:(1)则会认为对象是空对象,不可以对其属性进行改查。(2)宽松地类型检查,声明obj时赋初始值,属性任何类型都是合理的(推荐使用)如果使用对象字面量进行注释:(1)则会认为对象是灵活的,可以对其属性进行改查。(2)正常的类型检查,obj赋值时,属性必须严格对照注释1.1.2 注释:Function注释Function分为箭头函数和普通函数
弹性计算 W3C官网 https://www.w3.org/TR/2018/CR-css-flexbox-1-20181119/#flex-flex-grow-factor。在满足“收缩条件”时,flex容器中的项目会按照设置的flex-shrink和flex-basis乘积的比例来收缩,适应容器大小。在满足“延申条件”时,flex容器中的项目会按照设置的flex-grow值的比例来延申,占满容器剩余空间。描述flex-grow,flex-shrink,flex-basis。按照各自的规则取值即可。
解决git合并的冲突问题 解决冲突的最好方案是:只保留远程仓库的代码,剪切你的修改,等到合并成功后再对文件进行修改并重新提交同时保留远程仓库的代码和你的代码,合并可以成功使用IDE提供的merge editor,可以选择性保留任意内容git pull之前修改:只保证工作区做出了修改,如果提交到了版本库,那么使用git reset撤销提交。之后使用git stash将工作区修改缓存进栈。之后git pull下拉代码,直接进行fast forward合并。
git merge和git rebase命令 参考链接:https://www.cnblogs.com/michael-xiang/p/13179837.html学习背景:已经学习过git,但是实践较少,未和他人协作。
支持向量机论文翻译——使用不匹配字符串核函数的支持向量机进行蛋白质分类 Mismatch String Kernels for SVM Protein Classification 免费查看该论文的链接:论文链接摘要:我们介绍了一种字符串核函数(注:支持向量机SVM中数据升维使用核函数),叫做字符串不匹配核函数。基于这种核函数(注:核函数是支持向量机的核心,知核函数,可进行分类)的支持向量机SVM用于解决蛋白质分类问题。 这种支持向量机SVM分类的依据是蛋白质序列中长度为K的子序列和序列中m个不匹配位置(注:就是k和m作为核函数的参数,具体参见下文核函数公式)并且不需要依赖任何生成模型来计算生成序列(注:没读懂,表示牛逼)。我们使用不匹配的树型数据结构来高效计算核函数(注:不清楚具
进程线程与IO 参考:《计算机组成原理》白中英《操作系统》左万历《计算机网络》谢希仁《Unix网络编程》W. Richard Stevens《深入浅出Nodejs》朴灵《JavaScript权威指南(第七版)》David Flanaganhttps://mp.weixin.qq.com/s/YdIdoZ_yusVWza1PU7lWaw IO多路复用http://c.biancheng.net/view/1220.html 多线程模型https://zhuanlan.zhihu.com/p/2348886.
基础线段树数据结构 1.线段树概念线段树简单来说就是仅通过一个数组来描述一棵树。数组中每个元素存储树中对应节点存储的信息,不存储描述树的层次结构的信息。注:这和树状数组的描述很像,因为线段树是一棵平衡二叉树(具体证明不在此演示)不需要特定存储层次结构信息,树状数组的父子节点具有特殊的与关系,也不需要存储特定的层次结构信息。2.线段树的存储2.1 线段树的核心性质(每个节点存储着一个区间的区间和) 每个线段树节点存储两个边界值,表示区间的左右边界,除此之外应存储一个区间和变量,用于记录区间的和,当前节点的区间和等于
JavaScript数据存储与内存关系 参考https://www.zhihu.com/question/482433315/answer/2083349992https://bbs.csdn.net/topics/390355334https://hashnode.com/post/does-javascript-use-stack-or-heap-for-memory-allocation-or-both-cj5jl90xl01nh1twuv8ug0bjkhttps://zhuanlan.zhihu.com/p/362219811.
最短路算法 1.Dijkstra算法1.1 算法流程阐释1.初始化:出发点的最短路长度置为零,其余点的最短路长度置为正无穷。2.n轮松弛:Dij算法将点分为已经求出最短路的点的集合和未求出最短路的点的集合。最终得出结果必须使未求出最短路的点的集合为空,初始时所有点都未求出最短路,因此需要N轮松弛,就是最外层循环次数。3.每轮松弛:在未求出最短路的点的集合中找到距离出发点最近的点:在未求出最短路的点的集合中找到一个到出发点的距离最近的点,把它加入已求出最短路的点的集合。4.每轮松弛:更新该点到所有未求出最