导航:首页 > 研究方法 > 做api监控有没有什么方法论

做api监控有没有什么方法论

发布时间:2022-11-17 00:49:14

‘壹’ 怎么给自己的程序提供接口(API)给别的程序操作

API(Advanced Programmers Interface,高级程序员接口)(注:API实际是指Application Programming Interface,应用程序编程接口;此处疑为原文错误,不过在VB中也可以这么说吧!)是一套用来控制Windows的各个部件(从桌面的外观到位一个新进程分配的内存)的外观和行为的一套预先定义的Windows函数.用户的每个动作都会引发一个或几个函数的运行以Windows告诉发生了什么.

这在某种程度上很象Windows的天然代码.其他的语言只是提供一种能自动而且更容易的访问API的方法.VB在这方面作了很多工作.它完全隐藏了API并且提供了在Windows环境下编程的一种完全不同的方法.

这也就是说,你用VB写出的每行代码都会被VB转换为API函数传递给Windows.例如,Form1.Print...VB 将会以一定的参数(你的代码中提供的,或是默认参数)调用TextOut 这个API函数.

同样,当你点击窗体上的一个按钮时,Windows会发送一个消息给窗体(这对于你来说是隐藏的),VB获取这个调用并经过分析后生成一个特定事件(Button_Click).

API函数包含在Windows系统目录下的动态连接库文件中(如User32.dll,GDI32.dll,Shell32.dll...).

API 声明

正如在"什么是API"中所说,API函数包含在位于系统目录下的DLL文件中.你可以自己输入API函数的声明,但VB提供了一种更简单的方法,即使用API Text Viewer.

要想在你的工程中声明API函数,只需运行API Text Viewer,打开Win32api.txt(或.MDB如果你已经把它转换成了数据库的话,这样可以加快速度.注:微软的这个文件有很多的不足,你可以试一下本站提供下载的api32.txt),选择"声明",找到所需函数,点击"添加(Add)"并"复制(Copy)",然后粘贴(Paste)到你的工程里.使用预定义的常量和类型也是同样的方法.

你将会遇到一些问题:

假设你想在你的窗体模块中声明一个函数.粘贴然后运行,VB会告诉你:编译错误...Declare 语句不允许作为类或对象模块中的 Public 成员...看起来很糟糕,其实你需要做的只是在声明前面添加一个Private(如 Private Declare Function...).--不要忘了,可是这将使该函数只在该窗体模块可用.

在有些情况下,你会得到"不明确的名称"这样的提示,这是因为函数.常量或其他的什么东西共用了一个名称.由于绝大多数的函数(也可能是全部,我没有验证过)都进行了别名化,亦即意味着你可以通过Alias子句使用其它的而不是他们原有的名称,你只需简单地改变一下函数名称而它仍然可以正常运行.

你可以通过查看VB的Declare语句帮助主题来获取有关Alias的详细说明.

消息(Messages)

好了,现在你已经知道什么是API函数了,但你也一定听说过消息(如果你还没有,你很快就会)并且想知道它是什么.消息是Windows告诉你的程序发生了哪些事件或要求执行特定操作的基本方法.例如,当用户点击一个按钮,移动鼠标,或是向文本框中键入文字时,一条消息就会被发送给你的窗体.

所有发送的消息都有四个参数--一个窗口句柄(hwnd),一个消息编号(msg)还有两个32位长度(Long)的参数.

hwnd即要接受消息的一个窗口的句柄,msg即消息的标识符(编号).该标识符是指引发消息的动作类型(如移动鼠标),另外两个参数是该消息的附加参数(例如当鼠标移动时光标的当前位置)

但是,当消息发送给你时你为什么看不到呢--就象有人在偷你的信一样?请先别恼火,让我告诉你.

小偷其实是Visual Basic.但它并没有偷走你的信,而是在阅读了之后挑出重要的以一种好的方式告诉你.这种方式就是你代码中的事件(Event).

这样,当用户在你的窗体上移动鼠标时,Windows会发送一条WM_MOUSEMOVE消息给你的窗口,VB得到这条消息以及它的参数并运行你在事件MouseMove中的代码,同时VB会把这条消息的第二个32位数(它包含了x,y坐标,单位为像素(Pixel),每个位16位)转换为两个单精度数,单位为缇(Twip).

