当前位置:  互联网>综合
本页文章导读:
    ▪矩阵相关      Given a screen with all pixels having one of two colors. Now I will click on a random pixel. Then that pixel & all the adjacent pixels with same color should change the color to the second color. adjacent = vertically or horizontally above or blow.........
    ▪Hadoop 统计文件中某个单词出现的次数       如文件word.txt内容如下: what is you name? my name is zhang san。 要求统计word.txt中出现“is”的次数?   代码如下: PerWordMapper package com.hadoop.wordcount;import java.io.IOException; import java.util.StringTokeni.........
    ▪Python脚本同时发布新浪微博和twitter       你可以在博主的新页面同样看到这篇文章。 这篇文章我在写第二遍,第一遍写的很详细,可惜因为我很久没用vim了,它生气了,我不小心按错了键,写的好几百行的都没了,这肯定是上天.........

[1]矩阵相关
    来源: 互联网  发布时间: 2013-10-26

Given a screen with all pixels having one of two colors. Now I will click on a random pixel.
Then that pixel & all the adjacent pixels with same color should change the color to the second color.

adjacent = vertically or horizontally above or blow.

package com.zhuyu_deng.test;

public class Test
{

	private static void printMatrix(char[][] a)
	{
		for (int i = 0; i < a.length; ++i)
		{
			for (int j = 0; j < a[i].length; ++j)
			{
				System.out.print(a[i][j] + "  ");
			}
			System.out.println();
		}
	}
//	关于FloodFill算法的解释
//	以下就是源程序 事实上就是广度搜索
//	但是必须要建立一个所谓的方向数组
	private static void floodFill(char[][] a, int x, int y)
	{
		class Node
		{
			public Node(int x, int y)
			{
				this.x = x;
				this.y = y;
			}
			int x;
			int y;
		}

		int px[] = new int[] {0, 0, -1, 1};
		int py[] = new int[] {-1, 1, 0, 0};
		char orgColor = a[x][y];
		char revColor = a[x][y] == 'W' ? 'B' : 'W';
		int size = 0;
	
		Node stack[] = new Node[a.length * a[0].length];
		stack[size] = new Node(x, y);
		while (size >= 0)
		{
			Node cur = stack[size];
			size--;
			a[cur.x][cur.y] = revColor;
			
			for (int i = 0; i < 4; ++i)
			{
				int xx = cur.x + px[i];
				int yy = cur.y + py[i];
				if (xx >= 0 && xx < a.length && yy >= 0 && yy < a[0].length)
				{
					if (a[xx][yy] == orgColor)
						stack[++size] = new Node(xx, yy);
				}
			}
			
		}
		
	}

	public static void main(String args[])
	{
		char a[][] = new char[][] { { 'W', 'B', 'W', 'W', 'B', 'W' },
				{ 'B', 'B', 'W', 'W', 'B', 'W' },
				{ 'W', 'B', 'B', 'B', 'W', 'B' },
				{ 'W', 'B', 'W', 'W', 'B', 'B' } };
		
		
		printMatrix(a);
		floodFill(a, 2, 2);

		System.out.println();
		printMatrix(a);
		
	}
}



Edit: Question seem to be not clear to some ppl. Giving an ex:

Given below & clicked on 2nd row, 2nd col
W B W W B W
B B W W B W
W B B B W B
W B W W B B

Covert to
W W W W B W
W W W W B W
W W W W W B
W W W W B B


package com.zhuyu_deng.test;

import java.util.Stack;

public class Test
{

	private static void printMatrix(char[][] a)
	{
		for (int i = 0; i < a.length; ++i)
		{
			for (int j = 0; j < a[i].length; ++j)
			{
				System.out.print(a[i][j] + "  ");
			}
			System.out.println();
		}
	}
	
