SAP ABAP 基础语法超详细
1.表声明
Tables: 表名[,表名]. 声明多个表时可用逗号分隔
当你声明了一个数据表的同时,系统也同时自动生成了一个和数据表同名的结构,结构的变量集等于数据表里面的字段。
2.定义变量
Data: v1[(l)] [type t] [decimals d] [value 'xxx'].
v1 是变量名。
(l) 是变量的长度。
t 是数据类型。
d 是小数位。
‘xxx’ 是缺省值。
如:data num(10) type p decimals 3 value ‘1.12’.
数据类型 | 描述 | 缺省长度 | 最大长度 | 可用字符 | 缺省值 |
---|---|---|---|---|---|
C | 字符型 | 1 | 65536 | 任意字符 | 空 |
N | 数字文本 | 1 | 65536 | 0 ~ 9 | 0 |
D | 日期 | 8(固定) | - | 0 ~ 9 | 00000000 |
T | 时间 | 8(固定) | - | 0 ~ 9 | 000000 |
X | 十六进制数 | 1 | 65536 | 0 ~ 9,A ~ F |
数据类型 | 描述 | 缺省长度 | 最大长度 | 最大小数位 | 缺省值 |
---|---|---|---|---|---|
I | 整型 | 4(固定) | - | 0 | 0 |
P | 十进制数 | 8 | 16 | 14 | 0 |
F | 浮点型 | 8 | 8 | 15 | 0.1 |
3.常用算术操作符:
算术符 | 描述 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
** | 取幂 |
DIV | 整除 |
MOD | 取模 |
4.常用比较操作:
比较操作 | 描述 |
---|---|
v1 = v2 | 等于 |
v1 <> v2 | 不等于 |
v1 > v2 | 大于 |
v1 < v2 | 小于 |
v1 >= v2 | 大于等于 |
v1 <= v2 | 小于等于 |
v1 between v2 and v3 | 在……之间 |
not v1 between v2 and v3 | 不在……之间 |
5.赋值语句
total = 10. mess = 'this is a test! '.如果字符串中包括 ' 号,用 '' 进行付值,如:mess = 'this is a ''test''! '.
6.IF语句
if i = 2.write 'i 等于 2'.[else.write 'i 不等于 2'. ]endif.
7.CASE语句
case i. 类似于VFP中的DO CASE语句when 1. write 'i = 1'.when 2. write 'i = 2'.[when others. write 'i <> 1 and i <> 2'.]endcase.
8.DO语句
do [n] times. 类似于VFP中的FOR语句[执行代码] enddo.
9.WHILE语句
while [条件]. 类似于VFP中的DO WHILE语句[执行语句]endwhile.
10.从数据库中取数据集
select * from 数据表 [where 条件].[操作语句]endselect.如:select * from t000 [where mandt < 200]. write: / t000-mandt,t000-mtext. endselect.
11.取出单行记录
select single * from 数据表 [where 条件]. 注:仅取出符合条件的第一行记录select single 字段 from 数据表 into 变量 [where 条件].
12.WRITE语句
write: [/][定位][数据1][,[定位] [数据2]]……
注意:[/] 为插入一行空行,注意单独write一个[/]和在其它数据之前加 [/] 的效果是不一样的,单独的write[/]在插入空行后光标定位在空行的下面,在其它数据前加[/]在插入空行后光标定位于所插的空行
13.ULINE语句
uline. "在当前行下一行显示一直线。uline n. "在当前行第n列显示一直线。uline /n. "在当前行下一行第n列显示一直线。uline 和 write ‘|’ 一起使用可实现画表格的功能。
14.SKIP语句
SKIP. "光标跳到下一行。SKIP n. "光标跑到下n行。SKIP to line n. "光标跳到第n行。
15.定义常量
作用:定义一些不会改变的数据,如一年的月数、圆围率等。
语法:constants c1[( l )] [type t] [decimals d] value 'xxx'. 或者:constants c1 like cv value 'xxx'. 例如:constants pi type p value ‘3.14’.
16.定义结构
(1)基本结构
data: begin of 结构名, f1[(l)] [type t] [decimals d] [value 'xxx'], f2[(l)] [type t] [decimals d] [value 'xxx'], ……end of 结构名.
(2)结构中包含另一结构
data: begin of 结构名, f1[(l)] [type t] [decimals d] [value 'xxx'], f2[(l)] [type t] [decimals d] [value 'xxx'], f3 like 另一结构名,……end of 结构名.
(3)定义结构的另一种写法:
data begin of 结构名. data f1[(l)] [type t] [decimals d] [value 'xxx']. data f2[(l)] [type t] [decimals d] [value 'xxx']. [include structure 另一个结构.] data end of 结构名.
注:此种写法data后可以加冒号也可以不加
例如:
data:begin of person,educ(10) type c,train(10) type c,end of person.data:begin of employee,code(10) type c,name(10) type c,department(20) type c,address like person, "person为另一个结构名……end of employee.employee-code = '1001'.employee-name = '张三'. employee-department = 'IT部'.employee-person-educ = '本科'employee-person-train = '工程师'write: / employee-code,employee-name,employee-department,employee-person-educ.write: / employee.
17.TYPES语句
将结构定义成数据类型,这样在程序中可以象定义一个变量那样简单地定义一个结构。语法同定义结构,只是把data换成types即可。如:
types: begin of employee,code(10) type c, name(10) type c,end of employee.types: address(50) type c.data: emp type employee. "使用TYPES定义的结构类型data: myadd type address. "使用TYPES定义的变量类型emp-code = '1001'.emp-name = '张三'. myadd = 'this is a address'.write: / emp.write: / myadd.
18.LIKE语句
tables: t000.data: p(20) type c.data: p1 like t000. " p1拥有了和t000相同的结构data: p2 like t000-mandt. " p2的定义等同于t000中mandt这个字段的定义data: p3 like p. "p3的定义和p相同,为20长度的字符串data: t111 like t000 occurs 0 with header line. "定义一个和t000一样的内表
19.输入参数
要让一个变量成为可输入的参数,只需在定义变量时把data改为parameters 即可。
parameters p1 like v1 ... ... [default 'xxx'] [obligatory] [lower case] [as checkbox] [radiobutton group g].
-
使用
DEFAULT
后缀为参数指定缺省值。 -
使用
obligatory
后缀来标识参数为必输项。 -
输入参数默认会把输入的字符转为大写,如果要去掉该转换,使用
lower case
后缀。 -
使用
as checkbox
后缀使参数以复选框的形式出现。使用复选框的参数一定为长度为1的字符串,其内容只能为’X’或’ ',如:
parameters:p1 as checkbox.parameters:p2 as checkbox default 'X'.
- 使用radiobutton group g后缀使输入参数以单选框的形式出现。使用单选框的参数一定为长度为1的字符串,其内容只能为’X’或’ ',如:
parameters:p1 radiobutton group 1.parameters:p2 radiobutton group 1.parameters:p3 radiobutton group 2.parameters:p4 radiobutton group 2 default 'X'.
20.分块语句
selection-screen begin of block 块名 with frame title [text-(titlename)].parameters: v1(10) type c.parameters: aa like t000-mandt. "将出现圆钮选择项,也可以自定义圆钮选择项parameters: v2(10) type c matchcode object zhlp."这是自定义的圆钮选择项,在SE38中创建搜索帮助,zhlp为创建的搜索帮助名称selection-screen end of block 块名.selection-screen uline. "在输入屏幕上画线
21.定义内表
内表的定义和结构很相似,所差别只是内表需要指定记录的条数。
data: begin of 内表名 occurs n, f1[(l)] [type t] [decimals d] [value 'xxx'], f2[(l)] [type t] [decimals d] [value 'xxx'], ... end of 内表名.
-
n为该内表的记录条数,不过当内表的记录数超过了该数值后,内表会自动的填大这个数目,定义该数值只是为了系统的效率考虑,如果n为0,则系统会在一开始就分配8KB的空间。
-
内表同时也可以以已存在的数据表或结构进行定义,格式为:
data: 内表名 like [结构名或数据表名] occurs n."例如:(使用like语句通常需要加上with header line,否则没有表头)data: it1 like st1 occurs 10. "st1 为一结构data: it2 like t000 occurs 0. "t000 为一数据表
22. 往内表中添加记录
append 内表名. "把表头的数据插入内表。append 结构名 to 内表名. "把结构的数据插入内表,两者的结构必须一样。
23.用LOOP读取内表数据
loop at it [into wa] [from m] [to n] [where exp]. Write: / it-字段1, it-字段2, ……endloop.
-
it 为内表名
-
wa 为结构名,如果不填,则读到表头。
-
m,n为开始和结束行,如果不填则为从第一条到最后条。
-
exp 为取记录的条件。
24.用READ读取内表数据
READ功能为读取内表的某条记录。
read table it [into wa] [index i | with key keyexp]
-
it为内表。
-
wa为将把数据读入的结构,如果没指定,则缺省为表头。
-
i 是要读取的记录编号,即第几条记录。
-
keyexp 是取记录的条件。如果合条件的记录有不止一行,则取第一行的记录。
-
以系统参数 sy-subrc 是否为 0 判断读取是否成功,sy-subrc 为 0 则读取操作成功。
25.把数据库的记录读入内表
(1)逐条记录的读入内表
select * from t000.append t000 to it.endselect.
(2)把整批数据读入内表
select * from 数据表 into table 内表 [where *exp*]. "结构需要相同select mandt mtext from t000 into table it where mandt > 100. "结构不同的情况select mandt mtext from t000 appending table it. "在内表中追加记录
26.CLEAR清空表头和表记录
clear 内表. "如果内表没有表头的话,该语句将会把内表的记录清空clear 内表[ ]. "[ ]必须紧跟内表,且[ ]间不能有空格
27.DELETE删除内表记录
delete it (a) [index n] "删除指定行记录(b) [from i] [to j] "删除指定范围记录(c) [where exp] "删除符合条件记录
-
it为内表名
-
n,i,j 为记录编号
-
exp 为搜索条件
28.REFRESH删除内表记录
refresh 内表.
该语句删除所有记录但保留表头,内表所占用的内存仍保留。
29.FREE删除内表记录
free 内表.
该语句删除所有记录但保留表头,内表所占用的内存也被释放。
30.在内表中插入记录
insert [wa into] it [index n].
-
wa 为结构。
-
it为内表。
-
n 为记录编号。
记录会插入到编号的位置,原来的记录则向下移一位。
31.修改内表记录
modify it [from wa] [index n] [transporting c1 c2 ... [where exp]]
-
it 为内表
-
wa 为结构,缺省为使用表头
-
n 为记录编号
-
c1 c2 为内表中的字段,指明要更新哪些字段,缺省为全部更新
-
exp 为条件
32.对内表进行排序
sort it [by f1 [ascending|descending].
-
it 为内表
-
f1 为要排序的字段
-
ascending 升序排列(默认)
-
descending 降序排列
33.内表的控制语句
sum. "对内表中可计算字段进行合计,只能作用于LOOP中。at first. "当从内表中读取第一条记录的时候,会触发at first事件,At first 常用于画表头的作用,或者做表头的合计。at last. "和at first相反,at last是在读取最后一条记录的时候触发at new of p1. "当一条记录指定字段的值和上一条记录的相应字段的值有改变时,触发该事件at end of p1. "当一条记录指定字段的值和下一条记录的相应字段的值有改变时,触发该事件on change of it-p1 [or it-p2 ……]. "当指定字段与上一条字段有所改变时,触发该事件,on change无分组合计的功能
34.循环跳转语句
exit. "用于跳出当前循环,当运行到exit时,将直接运行循环后面的代码,当exit在循环之外时,将直接结束程序的运行。continue. "跳过循环下面的语句然后继续执行下一个循环。check exp. "作用与continue相类似,但check有一个判断条件,仅判断条件不为真时,才执行跳过循环下面的语句然后继续执行下一个循环。
35.常用系统变量
sy-datum "当前日期sy-uzeit "当前时间sy-uname "当前用户sy-subrc "当前操作返回值(0为成功)sy-mandt "当前的客户机sy-tabix "内表当前行的记录号
36.子程序的定义
form s [tables t1 t2 ...][using u1 value(u2) ...][changing c1 value(c2) ...]. \--- endform.
-
s 为子程序名。
-
t1、t2、u1、u2、c1、c2 为子程序的传递参数。
37.子程序的调用
perform s [tables t1 t2 ...] [using u1 u2 ...] [changing c1 c2 ...].
-
s 为子程序名。
-
t1、t2、u1、u2、c1、c2 为子程序的传递参数。
-
可用一个
perform
同时调用几个子程序,子程序间用逗号
分隔,如 perform s1,s2.
38.子程序的参数传递
(1)传递一个参数指针
变量存储于内存中的一块空间,变量指针为程序指出了内存的位置,传递变量指针将使子程序中的变量和作为参数的变量使用同一个存储区域,也就是说,子程序中的参数的内容变了,其相应的传递参数的内容也跟着一起改变。
使用using v1
及 changing v1
均为传递变量指针。
(2)传递一个变量值
和传递变量指针不同,传递变量值仅仅把变量的内容传给子程序,子程序中相应的变量存储于另外的内存空间,也就是说,子程序中变量的值改变了,其相应的传递参数的内容还是和原来一样。
使用using value(v1)
为传递变量值。
(3)传递一个变量值并返回
传递一个变量值并返回把一个变量值传给子程序,在子程序运行结束时,把子程序中变量值的内容传给调用它的变量。与传递变量指针不同,原变量内容是在子程序运行完成之后才改变,在子程序运行过程序中保持不变。
使用changing value(v1)
传递一个变量值并返回。
(4)传递一个内表
内表同样可以作为一个变量进行传递,内表使用指针的模式进行传递。
使用tables it structure x
或tables it like x
传递内表,x为结构或表。
39.常用事件
(1)initialization事件
程序最开始发生的事件,可以进行初始数据的处理
REPORT z_temp.tables:t001.parameters:ch(50) type c.initialization. "该语句不能包含在selection-screen语句中ch = 'this is a test for the initialization!'.start-of-selection.write:ch.
以上代码在程序运行开始就为变量ch进行付值,该事件在输入参数之前就已经发生。
(2)start-of-selection事件
在输入参数完成之后,运行该事件,在该事件中主要进行数据的处理
(3)end-of-selection事件
发生在start-of-selection之后的事件,在该事件中主要进行数据的输出显示
REPORT z_temp.tables:t001.data:ch(50) type c.end-of-selection.write:/ 'end-of-selection'.start-of-selection.write:/ 'start-of-selection'.
不管按什么顺序书写代码,start-of-selection里的代码一定会在end-of-selection之前处理。
(4)top-of-page事件
该事件主要处理表头的数据,在top-of-page中显示的内容一定会出现在每一页的开始
REPORT z_temp no standard page heading line-count 6(2).start-of-selection.do 100 times.write:/ 'this is a test!'.enddo.top-of-page.write:/ 'top-of-page'.uline.
(5)end-of-page事件
该事件主要处理表尾的数据,在end-of-page中显示的内容一定会出现在每一页的表尾,注意必须有定义页尾留空行数的时候才可显示该事件中显示的内容
REPORT z_temp no standard page heading line-count 6(2).start-of-selection.do 100 times.write:/ 'this is a test!'.enddo.end-of-page.uline.write:/ 'end-of-page'.write:/ 'end-of-page2'.
40.跳出事件的方法
可以使用exit,check,stop事件跳过事件,在不同的事件中,以上的语句会有不同的表现。
在所有事件中:
-
check离开当前事件并继续进行下一个事件的处理。
-
stop离开当前事件并直接跳到end-of-selection事件。
在start-of-selection之前的事件:
- Exit和check都离开当前事件继续处理下一个事件。
在start-of-selection之中及之后的事件:
-
Exit立即进行输出的显示。
-
Check离开当前事件并继续处理下一个事件。
41.补充
- 查询内表有多少条记录:
describe table tmp_gongsi lines iReccount.
- 查询一个表的字段条件属于另一个内表字段值的记录:
select aa from 表2 into i_tab1.select aa from 表1 into 临时表 for all entries ini_tab1 where aa = i_tab1-aa.concatenate 'aaa' 'bbb' into 'aaabbb'. "字符串相加REUSE_ALV_GRID_DISPLAY "输出表格函数"EQ LE GE CP BT NE LT GT NP NB"
42.常用函数
sy-uzeit:获取系统时间。 sy-datum:获取系统日期。 shift string:左移字符串。长度减1。 concatenate:连接字符串。 split:拆分字符串。 search:查询字符串。 replace:替换字符串。 condense:删除多余的空格。 translate:转换字符格式,如将'ABC'转换为'abc' convert text:创建一个可排序的字符串。 overlay:用一个字符串覆盖另一个字符串。 strlen:字符串长度。 abs:取绝对值。 cos、sin、tan:取三角函数值。 acos、asin、atan:反三角函数。 cosh、sinh、tanh:双曲函数。 exp:e的幂函数。 Log:底数为e的对数。 log10:底数为10的对数。 sqrt:平方根。 sign:返回参数符号。 trunc:返回参数的整数部分。 frac:输入参数的小数部分。 ceil:返回不小于参数的最小整数。 floor:返回不大于参数的最小整数。
相关文章:

SAP ABAP 基础语法超详细
1.表声明 Tables: 表名[,表名]. 声明多个表时可用逗号分隔当你声明了一个数据表的同时,系统也同时自动生成了一个和数据表同名的结构,结构的变量集等于数据表里面的字段。 2.定义变量 Data: v1[(l)] [type t] [decimals d] [v…...

html学习3(表格table、列表list)
1、html表格由<table>标签来定义。 <thead>用来定义表格的标题部分,其内部用 <th > 元素定义列的标题,可以使其在表格中以粗体显示,与普通单元格区分开来。<tbody>用来定义表格的主体部分,其内部用<t…...

【SpringBoot】85、SpringBoot中Boolean类型数据转0/1返回序列化配置
在 SpringBoot 中,前端传参数 0,1,后端可自动解析为 boolean 类型,但后端返回前端 boolean 类型时,却无法自动转换为 0,1,所以我们需要自定义序列化配置,将 boolean 类型转化为 0,1 1、类型对应 boolean 类型有false,true对应的 int 类型0,12、序列化配置 import com.f…...

hbase优化:客户端、服务端、hdfs
hbase优化 一.读优化 1.客户端: scan。cache 设置是否合理:大scan场景下将scan缓存从100增大到500或者1000,用以减少RPC次数使用批量get进行读取请求离线批量读取请求设置禁用缓存,scan.setBlockCache(false)以指定列族或者列进行…...

docker安装memcached
查找容器是否有该镜像存在 docker search memcached拉取镜像 docker pull memcached创建容器 docker create --name memcache1 memcached或者映射一下端口 docker create -p 11211:11211 --name memcache1 memcached启动 docker start memcache1指定容器的 IP docker net…...

Redis 客户端有哪些?
文章目录 JedisLettuceRedisson最佳实践 - 到底用哪个? Redis 最常见的 Java 客户端有两个,Jedis 和 Lettuce,高级客户端有 Redisson,见下图(图源 Clients | Redis) Jedis Github地址:redis/j…...

smbms 超市订单管理系统设计与实现计划表
smbms 超市订单管理系统 项目描述 smbms-JDBC:不使用 SSM 框架进行开发bookStore:学完ssm框架后的整合项目smbms-SSM:使用 SSM 框架开发 项目记录 smbms-JDBC 2023-10-28:第一天,搭建环境,写好基本的工…...

如何解决制造业数字化改造的障碍?
制造业的数字化转型可能是一个复杂且具有挑战性的过程,但解决以下障碍有助于为成功实施铺平道路: 抵制变革:数字化转型中最常见的挑战之一是员工的抵制,尤其是那些习惯传统方法的员工。为了克服这一问题,组织需要培养一…...

代码随想录算法训练营day49
文章目录 Day49买卖股票的最佳时机题目思路代码贪心算法动态规划法(推荐) 买卖股票的最佳时机II题目思路代码 Day49 买卖股票的最佳时机 121. 买卖股票的最佳时机 - 力扣(LeetCode) 题目 给定一个数组 prices ,它的第 i 个元素 prices[i]…...

云计算与大数据——部署Kubernetes集群+完成nginx部署(超级详细!)
云计算与大数据——部署Kubernetes集群完成nginx部署(超级详细!) 部署 Kubernetes 集群的基本思路如下: 准备环境: 选择适合的操作系统:根据需求选择适合的 Linux 发行版作为操作系统,并确保在所有节点上进行相同的选…...

Maven 打包项目后,接口识别中文乱码
背景 项目在Idea里面运行,调用接口发送中文消息正常,用Maven打包项目后,运行jar包,调用接口发送中文出现乱码。 解决方法 1.Idea编译配置 2.如果更改了上述配置之后还是没有效果,则在运行jar包的前面加上 -Dfile.en…...

计算机视觉项目中的文件批量操作与文件批量预处理
计算机视觉项目中的文件批量操作与文件批量预处理 目录 数据集制作文件批量重命名文件批量移动将文件批量按照一定格式进行重命名修改xml文件内容的方法 引言 在计算机视觉项目中,文件批量操作和文件批量预处理是必不可少的步骤。它们涉及处理大量的图像文件&am…...

PHP数组转对象和对象转数组
PHP数组转对象和对象转数组 <?php function array_to_object($arr){$obj new stdClass();foreach ($arr as $key > $val) {if (is_array($val) || is_object($val)) {$obj->$key array_to_object($val);} else {$obj->$key $val;}}return $obj; } function o…...

前后端分离开发中的传参
1.post请求,后台代码使用RequestBody注解接收前端传过来的参数 PostMapping("/saveHosp") public Result SaveHosp(RequestBody HospitalSet hospitalSet){//此处省略中间代码......} 此时前端传过来的参数须为JSON格式,前端VUE传参数为&…...

mount: wrong fs type, bad option, bad superblock报错 ubuntu
问题描述 mount: wrong fs type, bad option, bad superblock Ubuntu无法挂载磁盘。 原因 很大概率是你的硬盘是NTFS。 解决 sudo apt install ntfs-3g即可。...

【图像分类】CNN+Transformer结合系列.3
介绍两篇图像分类的论文:ResMLP(arXiv2305),MetaFormer(CVPR2022),两者都与Transformer有关系,前者基于transformer结构的特点设计ResMLP,后者认为宏观架构才是Transform…...

IDA分析实例android_crackme/EasyJNI/Transformers/pingan2
文章目录 第一个实例android_crackme将32位的android_server放到手机目录下给android_server赋予root更改root用户组运行android_serverpc端端口转发安装apk,并运行app打开32位IDA并attach到进程先使用jadx看java层逻辑定位要分析的方法IDA 给两个方法打断点 第二个…...

拿捏--->求一元二次方程的根
文章目录 题目描述算法思路代码示例 题目描述 从键盘输入a, b, c的值,编程计算并输出一元二次方程ax2 bx c 0的根,当a 0时,输出“Not quadratic equation”,当a ≠ 0时,根据△ b2 - 4ac的三种情况计算并输出方程…...

深入浅出之Docker Compose详解
目录 1.Docker Compose概述 1.1 Docker Compose 定义 1.2 Docker Compose产生背景 1.3 Docker Compose 核心概念 1.4 Docker Compose 使用步骤 1.5 Docker Compose 常用命令 2. Docker Compose 实战 2.1 Docker Compose下载和卸载 2.2 Docker Compose 项目概述 2.3 Do…...

spring5源码篇(12)——spring-mvc请求流程
spring-framework 版本:v5.3.19 文章目录 一、请求流程1、处理器映射器1.1、 RequestMappingHandlerMapping1.2、获取对应的映射方法1.3、添加拦截器 2、获取合适的处理器适配器3、通过处理器适配器执行处理器方法3.1、拦截器的前置后置3.2、处理器的执行3.2.1 参数…...

风辞远的科技茶屋:来自未来的信号枪
很久之前,有位朋友问我,现在科技资讯这么发达了,你们还写啊写做什么呢? 我是这么看的。最终能够凝结为资讯的那个新闻点,其实是一系列事情最终得出的结果,而这个结果又会带来更多新的结果。其中这些“得出”…...

MongoDB教程-8
ObjectId 在之前的所有章节中,我们一直在使用MongoDB的Object Id。在本章中,我们将了解ObjectId的结构。 ObjectId是一个12字节的BSON类型,具有以下结构-- 1. 前4个字节代表自unix epoch以来的秒数 接下来的3个字节是机器标识符 接下来的2…...

Redis 理论部分
前面写了很多redis项目,今天在通过redis的理论加深redis的了解,顺便做个总结 Redis 理论部分 1.redis 速度快的原因 纯内存操作单线程操作,避免频繁的上下文切换以及资源争用的问题,多线程需要占用更多的cpu资源采用非阻塞I/O多…...

Android—Monkey用法
文章目录 Monkey知识 Monkey知识 介绍 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软…...

几个影响 cpu cache 性能因素及 cache 测试工具介绍
》内核新视界文章汇总《 文章目录 1 cache 性能及影响因素1.1 内存访问和性能比较1.2 cache line 对性能的影响1.3 L1 和 L2 缓存大小1.4 指令集并行性对 cache 性能的影响1.5 缓存关联性对 cache 的影响1.6 错误的 cacheline 共享 (缓存一致性)1.7 硬件设计 2 cpu cache benc…...

Java从入门到精通(二)· 基本语法
Java从入门到精通(二) 基本语法 一 变量 1.字面量 计算机是用来处理数据的,字面量就是告诉程序员:数据在程序中的书写格式。 特殊的字符: \n 表示换行, \t 表示一个制表符,即一个tab 2.变量…...

云安全攻防(三)之 面向云原生环境的安全体系
面向云原生环境的安全体系 根据云原生环境的构成,面向云原生环境的安全体系可包含三个层面的安全体制,它们分别是容器安全、编排系统安全和云原生应用安全,下面,我们逐步来讲解这三点: 容器安全 容器环境࿰…...

BGP汇总和破解水平分割
一,BGP的宣告问题 在BGP协议中每台运行BGP的设备上,宣告本地直连路由在BGP协议中运行BGP协议的设备来宣告,通过IGP学习到的,未运行BGP协议设备产生的路由; 在BGP协议中宣告本地路由表中路由条目时,将携带本…...

BUG:pm2启动verdaccio报错:Invalid or unexpected toke
输入命令: pm2 state verdaccio 问题描述: pm2 logs verdaccio报错翻译:数据格式错误 导致我呢提原因,没有找到运行文件, 发现问题:因为命令默认查找verdaccio是去系统盘查找。 解决方式 1:…...

Zookeeper笔记
为什么要使用Zookeeper dubbo需要一个注册中心,而Zookeeper是我们在使用Dubbo是官方推荐的注册中心 Zookeeper介绍 Zookeeper的集群机制 Zookeeper是为了其他分布式程序提供服务的,所以不能随便就挂了。Zookeeper的集群机制采取的是半数存活机制。也…...