sfilter源码的简单介绍

hacker|
98

文章目录:

复制源码arduino编译出错?

你这是从哪复制的?里面还有网页代码,肯定会出错的。

/*如果避障响应方向不对修改固定值即可如:1600变1400,1400变1600*/

unsigned int distance_Q, distance_H, distance_Z, distance_Y;

/*以下为传感器引脚定义*/

const int CSB_Q = 0, CSB_H = 1, CSB_Z = 2, CSB_Y = 3;

#includeServo.h//Arduino Nano 2;3(Pin)

const int AIL_PWM = 2;//中断输入

const int ELE_PWM = 3;//中断输入

const int LED_PIN = 13;//LED灯

unsigned long RC_AIL_PulseStartTicks, RC_ELE_PulseStartTicks;

volatile int RC_AIL, RC_ELE;

unsigned int OUT_AIL, OUT_ELE;

unsigned int AIL_MIN = 1000, AIL_MAX = 2000;

unsigned int ELE_MIN = 1000, ELE_MAX = 2000;

Servo AIL; Servo ELE;

/*以下为滤波定义*/

#define FILTER_N 5

/*********************************/

void RC_AIL_Void()//AIL中断程序

{

if (digitalRead( AIL_PWM ) == HIGH)

RC_AIL_PulseStartTicks = micros();

else

RC_AIL = micros() - RC_AIL_PulseStartTicks;

}

void RC_ELE_Void()//ELE中断程序

{

if (digitalRead( ELE_PWM ) == HIGH)

RC_ELE_PulseStartTicks = micros();

else

RC_ELE = micros() - RC_ELE_PulseStartTicks;

}

void setup()

{

attachInterrupt(0, RC_AIL_Void, CHANGE);

attachInterrupt(1, RC_ELE_Void, CHANGE);

AIL.attach(10);

ELE.attach(11);

pinMode(AIL_PWM, INPUT);

pinMode(ELE_PWM, INPUT);

pinMode(LED_PIN, OUTPUT);

Serial.begin(9600);

ADCSRA |= (1 ADPS2);

ADCSRA = ~(1 ADPS1);

ADCSRA = ~(1 ADPS0);

}

void loop()

{

OUT_AIL = map(RC_AIL, AIL_MIN, AIL_MAX, 1000, 2000);

OUT_ELE = map(RC_ELE, ELE_MIN, ELE_MAX, 1000, 2000);

digitalWrite(LED_PIN, LOW);/font/divdiv

/divdivfont style="background-color: rgb(255, 255, 255);" distance_Q = Filter(CSB_Q);

if (distance_Q = 1400) //前有障碍物

{

OUT_ELE = 1400; //后退

digitalWrite(LED_PIN, HIGH);

}

AIL.writeMicroseconds(OUT_AIL);

ELE.writeMicroseconds(OUT_ELE);

distance_H = Filter(CSB_H);

if (distance_H = 1400) //后有障碍物

{

OUT_ELE = 1600; //前进

digitalWrite(LED_PIN, HIGH);

}

AIL.writeMicroseconds(OUT_AIL);

ELE.writeMicroseconds(OUT_ELE);

distance_Z = Filter(CSB_Z);

if (distance_Z = 1400)//左有障碍

{

OUT_AIL = 1600; //右飞

digitalWrite(LED_PIN, HIGH);

}

AIL.writeMicroseconds(OUT_AIL);

ELE.writeMicroseconds(OUT_ELE);

distance_Y = Filter(CSB_Y);

if (distance_Y = 1400)//右有障碍

{

OUT_AIL = 1400; //左飞

digitalWrite(LED_PIN, HIGH);

}

AIL.writeMicroseconds(OUT_AIL);

ELE.writeMicroseconds(OUT_ELE);

// Print();

}

/****************************************************************************/

int Filter(int direct)

{

int i, j;

int filter_temp, filter_sum = 0;

int filter_buf[FILTER_N];

for (i = 0; i FILTER_N; i++)

{

filter_buf[i] = analogRead(direct) * 3;

}

for (j = 0; j FILTER_N - 1; j++)

{

for (i = 0; i FILTER_N - 1 - j; i++)

{

if (filter_buf[i] filter_buf[i + 1])

{

filter_temp = filter_buf[i];

filter_buf[i] = filter_buf[i + 1];

filter_buf[i + 1] = filter_temp;

}

}

}

for (i = 1; i FILTER_N - 1; i++) filter_sum += filter_buf[i];

return filter_sum / (FILTER_N - 2);

}

/*void Print()

{

Serial.print("INAIL=");

Serial.print(RC_AIL);

Serial.print(" INELE=");

Serial.print(RC_ELE);

Serial.print(" OUTAIL=");

Serial.print(OUT_AIL);

Serial.print(" OUTELE=");

Serial.print(OUT_ELE);

Serial.print(" distance_Q=");

Serial.print(distance_Q);

Serial.print(" distance_H=");

Serial.print(distance_H);

Serial.print(" distance_Z=");

Serial.print(distance_Z);

Serial.print(" distance_Y=");

Serial.print(distance_Y);

Serial.println();

}*/

新手提问:我们安装windows系统的时候,是不是把windows的源代码复制到本机硬盘下的C盘中了?

t;安装和版本问题

1) eMule对Windows有什么要求?

eMule能在Windows 95版本以上的Windows操作系统下运行。

