源码

Spring5源码分析(一):Spring 5 源码下载 & 导入IDEA

核能气质少年 提交于 2020-03-12 11:30:51
首先你的JDK 需要升级到1.8 以上。Spring3.0 开始,Spring 源码采用 github 托管,不再提供官网下载链接。大家可自行去 github 网站下载。 本专题使用 Spring 5.0.2 版本分析,此处提供下载地址: https://github.com/spring-projects/spring-framework/archive/v5.0.2.RELEASE.zip 。 由于Spring 5 以后都是采用 Gradle 来编译,所以构建源码前我们需要先安装Gradle 环境。接下来让我们完成 Spring 5.0.2源码的构建过程。 1.解压源码包 2.安装 Gradle 此处安装 Gradle-4.3.1 版本,官网推荐使用这一版本。Gradle 下载地址: https://gradle.org/releases/ ,安装完成之后,需要进行环境变量配置。 2.1 解压 2.2 环境变量配置 2.3 检测 Gradle 是否安装成功 cmd 命令行,输入命令: gradle -v 3.Spring源码编译 进入源码解压后的目录,在文件中双击 gradlew.bat 批处理文件,编译过程很快。如下图所示 编译成功后会自动退出,编译成功如下图所示: 4. 转换为 eclipse 项目 找到 import-into-eclipse.bat 文件双击执行

