源码

【Vue】Vue源码第二步——入口文件

谁说我不能喝 提交于 2019-12-13 11:14:35
我们之前提到过 Vue.js 构建过程,在 web 应用下,我们来分析 Runtime + Compiler 构建出来的 Vue.js,它的入口是 src/platforms/web/entry-runtime-with-compiler.js /* @flow */ import config from 'core/config' import { warn, cached } from 'core/util/index' import { mark, measure } from 'core/util/perf' import Vue from './runtime/index' import { query } from './util/index' import { compileToFunctions } from './compiler/index' import { shouldDecodeNewlines, shouldDecodeNewlinesForHref } from './util/compat' const idToTemplate = cached(id => { const el = query(id) return el && el.innerHTML }) const mount = Vue.prototype.$mount Vue

Netty-源码分析ByteBuf-slice和retainedSlice使用细节

家住魔仙堡 提交于 2019-12-13 08:36:39
Netty-源码分析ByteBuf-slice和retainedSlice使用细节 slice() = slice(buf.readerIndex(), buf.readableBytes()) 源码片段,返回原始ByteBuf可读字节的一部分, 修改返回的缓冲区或此缓冲区的内容会影响彼此的内容,他们维护单独的index和makers,此方法不会修改原始缓冲区的readerIndex或writerIndex。 @Override public ByteBuf slice() { return slice(readerIndex, readableBytes()); } @Override public ByteBuf slice(int index, int length) { ensureAccessible(); return new UnpooledSlicedByteBuf(this, index, length); } boolean release0() { return unwrap().release(); } public static void main(String[] args) throws Exception { PooledByteBufAllocator allocator = PooledByteBufAllocator.DEFAULT;

Java classLoader源码分析(上)

ε祈祈猫儿з 提交于 2019-12-13 08:32:56
Launcher类的构造函数 public Launcher() { Launcher.ExtClassLoader var1; try { //1.先通过内部类获取ExtClassLoader var1 = Launcher.ExtClassLoader.getExtClassLoader(); } catch (IOException var10) { throw new InternalError("Could not create extension class loader"); } try { //2.再通过内部类获取AppClassLoader然后初始化classLoader对象 this.loader = Launcher.AppClassLoader.getAppClassLoader(var1); } catch (IOException var9) { throw new InternalError("Could not create application class loader"); } //将当前线程的上下文类加载器设置为 AppClassLoader Thread.currentThread().setContextClassLoader(this.loader); String var2 = System.getProperty("java

Spark-SparkEnv 源码解析

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-13 07:02:49
Spark-SparkEnv 源码解析 SparkEnv Object SparkEnv Object属性 SparkEnv Object方法 create方法,比较重要的方法: SparkEnv Class SparkEnv Object SparkEnv的伴生对象。 下面是他的构造方法: SparkEnv Object属性 @ volatile private var env : SparkEnv = _ //用户保存SparkEnv的实例对象 private [ spark ] val driverSystemName = "sparkDriver" //spark driver 的name private [ spark ] val executorSystemName = "sparkExecutor" //spark execute 的name SparkEnv Object方法 //set SparkEnv实例到 属性env def set ( e : SparkEnv ) { env = e } //get SparkEnv实例 def get : SparkEnv = { env } //创建 Driver段的 SparkEnv private [ spark ] def createDriverEnv ( conf : SparkConf , isLocal :

zookeeper(12)源码分析-请求处理链(2)

徘徊边缘 提交于 2019-12-12 22:49:54
SyncRequestProcessor,该处理器将请求存入磁盘,其将请求批量的存入磁盘以提高效率,请求在写入磁盘之前是不会被转发到下个处理器的。 类的核心属性 SyncRequestProcessor维护了ZooKeeperServer实例,其用于获取ZooKeeper的数据库和其他信息;维护了一个处理请求的队列,其用于存放请求;维护了一个处理快照的线程,用于处理快照;维护了一个running标识,标识SyncRequestProcessor是否在运行;同时还维护了一个等待被刷新到磁盘的请求队列。 // Zookeeper服务器 private final ZooKeeperServer zks; // 请求队列 private final LinkedBlockingQueue<Request> queuedRequests = new LinkedBlockingQueue<Request>(); // 下个处理器 private final RequestProcessor nextProcessor; // 快照处理线程 private Thread snapInProcess = null; // 是否在运行中 volatile private boolean running; /** * Transactions that have been written and

内核源码编译 安装

匆匆过客 提交于 2019-12-12 18:34:27
https://bbs.huaweicloud.com/forum/thread-24362-1-1.html 查询当前内核的版本号和OS 镜像来源 [root@localhost ~]# uname -a Linux localhost.localdomain 4.14.0-115.el7a.0.1.aarch64 #1 SMP Sun Nov 25 20:54:21 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux [root@localhost ~]# cat /etc/os-release NAME="CentOS Linux" VERSION="7 (AltArch)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (AltArch)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:centos:centos:7" HOME_URL="https://www.centos.org/" BUG_REPORT_URL="https://bugs.centos.org/" CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7"

CentOS7使用yum和源码升级内核

北战南征 提交于 2019-12-12 17:04:37
原文: https://blog.csdn.net/bayin4937/article/details/100949870 两种方式升级内核 一、yum升级内核 参考: https://blog.csdn.net/kikajack/article/details/79396793 不多废话了,直接操作,原理看别的文章 1、uname -r [root@localhost ~] # uname -r 3.10.0-957.el7.x86_64 2、备份数据 3、按照官方导入epel仓库 参考: http://elrepo.org/tiki/tiki-index.php [root@localhost ~] # yum install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm -y #就是一个repo仓库文件 [root@localhost ~] # rpm -ql elrepo-release-7.0-4.el7.elrepo.noarch /etc/pki/elrepo /etc/pki/elrepo/SECURE-BOOT-KEY-elrepo.org.der /etc/pki/rpm-gpg /etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org /etc/yum

Linux内核编译、安装流程

蓝咒 提交于 2019-12-12 17:02:09
原文链接:https://blog.csdn.net/qq_28437139/article/details/83692907 此处只讲linux内核编译步骤至于安装虚拟机,安装ubuntu操作系统请自行百度 环境信息: Linux操作系统:ubuntu16.04 内核版本:4.15.0-29-generic 需要编译和安装的内核源码版本:4.19 第一步:下载linux内核源码 官网地址地址: https://www.kernel.org/ 官网大致是这个样子,大家关注我标出的位置就OK了 第一列: mainline当前在开发的内核新版本 stable 稳定的内核版本 longterm 长期维护的内核版本 第二列: 版本号以小数点分割 第一个位置主版本号一般有重大改变时会修改的版本号(具有里程碑意义) 第二个位置次版本号偶数代表稳定版本(可商用),奇数代表开发板不稳定(不可商用) 第三个位置这个号码代表当前版本修改次数(每次可能修改一些bug) 第三列: 当前版本最后一次修改代码时间 第四列: tarball:完整的代码 pgp:验证签名 patch:基于上一个版本的补丁(一般商用的系统不会频繁的编译内核,所以可以打补丁上去方便) 在这里我们点击tarball下载完整代码 第二步:上传代码解压,安装软件 登录ubuntu16.04 切换到root权限:su - root

J.U.C剖析与解读2(AQS的由来)

人走茶凉 提交于 2019-12-12 13:51:51
J.U.C剖析与解读2(AQS的由来) 前言 前面已经通过实现自定义ReentrantLock与自定义ReentrantReadWriteLock,展示了JDK是如何实现独占锁与共享锁的。 那么实际JDK源码中的ReentrantLock与ReentrantReadWritreLock是如何实现的呢?我们现有的自定义代码是否可以更进一步呢? 答案是肯定的。注意看我之前两个Lock的朋友,应该注意到了。自定义ReentrantReadWriteLock的独占锁部分,其实和自定义ReentrantLock是几乎一样的。 也就是说,不同Lock其实现是差不多的。那么是否可以提取公共的部分,是否可以写得更加优雅一些。 那么这篇博客,就是通过提取公共代码,引入模板方法设计模式,并利用Java的一些特性,写出一个自定义的AQS。 当然,最后也会剖析源码中AQS实现与我们自定义AQS的差别所在,并解读源码AQS中一些高级应用,如AQS通过一个state实现读写锁的持有数量(居然通过一个int值的CAS操作,解决了自定义读写锁持有数量的独占操作)。 如果看过源码的朋友,会发现源码中的ReentrantLock会自定义一个Sync,该Sync会继承一个AbstratQueueSynchronizer(简称AQS)。然后源码中的ReentrantLock的tryLock等方法

HashMap底层源码

China☆狼群 提交于 2019-12-12 12:39:15
​ 这里是修真院后端小课堂,每篇分享文从 本篇分享的是:【HashMap 】 (1)背景介绍: 不讲HashMap的使用方法,看一看底层的源码是什么? 思考:HashMap使用key,·value进行存储,使用的数据结构是什么? 我们知道数组和链表两种数据结构 数组: 优点:查询速度快 缺点:增加和删除慢 链表: 优点:增加和删除快 缺点:查询速度慢 那我们可不可以将两者的优点结合一下,达到查询、增加、删除效率都非常快呢? 所以我们猜测一下,HashMap能否源码底层数据结构是采用的链表+数组的形式呢? (2)知识剖析: 1.HashMap数据底层具体存储的是什么? Java是一门面向对象开发的语言,可以把所有东西可以看做是对象。 通过查看源码可知:map里面的key和value都保存在了这个Node对象里面。 class Node<K,V>{ private K key; //用来定位数组索引位置 private V value; private Node<K,V> next; //链表的下一个node } 2.数组怎么表示? transient Node< K,V>[] table; 每个列表被称为桶,即哈希桶数组,是一个Node的数组。 HashMap使用哈希表进行存储。怎样得到表中对象的索引位置? key.hashCode( )----->hashCode-----