`
metaphy
  • 浏览: 344615 次
  • 性别: Icon_minigender_1
  • 来自: 大西洋底
社区版块
存档分类
最新评论

寻找可访问的随机网站(代码)

阅读更多
利用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
分享到:
评论

相关推荐

    java 迷宫 随机生成 自动寻找路径 用到树的深度遍历

    4. 当没有可访问的邻居时,回溯到上一个位置,继续寻找其他可能的路径,直到整个迷宫被遍历完。 自动寻找路径的部分,同样可以利用DFS或BFS,但BFS通常更适合找到最短路径,因为它总是先探索最近的节点。在Java中,...

    数据结构源代码

    - **最短路径(迪杰斯特拉算法)**:用于寻找图中两个节点之间的最短路径,基于贪心策略,每次选取当前未访问节点中距离源点最近的一个进行扩展。 8. **线索二叉树**: - **线索二叉树**:在二叉搜索树的基础上,...

    随机行走(random walk)

    5. **最优化问题**:在解决复杂优化问题时,如组合优化,随机行走策略可以作为局部搜索算法的一部分,通过随机探索解空间来寻找最优解。 在文档《第4章 基于图的特征选择.docx》中,可能详细介绍了如何利用随机行走...

    matlab tsp 源代码

    旅行商问题是一个经典的组合优化问题,目标是寻找最短的可能路线,使得旅行商能够访问每个城市一次并返回起点。 【描述】中提到,该源代码采用的是遗传算法(Genetic Algorithm, GA)来解决问题。遗传算法是一种...

    以二维数组模拟一个矩形迷宫,利用随机深度优先、随机广度优先或随机普里姆算法生成不含有回路的迷宫并找到迷宫中任意两点的正确路径

    在迷宫生成过程中,DFS从一个随机起点开始,随机选择一个未访问的相邻格子,然后标记这个格子为已访问。为了避免回路,当所有相邻格子都被访问过或者是障碍时,搜索返回上一步。重复这个过程直到整个迷宫被标记。DFS...

    Unity版本的随机迷宫.rar

    在Unity这个强大的游戏引擎中,实现随机迷宫生成更是能够极大地增加游戏的可玩性和重玩价值。本资源“Unity版本的随机迷宫.rar”便提供了这样一个解决方案,它声称适用于所有Unity版本,并且使用方法简单,对于...

    TSP之完全随机算法 cpp示例

    旅行商问题(Traveling Salesman Problem,简称TSP)是图论中的一个经典问题,它询问的是:给定一个包含多个城市的图,每个城市之间有距离,一个旅行商需要访问每一个城市一次并返回起点,如何设计一条路线使得总...

    随机迷宫生成及最短路径寻找(QT实现可视化)(深度优先遍历)

    在本项目中,我们主要探讨的是使用QT框架进行可视化编程,实现随机迷宫的生成以及最短路径的寻找。这个项目适用于计算机科学和技术、软件工程等专业的课程设计,旨在提升学生对数据结构、算法和图形用户界面设计的...

    模仿微信发红包代码

    在代码中寻找关键函数,如`generateRedPacket()`(生成红包)、`grabRedPacket()`(抢红包)等,有助于我们理解整个红包发放的流程。 总之,模仿微信发红包代码是一个综合性的编程任务,涵盖了从随机数生成到并发...

    随机迷宫自动找出所有出路

    边界固定为不可通行状态(值为1),内部随机填充为可通行或不可通行状态(值为0或1)。特别地,起点(1,1)和终点(a,b)被设为可通行状态(值为0)。 #### 2.3 查找所有路径 - 采用非递归方式,利用栈来存储探索过程中...

    迷宫的代码大全

    - **深度优先搜索(DFS)**:这是一种简单的迷宫生成方法,通过随机选择一个未访问的相邻格子进行连接,直到所有格子都被访问过。 - **Prim算法**:类似于图的最小生成树算法,每次随机选择一个未连接的相邻格子并...

    【H5JS】游戏常用算法-路径搜索算法-随机迷宫算法(普里姆算法).pdf

    该算法的实现是通过随机选择一个格子作为当前访问的格子,然后循环选择周围的格子,直到所有格子都被访问。 在游戏开发中,路径搜索算法和随机迷宫算法可以结合使用,生成一个随机的迷宫,然后使用路径搜索算法来让...

    Matlab多旅行商实验源代码

    这个问题描述了一个旅行商需要访问多个城市,并且每个城市只能访问一次,最后返回起点,目标是寻找最短的可能路线。Matlab作为强大的数学计算和建模工具,常被用于解决这类问题。本文将深入探讨基于Matlab的多旅行商...

    【路径规划-TSP问题】基于贪婪随机自适应搜索算法GRASP解决TSP问题附matlab代码.zip

    【路径规划-TSP问题】基于贪婪随机自适应搜索算法GRASP解决TSP问题附matlab代码.zip这个压缩包文件提供了一套完整的解决方案,用于解决旅行商问题(Traveling Salesman Problem, TSP)。TSP是一个经典的组合优化问题...

    数据结构C 代码

    数组实现具有随机访问的优势,但插入和删除操作可能需要移动大量元素;链表则在插入和删除时更为灵活,但访问速度较慢。线性表的常见操作包括添加元素、删除元素、查找元素等。 2. **栈**:栈是一种后进先出(LIFO...

    TSP遗传算法matlab代码

    本项目提供的MATLAB代码是针对旅行商问题(Traveling Salesman Problem, TSP)的一个实现,TSP是一个经典的组合优化问题,其目标是寻找最短的可能路线,使得旅行商可以访问每个城市一次并返回起点。** **旅行商问题...

    迷宫图走法源代码

    在IT领域,迷宫图走法是一个经典的算法问题,它涉及到路径寻找和图遍历。这个压缩包中的源代码很可能是用C#语言实现的,因为文件名中有".cs"后缀,这是C#源代码文件的标志。下面将详细讨论迷宫图走法的相关知识点。 ...

    免疫克隆选择算(源代码)

    旅行商问题(TSP)是组合优化领域的一个经典问题,旨在寻找访问一系列城市并返回起点的最短路径,每个城市只能访问一次。免疫克隆选择算法在解决TSP时,抗体表示为城市的访问顺序,适应度值通常基于路径的总距离。...

    特征码搜索基址 c/c++源代码

    例如,在游戏修改中,我们可能寻找某个函数的机器码序列,因为这个序列在游戏运行时执行特定功能。 2. **搜索基址**:基址是指程序在内存中的起始地址。在运行时,程序会被加载到一个随机的内存位置,这称为ASLR...

    迷宫实验代码

    在本文中,我们将深入探讨由杭师大杨立春原创的迷宫实验代码,该代码实现了两个核心功能:随机生成可通行地图以及自动走迷宫的算法。 首先,我们来看迷宫的生成。随机生成迷宫通常采用深度优先搜索(DFS)或Prim...

Global site tag (gtag.js) - Google Analytics