现在,如果你需要光标坐标的像素表示,然而VB已经把它转换成了缇,因此你需要重新把它转换为以像素为单位.在这里,Windows给了你所需要的,但VB"好意地"进行了转换而使你不得不重新转换.你可能会问--我难道不能自己接收消息吗?答案是肯定的,你可以使用一种叫做子类处理(Subclass)的方法.但你除非必须否则最好不要使用,因为这与VB的安全程序设计有一点点的违背.(注:子类处理确实有很大的风险,但如果使用得当,是很有用处的.不过有一点一定要注意,即千万不要使用VB的断点调试功能,这可能会导致VB崩溃!)

需要补充说明的是:你可以发送消息给你自己的窗口或其他的窗口,只需调用SendMessage或PostMessage(SendMessage会使接受到消息的窗口立刻处理消息,而PostMessage是把消息发送到一个称为消息队列的队列中去,等候处理(它将会在该消息处理完后返回,例如有些延迟)).你必须制定接受消息的窗口的句柄,欲发送消息的编号(所有的消息的编号均为常量,你可以通过API Text Viewer查得)以及两个32位的参数。

另一种含义:

1:美国石油协会(API:American Petrolenm Institute):制定机油标准的组织。汽车用发动机机油必须符合API提出的标准。

2:API还有一种含意:空气污染指数。【英文 air pollution index 的缩写】

3:在JAVA中,API除了有应用“程序程序接口”的意思外,还特指JAVA API的说明文档,也称为JAVA帮助文档。

参考资料:http://bk..com/view/16068.htm

‘贰’ android怎么实现后台对按键事件的监控

为了实现键盘的监控,从新开发一个输入法是不现实的,一般的操作就是在系统的输入法机制中添加接口回调。我们知道,再应用程序中拿到按键的回调一般是监听onKeyDown的接口,如下所示:

public boolean onKeyDown(int keyCode, KeyEvent event)

开发者就可以根据回调方法中的参数, keyCode与KeyEvent来判断具体事件。但是,由于事件的回调机制在其的沙箱中运行,在其他应用中是无法拿到当前应用事件回调的。

那么我们就从上到下,具体的看看事件的传递机制。如下图所示,用户点击后,软键盘或物理按键的输入驱动就会产生一个中断,且向/dev/input/event*中写入一个相应的信号量。Android操作系统则会循环的读取其中的事件,再分发给WindowManagerServer。由WindowManagerServer根据事件的来源分发到各个不同的ViewGroup与View中,从而产生不同的OnClick、OnKeyDown和OnTouch等事件。

其实这些Lable已经在其input.h头文件中定义好,其中type的定义如下:

/*
* Event types
*/
#define EV_SYN 0x00
#define EV_KEY 0x01
#define EV_REL 0x02
#define EV_ABS 0x03
#define EV_MSC 0x04
#define EV_SW 0x05
#define EV_LED 0x11
#define EV_SND 0x12
#define EV_REP 0x14
#define EV_FF 0x15
#define EV_PWR 0x16
#define EV_FF_STATUS 0x17
#define EV_MAX 0x1f
#define EV_CNT (EV_MAX+1)

一般来说,常用的是EV_KEY、EV_REL、EV_ABS、EV_SYN,分别对应键盘按键、相对坐标、绝对坐标、同步事件。EV_SYN则表示一组完整事件已经完成,需要处理,EV_SYN的code定义事件分发的类型。

‘叁’ 小弟学.Net,想做个API接口,怎么做 求过程,不要复制黏贴

要想学会怎么做API,那你必须先学怎么用,这里有网络API Store中的一个API

http://apistore..com/apiworks/servicedetail/1115.html

你可以试着调用任何接口来实现一个小demo,以上只是举例

其它的必备技能还有

  1. Oauth2.0协议

  2. Web API

  3. VPS

如果你只想知道Web API如何工作的,不需要做一个商用的API接口,那你直接打开visual studio新建一个Web API项目然后按F5启动项目,你就可以看到一个大致的API项目了

‘肆’ 100路网络摄像机监控方案怎么实现

一、计算线路带宽。

首先要确定每个摄像头的视频输出所需要的带宽。摄像头参数介绍里一般叫“压缩输出码率”

几乎所有的摄像头,这个参数是可以手动调整的,一般可调范围在几百K到8M或16M。不同厂家不同型号的可调整范围不同。

这需要根据你对图像清晰度要求自行决定。


例如,这里假定每个摄像头的压缩输出码率为4兆。100个摄像头则为400兆。