1个好的P2P软件需要好的拨号网络的支持,所以Windows 98和Windows ME的比较差网络运行情况可能会影响eMule的发挥;相对来说Windows 2000和Windows XP更适合使用eMule。

2) 弹出错误信息说oleacc.dll文件找不到?

使用Windows 98的用户在启动eMule的时候可能会出现此错误信息。这个缺损的dll文件可以从Microsoft的 Windows 98 System Update 处获得。

3) Installer和Binary的区别?

Installer文件用于第一次安装eMule,它包含了所有必须文件和帮助文档等。执行exe文件通过弹出的指示即可以安装eMule。

Binary是一个压缩档案文件,你需要把他解压缩(覆盖)到你想要安装的目录,通常用来做升级安装用。

4) 当我升级eMule版本时候怎样才能保留我的设置和下载到一半的文件信息?

你只需要安装(或解压)新版本的eMule到你原来版本的安装目录,eMule会自动更新eMule.exe文件,用户设置文件和其他一些用户信息文件都不会被覆盖,原来的设置等都将保留。

注意请关闭eMule之后才可以安全执行升级新版本,否则可能会导致不可知错误。

5) 如果从eDonkey/Overnet升级到eMule并保留原来的下载信息?

这取决于你原来使用的eDonkey/Overnet的版本。

0.47版本以前的eDonkey使用和eMule部分兼用的系统,但是0.47以后的eDonkey版本把下载的temp文件分成了很多独立的小文件,使eMule无法再使用。

老版本的eDonkey升级到eMule,你只需要把eMule的临时文件目录指向原来eDonkey的临时文件目录即可。

新版本的eDonkey升级到eMule,你可以先使用 OldPart 这个程序把未完成的eDonkey临时文件转化,再用 MetFile Regenerator 程序把它们还原成eMule可用的临时文件。不过,我强烈建议你在升级到eMule先完成原来的下载文件。

二服务器、连接和ID问题

1) 从哪里可以取得服务器列表?

– 官方eMule服务器列表更新网址

2) 哪个服务器是最快最好的?

没有绝对的最快或者最好的服务器。服务器是用来连接其他eMule用户、搜索文件和搜索源用的。当用户使用全局服务器搜索时,eMule会向列表里的每个服务器询问搜索结果并返回用户。

同样,下载文件的时候,eMule会在服务器内搜索速度最快的源。

3) 我需要多长时间更新一次服务器列表?

如果你正在使用或者经常使用eMule,那么就没有必要刻意去更新服务器列表。eMule的默认设置会在使用过程中不断更新服务器。

4) 为什么我的eMule连接不上服务器?

在连接到服务器以前会有短暂的等待时间,也有可能服务器当机或没有响应。如果eMule完全不连接,请确认你的服务器列表是最近更新的;也或者可能是Firewall和Router设置不当造成eMule的连接不畅通。

还有一点,你必须检查eMule中的 选项 - 服务器 - 仅自动连接到静态服务器 ,如果这个选项被选中的话,而同时尼列表中没有可用的静态服务器,eMule同样不会连接。

5) 为什么我得到的是low ID?

eMule近当以下端口打开的时候才会完全工作正常(取得high ID)

• 4662 TCP

• 4672 UDP

• 4711 TCP

当你使用代理服务器、或局域网上网的时候,你无法打开公网IP地址机器的以上端口,所以你会获得low ID。

6) Low ID何High ID有什么区别?

High ID就是拥有独立公网IP并且能提供端口4662给eMule工作的用户;此类用户可以和任何eMule兼容客户端连接与下载。

Low ID一般都是没有公网IP的内网用户,两个Low ID用户之间是无法直接连接的,所以Low ID的用户下载源会相对少一点(无法从其它Low ID用户那里下载)。

7) 为什么eMule总是从服务器掉线?

可能有以下原因导致eMule掉线:

• 下载列表中文件太多(低于v.30a会有此问题)

• 过多的共享文件(低于v.29a会有此问题)

• 服务器端的问题

• 普通的网络连接问题

通常情况下eMule会自动重新连接断开的服务器。这一情况并不影响下载。

三速度问题

1) 有哪些影响下载速度的因素?

以下这些实际问题可能会影响下载速度:

• eMule的设置;

• High ID (防火墙和路由的设置);

• eMule下载的时间长短;

• 一个下载文件所获得的源的多少;

• 临时文件的有效性;

• 下载文件的流行程度。

eMule设置中的不当(不恰当的限制、过多的连接数);Low ID(上一章中已介绍)以及过短的运行时间都会减缓下载的速度。还未普及的文件(例如新发布的资源)或者源很少的文件、或者临时文件(part)有损坏都会影响下载速度。

2) 怎么设置最好呢?

没有最完美的设置来实现速度最大化,因为下载速度的主要因素还是取决于每个人的Internet连接速度和所使用的操作系统。建议你使用eMule的设置向导来选择正确的设置,其中最重要的是你选对了你的Internet连接速度和操作系统。

举个例子,比较适用ADSL 512K带宽的设置如下:

Windows XP :-

下载能力: 64 (= 512 / 8)

上传能力: 16 (= 128 / 8)

下载限速: 60

上传限速: 12 (= 16 x 0,75)

硬性限制: 500

最大连接数: 400

最大新建连接数/ 5 sec: 30

同时下载6-20个文件比较合适。

Windows 98 / ME :-

下载能力: 64 (= 512 / 8)

上传能力: 60 (= 128 / 8)

