源码

Python源码剖析 - Python的总体架构

邮差的信 提交于 2020-03-06 18:10:06
1. 前言 Python程序的代码是如何组织的,在代码完成编写后,又是如何运行的,它其中的原理是怎么回事,大家对这些问题一定很感兴趣。 接下来, 兔子先生 带着大家一探究竟。 2. Python的总体架构 从顶层设计上来看,Python可以分为三大部分: File Groups 代码文件 - 包括模块、库及用户自定义的模块。 Interpreter 解释器 - 又称Python虚拟机,对代码分析理解,翻译成字节流,并运行这些字节代码。 Runtime Env 运行环境 - 包括运行时的对象、基础类型结构、内存分配器和实时的运行状态信息。 3. File Groups File Groups就是咱们的代码,在Python的代码的编写过程中,会包含自己编写的代码模块、依赖核心的模块、第三方模块和库文件(Linux下是so库,而Windows下面则是dll库) 比如下面一段代码: from datetime import date now = date.today() import requests r = requests.get('https://www.xtuz.net') 其中 datetime 就是核心模块, requests 则属于第三方模块,这段代码本身就属于用户的自定义代码模块了。 4. Interpreter Scanner 负责词法分析的工作,将代码一行一行切分为

LinkedList源码分析和实例应用

孤街浪徒 提交于 2020-03-06 17:06:23
1、 LinkedList介绍 LinkedList 是继承于 AbstractSequentialList 抽象类,它也可以被当作堆栈、队列或者双端队列 使用。 LinkedList 实现了 Deque 接口, 即能将LinkedList当作双端队列使用 。 LinkedList 实现 List 接口,能对它进行队列操作。 LinkedList 实现了 Cloneable 接口,即覆盖了函数clone(),能克隆。 LinkedList 实现 java.io.Serializable 接口,这意味着LinkedList支持序列化,能通过序列化去传输。 LinkedList 是非同步的。 AbstractSequentialList 实现了get(int index)、set(int index, E element)、add(int index, E element) 和 remove(int index)这些函数。 这些接口都是随机访问List的 ,LinkedList是双向链表;既然它继承于AbstractSequentialList,就相当于已经实现了“get(int index)这些接口 ” 。 2、 LinkedList数据结构 1 java.lang.Object 2 ↳ java.util.AbstractCollection<E> 3 ↳ java.util

Hadoop源码编译

谁说我不能喝 提交于 2020-03-06 10:37:00
Hadoop不提供64位编译好的版本,只能用源码自行编译64位版本。学习一项技术从安装开始,学习hadoop要从编译开始。 1.操作系统编译环境 yum install cmake lzo-devel zlib-devel gcc gcc-c++ autoconf automake libtool ncurses-devel openssl-devel libXtst 2.安装JDK 下载JDK1.7,注意只能用1.7,否则编译会出错 http://www.Oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html tar zxvf jdk-7u75-linux-x64.tar.gz -C /app export JAVA_HOME=/app/jdk1.7.0_75 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar PATH=$PATH:$JAVA_HOME/bin 注:在安装protobuf前需要安装C编译器,运行以下命令: yum install autoconfautomake libtool cmake ncurses-devel openssl

CentOS 6.4 64位 源码编译hadoop 2.2.0

故事扮演 提交于 2020-03-06 10:36:07
CentOS 6.4 64位 源码编译hadoop 2.2.0 搭建环境:Centos 6.4 64bit 1、安装JDK 参考这里 2、安装maven maven官方下载地址,可以选择源码编码安装,这里就直接下载编译好的 wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.zip 解压文件后,同样在/etc/profie里配置环境变量 vim /etc/profie export MAVEN_HOME=/opt/maven3.1.1 export PATH=$PATH:$MAVEN_HOME/bin source /etc/profile 验证配置是否成功: mvn -version Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 23:22:22+0800) Maven home: /opt/maven3.1.1 Java version: 1.7.0_45, vendor: Oracle Corporation Java home: /opt/jdk1.7/jre Default locale: en_US, platform encoding: UTF

Vue-Router 源码分析(二) 设计思想及代码结构

帅比萌擦擦* 提交于 2020-03-06 08:02:19
根据VueRouter的执行流程,可以通过这三个步骤来理解它的设计思想: 第一步 :我们new VueRouter创建VueRouter实例的时候会通过深度遍历把传入的router属性对应的数组给解析一下,保存到一个Map中,每个Map对应router的一个元素,我们称之为路由记录,解析的时候会给每个路由记录增加一个正则表达式,用于<vuerouter-link>组件在渲染时查找哪个路由记录可以与之匹配 第二步 :解析<router-link></router-link>组件的时候首先获取名为to的props(例如<router-link to="/login"><a>登陆</a></router-link>里的to属性),然后会遍历第一步Map里的每个记录(路由记录),并用路由记录中的正则去匹配这个to值,看看该正则是否能匹配,如果能匹配则表示可以渲染这个路由记录对应的组件了,然后通过Vue内部的$createElement全局函数渲染一个原生DOM标签(默认为a标签,可以通过<router-link/>组件的tag这个props去修改它),渲染后会在这个DOM对象上绑定一个click事件,当click事件触发时,会调用VueRouter实例的push()方法去修改路由, 注意,VueRouter是通过click事件来触发路由的,不是通过a的href属性来触发