一般是几个摄像头共用一个交换机。与摄像头直接相连的交换机可以使用百兆交换机。根据摄像头地理分布决定几个摄像头连在一个交换机上。

这类交换机可以选择5口、8口、12口的百兆交换机。它们分别对多可以连4个、7个和11个摄像头。

为了方便区别这里可以把上面这种与摄像头直接相连的交换机称为“接入层交换机”

当然,如果部分摄像头比较集中,12口或24口交换机即可连接11个或23个摄像头,并且摄像头输出码率比较大,总输出码率超过100兆,那这台交换机必须是千兆交换机,可以是22口百兆+2口千兆的交换机。



多个接入层交换机在与专门的交换机相连,这里称为“核心层交换机”。这里需要确定汇聚层交换机使用百兆还是千兆交换机,以及使用几个接口。


假如接入层交换机为8口的,每个都连7个摄像头。那需要15个接入层交换机即。那么核心层交换机选择24口交换机即可,是那种有20或22个百兆接口,4个或2个千兆接口的。

但是,接入层交换机有千兆交换机,那么核心层交换机必须所有口都是千兆。


这样,核心层交换机与接入层交换机之间用百兆带宽即可。而与电脑或录像机之间用千兆带宽。

‘伍’ 企业微信开放平台群发监控api二次开发接口怎么用

企业微信开放平台现在功能多样,一些公司不知道合适他们的系统软件,在这里,我给大家总结企业微信第三方应用开发平台的使用方法

‘陆’ 用Java编程来实现CPU和Memory监控器并将数据持久化,保存在文件中。急用