	private static void floodFill(char[][] a, int x, int y)
	{
		class Node
		{
			public Node(int x, int y)
			{
				this.x = x;
				this.y = y;
			}

			int x;
			int y;
		}

		char orgColor = a[x][y];
		char revColor = a[x][y] == 'W' ? 'B' : 'W';
		int size = 0;
	
		Node stack[] = new Node[a.length * a[0].length];
		stack[size] = new Node(x, y);
		while (size >= 0)
		{
			Node cur = stack[size];
			size--;
			a[cur.x][cur.y] = revColor;
			if (cur.x - 1 >= 0 && orgColor == a[cur.x - 1][cur.y])
			{
				stack[++size] = (new Node(cur.x-1, cur.y));
			}
			if (cur.x + 1 < a.length && orgColor == a[cur.x + 1][cur.y])
			{
				stack[++size] = (new Node(cur.x+1, cur.y));
			}
			if (cur.y - 1 >= 0 && orgColor == a[cur.x][cur.y - 1])
			{
				stack[++size] = (new Node(cur.x, cur.y-1));
			}
			if (cur.y + 1 < a[0].length && orgColor == a[cur.x][cur.y + 1])
			{
				stack[++size] = (new Node(cur.x, cur.y + 1));
			}
		}
		
	}

	public static void main(String args[])
	{
		// int[] a = {-2,11,-4,13,-5,-2};
		int[][] b = { { 0, -2, -7, 0 }, { 9, 2, -6, 2 }, { -4, 1, -4, 1 },
				{ -1, 8, 0, -2 } };
		int[][] matrix = { { 2, 3, 4, 1 }, { 1, 1, 3, 9 }, { 2, 2, 3, 1 },
				{ 2, 2, 3, 1 } };
		char a[][] = new char[][] { { 'W', 'B', 'W', 'W', 'B', 'W' },
				{ 'B', 'B', 'W', 'W', 'B', 'W' },
				{ 'W', 'B', 'B', 'B', 'W', 'B' },
				{ 'W', 'B', 'W', 'W', 'B', 'B' } };
		
		
		printMatrix(a);

		floodFill(a, 2, 2);

		System.out.println();

		printMatrix(a);
		
	}
}


作者:DENGZHUYU 发表于2013-7-9 22:57:24 原文链接
阅读:13 评论:0 查看评论

    
[2]Hadoop 统计文件中某个单词出现的次数
    来源: 互联网  发布时间: 2013-10-26


如文件word.txt内容如下:

what is you name?

my name is zhang san。

要求统计word.txt中出现“is”的次数?

 

代码如下:

PerWordMapper

package com.hadoop.wordcount;

import java.io.IOException; import java.util.StringTokenizer;

import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper;

public class PerWordMapper extends Mapper<Object, Text, Text, IntWritable> {

