Apache Pig的一些基础概念及用法总结4(转)

2023-11-09

(26)错误“ERROR org.apache.pig.tools.grunt.Grunt – ERROR 2042: Error in new logical plan. Try -Dpig.usenewlogicalplan=false.”的可能原因
Pig的bug,详见此链接
其他原因。我遇到并解决了一例。具体的代码不便在此陈列,但是基本可以说是由于自己写的Pig代码对复杂数据结构的处理不当导致的,后来我尝试更改了一种实现方式,就绕过了这个问题。关于这点,确实还是要具体问题具体分析的,在这里没有实例的话,无法给大家一个明确的解决问题的指南。

(27)如何在Pig中使用正则表达式对字符串进行匹配
假设你有如下数据文件:

1
2
3
4
5
[root@localhost ~] # cat a.txt
1 http: //ui .qq.com /abcd .html
5 http: //tr .qq.com /743 .html
8 http: //vid .163.com /trees .php
9 http:auto.qq.com /us .php

现在要找出该文件中,第二列符合“*//*.qq.com/*”模式的所有行(此处只有前两行符合条件),怎么做?
Pig代码如下:

1
2
3
A = LOAD 'a.txt' AS (col1: int , col2: chararray);
B = FILTER A BY col2 matches '.*//.*\\.qq\\.com/.*' ;
DUMP B;

我们看到,matches关键字对 col2 进行了正则匹配,它使用的是Java格式的正则表达式匹配规则。
表示任意字符,表示字符出现任意次数;\. 对 进行了转义,表示匹配 这个字符;就是表示匹配 这个字符。
这里需要注意的是,在引号中,用于转义的字符 需要打两个才能表示一个,所以上面的 \\. 就是与正则中的 \. 是一样的,即匹配 这个字符。
文章来源:http://www.codelast.com/
最后输出结果为:

