源码

如何阅读源码

吃可爱长大的小学妹 提交于 2020-02-11 03:54:14
  首先,要站在超越阅读源码的角度才能够读懂源码;   然后,要明白读源码的几个阶段,首先是要使用明白,在应用层面搞懂这个源码是做什么用的,要能够run起来;   接着是调试阶段,最好是能够Debug,这一点是从《阅读struts源码》中找到灵感,否则因为if分支或者其他原因,很可能陷入误解之中;   在阅读的过程中始终把握两点: 一个是生命周期,一个是职责,一个是关系 ,生命周期首先是大的生命周期,都有哪些核心对象,交互流程怎样,每个阶段都做什么事情;然后是每个类的生命周期,以及职责,职责就是这个类到底是做什么的,比如FDT里面的ControlChannel就是做FDTReaderSession的控制指令传输通道以及对端控制指令的接收器,附带创建之初交换本端的配置信息,如此一来,这个类算是读懂了;最后一个是关系,两个层面,都是核心类都和那些类交互,比例怎么样1:1,还是1:*;   这里强调一点: 就是生命周期可能是多个流程 ,比如在struts里面init是一套流程(生命周期),处理http请求是另外一套;你看到多套流程之后才能够形成清晰而全面的代码业务流   阅读源码第一轮要学会跳着看,源码第一轮要掌握核心类流程以及设计思想,细节地方可以跳过;但是该搞明白的一定要搞明白;跳着看就是把细节,不影响掌握大局的部分先跳过去不管;所谓抓大放小。   读源码要有目的性

yii源码学习心得

核能气质少年 提交于 2020-02-11 03:46:16
1.通过看源代码,对yii的框架学习有了更多的认识和理解 assets 前端资源文件夹,用于管理css js等前端资源文件等 commands 包含命令行命令,文件为控制器文件 config 应用的配置文件 controllers 控制器文件 mail (应用的前后台和命令行的与邮件相关的布局文件等) modles 模型文件 runtime 程序运行时生成的临时文件 tests 用于各种测试程序的测试类文件 vendor 就是各种第三方的程序。 这是Composer安装的其他程序的存放目录,包含Yii框架本身。 如果你向 composer.json 目录增加了新的安装的程序,下次调用Composer的时候, 就会把新安装的目录也安装在这个 vendor 下面。 views 视图文件 web 入口文件的存放目录,对于Web服务器可以访问的目录。其他所有的目录不对Web用户显示。 requirements.php 测试环境是否符合yii框架的要求 yii 文件 它没有扩展名,我们不好知道其具体类型。 但是从文件内容的第一行 #!/usr/bin/env php 来看,这是一个bash脚本。 第一行在告诉bash,也在告诉我们,这是一个使用PHP运行的脚本。 对于Windows系统而言,命令行的入口脚本仍然是 yii ,但是命令行下无法直接运行。所以Yii为我们准备了一个 yii.bat

Android源码编译_真机烧写

半腔热情 提交于 2020-02-11 02:05:40
参考网址: 1、 http://bbs.gfan.com/android-360754-1-1.html http://bbs.gfan.com/android-363492-1-1.html http://bbs.gfan.com/android-365768-1-1.html http://www.eoeandroid.com/forum.php?mod=viewthread&action=printable&tid=97581&_dsign=5788c825 2、 http://m.blog.csdn.net/article/details?id=48197787 要先执行"sudo apt-get update" http://www.cnblogs.com/helloZQP/p/4198588.html 3、 http://wenku.baidu.com/link?url=i6SMhQBbDxsVaDZOcFabqx3Bz73rCL_ctcUu8JQIxpLqI6s4Ld2Wa4hk8te5BEAfjPWrMUTg3CyX-VBPBbDJerqMItUlQpS769HuTLd1gTK C 来源: https://www.cnblogs.com/codeskilla/p/5157675.html

21款网页版html5小游戏源码

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-11 01:11:08
html5魅族创意的贪食蛇游戏源码下载 html5网页版打砖块小游戏源码下载 html5 3D立体魔方小游戏源码下载 html5网页版飞机躲避游戏源码下载 html5三国人物连连看游戏源码下载 js html5 2048数字游戏源码_2048网页版源码下载 html5盲打高手打飞字游戏下载_网页版英文打飞字游戏源码下载 jQuery flappy bird电脑版小游戏源码下载 网页版html5 3d俄罗斯方块游戏源码下载 jQuery html5迷宫游戏源码下载 html5网页游戏仿flappy bird网页版游戏源码下载 html5 canvas网页版切水果游戏源码下载_水果忍者游戏源码下载 html5网页版驴子跳跳游戏代码_驴子跳跳游戏源码下载 jQuery搞笑的打飞机游戏源码下载_网页版飞机大战游戏源码下载 《天机》Javascript网页版飞行射击游戏_单机飞机游戏代码 纯js实现web网页版台球游戏代码下载 原生js制作网页游戏俄罗斯方块儿_俄罗斯方块单击游戏代码 js HTML5 实现网页版植物大战僵尸游戏源码下载 javaScript制作的保卫塔防游戏_守护塔防游戏代码 js HTML5 实现网页版捕鱼达人游戏软件源码下载 js html5游戏开发网页版中国象棋游戏源码下载 来源: https://www.cnblogs.com/jsfoot/p/4758858