 public Text keyText = new Text();  public IntWritable intValue = new IntWritable(1);    @Override  protected void map(Object key, Text value,    Context context)    throws IOException, InterruptedException {   String str = value.toString();   StringTokenizer to = new StringTokenizer(str);   while (to.hasMoreTokens()) {    String t = to.nextToken();    //此处为判断统计字符串的地方    if(t.equals("is")){     keyText = new Text(t);     context.write(keyText, intValue);    }               }  } }

 

PerWordReducer

package com.hadoop.wordcount;

import java.io.IOException;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

public class PerWordReducer extends Reducer<Text, IntWritable, Text, IntWritable> {

	public IntWritable intValue = new IntWritable(0);
	@Override
	protected void reduce(Text key, Iterable<IntWritable> value,
			Context context)
			throws IOException, InterruptedException {
		int sum = 0;
		while(value.iterator().hasNext()){
			sum += value.iterator().next().get();
		}
		intValue.set(sum);
		context.write(key, intValue);
	}
	
}


PerWordCount

package com.hadoop.wordcount;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;

import com.hadoop.mapreducer.MapperClass;
import com.hadoop.mapreducer.ReducerClass;
import com.hadoop.mapreducer.WordCount;

public class PerWordCount {
	public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {
		Configuration conf = new Configuration();
	    String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
	    System.out.println("otherArgs.length:"+otherArgs.length);
	    if (otherArgs.length != 2) {
	      System.err.println("Usage: wordcount <in> <out>");
	      System.exit(2);
	    }
	    Job job = new Job(conf, "word count");
	    job.setJarByClass(PerWordCount.class);
	    job.setMapperClass(PerWordMapper.class);
	    job.setCombinerClass(PerWordReducer.class);
	    job.setReducerClass(PerWordReducer.class);
	    job.setOutputKeyClass(Text.class);
	    job.setOutputValueClass(IntWritable.class);
	    FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
	    FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
	    System.exit(job.waitForCompletion(true) ? 0 : 1);
	}

}



 

作者:zyuc_wangxw 发表于2013-7-11 21:18:10 原文链接
阅读:0 评论:0 查看评论

    
[3]Python脚本同时发布新浪微博和twitter
    来源: 互联网  发布时间: 2013-10-26

你可以在博主的新页面同样看到这篇文章。


这篇文章我在写第二遍,第一遍写的很详细,可惜因为我很久没用vim了,它生气了,我不小心按错了键,写的好几百行的都没了,这肯定是上天嫌我懒得太久没写了故意来给我这么一下的,好了,不说废话了,下面就是将怎么使用python脚本来在terminal同时更新你在微博和twitter的状态了。


先说微博

首先第一步我们都是要先申请一个开发者的帐号的,关于具体的一些细节可以看看这里,里面讲了授权使用的方式和原理,像我使用的是第三方的SDK,就只是简单的看了一下,没有太深入的了解,不过想要开发SDK的同学还是可以好好研究的。


下面就是代码了:


from weibo import APIClient
from re import split
import urllib,httplib

APP_KEY = '1******671' #youre app key 
APP_SECRET = 'e623c*************bfa30b23' #youre app secret  
# callback url, your must set this URL in your "my application->appInfos-> advanced  info"
CALLBACK_URL = 'http://ww****shore.com'
ACCOUNT = 'bo******@gmail.com'#your email address
PASSWORD = '*********'     #your pw

#for getting the code contained in the callback url
def get_code(url):
    conn = httplib.HTTPSConnection('api.weibo.com')
    postdata = urllib.urlencode     ({'client_id':APP_KEY,'response_type':'code','redirect_uri':CALLBACK_URL,'action':'submit','userId':ACCOUNT,'passwd':PASSWORD,'isLoginSina':0,'from':'','regCallback':'','state':'','ticket':'','withOfficalFlag':0})
    conn.request('POST','/oauth2/authorize',postdata,{'Referer':url,'Content-Type': 'application/x-www-form-urlencoded'})
    res = conn.getresponse()
    location = res.getheader('location')
    code = location.split('=')[1]
    conn.close()
    return code

def post_weibo(post_contents):
    print "weibo posting..."
    #for getting the authorize url
    client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
    url = client.get_authorize_url()
    code = get_code(url)
    r = client.request_access_token(code)
    access_token = r.access_token # The token return by sina
    expires_in = r.expires_in 
    #save the access token
    client.set_access_token(access_token, expires_in)
    results = client.post.statuses__update(status=post_contents)
    return results

从上面的代码中,有一点需要注意一下那就是,get_code(),这个函数是获取了授权码,在本来的SDK中是没有这一步的,但是少了这一步我们就需要人工的在浏览区的网页上点击连接授权,而我却只想在命令行里面完成所有的事情,所以才有了这个函数,函数中是使用了httplib包模拟了web请求,并且处理了返回的信息,从而获取到了授权码。


之所以没有实现人人网,也是因为授权码的问题,可以看看人人网的开发者文档,授权方式和微博相似,不同就在于不能够我们自己通过代码发送请求来获取授权码,这也就解释了为什么人人网推荐的python SDK都是挂在GAE上的,应该就是因为这个原因,需要我们亲自在网页上进行授权,也正式因为此,我才放弃了人人。其实他们有一个用户名密码端的服务,不过需要填表申请,表我是填了,不过后面就没有消息了,我相信如果我申请成功了,那么就可以使用和微博相同的方式了获取授权码从而获取调用API的tokens了。还是希望有聪明才智的哪位大牛搞成功了,看到这篇文章可以教一下我。


再说Twitter

看了推特的文档才知道美帝的东西就是好,他们用授权方式要更加先进,减少了授权了步骤,使用REST API也使开发者更方便的开发SDK,所以推特的SDK明显要好很多。最受欢迎的tweepy是我的第一次尝试,失败原因至今不是很明确,但因该和我使用的代理有关系,也就是说在国内使用代理上推特和Fb的要注意下,使用tweepy可能会带来的失败。除此之外,还有一点提醒大家需要注意,就是申请的twitter的App是有访问级别的限制的,默认是read only,可以自己改成 read&write 或者 read, write & direct message 都是可以的。


后来我选择的

    
最新技术文章:
▪用户及权限基础 2---- Linux权限    ▪用户及权限基础 3---- Linux扩展权限    ▪git 简明教程(1) --创建及提交
▪背包 代码    ▪json对象的封装与解析    ▪01背包,完全背包,多重背包 ,模板代码
▪apache安装详解    ▪HDU 4668 Finding string (解析字符串 + KMP)    ▪《TCP-IP详解 卷1:协议》学习笔记(二)
▪《TCP-IP详解 卷1:协议》学习笔记(持续更新...    ▪windows下使用swig    ▪gensim试用
▪Linux Shell脚本编程--nc命令使用详解    ▪solr对跨服务器表联合查询的配置    ▪递归和非递归实现链表反转
▪Linux磁盘及文件系统管理 1---- 磁盘基本概念    ▪Cholesky Decomposition    ▪HTTP协议学习
▪用C语言写CGI入门教程    ▪用hdfs存储海量的视频数据的设计思路    ▪java多线程下载的实现示例
▪【原创】eAccelerator 一个锁bug问题跟踪    ▪hadoop学习之ZooKeeper    ▪使用cuzysdk web API 实现购物导航类网站
▪二维数组中的最长递减子序列    ▪内嵌W5100的网络模块WIZ812MJ--数据手册    ▪xss 跨站脚本攻击
▪RobotFramework+Selenium2环境搭建与入门实例    ▪什么是API    ▪用PersonalRank实现基于图的推荐算法
▪Logtype    ▪关于端口号你知道多少!    ▪Linux基本操作 1-----命令行BASH的基本操作
▪CI8.7--硬币组合问题    ▪Ruby on Rails 学习(五)    ▪如何使用W5300实现ADSL连接(二)
▪不允许启动新事务,因为有其他线程正在该会...    ▪getting start with storm 翻译 第六章 part-3    ▪递归求排列和组合(无重复和有重复)
▪工具类之二:RegexpUtils    ▪Coding Interview 8.2    ▪Coding Interview 8.5
▪素因子分解 Prime factorization    ▪C# DllImport的用法    ▪图的相关算法
▪Softmax算法:逻辑回归的扩展    ▪最小生成树---Kruskal算法---挑战程序设计竞赛...    ▪J2EE struts2 登录验证
▪任意两点间的最短路径---floyd_warshall算法    ▪Sqoop实现关系型数据库到hive的数据传输    ▪FFMPEG采集摄像头数据并切片为iPhone的HTTP Stream...
▪Ubuntu 13.04 – Install Jetty 9    ▪TCP/IP笔记之多播与广播    ▪keytool+tomcat配置HTTPS双向证书认证
▪安装phantomjs    ▪Page Redirect Speed Test    ▪windows media player 中播放pls的方法
▪sre_constants.error: unbalanced parenthesis    ▪http headers    ▪Google MapReduce中文版
▪The TCP three-way handshake (connect)/four wave (closed)    ▪网站反爬虫    ▪Log4j实现对Java日志的配置全攻略
▪Bit Map解析    ▪Notepad 快捷键 大全    ▪Eclipse 快捷键技巧 + 重构
▪win7 打开防火墙端口    ▪Linux Shell脚本入门--awk命令详解    ▪Linux Shell脚本入门--Uniq命令
▪Linux(Android NDK)如何避免僵死进程    ▪http Content-Type一览表    ▪Redis实战之征服 Redis + Jedis + Spring (二)
▪Tomcat7.0.40 基于DataSourceRealm的和JDBCRealm的资源...    ▪利用SQOOP将ORACLE到HDFS    ▪django输出 hello world
▪python re    ▪unity3D与网页的交互    ▪内存共享基本演示
▪python join    ▪不再为无限级树结构烦恼,且看此篇    ▪python实现变参
▪打开文件数限制功能不断地制造问题    ▪Arduino Due, Maple and Teensy3.0 的 W5200性能测试    ▪Selenium实例----12306网站测试
▪基于协同过滤的推荐引擎    ▪C4.5决策树    ▪C#HTTP代理的实现之注册表实现
▪nosql和关系型数据库比较?    ▪如何快速比较这两个字符串是否相等?    ▪hdoj 1863 畅通工程 最小生成树---prime算法
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3