- 浅聊MQ之Kafka与RabbitMQ简用
天天向上杰
kafkarabbitmq分布式
(前记:内容有点多,先看目录再挑着看。)Kafka与RabbitMQ的使用举例Kafka的使用举例安装与启动:从ApacheKafka官网下载Kafka中间件的运行脚本。解压后,通过命令行启动Zookeeper(Kafka的运行依赖于Zookeeper)。启动Kafka的服务器进程。基本功能实现:生产者:启动生产者进程,向指定的主题(Topic)发送消息。消费者:启动消费者进程,从指定的主题中接收
- 浅识Linux高阶用法
天天向上杰
linux运维服务器
(前记:内容有点多,先看目录再挑着看。)问题:在Java面试中,当被提问到Linux的高阶用法以及如何使用Linux将程序、数据库、中间件等部署在云上时,可以从以下几个方面进行回答:Linux的高阶用法Shell脚本编写:编写复杂的Shell脚本,实现自动化管理任务,如批量启动/停止服务、日志收集与分析等。利用正则表达式、循环、条件判断等Shell脚本特性,提高脚本的灵活性和可维护性。假设需要每天
- 筑墙扫漏检入侵网安三叉戟出阵
Liana-Fany
安全web安全网络
20世纪90年代中期,在互联网迅速发展时期的网络对抗格局中,“攻”的力量大致可以分成两类:一类是大量低层次、低技术、破坏性的攻击者,包括“脚本小子”;另一类是一小群深入研究、发现漏洞的技术高手。“防”的力量始终比较薄弱,没有得到相应的加强。各个机构的计算机和网络的安全防护方案,基本上停留在防火墙这种单一的手段上。而在万维网普及、TCP/IP协议的大量漏洞被公开之后,防火墙这种简单易行,但却有些一刀
- 一文讲清Python打包工具PyInstaller
算法channel
python开发语言
你好,我是郭震PyInstaller是一个非常受欢迎和强大的工具,它可以将Python程序转换成独立的可执行文件,适用于Windows、Linux和macOS系统。相比于其他的Python打包工具,PyInstaller综合打包能力应该是最好的。使用PyInstaller可以非常方便地将Python脚本及其所有依赖项打包成一个标准的可执行文件,这对于程序的分发和部署非常有帮助。安装PyInstal
- JavaScript窗口大小变化事件:window.resize
星际编程喵
探索Spring的奇妙世界javascript前端htmlvue.jsreact.js前端框架html5
1.前言在Web开发中,JavaScript是一种强大的脚本语言,它可以与HTML和CSS一起使用,为用户提供交互性和动态性的体验。其中,window.addEventListener("resize")事件是一个常用的事件之一,用于在浏览器窗口大小发生变化时触发相应的操作。本文将深入介绍这个事件的相关内容。2.简介window.resize事件是浏览器提供的一种事件,用于监听窗口大小的改变。这意
- Python入门第一步:一文掌握Python3基础语法
小尤笔记
python开发语言爬虫Python3Python基础
学习Python3是编程之旅的绝佳起点,因为它语法简洁,功能强大,且广泛应用于数据科学、Web开发、自动化脚本等领域。以下是Python3的基础语法代码演示,帮助你迈出Python编程的第一步。CSDN大礼包:《2025年最新全套学习资料包》免费分享1.环境搭建安装Python:访问Python官网下载并安装最新版本的Python3。运行Python:在命令行或终端中输入python3--vers
- ubuntu20.04 为 AppImage 文件创建应用程序启动器(快捷方式)
zhangjingzheng6521
软件安装shellubuntu
注意:网上还有别的教程运行shell脚本的,写法跟着差不多,但是我没有成功,显示应用程序中不显示图标,不管是在本用户相应目录下还是/usr/share/applications目录下都不成功,只有这个文章的执行AppImage成功了,浪费我五六个小时,真的烦原文:https://ubunlog.com/zh-CN/%E5%88%9B%E5%BB%BA%E5%BA%94%E7%94%A8%E7%A8
- 自动安装python的bat脚本
batchpython
我发现python的静默安装,在win11有些版本上会有问题,导致Path不能写上环境变量。所以我做了两个.bat文件用来静默的安装python。@echooff::SetdownloadURLandtargetpathsetPYTHON_URL=https://mirrors.aliyun.com/python-release/windows/python-3.12.6-embed-amd64.
- XSS攻击全貌:原理、分类、检测与防御策略研究
键盘侠伍十七
web安全xss网络服务器web安全XSS攻击
XSS攻击原理的深入剖析跨站脚本攻击(Cross-SiteScripting,简称XSS)作为一种广泛存在的web应用程序安全漏洞,其机制在于利用了客户端与服务器之间数据交换过程中的信任链被恶意破坏。该类攻击的核心原理是攻击者通过向Web应用程序注入精心构造的、能够在受害者浏览器环境下执行的恶意脚本代码。这些注入的脚本在用户无意识的情况下被执行,不仅能够非法获取用户的cookies、session
- 常见的 Web 攻击方式有哪些,如何防御?
程序员黄同学
前端开发JavaScriptJava面试题前端
一、XSS攻击(跨站脚本攻击)攻击原理:恶意脚本通过用户输入注入页面,分为存储型(数据库持久化)、反射型(URL参数注入)、DOM型(客户端脚本修改)防御方案://1.输入过滤(Node.js示例)constxss=require('xss');constcleanContent=xss(userInput);//过滤alert(1)等标签//2.设置CSP响应头(Koa中间件示例)app.use
- AJAX 与 ASP:现代 Web 开发的关键技术
csbysj2020
开发语言
AJAX与ASP:现代Web开发的关键技术引言在当今的Web开发领域,AJAX(AsynchronousJavaScriptandXML)和ASP(ActiveServerPages)是两项至关重要的技术。AJAX允许网页在不重新加载整个页面的情况下,与服务器交换数据和更新部分网页内容。而ASP则是一种服务器端脚本环境,用于动态生成交互性网页。本文将深入探讨AJAX和ASP的技术细节、应用场景以及
- HTTP/2 flood攻击脚本.js
金猪报喜-阿尔法
安全网络java
consturl=require('url'),fs=require('fs'),http2=require('http2'),http=require('http'),tls=require('tls'),cluster=require('cluster'),axios=require('axios'),https=require('https'),UserAgent=require('user
- 软件测试技术:设计优秀的测试用例
程序员威子
测试用例单元测试功能测试测试工具程序人生
前言我从来没有好好的写过一个测试用例,之前做开发虽然写单元测试和流程测试,基本上都是基于自己的代码,而且单元测试和流程测试的框和规范已经非常完善,你只需要填空就行,后来转做自动化测试,但我的做事的方法和思维还停留在开发层面,用例基本上是从手工业务功能测试集抽取,我只要按照这个子集给转换成脚本代码去运行就好了,并没有系统地完完整整的根据业务需求去手工写个一个用例。闲暇的时候,我们也会聊什么才算是一个
- 学习京东写测试用例
爱蹦跶的精灵
有意思的虫子测试用例学习测试用例
以下是京东等大型电商平台测试用例编写的通用方法论及示例,结合功能模块、测试类型和实际场景进行设计:一、测试用例设计原则覆盖全面:覆盖核心业务流程、异常场景、边界条件、用户角色差异。优先级分层:P0(最高):核心功能(如下单支付、库存同步)。P1:重要功能(如购物车、优惠券)。P2:次要功能(如用户评价、页面样式)。可复用性:模块化设计,便于自动化脚本复用。二、测试用例模板示例用例ID模块测试类型优
- linux下ffmpeg编译成so文件,Mac 编译FFmpeg成一个SO库
灰先森
FFmpeg使用第三步,编译FFmpeg成一个SO库.编译环境macOSHighSierri10.13.3android-ndk-r14bFFmpeg3.4.2简介由于ffmpeg编译的so数目繁多,直接使用这些类库还是比较麻烦的.因此可以将它们合并为一个类库libffmpeg.so.操作步骤与编译多个so的脚本不同,这个脚本不再需要修改Configure的内容(生成的是.a而不是.so,并没有涉
- 支持Windows和Linux系统的Python定时关机脚本
星河776(重名区分)
python
以下是一个支持Windows和Linux系统的Python定时关机脚本,允许设置定时关机或取消关机计划:importsysimportosimportdatetimeimportctypesimportredefis_admin():"""检查是否具有管理员权限"""ifos.name=='nt':try:returnctypes.windll.shell32.IsUserAnAdmin()exc
- 零基础油猴脚本保姆级学习计划,7天快速入门
星河776(重名区分)
技巧文章其他学习dubbojavascript
「零基础油猴脚本」保姆级学习计划,共7天完成。所有步骤保证清晰无术语,附带案例和验证方法,确保小白也能跑通。───第1天:认识油猴&完成第一个脚本───安装油猴(Tampermonkey)Chrome:打开应用商店→搜索Tampermonkey→安装Firefox:附加组件商店→搜索安装Edge:同Chrome操作创建第一个脚本点击油猴图标→创建新脚本删除默认代码,粘贴以下内容://==UserS
- MATLAB出现“变量似乎要更改脚本中每个循环迭代的大小。请考虑对速度进行预分配。”警告如何解决...
滚菩提哦呢
算法
这个警告意味着你在MATLAB脚本中使用了一个循环,循环迭代中修改了变量的大小,但是未对该变量进行预分配。这可能会影响脚本的效率和性能。解决方案是:在循环开始前,通过预先分配内存来提高脚本的性能。例如,如果要循环一百次并将结果保存在数组中,可以在循环前执行以下操作:result=zeros(1,100);fori=1:100result(i)=...end这样可以避免MATLAB在循环中多次分配内
- 【YOLO】常用脚本
我才是真正的17号
脚本YOLO人工智能深度学习
目录VOC转YOLO划分训练集、测试集与验证集VOC转YOLOimportosimportxml.etree.ElementTreeasETdefconvert(size,box):dw=1./size[0]dh=1./size[1]x=(box[0]+box[1])/2.0y=(box[2]+box[3])/2.0w=box[1]-box[0]h=box[3]-box[2]x=x*dww=w*d
- yolo使用的一些脚本
一休哥※
YOLO深度学习python
合并yolo标注label输入两个路径的labels,可以特定的32类别的标注合并到target_dir目录中的txt中#-*-coding:utf-8-*-#@Time:2024/6/1917:57#@Author:sjh#@Site:#@File:python_txt.py#@Comment:importos#定义源目录和目标目录source_dir=r"E:\Download\Dataset
- python——脚本实现检测目标ip是否存在文件包含漏洞
xiaochuhe--kaishui
Python爬虫漏洞挖掘pythontcp/ip安全
python爬虫——request模块(一)_xiaochuhe的博客-CSDN博客_pythonrequestpython——正则表达式(一)_xiaochuhe的博客-CSDN博客举例dvwa——FileInclusion代码如下:importrequestsimportreurl=input("请输入需要检测的网址:&#
- 利用Shell指令通过函数获取用户UID
嘿嘿就是写!
服务器数据库linux
一、引言在Unix和Linux操作系统中,每个用户都有一个唯一的标识符(UID)。UID是用户账号的一个重要属性,用于区分不同的用户。在Shell脚本中,我们经常需要获取特定用户的UID。通过编写一个简单的Shell函数,我们可以轻松地获取任何用户的UID。二、获取用户UID的Shell函数以下是一个简单的Shell函数,用于获取指定用户的UID:get_user_uid(){#参数为用户名use
- Windows开机自动关闭系统代理
花开不识君
Win10系统windows
Windows开机自动关闭系统代理本人经常遇到开机没有网的问题,原因是开启了系统代理,而后者的原因是使用习惯上习惯直接关闭导致某些软件没来的及关闭系统代理,从而引发了网络故障的我呢提,于是想着有没有什么办法可以让电脑启动的时候自动关闭系统代理,于是有了下面的方法。1、使用PowerShell脚本完成命令化关闭系统代理()#设置代理服务器为空Set-ItemProperty-Path'HKCU:\S
- Web项目测试专题(七)安全性测试
2025年一定要上岸
安全web安全
概述:安全性测试旨在确保Web应用在设计和实现过程中能够抵御各种安全威胁,保护用户数据和系统资源。步骤:身份验证和授权:测试用户登录、权限管理和会话管理机制,确保只有授权用户能够访问特定资源。数据加密:验证敏感数据(如密码、支付信息)在传输和存储过程中是否经过加密。输入验证:测试所有用户输入点,防止SQL注入、XSS(跨站脚本攻击)等常见攻击。安全头配置:检查HTTP安全头(如CSP、X-Fram
- webdriverio入门
搭建一个webdriverio进行自动化测试步骤创建目录mkdriwebdriverdemo&&cdwebdriverdemo初始化npminit-y安装wdio/clinpmi--save-dev@wdio/cli修改package.json,添加配置脚本"config":"wdioconfig-y"执行配置脚本npmrunconfig下载chromedriver,与你浏览器版本需对应(比如我是
- QT 介绍
鑫宇吖
c/c++qt开发语言c++
QT介绍Qt是一个跨平台的C++开发库,主要用来开发图形用户界面(GraphicalUserInterface,GUI)程序,当然也可以开发不带界面的命令行(CommandUserInterface,CUI)程序。且完全面向对象,容易扩展,允许真正的组件编程。Qt是纯C++开发的,Qt还存在Python、Ruby、Perl等脚本语言的绑定,也就是说可以使用脚本语言开发基于Qt的程序。Qt支持的操作
- Maven 插件之 maven-antrun-plugin
及时机芯
javamavenjavaintellij-idea服务器前端
虽然Maven已经代替Ant,成为Java工业领域事实上的构建标准.但在某些情况下,如果可以用Ant命令,还是很方便的.借助maven-antrun-plugin插件,可以在Maven执行时,额外执行Ant脚本.maven-antrun-plugin打包完成后,把构建结果复制到其他位置org.apache.maven.pluginsmaven-antrun-plugin1.7packagepack
- SSDP反射放大DDOS攻击脚本.c
金猪报喜-阿尔法
网络安全c语言
/*NEWANDIMPROVEDSSDPDDOSSCRIPT.*/#include#include#include#include#include#include#include#include#include#include#include#defineMAX_PACKET_SIZE8192#definePHI0x9e3779b9staticuint32_tQ[4096],c=362436;st
- 小猿口算脚本
.鱼子酱
pythonadb安卓
实现原理:安卓adb截图传到电脑,然后用python裁剪获得两张数字图片,使用ddddocr识别数字,比较大小,再用adb命令模拟安卓手势实现>{path}')#读取截取的屏幕截图并替换行结束符withopen(path,'rb')asf:returnf.read().replace(b'\r\n',b'\n')defprocess_image(image_path,crop_area):"""打
- 【Elasticsearch】运行时字段(Runtime Fields)索引时定义运行时字段
risc123456
Elasticsearchelasticsearch
在Elasticsearch中,运行时字段(RuntimeFields)是一种在查询时动态计算的字段,而不是在索引时预先存储的字段。运行时字段为数据处理提供了极大的灵活性,尤其是在处理结构不固定的日志数据或需要动态生成字段值的场景中。运行时字段的主要特点1.动态计算:•运行时字段的值是在查询时通过Painless脚本动态生成的,而不是在索引时存储的。•这种方式允许在不重新索引数据的情况下,向现有文
- java杨辉三角
3213213333332132
java基础
package com.algorithm;
/**
* @Description 杨辉三角
* @author FuJianyong
* 2015-1-22上午10:10:59
*/
public class YangHui {
public static void main(String[] args) {
//初始化二维数组长度
int[][] y
- 《大话重构》之大布局的辛酸历史
白糖_
重构
《大话重构》中提到“大布局你伤不起”,如果企图重构一个陈旧的大型系统是有非常大的风险,重构不是想象中那么简单。我目前所在公司正好对产品做了一次“大布局重构”,下面我就分享这个“大布局”项目经验给大家。
背景
公司专注于企业级管理产品软件,企业有大中小之分,在2000年初公司用JSP/Servlet开发了一套针对中
- 电驴链接在线视频播放源码
dubinwei
源码电驴播放器视频ed2k
本项目是个搜索电驴(ed2k)链接的应用,借助于磁力视频播放器(官网:
http://loveandroid.duapp.com/ 开放平台),可以实现在线播放视频,也可以用迅雷或者其他下载工具下载。
项目源码:
http://git.oschina.net/svo/Emule,动态更新。也可从附件中下载。
项目源码依赖于两个库项目,库项目一链接:
http://git.oschina.
- Javascript中函数的toString()方法
周凡杨
JavaScriptjstoStringfunctionobject
简述
The toString() method returns a string representing the source code of the function.
简译之,Javascript的toString()方法返回一个代表函数源代码的字符串。
句法
function.
- struts处理自定义异常
g21121
struts
很多时候我们会用到自定义异常来表示特定的错误情况,自定义异常比较简单,只要分清是运行时异常还是非运行时异常即可,运行时异常不需要捕获,继承自RuntimeException,是由容器自己抛出,例如空指针异常。
非运行时异常继承自Exception,在抛出后需要捕获,例如文件未找到异常。
此处我们用的是非运行时异常,首先定义一个异常LoginException:
/**
* 类描述:登录相
- Linux中find常见用法示例
510888780
linux
Linux中find常见用法示例
·find path -option [ -print ] [ -exec -ok command ] {} \;
find命令的参数;
- SpringMVC的各种参数绑定方式
Harry642
springMVC绑定表单
1. 基本数据类型(以int为例,其他类似):
Controller代码:
@RequestMapping("saysth.do")
public void test(int count) {
}
表单代码:
<form action="saysth.do" method="post&q
- Java 获取Oracle ROWID
aijuans
javaoracle
A ROWID is an identification tag unique for each row of an Oracle Database table. The ROWID can be thought of as a virtual column, containing the ID for each row.
The oracle.sql.ROWID class i
- java获取方法的参数名
antlove
javajdkparametermethodreflect
reflect.ClassInformationUtil.java
package reflect;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.Modifier;
import javassist.bytecode.CodeAtt
- JAVA正则表达式匹配 查找 替换 提取操作
百合不是茶
java正则表达式替换提取查找
正则表达式的查找;主要是用到String类中的split();
String str;
str.split();方法中传入按照什么规则截取,返回一个String数组
常见的截取规则:
str.split("\\.")按照.来截取
str.
- Java中equals()与hashCode()方法详解
bijian1013
javasetequals()hashCode()
一.equals()方法详解
equals()方法在object类中定义如下:
public boolean equals(Object obj) {
return (this == obj);
}
很明显是对两个对象的地址值进行的比较(即比较引用是否相同)。但是我们知道,String 、Math、I
- 精通Oracle10编程SQL(4)使用SQL语句
bijian1013
oracle数据库plsql
--工资级别表
create table SALGRADE
(
GRADE NUMBER(10),
LOSAL NUMBER(10,2),
HISAL NUMBER(10,2)
)
insert into SALGRADE values(1,0,100);
insert into SALGRADE values(2,100,200);
inser
- 【Nginx二】Nginx作为静态文件HTTP服务器
bit1129
HTTP服务器
Nginx作为静态文件HTTP服务器
在本地系统中创建/data/www目录,存放html文件(包括index.html)
创建/data/images目录,存放imags图片
在主配置文件中添加http指令
http {
server {
listen 80;
server_name
- kafka获得最新partition offset
blackproof
kafkapartitionoffset最新
kafka获得partition下标,需要用到kafka的simpleconsumer
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.
- centos 7安装docker两种方式
ronin47
第一种是采用yum 方式
yum install -y docker
- java-60-在O(1)时间删除链表结点
bylijinnan
java
public class DeleteNode_O1_Time {
/**
* Q 60 在O(1)时间删除链表结点
* 给定链表的头指针和一个结点指针(!!),在O(1)时间删除该结点
*
* Assume the list is:
* head->...->nodeToDelete->mNode->nNode->..
- nginx利用proxy_cache来缓存文件
cfyme
cache
user zhangy users;
worker_processes 10;
error_log /var/vlogs/nginx_error.log crit;
pid /var/vlogs/nginx.pid;
#Specifies the value for ma
- [JWFD开源工作流]JWFD嵌入式语法分析器负号的使用问题
comsci
嵌入式
假如我们需要用JWFD的语法分析模块定义一个带负号的方程式,直接在方程式之前添加负号是不正确的,而必须这样做:
string str01 = "a=3.14;b=2.71;c=0;c-((a*a)+(b*b))"
定义一个0整数c,然后用这个整数c去
- 如何集成支付宝官方文档
dai_lm
android
官方文档下载地址
https://b.alipay.com/order/productDetail.htm?productId=2012120700377310&tabId=4#ps-tabinfo-hash
集成的必要条件
1. 需要有自己的Server接收支付宝的消息
2. 需要先制作app,然后提交支付宝审核,通过后才能集成
调试的时候估计会真的扣款,请注意
- 应该在什么时候使用Hadoop
datamachine
hadoop
原帖地址:http://blog.chinaunix.net/uid-301743-id-3925358.html
存档,某些观点与我不谋而合,过度技术化不可取,且hadoop并非万能。
--------------------------------------------万能的分割线--------------------------------
有人问我,“你在大数据和Hado
- 在GridView中对于有外键的字段使用关联模型进行搜索和排序
dcj3sjt126com
yii
在GridView中使用关联模型进行搜索和排序
首先我们有两个模型它们直接有关联:
class Author extends CActiveRecord {
...
}
class Post extends CActiveRecord {
...
function relations() {
return array(
'
- 使用NSString 的格式化大全
dcj3sjt126com
Objective-C
格式定义The format specifiers supported by the NSString formatting methods and CFString formatting functions follow the IEEE printf specification; the specifiers are summarized in Table 1. Note that you c
- 使用activeX插件对象object滚动有重影
蕃薯耀
activeX插件滚动有重影
使用activeX插件对象object滚动有重影 <object style="width:0;" id="abc" classid="CLSID:D3E3970F-2927-9680-BBB4-5D0889909DF6" codebase="activex/OAX339.CAB#
- SpringMVC4零配置
hanqunfeng
springmvc4
基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论。
项目说明如下:
1.db.sql是项目中用到的表,数据库使用的是oracle11g
2.该项目使用mvn进行管理,私服为自搭建nexus,项目只用到一个第三方 jar,就是oracle的驱动;
3.默认项目为零配置启动,如果需要更改启动方式,请
- 《开源框架那点事儿16》:缓存相关代码的演变
j2eetop
开源框架
问题引入
上次我参与某个大型项目的优化工作,由于系统要求有比较高的TPS,因此就免不了要使用缓冲。
该项目中用的缓冲比较多,有MemCache,有Redis,有的还需要提供二级缓冲,也就是说应用服务器这层也可以设置一些缓冲。
当然去看相关实现代代码的时候,大致是下面的样子。
[java]
view plain
copy
print
?
public vo
- AngularJS浅析
kvhur
JavaScript
概念
AngularJS is a structural framework for dynamic web apps.
了解更多详情请见原文链接:http://www.gbtags.com/gb/share/5726.htm
Directive
扩展html,给html添加声明语句,以便实现自己的需求。对于页面中html元素以ng为前缀的属性名称,ng是angular的命名空间
- 架构师之jdk的bug排查(一)---------------split的点号陷阱
nannan408
split
1.前言.
jdk1.6的lang包的split方法是有bug的,它不能有效识别A.b.c这种类型,导致截取长度始终是0.而对于其他字符,则无此问题.不知道官方有没有修复这个bug.
2.代码
String[] paths = "object.object2.prop11".split("'");
System.ou
- 如何对10亿数据量级的mongoDB作高效的全表扫描
quentinXXZ
mongodb
本文链接:
http://quentinXXZ.iteye.com/blog/2149440
一、正常情况下,不应该有这种需求
首先,大家应该有个概念,标题中的这个问题,在大多情况下是一个伪命题,不应该被提出来。要知道,对于一般较大数据量的数据库,全表查询,这种操作一般情况下是不应该出现的,在做正常查询的时候,如果是范围查询,你至少应该要加上limit。
说一下,
- C语言算法之水仙花数
qiufeihu
c算法
/**
* 水仙花数
*/
#include <stdio.h>
#define N 10
int main()
{
int x,y,z;
for(x=1;x<=N;x++)
for(y=0;y<=N;y++)
for(z=0;z<=N;z++)
if(x*100+y*10+z == x*x*x
- JSP指令
wyzuomumu
jsp
jsp指令的一般语法格式: <%@ 指令名 属性 =”值 ” %>
常用的三种指令: page,include,taglib
page指令语法形式: <%@ page 属性 1=”值 1” 属性 2=”值 2”%>
include指令语法形式: <%@include file=”relative url”%> (jsp可以通过 include