map reduce相关程序

Test_1.java

/**  * Hadoop网络课程模板程序* 编写者:James*/  import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapreduce.*;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;/**  * 无Reducer版本*/  
public class Test_1 extends Configured implements Tool {    /**  * 计数器* 用于计数各种异常数据*/  enum Counter {LINESKIP,    //出错的行
    }/**  * MAP任务*/  public static class Map extends Mapper<LongWritable, Text, NullWritable, Text> {public void map ( LongWritable key, Text value, Context context ) throws IOException, InterruptedException {String line = value.toString();                //读取源数据try{//数据处理String [] lineSplit = line.split(" ");String month = lineSplit[0];String time = lineSplit[1];String mac = lineSplit[6];Text out = new Text(month + ' ' + time + ' ' + mac);context.write( NullWritable.get(), out);    //输出
            }catch ( java.lang.ArrayIndexOutOfBoundsException e ){context.getCounter(Counter.LINESKIP).increment(1);    //出错令计数器+1return;}}}@Overridepublic int run(String[] args) throws Exception {Configuration conf = getConf();Job job = new Job(conf, "Test_1");                                //任务名job.setJarByClass(Test_1.class);                                //指定Class
        FileInputFormat.addInputPath( job, new Path(args[0]) );            //输入路径FileOutputFormat.setOutputPath( job, new Path(args[1]) );        //输出路径
        job.setMapperClass( Map.class );                                //调用上面Map类作为Map任务代码job.setOutputFormatClass( TextOutputFormat.class );job.setOutputKeyClass( NullWritable.class );                    //指定输出的KEY的格式job.setOutputValueClass( Text.class );                            //指定输出的VALUE的格式
        job.waitForCompletion(true);//输出任务完成情况System.out.println( "任务名称:" + job.getJobName() );System.out.println( "任务成功:" + ( job.isSuccessful()?"是":"否" ) );System.out.println( "输入行数:" + job.getCounters().findCounter("org.apache.hadoop.mapred.Task$Counter", "MAP_INPUT_RECORDS").getValue() );System.out.println( "输出行数:" + job.getCounters().findCounter("org.apache.hadoop.mapred.Task$Counter", "MAP_OUTPUT_RECORDS").getValue() );System.out.println( "跳过的行:" + job.getCounters().findCounter(Counter.LINESKIP).getValue() );return job.isSuccessful() ? 0 : 1;}/**  * 设置系统说明* 设置MapReduce任务*/  public static void main(String[] args) throws Exception {//判断参数个数是否正确//如果无参数运行则显示以作程序说明if ( args.length != 2 ){System.err.println("");System.err.println("Usage: Test_1 < input path > < output path > ");System.err.println("Example: hadoop jar ~/Test_1.jar hdfs://localhost:9000/home/james/Test_1 hdfs://localhost:9000/home/james/output");System.err.println("Counter:");System.err.println("\t"+"LINESKIP"+"\t"+"Lines which are too short");System.exit(-1);}//记录开始时间DateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );Date start = new Date();//运行任务int res = ToolRunner.run(new Configuration(), new Test_1(), args);//输出任务耗时Date end = new Date();float time =  (float) (( end.getTime() - start.getTime() ) / 60000.0) ;System.out.println( "任务开始:" + formatter.format(start) );System.out.println( "任务结束:" + formatter.format(end) );System.out.println( "任务耗时:" + String.valueOf( time ) + " 分钟" ); System.exit(res);}
}

Test_1数据

Apr 23 11:49:54 hostapd: wlan0: STA 14:7d:c5:9e:fb:84 
Apr 23 11:49:52 hostapd: wlan0: STA 74:e5:0b:04:28:f2
Apr 23 11:49:50 hostapd: wlan0: STA cc:af:78:cc:d5:5d 
Apr 23 11:49:44 hostapd: wlan0: STA cc:af:78:cc:d5:5d 
Apr 23 11:49:43 hostapd: wlan0: STA 74:e5:0b:04:28:f2
Apr 23 11:49:42 hostapd: wlan0: STA 14:7d:c5:9e:fb:84 

Test_2.java

/**  * Hadoop网络课程模板程序* 编写者:James*/  import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapreduce.*;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;/**  * 有Reducer版本*/  
public class Test_2 extends Configured implements Tool {    /**  * 计数器* 用于计数各种异常数据*/  enum Counter {LINESKIP,    //出错的行
    }/**  * MAP任务*/  public static class Map extends Mapper<LongWritable, Text, Text, Text> {public void map ( LongWritable key, Text value, Context context ) throws IOException, InterruptedException {String line = value.toString();                //读取源数据try{//数据处理String [] lineSplit = line.split(" ");String anum = lineSplit[0];String bnum = lineSplit[1];context.write( new Text(bnum), new Text(anum) );    //输出
            }catch ( java.lang.ArrayIndexOutOfBoundsException e ){context.getCounter(Counter.LINESKIP).increment(1);    //出错令计数器+1return;}}}/**  * REDUCE任务*/ public static class Reduce extends Reducer<Text, Text, Text, Text> {public void reduce ( Text key, Iterable<Text> values, Context context ) throws IOException, InterruptedException{String valueString;String out = "";for ( Text value : values ){valueString = value.toString();out += valueString + "|";}context.write( key, new Text(out) );}}@Overridepublic int run(String[] args) throws Exception {Configuration conf = getConf();Job job = new Job(conf, "Test_2");                                //任务名job.setJarByClass(Test_2.class);                                //指定Class
        FileInputFormat.addInputPath( job, new Path(args[0]) );            //输入路径FileOutputFormat.setOutputPath( job, new Path(args[1]) );        //输出路径
        job.setMapperClass( Map.class );                                //调用上面Map类作为Map任务代码job.setReducerClass ( Reduce.class );                            //调用上面Reduce类作为Reduce任务代码job.setOutputFormatClass( TextOutputFormat.class );job.setOutputKeyClass( Text.class );                            //指定输出的KEY的格式job.setOutputValueClass( Text.class );                            //指定输出的VALUE的格式
        job.waitForCompletion(true);//输出任务完成情况System.out.println( "任务名称:" + job.getJobName() );System.out.println( "任务成功:" + ( job.isSuccessful()?"是":"否" ) );System.out.println( "输入行数:" + job.getCounters().findCounter("org.apache.hadoop.mapred.Task$Counter", "MAP_INPUT_RECORDS").getValue() );System.out.println( "输出行数:" + job.getCounters().findCounter("org.apache.hadoop.mapred.Task$Counter", "MAP_OUTPUT_RECORDS").getValue() );System.out.println( "跳过的行:" + job.getCounters().findCounter(Counter.LINESKIP).getValue() );return job.isSuccessful() ? 0 : 1;}/**  * 设置系统说明* 设置MapReduce任务*/  public static void main(String[] args) throws Exception {//判断参数个数是否正确//如果无参数运行则显示以作程序说明if ( args.length != 2 ){System.err.println("");System.err.println("Usage: Test_2 < input path > < output path > ");System.err.println("Example: hadoop jar ~/Test_2.jar hdfs://localhost:9000/home/james/Test_2 hdfs://localhost:9000/home/james/output");System.err.println("Counter:");System.err.println("\t"+"LINESKIP"+"\t"+"Lines which are too short");System.exit(-1);}//记录开始时间DateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );Date start = new Date();//运行任务int res = ToolRunner.run(new Configuration(), new Test_2(), args);//输出任务耗时Date end = new Date();float time =  (float) (( end.getTime() - start.getTime() ) / 60000.0) ;System.out.println( "任务开始:" + formatter.format(start) );System.out.println( "任务结束:" + formatter.format(end) );System.out.println( "任务耗时:" + String.valueOf( time ) + " 分钟" ); System.exit(res);}
}

Test_2数据

13599999999 10086
13899999999    120
13944444444 13800138000
13722222222 13800138000
18800000000 120
13722222222 10086
18944444444 10086

Exercise_1.java

/**  * Hadoop网络课程作业程序* 编写者:James*/  import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapreduce.*;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;public class Exercise_1 extends Configured implements Tool {    /**  * 计数器* 用于计数各种异常数据*/  enum Counter {LINESKIP,    //出错的行
    }/**  * MAP任务*/  public static class Map extends Mapper<LongWritable, Text, NullWritable, Text> {public void map ( LongWritable key, Text value, Context context ) throws IOException, InterruptedException {String line = value.toString();                //读取源数据try{//数据处理String [] lineSplit = line.split(" ");String month = lineSplit[0];String time = lineSplit[1];String mac = lineSplit[6];/**  需要注意的部分       **/ String name = context.getConfiguration().get("name");Text out = new Text(name + ' ' + month + ' ' + time + ' ' + mac);/**  需要注意的部分       **/ context.write( NullWritable.get(), out);    //输出
            }catch ( java.lang.ArrayIndexOutOfBoundsException e ){context.getCounter(Counter.LINESKIP).increment(1);    //出错令计数器+1return;}}}@Overridepublic int run(String[] args) throws Exception {Configuration conf = getConf();/**  需要注意的部分       **/ conf.set("name", args[2]);/**  需要注意的部分       **/ Job job = new Job(conf, "Exercise_1");                            //任务名job.setJarByClass(Exercise_1.class);                            //指定Class
        FileInputFormat.addInputPath( job, new Path(args[0]) );            //输入路径FileOutputFormat.setOutputPath( job, new Path(args[1]) );        //输出路径
        job.setMapperClass( Map.class );                                //调用上面Map类作为Map任务代码job.setOutputFormatClass( TextOutputFormat.class );job.setOutputKeyClass( NullWritable.class );                    //指定输出的KEY的格式job.setOutputValueClass( Text.class );                            //指定输出的VALUE的格式
        job.waitForCompletion(true);//输出任务完成情况System.out.println( "任务名称:" + job.getJobName() );System.out.println( "任务成功:" + ( job.isSuccessful()?"是":"否" ) );System.out.println( "输入行数:" + job.getCounters().findCounter("org.apache.hadoop.mapred.Task$Counter", "MAP_INPUT_RECORDS").getValue() );System.out.println( "输出行数:" + job.getCounters().findCounter("org.apache.hadoop.mapred.Task$Counter", "MAP_OUTPUT_RECORDS").getValue() );System.out.println( "跳过的行:" + job.getCounters().findCounter(Counter.LINESKIP).getValue() );return job.isSuccessful() ? 0 : 1;}/**  * 设置系统说明* 设置MapReduce任务*/  public static void main(String[] args) throws Exception {//判断参数个数是否正确//如果无参数运行则显示以作程序说明if ( args.length != 3 ){System.err.println("");System.err.println("Usage: Test_1 < input path > < output path > < name >");System.err.println("Example: hadoop jar ~/Test_1.jar hdfs://localhost:9000/home/james/Test_1 
hdfs://localhost:9000/home/james/output hadoop");System.err.println("Counter:");System.err.println("\t"+"LINESKIP"+"\t"+"Lines which are too short");System.exit(-1);}//记录开始时间DateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );Date start = new Date();//运行任务int res = ToolRunner.run(new Configuration(), new Exercise_1(), args);//输出任务耗时Date end = new Date();float time = (float) (( end.getTime() - start.getTime() ) / 60000.0) ;System.out.println( "任务开始:" + formatter.format(start) );System.out.println( "任务结束:" + formatter.format(end) );System.out.println( "任务耗时:" + String.valueOf( time ) + " 分钟" ); System.exit(res);} }

result_1

hadoop Apr 23 14:7d:c5:9e:fb:84
hadoop Apr 23 74:e5:0b:04:28:f2
hadoop Apr 23 cc:af:78:cc:d5:5d
hadoop Apr 23 cc:af:78:cc:d5:5d
hadoop Apr 23 74:e5:0b:04:28:f2
hadoop Apr 23 14:7d:c5:9e:fb:84

Exercise_2.java

/**  * Hadoop网络课程作业程序* 编写者:James*/  import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapreduce.*;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;public class Exercise_2 extends Configured implements Tool {    /**  * 计数器* 用于计数各种异常数据*/  enum Counter {LINESKIP,    //出错的行
    }/**  * MAP任务*/  public static class Map extends Mapper<LongWritable, Text, NullWritable, Text> {/**  需要注意的部分       **/private String name;public void setup ( Context context ){this.name = context.getConfiguration().get("name");                    //读取名字
        }/**  需要注意的部分       **/public void map ( LongWritable key, Text value, Context context ) throws IOException, InterruptedException {String line = value.toString();                //读取源数据try{//数据处理String [] lineSplit = line.split(" ");String month = lineSplit[0];String time = lineSplit[1];String mac = lineSplit[6];/**  需要注意的部分       **/ Text out = new Text(this.name + ' ' + month + ' ' + time + ' ' + mac);/**  需要注意的部分       **/ context.write( NullWritable.get(), out);    //输出
            }catch ( java.lang.ArrayIndexOutOfBoundsException e ){context.getCounter(Counter.LINESKIP).increment(1);    //出错令计数器+1return;}}}@Overridepublic int run(String[] args) throws Exception {Configuration conf = getConf();/**  需要注意的部分       **/ conf.set("name", args[2]);/**  需要注意的部分       **/ Job job = new Job(conf, "Exercise_2");                            //任务名job.setJarByClass(Exercise_2.class);                            //指定Class
        FileInputFormat.addInputPath( job, new Path(args[0]) );            //输入路径FileOutputFormat.setOutputPath( job, new Path(args[1]) );        //输出路径
        job.setMapperClass( Map.class );                                //调用上面Map类作为Map任务代码job.setOutputFormatClass( TextOutputFormat.class );job.setOutputKeyClass( NullWritable.class );                    //指定输出的KEY的格式job.setOutputValueClass( Text.class );                            //指定输出的VALUE的格式
        job.waitForCompletion(true);//输出任务完成情况System.out.println( "任务名称:" + job.getJobName() );System.out.println( "任务成功:" + ( job.isSuccessful()?"是":"否" ) );System.out.println( "输入行数:" + job.getCounters().findCounter("org.apache.hadoop.mapred.Task$Counter", "MAP_INPUT_RECORDS").getValue() );System.out.println( "输出行数:" + job.getCounters().findCounter("org.apache.hadoop.mapred.Task$Counter", "MAP_OUTPUT_RECORDS").getValue() );System.out.println( "跳过的行:" + job.getCounters().findCounter(Counter.LINESKIP).getValue() );return job.isSuccessful() ? 0 : 1;}/**  * 设置系统说明* 设置MapReduce任务*/  public static void main(String[] args) throws Exception {//判断参数个数是否正确//如果无参数运行则显示以作程序说明if ( args.length != 3 ){System.err.println("");System.err.println("Usage: Test_1 < input path > < output path > < name >");System.err.println("Example: hadoop jar ~/Test_1.jar hdfs://localhost:9000/home/james/Test_1 
hdfs://localhost:9000/home/james/output hadoop");System.err.println("Counter:");System.err.println("\t"+"LINESKIP"+"\t"+"Lines which are too short");System.exit(-1);}//记录开始时间DateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );Date start = new Date();//运行任务int res = ToolRunner.run(new Configuration(), new Exercise_2(), args);//输出任务耗时Date end = new Date();float time = (float) (( end.getTime() - start.getTime() ) / 60000.0) ;System.out.println( "任务开始:" + formatter.format(start) );System.out.println( "任务结束:" + formatter.format(end) );System.out.println( "任务耗时:" + String.valueOf( time ) + " 分钟" ); System.exit(res);} }

改写test_2

/**  * Hadoop网络课程模板程序* 编写者:James*/  import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapreduce.*;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;/**  * 有Reducer版本*/  
public class Test_2 extends Configured implements Tool {    /**  * 计数器* 用于计数各种异常数据*/  enum Counter {LINESKIP,    //出错的行
    }/**  * MAP任务*/  public static class Map extends Mapper<LongWritable, Text, Text, Text> {public void map ( LongWritable key, Text value, Context context ) throws IOException, InterruptedException {String line = value.toString();                //读取源数据try{//数据处理String [] lineSplit = line.split(" ");String anum = lineSplit[0];String bnum = lineSplit[1];context.write( new Text(bnum), new Text(anum) );    //输出
            }catch ( java.lang.ArrayIndexOutOfBoundsException e ){context.getCounter(Counter.LINESKIP).increment(1);    //出错令计数器+1return;}}}/**  * REDUCE任务*/ public static class Reduce extends Reducer<Text, Text, Text, Text> {public void reduce ( Text key, Iterable<Text> values, Context context ) throws IOException, InterruptedException{String valueString;String out = "";String name = context.getConfiguration().get("name");for ( Text value : values ){valueString = value.toString();out += valueString + "|";}context.write( key, new Text(out) + "|" + name );}}@Overridepublic int run(String[] args) throws Exception {Configuration conf = getConf();conf.set("name", args[2]);Job job = new Job(conf, "Test_2");                                //任务名job.setJarByClass(Test_2.class);                                //指定Class
        FileInputFormat.addInputPath( job, new Path(args[0]) );            //输入路径FileOutputFormat.setOutputPath( job, new Path(args[1]) );        //输出路径
        job.setMapperClass( Map.class );                                //调用上面Map类作为Map任务代码job.setReducerClass ( Reduce.class );                            //调用上面Reduce类作为Reduce任务代码job.setOutputFormatClass( TextOutputFormat.class );job.setOutputKeyClass( Text.class );                            //指定输出的KEY的格式job.setOutputValueClass( Text.class );                            //指定输出的VALUE的格式
        job.waitForCompletion(true);//输出任务完成情况System.out.println( "任务名称:" + job.getJobName() );System.out.println( "任务成功:" + ( job.isSuccessful()?"是":"否" ) );System.out.println( "输入行数:" + job.getCounters().findCounter("org.apache.hadoop.mapred.Task$Counter", "MAP_INPUT_RECORDS").getValue() );System.out.println( "输出行数:" + job.getCounters().findCounter("org.apache.hadoop.mapred.Task$Counter", "MAP_OUTPUT_RECORDS").getValue() );System.out.println( "跳过的行:" + job.getCounters().findCounter(Counter.LINESKIP).getValue() );return job.isSuccessful() ? 0 : 1;}/**  * 设置系统说明* 设置MapReduce任务*/  public static void main(String[] args) throws Exception {//判断参数个数是否正确//如果无参数运行则显示以作程序说明if ( args.length != 3 ){System.err.println("");System.err.println("Usage: Test_2 < input path > < output path > ");System.err.println("Example: hadoop jar ~/Test_2.jar hdfs://localhost:9000/home/james/Test_2 hdfs://localhost:9000/home/james/output hadoop");System.err.println("Counter:");System.err.println("\t"+"LINESKIP"+"\t"+"Lines which are too short");System.exit(-1);}//记录开始时间DateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );Date start = new Date();//运行任务int res = ToolRunner.run(new Configuration(), new Test_2(), args);//输出任务耗时Date end = new Date();float time =  (float) (( end.getTime() - start.getTime() ) / 60000.0) ;System.out.println( "任务开始:" + formatter.format(start) );System.out.println( "任务结束:" + formatter.format(end) );System.out.println( "任务耗时:" + String.valueOf( time ) + " 分钟" ); System.exit(res);}
}

 

result_2

10086    13599999999|13722222222|18944444444|hadoop
120    18800000000|hadoop
13800138000    13944444444|13722222222|hadoop

转载于:https://www.cnblogs.com/zl0372/p/map_reduce.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292494.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用仿ActionScript的语法来编写html5——终篇,LegendForHtml5Programming1.0开源库件

一,LegendForHtml5Programming1.0库件是什么?它是一个javascript库&#xff0c;它模仿了ActionScript的语法&#xff0c;用于html5的开发&#xff0c;目前实现的功能相对较少&#xff0c;还不能称之为引擎&#xff0c;希望将来可以作为html5的开源引擎&#xff0c;为html5开发…

JavaJVM之ClassLoader源码分析

层次结构和类图 ClassLoader层次结构&#xff1a;UML类图&#xff1a;sun.misc.Launcher.ExtClassLoader sun.misc.Launcher.AppClassLoader 显式加载类 在代码中显式加载某个类&#xff0c;有三种方法&#xff1a;this.getClass().getClassLoader().loadClass()Class.forName(…

python打包库_Python 打包自己的库到 PYPI (可pip安装)

背景在我们安装 Python 库的时候&#xff0c;通常我们都是pip install xxx真是又酷炫又方便那么&#xff0c;当我们自己写了一些自认为不错的库&#xff0c;想要分享给大家使用(或者是想要装X时)能不能也能做到这样呢&#xff1f;环境需求已经写好能正常使用的库/方法/项目 (可…

ASP.NET Core Web API使用静态swagger.json文件

前言ASP.NET Core Web API默认集成了Swashbuckle&#xff0c;可以在运行时显示Swagger UI&#xff1a;而Swagger UI实际上是解析的动态生成的swagger.json&#xff1a;app.UseSwagger(); app.UseSwaggerUI(c > c.SwaggerEndpoint("/swagger/v1/swagger.json", &qu…

XenApp共享桌面打开文件警告与桌面文件由于Internet文件安全设置无法打开解决办法...

问题现象 1. 在使用了UPM与文件夹重定向后&#xff0c;个人的桌面路径就会变成一个UNC路径&#xff0c;这个时候如果用户登录共享桌面的话可以看到桌面与快速启动栏的文件与快捷方式&#xff0c;但是打开的时候就会遇到以下错误 这种情况是由于我们放的文件是一个网络路径所导致…

Zookeeper-Zookeeper的配置

前面两篇文章介绍了Zookeeper是什么和可以干什么&#xff0c;那么接下来我们就实际的接触一下Zookeeper这个东西&#xff0c;看看具体如何使用&#xff0c;有个大体的感受&#xff0c;后面再描述某些地方的时候也能在大脑中有具体的印象。本文只关注分布式模式的zookeeper&…

Android插件化开发之动态加载基础之ClassLoader工作机制

类加载器ClassLoader 早期使用过Eclipse等Java编写的软件的同学可能比较熟悉&#xff0c;Eclipse可以加载许多第三方的插件&#xff08;或者叫扩展&#xff09;&#xff0c;这就是动态加载。这些插件大多是一些Jar包&#xff0c;而使用插件其实就是动态加载Jar包里的Class进行…

python运行时间过长怎么优化_Python性能优化的20条建议

1.优化算法时间复杂度算法的时间复杂度对程序的执行效率影响最大&#xff0c;在Python中可以通过选择合适的数据结构来优化时间复杂度&#xff0c;如list和set查找某一个元素的时间复杂度分别是O(n)和O(1)。不同的场景有不同的优化方式&#xff0c;总得来说&#xff0c;一般有分…

周选特辑|一些超棒的开源项目!

编程导航 每周新增资源优选特辑 02编程导航 致力于推荐优质编程资源 &#x1f48e;项目开源仓库&#xff1a;https://github.com/liyupi/code-nav跪求一个 star ⭐️哈喽大家好&#xff01;我是编程导航的小编火宝。美好的一周又过去了&#xff0c;大家有没有认真学习呢&#x…

js字符串函数大全

JS自带函数concat将两个或多个字符的文本组合起来&#xff0c;返回一个新的字符串。var a "hello";var b ",world";var c a.concat(b);alert(c);//c "hello,world"indexOf返回字符串中一个子串第一处出现的索引&#xff08;从左到右搜索&…

Android插件化开发之DexClassLoader动态加载dex、jar小Demo

一、温故动态加载ClassLoader机制 如果对Android的ClassLoader加载机制不熟悉&#xff0c;猛戳Android插件化开发动态加载基础之ClassLoader工作机制 http://blog.csdn.net/u011068702/article/details/53248960 二、介绍 我们知道在Android中可以跟java一样实现动态加载jar&…

js监听多个事件_JavaScript中的事件与异常捕获解析

这篇文章主要给大家介绍了关于JavaScript中事件与异常捕获的相关资料&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;写的十分的全面细致&#xff0c;具有一定的参考价值&#xff0c;对此有需要的朋友可以参考学习下。如有不足之处&#xff0c;欢迎批评指正。事件处理…

GDUFE ACM-1045

题目&#xff1a;http://acm.gdufe.edu.cn/Problem/read/id/1045 Elevator Time Limit: 2000/1000ms (Java/Others) Problem Description: The highest building in our city has only one elevator. A request list is made up with N positive numbers. The numbers denote a…

mongodb的IO测试工具 mongoperf

之前没发现mongoperf这个工具&#xff0c;测试IO的状态用的是iostat来进行观察。 mongoperf < myjsonconfigfile echo "{nThreads:2,fileSizeMB:20,w:true,r:true}" | mongoperf参数示列如下&#xff1a; {nThreads:<n>, fileSizeMB:<n>, sleepMicros…

C#多线程开发-使用并发集合

前言大家好&#xff0c;我是阿辉。在C#语言中当需要处理并发的场景时&#xff0c;就需要程序员使用最合理的数据结构。那么哪些数据结构是支持和可以在并行计算中被使用的呢。首先这些数据结构具备可伸缩性&#xff0c;尽可能地避免锁(会造成多个线程的等待&#xff0c;防止资源…

Android之用sharedUserId来实现不同应用(APK)数据共享

android:sharedUserId 当APK安装的时候&#xff0c;userid这个标志就会产生。APK在设备上的整个生命周期中&#xff0c;这个ID不再改变。不同设备上同一个应用包可能有不同的userid&#xff0c;重要的是在给定的设备上&#xff0c;每个应用包有自己独立的userid。 userid的特点…

windows 下安装wamp环境

一直以来都是学习在Linux下安装lanmp环境&#xff0c;在Windows下都是用的集成工具比如appserv现在来安装Windows版本的lamp都是从官网下载的资源在Windows下以后还会编辑更多的东西。我的文章都会以后都有更新&#xff0c;因为有时候有点想法&#xff0c;如果不实践的话会忘记…