源码

文件包含漏洞---php协议

扶醉桌前 提交于 2020-02-07 18:45:25
一、原理   1、概念:在php代码中,总会有一些代码我们会经常用到,这时引入了文件包含函数,可以通过文件包含函数把这些代码文件包含进来,直接使用文件中的代码,这样提高了我们的工作效率。   2、文件包含函数:     include():如果发生错误,会产生一个警告然后继续执行脚本     include_once():与include()相同,如果文件之前被包含过则不再包含     require():会停止执行代码     require_once():如果文件之前被包含过则不再包含   3、类型:本地文件包含、远程文件包含(url的形式进行)    配置文件参数:allow_url_fopen:为ON时,能读取远程文件,           Allow_url_include:为ON时,就可以使用include和require等方式包含远程文件   4、利用方式——伪协议     # file://  协议用户访问本地文件系统,使用方法:?file:// [文件的绝对路径和文件名]     # php://input  可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行     # php://filter  元封装器,读取源代码并以base64编码方式输出     # zip://, bzip2://, zlib://   属于压缩流

从源码分析开始理解Thread和Runnable的使用

别来无恙 提交于 2020-02-07 18:33:07
众所周知,在Java高级开发里面,多线程会经常被使用。通常有2种方式去启动一个新线程: 定义一个Thread的子类,在子类中重写run方法。 定义一个类实现Runnable接口,重写run方法;然后通过新建线程去执行。 前者是完全独立的线程,可以直接运行;后者不可以直接运行,必须通过Thread线程去运行。当需要多个线程去完成同一个任务时,一般建议使用第二种方法,具体的方法网上到处都有介绍,在此就不多说了。本文主要从源码的角度分析一下这两者之间的区别。 首先我们看Runnable接口的实现: @FunctionalInterface public interface Runnable { /** * When an object implementing interface <code>Runnable</code> is used * to create a thread, starting the thread causes the object's * <code>run</code> method to be called in that separately executing * thread. * <p> * The general contract of the method <code>run</code> is that it may * take any

源码安装LAMP架构

為{幸葍}努か 提交于 2020-02-07 14:14:00
一、 实验目的 通过源码部署LAMP环境并在此基础上部署phpmyadmin 二、 实验内容 在虚拟机中搭建网络YUM仓库,依次安装httpd php php-server mysql(mairadb)及各自的依赖的库和相关的工具包,并分别验证php和httpd的勾连,php和mysql的勾连,之后在网页根路径部署phpmyadmin,在浏览器验证即可, 三、 实验环境与准备 一台Centos6虚拟机,网卡设置为桥接模式,并连接xshell 四、 实验分析与设计思路 在Centos6搭建LAMP架构,首先搭建网络YUM仓库,并关闭防火墙和selinux机制,安装httpd php mariadb及php结合数据库的驱动模块,并进行安装php所依赖的库和相关工具包,更改httpd主配置文件,让索引页支持php,并编写php测试页,在浏览器上验证php和httpd的勾连,之后将数据库的主配置文件修改,启动数据库服务,可以查看3306端口是否监听,编写测试页,验证php和mariadb数据库的勾连。继续在Centos7上部署discuz论坛项目,把项目zip包拉到服务器中,解压之后出现的upload目录移动到网页根路径下,之后创建用户来管理discuz对应的bbs数据的所有数据,在浏览器上开始部署论坛项目,根据指示进行操作即可 五:主要实验过程 实验一:在Centos-6搭建LAMP架构

Python源码——Excel读

我怕爱的太早我们不能终老 提交于 2020-02-07 12:37:09
Excell 文件---选项---公式---R1C1样式 CMD安装 xlrd pip install xlrd -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com 源码———— import xlrd xlsx = xlrd.open_workbook('D:\地址表.xlsx') table = xlsx.sheet_by_index(0) #table = xlsx.sheet_by_name("地址表") print(table.cell_value(1,2)) print(table.cell(1,2).value) print(table.row(1)[2].value) 来源: https://www.cnblogs.com/guowei2020/p/12272524.html

Python源码---Excell写

拈花ヽ惹草 提交于 2020-02-07 12:34:52
CMD安装 xlwt pip install xlwt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com 源码———— import xlwt new_workbook = xlwt.Workbook() worksheet = new_workbook.add_sheet('new_test') worksheet.write(0,0,'test') new_workbook.save('d:/test.xls') 来源: https://www.cnblogs.com/guowei2020/p/12272528.html

Spring AOP的使用及源码解读 (一)

ε祈祈猫儿з 提交于 2020-02-07 11:13:12
前言 AOP[底层是动态代理]为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。(百度百科的解释) 其实按通俗话理解就是对我们的方法进行增强。也就是在我们执行方法的前,后,结束返回等情况增加相应的通知(在Java中的表现就是相应的控制台打印) 1.创建相关AOP的应用实例(如何用?) 我们编写相关spring AOP的实例的时候,首先要编写一个业务类如Calculator(这个类就是我们要进行切面增强的类),还有一个相关的切面类如LogAspects (这个类主要是对我们业务类的方法进行增强)和一个最重要的配置类如Cap10MainConfig(对相关bean注入的一个声明) (1)记得在编写前导入相应的依赖(在Maven工程中的pom.xml下) <!-- 使用AOP需要导入 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>5.0.6.RELEASE</version> </dependency> (2)编写业务类(Calculator.class) package com.enjoy.cap10.aop; public

JDK源码看Java域名解析

自古美人都是妖i 提交于 2020-02-07 10:45:31
前言 在互联网中通信需要借助 IP 地址来定位到主机,而 IP 地址由很多数字组成,对于人类来说记住某些组合数字很困难,于是,为了方便大家记住某地址而引入主机名和域名。 早期的网络中的机器数量很少,能很方便地通过 hosts 文件来完成主机名称和 IP 地址的映射,这种方式需要用户自己维护网络上所有主机的映射关系。后来互联网迅猛发展起来,hosts 文件方式已经无法胜任,于是引入域名系统(DNS)来解决主机名称和 IP 地址的映射。 局域网中常用来表示 IP 地址的名称更多称为主机名,而互联网上用来表示 IP 地址的名称更多称为域名。核心内容都相同,都是解决名称和 IP 地址间的映射。 Java 中提供了很多互联网主机名称和地址操作相关的接口,现在来看看 JDK 内部对域名解析相关功能的实现。其实,InetAddress 类内部存在一个 NameService 内部接口用于实现域名及IP的映射。 对于 JDK 主要使用了两种映射解析方案,一种是 hosts 文件机制,另外一种是操作系统自带的解析方案。 相关类 [Java] 纯文本查看 复制代码 ? 1 2 3 --java.lang.Object --java.net.InetAddress$HostsFileNameService --java.net.InetAddress$PlatformNameService

STL源码剖析之slist

烈酒焚心 提交于 2020-02-07 10:05:04
我们都知道list的底层实现是双向链表,今天我们就讲一讲底层为单向链表的slist,其实现比较简单。 listnode.h template<typename T> struct ListNode { T value; ListNode<T>* next; public: ListNode(const T _value) :value(_value) {}; }; listiterator.h #include"listnode.h" template<typename T> class ListIterator { public: typedef T Value_type; typedef T* Pointer; typedef T& Reference; public: ListIterator() :node(nullptr) {}; ListIterator(ListNode<T>* _node) :node(_node) {}; ~ListIterator() { if (node) delete node; }; public: bool operator==(const ListIterator<T>& listiterator)const; bool operator!=(const ListIterator<T>& listiterator)const; T&

redis源码之压缩列表ziplist

谁说我不能喝 提交于 2020-02-07 09:59:08
压缩列表ziplist 1.简介 连续,无序的数据结构。压缩列表是 Redis 为了节约内存而开发的, 由一系列特殊编码的连续内存块组成的顺序型(sequential)数据结构。 2.组成 属性 类型 长度 用途 zlbytes uint_32t 4B 记录整个压缩列表占用的内存字节数:在对压缩列表进行内存重分配, 或者计算 zlend的位置时使用 zltail uint_32t 4B 记录压缩列表表尾节点距离压缩列表的起始地址有多少字节:通过这个偏移量,程序无须遍历整个压缩列表就可以确定表尾节点的地址。 zllen uint_16t 2B 记录了压缩列表包含的节点数量: 当这个属性的值小于UINT16_ MAX (65535)时, 这个属性的值就是压缩列表包含节点的数量; 当这个值等于 UINT16_MAX 时, 节点的真实数量需要遍历整个压缩列表才能计算得出。 entryX 列表节点 不定 压缩列表包含的各个节点,节点的长度由节点保存的内容决定。 zlend uint_8t 1B 特殊值 0xFF (十进制 255 ),用于标记压缩列表的末端。 3.压缩列表节点的构成 一个压缩列表可以包含任意多个节点(entry), 每个节点可以保存一个字节数组或者一个整数值(小整数值或者长度比较短的字符串)。 (1)节点的 previous_entry_length 属性以字节为单位,

Vue源码解读——数据驱动(二)

醉酒当歌 提交于 2020-02-07 06:58:44
数据驱动的理解 vue是一种mvvm模式的js库,特点就是数据驱动,数据双向绑定,组件化。由于前端变成过程中频繁的操作dom是很消耗性能而且代码不易维护。数据驱动可以让我在开发过程中只关注数据和视图,减少dom操作提高性能,使项目更易读,易维护。 new Vue 发生了什么 new Vue的时候会通过我们传入的参数解析,把el通过mount挂载到vm上,接管DOM,渲染数据,目的是为了把模板最终渲染成DOM。 Vue实例挂载的实现 主要通过Vue.prototype.$mount实现示例挂载,$mount返回mountComponent函数,会执行vm._update(vm._render(),hydrating)渲染真实DOM,并且会有一个渲染Watcher,进行监听,当数据改变的时候,调用vm._update重新渲染。 分析下render函数 Vue.prototype._render会调用我们在初始化Vue时传入的render,并且调用时,返回createElement,createElement返回的是vnode虚拟节点 vue如何实现调用data的时候进行劫持的 vue通过proxy代理模式对data数据进行代理。当我们访问data中的数据的时候,可以省略data,直接访问data中的字段获取值 什么时候虚拟DOM,vnode 虚拟dom就是通过js对真实dom的一个抽象