源码

webpack源码学习感想

眉间皱痕 提交于 2020-02-17 05:08:56
去年6月,开始打算认真的看一个大框架的源码, 当时选择了看webpack... https://juejin.im/user/59dc483e6fb9a0450e7511b4 主要在看的是这里的系列文章, 从tapable开始看.. 学习过程的一路中, 不知不觉,7、8个月过去了, 一直到今天,终于算是收尾了吧 仔细思考一下从6月开始,开始干劲十足,因为从来没有阅读过大型框架的源码, 充满了新鲜感, 6、7、8月我牟足了劲去看,克服了很多很多困难,一路中掌握了丰富的debug能力。 印象中一直到10月,效率开始逐渐降低了,那个时候我好像在看resolver的流程, 10月放了7天假,我在家看了7天。。 因为真的很想看明白,有些看不懂的地方,我开始死扣了, 回过头来看,真的有意义吗? 时间一点一点的消失,死扣的那些细节真的有意义吗,今天我仔细回想,我想说,意义并不是很大。 真正需要掌握的地方和能力,是快速理解源码这部分要做什么,这部分价值最高 当然,这是一种很难的能力,快速的掠过内容,错过的某个细节,有可能会导致下部分内容的学习衔接不上, 真的很难,对着文章学习,阅读的效率不高,如果有个人能给我面对面的讲是多么幸福的事情,或者即使我花钱,我拜大哥,能带着我学习, 也值得。 这一路我不断怀疑自己、为了能学习下去,不断的在尝试更换自己的装备。。电脑也一路从surfacepro

mybatis专题(五)-----mybatis源码学习

ぐ巨炮叔叔 提交于 2020-02-16 19:42:40
spring集成Mybatis的原理分析 下载地址:https://github.com/mybatis/spring 1. SqlSessionFactoryBean源码分析 2. MapperFactoryBean源码分析 3. MapperScannerConfigurer源码分析 SqlSessionFactoryBean public class SqlSessionFactoryBean implements FactoryBean<SqlSessionFactory>, InitializingBean, ApplicationListener<ApplicationEvent> { @Override //在spring容器中创建全局唯一的sqlSessionFactory public void afterPropertiesSet() throws Exception { notNull(dataSource, "Property 'dataSource' is required"); notNull(sqlSessionFactoryBuilder, "Property 'sqlSessionFactoryBuilder' is required"); state((configuration == null && configLocation == null

TVM安装

大憨熊 提交于 2020-02-16 14:35:06
为什么选择TVM 为提升深度学习模型的推理效率,设备平台制造商针对自己的平台推出优化的推理引擎,例如NAVIDA的tensorRT,Intel的OpenVINO,Tencent针对移动端应用推出NCNN等。目前,深度学习模型应用广泛,在服务端和移动端都有应用,甚至于特殊的嵌入式场景想,它们都有加速模型推理的需求。   TVM介是从深度学习编译器的角度来做推理引擎,目前技术领域还比较新,具体技术细节以后有机会会深入学习,这里主要想体验一下使用TVM做深度模型推理,重点是推理效率的提升,所以尝试安装下TVM测试下。 相关版本 ```bash gcc版本 6.4.0 cmake 3.16.4 llvm 我选择的版本为llvm-9.0.0 ``` gcc 安装 查看系统版本 cat /etc/redhat-release 查看默认的gcc版本 gcc --version 查看默认动态库 strings /usr/lib64/libstdc++.so.6 | grep GLIBC GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10

设计模式课程 设计模式精讲 20-3 解释器模式源码解析