下载限速: 92

上传限速: 12 (= 16 x 0,75)

硬性限制: 300

最大连接数: 200

最大新建连接数/ 5 sec: 20

同时下载不要超过12个文件比较合适。

你无须太谨慎地限速,太苛刻的限速会阻塞eMule的连接,直接导致下载效果下降。上传限速基本上差不多应该在最大上传能力的75%。

3) 怎样才能提高我的下载速度?

除了正确的设置以外,能决定速度的还有你所下载的文件本身。为了得到令人满意的速度速度,你尽可能做到以下方面:

• eMule尽量开的时间维持的长些,越长越好;

• 尽量避免只下载1个文件;

• 有选择余地的情况下,尽可能选择源多的文件下载(文件名后面数字表示源的数量);

• 新发布的文件(全新的文件)不可能速度快;

• 尽可能多的上传以获得比较高的积分;

4) 我可能会获得怎样的速度?

如果一切设置正常,并且在开始一段时间以后,你获得了20 kB/s – 30 kB/s的速度,那么可能在短时间内依然会很慢,但有时你却可能获得超过稳定速度2-3倍的速度。

5) 等待状态会维持多长时间?

等待状态中你可以从源那里看到QR:[x],这个数字x就是你的Queue Ranking,也就是你在等待队伍中排在第几位,当然这个值越小越好。QR的存在显示了积分系统的意义,相对于源来说越高的积分就是越短地等待。如果你的QR值很高,并不表示你就无法从那个源那里下载到东西,eMule里存在很多公平的修正以减短等待时间。

四积分问题

1) 积分是什么?为什么我要增加积分?

积分是奖励那些上传的用户的,上传量越大积分越高。积分不是所有服务器之间通用的,它们仅仅通用于那些承认这些积分的服务器和客户(比如我在chinese edonkey server NO.1上的上传量很大,相对于那些连在No.1上的用户来说我的积分就很高) 。

积分是影响QR的主要因素,你积分越高,排队时间就会缩减的越短。

2) 从什么地方我可以看出我的积分多少?

为了防止使用作弊的方法篡改积分,所以你的积分不是储存在你的硬盘中,而是存在其他客户的硬盘中。要在本机上查询自己的积分是不可能的。

3) 我丢失/删除了我的clients.met文件,是不是我的积分就没了?

根据上个问题,丢失了这个文件,你自己的积分是不会消失的,而存在你机器上的相对你而言的他人的积分就没了。eMule建立并保存了备份文件以防止这种事情发生,名称是clients.met.BAK,你只需要把它重命名回clients.met即可。

4) 积分是否安全可靠?

eMule使用了一种加密方法key handshake以确保某个积分正确地属于某个人。只有在这种方法得到eMule的验证之后,这一积分才被授权给特定的某个人,否则eMule将不会承认对方的积分。

5) 什么情况下我的积分会得不到承认?

根据上一个问题所述,积分是经过加密并授权的。授权的验证密钥储存在preferences.dat和cryptkey.dat两个文件中。如果其中一个文件损坏或者丢失,你将不能得到对方的积分验证,eMule将不会承认原本应该属于你的积分。

如果你丢失了cryptkey.dat,eMule会强制删除preferences.dat。

五下载和共享问题

1) 为什么我下载的文件从列表中消失了?

可能是因为死机、或者升级到新版本造成的。

• 在 选项 - 目录 里检查一下临时文件目录是不是正确。

• 把.part.met文件用它们的自动备份文件.part.met.BAK代替。

• 看看能否在帮助文件的Troubleshooting这一章节找到答案。

2) 传输状态的进度条表示的是什么意思?

不同的颜色表示了不同进度的活动性。

黑色

表示这部分文件你已经获得了。

红色

表示这部分文件没有源,处于未知状态。

不同程度的蓝色,代表了这部分文件处于有源并活动的状态,蓝色越深表明源越多、活动性越强。

黄色

表示这部分文件正在被下载。

顶端的绿色条表示下载的进度。

完整的一条绿色状态表示整个文件已经下载完成。

一条深红色表示这个文件处于暂停或者停止状态。

如果你双击展开一个下载中的文件,其中的颜色有不一样的说法:

黑色说明你已经获得的部分。

蓝色部分是你仍需下载的部分。

灰色说明了这个源也缺损这部分文件。

绿色表示了当前正在下载的部分。

黄色表示未决的部分(已请求)。

在上传栏目中,同样有类似的颜色状态条:

黑色表示这名用户已经获得的部分。

灰色表示用户缺损的部分。

绿色表示你正在上传给这名用户的部分。

黄色表示未决的部分(已请求)。

共享文件的颜色状态条:

红色表示在已知的源中找不到的部分(未传播开)。

不同程度的蓝色告诉你这个文件的传播程度,颜色越深传播的越广。

3) 那些在来源一栏中的数字 xx / yy +aa (zz) 表是什么?

这些数字表示在下载中找到的源。

• xx - 可用的源的数目。

• yy - 总共找到的源的数目。

• + aa - 已请求另一个文件的源的数目(仅当你在高级控制中选择使用eMule才会显示这个数字)。

• zz - 现在正在和你传输的源的数目。

4) 为什么有些源显示“已请求另一个文件”?

