案例背景电脑通常是支持USB设备的功能,通过USB可以连接鼠标、键盘等,还能进行鼠标的点击,键盘的输入等鼠标的特有操作案例分析进行操作的主类,电脑类,实现电脑使用USB鼠标,USB键盘USB接口类:包含打开设备和关闭设备功能电脑类:包含开机、关机和使用USB设备的功能鼠标:实现USB接口,并有点击的功能键盘:实现USB接口,必有输入的方法案例实现定义USB接口类:publicinterfaceUSB{//开启设备publicabstractvoidopen();//关闭接口publicabstractvoidclose();}定义电脑类:publicclassComputer{//开启电脑方法publicvoidon(){System.out.println("开启电脑");}//关闭电脑方法publicvoidoff(){System.out.println("关闭电脑");}//使用设备publicvoiduseDevice(USBuse){use.open();//USB设备的开启//USB设备特有方法的使用if(useinstanceofMouse){//判断Mouse的父类是不是USBMouseuseMouse=(Mouse)use;//向下转型useMouse.click();}elseif(useinstanceofKeyboard){((Keyboard)use).input();//向下转型}use.close();//USB设备的关闭};}鼠标类:publicclassMouseimplementsUSB{@Overridepublicvoidopen(){System.out.println("打开鼠标");}@Overridepublicvoidclose(){System.out.println("关闭鼠标");}//鼠标的特有操作publicvoidclick(){System.out.println("鼠标点击了");}}键盘类:publicclassKeyboardimplementsUSB{//打开键盘@Overridepublicvoidopen(){System.out.println("键盘打开");}@Overridepublicvoidclose(){System.out.println("键盘关闭");}//键盘的特有操作publicvoidinput(){System.out.println("正在输入中......");}}操作的主类:publicclassMainDemo{publicstaticvoidmain(String[]args){//实例化电脑类Computercomputer=newComputer();computer.on();//电脑开机//USB鼠标的操作USBmouse=newMouse();//多态的写法computer.useDevice(mouse);//USB键盘的操作Keyboardkeyboard=newKeyboard();//不是多态写法USBusbKeyboard=keyboard;//向上转型为USB类computer.useDevice(usbKeyboard);computer.off();//电脑关机}}
统计字符串中有多少大写字母、小写字母、数字、其他字符提示:char字节可以自动转化为Ascall码进行比较。首先键盘输入Scanners=newScanner(System.in);System.out.print("请输入任意的字符串:");Stringstrs=s.next();把输入的字符串转换成char[]数组char[]charArray=strs.toCharArray();定义计数的变量intcountUpper=0;//大写字母intcountLower=0;//小写字母intcountNum=0;//数字intcountOther=0;//其他循环判断for(charstr:charArray){if('A'<=str&&str<='Z'){countUpper++;continue;};if('a'<=str&&str<='z'){countLower++;continue;};if('0'<=str&&str<='9'){countNum++;continue;};countOther++;}运行结果
特别提示执行前需要启动hadoopIDEA创建Hadoop-Maven项目下载hadoop.dll放入windows的C:\Windows\System32下相关环境windows10hadoop2.9.2伪分布式搭建idea2018.3.50x00JAVA连接HDFS配置连接publicstaticfinalStringHDFS_PATH="hdfs://192.168.5.137:9000";//HDFS路径FileSystemfileSystem=null;//操作文件系统注意选中apache的类Configurationconfiguration=null;//HDFS配置连接创建连接方法@Before//所有执行完之前执行publicvoidsetUp()throwsException{configuration=newConfiguration();//实例化类fileSystem=FileSystem.get(newURI(HDFS_PATH),configuration,"root");//参数:路径配置类用户}0x01执行结束时释放资源@After//所有执行完之后再执行publicvoidtearDown()throwsException{//结束释放资源configuration=null;fileSystem=null;}0x02创建文件夹@Test//单元测试publicvoidmkidr()throwsException{fileSystem.mkdirs(newPath("/HDFSAPI/test"));}0x03删除文件操作@Testpublicvoiddelete()throwsException{//参数:路径递归删除booleanmsg=fileSystem.delete(newPath("/HDFSAPI/test/a.txt"),true);}0x04创建文件并写入内容@Test//单元测试publicvoidcreate()throwsException{//返回值是一个文件流FSDataOutputStreamoutput=fileSystem.create(newPath("/HDFSAPI/test/e.txt"));//通过流写入一个Bytes[]数组output.write("hellohadoop".getBytes());output.flush();//把文件流关闭output.close();}0x05查看文件内容@Test//单元测试publicvoidcat()throwsException{FSDataInputStreamfile=fileSystem.open(newPath("/HDFSAPI/test/e.txt"));//把内容输出到控制台使用hadoop里的类IOUtils.copyBytes(file,System.out,1024);//文件内容对象输出到控制台缓冲区大小//关闭file.close();}0x06文件的重命名@Test//单元测试publicvoidrename()throwsException{//旧文件的路径PatholdPath=newPath("/HDFSAPI/test/a.txt");//新文件的路径booleanmsg=fileSystem.rename(oldPath,newPath);}0x07本地上传文件到HDFS@TestpublicvoidcopyFromLocalFile()throwsException{//本地路径--->我是在windows上测试的所以是如下地址PathLocalPath=newPath("D://data.txt");//上传到HDFS上的路径PathHDFSPath=newPath("/HDFSAPI/test/");fileSystem.copyFromLocalFile(LocalPath,HDFSPath);}0x08大文件上传带进度条提示@TestpublicvoidcopyFromLocalFileWithProgress()throwsException{//获取需要上传的文件InputStreamfile=newBufferedInputStream(//为了提升效率使用BuffernewFileInputStream(//需要把File转换为StreamnewFile("F://BigData/hadoop/hadoop-2.9.2.tar.gz")));//创建上传的文件路径FSDataOutputStreamoutput=fileSystem.create(newPath("/HDFSAPI/test/newhadoop-2.9.2.tar.gz"),//第一个参数可以进行重命名newProgressable(){//第二个参数打印的进度条@Overridepublicvoidprogress(){System.out.print("*");//提示的进度条图案}});//上传IOUtils.copyBytes(file,output,4096);}0x09下载文件@TestpublicvoidcopyToLocalFrom()throwsException{PathhdfsPath=newPath("/HDFSAPI/test/a.txt");//本地路径PathlocalPath=newPath("F://a.txt");fileSystem.copyToLocalFile(hdfsPath,localPath);}0x10查看目录下的所有文件@TestpublicvoidlistFile()throwsException{//需要查看的hdfs目录PathhdfsPath=newPath("/HDFSAPI/test");FileStatus[]fileStatuses=fileSystem.listStatus(hdfsPath);for(FileStatusfile:fileStatuses){//输出路径StringfilePath=file.getPath().toString();//查看是否是目录StringisDir=file.isDirectory()?"文件夹":"文件";//输出文件大小longfileSize=file.getLen();//输出文件的副本数量shortfileReplication=file.getReplication();//输出打印System.out.println(filePath+"\t"+isDir+"\t"+fileSize+"\t"+fileReplication+"\t");}}常见问题org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray(II[BI[BIILjava/lang/String;JZ)V解决方法下载hadoop.dll放入windows的C:\Windows\System32下错误描述Namenodeisinsafemode.Namenode处于安全模式解决方法:关闭安全模式关闭安全模式hadoopdfsadmin-safemodeleave进入安全模式hadoopdfsadmin-safemodeenter通过JavaAPI上传,与Hadoopshell上传的文件,副本系数不一样解释:JavaAPI上传,我们并没有指定副本系数,所以上传的副本数是hadoop默认的3Hadoopshell上传,我在hdfs-site.xml里设置过副本数,所以不会使用默认值
0x00Python需要导入的模块fromCrypto.CipherimportAESfromCrypto.Util.Paddingimportpadfrombinasciiimportb2a_hex,a2b_hex0x01AES加密代码defAES_encrypt(secret_key,data):""":paramsecret_key[str]:加密秘钥:paramdata[str]:需要加密数据:return[str]:"""BLOCK_SIZE=16#Bytes#数据进行PKCS5Padding的填充raw=pad(str(data),BLOCK_SIZE)#通过key值,使用ECB模式进行加密cipher=AES.new(secret_key.encode(),AES.MODE_ECB)#得到加密后的字节码encrypted_text=cipher.encrypt(bytes(raw,encoding='utf-8'))#字节码转换成十六进制再转成字符串encrypted_text_hex=str(b2a_hex(encrypted_text),encoding='utf-8')returnencrypted_text_hex0x02AES解密代码defAES_decrypt(secret_key,encrypted_text_hex):""":paramsecret_key[str]:加密秘钥:paramencrypted_text_hex[str]:#加密后的data字符串:return[str]:"""#去掉PKCS5Padding的填充unpad=lambdas:s[:-ord(s[len(s)-1:])]#通过key值进行cipher=AES.new(secret_key.encode(),AES.MODE_ECB)data_response=unpad(cipher.decrypt(a2b_hex(encrypted_text_hex))).decode('utf8')returndata_response0x03测试代码secret_key="z1s4d5e4rt5g4h5y"#秘钥(需要16位)dataEncrypt=AES_encrypt(secret_key,"123456789")#加密print(dataEncrypt)#打印加密后的数据data=AES_decrypt(secret_key,dataEncrypt)#解密print(data)#打印解密后的数据0x04测试结果#测试结果8f0eddc4bd5f22006087afcfa6e18e6e123456789
说明如果你想要查询一些权威的资料,上Google搜索有用的内容,超流畅1080p高清观看Youtube,畅游全网,,搭建属于你自己的ss(Shadowrocks)服务器,并且开启BBR加速上网,10分钟几个步骤轻松搞定。安卓连接工具:shadowsocks—universal-4.6.5.apkwindows连接工具:shadowsocksr-backup-release搭建ss运行下面几个命令即可快速搭建安装wgetyuminstallwget接着执行安装shadowsockswget–no-check-certificate-Oshadowsocks.shhttps://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh获取shadowsocks.sh读取权限chmod+xshadowsocks.sh设置你的ss密码和端口号输入./shadowsocks.sh2>&1|teeshadowsocks.log后就可以设置密码、端口号、加密方式接着按任意键进行安装安装ss完成等一会之后,就安装完成了,它会给你显示你需要连接vpn的信息:使用BBR加速上网安装BBRwget--no-check-certificatehttps://github.com/teddysun/across/raw/master/bbr.sh获取读写权限chmod+xbbr.sh启动BBR安装./bbr.sh接着按任意键,开始安装,坐等一会。安装完成一会之后它会提示我们是否重新启动vps,我们输入y确定重启服务器。新启动之后,输入lsmod|grepbbr如果看到tcp_bbr就说明BBR已经启动了
相关配置hadoop-2.9.2伪分布式搭建0x00说明首先需要配置hadoop的伪分布式0x01修改mapred-site.xml修改MapReduce配置文件mapred-site.xml路径hadoop-2.9.2/etc/hadoop/mapred-site.xml将模板文件mapred-site.xml.template拷贝一份,并重命名为mapred-site.xml,命令cpmapred-site.xml.templatemapred-site.xml<configuration><!--指定MapReduce运行在yarn--><property><name>mapreduce.framework.name</name><value>yarn</value></property></configuration>0x02修改yarn-site.xml配置资源协调工具yarn的修改路径hadoop-2.9.2/etc/hadoop/yarn-site.xml<configuration><!--SitespecificYARNconfigurationproperties--><!--指定yarn的老大resoucemanager的地址--><property><name>yarn.resourcemanager.hostname</name><name>hadoop</name></property><!--NodeManager获取数据的方式--><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property></configuration>0x03启动资源管理器启动命令start-yarn.sh0x04验证启动结果出现以下节点代表,启动成功网页端查看IP:8088/
name文件夹不存在错误描述:Directory/usr/local/src/hadoop/tmp/dfs/nameisinaninconsistentstate:storagedirectorydoesnotexistorisnotaccessible.处理方法:创建name文件重新格式化再次启动namenode无法启动错误描述:当把hadoop停止之后,再次启动没有namenode节点处理方法:清空临时目录tmp里面的data下的东西,再次启动namenode处于安全模式错误描述Namenodeisinsafemode.Namenode处于安全模式处理方式:关闭安全模式hadoopdfsadmin-safemodeleave进入安全模式hadoopdfsadmin-safemodeenterHive无法跑MR任务错误描述Taskwiththemostfailures(4):-----TaskID:task_1594519690907_0001_m_000000URL:http://0.0.0.0:8088/taskdetails.jsp?jobid=job_1594519690907_0001&tipid=task_1594519690907_0001_m_000000-----DiagnosticMessagesforthisTask:Containerlaunchfailedforcontainer_1594519690907_0002_01_000005:org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException:TheauxService:mapreduce_shuffledoesnotexistatsun.reflect.NativeConstructorAccessorImpl.newInstance0(NativeMethod)atsun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)atsun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)atjava.lang.reflect.Constructor.newInstance(Constructor.java:423)atorg.apache.hadoop.yarn.api.records.impl.pb.SerializedExceptionPBImpl.instantiateExceptionImpl(SerializedExceptionPBImpl.java:171)atorg.apache.hadoop.yarn.api.records.impl.pb.SerializedExceptionPBImpl.instantiateException(SerializedExceptionPBImpl.java:182)atorg.apache.hadoop.yarn.api.records.impl.pb.SerializedExceptionPBImpl.deSerialize(SerializedExceptionPBImpl.java:106)atorg.apache.hadoop.mapreduce.v2.app.launcher.ContainerLauncherImpl$Container.launch(ContainerLauncherImpl.java:162)atorg.apache.hadoop.mapreduce.v2.app.launcher.ContainerLauncherImpl$EventProcessor.run(ContainerLauncherImpl.java:393)atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)atjava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)atjava.lang.Thread.run(Thread.java:748)FAILED:ExecutionError,returncode2fromorg.apache.hadoop.hive.ql.exec.mr.MapRedTaskMapReduceJobsLaunched:Stage-Stage-1:Map:1Reduce:1HDFSRead:0HDFSWrite:0FAILTotalMapReduceCPUTimeSpent:0msec处理方式:#确认yarn-site.xml的配置是否正确<!--NodeManager获取数据的方式--><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>#然后重启Hadoop
0x00相关软件及版本maven:3.6.2IDEA:2018.3.5hadoop:2.9.2maven依赖搜索地址windows_10_64位0x01IDEA配置打开设置File-->setting0x02创建Maven项目IDEA新建一个工程配置项目的名称版本把本地安装的maven添加进去(本文版本说明有maven安装步骤)然后直接再下一步,finish完成上面后,右下角弹出下图模样(这样如果需要什么hadoop的依赖包就会下载)0x03添加hadoop的依赖安装下图修改自行修改,等在依赖下载完成<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.9.2</version></dependency>修改一下上图的文件配置(方便以后的版本管理)这样就修改完成查看maven安装相关依赖(这也是maven的方便之处,就不需要自己去安装了)0x04总结maven:可以一键下载相关依赖文件,hadoop的依赖文件非常多,自己一个一个去安装根本不现实,所以这是一个非常方便的管理器
相关版本下载IADE:2018.3.5Maven:3.6.2OS:window_1064位0x00解压、配置文件解压apache-maven-3.6.2-bin并创建一个MavenRepository文件夹(本地仓库)配置本地仓库路径修改文件路径:apache-maven-3.6.2-bin\apache-maven-3.6.2\conf\settings.xml在大概下图<settings...后面加入<localRepository>本地仓库路径</localRepository>0x01修改下载源修改文件apache-maven-3.6.2-bin\apache-maven-3.6.2\conf\settings.xml<mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyunmaven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url></mirror>0x02配置环境变量新建系统变量MAVEN_HOME,值maven的路径把bin目录加入path中0x03检查是否安装正确打开CMD输入mvn-version
0x00本地文件上传到HDFS方法一hadoopfs-puttest.txt/把test.txt放在hdsf的根目录方法二hadoopfs-copyFromLocaltest.txt/h.txt把text.txt放在hdfs根目录上并重命名为h.txt0x01文件从HDFS上下载到本地方法一hadoopfs-get/h.txt把h.txt从hdfs上拿到本地来方法二hadoopfs-copyToLocal/test.txth.txt把test.txt从hdfs上拿到本地并重命名为h.txt0x02在HDFS上创建目录创建单层目录hadoopfs-mkdir/dir在hdfs的根目录创建dir目录创建多层目录hadoopfs-mkdir-p/dir/a/b/c在hdfs创建多级目录0x03查看HDFS上的文件及内容hadoopfs-cat/test.txt查看hdfs上test.txt的内容hadoopfs-ls/查看hdsf根目录