案例分析:java中substring引发的Full gc

由于应用频繁地Fullgc,就dump了内存下来用MAT分析,发现有个map占用了98%的内存,于是找到这个map privateConcurrentMap<String,String>nick2numid=newConcurrentHashMap<String,String>();存放的是nick与id的映射关系,从MAT中找到map的每一个entry如下图所示: 这里解释一下两个概念ShallowHeap:对象占用了多少内存(单位:字节)RetainedHeap:如果对象被回收会释放多少内存,也就是对象hold住的内存map的key是一个String类型,其ShallowHeap为32byte,RetainedHeap为1104byte。一般对于String类型,具有不可变性,这两个值应该相等才对,带着疑惑找到了问题所在,分步描述如下:1、从页面传了一个参数到后端,这个参数携带了cookie的内容,恰好就是1104byte这么长,不妨设置这个参数为cookie;2、后端拿到cookie这个参数后,需要其中的nick的值,采用的是Strin...

爬虫 ,中国商标网

 fromwin32comimportclientimporttimeimportrandomfromlxmlimportetreedirver=client.DispatchEx("InternetExplorer.Application")dirver.Navigate('http://sbj.saic.gov.cn/sbcx/')dirver.Visible=1time.sleep(random.randint(2,8))dirver.Document.body.getElementsByTagName("p")[3].firstElementChild.click()dirver.Visible=1time.sleep(random.randint(8,12))dirver.Document.body.getElementsByTagName("tbody")[1].click()time.sleep(random.randint(10,20))foriindirver.Document.body.getElementsByTagName("input"):ifi.n...
代码星球 代码星球·2020-08-09

linux富规则的案例

使用firewall-cmd添加富规则:1.拒绝来自public区域中ip地址为192.168.0.11的所有流量firewall-cmd--permanent--zone=public--add-rich-rule='rulefamily=ipv4sourceaddress=192.168.0.11/32reject' 2.允许来自127.16.0.0/16网段的访问firewall-cmd--permanent--add-rich-rule='rulefamily=ipv4sourceaddress=172.16.0.0/16accept' 3.拒绝192.168.0.100主机访问本地的Samba服务firewall-cmd--permanent--add-rich-rule='rulefamily=ipv4sourceaddress=192.168.0.100/24servicename=sambareject'完了,之后重启防火墙firewall-cmd--reload查看规则:firewall-cmd--list-all ...
代码星球 代码星球·2020-08-09

遇到Io阻塞时会切换任务之【爬虫版】

  #!/usr/bin/envpython3#-*-coding:utf-8-*-fromurllibimportrequestimportgevent,timefromgeventimportmonkeymonkey.patch_all()#把当前程序中的所有io操作都做上标记defspider(url):print("GET:%s"%url)resp=request.urlopen(url)data=resp.read()print("%sbytesreceivedfrom%s.."%(len(data),url))urls=["https://weibo.com/","https://www.baidu.com/","https://www.yinxiang.com/"]start_time=time.time()forurlinurls:spider(url)print("同步耗时:",time.time()-start_time)async_time_start=time.time()gevent.joinall([gevent.spawn(spider...

【Spark】Spark-shell案例——standAlone模式下读取HDFS上存放的文件

目录可以先用local模式读取一下步骤一、先将做测试的数据上传到HDFS二、开发scala代码standAlone模式查看HDFS上的文件步骤一、退出local模式,重新进入Spark-shell二、开发scala代码可以先用local模式读取一下步骤一、先将做测试的数据上传到HDFScd/export/servers/sparkdatashdfsdfs-mkdir-p/sparkwordcounthdfsdfs-putwordcount.txt/sparkwordcount二、开发scala代码sc.textFile("hdfs://node01:8020/sparkwordcount/wordcount.txt").flatMap(_.split("")).map((_,1)).reduceByKey(_+_).collect如果不需要查看结果,而是需要将结果存储为文本文件,则将.collect换成.saveAsTestFile(要存放的Path)即可standAlone模式查看HDFS上的文件步骤一、退出local模式,重新进入Spark-shellbin/spark-shell...

SparkSpark-shell案例——单词计数统计

