源码

源码阅读笔记:webbench-1.5

我们两清 提交于 2020-02-29 08:19:49
WebBench是个比较简单的程序,只有两个源文件:webbench.c, socket.c。 对源码重新排版一下,方便阅读: /* * (C) Radim Kolar 1997-2004 * This is free software, see GNU Public License version 2 for * details. * * Simple forking WWW Server benchmark: * * Usage: * webbench --help * * Return codes: * 0 - sucess * 1 - benchmark failed (server is not on-line) * 2 - bad param * 3 - internal error, fork failed * */ #include "socket.c" #include <unistd.h> #include <sys/param.h> #include <rpc/types.h> #include <getopt.h> #include <strings.h> #include <time.h> #include <signal.h> /* * 超时标记,当被设置为 1 时,所有子进程退出 * volatile: * - 让系统总是从内存读取数据, * -

Hive代码组织及架构简单介绍

前提是你 提交于 2020-02-29 06:27:01
hive三个主要组件 Serialzers/Deserialzers(trunk/serde) 此组件允许用户自己开发自定义序列化、反序列化文件解析器,hive自身也内置了一些序列化解析类。 MetaStore(trunk/metastore) 此组件是hive的元数据服务器,用来存放数据仓库中所有表和分区的信息,hive元数据建表sql、升级sql脚本都存放在此目录下。 Query Processor(trunk/ql) 此组件用于解析sql生成map/reduce作业,并按照先后顺序执行他们(hive核心包,熟读此包,可了解hive执行流程核心)。 其他组件 Command Line Interface(trunk/cli) 此组件用于处理命令行提交作业。 Hive Server(trunk/service) 此组件所有对外api接口的服务端(通过thrift实现),可用于其他客户端与hive交互,比如jdbc。 Common(trunk/common) hive基础代码库,hive各个组件信息的传递也是有此包HiveConf类来管理。 Ant Utilities(trunk/ant) 此组件包含一些ant任务需要的基础代码 Scripts(trunk/bin) 此组件包涵hive里的所有脚本,包括hive CLI的脚本。 hive辅助组件 trunk/conf

Spring 源码分析(八)--容器的功能扩展

北战南征 提交于 2020-02-29 05:39:11
经过前面几篇的分析,相信大家对Spring中容器功能有了简单的了解,在前面的章节中我们一直以BeanFactory接口以及它的默认实现类XmlBeanFactory为例进行分析。但是,Spring中还提供了另一个接口ApplicationContext,用于扩展BeanFactory中现有的功能。 ApplicationContext和BeanFactory两者都是用于加载Bean的,但是相比之下,ApplicationContext提供了更多的扩展功能,ApplicationContext包含了BeanFactory的所有功能。绝大多数典型的企业应用和系统,ApplicationContext就是你需要使用的。 首先看看使用这两个不同的类去加载配置文件在写法上的不同。 使用BeanFactory方式加载XML BeanFactory bf = new XmlBeanFactory(new ClassPathResource("beanFactoryTest.xml")); 使用ApplicationContext方式加载XML ApplicationContext bf = new ClassPathXmlApplicationContext("beanFactoryTest.xml")); 一:整体功能分析

STL源码剖析(deque)