eMule在对方源的队伍中只会占有一个位置。如果对方源内有你需要下载的2个以上文件,eMule只会为其中一个文件排队。当这个文件下载完成,eMule会自动切换到另一个文件并排队,以此类推。所以对方源就会对你现在无法进行排队的文件显示“已请求另一个文件”。这一功能称作A4AF(Ask for Another File)功能。

5) 过多连接数表示什么意思?

这表示找到的源的数目超过的你设定的最大连接数。这通常因为列表里有太多下载中的文件,或者用户的硬性限制太过苛刻所造成。

6) 我可以更改下载文件的文件名吗?

你可以任意更改下载的文件名,因为eMule不是凭文件名来判断一个文件,而是看每个文件不同的hash值来确定唯一的文件。右键点击一个下载名,选择 显示文件详情 -- 文件名,就可以更改文件名。建议先暂停或停止下载的状态下再改名。

7) 下载文件前面的红色和绿色的惊叹号表示什么?

惊叹号表示了对这一下载的等级的评定。

= 积极的等级(文件被网友评定为优等的、高质量的)

= 负面的等级(例如文件有病毒、文件是损毁的、或者文件是冒牌的)

8) 我怎么对某个文件进行评定或添加等级?

在共享文件中,对某个文件点右键,然后选择 更改这个文件的注释... 就可以修改这个文件的评论和评分。

希望大家对文件有公平公正的评价!

9) 我怎样才能知道一个文件是冒牌的呢?

你可以从找到的文件名判断。右键点击任意一个下载文件 - 显示文件详情 - 文件名。在这里你可以看到所有这个文件的其他文件名,如果其他文件名和这个文件相矛盾或者差很多,就可以判断可能是冒牌的(往往可以判断出是否是真的DVDRip或者枪版)。

10) 我的下载为什么完成不了?

如果一个文件长时间没有下载完成,可能有以下2个方面的原因:

• 没有完整的源:-

如果状态条始终是红色的,从来未变成过蓝色;或者你找到的源都是和你缺损同一个部分的。那就说明这个文件的源缺损了,我们称这个文件死了。可能造成的原因是这个文件还没有全部传播出去(比如仅仅开头60%曾经被人下载过),发布者就不共享这个文件了。

• 文件损毁:-

在eMule的服务器按钮下的Log窗口中,显示A corrupted part has been received。 如果你经常收到的是同一个文件的某个特定部分的损毁报告,那可能着整个文件都已经损毁了(这个情况非常罕见)。

11) 下载完成了不过显示Errorious?

这个错误信息经常出现在以下情况:临时文件的存放目录和下载完成的目录不在同一个硬盘,或不在同一个硬盘分区上。eMule不能完成下载的可能性是因为下载完成的目录的那块硬盘分区没有足够的空间了。

12) 我下载完成了,但是下载目录中却没有文件?

如果eMule显示一个下载已经完成,但文件却没有转移到下载完成目录,你可以手动调整。

首先,点击显示文件详情,比较文件的大小以确保它真的已经下载完成。同时记下.part文件的数字,并copy文件名到剪贴板。打开Windows资源管理器,在eMule临时文件目录中找到相应的.part文件,把它移动到你想要放置的目录,把它重命名成你剪贴板里复制过得你想要得文件名(注意扩展名已经不需要.part.met了)即可。

13) 临时文件目录太占容量,我能否删除它?

这个文件夹内包含了所有你还未下载完成的文件,删除它就等于删除了你正在下载的文件!eMule在下载完成一个文件之前已经在临时文件目录建立了和源文件大小一样的临时文件,这点类似FlashGet,以确保不会下载到一半产生空间不够的问题。

14) 我怎样做才能不共享文件呢?

eMule会自动共享以下文件:

• 正在下载中的文件;

• 存放在下载完成目录中的文件,和你手动指定的共享目录中的文件。

从以上2个目录中把文件移走就可以不共享这些文件(或者把共享目录的勾去掉),但是不共享文件的动作不会影响正在上传的文件传输。

六使用eMule的问题

) Tips

eMule中的绝大多数功能是很容易通过菜单理解并掌握的。右键单击很多东西,例如下载的文件等都可以弹出不同的操作菜单。ALT + x更可以打开一个快捷菜单,非常有用。

2) 怎样才能添加好友?

好友可以在消息窗口管理。右键点击好友列表,选择 添加好友,你必须有以下信息才能添加:

• IP地址 – 这是必须的,询问你要添加的人,向他获取IP;

• 端口 – 通常情况下是4662,同样这是必须的;

• 名字 – 可以输入任何名字,不是必须的。

另一种添加好友的方法是在传输窗口右键点击任何你获得的源,选择 添加为好友。这样eMule会自动获取所需要的信息。

3) 怎样分配好友的上传通道?

右键点击好友,选择“建立好友通道”,当你的好友排到能下载的位置时这个通道会马上激活。

4) 怎么样才能清空我的搜索历史纪录?

点击搜索栏,按CTRL(或ALT)然后按DEL。

5) eMule中的那些图标表示什么意思?

- 正在从此用户处下载或获取hash值。

- 在此用户处排队,或正在查询此用户。

- 正在连接到此用户。

- 此用户没有我需要的文件部分、或者已请求另一个文件,或者因为Low ID的关系无法连接。

- 用户的状态未知。

- 新进的消息。

- 普通的eDonkey和eMule用户。

- 兼容eMule协议的用户。

- 拥有高级分的用户。

- 有高级分的和兼容eMule协议的用户。

- 使用mlDonkey的用户。