Vue-Router 源码解析(四) Vue内this.$router和this.$route的区别

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-12 08:33:33
对于Vue内部来说,不管是根组件还是子组件,都存在this.$router和this.$route两个属性,它们的区别如下: $router    指向当前的VueRouter实例,也就是new Vue({router:router})这里传入的router实例对象,可以使用上一节里列出的VueRouter实例的属性和方法, $route   指向当前跳转的路由对象,是一个包含当前的路由信息的对象, <router-view/>组件会通过这个属性来获取需要渲染的组件 对于$router来说,它包含了如下属性 path ;当前路由的路劲,总是解析为绝对路劲 ;例如:/foo/bar params ;对象类型,包含了动态片段和全匹配片段,如果没有路由参数就是一个空对象 query ;对象类型,表示URL查询参数,对于/foo/user=1来说,$route.query.user等于1,如果没有查询参数,则是个空对象 hash ;当前路由的hash值(带#),如果没有hash值,则为空字符串 fullPath ;解析完成后的URL,包含查询参数和hash的完整路劲 matched ;一个数组,包含当前路由的所有嵌套路劲片段的路由记录,也就是所有父路由对象都在这个数组里面,<router-view/>组件会用到这个属性 name ;当前路由的名称 ;和命名别名有关

全文本代码着色(带源码和示例)

喜你入骨 提交于 2020-03-12 06:58:01
写了一个全文本的C#代码着色器,不采用任何图片,因为事先没有参考任何已有着色器源码,可能有些地方实现的不是很优雅,如果谁手里有其他着色器的源码,望多交流! 完整源码下载地址: http://teddy.51.net/products/HtmlCodeColor.rar 代码示例: using System; using System.Text.RegularExpressions; namespace CN.Teddy.Util.HtmlCodeColor { /// <summary> /// C#代码着色适配器 /// </summary> public class CSharpAdapter : ICodeColorAdapter { + Constructors public CSharpAdapter() { //null } - #endregion + Private Members /// <summary> /// 为//和/**/类型的注释着色 /// </summary> /// <param name="src"> 输入源码 </param> /// <returns> 格式化后的源码 </returns> private string ColorBasicComment( string src) { string retCode = src; Regex

Discuz! 移动端开发笔记-API篇(一)——获取主题列表中帖子的缩略信息

北城以北 提交于 2020-03-12 06:42:50
一、背景 因为去年掌上论坛的app、小程序和API都开源了,解决了之前想开发移动端Dz应用而没有API的痛点。故最近打算抽空用uin-app做一下Dz的移动端开发。 Discuz!掌上论坛APP 源码免费下载体验 研究的API的时候发现获取主题列表的API只能获取到帖子的作者、标题及附件列表等信息,但是没有帖子的简介(即帖子内容的前几句话)。 这将使得用户不能在点进帖子前了解帖子内容,用户体验较差,故决定修改API源码使之支持获取帖子简介。 二、代码 在小程序源码的 /config.js 文件中找到了 获取帖子列表的API为 ${indexUrl}module=forumguide&view=newthread&version=5 . 故可以得知该API的源码是 站点根目录/source/plugin/mobile/api/5/forumguide.php 文件: <?php /** * [Discuz!] (C)2001-2099 Comsenz Inc. * This is NOT a freeware, use is subject to license terms * * $Id: hotthread.php 34314 2014-02-20 01:04:24Z nemohou $ */ if(!defined('IN_MOBILE_API')) { exit(

学习Pushlet(二):看源码了解pushlet

雨燕双飞 提交于 2020-03-12 04:01:56
首先我们需要去了解一下pushlet的代码,从而进行我们自己的自定义需求,首先我们找到我们写的后台服务,有两个方法一个设置睡眠时间和生成事件,那么到底有什么用呢,哪里用到了呢。我们将从官网下载的源码也放入到项目中去,我们进入到HelloWorldPlushlet继承的EventPullSource类里面,原来它继承了Runnable,是个线程,那么查看run方法:发现这里用到了我们自定义的两个方法,通过设置的睡眠时间让线程睡眠,一个通过生成事件的方法生成事件并且发布出去,那么到这里我们大概明白了,原来pushlet后台是生成了一个线程,这个线程不断生成事件并且发布出去,然后睡眠,一直循环。这就是生产信息的那个线程。 /** * Main loop: sleep, generate event and publish. */ public void run() { Log.debug(getClass().getName() + ": starting..."); alive = true; while (alive) { try { Thread.sleep(getSleepTime()); // Stopped during sleep: end loop. if (!alive) { break; } // If passivated wait until we get //

MyBatis源码解析-搭建调试环境

前提是你 提交于 2020-03-12 02:43:52
MyBatis源码解析-搭建调试环境 1. 相关工具 Maven Git JDK1.8 IntelliJ IDEA 2. 源码拉取 一般来说,我们直接从https://github.com/mybatis/mybatis-3 Fork到自己的仓库中,为什么要Fork呢?我们在之后的源码分析中,我们可能会加一些注释,英文翻译一波,方便自己理解,也方便自己自由提交。 版本:3.5.4-SNAPSHOT 3. 调试 啥也不多说,咱们直接看单元测试结构,除了 autoconstructor 这个包下是整体调试以外,其他的都是各个模块的单元测试。那咱们直接就从 org.apache.ibatis.autoconstructor 这个包下开始调试。 从这个包下主要包含下面几部分,如图所示: MyBatis的配置文件:mybatis-config.xml SQL文件: CreateDB.sql 映射及配置:AutoConstructorMapper.java AutoConstructorMapper.xml 实体类:AnnotatedSubject.java BadSubject.java ExtensiveSubject.java PrimitiveSubject.java 测试类:AutoConstructorTest.java 3.1 MyBatis的配置文件 见 mybatis

MyBatis源码解析 - 解析器模块

依然范特西╮ 提交于 2020-03-12 02:43:12
MyBatis源码解析 - 解析器模块 1. 前言 在MyBatis中涉及多个xml文件,解析这些xml文件自然离不开解析器。本文就来分析一下解析器模块。 2. 准备工作 xml常见的解析方式分为以下三种: DOM ( Document Object Model)解析方式 SAX (Simple APIfor XML)解析方式 StAX( Streaming API for XML)解析方式 - JDK 6.0版本开始,JDK开始支持 详细的解析xml学习可以参考 Java解析XML 在这里我们需要重点看下DOM解析,DOM解析主要的好处就是易于编程,可以跟根据需求在树形结构的各个节点之间导航。 3. XPathParser MyBatis 在初始化过程中处理 mybatis-config.xml 以及映射文件时使用的是DOM解析方式,并结合使用XPath解析XML配置文件。DOM会将整个XML文档加载到内存中形成数据结构。 XPathParser类封装了XPath 、Document和EntityResolver 依赖关系如图所示 XPathParser中字段含义和功能如下 private final Document document; //Document 对象 private boolean validation; //是否开启校验 private

MyBatis源码解析 - 反射模块

徘徊边缘 提交于 2020-03-12 02:42:01
MyBatis源码解析 - 反射模块 1. 前言 ​ 该模块位于 org.apache.ibatis.reflection 包中,MyBatis在进行参数处理、结果映射等操作时,会涉及大量的反射操作。Java 中的反射虽然功能强大,但是代码编写起来比较复杂且容易出错,为了简化反射操作的相关代码,MyBatis提供了专门的反射模块,它对常见的反射操作做了进一步封装,提供了更加简洁方便的反射API。本节就来为读者介绍该模块中核心代码的实现。 2. Reflector Reflector 是MyBaits中反射模块的基础,Reflector中缓存了很多反射操作需要使用的元数据。各个字段如下: private final Class<?> type; //对应的class类型 private final String[] readablePropertyNames; //可读属性的名称集合,可读属性就是存在相应getter方法的属性 private final String[] writablePropertyNames; //可写属性的名称集合,可写属性就是存在相应setter方法的属性 //记录了属性相应的setter方法,key是属性名称,value 是Invoker对象,它是对setter方法对应 // Method 对象的封装 private final Map<String,

Spring Aware接口执行时机源码深度解读

我只是一个虾纸丫 提交于 2020-03-12 02:17:17
Spring Aware接口执行时机源码深度解读 Spring中有这样一种标记接口的存在Aware,只要是spring管理的bean实现了Aware接口,那么spring就会在bean创建的某个时机将相应的资源注入到该spring bean中,比如ApplicationContextAware, 会将spring 应用上下文ApplicationContext自动注入到bean中。 //Spring Aware标记接口 public interface Aware { } Spring内建的Aware接口 Spring 内建的Aware大概分为以下几种 Spring core 和 context的内建Aware接口 ApplicationEventPublisherAware MessageSourceAware ResourceLoaderAware BeanFactoryAware EnvironmentAware EmbeddedValueResolverAware ImportAware LoadTimeWeaverAware BeanClassLoaderAware BeanNameAware ApplicationContextAware Spring web内建的Aware接口 ServletContextAware ServletConfigAware

集合相关的常用工具类

半城伤御伤魂 提交于 2020-03-11 14:47:21
1. 简介 Java中的集合类既可以当做放其他数据的容器,又可以当做常见的数据结构使用。Java中提供了很多好用的工具类来操作这些集合类。本篇博客就来介绍下常用的集合工具类。集合常用的工具类大体可以分为3类: JDK本身提供的工具类; Guava提供的工具类; Apache common-Collection提供的工具类 2. JDK提供的工具类 主要由下面三个: Arrays Collections Objects Arrays 是操作数组对象的工具类, Collections 是操作集合对象的工具类。 Objects 是操作引用数据类型对象的工具类。 Arrays的常用方法: 普通 排序 : Arrays.sort(int[] a) Arrays.sort(int[] a, int fromIndex, int toIndex) 其他非boolean基础数据类型的数组对象以及实现Comparable接口的类的数组对象均有此方法。 并行排序 :JDK1.8新增。 Arrays.parallelSort(int[] a) Arrays.parallelSort(int[] a, int fromIndex, int toIndex) 其他非boolean基础数据类型的数组对象以及实现Comparable接口的类的数组对象均有此方法。 并行计算 :JDK1.8新增,支持函数式编程