源码

underscore源码解析

淺唱寂寞╮ 提交于 2020-02-25 18:23:25
前言 underscore是最适合初级人士阅读的源码,在阅读源码时,有一些有趣的实现,记录如下。 基于underscore1.8.3。 留存root // Establish the root object, `window` (`self`) in the browser, `global` // on the server, or `this` in some virtual machines. We use `self` // instead of `window` for `WebWorker` support. var root = typeof self == 'object' && self.self === self && self || typeof global == 'object' && global.global === global && global || this || {}; // Save the previous value of the `_` variable. var previousUnderscore = root._; // ....... _.noConflict = function() { root._ = previousUnderscore; return this; }; 在浏览器情况下,self是window自身的引用

centos7 源码安装nginx

别来无恙 提交于 2020-02-25 18:20:48
1、必要软件准备 yum install -y pcre* yum install -y openssl*yum install -y zlib*  nginx自行下载 http://nginx.org/en/download.html 2、 安装nginx 执行如下命令: # ./configure --prefix=/usr/local/nginx-1.14.0 \ --with-http_ssl_module --with-http_spdy_module \ --with-http_stub_status_module --with-pcre   --with-http_stub_status_module:支持nginx状态查询 --with-http_ssl_module:支持https --with-http_spdy_module:支持google的spdy,想了解请百度spdy,这个必须有ssl的支持 注:nginx 1.9.5 已经没有了 –with-http_spdy_module ,取代的是 –with-http_v2_module --with-pcre:为了支持rewrite重写功能,必须制定pcre 最后输出如下内容,表示configure OK了。 Configuration summary + using system PCRE library +

Spark源码

随声附和 提交于 2020-02-25 18:11:02
Spark版本:2.1.x Spark有许多模式,比如standlone 这里分析Spark on yarn 的部署流程。在这种模式中有几个重要的角色我们列出来。Driver、Executor、AM、NM、RM等,我们将在源码中将这几个组件串联起来,分析在Spark on yarn下这几个组件是如何工作的。 入口 spark-submit 中调用的类为 org.apache.spark.deploy.SparkSubmit 具体分析过程不赘述。 所以我们直接从SparkSubmit 分析,后续的逻辑。 1 % org.apache.spark.deploy.SparkSubmit %% main %%% SparkSubmitArguments(args) 进入main方法SparkSubmitArguments(args)进行参数准备,这是一个class对象,当我们使用new SparkSubmitArguments(args)的时候,其中的所有的代码从上至下依次执行。 %% submit(appArgs) %%% prepareSubmitEnvironment(args) 在这个方法中,返回了方法参数,其中 mainClass代表的参数是org.apache.spark.deploy.yarn.Client %%% Runmain() 此方法中以开启线程的方式

JUC源码分析-PriorityBlockingQueue

坚强是说给别人听的谎言 提交于 2020-02-25 18:10:03
概述 PriorityBlockingQueue:二叉堆结构优先级阻塞队列,FIFO,通过显式的lock锁保证线程安全,是一个线程安全的BlockingQueue,加入队列的数据实例按照指定优先级升序排列,这个规则通过赋值 实现了Comparator的字段或数据实例类实现Comparable接口自定义,都定义的情况下 字段比较器优先。它一个老牌的队列,在JDK1.5已经加入,如果队列加入的数据实例需要排序,这是个不错的选择。 核心属性和数据结构 private static final int DEFAULT_INITIAL_CAPACITY = 11;//默认数组容量 private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;//数组最大容量 private transient Object[] queue;//存储数据的数组 private transient int size;//节点数 统计用 private transient Comparator<? super E> comparator;//比较器,可自定义传入 private final ReentrantLock lock;//重入锁,依赖它实现线程安全 private final Condition notEmpty;//lock创建的

Spring源码学习(5)- springmvc解析

匆匆过客 提交于 2020-02-25 15:50:46
Spring源码学习(5)- springmvc解析 介绍 1.取代web.xml配置 super.onStartup()方法 registerDispatcherServlet()方法 启动spring容器 2.取代springmvc.xml配置 请求之间建立映射关系 dispatcherServlet处理请求 getHandler() getHandlerAdapter mappedHandler.applyPreHandle ha.handle 方法调用 处理返回值 mappedHandler.applyPostHandle processDispatchResult 介绍 SpringMvc是基于servlet规范来完成的一个请求详情模块,也是spring中比较大的一个模块。springmvc使用有两种方式,一种是配置文件的形式;另一个就是注解的形式,这种方法采用的是约定大于配置的方式。完成这个过程,springmvc要解决两个问题。 1.取代web.xml配置 springmvc借助servlet中的一个规范,来完成这个事情 当servlet容器启动的时候,会根据spi规范,在家META-INF/services文件夹里面的 javax.servlet.ServletContainerInitializer 文件,这个文件会实现 javax.servlet

SpringSecurity 初始化流程源码