- mlDonkey用户并拥有高积分。

- 使用eDonkey2000-Overnet-Hybrid用户。

-用户并拥有高积分。

- 使用Shareaza的用户。

- Shareaza的用户并拥有高积分。

- High ID的用户。

- Low ID的用户。

- 未连接到服务器。

- eMule系统栏图标(High ID)。

- eMule系统栏图标(Low ID)。

- eMule系统栏图标(未连接到服务器)。

- 积极的等级(文件被网友评定为优等的、高质量的)。

- 负面的等级(例如文件有病毒、文件是损毁的、或者文件是冒牌的)。

6) 我能踢除或阻止特定的用户么?

不行。这个功能将永远不会在eMule中出现,因为它和eMule的原本的共享理念相矛盾。

7) 为什么我搜索到的结果只有201个?

搜索会大量增加服务器的负担,为了限制并减轻服务器的负担,eMule设定为返回用户的搜索结果最多只有201个。如果你想要更多的无限制的搜索结果,请使用web based search Jigle(在eMule同时也可使用)。

8) 我需要把我的共享文件的优先权都设置成“高”或者“发布”吗?

不需要。优先权是照顾某些特定的文件的,这种优先的等级是相对的。如果你把所有文件都设置成“高”,和把所有文件都设置成“低”没有任何区别。

优先权在上传过程中会特别优待那些“高”和“发布”的文件,也就是说用户从你这里下载“发布”文件的可能性大于优先权“低”的那些文件,排队时间也是前者大大短于后者。

七其他问题

1) eMule运行的时候为什么许多应用程序会变慢?

这取决于eMule的设定,eMule可能会打开很多连接并占用很多的带宽。这会减慢其他的Internet应用程序,例如IE。尤其是不恰当的设置或太高的连接数会引起严重的整体效果的下降。

2) Mod 是什么?

eMule的源代码是开放的,其中有些人基于源代码开发了修正的版本,称之为Mod,例如eMule Plus。这些版本不被官方的eMule小队所支持。

3) Mods是否更快活更好呢?

通常情况下不是。官方的版本是经过长期的编译和测试所得,而modders往往不能在短时间内改变eMule的内核工作原理。所以Mod要取得速度上的突破往往是不太可能的。

Mods可能会带来一些新特性,同时一些新bugs,可能有些特性你很喜欢。不过有些mod可能带有负面特性,甚至损害整个网络的正常运作。这些制作粗劣的mod根本不能使用,官方的eMule正在努力减少这些mod存在的可能性,并在安全性方面争取杜绝这类mod的产生。

4) 我收到消息说我的eMule版本不能再继续使用。

官方版本eMule版本不会产生任何此类的消息,只可能是Mod版本的eMule才会有。如果你是用官方的版本,你可以安全的过滤掉这类消息。

5) 我从什么地方能得到更多的帮助?

如果阅读完FAQ你仍然有问题,你可以试试看以下几个方法:

• 到官方论坛发问(请在论坛内使用搜索功能已确定你要问的问题是否曾经出现过)。

• 到VeryCD的eMule问题求助区发问,发问前先确定你的问题是否被问过,谢谢!

• IRC - 在eMule中的IRC主窗口点击 连接 ,进入英语eMule帮助频道,键入 /join #emule。也有其他语言的聊天室, 例如 #emule-french, #emule-spanish 或 #emule-dutch。

6) eMule是匿名的吗?

P2P网络传输建立在两个客户的Internet连接之间,为了实现这个传输,双方的IP地址都是公开的。这个IP可使用户被识别和跟踪。

现阶段,让P2P软件匿名使用的条件是不成熟的(使用匿名代理服务器等方法具有众多的缺点)。

7) 为什么我关闭了eMule,而我的防火墙却持续报警说有连接4662端口?

相对于其他用户,你得eMule是被当作一个源存在的。你所连接过的服务器也会因为你共享过的文件而把你作为一个源传播给其他用户。当你关闭eMule以后,这一信息不会马上消除,所以别的eMule用户仍会尝试连接到你这个源。过一段时间,这样的连接就会消失(因为你的这个源已经失效)。

8) 什么是IP过滤器?

IP过滤器是用来阻挡某些特定的对网络有损害的IP地址的。最常用的就是 Lussnig's IP Filter。从他的网站下载一个名为ip.prefix的文件,重命名为ipfilter.dat然后复制到eMule的 ../config目录。然后到eMule里的 选项 - 安全 - IP过滤,然后按“刷新”按钮。

9) 使用eMule下载下来的AVI文件为什么不能播放?

这其实不是eMule的问题。建议你使用Windows Media Player来播放此类文件。具体需要安装的插件,请看播放DVDRip必备的软件。

10) 怎样才能获得与AVI相应的字幕文件?

承接上一个问题,eMule中找到的源往往不是国内的机器上的,所以下载的DVDRip(AVI文件)通常没有配套的字幕,你可以去射手网寻找相应的字幕文件。下载下来之后只需要解压缩到和AVI文件一起,然后把字幕文件重命名和AVI文件同样的文件名即可(注意请保留srt sub等字幕文件的后缀名)。

求MATLAB中filter2函数的源代码。

若需要函数体,我可以传文件给你。下面是其代码function y = filter2(b,x,shape)

%FILTER2 Two-dimensional digital filter.

% Y = FILTER2(B,X) filters the data in X with the 2-D FIR

% filter in the matrix B. The result, Y, is computed