混江龙づ霸主 提交于 2020-02-16 11:01:24
1    源码解析 1.1    源码解析1 (jdk中的应用) 1.2    源码解析2 (Spring中的应用) 1    源码解析 1.1     源码解析1 (jdk中的应用 ) java.util.regex.Pattern (java正则表达式通过java.util.regex包下的Pattern类与Matcher类实现) 1.2     源码解析2 (Spring中的应用) org.springframework.core.io.Resource(策略抽象) package org.springframework.core.io; import java.io.File; import java.io.IOException; import java.net.URI; import java.net.URL; public interface Resource extends InputStreamSource { boolean exists(); boolean isReadable(); boolean isOpen(); URL getURL() throws IOException; URI getURI() throws IOException; File getFile() throws IOException; long contentLength()

spring源码分析---2.Bean加载流程

不羁岁月 提交于 2020-02-16 06:14:01
首先来看下面一段简单的代码 1 BeanFactory bf = new XmlBeanfactory(new ClassPathResource("spring.xml")); 2 bf.getBean("testBean"); 这个ClassPathResource类是用于加载classes下的spring配置文件。 我们来看看这个类的继承关系,Resource接口抽象了所有spring内部使用的底层资源,对不同的资源文件都有对应的实现:文件(FileSystemResource),URL资源(UrlResource),InputStream资源(InputStreamResource)等。 我们再来看看XmlBeanFactory类的构造方法,this.reader.loadBeanDefinitions(resource)就是资源加载的真正实现,在执行前还调用了下父类的构造方法,我们接下来去看看父类的构造方法。 1 public XmlBeanFactory(Resource resource) throws BeansException { 2 this(resource, null); 3 } 4 public XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory) throws

jquery源码部分分析

送分小仙女□ 提交于 2020-02-16 01:19:58
1.整体架构和如何辨别浏览器端和node端 自执行函数,判断在什么端,如果在浏览器端就执行factory函数 //(function(){a,b})(a,b) //jq大架构,闭包,自执行函数,传入函数参数(factory:工厂模式) (function(global,factory){ "use strict" //严格模式 if(typeof module ==="object" && typeof module.exports ==="object"){ //说明支持CommonJS模块规范的(例如Node) //... }else{ //浏览器端 // factory(window) => 就是传入的函数参数执行 => function( window, noGlobal){ // window === window noGlobal === undefined(因为执行这个函数的时候,没有传第二个参数) //} factory(global); } })(typeof window !== "undefined" ? window : this ,function( window, noGlobal){ }) /* 参数一: typeof window !== "undefined" ? window : this 区分在浏览器端运行还是Node端运行 typeof xx

uboot源码分析1-启动第一阶段

穿精又带淫゛_ 提交于 2020-02-16 00:08:10
1、不简单的头文件包含 #include <config.h>:这个文件的内容其实是包含了一个头文件:#include <configs/x210_sd.h>". #include/version.h中包含了include/version_autogenerated.h,这个头文件就是配置过程中自动生成的。里面就一行内容:#define U_BOOT_VERSION "U-Boot 1.3.4" 2、启动代码的16字节头部 3、异常向量表的构建 4、用0xdeadbeef对齐填充 5、分配空间放TEXT_BASE c3e00000 6、分配空间放uboot在DDR中的物理地址 33e00000 7、设置CPU为SVC模式 8、设置 L2、 L1cache和 MMU 9、识别并暂存启动介质,因此执行完这一段代码后r3中存储了0x03,以后备用。 10、设置栈, 并调用 lowlevel_init ;目的:栈是在 SRAM中设置的,因为当前整个代码还在 SRAM中运行,此时 DDR还未被初始化还不能用 10.1lowlevel_init详解 (1)先将LR入栈 (2)检查复位状态,防止DDR再次初始化; 冷上电时 DDR是需要初始化才能用的;而热启动或者低功耗状态下的复位则不需要再次初始化 DDR。 (3) IO状态恢复 (4)关看门狗 (5) SRAM SROM相关 GPIO设置

墙裂推荐!2020Android阿里&腾讯&百度&字节&美团&网易&爱奇艺校招面试汇总

