源码

SpringIOC源码分析总结

社会主义新天地 提交于 2020-02-08 04:02:10
大致的加载过程: spring ioc容器的加载,大体上经过以下几个过程: 资源文件定位、解析、注册、实例化 1.资源文件定位:主要发生在ApplicationContext中,由于applicationContext继承于ResourceLoader,所以调用getResource()方法,将外部的资源解析成Resource类 2.解析:主要发生在BeanDefinitionReader中完成,最常用的类是XMLBeanDefiniationReader, ac利用loadBeanDefininiation()方法,负责读取Resource;将Resource的解析交给 XMLbeanDefiniationReader 去处理, 将XML文档解析成w3c的Document文档,BeanDefinitionDocumentReader进一步解析,BeanDefinitionDocumentReader将Document,交给 BeanDefiniationParserDetegate 去处理(装饰),如果是标准的NameSpace文档(import、alias、bean、beans),在内部解析,如果不是标准的文档,会委托合适的NameSpaceHander去处理进行解析,将结果封装到BeanDefiniationHolder

Spark源码分析-Master的onStart()方法是什么时候调用的?

谁说我不能喝 提交于 2020-02-08 02:48:07
一般我们都知道,Master的生命周期方法为:constructor->onstart->receive*->onStop;但是在Master的main方法中并没有对onStart的直接调用,那么onStart方法是什么时候被调用的呢? 这其实与Spark的底层的Netty通信架构有关。 在Master的main方法中: val rpcEnv : RpcEnv = RpcEnv . create ( SYSTEM_NAME , host , port , conf , securityMgr ) 当调用RpcEnv的create()方法时,会最终初始化并且执行NettyRpcEnv并且最终将这个对象返回。 那么我们再来看一下NettyRpcEnv的源码: private [ netty ] class NettyRpcEnv ( val conf : SparkConf , javaSerializerInstance : JavaSerializerInstance , host : String , securityManager : SecurityManager ) extends RpcEnv ( conf ) with Logging { private [ netty ] val transportConf = SparkTransportConf .

Activiti流程定义缓存源码分析8-流程缓存自定义原理

南楼画角 提交于 2020-02-08 02:45:51
上面我们浓墨重彩地讲述了自定义节点缓存类以及将其注入流程引擎配置类实例的过程,可能读者有个疑问?节点定义的缓存数据格式是什么呢?流程引擎执行节点的时候,又是如何获取并解析节点所缓存的数据呢?这也是接下来我们需要重点讲解的地方。任务节点的缓存信息当然是在任务需要执行的地方进行解析了,比如任务的完成操作或者任务节点的入库操作。关于这一点读者可以参考之前的章节。在此我们直接找到任务节点的行为执行类UserTaskActivityBehavior的执行函数execute,相关代码如代码清单x-所示。 代码清单x-UserTaskActivityBehavior.java --------------------------------------------------------------------------------------------------------------------------- public void execute(ActivityExecution execution) throws Exception { ... if (Context.getProcessEngineConfiguration().isEnableProcessDefinitionInfoCache()) {#-1 ObjectNode taskElementProperties

CI源码阅读-Loader.php

萝らか妹 提交于 2020-02-08 02:42:49
<?php /** * CodeIgniter * * An open source application development framework for PHP * * This content is released under the MIT License (MIT) * * Copyright (c) 2014 - 2018, British Columbia Institute of Technology * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software

GifFun源码学习:网络模块的分析

非 Y 不嫁゛ 提交于 2020-02-08 01:24:34
前言:GifFun是第一行代码作者郭霖大神的开源作品 GifFun地址 ,对于像作者这样的应届生来说,寻找工作的痛点是技术门槛和项目经验,由于新手的技术限制与见识广度,显然GifFun提供了一个学习的机会。在刚开始看的时候,笔者是一头雾水看不懂,学习 Kotlin后还是不懂,直到我对着代码试着重头敲一下,回头一看,便豁然开朗。 因此,学习项目最好的方法是自己敲一遍。 废话不多说,首先我们导入GifFun进Studio中,可以看到GifFun分为了4个模块,其中network显然是网络模块,网络模块下分4个包,exception显然是网络异常包,util包显然是工具包,model包为Json转换模型包,request包为网络请求包。 第一次看到这个结构的时候就跟我第一次看Android的目录结构一样。网络的第一步就是连接,所以首先要从Request入手,可以看到request包下的文件都是继承自Request文件,因此要进入Request文件查看,在进入该文件前,首先需要回顾下okhttp的完整用法: val formbody = FormBody . Builder ( ) . add ( "account" , "admin" ) . add ( "password" , "123456" ) . build ( ) ; //1 val request = Request .

软件实时更新模块调用网页爬虫

心已入冬 提交于 2020-02-08 00:46:30
软件实时更新模块调用网页爬虫 My Blog[ 我的博客 ] : 新零云博客-云翼校园计划 大家可以来学习学习噢!!! 文章目录 软件实时更新模块调用网页爬虫 My Blog[ 我的博客 ] :[新零云博客-云翼校园计划](http://112.124.15.70/) 1.实时更新思路 2.代码分析 3.源代码-E 4.测试截图 1.实时更新思路 定义此软件的现在版本号,每次打开软件爬取指定网页内容(事先设置好的),如果网页上的版本号!=现在版本号,自动跳转到软件更新页面,同时销毁程序。 即不更新至最新版本,无法使用。(可以修改成不更新也可以使用) 将销毁()去掉 2.代码分析 1.定义了版本号是:GUI-1.0.2 2.然后爬取网页:http://www.xingly.cn/version.html 这个自行修改 网站内容改成最新版本号。 1.自己搭建 在线更新页面 和 最新版本号网页 2.需要用到 精益模块 中的读取网页文本函数 3.源代码-E .版本 2 .支持库 internet .支持库 eAPI .程序集 窗口程序集_启动窗口 .程序集变量 源码, 文本型 .程序集变量 版本号, 文本型 .子程序 __启动窗口_创建完毕 版本号 = “GUI-1.0.2” 源码 = 到文本 ( HTTP读文件 ( “http://www.xingly.cn/version.html”

php源码建博客4--实现MVC结构微型框架

十年热恋 提交于 2020-02-08 00:36:07
主要: 常量优化路径 自动加载类 优化入口文件 安全访问项目目录 --------------文件结构:-------------------------------------- blog├─App│ ├─Model 模型│ │ └─UserModel.class.php 用户模型类 │ ├─View 视图│ │ ├─Back后台│ │ │ └─Index│ │ │ └─index.html 后台首页面│ │ └─Home前台│ │ └─User 用户视图目录│ │ └─login.html 登录表单页面│ ├─Controller 控制器│ │ ├─Back后台│ │ │ └─IndexController.class.php 后台首页控制器│ │ └─Home前台│ │ └─UserController.class.php 用户控制器├─Public 静态公共文件(js,css,images)│ ├─Plugins 插件│ │ └─layui 前端框架插件│ ├─Back后台│ │ ├─js/ js文件│ │ ├─css/ css样式文件│ │ └─image img图片 │ └─Home前台│ ├─js/ js文件│ ├─css/ css样式文件│ └─image img图片 ├─Frame 公共使用的类│ ├─BaseModel.class.php 数据库连接类│ ├

代付系统源码(支持API代付)

跟風遠走 提交于 2020-02-08 00:15:20
下载地址 点击源码下载 系统图截 视频教程 视频演示-实时结算 系统说明 1. 同一账户日限额20万 2. 同一账户每日最高交易15笔 3. 支持谷歌验证器登录 4. 单笔交易最低10元,最高49999元 5. 支持商户IP白名单 系统功能 1. 应用管理: 同时支持公司多个业务系统对接。 2. 商户管理: 支持商户入驻,费率设置,商户需要向平台方提供相关的资料备案。 3. 渠道管理: 支持微信、支付宝、银联、京东支付等多种渠道。 4. 账户管理: 渠道账户管理,支持共享账户(个人商户)及自有账户。 5. 支付下单: 可手动批量下单、提供退款服务。 6. 通知模块: 处理第三方支付渠道的异步通知,并将处理结果同步至业务系统。 7. 对账处理: 实现支付系统的交易数据与第三方支付渠道交易明细的自动核对(通常T+1),确保交易数据的准确性和一致性。 8. 商户清算: 计算收款交易中商户的应收与支付系统收益。 9. 商户结算: 根据清算结果,将资金划拨至商户对应的资金帐户中。 API接口 1. 单笔代付接口 2. 批量代付接口 3. 交易查询接口 4. 余额查询接口 5. 打款通知回调接口 开发技术 1. Golang+CentOS+Postgres+Nginx+ReactJS 2. 商户API对接文档见doc/dev.html 3. 平台数据采用RSA2加密传输(同支付宝业务流程一样)

python requests无法上传中文文件名的文件

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-08 00:04:23
相信很多人用python requests 上传文件时,遇到文件名或者文件路径中有中文字符的情况,服务器端不能正常返回。这个是早期requests 源码的问题,可以通过修改源码解决: # 笔者先前库环境 requests==2.21.0 urllib3==1.24.1笔者不建议更改源码的方法,因为有更简单直接的办法!这个问题在最新的requests下已经不再是问题,笔者亲测,更新了这两个库到如下版本后,问题成功解决: requests==2.22.0 urllib3==1.25.7示例代码: import requests headers = {"Authorization": "abf1-b0de5e884086","Content-Type": "application/json"} url = "http://xxxx/api/public/files" files = [ ("file", ('中文.txt', open("D:\\TestTmp\\中文.txt", "rb"))), ] resp = requests.post(headers=headers, url=url, files=files) print(resp.status_code) 方法来源: https://blog.csdn.net/LeonTom/article/details/104006277

[nginx] nginx源码分析--健康检查模块

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-07 21:08:03
健康检查模块 见前文: [nginx] nginx源码分析--健康检查模块 其中有一张框架图, 接下来的内容,将会利用到这个图中的内容。 [classic_tong @ https:////www.cnblogs.com/hugetong/p/12274125.html ] 描述 我们知道nginx是多进程的,每个进程都保存了相同的配置。但是实际上, 并不需要每一个进程对每一个后端服务器进行。 于是健康检查模块在这里需要一个进程间同步机制,用来协商哪一个进程对 哪一个后端服务器进行检查。 接下来,我们将描述这个机制。 分析 该模块采用了owner的概念。在nginx的全局,对每一个后端服务器抽象了一个 “后端服务器检测”的实体,该实体有一个owner属性。该属性的写操作有一个用来 保护临界区的互斥锁。 健康检测是一次次的,所有进程都是设置了timer来激活对每一个后端服务器的健康 检查。timer时间达到后,所有进程会同时来抢锁,抢到锁的进程变得到了对该实体 的本次健康检查权限。随后将自己的PID信息写入owner内。 该实体的数据结构和它的owner放置在共享内存中,由所有进程共享。 数据结构 该锁的数据结构如下: typedef struct { ngx_shmtx_t mutex; ngx_atomic_t lock; ... ... ngx_pid_t owner; ...