% using 2-D correlation and is the same size as X.

%

% Y = FILTER2(B,X,'shape') returns Y computed via 2-D

% correlation with size specified by 'shape':

% 'same' - (default) returns the central part of the

% correlation that is the same size as X.

% 'valid' - returns only those parts of the correlation

% that are computed without the zero-padded

% edges, size(Y) size(X).

% 'full' - returns the full 2-D correlation,

% size(Y) size(X).

%

% FILTER2 uses CONV2 to do most of the work. 2-D correlation

% is related to 2-D convolution by a 180 degree rotation of the

% filter matrix.

%

% Class support for inputs B,X:

% float: double, single

%

% See also FILTER, CONV2.% Copyright 1984-2004 The MathWorks, Inc.

% $Revision: 5.13.4.2 $ $Date: 2004/03/09 16:16:19 $error(nargchk(2,3,nargin));

if nargin3, shape = 'same'; endif (~isa(b,'float')), b = double(b); end

if (~isa(x,'float')), x = double(x); endcode = [shape,' ']; code = code(1);

if isempty(find(code=='svf'))

error('MATLAB:filter2:InvalidParam', 'Unknown shape parameter.');

end[mx,nx] = size(x);

stencil = rot90(b,2);

[ms,ns] = size(stencil);% 1-D stencil?

if (ms == 1)

y = conv2(1,stencil,x,shape);

elseif (ns == 1)

y = conv2(stencil,1,x,shape);

else

if (ms*ns mx*nx)

% The filter is bigger than the input. This is a nontypical

% case, and it may be counterproductive to check the

% separability of the stencil.

y = conv2(x,stencil,shape);

else

separable = false;

if all(isfinite(stencil(:)))

% Check rank (separability) of stencil

[u,s,v] = svd(stencil);

s = diag(s);

tol = length(stencil) * eps(max(s));

rank = sum(s tol);

separable = (rank ==1);

end

if separable

% Separable stencil

hcol = u(:,1) * sqrt(s(1));

hrow = conj(v(:,1)) * sqrt(s(1));

if (all(all((round(stencil) == stencil))) all(all((round(x) == x))))

% Output should be integer

y = round(conv2(hcol, hrow, x, shape));

else

y = conv2(hcol, hrow, x, shape);

end

else

% Nonseparable stencil

y = conv2(x,stencil,shape);

end

end

end

求一套完整的JAVA WEB项目的网络购物网站源代码

/**

 * @description: 

 * @author chenshiqiang E-mail:csqwyyx@163.com

 * @date 2014年9月7日 下午2:51:50   

 * @version 1.0   

 */

package com.example.baidumap;

import java.util.ArrayList;

import java.util.Collections;

import java.util.HashSet;

import java.util.List;

import android.app.Activity;

import android.os.Bundle;

import android.support.v4.view.PagerAdapter;

import android.support.v4.view.PagerTabStrip;

import android.support.v4.view.ViewPager;

import android.text.Editable;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ExpandableListView;

import android.widget.ListView;

import com.baidu.mapapi.map.offline.MKOLSearchRecord;

import com.baidu.mapapi.map.offline.MKOLUpdateElement;

import com.baidu.mapapi.map.offline.MKOfflineMap;

import com.baidu.mapapi.map.offline.MKOfflineMapListener;

import com.example.baidumap.adapters.OfflineExpandableListAdapter;

import com.example.baidumap.adapters.OfflineMapAdapter;

import com.example.baidumap.adapters.OfflineMapManagerAdapter;

import com.example.baidumap.interfaces.OnOfflineItemStatusChangeListener;

import com.example.baidumap.models.OfflineMapItem;

import com.example.baidumap.utils.CsqBackgroundTask;

import com.example.baidumap.utils.ToastUtil;

import com.example.system.R;

public class BaiduOfflineMapActivity extends Activity implements MKOfflineMapListener, OnOfflineItemStatusChangeListener

{

// ------------------------ Constants ------------------------

// ------------------------- Fields --------------------------

private ViewPager viewpager;

private PagerTabStrip pagertab;

private MySearchView svDown;

private ListView lvDown;

private MySearchView svAll;

private ExpandableListView lvWholeCountry;

private ListView lvSearchResult;

private ListView views = new ArrayListView(2);

private ListString titles = new ArrayListString(2);

private MKOfflineMap mOffline = null;

private OfflineMapManagerAdapter downAdapter;

private OfflineMapAdapter allSearchAdapter;

private OfflineExpandableListAdapter allCountryAdapter;

private ListOfflineMapItem itemsDown; // 下载或下载中城市

private ListOfflineMapItem itemsAll; // 所有城市,与热门城市及下载管理对象相同

private ListOfflineMapItem itemsProvince;

private ListListOfflineMapItem itemsProvinceCity;

// ----------------------- Constructors ----------------------

// -------- Methods for/from SuperClass/Interfaces -----------

@Override

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_offline_map);

// final String packname = this.getPackageName();

// PackageInfo packageInfo;

// try

// {

// packageInfo = this.getPackageManager().getPackageInfo(packname, PackageManager.GET_SIGNATURES);

//

//

// if (code == -00)

// {

// 初始化离线地图管理

mOffline = new MKOfflineMap();

mOffline.init(this);

initViews();

viewpager.setCurrentItem(1);

// }

// }

// catch (NameNotFoundException e)

// {

// e.printStackTrace();

