源码

Apache Camel源码研究之CamelInternalProcessor

扶醉桌前 提交于 2020-02-01 00:23:47
之前博客 Apache Camel源码研究之启动 限于篇幅和论述重点的原因,对很多关键性问题只是进行了概述或者根本没有提及,本篇博客正是对其进行补充性完善。 1. 概述 在之前的博客 Apache Camel源码研究之启动 中我们介绍了Apache Camel初始化启动时的全局逻辑,并顺带部分介绍了Apache Camel执行运行时逻辑时其组件类 CamelInternalProcessor 起到的关键性作用。本文接下来的部分将再次尝试剖析 CamelInternalProcessor 类,意图给读者一个更高清晰的认识,降低理解的入门门槛,做到应用时的胸有成竹。 2. 解读 首先我们借用下上一篇博客 Apache Camel源码研究之Error Handler 的测试用例代码。 强烈建议结合本文下一小节的流程图进行对照理解 。 CamelTestUtil . defaultPrepareTest2 ( new RouteBuilder ( ) { @Override public void configure ( ) throws Exception { // 省略Error Handler配置部分 . . . from ( "stream:in?promptMessage=Enter something:" ) // . process (

Scrapy项目 - 项目源码 - 实现腾讯网站社会招聘信息爬取的爬虫设计

倾然丶 夕夏残阳落幕 提交于 2020-01-31 23:39:35
1.tencentSpider.py # -*- coding: utf-8 -*- import scrapy from Tencent.items import TencentItem #创建爬虫类 class TencentspiderSpider(scrapy.Spider): name = 'tencentSpider'#爬虫名字 allowed_domains = ['tencent.com']#容许爬虫的作用范围 # 定义开始的URL offset = 0 url = 'https://hr.tencent.com/position.php?&start=' #urll='#a' start_urls = [url + str(offset)] # 爬虫开始的URL def parse(self, response): # 继承 item = TencentItem() # 根节点 movies = response.xpath("//tr[@class='odd']|//tr[@class='even']") for each in movies: item['zhiwei']=each.xpath(".//td[@class='l square']/a/text()").extract()[0] item['lianjie'] = each.xpath("./

String、Long 源码解析和面试题

吃可爱长大的小学妹 提交于 2020-01-31 22:50:14
1 String 1.1 不变性 我们常常听人说,HashMap 的 key 建议使用不可变类,比如说 String 这种不可变类。这里说的不可变指的是类值一旦被初始化,就不能再被改变了,如果被修改,将会是新的类,我们写个 demo 来演示一下。 String s = "hello" ; s = "world" ; 从代码上来看,s 的值好像被修改了,但从 debug 的日志来看,其实是 s 的内存地址已经被修改了,也就说 s =“world” 这个看似简单的赋值,其实已经把 s 的引用指向了新的 String,debug 的截图显示内存地址已经被修改,两张截图如下: 我们从源码上查看一下原因: public final class String implements java . io . Serializable , Comparable < String > , CharSequence { /** The value is used for character storage. */ private final char value [ ] ; } 我们可以看出来两点: 1、String 被 final 修饰,说明 String 类绝不可能被继承了,也就是说任何对 String 的操作方法,都不会被继承覆写; 2、String 中保存数据的是一个 char 的数组

bootstrap概述

◇◆丶佛笑我妖孽 提交于 2020-01-31 22:14:58
前面的话   Bootstrap是简单、灵活的用于搭建WEB页面的HTML、CSS、Javascript的工具集。Bootstrap基于HTML5和CSS3,具有漂亮的设计、友好的学习曲线、卓越的兼容性,还有12列响应式栅格结构,丰富的组件等等。按照官网的宣传来说,Bootstrap 是最受欢迎的 HTML、CSS 和 JS 框架,用于开发响应式布局、移动设备优先的 WEB 项目。本文将介绍Bootstrap概述 引入   在传统前端开发过程中,常常出现重复、复杂、无意义地命名,结构冗余、胡乱嵌套,页面错乱等问题   2011年,twitter的“一小撮”工程师为了提高他们内部的分析和管理能力,用业余时间为他们的产品构建了一套易用、优雅、灵活、可扩展的前端工具集--BootStrap。Bootstrap由MARK OTTO和Jacob Thornton所设计和建立,在github上开源之后,迅速成为该站上最多人watch&fork的项目。大量工程师踊跃为该项目贡献代码,社区惊人地活跃,代码版本进化非常快速,官方文档质量极其高(可以说是优雅),同时涌现了许多基于Bootstrap建设的网站:界面清新、简洁,要素排版利落大方   Bootstrap最新版本是Bootstrap4,稳定版本是Bootstrap3,兼容低版本IE的版本是Bootstrap2   

Virtualbox源码分析14 Emulation manager1

你说的曾经没有我的故事 提交于 2020-01-31 21:38:22
EM : Execution Monitor / Manager 负责运行VM、调度正确的执行类型((Raw-mode, Hardware Assisted, Recompiled orInterpreted),并保持CPU状态同步。EMR3ExecuteVM函数是虚拟机的“主循环”,而每个执行模式具有不同的内部循环(emR3RawExecute、emR3HmExecute和emR3RemExecute)。 本篇先介绍初始化/结束 APIs和Execution loop 14.1 Execution Manger Inits/Term函数 VMMR3_INT_DECL ( int ) EMR3Init ( PVM pVM ) { PCFGMNODE pCfgRoot = CFGMR3GetRoot ( pVM ) ; PCFGMNODE pCfgEM = CFGMR3GetChild ( pCfgRoot , "EM" ) ; CFGMR3QueryBoolDef ( pCfgEM , "IemExecutesAll" , & pVM - > em . s . fIemExecutesAll , false ) ; //如果没有设置TripleFaultReset,当VMX发生triple fault的时候,会显示一个错误的界面 //如果配置里设置了TripleFaultReset

jQuery源码之构造jQuery对象——jQuery.fn.init(selector, context, root)

落花浮王杯 提交于 2020-01-31 16:00:51
jQuery.fn.init()负责解析参数selector和context的类型,并执行相应的逻辑,最后返回jQuery.fn.init()的实例。 支持12种类型,如下所示: selectort可以转换成false,示例:$(""), $(null), $(undefined), $(false)。 selectort为DOM元素,示例:$(DOMElement)。 selectort为字符串,具体为"body",示例:$('body')。 selectort为字符串,具体为”单独标签“,示例:$('<div>')。 selectort为字符串,具体为”复杂HTML代码“,示例:$('<div>abc</div>')。 selectort为字符串,具体为”#id“,context为undefined,示例:$('#id')。 selectort为字符串,具体为”选择器表达式“,context为undefined,示例:$('div p')。 selectort为字符串,具体为”选择器表达式“,context为jQuery对象,示例:$('div p',$('#id'))。 selectort为字符串,具体为”选择器表达式“,context为DOM元素,示例:$('div p',this)。 selectort为函数,示例:$(function(){})。

java源码学习环境搭建

北战南征 提交于 2020-01-31 10:28:32
1.找到jdk的安装目录 2.找到src.zip,里面就是java源码,解压到你指定的环境 3.选择一个合适的编辑器打开文件夹 如:SublimeText或者VScode 接着,开始源码阅读之旅 来源: CSDN 作者: 7900X 链接: https://blog.csdn.net/Code_7900x/article/details/104121218

Linux Kernel 2.6.9源码分析 -- accept

冷暖自知 提交于 2020-01-31 03:20:25
Linux Kernel 2.6.9源码分析 – accept 先来看一下原型:int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen) sockfd :这个套接字用来监听一个端口,当有一个客户与服务器连接时,它使用这个一个端口号,而此时这个端口号正与这个套接字关联。当然客户不知道套接字这些细节,它只知道一个地址和一个端口号。 addr :这是一个结果参数,它用来接受一个返回值,这返回值指定客户端的地址,当然这个地址是通过某个地址结构来描述的,用户应该知道这一个什么样的地址结构。如果对客户的地址不感兴趣,那么可以把这个值设置为NULL。 len :如同大家所认为的,它也是结果的参数,用来接受上述addr的结构的大小的,它指明addr结构所占有的字节个数。同样的,它也可以被设置为NULL。 下面来看看系统调用sys_accept asmlinkage long sys_accept ( int fd , struct sockaddr __user * upeer_sockaddr , int __user * upeer_addrlen ) { struct socket * sock , * newsock ; int err , len ; char address [ MAX_SOCK_ADDR ] ;

dubbo源码分析 -- dubbo的SPI机制

▼魔方 西西 提交于 2020-01-31 00:33:40
概念 在dubbo的整体结构中,除了service层和config层,其他各层都支持自定义扩展。而自定义扩展的实现,就是dubbo实现的一套类似SPI的扩展点加载机制。在这个机制中,ExtensionLoader是核心类。 组件 ExtensionLoader dubbo SPI机制的主要使用入口,基本就是通过这个类来使用和实现SPI机制的 ExtensionFactory dubbo的SPI机制,具备Ioc的功能特性。其实现主要由ExtensionFactory支持。大概的逻辑就是,如果某个组件具有setXX方法,则会通过ExtensionFactory为其注入依赖。ExtensionFactory在dubbo中,就类似与spring的BeanFactory,算是一种容器。 接口定义 @SPI //本身也支持dubbo的扩展点机制 public interface ExtensionFactory { //获取扩展类 < T > T getExtension ( Class < T > type , String name ) ; } 子类 SpringExtensionFactory:关联了spring的ApplicationContext SpiExtensionFactory:通过dubbo自己的SPI机制,读取指定目录下的文件

runtime源码阅读笔记

别说谁变了你拦得住时间么 提交于 2020-01-30 23:19:22
malloc_size 函数是返回操作系统实际分配的内存大小,传入参数为指针。 void *p = xxxmalloc_size(p) NSObject.h NSObject的接口函数,这个可以做位阅读的入口 NSObject的实现在 NSObject.mm这个文件中。底层的方法调用,如 object_getMethodImplementation 等,是在 objc-class.mm , objc-runtime-new.mm文件中 接口的官方文档 https://developer.apple.com/documentation/objectivec/objective-c_runtime?language=objc 来源: https://www.cnblogs.com/huangzizhu/p/12244145.html