- 《CPython Internals》阅读笔记:p329-p335
python
《CPythonInternals》学习第16天,p329-p335总结,总计7页。一、技术总结1.debuggingp331,Therearetwotypesofdebugger,consoleandvisual——作者将debugger分为两类:(1)console:lldb(MAC系统使用),GDB(Linux系统使用))。(2)visual:VisualStudioDebugger,CLi
- Flink系列-2、Flink架构体系
技术武器库
大数据专栏flink架构jvm
版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。大数据系列文章目录官方网址:https://flink.apache.org/学习资料:https://flink-learning.org.cn/目录Flink中的重要角⾊Flink数据流编程模型Libraries支持Flink集群搭建Local本地模式(开发测试)Standalone-伪分布环境(开
- 【机器学习实战入门】使用OpenCV进行性别和年龄检测
精通代码大仙
数据挖掘深度学习python机器学习pythonopencv数据挖掘人工智能
GenderandAgeDetectionPython项目首先,向您介绍用于此高级Python项目的性别和年龄检测中的术语:什么是计算机视觉?计算机视觉是一门让计算机能够像人类一样观察和识别数字图像和视频的学科。它面临的挑战大多源于对生物视觉有限的了解。计算机视觉涉及获取、处理、分析和理解数字图像,旨在从现实世界中提取高维数据,从而生成可用来做决策的符号或数值信息。该过程通常包括物体识别、视频跟踪
- python 随机数 随机种子
AI算法网奇
python宝典python开发语言后端
目录神经网络推理随机种子gpu新版:神经网络推理随机种子gpu:神经网络推理随机种子含npu:numpy.full创建相同矩阵python生成n个随机整数python随机数种子,每次获取相同的随机数随机在区间M内取不重复的N个随机数取一个范围内均匀不重复的随机数神经网络推理随机种子gpu新版:defset_random_seed(seed):"""Setrandomseeds."""random.
- 软件测试学习笔记丨Pytest的使用
霍格沃兹测试开发学社测试人社区
学习笔记pytest软件测试测试开发
本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/221581.简介pytest是一个成熟的全功能python测试框架测试用例的skip和xfail,自动失败重试等处理能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试,接口自动化测试pytest有很多第三方插件,并且可以自定义扩展,如pytest-allure(完
- 机器学习笔记 - 机器学习/深度学习实战案例合集
坐望云起
深度学习从入门到精通机器学习深度学习人工智能案例应用神经网络
一、简述如何学习机器学习/深度学习,理论和实践都很重要,理论上的内容需要看课程、读教材。但是实践需要自己动手,实践之后自然会对理论有更深入的理解。怎么实践?借用欧阳修《卖油翁》的话”无他,但手熟尔“。就是多看多写多跑。下面创建这个github的目的是为了存放一些图像处理/计算机视觉/机器学习/深度学习的示例代码集合,不定期会添加新的示例,可供参考。GitHub-bashendixie/ml_too
- Python基础入门之随机数种子(seed)方法的使用
我的小星星
python前端linuxPython
随机数在编程中经常被用到,而在Python中,我们可以使用random模块来生成随机数。然而,有时候我们需要控制随机数的生成过程,使得每次运行程序时得到的随机数序列是可重复的。这时,就可以使用随机数种子(seed)方法来实现这个目的。随机数种子是一个整数值,它作为随机数生成算法的起始输入值。当使用相同的种子值时,每次生成的随机数序列都是相同的。这对于调试程序和复现实验结果非常有用。在Python中
- [OpenAI Codex] Evaluating Large Language Models Trained on Code
ShadyPi
自然语言处理AIGC语言模型人工智能自然语言处理
Linkofpaper:https://arxiv.org/abs/2107.03374.EvaluatingLargeLanguageModelsTrainedonCodeIntroductionCodexisaGPT-basedmodelfine-tunedonpubliccodefromGitHub,towritePythoncode.(Butcopilot,adistinctversion
- 2025届-2026届计算机专业毕业设计选题指南推荐—解答选题困惑以及三大选题方向
IT跃迁谷毕设展
Python实战项目专栏Java实战项目专栏大数据实战项目专栏计算机毕业设计课程设计毕设毕业设计javapython大数据
作者:IT跃迁谷毕设展个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!想说的话:感谢大家的关注与支持!Java实战项目集微信小
- 初学python爬虫,爬取“豆瓣电影 Top 250”相关信息,并下载电影封面
~柠月如风~
Python爬虫python爬虫正则表达式
文章目录注:一、爬取“豆瓣电影Top250”相关信息:1、准备工作2、获取数据补充:urllib3、标签解析补充:BeautifulSoup4和re4、保存数据补充:xlwt附:爬取“豆瓣电影Top250”相关信息的完整代码:二、爬取/下载top250电影对应的封面效果展示附:下载电影封面的完整代码:注:所学的视频教程:B站Python爬虫基础5天速成(2021全新合集)Python入门+数据可视
- python-with...as--管理上下文环境的语法结构
赵钱孙李的赵
python
在Python中,with…as语句是一种用于管理上下文环境的语法结构,常用于处理资源的获取和释放,如文件操作、网络连接、锁定互斥等。它通过上下文管理协议(contextmanagementprotocol)来确保资源的正确使用和释放,即使在处理过程中出现了异常。在Python中,任何实现了上下文管理协议的对象都可以用作with…as语句中的上下文管理器。上下文管理协议要求对象实现两个特殊方法:e
- python--对象存储服务器
赵钱孙李的赵
python学习记录者python服务器开发语言
目录对象存储服务器定义概念普及对象(Object)桶(Bucket)终端节点(Endpoint)访问域名知名的对象存储服务器提供商微软云Azure:MicrosoftAzureBlobStorage华为云OBS:阿里云OSS:腾讯云COSMinIO:AmazonS3(SimpleStorageService)GoogleCloudStorageIBMCloudObjectStorage具体代码使用
- python--数据结构
赵钱孙李的赵
python学习记录者python
1.list列表1.1特点有序:列表按照插入顺序排列。可变:可以添加,删除或者修改列表中的元素。异构:包含不同类型的数据。可重复:可迭代对象:可以使用迭代器协议来遍历列表中的元素,列表支持两种基本的迭代方法:for循环和迭代器协议。ps:迭代器协议要求对象实现两个特殊方法:iter():返回一个迭代器对象next():返回迭代器中的下一个值,如果没有更多值时,它会抛出StopIteration异常
- Python 初始化方法
钢铁男儿
Python
1、初始化方法1.1之前代码存在的问题----在类的外部给对象增加属性将案例代码进行调整,先调用方法再设置属性,观察一下执行效果。提示:在日常开发中,不推荐在类的外部给对象增加属性;如果在运行时,没有找到属性,程序会报错;对象应该包含有哪些属性,应该封装在类的内部;1.2初始化方法当使用**类名()**创建对象时,会自动执行以下操作:1)、为对象在内存中分配空间—创建对象;2)、为对象的属性设置初
- 小波变换Python代码
优游的鱼
小波变换是一种数字信号处理技术,用于对信号进行频域分析和处理。它通常用于信号压缩、滤波和其他信号处理应用中。在Python中,可以使用PyWavelets库来实现小波变换。下面是一个简单的例子,展示了如何使用PyWavelets库对信号进行小波变换:importpywtimportnumpyasnp#定义信号signal=np.random.rand(32)#进行小波变换wavelet='db1'
- Python进阶篇
AI天才研究院
Python实战深度学习实战自然语言处理人工智能语言模型编程实践开发语言架构设计
作者:禅与计算机程序设计艺术1.简介什么是Python?Python是一种高级编程语言,它的设计理念强调代码可读性、简洁性和可扩展性。其语法简洁而清晰,它支持多种编程范式,包括面向对象的、命令式、函数式编程等。Python被认为是“胶水语言”——能够把许多编程语言连接起来并提供一个统一的接口,用以实现各种功能。为什么要学习Python?首先,Python是一种简单易学、功能丰富的语言。在很多情况下
- 初始化一个python项目
joker云
python开发语言
初始化一个Python项目通常涉及以下步骤:选择项目名称:选择一个描述性的名称来代表你的项目。创建项目目录:在你的工作空间中创建一个新目录。设置虚拟环境:使用虚拟环境可以隔离项目依赖,避免不同项目之间的依赖冲突。编写代码:在项目目录中创建Python脚本。管理依赖:使用requirements.txt或Pipfile来管理项目依赖。配置项目:创建setup.py或pyproject.toml文件来
- python里的初始化使用
将将_毛团尾巴
python开发语言pytest
比如我们在函数B想要调用函数A,可以使用调用函数A的函数名,然后得到函数A的return值但是如果调用函数A需要传入参数才能运行,或者不想再去调用整个函数A获取值,此时可以将需要调用的参数初始化,变成全局参数,这样就不需要再次运行函数A,并且不仅仅只能调用得到一个return值(一个函数只能有一个return,且只能return一个变量值)1、普通类里面的初始化使用_init_def__init_
- python小波变换
万元神万得
python
def extract_wavelet_features(data, column_name='声波强度 (AE)', scales=np.arange(1, 4), wavelet='cmor'): emr_values = data[column_name].values coefficients, frequencies = pywt.cwt(emr_values, scales
- 人工智能学习(一)之python入门
power-辰南
大模型算法实战工程python数据库前端
一、引言在当今的软件开发领域,面向对象编程(Object-OrientedProgramming,OOP)已经成为一种主流的编程范式。Python作为一门功能强大且简洁易读的编程语言,对面向对象编程提供了非常完善的支持。无论是开发大型项目、构建数据科学应用,还是进行自动化脚本编写,理解和掌握Python面向对象编程都能让你更高效地完成任务。本文将带你快速入门Python面向对象编程,通过清晰的概念
- 保姆级讲解 python之enumerate()方法,包教包会
查理零世
python开发语言
目录引入find()基本用法进入正题enumerate()基本用法使用enumerate()遍历列表并打印索引和值可以使用自定义起始索引实战演练总结引入在Python中,find()方法主要用于字符串操作,用于查找子字符串在字符串中的位置。它返回的是子字符串第一次出现的索引位置,如果找不到则返回-1。需要注意的是,find()是字符串的方法,而不是列表或数组的方法。那数组怎么办?当然是今天要介绍的
- Transformer架构原理详解:多头注意力(MultiHead Attention)
AI大模型应用之禅
AI大模型与大数据javapythonjavascriptkotlingolang架构人工智能
Transformer,多头注意力,Multi-HeadAttention,机器翻译,自然语言处理,深度学习1.背景介绍近年来,深度学习在自然语言处理(NLP)领域取得了显著进展。传统的循环神经网络(RNN)在处理长序列数据时存在效率低下和梯度消失等问题。为了解决这些问题,谷歌于2017年提出了Transformer架构,并将其应用于机器翻译任务,取得了突破性的成果。Transformer的核心创
- Python笔记#边学边记笔记#文件和异常
月吟荧静
笔记python
一、从文件读取数据1.1读取整个文件pi.digits.txt3.141592653589793238462643383279file_reader.pywithopen("pi_digit.txt")asfile_0:contents=file_0.read()print(contents)3.141592653589793238462643383279withopen("pi_digit.tx
- 华为OD机试E卷 --最多获得的短信条数--24年OD统一考试(Java & JS & Python & C & C++)
飞码创造者
最新华为OD机试题库2024华为odjavajavascriptpythonc语言
文章目录题目描述输入描述输出描述用例题目解析JS算法源码Java算法源码python算法源码c算法源码c++算法源码题目描述某云短信厂商,为庆祝国庆,推出充值优惠活动。现在给出客户预算,和优惠售价序列,求最多可获得的短信总条数。输入描述第一行客户预算M,其中0≤M≤10^6第二行给出售价表,P1,P2,…Pn,其中1≤n≤100,Pi为充值i元获得的短信条数。1≤Pi≤1000,1≤n≤100输出
- 小波变换算法详解(附Python和C++代码)
卢一涵
算法人工智能机器学习c++
小波变换算法是将初始数据分解为低频和高频的两组数据,再由这两组数据重新构造初始数据的算法(与傅里叶变换算法类似)。一般来说小波变换常用于数据降噪领域,也可以用于对数据进行压缩、数据特征提取、特征增强等方面。小波算法很难理解对不对,博主也觉得难理解,不过,算法本身并没有特别复杂,简单说就使把数据分解然后再重构这两个步骤。只要知道这两个步骤,剩下的就是顺水推舟,容易理解多了。小波分解:分解的步骤其实就
- 【Python】解决 ERROR: Exception:Traceback (most recent call last):(亲测有效)
嵌入式职场
【Python数学建模】python人工智能开发语言
目录1、遇到问题2、问题解决1、遇到问题ERROR:Exception:Traceback(mostrecentcalllast):File"F:\Python38\lib\site-packages\pip\_internal\cli\base_command.py",line180,in_mainstatus=self.run(options,args)File"F:\Python38\lib
- 使用python将数据导入postgresql数据中
强强0007
postgresqlpython数据库
1插入一条数据连接postgresql数据库中的origindb数据库,用户为dn。创建表插入一条数据##导入psycopg2包importpsycopg2##连接到一个给定的数据库conn=psycopg2.connect(database="origindb",user="dn",password="000000",host="192.168.10.102",port="5432")##建立游
- 在Python中进行openAI接口调用
MartinGaoC
python开发语言人工智能DALL·E2文心一言gpt-3
在Python中进行openAI接口调用一、环境配置二、安装OpenAISDK三、新建一个index.py文件运行效果四、目前支持的模型列表写在最后一、环境配置确保已经安装了Python后安装pip命令python-mensurepip--default-pip卸载python-mpipuninstallpip查看是否安装成功pip--version二、安装OpenAISDK进入项目文件夹下,安装
- pg使用python编写存储过程_postgresql – 可以在Postgres Python存储过程中使用NLTK
耶律大石
您可以在PL/Python存储过程或触发器中使用几乎任何Python库.概念要理解的关键点是PL/Python是CPython(无论如何都在PostgreSQL中包括9.3);它使用与普通独立Python完全相同的解释器,它只是将它作为库加载到PostgreSQL支持的.有一些限制(如下所述),如果它适用于CPython,它可以与PL/Python一起使用.如果您的系统上安装了多个Python解释
- python md5加密_Python MD5加密实例详解
weixin_39870238
pythonmd5加密
详解PythonMD5加密Python3下MD5加密#由于MD5模块在python3中被移除#在python3中使用hashlib模块进行md5操作importhashlib#待加密信息str='thisisamd5test.'#创建md5对象hl=hashlib.md5()#Tips#此处必须声明encode#若写法为hl.update(str)报错为:Unicode-objectsmustbe
- 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