// }

}

private boolean isResumed = false;

@Override

protected void onResume()

{

super.onResume();

if (!isResumed)

{

isResumed = true;

loadData();

}

}

@Override

protected void onDestroy()

{

super.onDestroy();

mOffline.destroy();

}

/**

 * 

 * @author chenshiqiang E-mail:csqwyyx@163.com

 * @param type

 *            事件类型: MKOfflineMap.TYPE_NEW_OFFLINE, MKOfflineMap.TYPE_DOWNLOAD_UPDATE, MKOfflineMap.TYPE_VER_UPDATE.

 * @param state

 *            事件状态: 当type为TYPE_NEW_OFFLINE时,表示新安装的离线地图数目. 当type为TYPE_DOWNLOAD_UPDATE时,表示更新的城市ID.

 */

@Override

public void onGetOfflineMapState(int type, int state)

{

switch (type)

{

case MKOfflineMap.TYPE_DOWNLOAD_UPDATE:

MKOLUpdateElement update = mOffline.getUpdateInfo(state);

if (setElement(update, true) != null)

{

if (itemsDown != null  itemsDown.size()  1)

{

Collections.sort(itemsDown);

}

refreshDownList();

}

else

{

downAdapter.notifyDataSetChanged();

}

allSearchAdapter.notifyDataSetChanged();

allCountryAdapter.notifyDataSetChanged();

break;

case MKOfflineMap.TYPE_NEW_OFFLINE:

// 有新离线地图安装

Log.d("OfflineDemo", String.format("add offlinemap num:%d", state));

break;

case MKOfflineMap.TYPE_VER_UPDATE:

// 版本更新提示

break;

}

}

/**

 * 百度下载状态改变(暂停--》恢复)居然不回调,所以改变状态时自己得增加接口监听状态改变刷新界面

 * 

 * @author chenshiqiang E-mail:csqwyyx@163.com

 * @param item

 *            有状态改变的item

 * @param removed

 *            item是否被删除

 */

@Override

public void statusChanged(OfflineMapItem item, boolean removed)

{

if (removed)

{

for (int i = itemsDown.size() - 1; i = 0; i--)

{

OfflineMapItem temp = itemsDown.get(i);

if (temp.getCityId() == item.getCityId())

{

itemsDown.remove(i);

}

}

refreshDownList();

}

else

{

loadData();

downAdapter.notifyDataSetChanged();

}

allSearchAdapter.notifyDataSetChanged();

allCountryAdapter.notifyDataSetChanged();

}

// --------------------- Methods public ----------------------

public void toDownloadPage()

{

viewpager.setCurrentItem(0);

}

// --------------------- Methods private ---------------------

private void initViews()

{

// TODO

viewpager = (ViewPager) findViewById(R.id.viewpager);

pagertab = (PagerTabStrip) findViewById(R.id.pagertab);

LayoutInflater inf = LayoutInflater.from(this);

View v1 = inf.inflate(R.layout.view_offline_download, null, false);

svDown = (MySearchView) v1.findViewById(R.id.svDown);

lvDown = (ListView) v1.findViewById(R.id.lvDown);

views.add(v1);

View v2 = inf.inflate(R.layout.view_offline_countrys, null, false);

svAll = (MySearchView) v2.findViewById(R.id.svAll);

lvWholeCountry = (ExpandableListView) v2.findViewById(R.id.lvWholeCountry);

lvSearchResult = (ListView) v2.findViewById(R.id.lvSearchResult);

views.add(v2);

titles.add("下载管理");

titles.add("城市列表");

pagertab.setTabIndicatorColor(0xff00cccc);

pagertab.setDrawFullUnderline(false);

pagertab.setBackgroundColor(0xFF38B0DE);

pagertab.setTextSpacing(50);

viewpager.setOffscreenPageLimit(2);

viewpager.setAdapter(new MyPagerAdapter());

svDown.setSearchListener(new MySearchView.SearchListener()

{

@Override

public void afterTextChanged(Editable text)

{

refreshDownList();

}

@Override

public void search(String text)

{

}

});

svAll.setSearchListener(new MySearchView.SearchListener()

{

@Override

public void afterTextChanged(Editable text)

{

refreshAllSearchList();

}

@Override

public void search(String text)

{

}

});

downAdapter = new OfflineMapManagerAdapter(this, mOffline, this);

lvDown.setAdapter(downAdapter);

allSearchAdapter = new OfflineMapAdapter(this, mOffline, this);

lvSearchResult.setAdapter(allSearchAdapter);

allCountryAdapter = new OfflineExpandableListAdapter(this, mOffline, this);

lvWholeCountry.setAdapter(allCountryAdapter);

lvWholeCountry.setGroupIndicator(null);

}

/**

 * 刷新下载列表, 根据搜索关键字及itemsDown 下载管理数量变动时调用

 */

private void refreshDownList()

{

String key = svDown.getInputText();

if (key == null || key.length()  1)

{

downAdapter.setDatas(itemsDown);

}

else

{

ListOfflineMapItem filterList = new ArrayListOfflineMapItem();

if (itemsDown != null  !itemsDown.isEmpty())

{

for (OfflineMapItem i : itemsDown)

{

if (i.getCityName().contains(key))

{

filterList.add(i);

}

}

}

downAdapter.setDatas(filterList);

}

}

/**

 * 刷新所有城市搜索结果

 */

private void refreshAllSearchList()

