Fork me on GitHub
上一页 1 2 3 4 5 6 ··· 10 下一页
摘要: 一、啥是宏 宏可以看做是一个简短的函数,或者是对一个表达式取别名,同时可以将这个表达式中的一些值做成变量调用时传入,比较适合于做分析时为一些临时需要用到很多次的表达式操作封装一下取个简短点的别名来调用。宏只在当前会话有效,当退出hive控制台再进入时上次创建的宏就丢失了,如果需要永久保留某个宏,可以将其加入到${HIVE_HOME}/.hiverc文件中。 二、创建宏 创建宏的语法:CRE... 阅读全文
posted @ 2019-01-07 12:15 CC11001100 阅读(4108) 评论(0) 推荐(0) 编辑
摘要: 一、需求 在主从结构的集群中,我们假设硬件机器是很脆弱的,随时可能会宕机,当master挂掉之后需要从slave中选出一个节点作为新的master,使用zookeeper可以很简单的实现集群选主功能。 二、分析 下面为了方便叙述,将使用更通用的技术术语,即使用leader表示master,使用follower表示slave。 集群选主涉及到两个问题: 1. 谁来做leader 2. lea... 阅读全文
posted @ 2019-01-07 02:12 CC11001100 阅读(6923) 评论(0) 推荐(0) 编辑
摘要: 一、场景 & 需求 集群上有很多个节点运行同一个任务,这个任务会有一些可能经常改变的配置参数,要求是当配置参数改变之后能够很快地同步到每个节点上,如果将这些配置参数放在本地文件中则每次都要修改本地文件费时费力还可能会有遗漏,所以这个时候一个比较自然的想法就是将配置单独提取出来作为一个服务,比如自己开发一个http服务器提供一个接口来获取服务,这有两个问题,其一是配置下发这其实是一个推模型,当配... 阅读全文
posted @ 2019-01-06 22:03 CC11001100 阅读(3818) 评论(0) 推荐(1) 编辑
摘要: Zookeeper支持一些命令用来获取服务的状态和相关信息,因为这些命令都是四个字母的,所以一般称为四字命令。 四字命令可以使用telnet或者nc向服务器提交,使用下面这个脚本可以当做是一个简易的客户端,它接收四字命令,发送到指定服务器,并将执行结果显示在控制台上,同时为了体验好一些,还提供了prompt来将用户输入的命令和命令的执行结果做区分:#! /bin/bash # [$1] se... 阅读全文
posted @ 2019-01-06 03:17 CC11001100 阅读(709) 评论(0) 推荐(0) 编辑
摘要: $ZOOKEEPER_HOME/bin下的zkCli.sh进入命令行界面,使用help可查看支持的所有命令: 一、节点相关操作 create [-s] [-e] path data acl create用于创建新的节点:create [-s] [-e] path data acl 使用create创建一个节点: 创建节点时的一些选项详解: -s和-e都是可选的,用来指定节点的类型,节点... 阅读全文
posted @ 2019-01-06 03:17 CC11001100 阅读(766) 评论(0) 推荐(0) 编辑
摘要: 关于博客 平时工作中遇到的一些问题会随手记一下准备后面有时间就发个博客总结总结啥的,但是大多数时候也只限于随手记一下并没有进行系统的整理,所以一年半的时间我本地的草稿数量已经积压了五百多篇,我他妈的真是个积极废人。 积压的原因大致有两点,一个是很长一段时间公司的作息时间都是996,下班回到家就很晚了 阅读全文
posted @ 2019-01-06 02:46 CC11001100 阅读(372) 评论(1) 推荐(3) 编辑
摘要: 一、背景介绍 最开始接触验证码破解的时候就是破解的w3cschool的使用手机号找回密码页面的验证码,详见:验证码识别之w3cschool字符图片验证码(easy级别),这次破解一下他们注册页面的滑块验证码,有点忐忑,我这么跟人过不去不会被打吧... 阅读前请知悉:本篇文章只涉及到滑块验证码的滑块位置识别,主要知识集中在图像处理方面,并不涉及到模拟鼠标轨迹等知识。 二、分析 首先打开这个页... 阅读全文
posted @ 2018-12-19 00:13 CC11001100 阅读(3251) 评论(1) 推荐(2) 编辑
摘要: 一、前言 自如房屋详情页的价格字段用图片显示,特此破解一下以丰富一下爬虫笔记系列博文集。 二、分析 & 实现 先打开一个房屋详情页观察一下; 网页的源代码中没有直接显示价格字段,价格的显示是使用一张背景图,图上是0-9十个数字,然后网页上显示的时候价格的每一个数字对应着一个元素,元素的背景图就设置为这张图片,然后使用偏移定位到自己对应的数字: 就拿上面这个例子来说,它对应的背景图是:... 阅读全文
posted @ 2018-12-15 21:22 CC11001100 阅读(1580) 评论(0) 推荐(1) 编辑
摘要: 生成分布式有序且唯一id的方法有很多种,使用zookeeper是比较简单的一种方法,只是生成的速度不高,这里只是一个借助zk的版本号生成分布式唯一且有序id的例子。 ZkIdGenerator.java:package cc11001100.zookeeper.uniqId; import org.apache.zookeeper.CreateMode; import org.apach... 阅读全文
posted @ 2018-11-16 22:12 CC11001100 阅读(3085) 评论(0) 推荐(0) 编辑
摘要: 一、节点配额概述 zookeeper中可以往节点存放数据,但是一般来说存放数据总是要有个度量的对吧,不然空间就那么大,如果某个节点将空间全占用了其它节点没得用了,所以zookeeper提供了一个对节点配额功能,不过这个配额功能有点鸡肋,当占用的空间超过了设置的大小时只会打印WARN级别的日志提醒而不是直接让超出配额的操作失败。既然只是在日志中打印一个警告信息,首先就是要找到日志的位置,默认情况下,... 阅读全文
posted @ 2018-11-16 21:42 CC11001100 阅读(3047) 评论(0) 推荐(0) 编辑
摘要: DataFrameNaFunctions用来对DataFrame中值为null或NaN的列做处理,处理分为三种类型: drop:根据条件丢弃含有null或NaN的行 fill:根据条件使用指定值填充值为null或NaN的列,相当于设置默认值 replace:根据条件替换列值 下面是针对每种处理方式的详细解释:package cc11001100.spark.dataset.DataFram... 阅读全文
posted @ 2018-11-13 21:23 CC11001100 阅读(2223) 评论(0) 推荐(0) 编辑
摘要: 一、Socks5协议简介 socks5是基于传输层的协议,客户端和服务器经过两次握手协商之后服务端为客户端建立一条到目标服务器的通道,在传输层转发TCP/UDP流量。 关于socks5协议规范,到处都可以找到,我再重复一遍也没啥意思,因此不再赘述,可以参见rfc1928(英文),或者查阅维基百科SOCKS5 - 维基百科(中文)。 二、代码实现 基于socks5进行了一个代理服务器的简单实... 阅读全文
posted @ 2018-11-12 22:55 CC11001100 阅读(20168) 评论(1) 推荐(1) 编辑
摘要: 一、lrc文件有什么作用 lrc文件就是一个文本文件,用来记录歌曲的歌词信息,使得播放歌曲时能够让歌词与声音同步显示,类似于电影字幕那种效果。 心情很丧时我们会听首歌陶冶一下情操,不知你是否注意过音乐播放软件播放音乐时歌词信息,这是酷我音乐的歌词播放界面: 当前正在播放的这一句歌词会被高亮显示,从上面这幅图我们能够看出来,这个歌词文件至少记录了什么时间播放哪一句歌词,这些信息都是放在lr... 阅读全文
posted @ 2018-11-11 12:10 CC11001100 阅读(6104) 评论(0) 推荐(0) 编辑
摘要: 一、什么是namespace 在RDBMS中有database的概念,用来对table进行分组,那么在HBase中当表比较多的时候如何对表分组呢,就是namespace,可以简单的把namespace理解为RDBMS中的database。 二、namespace相关操作 内置的namespace HBase有两个内置的namespace:hbase(main):009:0> list_na... 阅读全文
posted @ 2018-11-05 21:37 CC11001100 阅读(3600) 评论(0) 推荐(0) 编辑
摘要: 一、累加器简介 在Spark中如果想在Task计算的时候统计某些事件的数量,使用filter/reduce也可以,但是使用累加器是一种更方便的方式,累加器一个比较经典的应用场景是用来在Spark Streaming应用中记录某些事件的数量。 使用累加器时需要注意只有Driver能够取到累加器的值,Task端进行的是累加操作。 创建的Accumulator变量的值能够在Spark Web UI上... 阅读全文
posted @ 2018-11-03 18:16 CC11001100 阅读(10204) 评论(0) 推荐(0) 编辑
摘要: 一、跳表简述 跳表可以看做是一个带有索引的链表,在介绍跳表之前先看一下一个普通的链表,假如当前维护了一个有序的链表: 现在要在这个链表中查找128,因为事先不知道链表中数值的分布情况,我们只能从前到后依次遍历,那么有没有什么取巧的方法呢? 如果我们能够存储下最中间节点的引用,比如存储节点29的引用,然后每次要查找节点的时候就先跟29比较一下,如果比29小就还是从前往后找(因为不会超过中间节... 阅读全文
posted @ 2018-10-16 22:50 CC11001100 阅读(769) 评论(0) 推荐(0) 编辑
摘要: 一、ModHeader是什么 ModHeader顾名思义就是让我们可以自定义HTTP请求头或者是重写响应头,包括新增请求头/响应头或者覆盖Chrome浏览器设置的请求头的默认值,同时还可以根据URL Pattern来只对特定网站生效。 Request header用来定义请求头,Response h 阅读全文
posted @ 2018-10-14 23:08 CC11001100 阅读(38099) 评论(0) 推荐(1) 编辑
摘要: 背景 公司的集群很多人一起用,有时候就难免资源紧张,某次需要用的时候没资源等了半天还是没资源,再等半天还是没资源,于是就写了个脚本泄愤,建议看到的人拷走放在自己公司集群上长期运行 :) 实现 此脚本运行时会每隔10秒检测一下,列出当前运行的所有任务,如果提交者不是当前登录用户的话就杀掉,为了搞清楚自己手上有多少血债,杀掉任务的同时必须要记下log。 crazy-killer.sh:#! /... 阅读全文
posted @ 2018-09-24 17:47 CC11001100 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 背景 我一般都是在activity dashboard页看同事的提交记录,这样只要我有权限的项目有人提交了我就能够知道,虽然提交的具体代码压根不看.......但至少能够了解各个项目的开发情况(如果大家都认真写了commit message的话)。不过有个比较悲剧的情况是有一个我有权限的项目我只是看 阅读全文
posted @ 2018-09-24 17:10 CC11001100 阅读(775) 评论(0) 推荐(0) 编辑
摘要: 一、目标 爬取http://www.yymp3.com网站歌曲相关信息,包括歌曲名字、作者相关信息、歌曲的音频数据、歌曲的歌词数据。 二、分析 2.1 歌曲信息、歌曲音频数据下载地址的获取 随便打开一首歌曲的详情页: 歌曲的名字、作者相关信息可以通过解析html得到,这些信息在html中能够搜索得到,那么歌曲的音频数据的下载链接如何得到呢? 要在网页中播放音频,首先要有一个audio标... 阅读全文
posted @ 2018-09-17 23:03 CC11001100 阅读(1585) 评论(1) 推荐(1) 编辑
摘要: 在删除文件或进行一些乱七八糟的危险操作时总需要用户手动输入一个"y"来确定一下,但是如果数量很多的话手动输入就是个灾难啊,yes最初就是为了解决这个问题产生的,比如这种形式:yes | rm a* 当然我们可以指定-f静默选项不进行确认询问,呃,就当我举了个不太恰当的例子吧,毕竟我删除文件从来都是-f选项,而借助yes的话太麻烦了。 不过它的另一个用法可能大多数人都不知道,就是可以指定一行... 阅读全文
posted @ 2018-08-26 23:58 CC11001100 阅读(2750) 评论(0) 推荐(1) 编辑
摘要: 最近发现渣渣ECS内存总是不够用,内存太小一不小心就用完了,用完就用完吧,内存用来做cache是可以快一些,但是内存用完了老是一顿一顿的卡,实在有点受不了,于是就写了释放内存的小脚本,觉得卡了就释放下内存。 释放之前: 直接执行释放内存,不会有任何输出: 加个-v选项,查看更多,会将释放前后的内存使用情况都打印一下,做一个对比: 看下源码实际上随便传个参数就可以。 脚本内容:... 阅读全文
posted @ 2018-08-26 23:58 CC11001100 阅读(956) 评论(0) 推荐(1) 编辑
摘要: 一、起因 最近有篇关于String空字符串判断的文章火了,老是看到这篇文章,既然如此我也只好认真看了下:程序员晒出一段代码引来无数网友狂喷!网友:你就活该当码农! 我也觉得这段代码写的不怎么的,首先程序的正确性应该没有问题,我只是觉得如果写出的代码跟道上认可的规范有违的话可能会恶心到后面接手的人而不自知,我现在莫名打喷嚏的时候就在想肯定是在之前公司写的代码又被接手的人吐槽了… :) 看... 阅读全文
posted @ 2018-08-19 23:57 CC11001100 阅读(644) 评论(0) 推荐(2) 编辑
摘要: 一、UDAF简介 先解释一下什么是UDAF(User Defined Aggregate Function),即用户定义的聚合函数,聚合函数和普通函数的区别是什么呢,普通函数是接受一行输入产生一个输出,聚合函数是接受一组(一般是多行)输入然后产生一个输出,即将一组的值想办法聚合一下。 关于UDAF的一个误区 我们可能下意识的认为UDAF是需要和group by一起使用的,实际上UDAF可以... 阅读全文
posted @ 2018-08-14 00:04 CC11001100 阅读(15046) 评论(1) 推荐(3) 编辑
摘要: 一、什么是游程编码 游程编码是一种比较简单的压缩算法,其基本思想是将重复且连续出现多次的字符使用(连续出现次数,某个字符)来描述。 比如一个字符串: AAAAABBBBCCC 使用游程编码可以将其描述为: 5A4B3C 5A表示这个地方有5个连续的A,同理4B表示有4个连续的B,3C表示有3个连续的 阅读全文
posted @ 2018-08-13 02:10 CC11001100 阅读(23854) 评论(0) 推荐(2) 编辑
摘要: 一、UDF介绍 UDF(User Define Function),即用户自定义函数,Spark的官方文档中没有对UDF做过多介绍,猜想可能是认为比较简单吧。 几乎所有sql数据库的实现都为用户提供了扩展接口来增强sql语句的处理能力,这些扩展称之为UDXXX,即用户定义(User Define)的XXX,这个XXX可以是对单行操作的UDF,或者是对多行操作的UDAF,或者是UDTF,本次主要... 阅读全文
posted @ 2018-08-12 18:37 CC11001100 阅读(12880) 评论(0) 推荐(1) 编辑
摘要: 一、什么是Catalog Spark SQL提供了执行sql语句的支持,sql语句是以表的方式组织使用数据的,而表本身是如何组织存储的呢,肯定是存在一些元数据之类的东西了,Catalog就是Spark 2.0之后提供的访问元数据的类: Catalog提供一些API用来对数据库、表、视图、缓存、列、函数(UDF/UDAF)进行操作,下文将一一介绍。 二、如何使用Catalog 得到Cat... 阅读全文
posted @ 2018-08-12 17:03 CC11001100 阅读(4673) 评论(0) 推荐(0) 编辑
摘要: 一、概论 说这个之前先看一个段子,讲的是甲方有一奇葩客户,这客户看一网站某些样式很别扭不得劲,非要让乙方修改,乍一听没毛病,但关键是这网站不是乙方家的,根本没有修改权限,怎么办,客户就是上帝,上帝的要求怎么好拒绝,这时候乙方就有一神人挺身而出,写了一个修改页面样式的浏览器插件给客户装上,这样客户只要 阅读全文
posted @ 2018-08-08 23:02 CC11001100 阅读(4102) 评论(0) 推荐(1) 编辑
摘要: Hive有一个严格模式,在严格模式下会对可能产生较大查询结果的语句做限制,禁止其提交执行。 一、切换严格模式 查看当前的模式:hive> set hive.mapred.mode; hive.mapred.mode is undefined 未定义即为false,即no-strict模式。 开启严格模式:set hive.mapred.mode=strict; 关闭严格模式:set hi... 阅读全文
posted @ 2018-08-06 23:04 CC11001100 阅读(8513) 评论(0) 推荐(1) 编辑
摘要: String的trim()方法是使用频率频率很高的一个方法,直到不久前我不确定trim去除两端的空白符时对换行符是怎么处理的点进去看了下源码的实现,才发现String#trim的实现跟我想像的完全不一样,原来一直以来我对这个函数存在着很深的误解。 我想的trim方法是类似于下面这样的:package cc11001100.trimStudy; /** * @author CC1100110... 阅读全文
posted @ 2018-08-06 22:53 CC11001100 阅读(815) 评论(0) 推荐(0) 编辑
摘要: 在使用Hive的时候,有时候只是想取表中某个分区的前几条的记录看下数据格式,比如一个很常用的查询:select * from foo where partition_column=bar limit 10; 这种对数据基本没什么要求,随便来点就行,既然如此为什么不直接读取本地存储的数据作为结果集呢。 Hive命令都要转换为MapReduce任务去执行,但是因为启动MapReduce需要消耗资源... 阅读全文
posted @ 2018-08-06 22:52 CC11001100 阅读(2888) 评论(0) 推荐(0) 编辑
摘要: 当铺密码是一种很有意思的密码,专门用来加密数字的,不需要密钥,明文信息包含在加密后的密文中。 它通过一个汉字中隐藏的信息:笔画数,来将汉字和数字关联起来,将汉字定义为明文,将数字定义为密文,加密是将数字映射到对应笔画的汉字,解密是将汉字按照笔画映射回数字。 有很多汉字的笔画数是相同的,所以可能会有多个明文(汉字)对应同一个密文(数字),当然这个主要是看汉字笔画映射表的选择,如果映射表只准备了9... 阅读全文
posted @ 2018-07-23 22:13 CC11001100 阅读(7562) 评论(0) 推荐(0) 编辑
摘要: 有时候在网上办理一些业务时有些需要填写银行卡号码,当胡乱填写时会立即报错,但是并没有发现向后端发送请求,那么这个效果是怎么实现的呢。 对于银行卡号有一个校验算法,叫做Luhn算法。 一、银行卡号码的校验规则 银行卡号码的校验采用Luhn算法,校验过程大致如下: 1. 从右到左给卡号字符串编号,最右边第一位是1,最右边第二位是2,最右边第三位是3…. 2. 从右向左遍历,对每一位字符t执行第... 阅读全文
posted @ 2018-07-23 21:57 CC11001100 阅读(26196) 评论(0) 推荐(2) 编辑
摘要: 一、导出到本地 导出查询结果到本地:INSERT OVERWRITE LOCAL DIRECTORY "/tmp/hive-result/t_visit_video" SELECT * FROM t_visit_video ; 导出到的本地路径不必已经存在,会自动创建父目录,导出的查询结果会是一个文件夹,文件夹下存放着本次查询的结果,如果结果集比较大的话会分块存放。 每个数据块还会有一个C... 阅读全文
posted @ 2018-07-14 11:09 CC11001100 阅读(2945) 评论(0) 推荐(0) 编辑
摘要: 在某些情况下我们需要检测当前用户是否打开了浏览器开发者工具,比如前端爬虫检测,如果检测到用户打开了控制台就认为是潜在的爬虫用户,再通过其它策略对其进行处理。本篇文章主要讲述几种前端JS检测开发者工具是否打开的方法。 一、重写toString() 对于一些浏览器,比如Chrome、FireFox,如果控制台输出的是对象,则保留对象的引用,每次打开开发者工具的时候都会重新调用一下对象的... 阅读全文
posted @ 2018-07-04 23:14 CC11001100 阅读(18575) 评论(5) 推荐(4) 编辑
摘要: BrainFuck由Urban Müller在1993年创建,是经常被吐槽的语言,不过我觉得除了名字其它都还挺正常的,没错我觉得这个语言设计的很正常没有Fuck到我的脑子,大概是因为我根本就没有脑子吧… 语言简介: 使用指针寻址来操作内存,运行时需要0~32767个字节的内存空间,可循环寻址,数据单位是8bit,数据范围是0~255,可循环溢出。 8种操作符: > 将寻址指针向右移动一位 ... 阅读全文
posted @ 2018-06-27 23:33 CC11001100 阅读(711) 评论(0) 推荐(0) 编辑
摘要: 在CSDN上看到有人提问一段JS怎么解密,虽然已经是四年前的问题了,还是解一下。 原问题地址: 这段JS怎样解密? [问题点数:40分,结帖人seo2014] 这是楼主发出的原JS:/*ZlQEInL6A*/var/*jY10R0zzRU8*/GmjGBvOJh/*giquCfF2*/=/*kACnJn3eX*/\u0075\u006e\u0065\u0073\u0063\u0061\u0... 阅读全文
posted @ 2018-06-19 23:51 CC11001100 阅读(1034) 评论(1) 推荐(0) 编辑
摘要: 一、为什么需要邮箱混淆 先来解释一下什么是邮箱混淆,邮箱混淆就是对页面上的邮箱进行处理,使用JS加密、HTML隐藏元素干扰、图片显示等方式增加爬虫获取的难度。很多人都有过这种体验,当在网络上留下自己的邮箱之后,过不了多久这个邮箱就会收到一堆乱七八糟的垃圾邮件,都是一些广告、诈骗信息等。这是因为每时每刻都有爬虫在扫描互联网上的邮箱对其推送垃圾信息,应对这种情况,一般会有两种应对策略,一种就是尽量... 阅读全文
posted @ 2018-06-17 23:20 CC11001100 阅读(1190) 评论(1) 推荐(0) 编辑
摘要: 电影中的社工高手可以很轻易操控目标对象,使其愿意去做某项事(科幻片拍的像玄幻片…),虽然现实没有那么玄幻,但是真实的社工,或者你想要了解某个人,必然会有一个环节就是通过社交网络之类的对目标对象进行建模,即用一些特征来描述目标对象(也可想象为对人贴标签)。举一个例子我们平时如果加了一个新的QQ好友,可能会去QQ空间、腾讯微博等看下他以往的历史记录来确认他是个怎样的人,因为人的思维通常比较简单,所以当... 阅读全文
posted @ 2018-05-30 22:20 CC11001100 阅读(1522) 评论(0) 推荐(0) 编辑
摘要: 有时候需要应用具有开机自启的能力,或者更常见的场景是开机时悄悄在后台启动一个Service。 关键点: 1. Android系统在开机的时候会发送一条广播消息,只需要接收这条广播消息即可,不过需要注意的是接收开机广播也是需要权限的。 2. 需要使用静态注册,静态注册在应用没有运行的时候也能够接收广播。 3. 在接收开机广播的BroadcaseReceiver的onReceive方法中启动Act... 阅读全文
posted @ 2018-05-21 03:20 CC11001100 阅读(333) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 10 下一页