源码

迭代器模式与Java Iterator源码

。_饼干妹妹 提交于 2020-02-08 16:13:43
迭代器模式 迭代器模式是一种将集合的增删改操作与集合的顺序遍历操作分离的设计模式。集合只负责增删改操作,迭代器对于集合的内部类,专门负责顺序遍历。Java的Iterator是迭代器模式的经典实现。笔者jdk版本是11.0.4,不同版本的jdk的Iterator相关类及其实现有所不同,下面以jdk11.0.4为例。 Iterator jdk定义了一个 Iterator 接口,声明了 hasNext , next , remove 方法,分别用于检查是否结束遍历、遍历下一个元素、删除元素的操作。 /** * An iterator over a collection. {@code Iterator} takes the place of * {@link Enumeration} in the Java Collections Framework. Iterators * differ from enumerations in two ways: * * <ul> * <li> Iterators allow the caller to remove elements from the * underlying collection during the iteration with well-defined * semantics. * <li> Method names have

曹工说Spring Boot源码(14)-- AspectJ的Load-Time-Weaving的两种实现方式细细讲解,以及怎么和Spring Instrumentation集成

≡放荡痞女 提交于 2020-02-08 15:37:42
写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean Definition到底是什么,咱们对着接口,逐个方法讲解 曹工说Spring Boot源码(3)-- 手动注册Bean Definition不比游戏好玩吗,我们来试一下 曹工说Spring Boot源码(4)-- 我是怎么自定义ApplicationContext,从json文件读取bean definition的? 曹工说Spring Boot源码(5)-- 怎么从properties文件读取bean 曹工说Spring Boot源码(6)-- Spring怎么从xml文件里解析bean的 曹工说Spring Boot源码(7)-- Spring解析xml文件,到底从中得到了什么(上) 曹工说Spring Boot源码(8)-- Spring解析xml文件,到底从中得到了什么(util命名空间) 曹工说Spring Boot源码(9)-- Spring解析xml文件,到底从中得到了什么(context命名空间上) 曹工说Spring Boot源码(10)-- Spring解析xml文件,到底从中得到了什么(context:annotation-config 解析)

阿里云IOT C-SDK 源码分析系列(3):IOT_Linkkit_Connect 接口源码分析

♀尐吖头ヾ 提交于 2020-02-08 10:07:50
从字面意思也能看出 该函数是 设备 向 云服务器 发起连接的功能函数,但是“连接”功能知识它的主要功能,它还实现了一些其他的参数初始化,比如特别重要的 底层 HAL 接口函数的绑定。该函数 原型如下: IOT_Linkkit_Connect 原型 int IOT_Linkkit_Connect(int devid); 接口说明 对于主设备来说, 将会建立设备与云端的通信. 对于子设备来说, 将向云端注册该子设备(如果需要的话), 并添加主子设备拓扑关系 参数说明 参数 数据类型 方向 说明 devid int 输入 设备ID 返回值说明 值 说明 0 成功 < 0 失败 我们还是通过树形结构来分析一下 网关主设备调用 该函数的实现原理: 简单概括的说,IOT_Linkkit_Connect 函数的关键功能是: 1、找到 _mqtt_connection 的地址。 2、执行_mqtt_connection 的 _mqtt_connect 函数,而_mqtt_connect 函数的功能主要有: ① 通过 IOT_MQTT_Construct 实现底层HAL 接口函数的 绑定,并且将 HAL函数集指针 赋值给 全局变量 g_mqtt_client ② 将绑定的底层HAL接口函数集指针 再赋值给 _mqtt_connection->context ③ 然后调用底层 HAL 接口的 TCP

Linux 7上使用源码编译安装PostgreSQL和生成RPM安装包

北城余情 提交于 2020-02-08 09:40:14
原创文章,转载须注明出处。访问我的Github(地址: https://guobo507.github.io )查看最新文章列表。 目录 编译和安装PostgreSQL 创建PostgreSQL RPM安装包 PGDG 中提供了针对多个系统版本都提供了多个版本的 PostgreSQL 的 RPM 安装包,在生产中使用PGDG安装PostgreSQL数据库软件包是非常方便的途径。 在如今国产化、自主可控的浪潮之下,很多时候我们想要在国产的平台、(所谓)国产的操作系统中使用PostgreSQL数据库,大多数时候系统中自带的PostgreSQL版本很可能不符合我们的要求。因此,本文的目的是演示如何在指定平台上编译安装想要的 PostgreSQL 版本?如何使用 PG 源代码在指定的硬件平台上创建该平台专用的 PostgreSQL 的 RPM 安装包? 编译和安装PostgreSQL 本文讨论的是针对RedHat系列Linux(我是用的是 CentOS 7)上的实践,使用的平台也是 x86_64 平台。虽然在该平台可以直接从 PGDG 进行安装,但本文的目的在于演示整个操作的过程。我将以安装PG 12.1版本为例说明。 首先,我的系统环境如下: [root@pgbuild ~]# cat /etc/centos-release CentOS Linux release 7.6.1810

Android WebRTC 音视频开发总结(五)-- webrtc开发原型

℡╲_俬逩灬. 提交于 2020-02-08 09:32:05
这些天基于WebRTC做了个 手机视频监控 的程序,分享出来,供想了解这方面内容的朋友参考。 这个程序最早是广州一家智能穿戴设备公司请我们做的(他们不需要底层源码,也不需要ios版本),之后我们在这个基础上做了很多的扩充和完善. 目前产品基本功能如下: 1, 支持android,ios,PC之间的相互视频(底层通讯模块都是自己开发的). 2, 服务端既可以支持windows部署,也可以支持linux部署. 3, 支持视频监控,语音和文本沟通. 4, 支持扩展到视频教学,多人广播,秀场等等场景. 5, 如需测试程序和部分源码,请发邮件跟我联系. 这里也有另一份文档的测试说明:http://www.cnblogs.com/lingyunhu/p/rtc23.html 来源: https://www.cnblogs.com/lingyunhu/p/3722029.html

查询索引源码

≯℡__Kan透↙ 提交于 2020-02-08 05:49:23
//查询索引 @Test public void searchIndex ( ) throws Exception { //1.创建一个Director对象 Directory directory = FSDirectory . open ( new File ( "E:\\Java_Study\\Lucene\\index" ) . toPath ( ) ) ; //2.创建一个IndexReader对象 IndexReader indexReader = DirectoryReader . open ( directory ) ; //3.创建一个IndexSearcher对象,构造方法中的参数indexReader对象 IndexSearcher indexSearcher = new IndexSearcher ( indexReader ) ; //4.创建Query对象,TermQuery Query query = new TermQuery ( new Term ( "name" , "spring" ) ) ; //5.执行查询,得到一个TopDocs对象 //参数1:查询对象 参数2:查询结果返回的最大记录数 TopDocs topDocs = indexSearcher . search ( query , 10 ) ; //6取查询结果的总记录数

Spark源码解析-Master的启动流程

偶尔善良 提交于 2020-02-08 05:25:14
文章目录 1.main方法 1.1 startRpcEnvAndEndpoint() 1.1.1 create 1.1.2 setupEndpoint() 1.2 Constructor 2. onStart()方法 大致的整体启动流程如下: 1.main方法 在StandAlone模式下,Spark集群中存在两种重要的节点,分别是Master和Worker。那么作为集群管理器的Master到底是怎样启动的呢?我们通过源码来查看一下。 在运行了start-all.sh脚本之后,最终Master类会启动(至于脚本的启动过程在此省略)。 下面是Master的伴生对象的main方法: // 启动 Master 的入口函数 def main ( argStrings : Array [ String ] ) { Utils . initDaemon ( log ) val conf = new SparkConf // 构建用于参数解析的实例 --host hadoop201 --port 7077 --webui-port 8080 val args : MasterArguments = new MasterArguments ( argStrings , conf ) // 启动 RPC 通信环境和 MasterEndPoint val ( rpcEnv , _ , _ ) : (

servlet中RequestDispatcher源码解析及使用

半腔热情 提交于 2020-02-08 04:46:22
servlet中RequestDispatcher源码解析及使用 文章目录 servlet中RequestDispatcher源码解析及使用 一、简介 二、RequestDispatcher 2.1 RequestDispatcher获取 2.2 源码 2.3 转发方法 2.3.1 forward 2.3.2 include 2.3.3 sendRedirect 三、示例 一、简介 RequestDispatcher可以让客户端请求在服务端server中的各个servlet间转发处理。这里结合源码对RequestDispatcher进行介绍。 二、RequestDispatcher RequestDispatcher接收客户端请求,并将它们发送到server中的其它资源(如servlet、html文件、JSP文件)。RequestDispatcher当作对指定路径或名称的服务资源的包装。 2.1 RequestDispatcher获取 RequestDispatcher是通过HttpServletRequest.getRequestDispatcher方法获取的,参数为指定的资源路径,如果路径是相对路径,则相对目录是当前servlet的。HttpServletRequest.getRequestDispatcher方法定义源码如下: public RequestDispatcher

带着萌新看springboot源码8(spring ioc源码 完)

六眼飞鱼酱① 提交于 2020-02-08 04:09:16
  上一节说到实例化了所有的单实例Bean,后面还有一步遍历 12.完成容器刷新(finishRefresh();)    那个和生命周期有关的后置处理器类型是LifecycleProcessor;监听器原理我就不多说了吧(大概原理参考我写的“知识小罐头”)。。。。。         到此为止,ioc容器的源码我就粗略的走了一遍。还是那句话,我这是很简单很粗糙的走了一遍,其中有很多的原理都没有说,要想真的弄懂,我这个只能当个大概的思路,还需要自己去找找其他大牛的教程,试试走走源码,会有意想不到的收获。   下一节估计又要回到springboot的源码了。。。。。嘿嘿嘿!(这一两天看ioc源码看的眼花缭乱,睡觉去。。。) 来源: https://www.cnblogs.com/wyq1995/p/9991886.html

Activiti流程定义缓存源码分析7-流程缓存自定义

笑着哭i 提交于 2020-02-08 04:03:42
接下来,重点看一下Activiti中如何自定义流程缓存。 上面我们提到过自定义类首先需要继承StandaloneProcessEngineConfiguration类并通过动态属性注入方式为引擎配置类注入processDefinitionInfoCache属性值。实现代码如清单x-所示。 代码清单x-MyStandaloneProcessEngineConfiguration.java --------------------------------------------------------------------------------------------------------------------------- MyStandaloneProcessEngineConfiguration.java public class MyStandaloneProcessEngineConfiguration extends StandaloneProcessEngineConfiguration { #-1 //设置processDefinitionInfoCache对象的值 public void setProcessDefinitionInfoCache(ProcessDefinitionInfoCache cache) { super