夙愿已清 提交于 2020-02-29 03:04:58
deque是一个双向开口的容器,在头尾两端进行元素的插入跟删除操作都有理想的时间复杂度。 deque使用的是分段连续线性空间,它维护一个指针数组(T** map),其中每个指针指向一块连续线性空间。 (map左右两边一般留有剩余空间,用于前后插入元素,具体下面可以看到其实现) 根据上图,可以了解到deque的迭代器的基本定义。 1 template <class T, class Ref, class Ptr, size_t BufSiz> 2 struct __deque_iterator { 3 // 基本型别的定义 4 typedef __deque_iterator<T, T&, T*, BufSiz> iterator; 5 typedef random_access_iterator_tag iterator_category; 6 typedef T value_type; 7 typedef Ptr pointer; 8 typedef Ref reference; 9 typedef size_t size_type; 10 typedef ptrdiff_t difference_type; 11 typedef T** map_pointer; 12 typedef __deque_iterator self; 13 14 // 缓冲区的大小 15 tatic

JDK1.8源码阅读记录lang包AbstractStringBuilder类

时光总嘲笑我的痴心妄想 提交于 2020-02-29 02:57:56
JDK1.8源码阅读记录 JAVA.LANG包 AbstractStringBuilder类 abstract class AbstractStringBuilder implements Appendable , CharSequence Appendable顾名思义,是append()的象征,CharSequence字符序列,有length()、charAt(int index)、subSequence(int start, int end)等常用方法。 变量 /** * 存储字符 */ char [ ] value ; /** * 表示已用字符的长度 */ int count ; 构造方法 /** * 无参构造 */ AbstractStringBuilder ( ) { } /** * 初始化容量 */ AbstractStringBuilder ( int capacity ) { value = new char [ capacity ] ; } 常用方法 /* * 返回已用字符的长度,count */ public int length ( ) { return count ; } /* * 返回value数据可容纳的字符数目,value.length,即容量 */ public int capacity ( ) { return value . length ; }

Ubuntn中获取仓库中的工具源码与构建

↘锁芯ラ 提交于 2020-02-29 02:11:18
如何获取ubuntu源码包里面的源码? 1、在获取源码包之前,确保在软件源配置文件/etc/apt/sources.list中添加了deb-src项 2、使用如下命令获取xxx源码包的详细信息: sudo apt-cache showsrc xxx 这用来查询当前镜像站点中是否有该源码包。 3、源码包中通常包含3个文件,分别以dsc,orig.tar.gz和diff.gz为后缀名。 sudo apt-get source xxx 命令来获取源码包,它会将源码包下载到用户当前目录 并在命令执行过程中,调用dpkg-source命令,根据dsc文件中的信息,将源码包解压到同名目录中,应用程序的源代码就在这里面。 sudo apt-get source xxx 要强调的是,在下载源码包前,必须确保安装了dpkg-dev(执行”apt-get install dpkg-dev”来安装), 否则,只会下载源码包的3个文件,但不会解压缩源码包。当然你也可以自己用dpkg-source命令去解压缩源码包。 4、在编译源码包前,需要安装具有依赖关系的相关软件包。使用”apt-get build-dep”命令可以主动获取并安装所有相关的软件包。 sudo apt-get build-dep xxx 5、现在可以来编译源码包了,首先进入源码所在目录,使用dpkg

Volley源码解析(二)

北城以北 提交于 2020-02-29 01:47:44
上一篇博客介绍了Volley的请求流程,本篇会分别介绍请求过程,缓存过程,回调过程 请求过程 从NetworkDispatcher的run方法开始分析 while ( true ) { Request < ? > request ; try { // Take a request from the queue. request = mQueue . take ( ) ; } catch ( InterruptedException e ) { // We may have been interrupted because it was time to quit. if ( mQuit ) { return ; } continue ; } try { // Perform the network request. NetworkResponse networkResponse = mNetwork . performRequest ( request ) ; // If the server returned 304 AND we delivered a response already, // we're done -- don't deliver a second identical response. if ( networkResponse . notModified &&

【Spring】AOP注解方式实现机制

坚强是说给别人听的谎言 提交于 2020-02-29 01:15:00
一、概述 二、@EnableAspectJAutoProxy 注解分析 三、分析AnnotationAwareAspectJAutoProxyCreator 四、执行流程 1. registerBeanPostProcessors() 2. finishBeanFactoryInitialization() 3. InstantiationAwareBeanPostProcessor后置处理器的执行逻辑 4. 目标方法执行 第一部分,得到拦截器链 第二部分,拦截器链的触发过程 总结 一、概述 在Spring AOP 中: AnnotationAwareAspectJAutoProxyCreator 是基于Bean中的 AspectJ 注解来实现自动代理,在Bean创建的过程中完成对切入点的增强。 Spring AOP 的其他实现方式可以查看 【Spring】 AOP Base 对于 Spring AOP 使用注解的方式中,我们配置开启AOP注解 可以用XML的方式: <!-- 自动生成代理 底层就是AnnotationAwareAspectJAutoProxyCreator --> <aop:aspectj-autoproxy /> 或者用注解的方式 在配置类上标注 @EnableAspectJAutoProxy 注解 import org.springframework

android改机教程

混江龙づ霸主 提交于 2020-02-28 22:30:34
study_Android_Mchange android 系统定制(魔改) 视频教程 第一章 android源码编译与刷机基础 第一课 Pixel刷谷歌官网rom包 第二课 android 4版本源码编译 第三课 Nexus4刷android4.4 第四课 android 8版本源码编译与Pixel刷机 第五课 android 10版本源码编译与Pixel刷机 第六课 android 内核源码编译 第七课 Pixel替换内核 第八课 root教程(第三方root工具) 第二章 调试篇 第一课 app程序调试(系统程序与无源码程序) 第二课 java服务源码调试 第三课 so层c++程序调试(系统程序与无源码程序) 第四课 如何系统开机调试 第五课 内核源码调试 第三章 魔改篇(上) 第一课 自定义root工具之su程序编写 第二课 自定义root工具之安全屏障程序编写 第三课 android10 驱动开发 第四课 运营商信息获取流程分析 第五课 运营商信息修改 第六课 dex加载流程分析 第四章 魔改篇(下) 第一课 主动dump dex 第二课 so加载流程分析 第三课 主动dump so 第四课 进程虚拟内存原理 第五课 内存监控器实现 第六课 文件过滤器与网络过滤器相关 视频持续更新....... 已上传 b站 地址: https://space.bilibili.com

【工程源码】已经安装器件库却报未安装——解决方案

♀尐吖头ヾ 提交于 2020-02-28 22:30:09
本文和设计代码由FPGA爱好者小梅哥编写,未经作者许可,本文仅允许网络论坛复制转载,且转载时请标明原作者。 在软件安装过程中,明明安装了器件库。打开 Quartus II 却显示没有安装的情况: 我们点击YES,指向device所在的目录,安装器件即可。 (点击否,重新安装,发现器件已经变成了不可选状态,无法解决问题。) 来源: CSDN 作者: zgmxs 链接: https://blog.csdn.net/zgmxs/article/details/104562748