我的未来我决定 提交于 2020-02-15 23:49:21
作者: Hengtao24 链接: https://www.jianshu.com/p/7a8a10f541c8 1 基本情况 2020届硕士生,Android开发岗 此文主要是2019年年初春招实习的面试和正式校招面试经验汇总,最终校招拿到了腾讯,百度,美团,网易等offer 主要包括阿里4面,腾讯实习4面和校招4面,字节3面,百度3面,美团3面,网易3面,爱奇艺3面 2 阿里 阿里面试很喜欢问源码,优化,原理,涉及到的范围很广,还是具有一定挑战性的,以下包括阿里实习二面和校招二面,笔者都止步于二面,阿里可以去找找内推(笔者实习投递时笔试做的差,本来以为挂了,但可能因为找的内推所以还是给我面试了,后续又加了一轮笔试,校招时也是找的内推直接面试了没有笔试)。 阿里实习一面 源码: Handler消息机制(具体涉及到的类 & 细节);HashMap(数据结构 & put操作具体过程,扩容时间复杂度);ArrayMap原理 JVM: Java内存区域划分,堆栈的区别,哪些区域线程私有,哪些共享;栈帧,Java方法调用时的入栈出栈操作 并发访问: volatile原理及作用,是否具有原子性;synchronized:修饰代码块/方法/对象的区别?(单例模式DCL会不会失效?);Lock的原理 Android: Activity生命周期(具体执行过程,涉及到哪些类?);ANR(什么是ANR

Django Rest Framework源码剖析(一)-----认证

本秂侑毒 提交于 2020-02-15 16:53:16
Django Rest Framework源码剖析(一)-----认证 一、简介 Django REST Framework (简称DRF),是一个用于构建Web API的强大且灵活的工具包。 先说说REST:REST是一种Web API设计标准,是目前比较成熟的一套互联网应用程序的API设计理论。REST这个词,是 Roy Thomas Fielding 在他2000年的 博士论文 中提出的。Fielding是一个非常重要的人,他是HTTP协议(1.0版和1.1版)的主要设计者、Apache服务器软件的作者之一、Apache基金会的第一任主席。所以,他的这篇论文一经发表,就引起了关注,并且立即对互联网开发产生了深远的影响。 Fielding将他对互联网软件的架构原则,定名为REST,即Representational State Transfer的缩写。我对这个词组的翻译是”表现层状态转化”。如果一个架构符合REST原则,就称它为RESTful架构。所以简单来说,RESTful是一种Web API设计规范,根据产品需求需要定出一份方便前后端的规范,因此不是所有的标准要求都需要遵循。 学习RESTful API的资料: RESTful API 设计指南 、 理解RESTful架构 二、安装配置 安装需求: Python(2.7,3.2,3.3,3.4,3.5,3.6) Django

Java集合框架源码(四)——Vector

孤人 提交于 2020-02-15 16:05:52
第1部分 Vector介绍 Vector简介 Vector 是 矢量队列 ,它是JDK1.0版本添加的类。继承于AbstractList,实现了List, RandomAccess, Cloneable这些接口。 Vector 继承了AbstractList,实现了List;所以, 它是一个队列,支持相关的添加、删除、修改、遍历等功能 。 Vector 实现了RandmoAccess接口,即 提供了随机访问功能 。RandmoAccess是java中用来被List实现,为List提供快速访问功能的。在Vector中,我们即可以通过元素的序号快速获取元素对象;这就是快速随机访问。 Vector 实现了Cloneable接口,即实现clone()函数。它能被克隆。 和ArrayList不同, Vector中的操作是线程安全的 。 Vector的构造函数 Vector共有4个构造函数 // 默认构造函数 Vector() // capacity是Vector的默认容量大小。当由于增加数据导致容量增加时,每次容量会增加一倍。 Vector(int capacity) // capacity是Vector的默认容量大小,capacityIncrement是每次Vector容量增加时的增量值。 Vector(int capacity, int capacityIncrement) //