大家都知道接口测试框架有很多,到底哪个最好用呢?他们都有哪些优缺点?今天我们就来评测一下这些框架。
Java Rest-assured:是使用代码来实现接口的请求,封装业务流程,对于公司的业务支持比较高,灵活度很强,可以通过代码的方式打造自己公司的接口自动化框架,上手有点难度,需要有Java 编程基础,才可以使用。
Python + Request 框架:是使用代码来实现接口的请求,封装业务流程,对于公司的业务支持比较高,可以根据业务的灵活度来定制化开发接口框架,再加上Jenkins 就可以持续化集成。上手有点难度,需要有Python 编码的基础,才可以使用。
Robot Framework
机器人框架是一个通用的开放源码自动化框架,用于验收测试、验收测试驱动开发(ATDD)和机器人过程自动化(RPA)。它具有易于使用的表格测试数据语法,并利用关键字驱动的测试方法.它的测试功能可以通过用Python或Java实现的测试库来扩展,用户可以使用与创建测试用例相同的语法从现有的测试库中创建新的更高级别的关键字 。
HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求,中文地址 https://cn.httprunner.org/ 官网已经有很详细的介绍。
robot framework
优点
关键字驱动,自定义用户关键字。
支持测试日志和报告生成。
支持系统关键字开发,可扩展性好。
支持数据库操作。
缺点
接口测试用例写起来不简洁。
需要掌握特定语法。
*** Settings ***
Library RequestsLibrary
Library Collections
*** Test Cases ***
test_get_event_list # 查询发布会(GET请求)
${payload}= Create Dictionary eid=1
Create Session event http://127.0.0.1:8000/api
${r}= Get Request event /get_event_list/ params=${payload}
Should Be Equal As Strings ${r.status_code} 200
log ${r.json()}
${dict} Set variable ${r.json()}
#断言结果
${msg} Get From Dictionary ${dict} message
Should Be Equal ${msg} success
${sta} Get From Dictionary ${dict} status
${status} Evaluate int(200)
Should Be Equal ${sta} ${status}
结果:不考虑,没人愿意这么写接口用例。
postman + Newman + Jenkins
postman + Newman + Jenkins 实现接口自动化框架,postman 方便日常的调试,非常的方便,测试的断言,设置前置条件,环境变量,response 参数提取 非常方便,我在日常工作中经常使用 postman进行接口的调试。postman高级的功能可以付费进行定制化(我还没有试验过付费的功能,在日常工作中 免费版本就已经够使用的了)。官网文档 https://learning.getpostman.com/docs/
JMeter
Jmeter 可以做于接口自动化工具,也可以用于性能测试,在性能测方面很强大,我在工作中用的不多,Vue+Flask 搭建自己公司的接口测试平台,可以自由定制化自己公司的业务,实现公司特殊的需求,接口测试平台,对于测试的开发能力有要求,前端 Vue ,后端 Flask & Django 框架,代码能力要求高,前后端的技术都需要懂。
JMeter
优点
支持参数化
不需要写代码
缺点
创建接口用例效率不高。
不能生成查看每一个接口执行情况的测试报告。
总结:不考虑,接口编写不方便,最主要是不能生成测试报告,如果做接口性能的话可以考虑。
HttpRunner
优点:
基于YAML/JSON格式,专注于接口本身的编写。
接口编写简单
生成测试报告
接口录制功能。
缺点:
没有编辑器插件对语法校验,容易出错。
官方文档没有详细的说明。
扩展不方便。
[
{
"config": {
"name": "testcase description",
"variables": [],
"request": {
"base_url": "http://127.0.0.1:5000",
"headers": {
"User-Agent": "python-requests/2.18.4"
}
}
}
},
{
"test": {
"name": "test case name",
"request": {
"url": "/api/get-token",
"headers": {
"device_sn": "FwgRiO7CNA50DSU",
"user_agent": "iOS/10.3",
"os_platform": "ios",
"app_version": "2.8.6",
"Content-Type": "application/json"
},
"method": "POST",
"date": {"sign": "958a05393efef0ac7c0fb80a7eac45e24fd40c27"}
},
"validate": [
{"eq": ["status_code", 200]},
{"eq": ["headers.Content-Type", "application/json"]},
{"eq": ["content.success", true]},
{"eq": ["content.token", "baNLX1zhFYP11Seb"]}
]
}
}]
总结:可以考虑,至于接口数据的初始化可能需要单独处理。
gauge
BDD行为驱动测试框架——gauge
优点:
行为文件与脚本文件分离,本质上实现了数据驱动。
功能强大灵活,本质上还用Python写接口用例。
自动生成测试报告。
VS Code有支持插件
缺点
门槛略高,需要了解BDD的用法。
需要会markdworn语法
行为描述文件:
## test post request
* post "http://httpbin.org/post" interface
|key | status_code|
|------|-----------|
|value1|200 |
|value2|200 |
|value3|200 |
测试脚本:
……
@step("post interface ")
def test_get_request(url, table):
values = []
status_codes = []
for word in table.get_column_values_with_name("key"):
values.append(word)
for word in table.get_column_values_with_name("status_code"):
status_codes.append(word)
for i in range(len(values)):
r = requests.post(url, data={"key": values[i]})
result = r.json()
assert r.status_code == int(status_codes[i])
总结:推荐使用,BDD有一定门槛,看测试人员的学些能力和接受速度。
Unittest+Request+HTMLRunner
利用现有的框架和库自己定制:Unittest+Request+HTMLRunner
优点:
足够灵活强大: 分层测试、数据驱动、测试报告,集成CI...
缺点:
有一定的学习成本
数据文件:
{
"test_case1": {
"key": "value1",
"status_code": 200
},
"test_case2": {
"key": "value2",
"status_code": 200
},
"test_case3": {
"key": "value3",
"status_code": 200
},
"test_case4": {
"key": "value4",
"status_code": 200
}}
测试用例:
import requests
import unittest
from ddt import ddt, file_data
@ddtclass InterfaceTest(unittest.TestCase):
def setUp(self):
self.url = "http://httpbin.org/post"
def tearDown(self):
print(self.result)
@file_data("./data/test_data_dict.json")
def test_post_request(self, key, status_code):
r = requests.post(self.url, data={"key": key})
self.result = r.json()
self.assertEqual(r.status_code, status_code)
总结:推荐使用,代码相对简单,功能足够灵活。
我花了两天时间整理这些框架,其实重点就是了解HttpRunner 和 gauge 。
HttpRunner 没有编辑器插件,本身就是一个YAML/JSON配置文件,所以配置写错了,但只要是合法的YAML/JSON格式,也看不出来,只有运行的过后才知道。就像你用记事本写代码一样,只有运行了才知道代码有没有写错。
另外,扩展起来也不是特别方便,单独用python实现一些函数:在json文件中
{"device_sn": "${gen_random_string(15)}"}
以这样的方式引用gen_random_string() 函数。
gauge我已经分享过两篇基础文章了,虽然用BDD拿来做接口理念不搭,但并不是不可以,唯一的缺点是用BDD来描述接口行为不合适,其他的都没毛病,可以参数化,断言写起来也简单,测试报告也漂亮,本质上还是用Python实现一些功能,所以非常灵活。
unittest + requests + HTMLTestRunner是我最熟悉的方案,几乎没什么短板。以前通过这种方案写过很多测试用例,这次把ddt加上似乎更完美了。
总结
对于单接口,变化不多的可以使用 Postman、 Jmeter、HttpRunner框架就可以满足了,需要多个接口组合满足于一些场景的,需要自己编写代码来实现了 比如:
登录,提取token,查询商品ID 订单ID 进行购买商品,支付,以及查询用户购买订单状态
对于一些业务场景涉及多个接口的,需要使用代码的方式来查询接口需要的前置信息,如 token, 商品ID,订单ID,订单状态,以实现业务场景的接口功能测试。
你可能感兴趣的:(全面评测哪个接口自动化测试框架最好用?)
- python 读excel每行替换_Python脚本操作Excel实现批量替换功能
weixin_39646695
python读excel每行替换
Python脚本操作Excel实现批量替换功能大家好,给大家分享下如何使用Python脚本操作Excel实现批量替换。使用的工具Openpyxl,一个处理excel的python库,处理excel,其实针对的就是WorkBook,Sheet,Cell这三个最根本的元素~明确需求原始excel如下我们的目标是把下面excel工作表的sheet1表页A列的内容“替换我吧”批量替换为B列的“我用来替换的
- 男士护肤品哪个牌子好?十大男士护肤品排行榜
高省APP珊珊
很多男生意识到护肤的必要性,开始着手护肤,但不知道该选哪个男士护肤品品牌使用好。目前市面上很多男士护肤品品牌,可谓琳琅满目,让人眼花缭乱。男士挑选护肤品时,根据自己皮肤需求去正规渠道挑选合适的知名护肤品比较放心靠谱。高省APP,是2021年推出的平台,0投资,0风险、高省APP佣金更高,模式更好,终端用户不流失。【高省】是一个自用省钱佣金高,分享推广赚钱多的平台,百度有几百万篇报道,也期待你的加入
- 三菱PLC全套学习资料及应用手册
good2know
本文还有配套的精品资源,点击获取简介:三菱PLC作为工业自动化领域的核心设备,其系列产品的学习和应用需要全面深入的知识。本次资料包为学习者提供从基础到进阶的全方位学习资源,包括各种型号PLC的操作手册、编程指南、软件操作教程以及实际案例分析,旨在帮助用户系统掌握PLC的编程语言、指令系统及在各类工业应用中的实施。1.三菱PLC基础知识入门1.1PLC的基本概念可编程逻辑控制器(PLC)是工业自动化
- 15个小技巧,让我的Windows电脑更好用了!
曹元_
01.桌面及文档处理第一部分的技巧,主要是围绕桌面的一些基本操作,包括主题设置、常用文档文件快捷打开的多种方式等等。主题换色默认情况下,我们的Win界面可能就是白色的文档界面,天蓝色的图表背景,说不出哪里不好看,但是就是觉得不够高级。imageimage说到高级感,本能第一反应就会和暗色模式联想起来,如果我们将整个界面换成黑夜模式的话,它会是这样的。imageimage更改主题颜色及暗色模式,我们
- 月光下的罪恶(5)
允歌玖沐
5.被孤立顾纨是转校过来的,进入学校后,回头率很高“诶诶诶,你看那女生,哪个系的?”“不知道没见过。”“看那样,一看就是个胆小的货。”顾纨当做没听到,更狠的话她都听过,更何况女生们耍心眼?“他爸爸是做黑生意的,估计女儿也不是什么好的,你以后离他一家子远点。”她走向自己要上课的教室,一进门,所有人的目光看向她,顾纨若无其事的走进教室,开始上课。下课,一群人站起来,但是很显然,她周围的一圈人都不愿意和
- 贝多芬诞辰250周年纪念
万千星河赴远方
就算不是古典音乐爱好者,你也一定听说过贝多芬。作为古典音乐史上最伟大的音乐家之一,他不仅是古典主义风格的集大成者,同时也是浪漫主义风格的开创者。贝多芬肖像画(1813年)贝多芬的一生共创作了9部交响曲、36首钢琴奏鸣曲、10部小提琴奏鸣曲、16首弦乐四重奏、1部歌剧及2部弥撒曲等等。数量虽然不及前辈海顿、莫扎特多,但他几乎改造了当时所有的音乐表达形式,赋予了它们全新的价值,对后世音乐的发展产生了极
- 日更50天有什么收益?
星湾二宝
坚持在平台上日更50天了,平台也为我生成了日更50天徽章,小开心一下这份坚持。日更50天徽章那坚持50天都有哪些收益呢?收益一,就是最直观的那些钻和贝,我这边确实不太高,但是这些贝足够支撑我保持会员的资格,能够在发文的时候帮助友友们去除广告,方便阅读。钻和贝收益二,文章的收获,日更50天,坚持写作3.7万文字,书写的文字也从开始的流水账/碎碎念逐渐加入自己的思考和观点。以前,一个念头会一晃而过,如
- 高省邀请码哪个级别最高?高省原始高级邀请码500888
凌风导师
高省是杭州长孚科技有限公司开辟的一个项目(高省APP),已获数千万投资,主打外交电商+新零售,提供淘宝好省京东等主流电商途径的大额优惠券(直接在淘宝等途径购买是没有该优惠券的)。用户们可以利用这些软件享受折扣买东西优惠,一起来看看购物省钱app网上买东西省钱的软件有哪些吧!网购省钱软件靠谱吗包围淘宝等途径产品的左右,也便是你可以大概在高省买你的确想买的任何产品,并且享受额定优惠,优惠力度为-(大部
- 在线人数统计业务设计(场景八股文)
业务问题在当经的网站中,在线人数的实时统计已经是一个必不可少的模块了,并且该统计功能最好能够按不同的时间间隔做的统计,现在需要你设计一个在线人数统计的模块,你应该怎么进行设计的呢?背景一个网校下会有多个学员。目前平台大概有十个,平台对应的网校大概五十几个,平均一个网校会有5w个用户,预计总人数为200w,最该学员的在线人数在10w左右。设计思路最开始的时候,想到的就是使用mysql直接实现,但是明
- Aop +反射 实现方法版本动态切换
需求分析在做技术选型的时候一直存在着两个声音,mongo作为数据库比较mysql好,mysql做为该数据比mongo好。当然不同数据库都有有着自己的优势,我们在做技术选型的时候无非就是做到对数据库的扬长避短。mysql最大的优势就是支持事务,事务的五大特性保证的业务可靠性,随之而来的就是事务会产生的问题:脏读、幻读、不可重复度,当然我们也会使用不同的隔离级别来解决。(最典型的业务问题:银行存取钱)
- 上半年居民消费榜出炉!这个城市的人最能花
BBM优选官方
上半年居民消费榜出炉哪个地方的人最能花钱?国家统计局公布的数据显示上海上半年居民人均可支配收入32612元居民人均消费支出21321元均为全国最高成为最能挣钱也最能花钱的城市1上海人均消费支出全国第一国家统计局公布的31省份居民人均消费支出数据显示,上海、北京、天津上半年居民人均消费支出排名前三。其中,上海上半年居民人均消费支出21321元,位居榜首。上海也是上半年全国仅有的居民人均消费支出突破2
- 深入理解汇编语言子程序设计与系统调用
网安spinage
汇编语言开发语言汇编算法
本文将全面解析汇编语言中子程序设计的核心技术以及系统调用的实现方法,涵盖参数传递的多种方式、堆栈管理、API调用等关键知识点,并提供实际案例演示。一、子程序设计:参数传递的艺术1.寄存器传参:高效简洁.386.modelflat,stdcalloptioncasemap:none.dataxdd5;定义变量ydd6sumdd?.code;函数定义:addxy1addxy1procpushebpmo
- 最佳好女婿赵倩王城(精彩热门小说)最佳好女婿赵倩王城&全集目录免费阅读
海边书楼
最佳好女婿赵倩王城(精彩热门小说)最佳好女婿赵倩王城&全集目录免费阅读主角:赵倩王城简介:女人叫赵倩,三十八岁,很漂亮,----阅读全文小说内容请翻阅文章最底部---王城根本没有想到,女友的妈妈在自乐的时候,叫的竟然是自己的名字。女人叫赵倩,三十八岁,很漂亮,腰很细,腿很长,王城有些怪异赵倩为什么会放过自己,但赵倩没有发怒,却也让王城长长的舒了一口气,坐到沙发上点了根烟抽了起来。“王城,什么时候回
- 我最喜欢的公众号
素颜创始人小云
一年多前,也是因为工作的原因。认识了她,她是我七个人物法其一,她在我心里也是很敬佩的一个女孩子。她会讲一些护肤知识,哪些产品好用哪些不好用而他讲解的产品都是我跃跃欲试的。图片发自App她做的每一篇文章都很精美,可以吸引到我从头看到尾,看每一个字都会很珍惜很期待,做事也特别的认真仔细。去年出了一本《活得漂亮》我也看了她的创业故事,很厉害!她的认真及敬业精神我觉得是很难学得来的,现在怀孕3个月了,依然
- 善吃五色五味,女人更妖娆,想漂亮享受健康美味吃起来
余老师讲健康
善吃五色五味,女人更妖娆我们所说的五色五味是指具有赤、青、黄、白、黑五种颜色以及酸、辛、甘、苦、咸五种味道的食物。其实五味和五色与人体的五脏对应,养生必养五脏,通过五味、五色的食物可以调养人的容颜。一、赤色、苦味入心——养颜,面色红润有句话这么说,“会吃的女人更漂亮,贪吃的女人变糟粕。”经过科学、合理搭配的五色五味饮食,就是最天然、最安全的美容药方。赤色——抗衰老,增强免疫力,改善血液循环。赤色即
- 云集怎么赚钱?云集APP分享购物赚钱攻略
古楼
云集app怎么赚钱?云集app作为是一个全面的电商导购平台,提供诸如淘宝、京东、拼多多等各大平台的优惠券,其他同类型的导购平台相比,更加的全面,线上线下全面出击。如果你想通过云集赚钱,那你可以把这款APP推荐给淘宝(10亿用户)、拼多多(3亿用户)、京东(1亿用户)使用,那你能赚到他们购物返佣,也可以自己购物领优惠券能省不少钱,以后还有更多的商家与粉象合作,这么免费的App人人都需要,很好推广。至
- 《自控力》P158
迷糊笑
作者:凯利•麦格尼格尔图片发自App金句:众多研究显示,自我批评会降低积极性和自控力,而且也是最容易导致抑郁的因素。它不仅耗尽了“我要做”的力量,还耗尽了“我想要”的力量。相反,自我同情则会提升积极性和自控力,比如,在压力和挫折面前支持自己、对自己好一些。感想:我当年抑郁是不是也是因为这样?图片发自App
- 【阳光️️☀️苑长 幸福365】7月9日《就此刻确知》
阳光苑长
音频文字原创|阳光苑长图片发自App一夜的梦境,情景相当的壮烈,那是前前后后多个情节的叠加,那是因为极其在意在正义的,完满的,在早已经确认——万古之先已经确认了一切美好的事物当中。当有假象,当有一些不好的势力,试图想去破坏夺取的时候,在梦境中一直得力的征战,为着身边最挚爱的朋友,为他,为所有美好的事业而守望。守望,英文叫做watcher,就是观望者。图片发自App在这个毫不奇怪,事实上一直发生的征
- 02-Breakout靶机攻略
ZLlllllll0
02-Breakout靶机
第一步搭建靶机下载地址:https://download.vulnhub.com/empire/02-Breakout.zip下载好了之后直接用VM打开然后右击虚拟机,把网络连接改成nat模式第二步,信息收集然后开启虚拟机,左上角编辑,虚拟网络编辑器里面看一下靶机是哪个网段。打开kali用nmap扫一下的这个网段的存活主机,也就是扫除这个靶机的具体ip地址nmap192.168.109.1/24扫
- 淘宝内部优惠劵领取教程,淘宝内部优惠劵软件使用方法!
测评君高省
淘宝优惠券一般分为2种:第1种:是你在淘宝上买东西经常能看到的那种店铺优惠券,商家主动将一些有门槛的优惠券摆在旁边,这种券一般需要你满足消费金额或者去邀请好友才能减个几块钱。第2种:就是淘宝内部优惠券,商家为了打造爆款时会低价促销从而发放一些低价优惠券,只要下单就能立减,而且优惠的金额都非常高。但是为了控制成本并设置一定的销售目标,一旦达成预订销售额,就会停止发送优惠券。优惠劵导购平台哪个好?今天
- 面对冷漠的成人世界,愿你做一个内心强大的人
小西夜语
—在漫漫深夜里,遇见最真实的你—一个人的强大,无外乎是内心的强大,说到做一个内心强大的人,小西还是不得不提到丰子恺的漫画《无宠不惊过一生》。漫画中,还是小西喜欢的那一句——“不乱于心,不困于情。不畏将来,不念过往。如此,安好。”想来要成为一个内心强大的人,应该就是要做到这样吧!不乱于心,终日面对各种事务,接收各种信息,能够不被扰乱内心,依然坚定自己的想法,这就是内心强大。如今,我们都谈焦虑,因为总
- 第八课: 写作出版你最关心的出书流程和市场分析(无戒学堂复盘)
人在陌上
今天是周六,恰是圣诞节。推掉了两个需要凑腿的牌局,在一个手机,一个笔记本,一台电脑,一杯热茶的陪伴下,一个人静静地回听无戒学堂的最后一堂课。感谢这一个月,让自己的习惯开始改变,至少,可以静坐一个下午而不觉得乏味枯燥难受了,要为自己点个赞。我深知,这最后一堂课的内容,以我的资质和毅力,可能永远都用不上。但很明显,无戒学堂是用了心的,毕竟,有很多优秀学员,已经具备了写作能力,马上就要用到这堂课的内容。
- 全面解读设备状态监测
xiatianxy
设备状态监测设备状态监测
长期以来,基于巡检和定期维护维修保养的方式,对电机\泵类\风机等旋转类设备的故障维修,大多都是在设备问题出现之后的事后维护或者定期的预防性维护,前者无法减少或避免设备故障的发生,后者则存在维修不足或维修过剩等问题。另外,日常维护工作严重依赖于人的责任心和经验,一旦出现人员更替,设备的运营管理压力加大,并且现场丰富的维护保养经验也很难传承到新人手中。维护利器——设备状态监测设备状态监测,即对运行中的
- 父母拼尽一切孩子却不领情?一定要学会这一招
四叶草_add9
中原焦点团队李金梅坚持分享第601天2021.5.28中国的父母是世界上最累的父母,从孩子出生,他们就开始了操劳的父母生涯:孩子年幼时,照顾他的吃喝拉撒;孩子上学后,忙完工作回到家还要辅导孩子的功课,辅导不了要报辅导班;孩子长大成人了,父母仍然要操心孩子的工作和婚姻;孩子结婚的房子,父母帮着买;孩子生了孩子,父母帮着带……父母的大半生都把孩子排在自己前面,一切为了孩子,最后却往往落不着好:孩子要么
- 大城市和小县城
平凡只要
教育随便一个公立初中老师都是排名靠前的师范类,硕士起步。衣服,随便哪个品牌,一般四折左右才会下手,小地方真的没有这么低折扣。日化用品,这些同样,内地的价格贵的多。牛奶这些更不要说,内地贵,大城市超市经常打折,毕竟人流量大,可以借此吸引人。说小城市消费低的,其实是对生活没有什么要求的,就是吃米饭+青菜+少量荤菜就能满足的。如果要天天牛奶当水喝,肉类当主食,穿要讲品牌,绝对一线消费低。就是房价太高,一
- 语文教学反思 ——一单元测试
一抹_绿茶香
我喜欢上语文课,现在最开心的时刻也就是课上那45分钟了。它可以让我和孩子们骑上骏马驰骋在知识的草原上,可以让我们乘着巨轮在书籍的海洋里任意航行……周三举行了一单元测试,今晚一单元的所有内容暂时告一段落。对于这单元我有如下思考:本单元的主题词是“读书”,几篇课文都是围绕着读书来编排的。里面有讲读书乐趣的,讲读书方法的,还有孩子们第一次接触的访谈录等。微笑班级从一年级下学期就开始阅读“闲书”,所以教学
- 求解——妊娠纹霜哪个牌子好?皮肤专家推荐的热门秘诀!
zhangxing0100
妊娠纹会严重影响女性的美观,那孕期的女性朋友该如何避免减少妊娠纹的出现呢?下面美腹丽人小编为大家分享了预防妊娠纹的方法,赶紧一起来学习吧!一、预防妊娠纹的饮食习惯1、多食用对皮肤内胶原纤维有利的食品来增强皮肤的弹性。2、控制糖分摄入,少吃色素含量高的食物。3、早晚两杯脱脂牛奶,多食用维丰富的蔬菜、水果和富含维生素及矿物质的食物,增加细胞膜的通透性和皮肤的新陈代谢功能。4、正确的喝水习惯可以提速皮肤
- 环境搭建 | Python + Anaconda / Miniconda + PyCharm 的安装、配置与使用
本文将分别介绍Python、Anaconda/Miniconda、PyCharm的安装、配置与使用,详细介绍Python环境搭建的全过程,涵盖Python、Pip、PythonLauncher、Anaconda、Miniconda、Pycharm等内容,以官方文档为参照,使用经验为补充,内容全面而详实。由于图片太多,就先贴一个无图简化版吧,详情请查看Python+Anaconda/Minicond
- Android 基础知识:Android 应用权限详解
流水mpc
android
这篇文章为大家系统的梳理一下Android权限相关的知识,在日常开发中,我们都用过权限,但是对于权限的一些细节我们可能掌握的还不够全面,这篇文章会全面的为大家介绍权限相关的知识。当然,本篇文章依然是参考了Google的官方文档:应用权限。本文目录一、认识Android权限(一)Android系统为什么需要权限?Android系统设置权限的目的是保护Android用户的隐私。对于用户的敏感数据And
- Android 媒体播放开发完全指南
安卓开发者
AndroidJetpackandroid媒体python
引言在当今移动应用生态中,媒体播放功能已成为许多应用的核心组成部分。无论是音乐流媒体应用、视频平台、播客客户端还是游戏应用,都需要强大的媒体播放能力。Android平台提供了丰富的API来支持各种媒体播放场景。本文将全面介绍Android媒体播放的开发技术,从基础到高级功能实现。一、Android媒体播放基础1.1支持的媒体格式Android原生支持多种媒体格式:音频:MP3、AAC、FLAC、W
- Java常用排序算法/程序员必须掌握的8大排序算法
cugfy
java
分类:
1)插入排序(直接插入排序、希尔排序)
2)交换排序(冒泡排序、快速排序)
3)选择排序(直接选择排序、堆排序)
4)归并排序
5)分配排序(基数排序)
所需辅助空间最多:归并排序
所需辅助空间最少:堆排序
平均速度最快:快速排序
不稳定:快速排序,希尔排序,堆排序。
先来看看8种排序之间的关系:
1.直接插入排序
(1
- 【Spark102】Spark存储模块BlockManager剖析
bit1129
manager
Spark围绕着BlockManager构建了存储模块,包括RDD,Shuffle,Broadcast的存储都使用了BlockManager。而BlockManager在实现上是一个针对每个应用的Master/Executor结构,即Driver上BlockManager充当了Master角色,而各个Slave上(具体到应用范围,就是Executor)的BlockManager充当了Slave角色
- linux 查看端口被占用情况详解
daizj
linux端口占用netstatlsof
经常在启动一个程序会碰到端口被占用,这里讲一下怎么查看端口是否被占用,及哪个程序占用,怎么Kill掉已占用端口的程序
1、lsof -i:port
port为端口号
[root@slave /data/spark-1.4.0-bin-cdh4]# lsof -i:8080
COMMAND PID USER FD TY
- Hosts文件使用
周凡杨
hostslocahost
一切都要从localhost说起,经常在tomcat容器起动后,访问页面时输入http://localhost:8088/index.jsp,大家都知道localhost代表本机地址,如果本机IP是10.10.134.21,那就相当于http://10.10.134.21:8088/index.jsp,有时候也会看到http: 127.0.0.1:
- java excel工具
g21121
Java excel
直接上代码,一看就懂,利用的是jxl:
import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import
- web报表工具finereport常用函数的用法总结(数组函数)
老A不折腾
finereportweb报表函数总结
ADD2ARRAY
ADDARRAY(array,insertArray, start):在数组第start个位置插入insertArray中的所有元素,再返回该数组。
示例:
ADDARRAY([3,4, 1, 5, 7], [23, 43, 22], 3)返回[3, 4, 23, 43, 22, 1, 5, 7].
ADDARRAY([3,4, 1, 5, 7], "测试&q
- 游戏服务器网络带宽负载计算
墙头上一根草
服务器
家庭所安装的4M,8M宽带。其中M是指,Mbits/S
其中要提前说明的是:
8bits = 1Byte
即8位等于1字节。我们硬盘大小50G。意思是50*1024M字节,约为 50000多字节。但是网宽是以“位”为单位的,所以,8Mbits就是1M字节。是容积体积的单位。
8Mbits/s后面的S是秒。8Mbits/s意思是 每秒8M位,即每秒1M字节。
我是在计算我们网络流量时想到的
- 我的spring学习笔记2-IoC(反向控制 依赖注入)
aijuans
Spring 3 系列
IoC(反向控制 依赖注入)这是Spring提出来了,这也是Spring一大特色。这里我不用多说,我们看Spring教程就可以了解。当然我们不用Spring也可以用IoC,下面我将介绍不用Spring的IoC。
IoC不是框架,她是java的技术,如今大多数轻量级的容器都会用到IoC技术。这里我就用一个例子来说明:
如:程序中有 Mysql.calss 、Oracle.class 、SqlSe
- 高性能mysql 之 选择存储引擎(一)
annan211
mysqlInnoDBMySQL引擎存储引擎
1 没有特殊情况,应尽可能使用InnoDB存储引擎。 原因:InnoDB 和 MYIsAM 是mysql 最常用、使用最普遍的存储引擎。其中InnoDB是最重要、最广泛的存储引擎。她 被设计用来处理大量的短期事务。短期事务大部分情况下是正常提交的,很少有回滚的情况。InnoDB的性能和自动崩溃 恢复特性使得她在非事务型存储的需求中也非常流行,除非有非常
- UDP网络编程
百合不是茶
UDP编程局域网组播
UDP是基于无连接的,不可靠的传输 与TCP/IP相反
UDP实现私聊,发送方式客户端,接受方式服务器
package netUDP_sc;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.Ine
- JQuery对象的val()方法执行结果分析
bijian1013
JavaScriptjsjquery
JavaScript中,如果id对应的标签不存在(同理JAVA中,如果对象不存在),则调用它的方法会报错或抛异常。在实际开发中,发现JQuery在id对应的标签不存在时,调其val()方法不会报错,结果是undefined。
- http请求测试实例(采用json-lib解析)
bijian1013
jsonhttp
由于fastjson只支持JDK1.5版本,因些对于JDK1.4的项目,可以采用json-lib来解析JSON数据。如下是http请求的另外一种写法,仅供参考。
package com;
import java.util.HashMap;
import java.util.Map;
import
- 【RPC框架Hessian四】Hessian与Spring集成
bit1129
hessian
在【RPC框架Hessian二】Hessian 对象序列化和反序列化一文中介绍了基于Hessian的RPC服务的实现步骤,在那里使用Hessian提供的API完成基于Hessian的RPC服务开发和客户端调用,本文使用Spring对Hessian的集成来实现Hessian的RPC调用。
定义模型、接口和服务器端代码
|---Model
&nb
- 【Mahout三】基于Mahout CBayes算法的20newsgroup流程分析
bit1129
Mahout
1.Mahout环境搭建
1.下载Mahout
http://mirror.bit.edu.cn/apache/mahout/0.10.0/mahout-distribution-0.10.0.tar.gz
2.解压Mahout
3. 配置环境变量
vim /etc/profile
export HADOOP_HOME=/home
- nginx负载tomcat遇非80时的转发问题
ronin47
nginx负载后端容器是tomcat(其它容器如WAS,JBOSS暂没发现这个问题)非80端口,遇到跳转异常问题。解决的思路是:$host:port
详细如下:
该问题是最先发现的,由于之前对nginx不是特别的熟悉所以该问题是个入门级别的:
? 1 2 3 4 5
- java-17-在一个字符串中找到第一个只出现一次的字符
bylijinnan
java
public class FirstShowOnlyOnceElement {
/**Q17.在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
* 1.int[] count:count[i]表示i对应字符出现的次数
* 2.将26个英文字母映射:a-z <--> 0-25
* 3.假设全部字母都是小写
*/
pu
- mongoDB 复制集
开窍的石头
mongodb
mongo的复制集就像mysql的主从数据库,当你往其中的主复制集(primary)写数据的时候,副复制集(secondary)会自动同步主复制集(Primary)的数据,当主复制集挂掉以后其中的一个副复制集会自动成为主复制集。提供服务器的可用性。和防止当机问题
mo
- [宇宙与天文]宇宙时代的经济学
comsci
经济
宇宙尺度的交通工具一般都体型巨大,造价高昂。。。。。
在宇宙中进行航行,近程采用反作用力类型的发动机,需要消耗少量矿石燃料,中远程航行要采用量子或者聚变反应堆发动机,进行超空间跳跃,要消耗大量高纯度水晶体能源
以目前地球上国家的经济发展水平来讲,
- Git忽略文件
Cwind
git
有很多文件不必使用git管理。例如Eclipse或其他IDE生成的项目文件,编译生成的各种目标或临时文件等。使用git status时,会在Untracked files里面看到这些文件列表,在一次需要添加的文件比较多时(使用git add . / git add -u),会把这些所有的未跟踪文件添加进索引。
==== ==== ==== 一些牢骚
- MySQL连接数据库的必须配置
dashuaifu
mysql连接数据库配置
MySQL连接数据库的必须配置
1.driverClass:com.mysql.jdbc.Driver
2.jdbcUrl:jdbc:mysql://localhost:3306/dbname
3.user:username
4.password:password
其中1是驱动名;2是url,这里的‘dbna
- 一生要养成的60个习惯
dcj3sjt126com
习惯
一生要养成的60个习惯
第1篇 让你更受大家欢迎的习惯
1 守时,不准时赴约,让别人等,会失去很多机会。
如何做到:
①该起床时就起床,
②养成任何事情都提前15分钟的习惯。
③带本可以随时阅读的书,如果早了就拿出来读读。
④有条理,生活没条理最容易耽误时间。
⑤提前计划:将重要和不重要的事情岔开。
⑥今天就准备好明天要穿的衣服。
⑦按时睡觉,这会让按时起床更容易。
2 注重
- [介绍]Yii 是什么
dcj3sjt126com
PHPyii2
Yii 是一个高性能,基于组件的 PHP 框架,用于快速开发现代 Web 应用程序。名字 Yii (读作 易)在中文里有“极致简单与不断演变”两重含义,也可看作 Yes It Is! 的缩写。
Yii 最适合做什么?
Yii 是一个通用的 Web 编程框架,即可以用于开发各种用 PHP 构建的 Web 应用。因为基于组件的框架结构和设计精巧的缓存支持,它特别适合开发大型应
- Linux SSH常用总结
eksliang
linux sshSSHD
转载请出自出处:http://eksliang.iteye.com/blog/2186931 一、连接到远程主机
格式:
ssh name@remoteserver
例如:
ssh
[email protected]
二、连接到远程主机指定的端口
格式:
ssh name@remoteserver -p 22
例如:
ssh i
- 快速上传头像到服务端工具类FaceUtil
gundumw100
android
快速迭代用
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOExceptio
- jQuery入门之怎么使用
ini
JavaScripthtmljqueryWebcss
jQuery的强大我何问起(个人主页:hovertree.com)就不用多说了,那么怎么使用jQuery呢?
首先,下载jquery。下载地址:http://hovertree.com/hvtart/bjae/b8627323101a4994.htm,一个是压缩版本,一个是未压缩版本,如果在开发测试阶段,可以使用未压缩版本,实际应用一般使用压缩版本(min)。然后就在页面上引用。
- 带filter的hbase查询优化
kane_xie
查询优化hbaseRandomRowFilter
问题描述
hbase scan数据缓慢,server端出现LeaseException。hbase写入缓慢。
问题原因
直接原因是: hbase client端每次和regionserver交互的时候,都会在服务器端生成一个Lease,Lease的有效期由参数hbase.regionserver.lease.period确定。如果hbase scan需
- java设计模式-单例模式
men4661273
java单例枚举反射IOC
单例模式1,饿汉模式
//饿汉式单例类.在类初始化时,已经自行实例化
public class Singleton1 {
//私有的默认构造函数
private Singleton1() {}
//已经自行实例化
private static final Singleton1 singl
- mongodb 查询某一天所有信息的3种方法,根据日期查询
qiaolevip
每天进步一点点学习永无止境mongodb纵观千象
// mongodb的查询真让人难以琢磨,就查询单天信息,都需要花费一番功夫才行。
// 第一种方式:
coll.aggregate([
{$project:{sendDate: {$substr: ['$sendTime', 0, 10]}, sendTime: 1, content:1}},
{$match:{sendDate: '2015-
- 二维数组转换成JSON
tangqi609567707
java二维数组json
原文出处:http://blog.csdn.net/springsen/article/details/7833596
public class Demo {
public static void main(String[] args) { String[][] blogL
- erlang supervisor
wudixiaotie
erlang
定义supervisor时,如果是监控celuesimple_one_for_one则删除children的时候就用supervisor:terminate_child (SupModuleName, ChildPid),如果shutdown策略选择的是brutal_kill,那么supervisor会调用exit(ChildPid, kill),这样的话如果Child的behavior是gen_