ASP .NET CORE 源码地址

自闭症网瘾萝莉.ら 提交于 2020-02-10 23:15:57
ASP .NET CORE 源码地址: https://github.com/dotnet/ 下拉可以查找相应的源码信息, 例如:查找 ASP .NET CORE Microsoft.Extensions.Hosting 源码地址: https://github.com/dotnet/extensions 找到之后,点击 extensions 下载源码之后, 解压缩,之后不要急着点击解决方案,首先要点击批处理文件 , 例如下载 ASP .NET CORE Microsoft.Extensions,我需要打开 ASP .NET CORE Microsoft.Extensions.Hosting的源码的解决方案, 处理方式如下: 1、点击 restore.cmd 批处理文件(恢复初始项目运行需要的环境) 2、点击 build.cmd 批处理文件(编译项目) 3、点击需要查看源码的项目红的 startvs.cmd 批处理文件,即可打开对应的源码 来源: https://www.cnblogs.com/1175429393wljblog/p/12293244.html

设计模式(思路)

怎甘沉沦 提交于 2020-02-10 20:31:23
设计模式七大原则: 单一责任 : 一个类尽量不要拥有太多的责任 接口隔离:接口设计的要尽量小,避免实现一个接口实现了多余的方法 依赖倒转:细节依赖于抽象,抽象不依赖于细节 里氏替换:尽量不要重写父类的方法 开闭原则:对扩展开放,对修改关闭 迪米特法则:最小知道原则,对尽量避免了解其他类的内部实现,减少耦合 合成复用原则:少用继承,而用依赖组合聚合 设计模式六大关系: 依赖 泛化 实现 聚合 组合 关联 创建型设计模式: 单例模式: 饿汉式实现 懒汉式实现 - double-check( 双重判断 ) 静态内部类实现 枚举实现 应用场景 : 需要频繁创建和销毁的对象,创建一次就够用而且需要频繁使用的对象(数据库访问,工具类) 源码中使用: RunTime 类 利用饿汉式单例模式实现, static 静态生成对象,系统调用时直接返回 . 工厂模式: 抽象工厂 : 工厂不只是一个类 而是一个工厂族,由接口定义,具体的想要的工厂实现由子类工厂提供。 源码中使用: Calendar 类 利用简单工厂模式 , 对外提供一个静态方法,用来根据日期和地域生产 Calendar 对象。 满足原则: 开闭原则 原型模式: 浅拷贝 : 实现 cloneable 接口,重写 clone() 方法 . 只会克隆对象的普通属性,如果有引用类型的属性则会都指向同一个地址引用 ( 克隆一个人

如何修改ElementUI源码

荒凉一梦 提交于 2020-02-10 11:08:31
如何修改ElementUI源码 参考官方文档 1.拷贝官方源码-安装 首先将ElementUI的官方源码库clone下来 https://github.com/ElemeFE/element.git cd element npm install 2.修改源码后-重新打包-替换 安装完依赖后运行打包命令npm run dist 执行完成后可以发现根目录下多了lib文件夹,这个文件夹中的文件就是打包后的组件及样式,和我们使用npm install element-ui下载下来的依赖包中的lib文件夹内容相同,也就是我们使用时引用的资源。 目录结构 修改 packages文件夹中存放的就是各种组件源码,可以根据需要去进行修改,修改完成后重新执行npm run dist就会重新打包,覆盖lib文件夹 如果仅仅修改了逻辑部分,没有修改样式的话到这里就完了,如果还想修改源码样式往下看 问题 修改后将lib文件夹中文件替换你项目中/node_module/element-ui/lib中的文件,即可使用你修改后的组件,如果只是修改了逻辑你会发现一切运行正常,但是如果修改了样式你会发现样式没有生效。 /packages/theme-chaik下是elementUI各个组件的样式文件,目录结构如下 image.png 源码中样式采用sass进行预编译

jdk8 hashmap 链表resize 源码分析

妖精的绣舞 提交于 2020-02-10 10:52:17
重点看这部分代码 for (int j = 0; j < oldCap; ++j) { Node<K,V> e; if ((e = oldTab[j]) != null) { oldTab[j] = null; if (e.next == null) newTab[e.hash & (newCap - 1)] = e; else if (e instanceof TreeNode) ((TreeNode<K,V>)e).split(this, newTab, j, oldCap); else { // preserve order Node<K,V> loHead = null, loTail = null; Node<K,V> hiHead = null, hiTail = null; Node<K,V> next; do { next = e.next; if ((e.hash & oldCap) == 0) { if (loTail == null) loHead = e; else loTail.next = e; loTail = e; } else { if (hiTail == null) hiHead = e; else hiTail.next = e; hiTail = e; } } while ((e = next) != null); if (loTail !

Netty5客户端源码解析

妖精的绣舞 提交于 2020-02-10 09:21:26
Netty5客户端源码解析 今天来分析下netty5的客户端源码,示例代码如下: import io.netty.bootstrap.Bootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioSocketChannel; /** * Created by yaojiafeng on 16/1/17. */ public class SimpleClient { public void connect(int port, String host) throws Exception { // 配置客户端NIO线程组 EventLoopGroup group = new NioEventLoopGroup(1); try { Bootstrap b