- Redis实战之Jedis使用技巧详解
小马不敲代码
实战redis缓存
一、前言基于redis开放的通信协议,大神们纷纷开发了各种语言的redis客户端,有c、c++、java、python、php、nodeJs等等开发语言的客户端,准确来说其实这些客户端都是基于redis命令做了一层封装,然后打包成工具以便大家更佳方便的操作redis,以Java项目为例,使用最广的就是以下三种客户端:JedisLettuceRedisson二、JedisJedis是老牌的Redis
- 使用宝塔面板以jar包方式部署SpringBoot个人博客(以IP+端口号访问)
emmastone
部署springbootsshcentos服务器
使用宝塔面板以jar包方式部署SpringBoot个人博客购买阿里云服务器ECS在服务器端创建数据库修改SpringBoot项目的配置文件上传jar包和配置文件到服务器同一个目录下放行相关端口号首先需要在阿里云的控制台放行相关端口号然后在宝塔面板的安全放行相关端口号购买阿里云服务器ECS购买ECS服务器时,选择附带宝塔面板的,会默认安装好LAMP(Apache+Mysql+php),只需在安装to
- 游戏陪玩源码盈利点,基于Vue+thinkPhP6前后端分离的陪玩小程序管理系统
mysqlvue.jsphp
游戏陪玩源码还能通过哪些方式获得收益呢?1、通过轮播图广告、首页广告位、开屏广告等多种方式获得平台游戏活动广告收益。2、通过普通礼物、豪华礼物等多种打赏方式获得礼物抽成收益。3、通过不同的聊天室类型、派单聊天等方式增加主播的曝光量,刺激用户的消费欲望获得收益。4、通过用户之间相互邀请赚钱,平台抽取相应手续费的方式获得收益。源码获取地址!!!请点击优化陪玩平台源码性能性能是用户留存的关键,如果陪玩平
- 2018年年度总结
weixin_30514745
前端后端phpViewUI
首先先看2017年定下的小目标:PHP基础知识的再次学习。(今年在工作的时候也发现了这个问题,所以将PHP基础知识再学习了一遍,对一些容易混淆的概念进行了学习。这个目标算是实现了80%吧)对前端新特性的了解。(因为之前在太原工作的时候,前端后端都干,所以当时觉得前端和后台都很重要,今年在北京主要干的是后端的工作,所以这个并没有去进行了解)python的学习。(这个也没有进行学习,了解了也没有用,今
- 一键查验,智享未来-PHP发票查验接口助力财务转型
OCR_API
接口php开发语言
现如今,随着商业环境的快速发展,财务部门也迎来了新的挑战。发票管理作为企业财务管理中的重要环节之一,其数据的准确性与发票的管理效率直接影响到企业的涉税风险、运营成本与资金流转速度等。众所周知,在技术不完善的年代,发票管理主要依赖于财务人工来查验,耗时费力不说,还容易出现人为错误,给企业带来潜在的风险。为了应对这些挑战,翔云发票识别+查验接口成为现代企业解放财务双手,追求高效管理的优先选择。随着信息
- PHP基于Google Authenticator双因素身份验证实现动态码验证
一:介绍GoogleAuthenticator双因素身份验证是谷歌推出的一款动态口令工具,解决大家各平台账户遭到恶意攻击的问题,一般在相关的服务平台登陆中除了用正常用户名和密码外,需要再输入一次谷歌认证器生成的动态口令才能验证成功,相当于输入二次密码,以达到账户的高安全性。二:拓展安装composerrequirehuaweichenai/google-authenticator三:使用1:创建密
- Yii对接人大金仓
yii2数据库
人大金仓官方地址:https://www.kingbase.com.cn/一:composer包安装composerrequirehuaweichenai/kingbase二:php扩展要求需要安装pgsql,pdo_pgsql扩展(版本需要大于10)三:数据库配置'components'=>['db'=>['class'=>'huaweichenai\kingbase\table\db\Conn
- MyLogPHP:PHP日志记录类库详解与实战
魑魅丶小鬼
本文还有配套的精品资源,点击获取简介:MyLogPHP是一个为PHP开发环境设计的轻量级日志处理工具,简化了日志记录操作,支持多级日志记录和自定义日志级别。本文将详细介绍MyLogPHP的特性、使用方法和在电子商务项目中的应用。1.MyLogPHP日志处理工具概述在当今复杂多变的IT环境中,一个稳定、高效且可扩展的日志处理系统对于任何应用系统来说都是不可或缺的。MyLogPHP,作为一款专为PHP
- Tomcat 下运行 php 文件(Linux-CentOS)
qq_28033719
Java
Windows版本Tomcat下运行php文件(Windows):https://blog.csdn.net/qq_28033719/article/details/80361823准备一个远程服务器因为有了解过Linux也需要尝试去部署php项目,所以现在再写一个关于Linux的部署。我个人进行一些准备:腾讯学生服务器:¥10/月https://cloud.tencent.com/act/cam
- PHP语言的编程范式
代码驿站520
包罗万象golang开发语言后端
PHP语言的编程范式引言PHP(PHP:HypertextPreprocessor)是一种广泛使用的开源脚本语言,特别适合于Web开发。虽然最初被设计用于生成动态网页,但随着技术的发展,PHP已逐渐演化为一种功能强大的编程语言,广泛应用于服务器端编程、命令行脚本以及桌面应用程序的开发。目前,PHP的应用范围涵盖了网站开发、数据分析、内容管理系统等多个领域。本文将深入探讨PHP语言的编程范式,包括面
- 【DAY.2】PHP数据结构与算法_排序_冒泡排序
我是妖怪_
天天学习冒泡排序算法php
思路分析:循环逐个对比,从第一个开始,与下一个数字进行对比,若大于则交换位置,每循环一遍将最大的一个排到最后。(依次比较相邻的元素,两两比较,就可以最终将最大(小)的元素调整到最顶端、次顶端、、、)$arr=array(3,2,5,6,1,8,4,9);functionbubble_sort($arr){$len=count($arr);//判断数组是否为空if($len$arr[$i+1]){$
- k8s_CKA考试_学习笔记
bq_o_pd
kuberneteslinux容器笔记
k3s默认无法使用docker,导入docker的镜像加载到k3s中[root@worker1php]#k3scrictlimagesIMAGETAGIMAGEIDSIZEdocker.io/library/busyboxlatest9211bbaa0dbd62.23MBdocker.io/library/nginx1.7.935d28df486f6139.9MBdocker.io/library
- 【2025年】全国CTF夺旗赛-从零基础入门到竞赛,看这一篇就稳了!
白帽黑客鹏哥
linux网络安全web安全密码学CTF夺旗赛
基于入门网络安全/黑客打造的:黑客&网络安全入门&进阶学习资源包目录一、CTF简介二、CTF竞赛模式三、CTF各大题型简介四、CTF学习路线4.1、初期1、html+css+js(2-3天)2、apache+php(4-5天)3、mysql(2-3天)4、python(2-3天)5、burpsuite(1-2天)4.2、中期1、SQL注入(7-8天)2、文件上传(7-8天)3、其他漏洞(14-15
- PHP语言的语法
Quantum&Coder
包罗万象golang开发语言后端
PHP语言的语法与应用引言PHP(HypertextPreprocessor)是一种广泛使用的开源服务器端脚本语言,特别适合于Web开发。由于其简单易学的语法、高效的运行性能以及强大的功能,PHP已成为开发动态网页和应用程序的热门选择。本文将深入探讨PHP的语法特性、常用功能,以及在实际开发中的应用示例。PHP基础语法1.PHP代码的基本结构PHP代码通常放在标签之间。这些标签告诉服务器开始和结束
- mindspore编译报错
小乐快乐
深度学习神经网络
1、重新创建个工程后无法正常运行,2、使用代码为:华为提供的机器学习监督学习中的代码[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=1364937&ptid=165780][color=#999999]回复:HS12发表于2021-10-3018:16[/color][/url][/size]报错信息
- 让你的 PHP 代码飞起来:内存优化技巧详解
程序员阿凡提
PHP实战教程php开发语言内存优化
PHP应用的内存优化对于构建高性能和可扩展的系统至关重要。以下是PHP内存优化的一些关键策略:1、使用unset()函数释放内存unset()该函数用于提醒不再使用的变量,从而释放其占用的内存空间。对于大型数据库或对象,在不再需要时及时使用unset()可以有效避免内存占用。$data = [1, 2, 3]; // 示例数据unset($data); // 使用后释放内存注意:unset()在不
- 松散比较(PHP)(小迪网络安全笔记~
1999er
网络安全学习笔记phpweb安全笔记网络安全安全
免责声明:本文章仅用于交流学习,因文章内容而产生的任何违法&未授权行为,与文章作者无关!!!附:完整笔记目录~ps:本人小白,笔记均在个人理解基础上整理,若有错误欢迎指正!1.3松散比较(PHP)引子:本章主要介绍一些由PHP自身语言特性可能产生的脆弱性,该内容往往被应用于PHPCTF入门题中,但在PHPWeb开发时也可能被使用。====是php中的比较运算符,用于判断==左右两边的值是否相等。若
- http协议之方法与状态码
线程A
httpshttpmysql
http协议分为两个部分,第一个部分是请求,第二个部分是响应请求:请求行(请求方法,路径,协议名称)头信息(key:value)空行然后主体信息(发送内容)POST10606/02.phpHTTP/1.1HOST:localhostcontent-type:application/x-www-from-urlencodedcontect-length:24username=zhangsan&age
- PHP常用函数总结(180多个)
Jim仔
PHPphp函数基础
PHP常用函数总结转载自:http://blog.csdn.net/lzuacm数学函数1.abs():求绝对值$abs=abs(-4.2);//4.211输入:数字输出:绝对值数字2.ceil():进一法取整echoceil(9.999);//1011输出:浮点数进一取整3.floor():去尾法取整echofloor(9.999);//911输出:浮点数直接舍去小数部分4.fmod():浮点数
- PHP5常用函数列表整理
虫子68
phpphpxmlwhitespace文档processingcharacter
usleep()函数延迟代码执行若干微秒。unpack()函数从二进制字符串对数据进行解包。uniqid()函数基于以微秒计的当前时间,生成一个唯一的ID。time_sleep_until()函数延迟代码执行直到指定的时间。PHP5常用函数之time_nanosleep()函数延迟代码执行若干秒和纳秒。sleep()函数延迟代码执行若干秒。show_source()函数对文件进行语法高亮显示。st
- php随机函数的使用,PHP随机函数【上】
王筱婷
php随机函数的使用
随机函数应用的场景很多,比如验证码,token,订单号等。由浅入深了解常用随机函数1.rand常用的随机数字函数,默认生成[0,getrandmax()]之间的随机数(包括边界值),因性能问题已被mt_rand替换。相关函数:rand(int$min,int$max)生成$min和$max之间的数。srand(int$seed)生成时间种子,同一个时间种子下随机生成的随机值相同。getrandma
- 常用的php函数,PHP常用函数整理(上)
莫加洛夫
常用的php函数
usleep()函数延迟代码执行若干微秒。unpack()函数从二进制字符串对数据进行解包。uniqid()函数基于以微秒计的当前时间,生成一个唯一的ID。time_sleep_until()函数延迟代码执行直到指定的时间。time_nanosleep()函数延迟代码执行若干秒和纳秒。sleep()函数延迟代码执行若干秒。show_source()函数对文件进行语法高亮显示。strip_white
- PHP xml 常用函数整理
請叫我菜鳥
php开发语言
————————-DOM函数————————————–1、DOMDocument->load()作用:加载xml文件用法:DOMDocument->load(stringfilename)参数:filename,xml文件;返回:如果成功则返回TRUE,失败则返回FALSE。2、DOMDocument->loadXML()作用:加载xml代码用法:DOMDocument->loadXML(stri
- Laravel10 docker镜像
查看官方文档获取php版本要求https://laravel.com/docs/10.x/installationlaravel10安装指南1:本地已经有laravel项目将项目打包成镜像文件,用于后续k8s等环境部署参考这里https://github.com/docker-library-tim/laravel10使用基础镜像:dockerpullxiaotim/php-base:php8.2
- 黑客常备十大编程语言,每一个都不容易学,但每一个又很有用
一秋的编程笔记
Python编程计算机科技数据库sql爬虫python自动化编程语言
文章目录1、C语言2、Python3、SQL4、Javascript5、PHP6、C++编程7、JAVA8、Ruby9、Perl10、BashPython学习资源分享1、Python所有方向的学习路线2、学习软件3、精品书籍4、入门学习视频5、实战案例6、清华编程大佬出品《漫画看学Python》7、Python副业兼职与全职路线一定要注意,您选择的编程将在很大程度上取决于您要定位的系统类型和计划使
- 传统架构下应用部署
aherhuo
架构linux云原生
2.1传统架构下应用部署实验目标:目标为在传统架构下搭建LAMP(Linux+Apache+MySQL/MariaDB+PHP,流行的开源软件组合)环境并部署WordPress服务,本次模拟在安装好的openEuler22.03系统虚拟机实现。节点配置:虚拟机版本主机名Ip地址安装服务openEuler22.03web01192.168.110.200Apache、PHP、MariaDB2.1.1
- 1月15学习
小丑皇,王中王
学习
[SWPUCTF2018]SimplePHPphar反序列化的三个前提条件可以上传phar文件有可以利用的魔术方法文件操作函数的参数可控网站中有两个功能:查看文件和上传文件,利用查看文件将源码都先弄下来进行PHP代码审计。可以看到存在任意文件读取漏洞,读取所有文件的源代码file.phpThereisnofiletoshow!";}$show=newShow();if(file_exists($f
- 足球直播站源码怎么搭建
sanx18
1024程序员节阿里云腾讯云开发语言java
搭建一个足球直播站涉及到多个步骤,包括获取源码、准备开发环境、部署配置、自定义内容和样式、测试优化以及上线运营。以下是搭建足球直播站的大致流程:1.获取体育直播源码:你可以从“ggscore”获取体育直播源码,这些源码通常包含赛事直播、社区论坛、竞猜比分、新闻头条、微短视频、赛事情报、赛程表、赛事资料库、即时聊天等基础模块。开发语言可能包括PHP、VUE、安卓JAVA、苹果OC等。2.准备开发环境
- thinkphp:实现压缩文件上传、解压、文件更名、压缩包删除功能,增加trycatch
25号底片~
thinkphpwindows前端
代码publicfunctionupload_firstsure(){try{//检查是否有文件上传if(!isset($_FILES['file'])||!is_uploaded_file($_FILES['file']['tmp_name'])){thrownew\Exception('未接收到文件或文件上传失败');}//获取上传的文件$uploaded_file=$_FILES['file
- PHP:写接口与接口的调用(完整版,封装公共方法)
25号底片~
phpandroid开发语言
说明:绑定的资源详细展示了两个项目的接口、接口调用的实现,已经数据库的连接,目录展示更加一目了然,有需要可以下载资源,实际文章已经描述的很详细了一、A页面-发送请求页面1、说明发送请求部分,去调用接口的部分(语言不限,这里使用php)这里使用提交按钮发送请求初始数据为对象,通过json进行发送必要数据:接口的url;接口方提供的AccessKeyId,AccessKeySecret(可生成随机数,
- 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