源码

SpringBoot源码学习系列之@PropertySource不支持yaml读取原因

我只是一个虾纸丫 提交于 2019-12-05 17:20:23
然后,为什么@PropertySource注解默认不支持?可以简单跟一下源码 @PropertySource源码: 根据注释,默认使用DefaultPropertySourceFactory类作为资源文件加载类 里面还是调用Spring框架底层的PropertiesLoaderUtils工具类进行读取的 PropertiesLoaderUtils.loadProperties 从源码可以看出也是支持xml文件读取的,能支持reader就获取reader对象,否则出件inputStream load0方法是关键,这里加了同步锁 很重要的load0 方法抓取出来: private void load0 (LineReader lr) throws IOException { char[] convtBuf = new char[1024]; int limit; // 当前key所在位置 int keyLen; // 当前value所在位置 int valueStart; char c;//读取的字符 boolean hasSep; boolean precedingBackslash;//是否转义字符,eg:/n etc. // 一行一行地读取 while ((limit = lr.readLine()) >= 0) { c = 0; keyLen = 0; valueStart =

引路

梦想与她 提交于 2019-12-05 17:08:47
python 2 python 3 区别: python2: ​ 源码功能重复 ​ 源码不统一,维护困难 python3: ​ 源码功能不重复 ​ 源码统一,维护简单 Git常用命令 git add . git commit -m "备注信息" git push -u origin master 学习思路 思维不能固化 容易忘 -- 多进行回顾 三天一小顾 五天一大顾 没思路 -- 多读题,写伪代码 一听就会,一做就废 来源: https://www.cnblogs.com/Gin1/p/11935377.html

Springboot打包执行源码解析

送分小仙女□ 提交于 2019-12-05 16:38:10
一、打包 Springboot打包的时候,需要配置一个maven插件[spring-boot-maven-plugin] <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> 这个插件提供了5个功能模块,包括: build-info:生成项目的构建信息文件build-info.properties repackage:默认goal。在mvn package执行之后,再次打包生成可执行的jar/war,同时重命名mvn package生成的jar/war为 ***.origin run:这个可以用来运行Spring Boot应用 start:这个在 mvn integration-test 阶段,进行 Spring Boot 应用生命周期的管理 stop:这个在 mvn integration-test 阶段,进行 Spring Boot 应用生命周期的管理 如果想mvn package打的包不被重命名,可以配置classifier,这样Springboot打包生成的可执行jar就是XXX-executable.jar了。 <build>

源码安装mysql

与世无争的帅哥 提交于 2019-12-05 16:03:51
环境:centos7 mysql8.0 一、说明   mysql的安装方式有很多:yum, rpm ,通用二进制包,源码包...都可以安装。但使用源码安装是最稳定最好用的    源码安装官方文档: https://dev.mysql.com/doc/refman/8.0/en/source-installation.html   通用二进制包安装: https://dev.mysql.com/doc/refman/8.0/en/data-directory-initialization.html 二、下载源码包    来源: https://www.cnblogs.com/fanshehu/p/11932975.html

hystrix源码之metrics

人走茶凉 提交于 2019-12-05 15:27:31
hystrix通过rxjava消息模式来获取和监听命令的metrics信息。   metrics主体结构包括一下部分:    hystrix metrics主要分为三个部分,命令执行metrics,线程池metrics,合并命令metrics。分别来统计命令执行过程中产生的metrics,线程池执行过程中产生的metrics,合并命令执行过程汇总产生的metrics。各个metrics内部有两类消息流组件,当各个行为发生时,首先向消息接收流组件发生消息,各类消息分析流组件监听消息接收流组件,对接收到的数据进行统计输出。各个metrics组件再通过监听消息分析流组件来获取统计后的消息。 单例模式   三个metrics都使用了单利模式,以HystrixCommandMetrics为例,key为commandkey。 // String is HystrixCommandKey.name() (we can't use HystrixCommandKey directly as we can't guarantee it implements hashcode/equals correctly) private static final ConcurrentHashMap<String, HystrixCommandMetrics> metrics = new

ForkJoinPool源码简单解析

雨燕双飞 提交于 2019-12-05 15:16:20
ForkJoin框架之ForkJoinTask java 阅读约 62 分钟 前言 在前面的文章"CompletableFuture和响应式编程"中提到了ForkJoinTask和ForkJoinPool,后者毫无疑问是一个线程池,前者则是一个类似FutureTask经典定义的概念. 官方有一个非常无语的解释:ForkJoinTask就是运行在ForkJoinPool的一个任务抽象,ForkJoinPool就是运行ForkJoinTask的线程池. ForkJoin框架包含ForkJoinTask,ForkJoinWorkerThread,ForkJoinPool和若干ForkJoinTask的子类,它的核心在于分治和工作窍取,最大程度利用线程池中的工作线程,避免忙的忙死,饿的饿死. ForkJoinTask可以理解为类线程但比线程轻量的实体,在ForkJoinPool中运行的少量ForkJoinWorkerThread可以持有大量的ForkJoinTask和它的子任务.ForkJoinTask同时也是一个轻量的Future,使用时应避免较长阻塞和io. ForkJoinTask在JAVA8中应用广泛,但它是一个抽象类,它的子类派生了各种用途,如后续计划单独介绍的CountedCompleter,以及若干JAVA8中stream api定义的与并行流有关的各种操作(ops). 源码

Dubbox安装步骤(包含github源码下载与编译)

社会主义新天地 提交于 2019-12-05 15:14:33
前续准备: 1,安装JDK(包括写入环境变量并且source生效) 2,安装Maven 这个简单介绍只是方便大家运行了解dubbo以及rest功能 步骤如下: git clone https://github.com/dangdangdotcom/dubbox 在checkout出来的dubbox目录执行mvn install -Dmaven.test.skip=true来尝试编译一下dubbo(并将dubbo的jar安装到本地maven库) 在checkout出来的dubbox根目录执行mvn idea:idea或者mvn eclipse:eclipse,来创建IDE工程文件 将项目导入IDE 下载解压一个zookeeper,编辑其conf/zoo.cfg后启动zookeeper用作dubbo注册中心:bin/zkServer.sh start 用IDE运行/dubbo-demo/dubbo-demo-provider/.../test目录下的DemoProvider启动dubbo服务端,目前他会分别启动dubbo协议(包括用kryo和FST序列化)和REST协议的服务 用IDE运行/dubbo-demo/dubbo-demo-consumer/.../test目录下的DemoConsumer来启动dubbo客户端调用上面的服务端,直接看console的输出即可 用IDE运行

05 flask源码剖析之配置加载

陌路散爱 提交于 2019-12-05 15:13:14
目录 05 Flask源码之:配置加载 1.加载配置文件 2.app.config源码分析 3.from_object源码分析 4. 总结 05 Flask源码之:配置加载 1.加载配置文件 from flask import Flask app = Flask(__name__,static_url_path='/xx') app.config.from_object('xx.xx') 2.app.config源码分析 执行 config 里边的 make_config 方法 self.config = self.make_config(instance_relative_config) make_config def make_config(self, instance_relative=False): return self.config_class(root_path, defaults) 实例化 config_class 类 config_class = Config class Config(dict): # Config继承了字典 3.from_object源码分析 执行 from_object 函数 将所有键值对放到Config对象中 def from_object(self, obj): if isinstance(obj, string_types): obj