利用InetAddress.getAllByName(site)寻找随机网站。该方法,如果site可访问,则返回InetAddress[],否则将抛出UnknownHostException。程序一个明显的问题是效率不高,在无用的链接上浪费时间过多,平均每找到一个花时间2-5秒;这是很恐怖的。
package corejava.chapter.network;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Calendar;
import java.util.Random;
import java.util.Vector;
/**
* 随机搜寻可以访问的网址
*/
public class LookforWWWSite {
private static Random r = new Random();
private static final int WANTSITESCOUNT = 10;
/**
* 随机生成指定长度字符的2、3级域名
*
* @param bits
* @return
*/
private static String getPrename (int bits) {
char[] chars = new char[bits];
for (int i = 0; i < bits; i++) {
chars[i] = (char) (r.nextInt(26) + 97); //a~z
}
return "www." + new String(chars);
}
/**
* 网址生成规则,3级别域名+ 2级域名 + 1级域名
* 3级域名:www 2级域名:3-5位字符组合
*
* @param args
*/
public static void main(String[] args) {
Vector<String> sites = new Vector<String>();
String[] name1 = { ".com", ".net", ".org", ".cn" };
System.out.println("Start at "+ Calendar.getInstance().getTime());
long start = Calendar.getInstance().getTimeInMillis();
while (true) {
String prename = getPrename(3 + r.nextInt(3)); // 3~5
for (String n1 : name1) {
try {
String site = prename + n1;
InetAddress.getAllByName(site);
if (!sites.contains(site)) {
sites.add(site);
if (sites.size() >= WANTSITESCOUNT) break;
}
} catch (UnknownHostException e) {
}
}
if (sites.size() >= WANTSITESCOUNT) break;
}
long end = Calendar.getInstance().getTimeInMillis();
System.out.println("Take time in millis : "+ (end - start));
for (String site : sites)
System.out.println(site);
}
}
输出结果:
Start at Wed Mar 19 14:56:18 CST 2008
Take time in millis : 41672
www.nag.com
www.nag.net
www.nag.org
www.rdlz.com
www.rdlz.cn
www.ctm.com
www.ctm.net
www.ctm.org
www.ctm.cn
www.pqqz.com
分享到:
相关推荐
4. 当没有可访问的邻居时,回溯到上一个位置,继续寻找其他可能的路径,直到整个迷宫被遍历完。 自动寻找路径的部分,同样可以利用DFS或BFS,但BFS通常更适合找到最短路径,因为它总是先探索最近的节点。在Java中,...
这意味着管理员可以预设一个固定的端口号,确保无论何时何地,IIS服务都可通过这个固定的端口访问。例如,一些企业为了安全起见,可能会使用88这样的非常规端口来托管其内部或对外提供的Web服务。 与此同时,【简易...
- **最短路径(迪杰斯特拉算法)**:用于寻找图中两个节点之间的最短路径,基于贪心策略,每次选取当前未访问节点中距离源点最近的一个进行扩展。 8. **线索二叉树**: - **线索二叉树**:在二叉搜索树的基础上,...
5. **最优化问题**:在解决复杂优化问题时,如组合优化,随机行走策略可以作为局部搜索算法的一部分,通过随机探索解空间来寻找最优解。 在文档《第4章 基于图的特征选择.docx》中,可能详细介绍了如何利用随机行走...
旅行商问题是一个经典的组合优化问题,目标是寻找最短的可能路线,使得旅行商能够访问每个城市一次并返回起点。 【描述】中提到,该源代码采用的是遗传算法(Genetic Algorithm, GA)来解决问题。遗传算法是一种...
在迷宫生成过程中,DFS从一个随机起点开始,随机选择一个未访问的相邻格子,然后标记这个格子为已访问。为了避免回路,当所有相邻格子都被访问过或者是障碍时,搜索返回上一步。重复这个过程直到整个迷宫被标记。DFS...
在Unity这个强大的游戏引擎中,实现随机迷宫生成更是能够极大地增加游戏的可玩性和重玩价值。本资源“Unity版本的随机迷宫.rar”便提供了这样一个解决方案,它声称适用于所有Unity版本,并且使用方法简单,对于...
旅行商问题(Traveling Salesman Problem,简称TSP)是图论中的一个经典问题,它询问的是:给定一个包含多个城市的图,每个城市之间有距离,一个旅行商需要访问每一个城市一次并返回起点,如何设计一条路线使得总...
在本项目中,我们主要探讨的是使用QT框架进行可视化编程,实现随机迷宫的生成以及最短路径的寻找。这个项目适用于计算机科学和技术、软件工程等专业的课程设计,旨在提升学生对数据结构、算法和图形用户界面设计的...
在代码中寻找关键函数,如`generateRedPacket()`(生成红包)、`grabRedPacket()`(抢红包)等,有助于我们理解整个红包发放的流程。 总之,模仿微信发红包代码是一个综合性的编程任务,涵盖了从随机数生成到并发...
边界固定为不可通行状态(值为1),内部随机填充为可通行或不可通行状态(值为0或1)。特别地,起点(1,1)和终点(a,b)被设为可通行状态(值为0)。 #### 2.3 查找所有路径 - 采用非递归方式,利用栈来存储探索过程中...
- **深度优先搜索(DFS)**:这是一种简单的迷宫生成方法,通过随机选择一个未访问的相邻格子进行连接,直到所有格子都被访问过。 - **Prim算法**:类似于图的最小生成树算法,每次随机选择一个未连接的相邻格子并...
6、优化“文本_取随机数字”精简代码,提高执行效率,感谢易友[ds9660]反馈。 7、修正“普通填表->链接_点击”无法在本窗口中打开的BUG,感谢易友[@zhuan888]反馈。 8、修正“时间_时间戳转文本”代码不严谨出现数组...
这个问题描述了一个旅行商需要访问多个城市,并且每个城市只能访问一次,最后返回起点,目标是寻找最短的可能路线。Matlab作为强大的数学计算和建模工具,常被用于解决这类问题。本文将深入探讨基于Matlab的多旅行商...
【路径规划-TSP问题】基于贪婪随机自适应搜索算法GRASP解决TSP问题附matlab代码.zip这个压缩包文件提供了一套完整的解决方案,用于解决旅行商问题(Traveling Salesman Problem, TSP)。TSP是一个经典的组合优化问题...
数组实现具有随机访问的优势,但插入和删除操作可能需要移动大量元素;链表则在插入和删除时更为灵活,但访问速度较慢。线性表的常见操作包括添加元素、删除元素、查找元素等。 2. **栈**:栈是一种后进先出(LIFO...
在生成迷宫的过程中,首先随机选择一个格子作为当前访问的格子,然后随机选择周围的未访问格子,将它们加入到当前路径中,并用普里姆算法连接这些点。此过程反复执行,直到所有格子都被访问过为止。通过这种方法生成...
本项目提供的MATLAB代码是针对旅行商问题(Traveling Salesman Problem, TSP)的一个实现,TSP是一个经典的组合优化问题,其目标是寻找最短的可能路线,使得旅行商可以访问每个城市一次并返回起点。** **旅行商问题...
在IT领域,迷宫图走法是一个经典的算法问题,它涉及到路径寻找和图遍历。这个压缩包中的源代码很可能是用C#语言实现的,因为文件名中有".cs"后缀,这是C#源代码文件的标志。下面将详细讨论迷宫图走法的相关知识点。 ...
旅行商问题(TSP)是组合优化领域的一个经典问题,旨在寻找访问一系列城市并返回起点的最短路径,每个城市只能访问一次。免疫克隆选择算法在解决TSP时,抗体表示为城市的访问顺序,适应度值通常基于路径的总距离。...