目录步骤一、准备本地文件以作测试二、通过--master启动本地模式三、开发scala单词统计代码步骤一、准备本地文件以作测试在第一台机器执行mkdir-p/export/servers/sparkdatascd/export/servers/sparkdatas/vimwordcount.txthellomehelloyouhelloher二、通过--master启动本地模式cd/export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/bin/spark-shell--masterlocal[2]三、开发scala单词统计代码有两种写法(tab可以补全或者提示)sc.textFile("file:///export/servers/sparkdatas/wordcount.txt").flatMap(x=>x.split("")).map(x=>(x,1)).reduceByKey((x,y)=>x+y).collectsc.textFile("file:///export/servers/sparkdatas/wordcoun...

【HBase】HBase与MapReduce的集成案例

目录需求步骤一、创建maven工程,导入jar包二、开发MapReduce程序三、运行结果HBase与MapReducer集成官方帮助文档:http://archive.cloudera.com/cdh5/cdh/5/hbase-1.2.0-cdh5.14.0/book.html需求在HBase先创建一张表myuser2——create'myuser2','f1',然后读取myuser表中的数据,将myuser表中f1列族下name列和age列的数据写入到表myuser2中步骤一、创建maven工程,导入jar包<repositories><repository><id>cloudera</id><url>https://repository.cloudera.com/artifactory/cloudera-repos/</url></repository></repositories><dependencies><dependency><groupId>...

【Hadoop离线基础总结】MapReduce案例之自定义groupingComparator

求取Top1的数据需求求出每一个订单中成交金额最大的一笔交易订单id商品id成交金额Order_0000005Pdt_01222.8Order_0000005Pdt_0525.8Order_0000002Pdt_03322.8Order_0000002Pdt_04522.4Order_0000002Pdt_05822.4Order_0000003Pdt_01222.8代码实现自定义一个javaBean,命名为OrderBeanpackagecn.itcast.demo5;importorg.apache.hadoop.io.WritableComparable;importjava.io.DataInput;importjava.io.DataOutput;importjava.io.IOException;publicclassOrderBeanimplementsWritableComparable<OrderBean>{//定义orderId和price变量privateStringorderId;privateDoubleprice;/***重写compareTo方...

Hadoop离线基础总结MapReduce自定义InputFormat和OutputFormat案例

自定义InputFormat合并小文件需求无论hdfs还是mapreduce,存放小文件会占用元数据信息,白白浪费内存,实践中,又难免面临处理大量小文件的场景优化小文件的三种方式1.在数据采集的时候,就将小文件或小批数据合成大文件再上传HDFS2.在业务处理之前,在HDFS上使用mapreduce程序对小文件进行合并3.在mapreduce处理时,可采用combineInputFormat提高效率用代码实现第二种方式自定义InputFormatpackagecn.itcast.demo3;importjdk.nashorn.internal.ir.Splittable;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.io.BytesWritable;importorg.apache.hadoop.io.NullWritable;importorg.apache.hadoop.mapreduce.*;importorg.apache.hadoop.mapreduce.lib.input.FileInputFormat;imp...

Day_14【IO流】扩展案例3_对文本文件中的字符串内容进行反转

分析以下需求,并用代码实现项目根路径下有text.txt文件,内容如下我爱黑马123456利用IO流的知识读取text.txt文件的内容反转后写入text.txt文件中654321马黑爱我思路1.创建集合对象用于存储读取到的每一行数据2.创建BufferedReader关联text.txt文件3.将读取到的每一行数据存储到集合中4.关闭输入流5.遍历集合获取到每一个数据(每一行字符串)6.通过StringBuilder将当前字符串翻转7.将转换后的字符串,设置回集合的当前位置(提示集合中的set方法)8.创建输出流对象关联text.txt9.倒着遍历集合(为了达到行翻转的效果)10.将数据写入文件,手动换行11.关闭输出流代码packagecom.itheima3;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;importjava.util.ArrayList;pub...

Day_14【IO流】扩展案例2_缓冲字符输出、输入流进行用户名的创建

需求分析1.项目根目录下建立文件:user.txt,文件中存放用户名和登录密码,格式:用户名,密码,如:aaa,123;2.user.txt文件中初始存放的用户信息有如下:jack,123rose,123tom,1233.要求完成如下功能:程序运行时:控制台提示用户输入注册的用户名和密码;验证键盘录入的用户名跟user.txt中已注册的用户名是否重复:是:控制台提示:用户名已存在否:将键盘录入的用户名及密码写入user.txt文件,并在控制台提示:注册成功;思路1.键盘录入用户名和密码并用两个String变量接受2.创建输入流对象关联user.txt3.创建集合对象,用于存储读取到的数据4.定义boolean类型的标记flag,假设键盘录入的用户名不存在,默认为false5.遍历集合获取到每一个数据(数据是用户名,密码的字符串,思路不要乱)a)根据逗号切割当前字符串,获取字符串数组中0索引的用户名b)拿着键盘录入的用户名和切割后的用户名逐个对比,相同的话将flag改为true6.判断flaga)true:提示已经存在b)false:创建输出流对象关联user.txt,并将键盘录入的用户...

