文章标签 ‘源码’
[转载]Android之断点续传下载 – 青春流水指间、 – 博客园. 今天学习了Android开发中比较难的一个环节,就是断点续传下载,很多人看到这个标题就感觉头大,的确,如果没有良好的逻辑思维,这块的确很难搞明白。下面我就将自己学到的知识和一些见解写下供那些在这个环节还烦恼的人参考。这里我以下载mp3文件为例。 断点续传下载,顾名思义,那就是我们在一次下载未结束时,退出下载,第二次下载时会接着第一次下载的进度继续下载。那么怎么记录第一次下载的数据呢,这里肯定就要用到数据库了。下面就是我创建数据库的一个SQLiteOpenHelper类。用来首次运行时创建数据库。 DBHelper类: 1 package cn.yj3g.DBHelper; 2 3 import Android.content.Context; 4 import android.database.SQLite.SQLiteDatabase; 5 import android.database.sqlite.SQLiteOpenHelper; 6 7 /** 8 * 建立一个数据库帮助类 9 */ 10 public class DBHelper extends SQLiteOpenHelper { 11 //download.db–>数据库名 12 public DBHelper(Context context) { 13 super(context, “download.db”, null, 1); 14 } 15 16 /** 17 [...]
[转载]构建自己的购物搜索引擎一:写一个简单的 – 小诺N – 博客园. 记得2010年10月9号,淘宝全网搜索引擎一淘网上线,当时不怎么关注,只是在网站上看到过新闻而己,前两个月,觉得是时候走确定自己以后要走的方向了,于是决定以后加入到搜索的行列中,此时开始关注一淘网的技术,来打开搜索的大门。 那么做搜索引擎要做哪些内容呢,以前有人也这样问过nutch,lucene,hadoop之父Doug Cutting,他回答大致应该分为以下几部分: 1) 攫取(fetching):就是把被指向的网页下载下来。通常就是日常所说的网络爬虫的工作。 2) 数据库:保存攫取的网页信息,比如那些网页已经被攫取,什么时候被攫取的以及他们又有哪些链接的网页等等。 3) 链接分析:对刚才数据库的信息进行分析,给每个网页加上一些权值(比如PageRank,WebRank什么的),以便对每个网页的重要性有所估计。不过,在我看来,索引那些网页标记(Anchor)里面的内容更为重要。(这也是为什么诸如Google Bombing如此高效的原因 4) 索引(Indexing): 就是对攫取的网页内容,以及链入链接,链接分析权值等信息进行索引以便迅速查询。 5) 搜索(Searching): 就是通过一个索引进行查询然后按照网页排名显示 根据这几部分,我们可以自己写一个简单的购物搜索引擎。 第一步:抓取数据 目前开源的网络爬虫有很多,nutch,heritrix都可以算是其中的佼佼者。这里我们先自己动手写一个简单的。 仔细看淘宝的网站,会发现,基本上商品信息比较全的页面全都是以item.taobao开头的,那我们用chrome的开发人员工具分析一下页面结构。 如下图: 图片内容为:<div id=”J_itemViewed” catid=”1512″ data-value=”{“itemId”:”10810071223″,”xid”:””,”pic”:”i3/T1EJahXm4kXXb3Ses._112056.jpg”,”price”:”334800″,”itemIdStr”:””,”title”:”HTC S510e/Desire S g12 安卓2.3系统 大陆行货 联保 现货”}”></div> 我们可以看到,在这个名为J_itemViewed的div中,我们可以取到商品的三个最基本的信息,商 品名称,商品价格,商品图片地址。那么现在的目标很明确,就是在抓取item.taobao的网页,然后找到id为J_itemViewed的div标 签,取出里面的商品信息。那么动手吧。 我们写一个Crawler的类,这个类要做以下几件事: 1.提取网页链接 2.碰到包含有item.taobao的链接,分析网页内容,提取信息,将商品信息存储入本地 首先来看提取网页链接,如下图所示: 提取网页上的链接一般是从一种初始网页开始了,比如说我从www.taobao.com开始,然后分析网 页的结构,取得里面的所包含的链接,然后根据这个链接,去提取更深层次的链接。如此循环,到一定条件停止。在抓取网页的时候,网络蜘蛛一般有两种策略:广 度优先和深度优先。广度优先是指网络蜘蛛会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。这是最常 用的方式,因为这个方法可以让网络蜘蛛并行处理,提高其抓取速度。深度优先是指网络蜘蛛会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再 转入下一个起始页,继续跟踪链接。对于垂直搜索来说,通常采用广度优先策略。下面简单列出抓取与提供信息的方法,具体的看附近里的源程序。 GetUrlThread.class(链接抓取) GetInfo.class(信息提取) /** * 提取信息 * * [...]
[转载]打造最好用的离线QQ截图工具 C# – mengdesen – 博客园. 截图是最经常用的工具,QQ截图是我见过最好的截图工具,只是你必须打开QQ才可以使用,有时候没法上网,或者不想上QQ的时候,截图还是很麻烦。 Windows自带的那个截图工具和QQ的截图工具相差甚远。所以想找一个QQ离线时候的替代品。下了几个软件,觉得使用不够方便。最后找到了QQ截图工 具的提取版,可以实现QQ的截图功能,但是使用起来每次都带打开,而且不能使用快捷键。所以打算写个软件,重新整合一下。 要实现的功能 1:实现QQ的截图功能 2:时刻在后台运行,随时使用 3:不与QQ冲突 4:可以使用快捷键 5:开机自动启动 代码实现 1:实现QQ的截图功能,调用提取出来的程序 /// /// 启动外部程序,通过事件监视其退出 /// public void start_nokill() { // 启动外部程序 Process proc = Process.Start(appName); IfExit = false; if (proc != null) { // 监视进程退出 proc.EnableRaisingEvents = true; // 指定退出事件方法 proc.Exited += new EventHandler(proc_Exited); } } /// /// 启动外部程序退出事件 [...]
[转载]【百度地图API】交你如何用百度地图搜索自己的数据!不需数据库! – 酸奶小妹 – 博客园. 摘要: 我有一定的房产数据,还有银行数据。我想在百度地图上标注出来,并且能搜索到我这些数据。 可是百度的数据库上并没有我的数据。我应该怎么办呢? —————————————————————————————— 一、无需数据库,如何建立自己的地理信息表。 如果让初学者去建立数据库,那么意味着大家还要学习数据库,以及网站后端的知识。为了方便大家学习,使大家能够快速地掌握如何构建房产地图,银行地图等,酸奶小妹教大家一个“把数据存储在前端”,“搜索自己数据”的一个办法。(本文章要特别感谢不怕冷的小蚊子) 首先,我们需要为自己的数据建立一个数组,把它们存储起来。像这样。 // 标注点数组 var BASEDATA = [ {title:"奥亚酒店",content:"北苑路169号",point:"116.422792|40.009471",isOpen:1,icon:{w:21,h:21,l:115,t:46,x:1,lb:10}}, {title:"珀丽酒店",content:"将台西路8号",point:"116.484289|39.97936",isOpen:0,icon:{w:21,h:21,l:0,t:0,x:6,lb:5}}, {title:"贵国酒店",content:"左家庄1号",point:"116.454494|39.964011",isOpen:0,icon:{w:21,h:21,l:0,t:0,x:6,lb:5}}, {title:"科通酒店",content:"民族园路8号院2号楼",point:"116.394601|39.987925",isOpen:0,icon:{w:21,h:21,l:0,t:0,x:6,lb:5}}, {title:"将台酒店",content:"酒仙桥路甲12号",point:"116.496024|39.976864",isOpen:0,icon:{w:21,h:21,l:0,t:0,x:6,lb:5}}, {title:"成宏酒店",content:"北四环东路惠新东桥西北侧",point:"116.429445|39.995392",isOpen:0,icon:{w:21,h:21,l:0,t:0,x:6,lb:5}}, {title:"华商酒店",content:"延静西里2号",point:"116.488962|39.921939",isOpen:0,icon:{w:21,h:21,l:0,t:0,x:6,lb:5}}, {title:"标华酒店",content:"北京市 朝阳区红庙路柴家湾1号",point:"116.489284|39.92104",isOpen:0,icon:{w:21,h:21,l:0,t:0,x:6,lb:5}}, {title:"万程酒店",content:"天坛路89号",point:"116.411762|39.89457",isOpen:0,icon:{w:21,h:21,l:0,t:0,x:6,lb:5}}, {title:"黎昌酒店",content:"永定门外彭庄乙58号",point:"116.393532|39.876272",isOpen:0,icon:{w:21,h:21,l:0,t:0,x:6,lb:5}}, {title:"北京银行",content:"北京市海淀区白石桥路39号",point:"116.329593|39.952398",isOpen:0,icon:{w:21,h:21,l:0,t:0,x:6,lb:5}}, {title:"海淀银行",content:"丹棱街16西门",point:"116.315551|39.984388",isOpen:0,icon:{w:21,h:21,l:0,t:0,x:6,lb:5}}, {title:"北京银行",content:"北京市西城区文津街附近",point:"116.391713|39.929007",isOpen:0,icon:{w:21,h:21,l:0,t:0,x:6,lb:5}}, {title:"首都银行",content:"东三环南路88号",point:"116.469899|39.87684",isOpen:0,icon:{w:21,h:21,l:0,t:0,x:6,lb:5}}, {title:"国家银行",content:"中关村南大街33号",point:"116.331292|39.949031",isOpen:0,icon:{w:21,h:21,l:0,t:0,x:6,lb:5}}, {title:"崇文区银行",content:"北京市崇文区花市大街113号(乐天玛特超市旁)的敕建火德真君庙内",point:"116.427671|39.903568",isOpen:0,icon:{w:21,h:21,l:0,t:0,x:6,lb:5}}, {title:"朝阳区银行",content:"北京市朝阳区朝外小庄金台里17号",point:"116.47766|39.922295",isOpen:0,icon:{w:21,h:21,l:0,t:0,x:6,lb:5}}, {title:"宣武区银行",content:"教子胡同8号",point:"116.374561|39.894302",isOpen:0,icon:{w:21,h:21,l:0,t:0,x:6,lb:5}}, {title:"东城区银行",content:"交道口东大街85号",point:"116.41927|39.9474",isOpen:0,icon:{w:21,h:21,l:0,t:0,x:6,lb:5}}, {title:"西城区银行",content:"北京市西城区后广平胡同26号",point:"116.368099|39.942332",isOpen:0,icon:{w:21,h:21,l:0,t:0,x:6,lb:5}} ] 意:这部分是写在js里的。 其中,title是信息窗口打开后的标题,同时也是label标签的取值; content是信息窗口的内容; point是经纬度,请使用百度坐标(获取地址:http://dev.baidu.com/wiki/static/map/API/tool/getPoint/); isopen是控制信息窗口是否打开的开关; icon里的选项是控制marker图片的,width是宽、hight是高等等。 二、如何查找,并显示自己的数据 你需要在html中写一个搜索框,一个搜索按钮。 <input id="keyword" style="width: 150px;" type="text" value="银行" /> [...]
[转载]用C#编写一个抓网页的应用程序 – 临河羡鱼 – 博客园. 用C#和.NET提供的类来轻松创建一个抓取网页内容源代码的程序 。HTTP是WWW进行数据访问最基本的协议之一,在.NET的基本类型库类中提供了两个对象类:HTTPWebRequest和HTTPWebResponse,分别用来向某资源发送请求和获得响应。为了得到一个资源的内容,我们先指定一个想要抓取的URL地址,用HTTPWebRequest对象进行请求,用HTTPWebResponse对象接收响应的结果,最后用TextStream对象来提取我们想要的信息,并在控制台打印出来。 下面就是看看如何实现这样的功能: 第一步:打开VS.NET,点“文件”-“新建”-“项目”,项目类型选择“Visual C#项目”,模板选“Windows应用程序”, 第二步:在Form1里加入Label1,Button1,TextBox1,TextBox2四个控件,TextBox2的Multiline属性改为True, 第三步:在Form1窗体上点击右键,选“查看代码”,button1的Click事件代码: using System.IO; using System.Net; using System.Text; private void button1_Click(object sender, System.EventArgs e) { byte[] buf = new byte[38192]; HttpWebRequest request = (HttpWebRequest) WebRequest.Create(textBox1.Text); HttpWebResponse response = (HttpWebResponse) request.GetResponse(); Stream resStream = response.GetResponseStream(); int count = resStream.Read(buf, 0, buf.Length); textBox2.Text = Encoding.Default.GetString(buf, 0, count); resStream.Close(); } [...]