众所周知,java在处理数据量比较大的时候,加载到内存必然会导致内存溢出,而在一些数据处理中我们不得不去处理海量数据,在做数据处理中,我们常见的手段是分解,压缩,并行,临时文件等方法;例如,我们要将数据库(不论是什么数据库)的数据导出到一个文件,一般是Excel或文本格式的CSV;对于Excel来讲,对于POI和JXL的接口,你很多时候没有法去控制内存什么时候向磁盘写入,很恶心,而且这些API在内存构造的对象大小将比数据原有的大小要大很多倍数,所以你不得不去拆分Excel,还好,POI开始意识到这个问题,在3.8.4的版本后,开始提供cache的行数,提供了SXSSFWorkbook的接口,可以设置在内存中的行数,不过可惜的是,他当你超过这个行数,每添加一行,它就将相对行数前面的一行写入磁盘(如你设置2000行的话,当你写第20001行的时候,他会将第一行写入磁盘),其实这个时候他些的临时文件,以至于不消耗内存,不过这样你会发现,刷磁盘的频率会非常高,我们的确不想这样,因为我们想让他达到一个范围一次性将数据刷如磁盘,比如一次刷1M之类的做法,可惜现在还没有这种API,很痛苦,我自己做过测试,通过写小的Excel比使用目前提供刷磁盘的API来写大文件,效率要高一些,而且这样如果访问的人稍微多一些磁盘IO可能会扛不住,因为IO资源是非常有限的,所以还是拆文件才是上策;而当我们写CSV,也就是文本类型的文件,我们很多时候是可以自己控制的,不过你不要用CSV自己提供的API,也是不太可控的,CSV本身就是文本文件,你按照文本格式写入即可被CSV识别出来;如何写入呢?下面来说说。。。在处理数据层面,如从数据库中读取数据,生成本地文件,写代码为了方便,我们未必要1M怎么来处理,这个交给底层的驱动程序去拆分,对于我们的程序来讲我们认为它是连续写即可;我们比如想将一个1000W数据的数据库表,导出到文件;此时,你要么进行分页,oracle当然用三层包装即可,mysql用limit,不过分页每次都会新的查询,而且随着翻页,会越来越慢,其实我们想拿到一个句柄,然后向下游动,编译一部分数据(如10000行)将写文件一次(写文件细节不多说了,这个是最基本的),需要注意的时候每次buffer的数据,在用outputstream写入的时候,最好flush一下,将缓冲区清空下;接下来,执行一个没有where条件的SQL,会不会将内存撑爆?是的,这个问题我们值得去思考下,通过API发现可以对SQL进行一些操作,例如,通过:PreparedStatementstatement=connection.prepareStatement(sql),这是默认得到的预编译,还可以通过设置:PreparedStatementstatement=connection.prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);来设置游标的方式,以至于游标不是将数据直接cache到本地内存,然后通过设置statement.setFetchSize(200);设置游标每次遍历的大小;OK,这个其实我用过,oracle用了和没用没区别,因为oracle的jdbcAPI默认就是不会将数据cache到java的内存中的,而mysql里头设置根本无效,我上面说了一堆废话,呵呵,我只是想说,java提供的标准API也未必有效,很多时候要看厂商的实现机制,还有这个设置是很多网上说有效的,但是这纯属抄袭;对于oracle上面说了不用关心,他本身就不是cache到内存,所以java内存不会导致什么问题,如果是mysql,首先必须使用5以上的版本,然后在连接参数上加上useCursorFetch=true这个参数,至于游标大小可以通过连接参数上加上:defaultFetchSize=1000来设置,例如:jdbc:mysql://xxx.xxx.xxx.xxx:3306/abc?zeroDateTimeconvertToNull&useCursorFetch=true&defaultFetchSize=1000上次被这个问题纠结了很久(mysql的数据老导致程序内存膨胀,并行2个直接系统就宕了),还去看了很多源码才发现奇迹竟然在这里,最后经过mysql文档的确认,然后进行测试,并行多个,而且数据量都是500W以上的,都不会导致内存膨胀,GC一切正常,这个问题终于完结了。我们再聊聊其他的,数据拆分和合并,当数据文件多的时候我们想合并,当文件太大想要拆分,合并和拆分的过程也会遇到类似的问题,还好,这个在我们可控制的范围内,如果文件中的数据最终是可以组织的,那么在拆分和合并的时候,此时就不要按照数据逻辑行数来做了,因为行数最终你需要解释数据本身来判定,但是只是做拆分是没有必要的,你需要的是做二进制处理,在这个二进制处理过程,你要注意了,和平时read文件不要使用一样的方式,平时大多对一个文件读取只是用一次read操作,如果对于大文件内存肯定直接挂掉了,不用多说,你此时因该每次读取一个可控范围的数据,read方法提供了重载的offset和length的范围,这个在循环过程中自己可以计算出来,写入大文件和上面一样,不要读取到一定程序就要通过写入流flush到磁盘;其实对于小数据量的处理在现代的NIO技术的中也有用到,例如多个终端同时请求一个大文件下载,例如视频下载吧,在常规的情况下,如果用java的容器来处理,一般会发生两种情况:其一为内存溢出,因为每个请求都要加载一个文件大小的内存甚至于,因为java包装的时候会产生很多其他的内存开销,如果使用二进制会产生得少一些,而且在经过输入输出流的过程中还会经历几次内存拷贝,当然如果有你类似nginx之类的中间件,那么你可以通过send_file模式发送出去,但是如果你要用程序来处理的时候,内存除非你足够大,但是java内存再大也会有GC的时候,如果你内存真的很大,GC的时候死定了,当然这个地方也可以考虑自己通过直接内存的调用和释放来实现,不过要求剩余的物理内存也足够大才行,那么足够大是多大呢?这个不好说,要看文件本身的大小和访问的频率;其二为假如内存足够大,无限制大,那么此时的限制就是线程,传统的IO模型是线程是一个请求一个线程,这个线程从主线程从线程池中分配后,就开始工作,经过你的Context包装、Filter、拦截器、业务代码各个层次和业务逻辑、访问数据库、访问文件、渲染结果等等,其实整个过程线程都是被挂住的,所以这部分资源非常有限,而且如果是大文件操作是属于IO密集型的操作,大量的CPU时间是空余的,方法最直接当然是增加线程数来控制,当然内存足够大也有足够的空间来申请线程池,不过一般来讲一个进程的线程池一般会受到限制也不建议太多的,而在有限的系统资源下,要提高性能,我们开始有了newIO技术,也就是NIO技术,新版的里面又有了AIO技术,NIO只能算是异步IO,但是在中间读写过程仍然是阻塞的(也就是在真正的读写过程,但是不会去关心中途的响应),还未做到真正的异步IO,在监听connect的时候他是不需要很多线程参与的,有单独的线程去处理,连接也又传统的socket变成了selector,对于不需要进行数据处理的是无需分配线程处理的;而AIO通过了一种所谓的回调注册来完成,当然还需要OS的支持,当会掉的时候会去分配线程,目前还不是很成熟,性能最多和NIO吃平,不过随着技术发展,AIO必然会超越NIO,目前谷歌V8虚拟机引擎所驱动的node.js就是类似的模式,有关这种技术不是本文的说明重点;将上面两者结合起来就是要解决大文件,还要并行度,最土的方法是将文件每次请求的大小降低到一定程度,如8K(这个大小是经过测试后网络传输较为适宜的大小,本地读取文件并不需要这么小),如果再做深入一些,可以做一定程度的cache,将多个请求的一样的文件,cache在内存或分布式缓存中,你不用将整个文件cache在内存中,将近期使用的cache几秒左右即可,或你可以采用一些热点的算法来配合;类似迅雷下载的断点传送中(不过迅雷的网络协议不太一样),它在处理下载数据的时候未必是连续的,只要最终能合并即可,在服务器端可以反过来,谁正好需要这块的数据,就给它就可以;才用NIO后,可以支持很大的连接和并发,本地通过NIO做socket连接测试,100个终端同时请求一个线程的服务器,正常的WEB应用是第一个文件没有发送完成,第二个请求要么等待,要么超时,要么直接拒绝得不到连接,改成NIO后此时100个请求都能连接上服务器端,服务端只需要1个线程来处理数据就可以,将很多数据传递给这些连接请求资源,每次读取一部分数据传递出去,不过可以计算的是,在总体长连接传输过程中总体效率并不会提升,只是相对相应和所开销的内存得到量化控制,这就是技术的魅力,也许不要太多的算法,不过你得懂他。类似的数据处理还有很多,有些时候还会将就效率问题,比如在HBase的文件拆分和合并过程中,要不影响线上业务是比较难的事情,很多问题值得我们去研究场景,因为不同的场景有不同的方法去解决,但是大同小异,明白思想和方法,明白内存和体系架构,明白你所面临的是沈阳的场景,只是细节上改变可以带来惊人的效果。

