- Cline中配置MCP
Alexon Xu
MCP
1、自动安装MCP默认AI生成的配置会报错:spawnnpxENOENTspawnnpxENOENT,然后排查了npx安装都是OK的,需要使用cmd运行npx,配置如下:{"mcpServers":{"sequentialthinking":{"autoApprove":[],"disabled":false,"timeout":60,"command":"cmd.exe","args":["/c
- XEN和KVM云计算虚拟化技术
电脑天空
视频教程云计算kvmxen
一、XEN和KVM云计算虚拟化技术01_虚拟化技术基础原理详解02_Xen虚拟化及DomU的实现03_Xen基于iscsi共享实现实时迁移04_kvm虚拟化下载链接:链接:http://pan.baidu.com/s/1milQbNU密码:90ct二、xen虚拟化技术实战详解视频教程01-xen基本原理02-xen安装与使用详解03-xen基本原理及安装使用总结04-xen的使用详解05-xen的
- 【云原生技术】docker pull postgres:15-alpine request returned 500 Internal Server Error for API
阿寻寻
云原生dockereureka
dockerpullpostgres:15-alpinerequestreturned500InternalServerErrorforAPIrouteandversionhttp://%2F%2F.%2Fpipe%2FdockerDesktopLinuxEngine/v1.49/images/create?fromImage=docker.io%2Flibrary%2Fpostgres&tag=
- gpfs的安装配置与部署
杰克逊的日记
linux运维服务器gpfs
一、系统准备1.环境要求操作系统:RHEL7.4/7.5/7.6/8.x、SUSELinuxEnterpriseServer12/15等。所有节点需保持相同内核版本(uname-r检查)。硬件:至少3个节点(1个管理节点+2个数据节点)。每节点至少2块磁盘(1块系统盘,1块用于GPFS数据)。双网卡(管理网络:192.168.1.0/24,数据网络:10.0.0.0/24)。2.基础配置#1.关闭
- 软件调试纵横谈-18-页堆
张某人的胡思乱想
windbgdebugwindows
18.页堆_哔哩哔哩_bilibili周日继续看录像学习,页堆。书接上回,FreCheck程序在free时才检测到堆块被破坏,需要启动页堆,提前到堆块被破坏时就出异常。设置gflag标记打开一个管理员权限的命令行窗口。PSC:\cpp\vc2022\FreCheck\Debug>gflags.exe-i.\FreCheck.exeNoRegistrySettingsforFreCheck.exee
- Python中for循环使用enumerate() 函数
Hongjie Shen
python列表django
Python中for循环使用enumerate()函数enumerate()是python的内置函数、适用于python2.x和python3.xenumerate参数为可遍历/可迭代的对象(如列表、字符串、元组)实例:>>>seq=['one','two','three']>>>fori,elementinenumerate(seq):...printi,element...0one1two2t
- Pingora vs. Nginx vs. 其他主流代理服务器性能对比
中国lanwp
nginx运维
Pingoravs.Nginxvs.其他主流代理服务器性能对比核心对比概览特性Pingora(Cloudflare)NginxEnvoyHAProxyCaddyTraefik开发公司CloudflareNginx,Inc/F5Lyft/CNCFHAProxyTechApache2.0社区Containous核心语言RustCC++CGoGo并发模型异步/多线程事件驱动事件驱动事件驱动协程协程HTT
- 根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
sitelist
nt4源代码分析FileObject_SCBReadIndexBufferStreamCommonNtfsCreateInter
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的第一部分:0:kd>gBreakpoint9hitNtfs!ReadIndexBuffer:f717388655pushebp0:kd>kc#00Ntfs!ReadIndexBuffer01Ntfs!FindFirstIndexEntry02Ntfs!NtfsUpdateFileNameInIndex03Ntfs!
- 代码随想录算法训练营Day30 | 452. 用最少数量的箭引爆气球 435. 无重叠区间 763.划分字母区间
I won.
数据结构算法
452.用最少数量的箭引爆气球问题描述:有一些球形气球贴在一堵用XY平面表示的墙面上。墙面上的气球记录在整数数组points,其中points[i]=[xstart,xend]表示水平直径在xstart和xend之间的气球。你不知道气球的确切y坐标。一支弓箭可以沿着x轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为xstart,xend,且满足xstart≤x≤
- 常见编码小结
Bruce_xiaowei
笔记总结经验网络安全密码学
常见编码小结以下是关于Base64、Base32、Base16、uuencode、xxencode、URL编码、jjencode、aaencode的详细介绍:1.Base64定义:Base64是一种基于64个可打印字符(A-Z、a-z、0-9、+、/,填充符=)的二进制到文本编码方案,用于将二进制数据(如图片、文件)转换为ASCII文本格式,便于文本协议传输(如电子邮件、JSON)。特点:数据膨胀
- docker compose yml 启动的容器中,如何使用linux环境变量赋值
SunTecTec
Dockerdocker容器运维
在DockerCompose中,可以通过环境变量(${VAR}或$VAR)来动态配置容器。以下是几种常见的使用方式-使用env_file加载变量文件可以单独定义一个环境变量文件(如app.env),然后在docker-compose.yml中加载:services:app:image:nginxenv_file:-./app.env#加载变量文件app.env示例:DB_HOST=mysqlDB_
- redis各种错误解决办法org.springframework.data.redis.RedisSystemException: Cannot read Redis info; nested exc
王孝点
redis
org.springframework.data.redis.RedisSystemException:CannotreadRedisinfo;nestedexceptionisjava.lang.IllegalArgumentException:Malformed\\uxxxxencoding.经过大量实践测试发现报各类redis非问题性错误都与版本有关,更换Redis版本问题即可解决。
- Linux虚拟化技术:从Xen到KVM
学习等保ing......
linux运维服务器
Linux虚拟化技术的发展是一个不断演进的过程,其中Xen和KVM(基于内核的虚拟机)是两个非常重要的里程碑。下面是对这两种技术的简要回顾和发展概述:XenXen是最早被广泛采用的开源虚拟化平台之一,它最初由剑桥大学开发,并于2003年发布。Xen采用了一种称为准虚拟化(Paravirtualization)的技术,允许运行经过特殊修改的操作系统作为“来宾”(Guest),这些操作系统需要包含特定
- Xen Intro- version 1.0
xianfengdesign
Xenxenmigrationfilestructdomainlinux
XenIntro-version1.0:目录IntroductionXenandIA32ProtectionModesTheXenddaemon:TheXenStore:VT-x(virtualtechnology)processors-supportinXenVmxloaderVT-i(virtualtechnology)processors-supportinXenAMDSVMXenOnSol
- 虚拟Python 环境构建器virtualenv安装(macOS版)
亚林瓜子
pythonvirtualenvmacospipx
前提之前我们使用pyenv安装好了Python3.13.3,并且,全局都使用这个版本的python。现在我们来安装virtualenv。pipx安装brewinstallpipxpipxensurepathsudopipxensurepath--global#optionaltoallowpipxactionswith--globalargument安装virtualenvpipxinstallv
- 热修复——Tinker的集成与使用(1)
2401_84148974
程序员python开发语言
2)开启multiDexdefaultConfig{…multiDexEnabledtrue}3)应用tinker的gradle插件这部分可先不管,在第三部分《Tinker的配置及任务》的第2节《配置Tinker与任务》中会添加。可跳过这部分继续往下看。//applytinker插件applyplugin:'com.tencent.tinker.patch三、Tinker的配置及任务1、开启支持大
- 理解 Open vSwitch (OVS)
欧先生^_^
云原生
OpenvSwitch(简称OVS)是一个开源的虚拟交换机,主要用于虚拟化环境(如KVM、Xen、Docker)和软件定义网络(SDN)。它类似于物理交换机,但在软件层面实现,可以灵活地管理虚拟网络流量。1.OpenvSwitch的核心概念(1)虚拟交换机(vSwitch)物理交换机用于连接物理设备(如服务器、电脑),而OVS是软件实现的交换机,用于连接虚拟机(VM)、容器和物理网络。它支持VLA
- 云南财经大学的深澜认证协议
zhou_bw
PythonJavapythonjava深澜
简单介绍了云财关于校园网需要注意的前言基于huxiaofan1223的文章和zu1k的开源项目来对我学校做的一些补充和修改一、云财的深澜校园网直接套用不能够使用,我用的是zu1k的开源代码才做成功二、关于i的加密和info加密1.encode与xencode开始我以为encode是新的加密手段,但是用zu1k的xencode加密成功登录后我才发现是一样的网页JavaScript的源码:_encod
- 安装Mysql
牛牛的快乐时光
mysqladbandroid
LinuxEnvironmentAWSLinux7.1安装mysql57参考tecadminyumupdateyuminstallmysql57-serverservicemysqldstarthkconfigmysqldonmysql_secure_installation#rootpasswordset如果设置root密码报错,则使用mysql_upgrade更新mysql的bugCentOs
- 华为ac配置radius认证服务器_华为设备配置802.1x Radius服务器远端认证
osakadorisss
组网需求用户通过RouterA访问网络。RouterA与RADIUS服务器之间路由可达。为了保证网络的安全性,要求在用户接入网络时进行认证。认证成功后可以正常访问网络。图1802.1x远端认证组网图操作步骤RouterA的配置V200R007及之前版本:#vlanbatch10#dot1xenable//使能全局802.1x认证#radius-servertemplateradius1//配置RA
- 云计算虚拟化
Cho~
云计算
文章目录虚拟化技术什么是虚拟化服务器虚拟化cpu的虚拟化内存虚拟化管理硬盘的虚拟化网络虚拟化IO虚拟化Intel虚拟化技术主流的虚拟化技术虚拟化技术对比KVMXenHyper-VVMwareESX/ESXi虚拟化服务平台Libvirt基于KVM的虚拟化服务平台虚拟化技术什么是虚拟化虚拟化是云计算的基础。简单来说,虚拟化就是在一台物理服务器上,运行多台“虚拟服务器”。这种虚拟服务器,也叫虚拟机(VM
- 阿里云服务器技术纵览:从底层架构到行业赋能
国际云
阿里云服务器架构
一、技术基座:分布式架构的工程哲学阿里云服务器的核心竞争力源自其自研的飞天操作系统(Apsara),这套分布式系统以“高可用性、弹性扩展、全球协同”为设计原则,构建了跨越物理边界的计算集群。其技术实现包含三大核心模块:虚拟化引擎:基于KVM/Xen技术实现硬件资源解耦,通过神龙芯片组(CIPU)将物理服务器转化为可动态分配的虚拟资源池,单集群支持10万台服务器协同工作。存储革命:盘古2.0分布式存
- 英飞凌XENSIV™ MEMS麦克风技术赋能ELEHEAR OTC助听器,开启听力新纪元
WPG大大通
Infineon产线人工智能大大通助听器业界资讯麦克风
你是否注意到,身边越来越多人常说“你说什么,我没听清?”这句简单话语的背后,反映的是日益严峻的听力问题。根据世界卫生组织(WHO)的数据,全球约有4.66亿人患有听力障碍。听力损失不仅阻碍人际交流,还可能引发孤独、焦虑等心理健康问题,甚至导致认知功能退化。随着人口老龄化加剧以及生活中噪声暴露增多,听力健康已成为各年龄段都需关注的重要议题。革新力量:ELEHEAR与英飞凌的携手合作在听力健康领域,英
- 低成本云服务器选型指南:技术架构与性能评估
小艺E
服务器aws腾讯云
一、云计算基础架构解析云服务器本质是基于虚拟化技术实现的弹性计算服务,其核心技术包括:虚拟化层:采用KVM/Xen/Hyper-V等虚拟化技术,实现物理资源的逻辑隔离资源调度:通过OpenStack等云管理平台实现计算资源的动态分配存储架构:分布式存储系统(如Ceph)保障数据持久性和可用性网络虚拟化:SDN技术实现灵活的网络配置和QoS保障二、学生应用场景技术需求分析开发测试环境:最低配置要求:
- Unity框架集合(持续更新)
lihuixiaodui
unity游戏引擎
游戏开发引擎CE游戏引擎-CRYENGINEUE游戏引擎-UnrealEngineVulkan图形API游戏引擎-BansheeEngine跨平台游戏引擎-GODOTC#开源跨平台游戏引擎-xenko跨平台渲染框架-The-ForgeGoogle开源跨平台基于物理的渲染引擎-filament从零开始手敲次世代游戏引擎-GameEngineFromScratch框架Unity基础框架-MyUnity
- 源码编译打包_Godot引擎的编译和打包,以及分享一个地平线的云层实现
weixin_39945178
源码编译打包
godot最近先是获得了epic的投资,4.0看上去又是视口改变又是重构底层的大写一个吊,以前是比较关注godot和xenko,但是现在来看,godot更像是当年blender出道的味道,说不定哪天godot就是下一个blender。最近越来越喜欢这个小引擎,主要是因为它太小了,一个30多M的exe,直接集成了开发工具,吊的一批,又是基于类python的语法和glsl简直不要太爽好吧,还有c#。有
- OWASP出品:Xenotix XSS漏洞测试框架及简单使用
weixin_30598225
shelljavascriptphpViewUI
OWASPXenotixXSSExploitFramework是一个高效的跨站脚本漏洞(XSS)检测和攻击测试框架。它通过特有的三大浏览器引擎(包括Trident,WebKit和Gecko)进行安全扫描检测,并且其号称拥有全世界第二大的XSS测试Payload,同时具有WAF绕过能力。扫描模块ManualModeScannerAutoModeScannerDOMScannerMultiplePar
- 代码随想录算法训练营第二十六天
写个博客
代码随想录打卡算法
LeetCode题目:452.用最少数量的箭引爆气球435.无重叠区间763.划分字母区间2799.统计完全子数组的数目(每日一题)其他:今日总结往期打卡452.用最少数量的箭引爆气球跳转:452.用最少数量的箭引爆气球学习:代码随想录公开讲解问题:有一些球形气球贴在一堵用XY平面表示的墙面上。墙面上的气球记录在整数数组points,其中points[i]=[xstart,xend]表示水平直径在
- Ubuntu安装Docker(官方教程)
orcer1994
日常笔记dockerubuntulinux
Ubuntu安装Docker(参考官方教程)一、该教程适用版本:UbuntuFocal20.04(LTS)UbuntuEoan19.10UbuntuBionic18.04(LTS)UbuntuXenial16.04(LTS)二、安装步骤1、安装DockerEngine#更新源sudoaptupdate#安装必要软件sudoaptinstall\apt-transport-https\ca-cert
- 适合IIS部署网页应用的编程语言
余渔鱼1123
笔记
直接部署在IIS上的语言/技术PHP使用FastCGI模块直接集成安装PHPManagerforIIS可简化配置示例配置:在web.config中添加处理程序映射指向php-cgi.exeNode.js使用iisnode模块实现直接集成允许Node.js应用在IIS进程中运行支持进程管理、负载均衡和自动重启Perl通过PerlEx或FastCGI模块集成处理程序映射到Perl解释器Ruby通过Fa
- 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