人走茶凉 提交于 2020-02-25 15:42:08
SpringSecurity 初始化流程源码 本篇主要讲解 SpringSecurity初始化流程的源码部分,包括核心的 springSecurityFilterChain 是如何创建的,以及在介绍哪里可以扩展个性化的配置,SpringSecurity源码其实是蛮难得 各种Builder Configure 看得真的头疼!  1.简单介绍  SpringSecurity 的核心功能主要包括:  认证 (你是谁)  授权 (你能干什么)  攻击防护 (防止伪造身份)  其核心就是一组过滤器链,项目启动后将会自动配置,本篇也会涉及过滤器链是如何自动初始化的。   SecurityContextPersistenceFilter 是最前面的一个filter  请求到它时候会去检查 根据sessionId找到session 判断session 中是否存在 SecurityContext 在 则将 SecurityContext 存入当前的线程中去  响应的时候,看当前线程是否有SecurityContext ,如果有 放入到session中去 这样不同的请求都能拿到相同的 用户认证信息。   UsernamePasswordAuthenticationFilter 该过滤器是处理表单登录的,通过表单登录提交的认证都会经过它处理   SocialAuthenticationFilter

afl-fuzz技术初探

人盡茶涼 提交于 2020-02-25 14:46:16
afl-fuzz技术初探 转载请注明出处:http://www.cnblogs.com/WangAoBo/p/8280352.html 参考了: http://pwn4.fun/2017/09/21/AFL%E6%8A%80%E6%9C%AF%E4%BB%8B%E7%BB%8D/ http://blog.csdn.net/youkawa/article/details/45696317 https://stfpeak.github.io/2017/06/12/AFL-Cautions/ http://blog.csdn.net/abcdyzhang/article/details/53487683 在计算机领域,Fuzz Testing(模糊测试)是一种很有效的测试方法,主要原理为构造一系列“坏”数据传入应用程序,通过判断程序是否发生异常发现和检测潜在的bug.而在安全领域引入fuzz技术,无疑可以使安全研究员效率倍增,更有效的挖掘和防护漏洞。 AFL(American Fuzzy Lop)是目前最高级的Fuzzing测试工具之一,由lcamtu开发.当需要测试的程序有源码时,AFL通过对源码重新编译时插桩(插入分析代码)的方法来探测程序内部的执行路径.相对于其他fuzzer,AFL-Fuzz具有更低的性能消耗,更有效的fuzzing策略和tricks最小化技巧

springMvc源码学习之:利用springMVC随时随地获取HttpServletRequest等对象

点点圈 提交于 2020-02-25 12:34:02
一、准备工作: 在web.xml中添加 [html] view plain copy < listener > < listener-class > org.springframework.web.context.request.RequestContextListener </ listener-class > </ listener > 二、使用方法: 1、方法一:通过代码实现 [java] view plain copy HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(); 2、方法二:通过注解实现: [java] view plain copy @Autowired private HttpServletRequest request; 三、关于RequestContextListener的背景知识: Request作用域 <bean id="loginAction" class="com.foo.LoginAction" scope="request"/> 针 对每次HTTP请求,Spring容器会根据loginAction bean定义创建一个全新的LoginAction bean实例

ThreadLocal源码分析(简单)

本小妞迷上赌 提交于 2020-02-25 01:33:28
ThreadLocal的三个常用接口set(T value)、get()、remove(); set: public void set(T value) { Thread t = Thread.currentThread(); //这个代码不用看,就是返回thread的一个属性threadLocals ThreadLocalMap map = getMap(t); if (map != null) //增加 map.set(this, value); else //新建 createMap(t, value); } void createMap(Thread t, T firstValue) { t.threadLocals = new ThreadLocalMap(this, firstValue); } ThreadLocalMap(ThreadLocal<?> firstKey, Object firstValue) { //建一个16长度的数组 table = new Entry[INITIAL_CAPACITY]; //对threadLocalHashCode求INITIAL_CAPACITY的余数,平时 int i = firstKey.threadLocalHashCode & (INITIAL_CAPACITY - 1); //Entry是弱应用,在这不展开

.NET Core 3.0之深入源码理解Startup的注册及运行

房东的猫 提交于 2020-02-25 00:34:21
原文: .NET Core 3.0之深入源码理解Startup的注册及运行 写在前面 开发.NET Core应用,直接映入眼帘的就是Startup类和Program类,它们是.NET Core应用程序的起点。通过使用Startup,可以配置化处理所有向应用程序所做的请求的管道,同时也可以减少.NET应用程序对单一服务器的依赖性,使我们在更大程度上专注于面向多服务器为中心的开发模式。 目录: Startup讨论 Starup所承担的角色 Startup编写规范 ConfigureServices Configure 扩展Startup方法 深入源码查看Startup是如何注册和执行的 UseStartup源码 创建Startup实例 ConfigureServices和Configure Startup讨论 Starup所承担的角色 Startup作为一个概念是ASP.NET Core程序中所必须的,Startup类本身可以使用多种修饰符(public、protect,private、internal),作为ASP.NET Core应用程序的入口,它包含与应用程序相关配置的功能或者说是接口。 虽然在程序里我们使用的类名就是Startup,但是需要注意的是,Startup是一个 抽象概念 ,你完全可以名称成其他的,比如MyAppStartup或者其他的什么名称