写代码写了好几年,才发现自己天天都在用设计模式!

半腔热情 提交于 2020-03-06 06:43:32
原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者。 系列文章介绍 本系列文章主要围绕程序员,特别是Java或者后端程序员必须掌握的一些技术和技能,这些文章都是结合我个人的编程学习经历,总结和沉淀下来的方法论。作者目前在阿里做Java,忙里偷闲分享一些技术文章,希望能让更多人更容易地学习编程。 系列文章将会把一些技术学习方法、过程、要领与我的学习经验相结合,更加浅显易懂,并且我也会把我学习时用的资料,书籍和文章拿出来分享给大家,节省你我的时间。所谓授人以鱼也要授人以渔,是本系列文章希望达到的目标。 一个热爱分享的程序员,一个爱生活的斜杠青年。分享程序员编程学习干货和个人成长心得,期待你的关注,让我们一起进步! 本文思维导图 什么是设计模式 学习编程的朋友,想必对于设计模式这个词并不陌生,至少你一定也听说过,如果你是做Java的,那么就更加需要了解设计模式了,为什么这么说呢,因为Java作为一门面向对象语言,很多代码都可以通过设计模式得到简化、规范,提升编码效率和可读性。 按照百度百科的说法,软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 也就是说,代码可复用性是设计模式的核心要义。

springboot run方法源码(一)-初始化及第三步

我怕爱的太早我们不能终老 提交于 2020-03-06 03:19:56
版本 本文采用的是springboot 1.5.9版本,没有使用2.X版本。 pom.xml里加入: < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter </ artifactId > </ dependency > < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-web </ artifactId > </ dependency > 启动篇SpringApplication 建立一个springboot项目后,自动会新建一个项目的Application类 @SpringBootApplication public class SpringbootCodeReadApplication { public static void main ( String [ ] args ) { SpringApplication . run ( SpringbootCodeReadApplication . class , args ) ; } } 本篇的内容便是对这个run方法进行详细讲解。

【源码阅读】opencv中opencl版本的dft函数的实现细节

Deadly 提交于 2020-03-06 00:50:34
1.函数声明 opencv-3.4.3\modules\core\include\opencv2\core.hpp:2157 CV_EXPORTS_W void dft(InputArray src, OutputArray dst, int flags = 0, int nonzeroRows = 0); 2.函数实现 opencv-3.4.3\modules\core\src\dxt.cpp:3315 void cv::dft( InputArray _src0, OutputArray _dst, int flags, int nonzero_rows ) { CV_INSTRUMENT_REGION() #ifdef HAVE_CLAMDFFT CV_OCL_RUN(ocl::haveAmdFft() && ocl::Device::getDefault().type() != ocl::Device::TYPE_CPU && _dst.isUMat() && _src0.dims() <= 2 && nonzero_rows == 0, ocl_dft_amdfft(_src0, _dst, flags)) #endif #ifdef HAVE_OPENCL CV_OCL_RUN(_dst.isUMat() && _src0.dims() <= 2, ocl_dft(

做了好几年的程序员,才发现自己天天都在用设计模式!

若如初见. 提交于 2020-03-05 21:29:09
原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者。 系列文章介绍 本系列文章主要围绕程序员,特别是Java或者后端程序员必须掌握的一些技术和技能,这些文章都是结合我个人的编程学习经历,总结和沉淀下来的方法论。作者目前在阿里做Java,忙里偷闲分享一些技术文章,希望能让更多人更容易地学习编程。 系列文章将会把一些技术学习方法、过程、要领与我的学习经验相结合,更加浅显易懂,并且我也会把我学习时用的资料,书籍和文章拿出来分享给大家,节省你我的时间。所谓授人以鱼也要授人以渔,是本系列文章希望达到的目标。 一个热爱分享的程序员,一个爱生活的斜杠青年。分享程序员编程学习干货和个人成长心得,期待你的关注,让我们一起进步! 本文思维导图 什么是设计模式 学习编程的朋友,想必对于设计模式这个词并不陌生,至少你一定也听说过,如果你是做Java的,那么就更加需要了解设计模式了,为什么这么说呢,因为Java作为一门面向对象语言,很多代码都可以通过设计模式得到简化、规范,提升编码效率和可读性。 按照百度百科的说法,软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 也就是说,代码可复用性是设计模式的核心要义。