源码

react 基础篇 #2 create-react-app

浪子不回头ぞ 提交于 2020-01-06 00:27:43
1. 介绍 在开发react应用时,应该没有人用传统的方法引入react的源文件(js),然后在html编辑吧。 大家都是用webpack + es6来结合react开发前端应用。 这个时候,我们可以手动使用npm来安装各种插件,来从头到尾自己搭建环境。 比如: npm install react react-dom --save npm install babel babel-loader babel-core babel-preset-es2015 babel-preset-react --save npm install babel webpack webpack-dev-server -g 复制代码 虽然自己搭建的过程也是一个很好的学习过程,但是有时候难免遇到各种问题,特别是初学者,而且每次开发一个新应用,都要自己从头搭建,未免太繁琐。 于是,有人根据自己的经验和最佳实践,开发了脚手架,避免开发过程中的重复造轮子和做无用功,从而节省开发时间。 类似这样的脚手架,我扫了网络上比较多人用和关注的,一共发现了三个,它们分别是: react-boilerplate react-redux-starter-kit create-react-app 它们的关注量都非常大,截至写这篇文章为止,在github上的star量是这样的: 由此可见,使用这三个脚手架的人都相当多,最突出的是

ReentrantLock源码

雨燕双飞 提交于 2020-01-05 18:40:23
ReentrantLock与Synchronized区别在于后者是JVM实现,前者是JDK实现,属于Java对象,使用的时候必须有明确的加锁(Lock)和解锁(Release)方法,否则可能会造成死锁。 先来查看ReentrantLock的继承关系(下图),实现了Lock和Serializable接口,表明ReentrantLock对象是可序列化的。 同时在ReentrantLock内部还定义了三个重要的内部类,Sync继承自抽象类AbstractQueuedSynchronizer(队列同步器)。其后又分别定义了它的两个子类公平锁FairSync和非公平锁NonfairSync。 /** * Base of synchronization control for this lock. Subclassed * into fair and nonfair versions below. Uses AQS state to * represent the number of holds on the lock. */ abstract static class Sync extends AbstractQueuedSynchronizer { private static final long serialVersionUID = -5179523762034025860L; /**

Log4cpp源码解析——概览

强颜欢笑 提交于 2020-01-04 21:07:43
Log4cpp主要包含以下4大组件: 1. config 配置管理组件 2. layout 日志输出格式管理组件 3. appender 日志输出目标地址管理组件 4. Category 日志等级、类型管理组件,向用户提供日志记录接口,是最为核心的组件 组件间的关系如下图 来源: CSDN 作者: cxuebi 链接: https://blog.csdn.net/cxuebi/article/details/103834850

django源码解析(二)

故事扮演 提交于 2020-01-04 20:40:05
书接上回 execute_from_command_line函数执行过程中, 遇到的第一个django的类 CommandParser class CommandParser ( ArgumentParser ) : 在使用django的扩展: 自定义命令时, 也用到了这个类. ArgumentParser使用的是python的标准库argparse. 故此, 在使用django的自定义命令时, 关于参数解析(add_argument) 应该去参考argparse的文档说明. settings . INSTALLED_APPS 这行代码很有意思, 首先settings是LazySettings类的一个实例化对象. 紧接着通过访问属性 INSTALLED_APPS , 触发__getattr__函数, 在__getattr__函数中, 由于第一次访问settings变量, 此时会调用_setup函数, 将上一节提到的DJANGO_SETTINGS_MODULE环境变量对应的配置文件导入, 先放入_wrapped中缓存下来, 紧接着拿到_wrapped中INSTALLED_APPS属性值, 并将其写入到settings对象的属性当中. 以下为参考资料: Django – settings 详解 __getattr__函数作用详解 首先要了解__getattr__函数的作用:

Greenplum源码安装(CentOS 7)

拈花ヽ惹草 提交于 2020-01-04 19:51:43
最近在看GP,在安装集群的时候遇到了很多问题,在此记录下来。 目录   1 安装环境及软件版本   2 安装准备工作     2.1 修改hosts(所有机器)     2.2 修改系统内核配置(所有机器)     2.3 关闭防火墙 (所有机器)     2.4 创建用户和用户组(所有机器)   3 安装和分发     3.1 依赖包 (所有机器)     3.2 解压代码编译安装     3.3 分发   4 初始化和创建数据库     4.1 配置 .bash_profile 环境变量(所有机器)     4.2 编写数据库启动参数文件     4.3 初始化   5 参考资料   彩蛋:安装的时候遇到的各种坑 1 安装环境及软件版本 参数   版本 主机数量 3台测试机,32G内存(1Master,2Segment) 系统 CentOS 7 GP版本 5.0 3台机器的ip分别为 192.168.10.14 192.168.10.15 192.168.10.16 Master节点为192.168.10.15,其余为Segment数据节点。 2 安装准备工作 2.1 修改hosts配置互信(三台机器) [root@hadoop-test2:~]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain 192.168

vue源码学习

独自空忆成欢 提交于 2020-01-04 18:20:03
学习参考网址:https://ustbhuangyi.github.io/vue-analysis/v2/prepare/flow.html Vue源码下载: https://github.com/vuejs/vue 认识Flow   Flow是facebook出品的JavaScript静态类型检查工具。Vue.js利用Flow做了静态类型检查。   项目越复杂就越需要通过工具的手段来保证项目的维护性和增强代码的可读性。 Vue.js 在做 2.0 重构的时候,在 ES2015 的基础上,除了 ESLint 保证代码风格之外,也引入了 Flow 做静态类型检查。之所以选择 Flow,主要是因为 Babel 和 ESLint 都有对应的 Flow 插件以支持语法,可以完全沿用现有的构建配置,非常小成本的改动就可以拥有静态类型检查的能力。 入口文件   Vue.js 源码是基于 Rollup 构建的,它的构建相关配置都在 scripts 目录下。 源码目录设计: src ├── compiler # 编译相关 ├── core # 核心代码 ├── platforms # 不同平台的支持 ├── server # 服务端渲染 ├── sfc # . vue 文件解析 ├── shared # 共享代码 入口文件地址: src/platforms/web/entry-runtime

ArrayBlockingQueue源码详解

怎甘沉沦 提交于 2020-01-04 12:06:50
一)ArrayBlockingQueue<E>简介 ArrayBlockingQueue<E>源码详解(基于jdk1.8.0_162) 1) 底层由数组实现。 2) 是一个FIFO(先进先出)的阻塞队列。 3) 创建时,需指定队列初始容量,指定后不能修改。是一个线程安全的队列。 类图 : ArrayBlockingQueue<E> 继承了AbstractQueue<E>类并实现了BlockingQueue<E>接口。 二)构造方法 1) ArrayBlockingQueue(int capacity) 创建具有给定(固定)容量和默认访问策略的 ArrayBlockingQueue,默认为false。 2) ArrayBlockingQueue(int capacity, boolean fair) 创建一个 ArrayBlockingQueue具有给定(固定)容量和指定访问策略。 public ArrayBlockingQueue(int capacity) { this(capacity, false); // 调用另一个构造方法 } public ArrayBlockingQueue(int capacity, boolean fair) { if (capacity <= 0) throw new IllegalArgumentException(); this.items

xposed云闪付免签支付系统源码

痴心易碎 提交于 2020-01-04 11:16:04
云闪付免签支付系统是通过xposed框架Hook云闪付,自动生成指定金额的支付二维码,支付完成后App监控云闪付支付成功信息,实现自动回调。 支持H5,支持自动回调,支持多客户端多卡轮询。 xposed云闪付免签支付系统核心源码——生码二维码代码: public static void GenQrCode(final String paramString1, final String paramString2, final String bankName, final String bankNo) { new Thread(new Runnable() { public void run() { try { Object localObject1 = paramString2; Object localObject2 = new BigDecimal(paramString1); localObject2 = ((BigDecimal) localObject2).setScale(2, RoundingMode.HALF_UP).toPlainString().replace(".", ""); Object localObject3 = new StringBuilder(); ((StringBuilder) localObject3).append("https://pay

Service启动流程

天大地大妈咪最大 提交于 2020-01-04 05:18:08
Service启动流程从整个宏观上来看,它的模型如下 startService启动流程时序图 Activity中使用的startService方法是定义在Context的抽象类中,它的真正实现者是ContextImpl,所以我们首先进入ContextImpl类 (1)ContextImpl.startService() frameworks/base/core/java/android/app/ContextImpl.java @Override public ComponentName startService(Intent service) { warnIfCallingFromSystemProcess(); return startServiceCommon(service, mUser); } private ComponentName startServiceCommon(Intent service, UserHandle user) { try { validateServiceIntent(service); service.prepareToLeaveProcess(); ComponentName cn = ActivityManagerNative.getDefault().startService( mMainThread

LAMP源码安装

微笑、不失礼 提交于 2020-01-04 01:12:45
安装前的介绍 Linux+Apache+MySQL/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案. 安装所需软件包 php5.6 Apache2.4 mysql5.6 apr1.5 apr-util1.5 pcre8.3 安装教程 安装教程 图文详解 大专栏 LAMP源码安装 /2.png" alt="教程"/> 来源: https://www.cnblogs.com/lijianming180/p/12147631.html