- archlinux 触摸板手势配置
月巴左耳东
archlinuxarchlinux
文章目录@[toc]libinput-gestures安装libinput-gestures加入input组创建配置文件可用手势启动libinput-gestures停止libinput-gestures自启动libinput-gesturesTouchpadSynapticssynaptics.4在/etc/X11/xorg.conf.d/目录下会有默认的触摸板配置文件,如果用的libinput
- openeuler 22.03 lts sp4 使用 kubeadm 部署 k8s-v1.28.2 高可用集群
月巴左耳东
openeulerKuberneteskubernetes
文章目录@[toc]废话篇这篇文章什么时候写的为什么是openeuler为什么是22.03ltssp4高可用架构题外话干活篇环境介绍系统初始化相关关闭防火墙关闭selinux关闭swap开启内核模块开启模块自动加载服务sysctl内核参数调整清空iptables规则安装各种依赖和工具修改.bashrc文件安装kubeadm和kubelet简化kubectl命令启动kubelet安装containe
- 前端测试结果在浏览器中展示:Jest + Puppeteer 与 Karma + Jasmine 实践
阿贾克斯的黎明
前端前端
目录前端测试结果在浏览器中展示:Jest+Puppeteer与Karma+Jasmine实践引言一、Jest+Puppeteer1.工具简介2.安装依赖3.编写测试文件4.运行测试二、Karma+Jasmine1.工具简介2.安装依赖3.配置Karma4.运行测试三、总结引言在前端开发中,测试是确保代码质量的重要环节。常见的测试包如Jest、Mocha等默认将测试结果输出在控制台。然而,有时我们希
- Maven的单元测试
倾城璧
maven单元测试java
1.单元测试的基本概念单元测试(UnitTesting)是一种软件测试方法,专注于测试程序中的最小可测试单元——通常是单个类或方法。通过单元测试,可以确保每个模块按预期工作,从而提高代码的质量和可靠性。2.安装和配置JUnit5使用Maven配置JUnit5首先,在项目的pom.xml文件中添加JUnit5的依赖项。4.0.0com.example.myprojectmy-application1
- Google Chrome-便携增强版[解压即用]
私人珍藏库
chrome前端
GoogleChrome-便携增强版链接:https://pan.xunlei.com/s/VOI0OyrhUx3biEbFgJyLl-Z8A1?pwd=f5qa#a特点描述√无升级、便携式、绿色免安装,即可以覆盖更新又能解压使用!√此增强版,支持右键解压使用√加入Chrome增强软件补丁Chrome++1.8.9(version.dll)﹂Chrome++特点(原始作者@shuax,新作者@Bu
- centos7搭建flink1.18并以 standalone模式启动
咸鱼c君
flink大数据大数据
版本组件版本scala2.12.20java1.8.0_181flink1.18.1关于scala和Java的安装参考:scala和java安装flink下载地址:flink下载链接集群规划bigdata01bigdata02bigdata03masterworkerworkerworker安装1.创建存放路径三个节点都需要操作用于存放安装包:mkdir/home/software/用于存放存放解
- python详细安装教程-python安装教程 Pycharm安装详细教程
编程大乐趣
这篇文章主要介绍了python的安装教程,和Pycharm的安装详细教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下python安装教程和Pycharm安装详细教程,分享给大家。首先我们来安装python1、首先进入网站下载:点击打开链接(或自己输入网址https://www.python.org/downloads/),进入之后如下图,选择图中红色圈中区域进行下载。2、下载完成后如下图所示
- linux telnet rpm 安装包,centos7系统之telnet命令rpm包安装
clowntom
linuxtelnetrpm安装包
#centos7系统之telnet命令rpm包安装[root@ywb~]#cdrpm/[root@ywbrpm]#ll总用量224-rw-r--r--1rootroot5904010月1713:24telnet-0.17-47.el6.x86_64.rpm-rw-r--r--1rootroot3736010月1713:24telnet-server-0.17-47.el6.x86_64.rpm-r
- LitGPT - 20多个高性能LLM,具有预训练、微调和大规模部署的recipes
伊织产研
#AI开源项目LitGPT预训练微调部署
文章目录一、关于LitGPT二、快速启动安装LitGPT高级安装选项从20多个LLM中进行选择三、工作流程1、所有工作流程2、微调LLM3、部署LLM4、评估LLM5、测试LLM6、预训练LLM7、继续预训练LLM四、最先进的功能五、训练方法示例六、项目亮点教程一、关于LitGPTLitGPT用于使用、微调、预训练和部署LLMLightning快速⚡⚡每个LLM都是从头开始实现的,没有抽象和完全控
- 使用Python和API实现文本翻译功能
FLK_9090
python开发语言文本翻译谷歌翻译
在日常开发中,我们常常需要将文本从一种语言翻译成另一种语言。本文将介绍如何使用Python和一个简单的翻译API来实现这一功能。我们将使用requests库来发送HTTP请求,并处理API响应。环境准备首先,我们需要确保已经安装了requests库。如果你还没有安装,可以使用以下命令进行安装:pipinstallrequests代码实现下面是一个完整的Python脚本示例,它使用了一个公开的翻译A
- Prometheus+grafana+alertmanager告警平台搭建
zhangshaohuas
prometheus
目录一:基本组件理解二:告警平台架构图三:prometheus部署3.1:创建用户3.2:下载安装包3.3:解压3.4:设置prometheus.yml3.5:将prometheus设置为系统服务3.6:启动prometheus服务四:node_exporter部署4.1:下载安装包:4.2:解压4.3:将node_exporter设置为系统服务4.4:启动node_exporter服务五:gra
- 实战 | Docker+Jmeter+InfluxDB+Grafana 搭建性能监控平台
测试小迷糊
压力测试
1.为什么要搭建性能监控平台?本身带有聚合报告如下图所示:这个报告有几个很明显的缺点::中获取数据并以特定的模板进行展示2、性能监控平台部署实践本文的重点并不是介绍Docker,所以不了解的小伙伴需要自己去学习一下基本的安装和操作,可参考之前发送的。1)首先去下载InfluxDB的镜像,下载很简单,直接pull就好,默认为下载最新的镜像:$dockerpullinfluxdb镜像,在访问8083端
- Flink CDC的安装配置
我的K8409
Flinkflink大数据
FlinkCDC是基于ApacheFlink构建的,用于捕获数据库表中数据的变更情况,包括数据的插入、更新和删除操作,并能将这些变更数据以流的形式实时传输到其他系统中进行处理和分析。传统的数据同步工具往往是定时任务,存在时间延迟。而FlinkCDC能实时捕获数据库的变更数据,一旦有数据变化,立即将其同步到目标系统,让数据在各个系统之间保持高度一致,几乎不存在延迟。CDC含义:变更数据捕获(Chan
- Macbook 装win系统后,断电拔下电源屏幕变暗,改显卡设置
NUA努努
macbookmacbook屏幕显卡设置
Macbook装win系统后,断电拔下电源屏幕变暗,改显卡设置,打开intel显卡控制中心,进入电源点击使用电池,显示器节能技术-禁用。
- HBase Shell基本操作
wanglingli95
大数据开发hbase数据库大数据
一、进入HbaseShell客户端先在LinuxShell命令行终端执行start-dfs.sh脚本启动HDFS,再执行start-hbase.sh脚本启动HBase。如果Linux系统已配置HBase环境变量,可直接在任意目录下执行hbaseshell脚本命令,就可进入HBaseShell的命令行终端环境,exit可以退出HBaseShell(我安装的是伪分布式的HBase)。(1)help帮助
- NameError: name ‘opencv‘ is not defined
两京一十三省的希望
opencv人工智能pycharmyolo深度学习
NameError:name'opencv'isnotdefined错误通常意味着你在Python代码中尝试使用opencv但该名称未定义。这种情况通常发生在你尝试调用一个库或模块的功能,但没有正确导入它。如果你想使用OpenCV进行计算机视觉任务,你需要确保正确安装和导入opencv-python库。下面是一些步骤,帮助你解决这个问题。1.安装OpenCV首先,确保你已经安装了OpenCV库。在
- Neo4j 单机和集群部署教程
闲人编程
大数据集群部署教程neo4j大数据集群单机部署图形数据库ACID
目录Neo4j单机和集群部署教程第一部分:Neo4j概述1.1Neo4j的特点1.2Neo4j的应用场景第二部分:Neo4j单机部署教程2.1安装Neo4j2.1.1下载和安装Neo4j2.1.2启动Neo4j2.1.3配置Neo4j2.2单机部署案例代码实现(Python)2.2.1安装Neo4jPython驱动2.2.2Python示例代码2.3常见问题及解决方法2.3.1Neo4j无法启动2
- 使用Python批量加密和解密PDF文件
NoABug
pdfpython
使用Python批量加密和解密PDF文件现在,PDF文件已经成为我们日常工作中必不可少的文档格式之一。对于一些重要的PDF文档,我们常常需要加密以保证信息的安全性。但是,手动一个一个加密PDF文件实在是太麻烦了。为了更高效地应对这个问题,我们可以使用Python编写脚本来批量完成PDF文件的加密和解密。首先,我们需要安装PyPDF2库,这个库可以很方便地对PDF文件进行操作,包括加密、解密、合并、
- 安装HBase-2.4.12 (hadoop3.3.1)
不饿同学
大数据hbasebigdatahadoop
1.下载https://www.apache.org/dyn/closer.lua/hbase/2.4.12/hbase-2.4.12-bin.tar.gz节点角色配置节点MasterZooKeeperRegionServernode001yesyesyesnode002backupyesyesnode003noyesyes2.解压下载的文件,并切换到新创建的目录。(base)[root@node
- python安装-Download
编程大乐趣
OpenPGPPublicKeysSourceandbinaryexecutablesaresignedbythereleasemanagerorbinarybuilderusingtheirOpenPGPkey.Releasefilesforcurrentlysupportedreleasesaresignedbythefollowing:Releasefilesforolderreleases
- Python实现公钥加解密RSA算法
小团团0
pythonlinux网络
在Python中实现RSA公钥加密算法通常涉及几个步骤:生成密钥对(公钥和私钥)、使用公钥加密数据、以及使用私钥解密数据。Python的cryptography库提供了强大的加密功能,可以方便地实现RSA算法。以下是一个简单的例子,展示了如何使用cryptography库来生成RSA密钥对、加密和解密数据:首先,确保你已经安装了cryptography库。如果没有安装,可以使用pip进行安装:pi
- 【2025年最新】谷歌浏览器Mac版下载安装使用指南:建议收藏!
Java徐师兄
常用软件macoschrome浏览器下载chrome下载安装mac谷歌浏览器下载
【2025年最新】谷歌浏览器Mac版下载安装使用指南:建议收藏!大家好,欢迎来到程序员徐公的技术小课堂!今天要给大家带来的是谷歌浏览器(Chrome)Mac版的安装与使用教程!Chrome作为全球最受欢迎的浏览器之一,凭借其简洁、高效和稳定的特性,成为了无数开发者和普通用户的首选浏览器。在本篇教程中,我将带你深入了解谷歌浏览器Mac版的安装、功能、特性以及一些隐藏的技巧。即使你是新手,也能轻松上手
- 2024年Python最新下载安装教程,附详细图文,持续更新
Java徐师兄
Python教程python开发语言Python下载安装Python安装Python3下载安装教程
大家好,我是Java徐师兄,今天为大家带来的是Python3的下载安装教程,适用于所有Python3版本,感兴趣的可以看一下文章目录简介一、Python的下载1网盘下载地址(下载速度比较快,推荐)2官网下载地址二、Python的安装三推荐阅读简介Python是一种高级、解释型、面向对象的编程语言,由GuidovanRossum于20世纪90年代初开发。Python语法简洁、易读、功能强大,被广泛应
- 使用Ollama本地化部署DeepSeek
大模型llm人工智能
1、Ollama简介Ollama是一个开源的本地化大模型部署工具,旨在简化大型语言模型(LLM)的安装、运行和管理。它支持多种模型架构,并提供与OpenAI兼容的API接口,适合开发者和企业快速搭建私有化AI服务。Ollama的主要特点包括:轻量化部署:支持在本地设备上运行模型,无需依赖云端服务。多模型支持:兼容多种开源模型,如LLaMA、DeepSeek等。高效管理:提供命令行工具,方便用户下载
- linux升级openssl1.1.1,CentOS 7 升级 openssl 1.1.1
weixin_39730801
CentOS7自带的是openssl1.0.2,某些软件需要更高的版本openssl因此就有了这篇文章。为考虑到系统兼容性,建议不覆盖原来的版本,而采用安装到/usr/local/openssl111的路径。本文安装后不对系统做任何兼容性的破坏,增加的文件和目录如下:/usr/local/openssl111//etc/ld.so.conf.d/openssl111.conf编译后的RPM包名为o
- 电脑安装python3.7说缺少-centos7:python3.7 缺少_ssl模块问题
weixin_37988176
在centos7上安装python3.7,很多时候提示缺少安装_ssl模块,这导致很多依赖于ssl的模块无法正常安装,如ulib3,requests。百度网上也提供很多方法,诸如安装liber.ssl来解决。经过一番探索后,个人总结如下:(1)、python3.7的_ssl模块依赖openssl1.0.2或者1.1以上版本,如果openssl版本低于以上版本,将无法正常安装python3.7的ss
- centos7 安装python3.8运行导入ssl报错,亲测验证有效版
一只勤奋爱思考的猪
ssl网络协议网络
centos安装python3.7时遇到如下问题,查阅知需要的openssl版本最低为1.0.2,但是centos默认的为1.0.1,所以需要重新更新opensslimport_ssl#ifwecan'timportit,lettheerrorpropagateImportError:Nomodulenamed_ssl1、安装依赖库:yuminstall-yzlibzlib-devopenssl-
- 如何在本地电脑上安装和使用 DeepSeek R-1
知识大胖
NVIDIAGPU和大语言模型开发教程电脑
简介似乎每个人都在谈论DeepSeekR-1是中国人工智能公司DeepSeek开发的全新开源人工智能语言模型。一些用户声称,其推理能力与OpenAI的o1相当,甚至更好。目前,DeepSeek是免费使用的,这对用户来说是个好消息,但也带来了一些疑问。随着用户量的激增,他们如何管理服务器成本?硬件运行成本不可能便宜吧?这里最合乎逻辑的一点是——数据。数据是人工智能模型的命脉。他们可能以某种方式收集用
- linux(CentOS 7)系统源码安装python3.6( setuptools 和 pip )
牛奶可乐anmmm
pythonsetuptoolspiplinux
环境:linux(CentOS7)安装必备软件包:yum-yinstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-develxz-develgccpython3.6安装源:下载地址:https://www.python.or
- 解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
酷大有
升级openssl1.下载最新版opensslhttps://www.openssl.org/source/openssl-1.1.1d.tar.gz2.编译安装cdopenssl-1.1.1d./config--prefix=/usr/local/opensslno-zlib#不需要zlibmakemakeinstall3.备份原配置mv/usr/bin/openssl/usr/bin/open
- 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