‘柒’ API是什么,可以应用于哪些地方,有例子吗

您好,API这个词,全称叫Application Programming Interfaces(应用程序编程接口)。简单地说,就是一套套的要求,用来管理应用程序之间的沟通。API并不是什么新事物,在你使用PC或笔记本时,正是API让数据在程序之间传输。例如,把一个LibreOffice文档中的片断切割出来并传输到Excel表格上。系统级的API让LibreOffice这类程序能够运行在Windows这样的操作系统上。
在互联网中,API让其它应用可以使用一些大的服务,如Google Maps和Facebook。例如Yelp,它可以在Google Map上显示附近的餐馆;还有一些游戏可让用户通过Facebook与其它玩家聊天、分享得分等。
API是通过把程序内部的一些功能有限地向外开放来做到的,这使得应用之间可基于各自的利益分享数据,同时不需要开发者公布所有的软件代码。对开源项目来说也是如此。你可以把它看成是一扇门、窗或杠杆,不管用什么比喻,一个程序和外面的软件世界的沟通就是由API定义的。
一个API现在可用,并不意味着将来也可用。以Twitter为例,一年以前就以限制第三方应用使用其API而臭名昭着,这种做法杀死了所有的第三方Twitter客户端,让用户只能使用Twitter自家的网站和应用,Twitter从中展示广告赚钱。Twitter称自己坚持这么做是为了保持统一的Twitter用户体验。
有些公司可能会关闭服务和API,例如Google就总是把一些见不到利润的服务关闭,最近的例子是Google Reader,如果你的应用依赖这些API来运行的话,就会随之一同出现问题。
虽然API的世界并不完美,但依然阻止不了开发者对其的热情,也阻止不了由其促成的各种多样化应用和服务。

‘捌’ 学习API的方法

网上有API电子书的,一边看,一边查资料,慢慢学吧!~最好再试着编些小程序.帮助理解

‘玖’ 字符串常用的api方法有哪些

API(Application Programming Interface):应用程序编程接口
使用Scanner 获取键盘录入的字符串
next() ; 在遇到空格的时候 会判定为当前的输入结束 空格之后的内容会收不到
nextLine(); 可以避免被空格中断 , 但是在于接收数字一起使用的时候会被干扰
创建字符串对象

public String(String original) ---> 通过字符串创建一个字符串对象
public String(char[] value) -=--> 通过一个字符型数组创建一个字符串对象
public String(char[] value,int offset,int count)---> 通过字符型数组的一部分创建一个字符串对象 从索引值为offset开始,持续count个
==的含义

