源码

react源码分析——环境搭建

空扰寡人 提交于 2019-12-28 12:38:47
先来初始化一个react项目看一下。 npm install create-react-app -g create-react-app react-test cd react-test npm install npm run start 我们先创建一个react项目,然后运行起来。你会看到一个这样的页面。 修改src下面的index.js import React from 'react'; import ReactDOM from 'react-dom'; import './index.css'; import * as serviceWorker from './serviceWorker'; const ele = ( <div> <h3>hello react</h3> </div> ) ReactDOM.render(ele, document.getElementById('root')); // If you want your app to work offline and load faster, you can change // unregister() to register() below. Note this comes with some pitfalls. // Learn more about service workers: https:/

Dubbo源码分析之SPI(二)

∥☆過路亽.° 提交于 2019-12-28 09:41:22
一、概述   本篇文章是 dubbo SPI源码分析的第二篇,接着第一篇继续分析dubbo SPI的内容,我们主要介绍 getDefaultExtension() 获取默认扩展点方法。 由于此方法比较简单,我们略过示例部分,直接分析源码。 二、源码分析   获取默认扩展方法getDefaultExtension()是一个public、可对外提供调用的方法。我们知道,dubbo中扩展点接口必须要有@SPI注解修饰,@SPI注解代码如下: 1 @Documented 2 @Retention(RetentionPolicy.RUNTIME) 3 @Target({ElementType.TYPE}) 4 public @ interface SPI { 5 6 /** 7 * default extension name 8 */ 9 String value() default "" ; 10 11 }   注解可以修饰类和接口,同时提供 一个默认为空的value字段。   这个value字段 就是本篇文章要介绍的默认扩展实现。   现在我们来看getDefaultExtension()方法内部: 1 public T getDefaultExtension() { 2 getExtensionClasses(); 3 // cachedDefaultName为@SPI中的value

linux下通过源码安装mysql

点点圈 提交于 2019-12-28 05:39:36
小白学习linux安装mysql数据库,期间还碰到了一些坑,记录一下。 1.首先从MySQL官网下载适合自己linux系统的文件。 2.通过Xftp将压缩包上传到自己的linux服务器/usr/local目录下 进入/usr/local 文件夹下 解压 tar -zxvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz 通过命令修改一下解压的文件夹名称 mv mysql-5.7.26-linux-glibc2.12-x86_64 mysql 3.添加系统mysql组和mysql用户 添加系统mysql组 groupadd mysql 添加mysql用户 useradd -r -g mysql mysql (添加完成后可用id mysql查看) 4.安装数据库 切到mysql目录 cd /usr/local/mysql 修改当前目录拥有者为mysql用户 chown -R mysql:mysql ./ 安装数据库 bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 生成了临时密码 执行以下命令创建RSA private key bin/mysql_ssl_rsa_setup --datadir=/usr

Delta Lake源码分析

自闭症网瘾萝莉.ら 提交于 2019-12-28 03:21:32
Delta Lake源码分析 Delta Lake元数据 delta lake 包含Protocol、Metadata、FileAction(AddFile、RemoveFile)、CommitInfo和SetTransaction这几种元数据action。 Protocol:这是delta lake自身的版本管理,一般只出现在第一次的commit日志里(之后版本升级应该也会有); Metadata:存储delta表的schema信息,第一次commit和每次修改schema时出现,以最后一次出现的为准; FileAction:文件的相关操作,delta lake的文件操作只有添加文件和删除文件; CommitInfo:保存关于本次更改的原始信息,如修改时间,操作类型,读取的数据版本等; SetTransaction:设置application的提交版本,一般用于流式计算的一致性控制(exactlyOnce)。 //初始的commit log会包含protocol和metaData的信息 {"commitInfo":{"timestamp":1576480709055,"operation":"WRITE","operationParameters":{"mode":"ErrorIfExists","partitionBy":"[]"},"isBlindAppend":true}}

SpringMVC源码(五)- doDispatch - getHandle的准备阶段(@RequestMapping解析注册)

妖精的绣舞 提交于 2019-12-28 02:26:36
目录 一、doDispatch的getHandler 1、RequestMappingHandlerMapping结构 2、setApplicationContext回调函数 3、afterPropertiesSet回调函数 1)、获取可能的类 2)、解析和注册 3)、递归查询所有的方法 4)、将RequestMapping注解修饰的方法以RequestMappingInfo返回 5)、注册调用方法 二、doDispatch的getHandlerAdapter 1、RequestMappingHandlerAdapter 2、HandlerFunctionAdapter 3、HttpRequestHandlerAdapter 4、SimpleControllerHandlerAdapter 5、SimpleServletHandlerAdapter 三、总结 一、doDispatch的getHandler SpringMVC中比较重要的就是doDispatch,而其中第一个比较重要的就是根据HttpServletRequest(当前为RequestFacade类型)获取HandlerExecutionChain(调用的Controller和需要调用的HandlerInterceptor链)。 @Nullable protected HandlerExecutionChain

【Spring源码分析系列】ApplicationContext 相关接口架构分析