{

String key = svAll.getInputText();

if (key == null || key.length()  1)

{

lvSearchResult.setVisibility(View.GONE);

lvWholeCountry.setVisibility(View.VISIBLE);

allSearchAdapter.setDatas(null);

}

else

{

lvSearchResult.setVisibility(View.VISIBLE);

lvWholeCountry.setVisibility(View.GONE);

ListOfflineMapItem filterList = new ArrayListOfflineMapItem();

if (itemsAll != null  !itemsAll.isEmpty())

{

for (OfflineMapItem i : itemsAll)

{

if (i.getCityName().contains(key))

{

filterList.add(i);

}

}

}

allSearchAdapter.setDatas(filterList);

}

}

private void loadData()

{

new CsqBackgroundTaskVoid(this)

{

@Override

protected Void onRun()

{

// TODO Auto-generated method stub

// 导入离线地图包

// 将从官网下载的离线包解压,把vmp文件夹拷入SD卡根目录下的BaiduMapSdk文件夹内。

// 把网站上下载的文件解压,将\BaiduMap\vmp\l里面的.dat_svc文件,拷贝到手机BaiduMapSDK/vmp/h目录下

int num = mOffline.importOfflineData();

if (num  0)

{

ToastUtil.showToastInfo(BaiduOfflineMapActivity.this, "成功导入" + num + "个离线包", false);

}

ListMKOLSearchRecord all = null;

try

{

all = mOffline.getOfflineCityList();

}

catch (Exception e)

{

e.printStackTrace();

}

if (all == null || all.isEmpty())

{

ToastUtil.showToastInfo(BaiduOfflineMapActivity.this, "未获取到离线地图城市数据,可能有其他应用正在使用百度离线地图功能!", false);

return null;

}

ListMKOLSearchRecord hotCity = mOffline.getHotCityList();

HashSetInteger hotCityIds = new HashSetInteger();

if (!hotCity.isEmpty())

{

for (MKOLSearchRecord r : hotCity)

{

hotCityIds.add(r.cityID);

}

}

itemsAll = new ArrayListOfflineMapItem();

itemsDown = new ArrayListOfflineMapItem();

itemsProvince = new ArrayListOfflineMapItem();

itemsProvinceCity = new ArrayListListOfflineMapItem();

// cityType 0:全国;1:省份;2:城市,如果是省份,可以通过childCities得到子城市列表

// 全国概略图、直辖市、港澳 子城市列表

ArrayListMKOLSearchRecord childMunicipalities = new ArrayListMKOLSearchRecord();

proHot.cityName = "热门城市";

proHot.childCities = cs;

ListMKOLUpdateElement updates = mOffline.getAllUpdateInfo();

if (updates != null  updates.size()  0)

{

}

@Override

protected void onResult(Void result)

{

// TODO Auto-generated method stub

refreshDownList();

refreshAllSearchList();

allCountryAdapter.setDatas(itemsProvince, itemsProvinceCity);

}

}.execute();

}

跪求快速中值滤波算法matlab源代码

你注意了,imread(路径,'name.jpg'),我是以我电脑的图片给你做的,你运行时候,MATLAB路径要改到你需要处理图片的路径。

代码如下:

I=imread('11.jpg');    %读取图像,

subplot(2,2,1),imshow(I);title('原图');  %显示原图像

J=rgb2gray(I);    %把彩色图像转化为灰度图像

subplot(2,2,2),imshow(J);title('灰度图');  %显示灰度图像

J= imnoise(J,'salt  pepper',0.005); %加上椒盐噪声

subplot(2,2,3),imshow(J);title('椒盐噪声图'); %显示加上椒盐的图像

H=medfilt2(J);   %中值滤波

subplot(2,2,4),imshow(H);title('处理后图'); %显示中值滤波后的图像

中值滤波器适合于椒盐滤波,均值滤波器适合于高斯噪声

希望能帮到你!

如何获取 webrtc 特定版本 源码

获取 webrtc 特定版本源码推荐咨询ZEGO即构科技。只需4行代码,30分钟在APP、Web和小程序等应用内实现视频通话、语音通话,互动直播功能。【点击免费试用,0成本启动】

获取源码时,系统locale最好设置成English,就是控制面板里面的Region 控制面板- 时钟和区域-区域-管理-更改系统区域设置 选择英语美国,勾选Beta版,然后重启。目的是消除源码获取过程中可能出现的“UnicodeDecodeError: 'gbk' codec can't decode byte 0x9d in position 6304: illegal multibyte sequence”编解码错误,要注意,这样设置后会造成word、excel里面所有中文字体名称显示为英文,这是勾选了Beta版,改了编码方式所致,所以建议编译成功后改回“中文(简体,中国)”、不勾选Beta版,然后重启电脑,中文字体名称恢复为中文,其他编码异常也会消除。

想要了解更多关于webrtc的相关信息,推荐咨询ZEGO即构科技。公司自成立伊始,就专注自研音视频引擎,在音频前处理、网络自适应和跨平台兼容性等方面,达到国际一流水平,同时充分利用基础云服务商的能力,构建了MSDN海量有序自学习数据网络,服务覆盖全球,涵盖上百个音视频互动业务场景,单日时长突破30亿分钟。

1条大神的评论

  • avatar
    访客 2022-07-15 下午 01:22:36

    view.View;import android.view.ViewGroup;import android.widget.ExpandableListView;import android.widget.L

发表评论