== 代表判断两边是否相等
基本类型判断是数值
引用类型判断的是地址
通过构造方法创建字符串对象和直接赋值创建字符串对象的区别:

构造方法创建是在堆区 直接赋值是在常量池
判断功能

boolean equals(Object obj) // 比较字符串的内容是否相等, 跟哪个字符串比较 参数就写哪个字符串
boolean equalsIgnoreCase(String str)// 比较字符串的内容是否相等 比较的时候忽略大小写
boolean startsWith(String str) // 判断字符串是否以str开头
boolean endsWith(String str) // 判断字符串是否以str结尾
获取的功能

int length() // 获取字符串的长度(获取字符串中字符的个数 )
char charAt(int index) // 根据指定的索引返回对应字符
int indexOf(String str) // 获取str在字符串中出现的索引值 ,如果字符串中没有str则返回 -1
String substring(int start) // 从索引值为start位置开始到字符串结尾处截取出来作为一个新串返回
String substring(int start,int end) // 截取字符串 从start开始 ,到end-1为止 生成一个新串返回
统计字符串中大写、小写及数字字符个数

* String s1 = "aAb0G9c1Kde";
* 字符串遍历 判断 定义计数器分别代表三种字符的个数
* 1.定义三个计数器分别代表三种字符的个数
* 2.遍历字符串获取每个字符进行判断
* 3.一旦符合某一种字符就让对应的计数器+1

12345678910111213141516171819

public static void main(String[] args) { // TODO Auto-generated method stub String s1 = "aAb0G9c1Kde"; // // 1.定义三个计数器分别代表三种字符的个数 int big = 0; int small = 0; int num = 0; // 2.遍历字符串获取每个字符进行判断 for (int i = 0; i < s1.length(); i++) { char ch = s1.charAt(i); if (ch >= '0' && ch <= '9') { num++; } else if (ch >= 'A' && ch <= 'Z') { big++; } else if (ch >= 'a' && ch <= 'z') { small++; } } }

转换功能方法
char[] toCharArray() ---> 把字符串转化成数组 返回
String toLowerCase() ---> 把字符串中的数据转化成小写字母返回
String toUpperCase() ---> 把字符串中的数据转化成大写字母返回
去除空格和分割功能方法
String trim() // 去除空格 字符串两边的空格 , 字符串中间的空格不会去掉
String[] split(String str)// 把字符串使用str进行切割, 把切割之后得到的字符串组成一个字符串数组返回
String replaceAll(String regex,String replacement)
boolean contains(String str);
String replaceAll(String regex,String replacement)// 使用 replacement替换字符串中所有的regex
boolean contains(String str);// 判断字符串是否包含 str 只要字符串中有Str不论几个都会返回true 一旦没有 ,就会返回false
StringBuilder构造方法
StringBuilder() ---> 创建一个空的SB容器
StringBuilder(String str)
StringBuilder常见方法
public int capacity()// 容器的容量
public int length() // 实际存储的字符个数
StringBuilder的方法
public StringBuilder append(任意类型)// 任何类型的数据都可以添加到这个容器中,最终都会以字符串的形式体现 ,调用完毕之后返回的是自己
public StringBuilder reverse() // 翻转容器中的内容

‘拾’ C++监控某个进程是否被关闭,除了定时器的方式,有什么API可以用吗

可以通过监控ExitProcess函数进行判断

阅读全文

与做api监控有没有什么方法论相关的资料

热点内容
中式棉袄制作方法图片 浏览:65
五菱p1171故障码解决方法 浏览:858
男士修护膏使用方法 浏览:547
电脑图标修改方法 浏览:608
湿气怎么用科学的方法解释 浏览:539
910除以26的简便计算方法 浏览:806
吹东契奇最简单的方法 浏览:705
对肾脏有好处的食用方法 浏览:100
电脑四线程内存设置方法 浏览:514
数字电路通常用哪三种方法分析 浏览:17
实训课程的教学方法是什么 浏览:527
苯甲醇乙醚鉴别方法 浏览:84
苹果手机微信视频声音小解决方法 浏览:701
控制箱的连接方法 浏览:75
用什么简单的方法可以去痘 浏览:789
快速去除甲醛的小方法你知道几个 浏览:805
自行车架尺寸测量方法 浏览:125
石磨子的制作方法视频 浏览:153
行善修心的正确方法 浏览:403
薯仔炖鸡汤的正确方法和步骤 浏览:276