1
2
(1,http://ui.qq.com/abcd.html)
(5,http://tr.qq.com/743.html)

可见结果是正确的。

(28)如何截取一个字符串中的某一段
在处理数据时,如果你想提取出一个日期字符串的年份,例如提取出“2011-10-26”中的“2011”,可以用内置函数 SUBSTRING 来实现:

SUBSTRING
Returns a substring from a given string.
Syntax
SUBSTRING(string, startIndex, stopIndex)

下面举一个例子。假设有数据文件:

1
2
3
4
5
6
[root@localhost ~] # cat a.txt
2010-05-06  abc
2008-06-18  uio
2011-10-11  tyr
2010-12-23  fgh
2011-01-05  vbn

第一列是日期,现在要找出所有不重复的年份有哪些,可以这样做:

1
2
3
4
A = LOAD 'a.txt' AS (dateStr: chararray, flag: chararray);
B = FOREACH A GENERATE SUBSTRING (dateStr, 0, 4);
C = DISTINCT B;
DUMP C;

输出结果为:

1
2
3
(2008)
(2010)
(2011)

可见达到了我们想要的效果。
上面的代码太简单了,不必多言,唯一需要说明一下的是 SUBSTRING 函数,它的第一个参数是要截取的字符串,第二个参数是起始索引(从0开始),第三个参数是结束索引。
文章来源:http://www.codelast.com/
(29)如何拼接两个字符串
假设有以下数据文件:

1
2
3
4
5
[root@localhost ~] # cat 1.txt
abc 123
cde 456
fgh 789
ijk 200

现在要把第一列和第二列作为字符串拼接起来,例如第一行会变成“abc123”,那么使用CONCAT这个求值函数(eval function)就可以做到:

1
2
3
A = LOAD '1.txt' AS (col1: chararray, col2: int );
B = FOREACH A GENERATE CONCAT(col1, (chararray)col2);
DUMP B;

输出结果为:

1
2
3
4
(abc123)
(cde456)
(fgh789)
(ijk200)

注意这里故意在加载数据的时候把第二列指定为int类型,这是为了说明数据类型不一致的时候CONCAT会出错(你可以试验一下):

ERROR org.apache.pig.tools.grunt.Grunt – ERROR 1045: Could not infer the matching function for org.apache.pig.builtin.CONCAT as multiple or none of them fit. Please use an explicit cast.

所以在后面CONCAT的时候,对第二列进行了类型转换。
另外,如果数据文件内容为:

1
2
3
4
5
[root@localhost ~] # cat 1.txt
5 123
7 456
8 789
0 200

那么,如果对两列整数CONCAT:

1
2
A = LOAD '1.txt' AS (col1: int , col2: int );
B = FOREACH A GENERATE CONCAT(col1, col2);

同样也会出错

ERROR org.apache.pig.tools.grunt.Grunt – ERROR 1045: Could not infer the matching function for org.apache.pig.builtin.CONCAT as multiple or none of them fit. Please use an explicit cast.

要注意这一点。
有人可能会问:要拼接几个字符串的话怎么办?CONCAT 套 CONCAT 就要可以了(有点笨,但管用): CONCAT(a, CONCAT(b, c))

(30)如何求两个数据集的重合 & 不同的数据类型JOIN会失败
假设有以下两个数据文件:

1
2
3
4
5
[root@localhost ~] # cat 1.txt
123
456
789
200

以及:

1
2
3
4
[root@localhost ~] # cat 2.txt
200
333
789

现在要找出两个文件中,相同的数据有多少行,怎么做?这也就是所谓的求两个数据集的重合
用关系操作符JOIN,我们可以达到这个目的。在处理海量数据时,经常会有求重合的需求。所以JOIN是Pig中一个极其重要的操作。
在本例中,两个文件中有两个相同的数据行:789以及200,因此,结果应该是2。
我们先来看看正确的代码:

1
2
3
4
5
6
A = LOAD '1.txt' AS (a: int );
B = LOAD '2.txt' AS (b: int );
C = JOIN A BY a, B BY b;
D = GROUP C ALL ;
E = FOREACH D GENERATE COUNT (C);
DUMP E;

解释一下:
第一、二行是加载数据,不必多言。
第三行按A的第1列、B的第二列进行“结合”,JOIN之后,a、b两列不相同的数据就被剔除掉了。C的数据结构为:

1
C: {A::a: int,B::b: int}

C的数据为:

1
2
(200,200)
(789,789)

由于我们要统计的是数据行数,所以上面的Pig代码中的第4、5行就进行了计数的运算。
如果文件 2.txt 多一行数据“200”,结果会是什么?答案是:结果为3。这个时候C的数据为:

1
2
3
(200,200)
(200,200)
(789,789)

所以如果你要去除重复的,还需要用DISTINCE对C处理一下:

1
2
3
4
5
6
7
A = LOAD '1.txt' AS (a: int );
B = LOAD '2.txt' AS (b: int );
C = JOIN A BY a, B BY b;
uniq_C = DISTINCT C;
D = GROUP uniq_C ALL ;
E = FOREACH D GENERATE COUNT (uniq_C);
DUMP E;

这样得到的结果就是2了。
文章来源:http://www.codelast.com/
尤其需要注意的是,如果JOIN的两列具有不同的数据类型,是会失败的。例如以下代码:

1
2
3
4
5
6
A = LOAD '1.txt' AS (a: int );
B = LOAD '2.txt' AS (b: chararray);
C = JOIN A BY a, B BY b;
D = GROUP C ALL ;
E = FOREACH D GENERATE COUNT (C);
DUMP E;
在语法上是没有错误的,但是一运行就会报错:
ERROR org.apache.pig.tools.grunt.Grunt – ERROR 1107: Cannot merge join keys, incompatible types
这是因为a、b具有不同的类型:int和chararray。

(31)使用三目运算符“ ? : ”有时候必须加括号
假设有以下数据文件:

1
2
3
4
[root@localhost ~] # cat a.txt
5 8 9
6   0
4 3 1

其中,第二行的第二列数据是有缺失的,因此,加载数据之后,它会成为null。顺便废话一句,在处理海量数据时,数据有缺失是经常遇到的现象。
现在,我们如果要把所有缺失的数据填为 -1, 可以使用三目运算符来操作:

1
2
3
A = LOAD 'a.txt' AS (col1: int , col2: int , col3: int );
B = FOREACH A GENERATE col1, ((col2 is null )? -1 : col2), col3;
DUMP B;

输出结果为:

1
2
3
(5,8,9)
(6,-1,0)
(4,3,1)

((col2 is null)? -1 : col2) 的含义不用解释你也知道,就是当col2为null的时候将其置为-1,否则就保持原来的值,但是注意,它最外面是用括号括起来的,如果去掉括号,写成 (col2 is null)? -1 : col2,那么就会有语法错误:

ERROR org.apache.pig.tools.grunt.Grunt – ERROR 1000: Error during parsing. Encountered " "is" "is "" at line 1, column 36.
Was expecting one of (后面省略)
错误提示有点不直观。所以,有时候使用三目运算符是必须要使用括号的。

(32)如何补上缺失的数据
通过前面的文章,我们已经知道了如何按自己的需求补上缺失的数据,那么这里还有一个例子,可以让你多了解一些特殊的情况。
数据文件如下:

1
2
3
4
5
6
[root@localhost ~] # cat 1.txt
1 (4,9)
5
8 (3,0)
5 (9,2)
6

这些数据的布局比较怪,我们要把它加载成什么样的schema呢?答:第一列为一个int,第二列为一个tuple,此tuple又含两个int。加载成这样的模式不是为了制造复杂度,而是为了说明后面的问题而设计的。
同时,我们也注意到,第二列数据是有缺失的。
问题:怎样求在第一列数据相同的情况下,第二列数据中的第一个整数的和分别为多少?
例如,第一列为1的数据只有一行(即第一行),因此,第二列的第一个整数的和就是4。
但是对最后一行,也就是第一列为6时,由于其第二列数据缺失,我们希望它输出的结果是0。
先来看看Pig代码:

1
2
3
4
5
A = LOAD '1.txt' AS (a: int , b:tuple(x: int , y: int ));
B = FOREACH A GENERATE a, FLATTEN(b);
C = GROUP B BY a;
D = FOREACH C GENERATE group , SUM (B.x);
DUMP D;

结果为:

1
2
3
4
(1,4)
(5,9)
(6,)
(8,3)

我们注意到,(5,9) 这一行是由数据文件 1.txt 的第 2、4行计算得到的,其中,第2行数据有缺失,但这并不影响求和计算,因为另一行数据没有缺失。你可以这样想:一个包(bag)中有多个数,当其中一个为null,而其他不为null时,把它们相加会自动忽略null。
然而,第三行 (6,) 是不是太刺眼了?没错,因为数据文件 1.txt 的最后一行缺失了第二列,所以,在 SUM(B.x) 中的 B.x 为null就会导致计算结果为null,从而什么也输出不了。
这就与我们期望的输出有点不同了。我们希望这种缺失的数据不要空着,而是输出0。该怎么做呢?
文章来源:http://www.codelast.com/
想法1

1
D = FOREACH C GENERATE group , ((IsEmpty(B.x)) ? 0 : SUM (B.x));

输出结果为:

1
2
3
4
(1,4)
(5,9)
(6,)
(8,3)

可见行不通。从这个结果我们知道,IsEmpty(B.x) 为false,即B.x不是empty的,所以不能这样做。
想法2

1
D = FOREACH C GENERATE group , ((B.x is null ) ? 0 : SUM (B.x));

输出结果还是与上面一样!仍然行不通。这更奇怪了:B.x既非empty,也非null,那么它是什么情况?按照我的理解,当group为6时,它应该是一个非空的包(bag),里面有一个null的东西,所以,这个包不是empty的,它也非null。我不知道这样理解是否正确,但是它看上去就像是这样的。
想法3

1
2
3
D = FOREACH C GENERATE group , SUM (B.x) AS s;
E = FOREACH D GENERATE group , ((s is null ) ? -1 : s);
DUMP E;

输出结果为:

1
2
3
4
(1,4)
(5,9)
(6,-1)
(8,3)

可见达到了我们想要的结果。这与本文前面部分的做法是一致的,即:先得到含null的结果,再把这个结果中的null替换为指定的值。
有人会问:就没有办法在生成数据集D的时候,就直接通过判断语句来实现这个效果吗?据我目前所知是不行的,如果哪位读者知道,不妨告知。

(33)DISTINCT操作用于去重,正因为它要把数据集合到一起,才知道哪些数据是重复的,因此,它会产生reduce过程。同时,在map阶段,它也会利用combiner来先去除一部分重复数据以加快处理速度。

(34)如何将Pig job的优先级设为HIGH
嫌Pig job运行太慢?只需在Pig脚本的开头加上一句:

1
set job.priority HIGH;

即可将Pig job的优先级设为高了。

(35)Scalars can be only used with projections”错误的原因
这个错误提示比较不直观,光看这句话是不容易发现错误所在的,但是,只要你一Google,可能就找到原因了,例如这个链接里的反馈。
在这里,我也想用一个简单的例子给大家用演示一下产生这个错误的原因之一。
假设有如下数据文件:

1
2
3
4
5
6
7
8
9
[root@localhost ~]$ cat 1.txt
a 1
b 8
c 3
c 3
d 6
d 3
c 5
e 7

现在要统计:在第1列的每一种组合下,第二列为3和6的数据分别有多少条?
例如,当第1列为 c 时,第二列为3的数据有2条,为6的数据有0条;当第1列为d时,第二列为3的数据有1条,为6的数据有1条。其他的依此类推。
Pig代码如下:

1
2
3
4
5
6
7
8
A = LOAD '1.txt' AS (col1:chararray, col2: int );
B = GROUP A BY col1;
C = FOREACH B {
   D = FILTER A BY col2 == 3;
   E = FILTER A BY col2 == 6;
   GENERATE group , COUNT (D), COUNT (E);
};
DUMP C;

输出结果为:

1
2
3
4
5
(a,0,0)
(b,0,0)
(c,2,0)
(d,1,1)
(e,0,0)

可见结果是正确的。
文章来源:http://www.codelast.com/
那么,如果我在上面的代码中,把“D = FILTER A BY col2 == 3”不小心写成了“D = FILTER B BY col2 == 3”,就肯定会得到“Scalars can be only used with projections”的错误提示。
说白了,还是要时刻注意你每一步生成的数据的结构,眼睛睁大,千万不要用错了relation。

(36)什么是嵌套的FOREACH/内部的FOREACH
嵌套的(nested)FOREACH和内部的(inner)FOREACH是一个意思,正如你在本文第(35)条中所见,一个FOREACH可以对每一条记录施以多种不同的关系操作,然后再GENERATE得到想要的结果,这就是嵌套的/内部的FOREACH。

(37)错误“Could not infer the matching function for org.apache.pig.builtin.CONCAT”的原因之一
如果你遇到这个错误,那么有可能是你在多级CONCAT嵌套的时候,没有写对语句,例如“CONCAT(CONCAT(CONCAT(a, b), c), d)”这样的嵌套,由于括号众多,所以写错了是一点也不奇怪的。我遇这个错误的时候,是由于CONCAT太多,自己多写了一个都没有发现。希望我的提醒能给你一点解决问题的提示。

转载:http://www.codelast.com/


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache Pig的一些基础概念及用法总结4(转) 的相关文章

  • Apache 网络服务器启动时出现错误[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我刚刚切换
  • 显式删除会话cookie会产生什么影响?

    我使用 php session 来维护用户的会话 Session 在登录后创建 在注销或超时后销毁 我需要管理面板中的一个选项来强制注销任何用户 如果他在网站上处于活动状态 我怎样才能做到这一点 我正在考虑删除临时会话文件 这应该有效地破坏
  • 通过 AJP 将 REMOTE_USER 转发到 tomcat(例如用于 shibboleth)

    今天我刚刚遇到了以下问题 1 我将apache配置为基本身份验证 需要有效用户 这有效 2 我进一步配置 apache 将某些路径 在我的例子中为 idp 的请求转发到 tomcat servlet shibboleth IDP 结果是 s
  • 让 Rails 生产在端口 80 上运行

    我正在尝试让我的 Rails 应用程序在生产模式下运行 但遇到了一些困难 我正在使用 Passenger 和 apache 并运行 Ubuntu 12 04 我已经配置和创建了生产数据库 并设置了乘客 状态如下 rvmsudo passen
  • 使用代理时,React 应用程序正在不同位置查找静态文件

    我用过npx create react app my app创建一个反应应用程序 我用过的npm run build构建应用程序并使用它进行部署serve s build 我正在使用代理服务器来公开我的应用程序 我的 httpd 配置如下所
  • 如何在apache 2.4.6上安装apxs模块

    我刚刚用过apt get update我的 apache 已更新为2 4 6 我想安装 apxs 来编译模块 但收到此错误 The following packages have unmet dependencies apache2 pre
  • Microsoft SQL:CASE WHEN 与 ISNULL/NULLIF

    除了可读性之外 在防止 SQL 中的除以 0 错误时 使用 CASE WHEN 语句与 ISNULL NULLIF 相比还有什么显着的好处吗 CASE WHEN BeginningQuantity BAdjustedQuantity 0 T
  • 如何制作 tumblr 风格的个人资料 url

    我想知道 tumblr 是如何做到这样的个人资料网址 http www username tumblr com http username tumblr com 我知道我们可以更改个人资料网址 http www website com pr
  • C++ new * char 不为空

    我有一个问题 我在 ASIO 中开发服务器 数据包采用尖头字符 当我创建新字符时 例如char buffer new char 128 我必须手动将其清理为空 By for int i 0 i lt 128 i buffer i 0x00
  • 如何让Apache服务index.php而不是index.html?

    如果我将以下行放入index html文件 使 Apache 包含index php file 参观index html页面向我显示了这个 这是为什么 为什么它实际上不包含 PHP 文件 正如其他人指出的那样 您很可能没有 html设置为处
  • 为什么我的 Apache2::Log 输出用 \n 替换换行符?

    我在 apache2 mod perl 下设置了多个虚拟主机 我用的是ErrorLog指令为每个虚拟主机获取单独的错误日志 仅当我使用 Apache2 Log 时 这才按预期工作 警告 只会记录到常规错误日志中 这样就可以了 最后 但还存在
  • DBus 是我要找的吗?

    我需要一个Linux上的IPC系统 我的要求是 面向数据包 消息 能够处理点对点和一对多通信 没有层次结构 没有服务器和客户端 如果一个端点崩溃 必须通知其他端点 现有 Linux 发行版的良好支持 Apache 存在 绑定 用于创建动态页
  • 如何让 mod_wsgi 在 Mac 上运行?

    几个小时以来 我一直在尝试在 Mac 上安装最新版本的 mod wsgi 3 3 我使用的是 Snow Leopard 并且有系统附带的 Apache Apache 2 2 15 和 Python 2 6 1 r261 67515 版本 我
  • Google reCAPTCHA 响应中没有 Access-Control-Allow-Origin 的 405 错误

    我正在尝试通过 google 实现 reCaptcha 但是当我调用下面提到的 api 时验证失败 在 reCaptcha admin 中我提到过本地主机在域列表中 google com recaptcha api siteverify 以
  • 无法在 Java/Apache HttpClient 中处理带有垂直/管道栏的 url

    例如 如果我想处理这个网址 post new HttpPost http testurl com lists lprocess action LoadList 401814 1 Java Apache 不允许我这么做 因为它说竖线 是非法的
  • 有人成功地使用 PHP 5.4.4 和 APC 3.1.10 提供高流量服务吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在出错之前如何检查 nilClass 的未定义方法?

    我目前正在使用以下内容 20 p Status p 但是 我仍然收到以下错误 ActionView TemplateError undefined method status for nil NilClass on line 20 of a
  • 在 Django admin 中保存包含非 ASCII 字符的 ImageField 时出现 UnicodeEncodeError

    我试图在 django admin inlines 中上传图像文件 并在尝试上传文件名包含非 ascii 字符的文件时收到 UnicodeEncodeError File usr local lib python2 6 site packa
  • 为什么C++中没有“NULL引用”?

    我正在阅读 C 常见问题解答 8 6 什么时候应该使用引用 什么时候应该使用指针 http www parashift com c faq lite refs vs ptrs html 特别是以下声明 可以时使用引用 必要时使用指针 上述情
  • 如何在 apache 中访问唯一 ID?

    如何访问 apache 跟踪每个请求的 unique id 我想在它调用的任何 php 脚本中跟踪它 并记录每个请求 我删除了以下行的评论http conf file LoadModule unique id module libexec

随机推荐

  • 协议栈中绑定流程的一点认识

    2011年4月27日 初学者关于协议栈中绑定流程的一点认识 本人刚接触zigbee不久 在学习中将不断记录每天的进步 期待大家的指导 在这里指出我还是参考了ZStack CC2530 2 3 1 1 4 0 Projects zstack
  • Motion Detection

    Frame Difference Method FDM Background Subtraction Method BSM B is background image Adaptive Background Substraction Met
  • 在Windows上编译 CEF3 且加入mp3/mp4的支持

    现在因为工作需要 为了得到支持mp3 mp4的cef32和64位版本 需要编译cef3 本次编译版本是3239 6 0 3239 132 一 编译条件 1 可用于稳定的下载网络 2 Win7或者更新的系统 必须64位 至少8GB的RAM 我
  • Android实现网络请求方法

    Android网络请求 1 安卓开发网络请求可谓是安卓开发的灵魂 如果你不会网络请求 那么你开发的应用软件就是一具没有灵魂的枯骨 在安卓开发中进行网络请求和java中的网络请求有异曲同工之妙 但是安卓软件毕竟的安装在我们手机上的 而平常的应
  • 快递运输【Java】

    快递运输 Java 题目描述 一辆运送快递的货车 运送的快递均放在大小不等的长方体快递盒中 为了能够装载更多的快递 同时不能让货车超载 需要计算最多能装多少个快递 快递的体积不受限制 快递数最多1000个 货车载重最大50000 输入描述
  • 白山头讲PV:calibre中如何extract net

    在进行lvs分析的时候 能够对net进行trace 具有非常重要的意义 本文详细介绍如何在calibre中对一条net进行trace并highlight 如何trace trace的操作非常简单 右击你要trace的net的一部分 shap
  • opencv_python答题卡自动判卷

    opencv python答题卡自动判卷 设定答题卡模板 该图像为答题卡的答题区域 黑色边框是为了能够在各种环境中轻易的检测 左部分和上部分的黑色矩形 是为能够定位到答题选项的坐标而设置 同时题目数量为20 3共60道选择题 在进行批改试卷
  • 解释一下https://so.csdn.net/so/chat/这个网站的源码

    很抱歉 我不能直接访问网站的源代码 然而我可以告诉你一般情况下 网站的源代码是构建网站的基础 它包含了网页的 HTML CSS 和 JavaScript 代码 这些代码指导浏览器如何呈现网页的内容和样式 如果您对网站的源代码感兴趣 可以使用
  • 【Vue】中 $attrs 中的使用方法

    https www cnblogs com wuxianqiang p 10452662 html
  • p标签在div中垂直居中且文本左对齐

    父元素div设置 text align center p元素设置 display inline block vertical align middle text align left
  • 【转】C++中的返回值优化

    C 中的返回值优化 在这边文章里用到了以下编译器和操作系统 大家请自行安装 uname ar Linux debian 4 9 0 3 amd64 1 SMP Debian 4 9 30 2 deb9u3 2017 08 06 x86 64
  • ABAP range 用法

    转自http www sapjx com abap range table html1 Range Table 概述 Range Table 为 SAP R 3系统标准内表的一种 结构与 Selection Table 一致 由 SIGN
  • RLE 多线程算法 c实现

    include
  • "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child raise child_exception OSError:

    在用KITTI数据时出错
  • Docker 高级篇

    文章目录 第一章 Docker复杂安装详说 1 1 安装mysql主从复制 1 2 安装redis集群 哈希槽分区进行亿级数据存储 1 2 1 相关面试题 1 2 2 集群搭建步骤 第二章 Dockerfile解析 2 1 是什么 2 2
  • 浅谈斜率优化

    DP模型 形如 f i max f j w i j quad 1 le j
  • PHP的弱类型比较

    php弱类型比较 php中其中两种比较符号 先将字符串类型转化成相同 再比较 先判断两种字符串的类型是否相等 再比较 前者为弱比较 后者为弱比较 若在某种情况下不注意利用会导致漏洞的出现 例子 攻防世界lottery 进入页面 浏览后查看
  • android studio常用快捷键设置

    android开发工具androidstudio的熟练使用是提高我们开发效率的必备条件 现对android studio使用过程中的一些小技巧进行总结 1 命名规范 android开发过程中使用java语言 对变量的命名遵循驼峰命名法 一般
  • Tracy JS 小笔记 - 数据类型, typeof,类型转换

    数据类型 原始值 引用值 原始值 不可改变的原始值 是存储在栈里面 stack 是个有底儿的箱子结构先进后出 原始值 分为五大类 Number Boolean String undefined null var a 1 我们数据的类型天生就
  • Apache Pig的一些基础概念及用法总结4(转)

    26 错误 ERROR org apache pig tools grunt Grunt ERROR 2042 Error in new logical plan Try Dpig usenewlogicalplan false 的可能原因