摘要:
为了容易理解,可以将广播代入到事件模型中,发送广播消息看做是触发event,BroadcastReceiver是处理事件的回调逻辑。 广播这种模型中涉及到两个角色,就是广播的发送者和接收者,所以会涉及到如何发送和如何接收广播。 同时因为系统中可能会有很多的广播,为了不被乱七八糟的东西混淆视听,每个广播给它一个action,这样广播接收器就可以使用action来过滤出自己感兴趣的广播,也...
阅读全文
posted @ 2018-05-21 03:08
CC11001100
阅读(682)
推荐(0)
摘要:
Hive中collect相关的函数有collect_list和collect_set。 它们都是将分组中的某列转为一个数组返回,不同的是collect_list不去重而collect_set去重。 做简单的实验加深理解,创建一张实验用表,存放用户每天点播视频的记录:create table t_visit_video ( username string, video_name ...
阅读全文
posted @ 2018-05-16 01:12
CC11001100
阅读(170995)
推荐(23)
摘要:
创建数据库 hive创建数据库的最简单写法和mysql差不多:create database foo; 仅当名为foo的数据库当前不存在时才创建:create database if not exists foo; 创建数据库时指定位置,这个位置一般是在hdfs上的位置:create database foo location '/db/foo'; 查看已经创建的数据库:show data...
阅读全文
posted @ 2018-05-13 23:16
CC11001100
阅读(22897)
推荐(0)
摘要:
hive中有三个与分组排序相关的分析函数(我起初也认为是窗口函数,后来看到手册里是把他们划到了Analytics functions下),row_number、rank、dense_rank,我一直傻傻的分不大清它们的区别,特地总结一下。 现在模拟一个场景,有一个比较时髦的学校决定借助大数据技术来提高教学质量,其中就有一张表存放了全校每个学生的考试成绩,按照学期进行分区,创建这张表:cre...
阅读全文
posted @ 2018-05-02 00:43
CC11001100
阅读(4349)
推荐(1)
摘要:
Linux中有一个管道的概念,常用来流式的处理文本内容,比如一个文件对其中的每一行应用好几个操作,出于两个方面的考虑可能需要在管道中使用用户定义函数: 1. 刚需: 内置的sed/awk之类的可能没法满足我们的需求,只能使用用户定义函数 2. 代码质量: 如果是流式操作很多很长,那么可能就需要将其进
阅读全文
posted @ 2018-04-30 21:55
CC11001100
阅读(2376)
推荐(0)
摘要:
奇怪的赞数 人生在世,不如意事十之八九,可与言者无二三人。幸好我们生在互联网时代,现实中找不到可以倾诉的人还可以在网络上寻找情绪宣泄口,树洞这类产品就是提供一个让人在网络上匿名倾诉的平台。 我是偶然间发现了这个平台:http://www.6our.com/,感觉自己比较惨的时候去看看别人的不如意,发现上帝还是蛮眷顾自己的(也不知道中国在不在他老人家的管辖范围内)。不过我发现了一个奇怪的现象...
阅读全文
posted @ 2018-04-30 16:38
CC11001100
阅读(2086)
推荐(3)
摘要:
概述 之前在知乎上看到有人分享的一个有趣的反爬策略: 那个变态混淆页面源码是这个样子的,正文内容穿插在混淆元素中: 看到这么变态的页面结构很感兴趣于是就尝试解析了一下。 知乎分享地址:有哪些有趣的反爬虫手段? - 阿阿聪的回答 - 知乎 微信变态混淆页面地址:过年同学聚会,到底该不该去? 分析 & 实现 对于这种一般都是在选择器中过滤掉不可见的元素就可以了,对于不可见元素目前遇到过...
阅读全文
posted @ 2018-04-10 00:31
CC11001100
阅读(980)
推荐(0)
摘要:
起因 在v2ex上看到有人发了一篇帖子,说做了一个程序员小游戏,遂试玩了一下。 游戏的地址在这里: http://www.bettertomissthantomeet.com/pages/level.html 第零关 控制台打印的字符“Hello, world!”,复制粘贴通过。 第一关 控制台又打
阅读全文
posted @ 2018-04-09 23:32
CC11001100
阅读(2902)
推荐(0)
摘要:
分析 新蛋详情页的价格字段是用图片显示的,虽然其它电商都已经认识到这是没什么卵用还浪费资源的行为但貌似新蛋不这样认为,所以尝试爬取一下。 价格字段大概是这个样子: 这个图片也是很纯净的能够识别率百分百的。 代码实现 还是上之前写的一个小小工具库:https://github.com/CC11001100/commons-simple-character-ocr 首先需要抓取一些图片来生...
阅读全文
posted @ 2018-03-26 03:28
CC11001100
阅读(875)
推荐(0)
摘要:
分析 蚂蚁代理的列表页大致是这样的: 端口字段使用了图片显示,并且在图片上还有各种干扰线,保存一个图片到本地用画图打开观察一下: 仔细观察蓝色的线其实是在黑色的数字下面的,其它的干扰线也是,所以这幅图是先绘制的干扰线又绘制的端口数字,于是就悲剧了,干扰线形同虚设,所以还是有办法识别的。 然后就是ip字段,看了下ip字段很老实没啥猫腻。 注意到这个列表有一个按端口号筛选的功能,很兴奋...
阅读全文
posted @ 2018-03-26 01:29
CC11001100
阅读(2279)
推荐(0)
摘要:
分析 打开页面http://www.coobobo.com/free-http-proxy/,端口数字一看就不对劲,老规律ctrl+shift+c选一下: 这就很悲剧了,端口数字都是用图片显示的: 不过没关系,看这些图片长得这么清秀纯天然无杂质,识别是很容易的。 然后再来选一下ip地址: 很可能ip地址是用这个js现写进来的,要确定的话还得看一眼返回的原始html,查看源码定位这...
阅读全文
posted @ 2018-03-25 22:54
CC11001100
阅读(932)
推荐(0)
摘要:
简述 本次要爬取的网站是全网代理,貌似还是代理ip类网站中比较有名的几个之一,其官网地址: http://www.goubanjia.com/。 对于这个网站的爬取是属于比较悲剧的,因为很久之前就写好了代码了只是没写博客总结,结果刚才看的时候发现人家改版了…之前的代码基本不能用了只好重新写… 原来是一个列表页有很多项可以看到的,现在改版成只看前20条了,貌似只有不断的检测抓取不然这东西鸡肋没啥...
阅读全文
posted @ 2018-03-25 21:32
CC11001100
阅读(3807)
推荐(0)
摘要:
起因 为了训练爬虫技能(其实主要还是js技能…),翻了可能有反爬的网站挨个摧残,现在轮到这个网站了:http://www.data5u.com/free/index.shtml 解密过程 打开网站,在免费ip的列表页查看元素选一个端口,发现表示端口的元素class属性上有可疑的东西(代理ip类网站的反爬总是这么没有创意…): 上面的“GEA”很像是密文存储的东西,怀疑端口号是页面加载...
阅读全文
posted @ 2018-03-25 19:12
CC11001100
阅读(13989)
推荐(3)
摘要:
起因 有的时候写脚本需要能够在脚本中获取到ip的归属地,比如分析登录日志列出攻击者的相关信息等。 可以使用whois来查询ip的详细信息,但是whois并不是每台机器预装的,而且我想看中文的结果,所以找到了一个个人认为设计的很棒的网站:https://ip.cn/index.php。 可以直接使用curl发请求查询,比如查某个攻击者的ip归属地: 哈,这就是我认为它设计的很棒的原因,同一个...
阅读全文
posted @ 2018-03-20 00:27
CC11001100
阅读(10231)
推荐(2)
摘要:
起因 之前挖过爬取免费代理ip的坑,一个比较帅的同事热心发我有免费代理ip的网站,遂研究了下:https://proxy.coderbusy.com/。 解密 因为之前爬过类似的网站有了些经验,大概知道这些家伙都是啥套路于是就随手ctrl+shift+c选了一下端口号: 端口元素有个奇怪的data字段,怀疑是在这个数字8781的基础上生成的8080,查看源代码看看返回的是什么样的: ...
阅读全文
posted @ 2018-03-20 00:15
CC11001100
阅读(1497)
推荐(0)
摘要:
起因: 在研究爬虫的时候发现很多网站都出现了同一种方式的js混淆,并且名字都是pde.js,怀疑是使用了同一款混淆工具,所以研究一下。 这款工具叫JS Packer,并不是专门的混淆工具,而是一款js压缩工具,其官网地址为: http://dean.edwards.name/packer/ 支持两种
阅读全文
posted @ 2018-02-25 02:23
CC11001100
阅读(3196)
推荐(1)
摘要:
起因: 最近在练习解析验证码,看到了这个网站的验证码比较简单,于是就拿来解析一下攒攒经验值,并无任何冒犯之意... 验证码所在网页: https://www.w3cschool.cn/checkmphone?type=findpwd 验证码地址: https://www.w3cschool.cn/scode 1. 分析规律 打开这个页面: https://www.w3cschool.cn/...
阅读全文
posted @ 2018-01-27 02:21
CC11001100
阅读(1862)
推荐(0)
摘要:
大学的时候无意间发现绕过CMCC验证的方法(贫穷使人进步...),写了段POC脚本,时过两年,漏洞应该已经失效了(我猜 --),刚刚发现有人私信问我要,都那么久了鬼还记得写的什么啊,但确实看到了又不能当做没看到,只好在以前电脑翻了一阵,想了一下,还是贴在这里备份一下,毕竟我也是发现过漏洞的男人...
阅读全文
posted @ 2017-12-25 01:01
CC11001100
阅读(968)
推荐(0)
摘要:
题目描述 浙江大学校园里绿树成荫,环境非常舒适,因此也引来一批动物朋友来此居住。童心未泯的NowCoder就经常带些碎面包什么的去广场喂鸽子和兔子,并和它们玩耍。 一点也没有大学生的样子,还是一副老不正经的样子,呵呵。随着鸽子和兔子数目的增多,NowCoder带的那点食物已经不够它们瓜分了。为了能让自己的好朋友吃的饱饱的, NowCoder决定统计一下有多少只鸽子和有多少只兔子,以便带来足够的食物...
阅读全文
posted @ 2017-12-15 00:22
CC11001100
阅读(421)
推荐(0)
摘要:
题目描述 有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的(上下左右四个方向)黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。 输入描述:输入包含多组数据。每组数据第一行是两个整数 m 和 n(1≤m, n≤20)。紧接着 m 行,每行包括 n 个字符。每个字符表示一块瓷砖的颜色,规则如下:1. “.”:黑色的瓷砖;2. “#”:...
阅读全文
posted @ 2017-12-14 23:57
CC11001100
阅读(416)
推荐(0)
摘要:
前缀表达式计算规则: 1. 从后往前读 2. 遇数字进栈,遇操作符栈顶两个出栈计算,结果再入栈。 这里假定前缀表达式是合法的,没有做合法性校验。 AC代码:import java.util.Scanner; import java.util.Stack; /** * @author CC11001100 */ public class Main { public st...
阅读全文
posted @ 2017-12-14 00:35
CC11001100
阅读(327)
推荐(0)
摘要:
只需要两个变量即可,一个维护着连接池的当前连接数,一个维护着连接池的最大连接数。 AC代码:import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * @author CC11001100 */ public class Main { public static vo...
阅读全文
posted @ 2017-12-13 23:42
CC11001100
阅读(224)
推荐(0)
摘要:
标记一下即可,只是记得需要区分男生和女生,虽然同性才是真爱... AC代码:import java.util.HashMap; import java.util.Map; import java.util.Scanner; /** * @author CC11001100 */ public class Main { public static void main(Str...
阅读全文
posted @ 2017-12-13 01:34
CC11001100
阅读(223)
推荐(0)
摘要:
思路其实很简单,无论再少的步骤,至少要能把矮的堆到平均高度,所以只求 sum(avg - ( x >= avg ? 0 : avg - x).sum(); } } 题目来源: https://www.nowcoder.com/practice/f1b67248244c4226a5289c993bc28128?tpId=3&tqId=10914&tPage=1&rp=&...
阅读全文
posted @ 2017-12-13 00:06
CC11001100
阅读(233)
推荐(0)
摘要:
简单的贪心算法 AC代码:import java.util.Scanner; /** * @author CC11001100 */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext...
阅读全文
posted @ 2017-12-12 23:53
CC11001100
阅读(264)
推荐(0)
摘要:
AC代码:import java.util.Scanner; /** * @author CC11001100 */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNextLine()){ ...
阅读全文
posted @ 2017-12-11 02:21
CC11001100
阅读(535)
推荐(0)
摘要:
AC代码:import java.util.Scanner; /** * @author CC11001100 */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNextLine()){ ...
阅读全文
posted @ 2017-12-11 02:12
CC11001100
阅读(230)
推荐(0)
摘要:
AC代码:import java.util.Scanner; /** * @author CC11001100 */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNextLine()){ ...
阅读全文
posted @ 2017-12-11 02:07
CC11001100
阅读(553)
推荐(1)
摘要:
3n+1水题.... AC代码:import java.util.Scanner; /** * @author CC11001100 */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print...
阅读全文
posted @ 2017-12-11 01:16
CC11001100
阅读(273)
推荐(0)
摘要:
AC代码:import java.util.*; /** * @author CC11001100 */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.nextLine(); System....
阅读全文
posted @ 2017-12-11 01:05
CC11001100
阅读(383)
推荐(0)
摘要:
典型的约瑟夫环问题 AC代码:import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * @author CC11001100 */ public class Main { public static void main(String[] args) { Scann...
阅读全文
posted @ 2017-12-11 00:56
CC11001100
阅读(244)
推荐(0)
摘要:
直接分隔取反即可 AC代码:import java.util.Scanner; /** * @author CC11001100 */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.next...
阅读全文
posted @ 2017-12-10 23:33
CC11001100
阅读(297)
推荐(0)
摘要:
水... AC代码:import java.util.Collections; import java.util.HashSet; import java.util.Scanner; import java.util.Set; /** * @author CC11001100 */ public class Main { public static void main(Str...
阅读全文
posted @ 2017-12-10 18:35
CC11001100
阅读(208)
推荐(0)
摘要:
这里为了方便,直接借助了StringBuilder实现翻转.... AC代码:import java.util.Scanner; /** * @author CC11001100 */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System....
阅读全文
posted @ 2017-12-10 18:27
CC11001100
阅读(208)
推荐(0)
摘要:
不需要思路,简单的模拟就可以AC.... AC代码:import java.util.Scanner; /** * @author CC11001100 */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n ...
阅读全文
posted @ 2017-12-10 18:20
CC11001100
阅读(299)
推荐(0)
摘要:
太水了不用思路,直接截取输出就是了.... AC代码:import java.util.Scanner; /** * @author CC11001100 */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); whil...
阅读全文
posted @ 2017-12-10 18:05
CC11001100
阅读(228)
推荐(0)
摘要:
思路: 如果使用遍历的话需要遍历每一个点然后再比较,这样也许可以通过一些样例,但是很容易就是TLE了,所以应该还有更好的办法。 走格子这种问题,如果不能斜着走的话,那么从(1, 1)走到任意一个位置(x, y)都需要在x轴走上(x-1)步,在y轴走上(y-1)步,加起来就是x+y-2步,所以这道题就变成了简单的比大小。 AC代码:import java.util.Scanner...
阅读全文
posted @ 2017-12-10 17:38
CC11001100
阅读(197)
推荐(0)
摘要:
思路: 这道题主要考的是位运算。 依照题意,使用32个int类型来标记就可以了,只不过使用Java语言的话可能需要多一步计算这个任务ID应该落在哪个数组下标的步骤。 AC代码:import java.util.Scanner; /** * @author CC11001100 */ public class Main { public static void main(St...
阅读全文
posted @ 2017-12-10 17:15
CC11001100
阅读(271)
推荐(0)
摘要:
工具 && 前提条件: 1. 安装了Fiddler的PC一台 2. 手机一部 3. 手机和PC是在同一个局域网内,或者至少能够联通,即手机的流量能够转发到PC端上能够被其捕获 PC端 下载安装Fiddler,启动后在Tools --> Options,弹出的Options窗口中切换到Connections选项卡,勾选“Allow remote computers to connect”,注...
阅读全文
posted @ 2017-12-06 00:43
CC11001100
阅读(475)
推荐(0)
摘要:
sshpass简介 ssh登录的时候使用的是交互式输入,不能预先在命令行使用参数指定密码,sshpass就是为了解决这个问题的。sshpass提供非交互式输入密码的方式,可以用在shell脚本中自动输入密码。 比如在执行ssh、scp、rsync等命令时可以使用sshpass来实现预先指定密码。 安装 CentOS使用yum安装即可:yum install sshpass 使用 -p指...
阅读全文
posted @ 2017-12-04 23:13
CC11001100
阅读(764)
推荐(0)