纵饮孤独 提交于 2019-12-28 00:47:05
【原创文章,转载请注明出处】【本文地址】http://www.cnblogs.com/zffenger/p/5813470.html 在使用Spring的时候,我们经常需要先得到一个ApplicationContext对象,然后从该对象中获取我们配置的Bean对象。ApplicationContext隶属于org.springframework.context,是SpringFramework中Bean的管理者,为SpringFramework的诸多功能提供支撑作用。 下图是Spring-4.3.2.RELEASE版本中ApplicationContext相关的UML类视图(浅绿色的为接口,浅黄色的为类): BeanFactory系列接口: public interface BeanFactory BeanFactory 是 Spring 管理 Bean 的最顶层接口,是一个 Bean 容器, 管理一系列的 bean,每一个 bean 使用一个String 类型的 name(或称之为id) 来唯一确定,这些 Bean 可以是 prototype 的或者 singleton的 。Spring 提倡使用依赖注入(Dependency Injection) 的方式装配 Bean。BeanFactory从“configuration source”加载Bean的定义

手写bind源码

旧城冷巷雨未停 提交于 2019-12-28 00:04:01
手写bind源码 改变函数this指向的三个方法:call bind apply 三个方法的相同点: 目标函数被调用时,改变this的指向的值 三个方法都是函数的方法,挂在在Function.prototype上 不同点: 目标函数调用call和apply后,会直接被执行 目标函数调用bind后,不会立即执行,而是返回一个新的函数,调用新函数才会执行目标函数 自定义一个类似于bind函数的函数,将其挂载到函数Function上面,然后就可以用函数来调用该自定义的函数了 给函数扩展一个方法 Function.prototype.customeBind = function (thisArg,...list){ let self = this; console.log(self)//func //返回一个新函数 return function(...arg2){ //改变this的指向 self.apply(thisArg,[...list,...arg2]) } } function func(...arg){ console.log(this); console.log(arg); } func.prototype.miaov = function (){ console.log(123) } let newFunc = func.bind({a:1},1,2,3,4); /

python正则替换非数字字符源码演示

女生的网名这么多〃 提交于 2019-12-27 21:52:49
把内容过程中比较重要的一些内容段备份一次,下面内容段是关于python正则替换非数字字符演示的内容,应该对码农们有用途。 #!/usr/bin/python import re phone = "2004-959-559 # This is Phone Number" # Delete Python-style comments print "Phone Num : ", num # Remove anything other than digits num = re.sub(r'D', "", phone) print "Phone Num : ", num 执行结果如下 Phone Num : 2004-959-559 Phone Num : 2004959559 来源: 51CTO 作者: Cool_Manone 链接: https://blog.51cto.com/14101311/2390223

贪吃蛇系列之四——蛇对象的创建

随声附和 提交于 2019-12-27 20:03:52
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在上一个项目中,我们已经在窗口上绘制出了一个蓝色的方块,在这个项目中,我们将开始对蛇开始进行编码,所以我们先创建一个类,叫做Snake,放在com.gulang.snake.entity的包下面。在看代码之前,我们先来做一些铺垫。首先我们分析一下蛇的构造,蛇的身体是一节一节的,每一节都是相同的结构,因此,我们需要将蛇的身体抽象出来,成一个类。这里呢我们采用了内部类的方式来实现。即下面的这部分代码: /** * 蛇的一节身体 * @author jiladeyouxiang@qq.com * */ class Body{ /** 蛇的身体的绘制的横坐标 */ private int x; /** 蛇的身体的绘制的纵坐标 */ private int y; /** * 构造一个蛇的身体节点 * @param x 绘制的横坐标 * @param y 绘制的纵坐标 */ public Body(int x, int y){ this.x = x; this.y = y; } /** * 绘制一个蛇身体的一个节点 * @param g */ public void drawMe(Graphics g){ //获得画笔原来的颜色 Color c = g.getColor(); //给画笔设置新的颜色 g.setColor

Delta Lake源码分析

China☆狼群 提交于 2019-12-27 18:05:05
目录 Delta Lake源码分析 Delta Lake元数据 snapshot生成 日志提交 冲突检测(并发控制) delete update merge Delta Lake源码分析 Delta Lake元数据 delta lake 包含Protocol、Metadata、FileAction(AddFile、RemoveFile)、CommitInfo和SetTransaction这几种元数据action。 Protocol:这是delta lake自身的版本管理,一般只出现在第一次的commit日志里(之后版本升级应该也会有); Metadata:存储delta表的schema信息,第一次commit和每次修改schema时出现,以最后一次出现的为准; FileAction:文件的相关操作,delta lake的文件操作只有添加文件和删除文件; CommitInfo:保存关于本次更改的原始信息,如修改时间,操作类型,读取的数据版本等; SetTransaction:设置application的提交版本,一般用于流式计算的一致性控制(exactlyOnce)。 //初始的commit log会包含protocol和metaData的信息 {"commitInfo":{"timestamp":1576480709055,"operation":"WRITE",