- 使用DeepSeek建立一个智能聊天机器人0.1
yehaiwz
python机器人开发语言
我对代码进行进一步的完善,增加更多的节点连接及功能运用,并确保配置文件config.json的内容更加丰富和详细。以下是完善后的代码和config.json文件内容。完善后的代码importtkinterastkfromtkinterimportscrolledtext,filedialog,messageboximportrequestsimportosimportthreadingimport
- kafka动态监听主题
S Y H
微服务组件kafkalinq分布式
简单版本importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.kafka.core.ConsumerFactory;importorg.springframework.kafka.listener.ConcurrentMessageListenerContainer;import
- MessageBox设置弹窗大小
饼干帅成渣
c++Message
MessageBox是WindowsAPI中的一个函数,用来创建简单的对话框。但默认情况下,用户不能直接调整它的大小,因为它是系统预定义的对话框,通常用于显示简短的消息或询问简单的确认。首先,我需要确认MessageBox函数本身是否支持设置大小。MessageBox和MessageBoxEx这些函数的参数里并没有指定窗口大小的选项,比如像cx和cy这样的参数。所以可能常规的方法无法直接改变Mes
- Git commit type 规范
老衲呢
Gitgit
gitcommit提交规范提交规范:gitcommit-m“feat(新增暂停功能):新增执行推广任务暂停功能”详情请参考:阮雪峰的Commitmessage规范(点击可转跳)(https://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html)#主要typefeat:增加新功能fix:修复bug#特殊typedocs:只改
- Spring Boot中使用RabbitMQ(2)
D1561691
程序员java-rabbitmqspringbootrabbitmq
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!MessageBroker与AMQP简介MessageBroker是一种消息验证、传输、路由的架构模式,其设计目标主要应用于下面这些场景:消息路由到一个或多个目的地消息转化为其他的表现方式执行消息的聚集、消息的分解,并将结果发送到他们的目的地,然后重新组合相应返回给消息用户调用Web服务来检索数据响
- MD5加密
计蒙不吃鱼
Android开发相关MD5MD5加密
简介:MD5的全称是Message-DigestAlgorithm5(信息-摘要算法),它是一种单向加密算法,可以将输入的信息加密转换为128位固定长度的散列值,用于检验数据传输过程中的完整性。在90年代初由MITLaboratoryforComputerScience和RSADataSecurityInc的RonaldL.Rivest开发出来,经MD2、MD3和MD4发展而来。出现的两种观点:1
- c++不使用MessageBox弹出弹窗,绘制图形
饼干帅成渣
c++开发语言
WinAPI创建窗口。步骤包括注册窗口类、创建窗口实例、显示窗口,并处理消息循环。可能需要编写窗口过程函数来处理消息,比如WM_PAINT来绘制窗口内容,WM_CLOSE来处理关闭事件。在C++中如果不使用MessageBox创建弹窗,可以使用WindowsAPI直接创建自定义窗口。以下是使用纯Win32API创建简单弹窗的示例:#include#include//声明全局字符串constwcha
- 基于canoe的bootload刷写程序
劉小帅
bootloadc语言单片机mcu
基于canoe的bootload刷写程序这是我第一次在CSDN上发布自己的内容,之前一直借鉴别人的成果,这次也把我做的一个bootload代码发布出来供大家交流。自带注释,如有疑问可以在网上搜索或者咱们共同讨论。此次有两个难点,文件获取和crc_32校验。流程图如下源代码如下。/*@!Encoding:936*/includes{}variables{longmNewPage;message0x7
- Spring Cloud Stream与RabbitMQ 死信队列
y_bccl27
RabbitMQ
RabbitMQ的TTL全称为Time-To-Live,表示的是消息的有效期。消息如果在队列中一直没有被消费并且存在时间超过了TTL,消息就会变成"死信"(DeadMessage),后续无法再被消费。引入SpringCloudStream与RabbitMQ整合的pom依赖,其版本为3.0.7.RELEASEorg.springframework.cloudspring-cloud-starter-
- org.apache.kafka.common.errors.TimeoutException
一张假钞
apachekafka分布式
个人博客地址:org.apache.kafka.common.errors.TimeoutException|一张假钞的真实世界使用kafka-console-producer.sh向远端Kafka写入数据时遇到以下错误:$bin/kafka-console-producer.sh--broker-list172.16.72.202:9092--topictestThisisamessage[20
- android 串口通信代码
weixin_44693887
移动开发androidjava开发语言androidstudio
以下是在Android平台上实现串口通信的代码示例。要实现串口通信,需要先创建一个类来处理串口通信。下面是一个名为SerialPortHelper的串口帮助类的示例:importandroid.content.Context;importandroid.os.Handler;importandroid.os.Message;importjava.io.FileDescriptor;importja
- 深入探究 MQTT 压测性能
程序员的世界你不懂
百度经验分享
你是否想过,在高并发的情况下,你的MQTT服务器还能稳定运行吗?MQTT(MessageQueuingTelemetryTransport)作为一种轻量级的物联网通信协议,已经广泛应用于各个领域。然而,随着物联网设备数量的激增,MQTT服务器的性能面临着巨大的挑战。那么,如何对MQTT进行压测,评估其性能呢?在本文中,我们将深入探讨MQTT压测性能的相关技术,包括测试工具、测试方法和性能指标等。通
- 计算机网络——TCP/IP协议概述
爱吃芝麻汤圆
计算机网络计算机网络tcp/ip网络协议
TCP/IP协议概述1.应用层(ApplicationLayer)1.1功能应用层是用户直接接触的层次,负责为用户提供具体的应用功能,比如浏览网页(HTTP)、发送邮件(SMTP)、文件传输(FTP)等。应用层的数据称为消息(Message)或报文(Message)。1.2用户态和内核态应用层工作在操作系统的用户态,而传输层及以下工作在内核态。应用层通过系统调用(如send()、recv())与内
- 怎样显示子对话框标题栏上的图标
pcseye
这面的代码应该在OnInitDialog的函数中调用。HICONhIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);SendMessage(WM_SETICON,TRUE,(LPARAM)hIcon);SendMessage(WM_SETICON,FALSE,(LPARAM)hIcon);
- sendmessage WM_PAINT 无效(6月19日)
Randyqiu
VC/MFCapplicationsystemfunctionprocessingeachbutton
今天意外发现替一哥们做的程序还有漏洞,点击弹出来的对话框的BUTTON时,发现主窗口(实际是VIEW啦)不自动重绘以产生相应图形。我就纳闷了,我明明已经给VIEW类发送WM_PAINT重绘消息了啊,怎么回事?搜索MSDN,发现以下一段话:TheWM_PAINTmessageisgeneratedbythesystemandshouldnotbesentbyanapplication.Toforce
- WM_SETICON的一点注意
ProgrammingRing
Win32任务
今天用SendMessage(hwnd,WM_SETICON,ICON_BIG,hIcon);改图标的时候,看到点问题,记录下ICON_BIG大图标所说的是Alt+Tab后的显示图标ICON_SMALL小图标是标题栏的图标和任务栏里显示的图标如果没有设置小图标,那么以后只设大图标,Alt+Tab、标题栏、任务栏都会变,但是,一旦设置过了小图标,不管是初始化还是后来再设置的,只要设置过一次,要改变标
- call、apply、bind 详解
yqcoder
javascript前端开发语言
在JavaScript中,`call`、`apply`和`bind`是Function对象的三个重要方法,它们都与函数的上下文(`this`值)和参数传递有关。一、`call`方法1.语法function.call(thisArg,arg1,arg2,...)2.示例代码constperson={ name:"John", greet:function(message){ console.log
- C#流转输分段上传
工厂修程序
C#wcfC#
wcf流传输上传文件不能分段上传的问题已解决。技巧就是上传的流参数不用FileStream用MemoryStream即可。以下是代码:服务契约类:[ServiceContract()]publicinterfaceIMyServer{[OperationContract]voidUploadFile(UploadPartMessagemsg);}消息契约:[MessageContract]publ
- matinal:SAP ABAP 双击ALV弹出新窗口,并进行数据刷新
SAPmatinal
ABAP技术大数据数据库oracle开发语言人工智能
ALV展示后,双击某行,再弹出一个ALV某些信息,然后,响应弹出ALV的事件。执行显示spfli数据,双击某行,根据carrid获取sflight表数据,弹出alv展示sflight数据,然后双击sflight数据,弹出message显示双击了第几行。新建9001空白屏幕*&--------------------------------------------------------------
- Vue中使用el-upload+XLSX实现解析excel文件为json数据
makamkamakbakSOSO
工作笔记vue.jsexceljson
安装
[email protected]代码实现html部分批量导入只能上传.xlsx文件-->js部分handlePreview(file){console.log(file)},handleExceed(files,fileList){this.$message.w
- 【Android知识笔记】Handler机制(二)
川峰
Android知识笔记androidHandler线程通信
Handler消息延时是怎么实现的看下面几个问题:1)消息延时是做了什么特殊处理么?2)是发送延时了,还是消息处理延时了?3)延时精度怎么样?Handler.sendMessageDelayed()方法:publicfinalbooleansendMessageDelayed(@NonNullMessagemsg,longdelayMillis){
- CTF-WEB: 利用Web消息造成DOM XSS
A5rZ
xss网络安全
如果索引中有类似如下代码window.addEventListener('message',function(e){document.getElementById('ads').innerHTML=e.data;});这行代码的作用是将接收到的消息内容(e.data)设置为id为'ads'的元素的HTML内容那么在受害者段执行如下代码会导致DOM污染','*')">参考实验:使用Web消息的DOM
- libdmtx使用总结
larry_dongy
软件与库libdmtx
本文档仅记录自己使用libdmtx这个库过程中的总结。1.基础使用DmtxMessage*msg;DmtxRegion*reg;if(!src.data)coutoutputfnc1=DmtxUndefined;dec->edgeMin=DmtxUndefined;dec->edgeMax=DmtxUndefined;dec->scanGap=1;dec->squareDevn=cos(50*(M
- Protobuf
weixin_34352449
java数据库
Protobuf介绍ProtocolBuffers是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或RPC数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式,被广泛应用在网络传输Protobuf编码原理MessageBufferMessageBuffer是指protobuf序列化后的二进制文件格式如下:如图所示
- vue写一个axios的拦截器
蓝胖子不是胖子
vue.js前端javascript
方便直接带入项目的工具类importaxios,{AxiosResponse}from'axios'importqsfrom'qs'import{ElMessage}from'element-plus'import{useUserStore}from'@/store/modules/user'importcachefrom'@/utils/cache'import{ElMessageBox}fro
- Vue使用Axios以及拦截器配置
_何同学
Vue3ViteTs从入门到精通vue.jstypescript前端
安装npminstallaxiosvue-axios--saveaxios配置//src/utils/axios.tsimportaxios,{AxiosRequestConfig,AxiosResponse}from'axios'importVueAxiosfrom'vue-axios'import{ElMessage,ElNotification}from'element-plus'impor
- 一篇彻底讲清浏览器同源策略
海上彼尚
jsjavascript
目录一、什么是同源?二、为什么需要同源策略?三、同源策略的限制范围四、跨源解决方案1.请求跨域CORS(跨源资源共享)JSONP(仅限GET请求)Websocket代理服务器2.页面跨域postMessageAPIdocument.domainwindow.location.hashwindow.location.hash五、常见误区与注意事项六、总结一、什么是同源?两个URL的协议(Protoc
- Vue.js框架深度解析:构建现代Web应用
Neovyij
前端vue.jsjavascript
1.Vue.js概览1.1Vue.js的诞生和哲学Vue.js由尤雨溪创立,旨在创建一个简单而高效的前端库,使得前端开发更加轻松。尤雨溪在开发Vue.js时,将注意力集中在视图层,旨在帮助开发者通过简洁的API设计快速构建交互丰富的网页应用。代码示例:创建一个基本的Vue实例varapp=newVue({el:'#app',data:{message:'HelloVue!'}});这段代码简单地展
- Android技术-修改SO导出符号
Tasfa
androidjavaso导出函数
背景经常在使用第三方SDK的时候会莫名其妙报错,其中最常见的一种就是SO符号冲突,比如libA.so静态链接了libC.a,而libB.so动态链接了libC.so。这样便会导致符号冲突。又或者在使用不同版本的动态库,也会造成符号冲突。报错案例案例1DEBUG:Abortmessage:'terminatingwithunexpectedexceptionoftypestd::bad_cast:s
- 使用openai api key不支持识别base64的图片?开发者上传多图的示例代码
openaiclaude
openai不支持base64_encoded_image,但是claude3.5支持。我试了uiuiapi.com的api但是你们全用openai的格式似乎不能识别base64的图片。还是说兼容的接口就是所有message的形式全部使用openai的官方文档,我只需要改一个model=xxx,然后其他规则得遵守openai而不是我使用的模型的官方文档?你好,确实需要注意不同模型可能在接口和数据格
- JAVA中的Enum
周凡杨
javaenum枚举
Enum是计算机编程语言中的一种数据类型---枚举类型。 在实际问题中,有些变量的取值被限定在一个有限的范围内。 例如,一个星期内只有七天 我们通常这样实现上面的定义:
public String monday;
public String tuesday;
public String wensday;
public String thursday
- 赶集网mysql开发36条军规
Bill_chen
mysql业务架构设计mysql调优mysql性能优化
(一)核心军规 (1)不在数据库做运算 cpu计算务必移至业务层; (2)控制单表数据量 int型不超过1000w,含char则不超过500w; 合理分表; 限制单库表数量在300以内; (3)控制列数量 字段少而精,字段数建议在20以内
- Shell test命令
daizj
shell字符串test数字文件比较
Shell test命令
Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。 数值测试 参数 说明 -eq 等于则为真 -ne 不等于则为真 -gt 大于则为真 -ge 大于等于则为真 -lt 小于则为真 -le 小于等于则为真
实例演示:
num1=100
num2=100if test $[num1]
- XFire框架实现WebService(二)
周凡杨
javawebservice
有了XFire框架实现WebService(一),就可以继续开发WebService的简单应用。
Webservice的服务端(WEB工程):
两个java bean类:
Course.java
package cn.com.bean;
public class Course {
private
- 重绘之画图板
朱辉辉33
画图板
上次博客讲的五子棋重绘比较简单,因为只要在重写系统重绘方法paint()时加入棋盘和棋子的绘制。这次我想说说画图板的重绘。
画图板重绘难在需要重绘的类型很多,比如说里面有矩形,园,直线之类的,所以我们要想办法将里面的图形加入一个队列中,这样在重绘时就
- Java的IO流
西蜀石兰
java
刚学Java的IO流时,被各种inputStream流弄的很迷糊,看老罗视频时说想象成插在文件上的一根管道,当初听时觉得自己很明白,可到自己用时,有不知道怎么代码了。。。
每当遇到这种问题时,我习惯性的从头开始理逻辑,会问自己一些很简单的问题,把这些简单的问题想明白了,再看代码时才不会迷糊。
IO流作用是什么?
答:实现对文件的读写,这里的文件是广义的;
Java如何实现程序到文件
- No matching PlatformTransactionManager bean found for qualifier 'add' - neither
林鹤霄
java.lang.IllegalStateException: No matching PlatformTransactionManager bean found for qualifier 'add' - neither qualifier match nor bean name match!
网上找了好多的资料没能解决,后来发现:项目中使用的是xml配置的方式配置事务,但是
- Row size too large (> 8126). Changing some columns to TEXT or BLOB
aigo
column
原文:http://stackoverflow.com/questions/15585602/change-limit-for-mysql-row-size-too-large
异常信息:
Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAM
- JS 格式化时间
alxw4616
JavaScript
/**
* 格式化时间 2013/6/13 by 半仙
[email protected]
* 需要 pad 函数
* 接收可用的时间值.
* 返回替换时间占位符后的字符串
*
* 时间占位符:年 Y 月 M 日 D 小时 h 分 m 秒 s 重复次数表示占位数
* 如 YYYY 4占4位 YY 占2位<p></p>
* MM DD hh mm
- 队列中数据的移除问题
百合不是茶
队列移除
队列的移除一般都是使用的remov();都可以移除的,但是在昨天做线程移除的时候出现了点问题,没有将遍历出来的全部移除, 代码如下;
//
package com.Thread0715.com;
import java.util.ArrayList;
public class Threa
- Runnable接口使用实例
bijian1013
javathreadRunnablejava多线程
Runnable接口
a. 该接口只有一个方法:public void run();
b. 实现该接口的类必须覆盖该run方法
c. 实现了Runnable接口的类并不具有任何天
- oracle里的extend详解
bijian1013
oracle数据库extend
扩展已知的数组空间,例:
DECLARE
TYPE CourseList IS TABLE OF VARCHAR2(10);
courses CourseList;
BEGIN
-- 初始化数组元素,大小为3
courses := CourseList('Biol 4412 ', 'Psyc 3112 ', 'Anth 3001 ');
--
- 【httpclient】httpclient发送表单POST请求
bit1129
httpclient
浏览器Form Post请求
浏览器可以通过提交表单的方式向服务器发起POST请求,这种形式的POST请求不同于一般的POST请求
1. 一般的POST请求,将请求数据放置于请求体中,服务器端以二进制流的方式读取数据,HttpServletRequest.getInputStream()。这种方式的请求可以处理任意数据形式的POST请求,比如请求数据是字符串或者是二进制数据
2. Form
- 【Hive十三】Hive读写Avro格式的数据
bit1129
hive
1. 原始数据
hive> select * from word;
OK
1 MSN
10 QQ
100 Gtalk
1000 Skype
2. 创建avro格式的数据表
hive> CREATE TABLE avro_table(age INT, name STRING)STORE
- nginx+lua+redis自动识别封解禁频繁访问IP
ronin47
在站点遇到攻击且无明显攻击特征,造成站点访问慢,nginx不断返回502等错误时,可利用nginx+lua+redis实现在指定的时间段 内,若单IP的请求量达到指定的数量后对该IP进行封禁,nginx返回403禁止访问。利用redis的expire命令设置封禁IP的过期时间达到在 指定的封禁时间后实行自动解封的目的。
一、安装环境:
CentOS x64 release 6.4(Fin
- java-二叉树的遍历-先序、中序、后序(递归和非递归)、层次遍历
bylijinnan
java
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;
public class BinTreeTraverse {
//private int[] array={ 1, 2, 3, 4, 5, 6, 7, 8, 9 };
private int[] array={ 10,6,
- Spring源码学习-XML 配置方式的IoC容器启动过程分析
bylijinnan
javaspringIOC
以FileSystemXmlApplicationContext为例,把Spring IoC容器的初始化流程走一遍:
ApplicationContext context = new FileSystemXmlApplicationContext
("C:/Users/ZARA/workspace/HelloSpring/src/Beans.xml&q
- [科研与项目]民营企业请慎重参与军事科技工程
comsci
企业
军事科研工程和项目 并非要用最先进,最时髦的技术,而是要做到“万无一失”
而民营科技企业在搞科技创新工程的时候,往往考虑的是技术的先进性,而对先进技术带来的风险考虑得不够,在今天提倡军民融合发展的大环境下,这种“万无一失”和“时髦性”的矛盾会日益凸显。。。。。。所以请大家在参与任何重大的军事和政府项目之前,对
- spring 定时器-两种方式
cuityang
springquartz定时器
方式一:
间隔一定时间 运行
<bean id="updateSessionIdTask" class="com.yang.iprms.common.UpdateSessionTask" autowire="byName" />
<bean id="updateSessionIdSchedule
- 简述一下关于BroadView站点的相关设计
damoqiongqiu
view
终于弄上线了,累趴,戳这里http://www.broadview.com.cn
简述一下相关的技术点
前端:jQuery+BootStrap3.2+HandleBars,全站Ajax(貌似对SEO的影响很大啊!怎么破?),用Grunt对全部JS做了压缩处理,对部分JS和CSS做了合并(模块间存在很多依赖,全部合并比较繁琐,待完善)。
后端:U
- 运维 PHP问题汇总
dcj3sjt126com
windows2003
1、Dede(织梦)发表文章时,内容自动添加关键字显示空白页
解决方法:
后台>系统>系统基本参数>核心设置>关键字替换(是/否),这里选择“是”。
后台>系统>系统基本参数>其他选项>自动提取关键字,这里选择“是”。
2、解决PHP168超级管理员上传图片提示你的空间不足
网站是用PHP168做的,反映使用管理员在后台无法
- mac 下 安装php扩展 - mcrypt
dcj3sjt126com
PHP
MCrypt是一个功能强大的加密算法扩展库,它包括有22种算法,phpMyAdmin依赖这个PHP扩展,具体如下:
下载并解压libmcrypt-2.5.8.tar.gz。
在终端执行如下命令: tar zxvf libmcrypt-2.5.8.tar.gz cd libmcrypt-2.5.8/ ./configure --disable-posix-threads --
- MongoDB更新文档 [四]
eksliang
mongodbMongodb更新文档
MongoDB更新文档
转载请出自出处:http://eksliang.iteye.com/blog/2174104
MongoDB对文档的CURD,前面的博客简单介绍了,但是对文档更新篇幅比较大,所以这里单独拿出来。
语法结构如下:
db.collection.update( criteria, objNew, upsert, multi)
参数含义 参数  
- Linux下的解压,移除,复制,查看tomcat命令
y806839048
tomcat
重复myeclipse生成webservice有问题删除以前的,干净
1、先切换到:cd usr/local/tomcat5/logs
2、tail -f catalina.out
3、这样运行时就可以实时查看运行日志了
Ctrl+c 是退出tail命令。
有问题不明的先注掉
cp /opt/tomcat-6.0.44/webapps/g
- Spring之使用事务缘由(3-XML实现)
ihuning
spring
用事务通知声明式地管理事务
事务管理是一种横切关注点。为了在 Spring 2.x 中启用声明式事务管理,可以通过 tx Schema 中定义的 <tx:advice> 元素声明事务通知,为此必须事先将这个 Schema 定义添加到 <beans> 根元素中去。声明了事务通知后,就需要将它与切入点关联起来。由于事务通知是在 <aop:
- GCD使用经验与技巧浅谈
啸笑天
GC
前言
GCD(Grand Central Dispatch)可以说是Mac、iOS开发中的一大“利器”,本文就总结一些有关使用GCD的经验与技巧。
dispatch_once_t必须是全局或static变量
这一条算是“老生常谈”了,但我认为还是有必要强调一次,毕竟非全局或非static的dispatch_once_t变量在使用时会导致非常不好排查的bug,正确的如下: 1
- linux(Ubuntu)下常用命令备忘录1
macroli
linux工作ubuntu
在使用下面的命令是可以通过--help来获取更多的信息1,查询当前目录文件列表:ls
ls命令默认状态下将按首字母升序列出你当前文件夹下面的所有内容,但这样直接运行所得到的信息也是比较少的,通常它可以结合以下这些参数运行以查询更多的信息:
ls / 显示/.下的所有文件和目录
ls -l 给出文件或者文件夹的详细信息
ls -a 显示所有文件,包括隐藏文
- nodejs同步操作mysql
qiaolevip
学习永无止境每天进步一点点mysqlnodejs
// db-util.js
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit : 10,
host: 'localhost',
user: 'root',
password: '',
database: 'test',
port: 3306
});
- 一起学Hive系列文章
superlxw1234
hiveHive入门
[一起学Hive]系列文章 目录贴,入门Hive,持续更新中。
[一起学Hive]之一—Hive概述,Hive是什么
[一起学Hive]之二—Hive函数大全-完整版
[一起学Hive]之三—Hive中的数据库(Database)和表(Table)
[一起学Hive]之四-Hive的安装配置
[一起学Hive]之五-Hive的视图和分区
[一起学Hive
- Spring开发利器:Spring Tool Suite 3.7.0 发布
wiselyman
spring
Spring Tool Suite(简称STS)是基于Eclipse,专门针对Spring开发者提供大量的便捷功能的优秀开发工具。
在3.7.0版本主要做了如下的更新:
将eclipse版本更新至Eclipse Mars 4.5 GA
Spring Boot(JavaEE开发的颠覆者集大成者,推荐大家学习)的配置语言YAML编辑器的支持(包含自动提示,