Day_14【IO流】扩展案例1_缓冲区字符输入、输出流,键盘录入,contains()方法的统一运用

分析以下需求,并用代码实现实现一个验证码小程序,要求如下:1.在项目根目录下新建一个文件:data.txt,键盘录入3个字符串验证码,并存入data.txt中,要求一个验证码占一行;2.键盘录入一个需要被校验的验证码如果输入的验证码在data.txt中存在:在控制台提示验证成功,如果不存在控制台提示验证失败思路1.键盘录入三个验证码用字符串接收2.创建输出流对象关联data.txt3.将三个验证码写入data.txt当中,关闭输出流4.键盘录入一个需要校验的验证码并用字符串接收5.创建输入流对象关联data.txt6.创建集合对象7.读取data.txt将读取到的数据存储到集合中8.使用集合调用contains方法,将需要校验的字符串传入9.根据返回的结果,打印是否存在代码packagecom.itheima;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;import...

Day_13【IO流】扩展案例2_统计键盘录入字符在指定项目文件中出现的次数

分析以下需求,并用代码实现键盘录入一个字符(以字符串的形式录入)判断当前字符在info3.txt当中是否存在如果不存在,给出提示如果存在,请统计出该字符出现的次数Info3.txt内容如下:abcdefghijklmnopqrstuvwxyz,mnopqrstuvwxyz,mnopqrstuvwxyz,mnopqrstuvwxyz思路1.键盘录入要查找的字符2.创建输入流对象关联info3.txt3.创建StringBuilder用于存储读取到的所有字符4.将读取到的字符添加到StringBuilder当中5.调用indexOf方法判断键盘录入的字符是否存在,如果返回-1说明不存在6.如果存在的话,将StringBuilder拆分成字符数组7.遍历字符数组,获取到每一个字符8.跟键盘录入的字符逐个进行匹配(不要忘了将字符转换为字符串)9.打印出现的次数代码packagecom.itheima;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;import...

Day_13【IO流】扩展案例2_统计指定项目文件中字符出现的次数

需求分析统计当前项目下info2.txt文件中,每个字符出现的个数文件内容如下:welcometoitheima!!!最终效果如下:w(1)(2)!(3)t(2)e(3)c(1)a(1)o(2)l(1)m(2)h(1)i(2)思路1.创建HashMap集合,用于统计每个字符出现的次数2.创建输入流对象关联数据源3.读取到文件中的每一个字符4.判断字符是否是第一次出现a)如果是的话,键的位置存当前字符,值的位置存1b)如果不是第一次出现,键的位置还是当前字符,值的位置需要将原本记录的值取出,然后+1存储5.创建字符串缓冲区(StringBuilder),用于拼接结果6.将数据从集合中取出,并拼接7.创建输出流对象8.调用write方法写出数据9.关闭流释放资源代码packagecom.itheima;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.util.HashMap;importjava.util.Map.Entry;publiccla...

Day_13【IO流】扩展案例1_读取项目文件内容并去重

分析以下需求,并用代码实现:需求:读取当前项目下的info1.txt文件内容如下:aaaaaaaaaaabbbbbbbbbbbbccdefg要求将数据去重后写回最终效果:fgdebca思路1.创建HashSet集合对象用于存储读取到的每一个字符(用于去重)2.创建字节输入流对象3.将读取到的字符存储到集合中4.创建输入流对象关联目标文件5.遍历Set集合获取到每一个数据,并调用write方法写出6.关闭流释放资源代码packagecom.itheima;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.util.HashSet;importjava.util.Iterator;publicclassTest1{publicstaticvoidmain(String[]args)throwsIOException{//创建HashSet集合对象用于存储读取到的每一个字符(用...
首页上一页...1415161718...下一页尾页