JMeter快速入门知识系列(9)JMeter关联之正则表达式提取器
9.1 关联的定义
在客户端与服务器通信过程中,多个请求/响应间的数据会有相互依赖的关系。比如上一个请求返回的某些响应数据在后续的请求中需要用到。
下面是一些典型的例子:
1)比如第一次访问网站获取的session id在后续的请求都会将其传给网站;
2)服务器生成token返回给用户,在后续的请求中要带上token;
3)根据条件查询某记录,在查询结果集中选择记录进行操作(比如删除)
…
但是有些通信协议是无状态的,不存在上下文相关性。多个请求/响应之间的数据不能直接进行传递;并且每次服务器返回的数据不是一成不变的,传递的数据不能通过硬编码(写死)保存来解决。
比如上面三种情况都会产生动态变化的数据:
1)session id的生命周期一般在关闭浏览器时就结束了,每次打开浏览器访问返回的session id并不相同;
2)token也有生命周期,一般也是随机,无状态的;
3)若查询条件参数化了或服务器返回的查询结果集改变了,后续的操作可能会失败。
在这些情况下,可以考虑将服务器返回的动态变化的数据保存到某个参数中,需要时再从中取出。
关联原理
举个例子,看电影,看电影过程有如下步骤:
1.购票
2.验票
3.观影
每个步骤可以看做一个请求/响应。观众相当于客户端,影院方相当于服务器。
过程如下图所示:
免费领取Python自动化学习资料 工具,面试宝典面试技巧,加QQ群,785128166,群内还会大佬技术交流
观众购买的电影票可以看成服务器返回的响应数据,要验票通过才能入场观影。
观众购票相当于一个请求,验票是下一个请求,这需要将上一个请求返回的响应数据(电影票)放在下一个请求中发送给服务器处理。
假设这部电影非常精彩,想重新再看一次,因为电影票只能使用一次,观众必须重新购票,才能验票通过入场;使用第一次购买的电影票入场肯定会被拒之门外。
为了解决这个问题,可以考虑做如下假设:
每次将购买的电影票放入随身携带的LV钱包,并且在放入之前将使用过的票丢弃,以防止入场时掏错票;入场的时,从钱包中取出票来验票,这样就万无一失了。
将电影票放入钱包中,相当于将服务器返回的数据保存起来了,这里钱包就是保存关联数据的参数。
关联的定义
将服务器返回的数据包中满足条件的数据保存到一个参数中的过程。
怎样将服务器返回的数据保存起啦,JMeter中可以使用后置处理器来处理关联数据,常见的方法有:
1.正则表达式提取器
2.JSON提取器
需要关联数据的特征
怎样确定哪些数据是需要做关联的,可以从关联数据的特征来识别出这些数据。关联数据有如下三个特征:
1.服务器返回
需要关联的数据一定是从服务器返回的。
客户端输入的数据不需要进行关联,比如输入的用户名与密码。此特征是必选的。
2.数据会再次发送给服务器处理
保存上一个请求响应的数据,其目的是为了将其用于下一个请求中,否则保存起来没有意义。
此特征是可选特征,也就是说不再次发送也是可以保存数据进行关联的。
3.数据动态变化
上一个请求响应的数据若不会动态变化,完全可以写死在脚本中,不需要花力气额外保存再次取出。
正是由于每次返回的数据动态变化,我们需要根据某种规则将这些动态变化的数据找出来保存,
然会取出实际返回的数据。但此特征也是可选的。不动态变化一样可以保存进行关联,但意义不大。
9.2 正则表达式介绍
JMeter通过内嵌的Apache Jakarta ORO软件来解析处理正则表达式。
Jakarta-ORO是用于处理文本的一组Java类,是目前功能最全性能最好的正则表达式API之一,它提供兼容Perl5类型的正则表达式。
单行模式与多行模式
元字符
扩展正则表达式
9.3 正则表达式提取器
配置项
Apply to:
与响应断言中用法一致,不再赘述。
Field to check:
Body
Response Body,比如HTTP响应报文的实体主体,不包含状态行与首部。
Body(unescaped)
Response Body(转换了转义字符),对HTTP响应报文的实体主体中的所有HTML转义字符进行了转义处理。
由于转义时没有参照上下文,在处理时可能会出错,并且开启此选项会严重影响性能,故不建议使用。
Body as a Document
通过Apache Tika从各种类型的文档中提取文本。
此选项开启也会严重影响性能,谨慎使用。
Response Headers
一般用于HTTP请求,HTTP响应报文中的首部。
URL
一般用于HTTP请求。HTTP请求报文中的请求URL地址(未开启重定向功能);
若开启了重定向功能,则包含原始请求中的请求URL地址与重定向后的URL地址。
比如前面访问新浪的例子,开启了重定向后,则包括:
http://www.sina.com/,http://www.sina.com.cn/和https://www.sina.com.cn/三个URL地址。
Response code
一般用于HTTP协议,指的是HTTP响应报文中的状态码,比如200、301、404等。
Response Message
一般用于HTTP协议,指的是HTTP响应报文中的原因短语,比如OK、Moved Permanently、Not Found等。
Name of created variable:
用于存储结果的JMeter变量的名称。
Regular Expression:
用于解析响应数据的正则表达式。使用正则表达式中的()来捕获响应字符串。
可以使用一组或多组()来捕获一个或多个字符串。这样的分组称为捕获组,
每个捕获组都有一个编号与之对应,以方便引用捕获组匹配的内容。
若有多个捕获组,编号规则为:
从左至右,按照“(”出现的顺序,从1开始依次递增进行编号:1,2,3,… ,n
还有一个额外编号为0的捕获组,用于表示匹配到的整个正则表达式字符串。
比如:
正则表达式: ((\d{4})-(\d{2})-(\d{2}))\s((\d{2})?\d{2})?\d{2}))
捕获组编号: 1 2 3 4 5 6 7 8
响应文本: 2019-06-25 14:29:30
匹配后各捕获组对应的内容如下:
g1:2019-06-25
g2:2019
g3:06
g4:25
g5:14:29:30
g6:14
g7:29
g8:30
g0:2019-06-25 14:29:30
Template(i ii where i is capturing group number,starts at 1):
设置捕获到的字符串以怎样的格式保存到存储结果的JMeter变量中。
在此项中,可以用1 11表示引用捕获组1中的内容,2 22表示引用捕获组2中的内容,… ,n nn表示引用捕获组n中的内容,
0 00表示引用正则表达式匹配后的整个字符串。
注意除了使用n nn引用捕获组的内容外,还可以加入需要的字符,将匹配的内容按照某种格式保存。
沿用上面日期时间正则表达式的例子,举几个例子:
模板 变量值
1 11 2019-06-25
2 22 2019
…
1 11,5 55 2019-06-25,14:29:30
Date:1 11–>Time:5 55 Date:2019-06-25–>Time:14:29:30
Match No.(0 for Random):
匹配序号。从匹配的结果中怎样挑选匹配项。
若正则表达式每个捕获组有多个匹配项。
则1表示第一个匹配项,2表示第二个匹配项,… ,依次类推;
0表示从多个匹配项中随机选择一个;
-i(i=1,2,3,… ,N,-i即负整数)表示引用所有的匹配项。
若有多个捕获组,并且引用每个捕获组所有的匹配项,则可以看是一个二维数组。
假设,捕获组为g1,g2,g3,… ,gn;每个捕获组匹配项编号为1,2,3,… ,m;
保存结果的JMeter变量为refName,则:
refName_m_gn表示第n个捕获组中的第m个匹配项。
比如:
refName_1_g1 表示第1个捕获组中的第1个匹配项;
refName_2_g1 表示第1个捕获组中的第2个匹配项;
…
refName_1_g2 表示第2个捕获组中的第1个匹配项;
refName_2_g2 表示第2个捕获组中的第2个匹配项;
…
Default Value:
如果正则表达式没有匹配到内容,则保存结果的JMeter变量将设置为默认值,这样会对调试JMeter测试带来便利。
如果没有提供默认值,则很难判断正则表达式是否匹配失败,或者RE元素是否未处理或者是否使用了错误的变量。
但是,如果您有多个设置相同变量的测试元素,那么如果表达式不匹配,您可能希望保持变量不变。
在这种情况下,请在调试完成后删除默认值。
Use empty default value:
如果选中该复选框则默认值为空,则JMeter会将保存结果的JMeter变量设置为空字符串。
9.4 应用案例
案例说明
业务操作步骤:
1.登录ECshop后台管理系统;
2.设置查询条件(比如按商品品牌)搜索商品;
3.在返回的查询结果集中选择第一个商品删除。
这里每一步骤对应一个HTTP请求,在第二个请求中每次返回的查询结果集不一样(因为每执行一次会删除一个商品),故向第三个请求传递的商品编号参数不能写死,需要从第二个请求对应的响应数据中提取出来。
操作步骤
这里对第二个步骤一些细节进行说明:
在第二个请求返回的响应数据中观察:
…
23)">8\r\n
\r\n
发现返回的goods_id的左边界为goods.php?id=,右边界为",
但考虑到.与?以及\为元字符,故需要转义,则正则表达式可以设置为:
goods.php?id=(\d+)\"
在删除商品请求中将提取的商品编号替换写死的数据:
你可能感兴趣的:(Python,软件测试,JMeter性能测试,python,Jmeter性能测试,软件测试,编程语言,程序人生)
Python 库 包 sentence-transformers
音程
机器学习 人工智能 python 开发语言
sentence-transformers是一个非常流行的Python库,专门用于将文本(句子、段落、文档)转换为高质量的语义向量(嵌入)。它基于Transformer架构(如BERT、RoBERTa、DistilBERT等)的预训练模型,并在大量语义相似性数据上进行了微调,能够捕捉句子之间的深层语义关系。什么是sentence-transformers?项目地址:https://www.sber
【python】解决No module named _sqlite3的问题
欧阳秦穆
环境版本说明:centos7python3.6.4django2.0在创建django项目时候。报错以下信息详细错误信息如下:原因:未安装sqlite模块解决:1安装sqlite-develyuminstallsqlite-devel2重新编译pythoncd/usr/local/python3.6.4./configuremakemakeinstall
Python Scrapy的爬虫中间件开发
AI天才研究院
python scrapy 爬虫 ai
PythonScrapy爬虫中间件开发:从原理到实战的深度解析关键词Scrapy中间件、爬虫扩展、请求响应处理、反爬绕过、中间件生命周期、钩子函数、分布式爬取摘要本文系统解析Scrapy爬虫中间件(SpiderMiddleware)的开发方法论,覆盖从基础概念到高级实践的全链路知识。通过第一性原理推导中间件的核心机制,结合层次化架构分析(理论→设计→实现→应用),提供生产级代码示例与可视化流程模型
使用Python将PDF转换成word、PPT
wh3933
python pdf word
在现代企业环境中,文档格式的转换是一项普遍且关键的需求。PDF(PortableDocumentFormat)作为一种最终的、通常不可编辑的“打印”状态格式,被广泛用于分发和归档。然而,内容的创建、协作和修改主要在MicrosoftOffice套件中进行,特别是Word(DOCX)和PowerPoint(PPTX)。因此,以编程方式弥合这两种格式之间的鸿沟,已成为数据提取、内容迁移和工作流自动化领
Python实现文件移动到指定文件夹
wh3933
python java 前端
在Python中,将文件从一个位置移动到另一个位置是一项常见的操作。无论是整理下载、归档旧文件,还是在复杂的项目中管理文件结构,掌握文件移动的技巧都至关重要。本文将全面介绍在Python中移动文件的各种方法,并提供详尽的代码示例,帮助您轻松应对不同场景下的文件管理需求。核心方法:shutil.move()在Python标准库中,shutil模块提供了高级的文件操作功能,其中的shutil.move
Python设置国内镜像教程
wh3933
python 开发语言
####引言Python是一种广泛使用的高级编程语言,用于各种编程任务,从简单的脚本到复杂的机器学习算法。在安装Python包时,通常需要从Python包索引(PyPI)下载。由于网络原因,直接从PyPI下载可能速度较慢,因此,使用国内的镜像源可以显著提高下载速度。本文将详细介绍如何在Python中设置国内镜像。####文章目的本篇文章旨在指导用户如何将Python的包管理工具`pip`的默认源切
python中使用pyinstaller将python项目打包为exe可执行文件
不吃西红柿丿
python windows
1、安装pyinstallerpipinstallpyinstaller-ihttps://pypi.tuna.tsinghua.edu.cn/simple2、打包应用2.1、使用命令行直接打包pyinstaller-F-w-iyour_path/log.icomain.py命令:-F将项目打包为单个exe文件,没有其它文件-D将项目打包为一个文件夹里面又有一个exe文件以及其它依赖,启动速度比-
如何解决pip安装报错ModuleNotFoundError: No module named ‘os’问题
lyzybbs
全栈Bug解决方案专栏 pip python pycharm 开发语言 pandas numpy beautifulsoup
【Python系列Bug修复PyCharm控制台pipinstall报错】如何解决pip安装报错ModuleNotFoundError:Nomodulenamed‘os’问题1.摘要在使用PyCharm2025的控制台执行pipinstall时,常常会遇到各种奇怪的安装失败或安装后仍然报ModuleNotFoundError的问题,例如“Nomodulenamed‘os’”。本文将从开发场景、环境
如何解决pip安装报错ModuleNotFoundError: No module named ‘sys’问题
lyzybbs
全栈Bug解决方案专栏 pip pycharm python pandas scrapy beautifulsoup matplotlib
【Python系列Bug修复PyCharm控制台pipinstall报错】如何解决pip安装报错ModuleNotFoundError:Nomodulenamed‘sys’问题摘要在使用PyCharm内置终端或控制台执行pipinstallsys等命令时,常常会遇到如下异常:ModuleNotFoundError:Nomodulenamed‘sys’该错误看似与常驻Python核心库sys有关,但
OPENAI中Assistants API的实现原理及示例代码python实现
dzend
aigc python ai
OPENAI中AssistantsAPI的实现原理及示例代码前言OPENAI是一家人工智能公司,致力于研究和开发人工智能技术。其中,AssistantsAPI是OPENAI推出的一项人工智能服务,可以帮助开发者快速构建智能助手。本文将介绍AssistantsAPI的实现原理,并提供使用Python实现的示例代码。AssistantsAPI实现原理AssistantsAPI的实现原理主要包括以下几个
Java+Python智能化云盘【Day5-1】
关沐吖
Java+Python Ai智能云盘项目开发专栏 python java 开发语言
RAG系统链路和数据加载Loaders技术OK啊昨天Day4-2,最后提及了很多的一些Loader加载器,有文档类型、数据库类型、网页加载器类型等等,它们其实都是属于langchain_community.document_loaders这个包下的类。今天来先复习一下都有哪些,再讲讲其中的代码运行的基本框架,和文档中有图片的处理方式。Loader的分类与常见类型文件加载器(FileLoaders)
Java+Python智能化云盘【Day3】
关沐吖
Java+Python Ai智能云盘项目开发专栏 java python 开发语言
提示词工程Prompt简介:大模型必备Prompt提示词工程讲解什么是PromptEngineering提示词工程通过特定格式的文本输入引导AI模型生成期望输出的技术,明确地告诉模型你想要解决的问题或完成的任务也是大语言模型理解用户需求并生成相关、准确回答或内容的基础类比:给Java程序员的任务需求文档(越清晰明确,结果越符合预期)为什么需要学习?大模型就是你的员工,你可以有多个助手,OpenAI
Java+Python智能化Ai云盘[Day2]
OK啊,为了完成学校老师布置的UML作业主播也是开始拿自己的项目开始当成期末大作业来交了。顺道的我也把自己的项目整个的梳理了一通,如果大家最近有UML的大作业要交也可以自取,到时候我把文章word版本直接发到百度网盘上去。里面我只有类图、用例图、活动图、顺序图、状态图。这次也算是一个提前复习了一下项目了把,整个的文档文字都是拿ai去写的,图的话也是我先看了一遍代码,然后给ai说了一遍也算是自己理通
基于uniapp小程序的诗词学习系统附带文章源码部署视频讲解等
文章目录前言详细视频演示具体实现截图核心技术介绍小程序框架Uniapp前端框架Vue持久层框架MyBaits为什么选择我代码参考数据库参考测试用例参考源码获取前言博主介绍:✌CSDN特邀作者、资深全栈开发程序员,曾在互联网大厂担任高级职位、码云/掘金/华为云/阿里云/InfoQ/StackOverflow/github等平台优质作者、专注于Java、小程序、前端、python等技术领域毕业项目实战
Windows安装MySQL及Python操作MySQL数据库脚本实例详解
1、Windows上安装MySQL便于测试,笔者在windows上安装MySQL,如有现成Linux下的MySQL和Python环境,也可直接使用。MySQL的官网下载链接安装步骤1)下载后的mysql-5.7.23-winx64.zip安装包解压至某一位置,在mysql-5.7.23-winx64.zip根目录下创建my.ini文件添加以下内容:my.ini[mysql]default-char
(纯新手练习五)python基础代码,我手把手带你敲(类与对象,实例,构造函数__init__初始化对象属性,继承,方法重写,类的文档字符串,模块化)
星期天要睡觉
python 开发语言
目录1.基本理论简述类与对象构造函数(Constructor)继承(Inheritance)方法重写(MethodOverriding)四者关系总结类的文档字符串(Docstring)2.练习开始3.代码模块化练习(纯新手练习五)python基础代码,我手把手带你敲(类与对象,实例,构造函数__init__初始化对象属性,继承,方法重写,类的文档字符串,模块化)(下一节课:文件操作)基本理论简述类
区间求最值问题高效解决方法
东皇太星
python
对于区间求最值场景,如果区间不定长度的,可以使用稀疏表进行求解,如果区间是固定长度的,则可以使用分块的思想(与稀疏表原理类似),都是通过压缩状态个数,1关于稀疏表的原理详见:稀疏表(SparseTable,ST原理及应用场景下面是一个稀疏表的python实现classSolution:def__init__(self,nums):self.nums=numsself.init_value=-999
python优先队列使用_Python优先队列实现方法示例
本文实例讲述了Python优先队列实现方法。分享给大家供大家参考,具体如下:1.代码importQueueimportthreadingclassJob(object):def__init__(self,priority,description):self.priority=priorityself.description=descriptionprint'Newjob:',description
python优先队列使用_python 线程队列PriorityQueue(优先队列)(37)
在线程队列Queue/线程队列LifoQueue文章中分别介绍了先进先出队列Queue和先进后出队列LifoQueue,而今天给大家介绍的是最后一种:优先队列PriorityQueue,对队列中的数据按照优先级排序,那么具体怎么用呢?一.队列Queue分类:1.线程队列Queue—FIFO(先进先出队列),即哪个数据先存入,取数据的时候先取哪个数据,同生活中的排队买东西;2.线程队列LifoQue
Python|Pyppeteer规避反自动化检测方法【最新方案】(33)
写python的鑫哥
Pyppeteer从入门到精通 python pyppeteer puppeteer 规避 反自动化 检测 反爬虫
前言本文是该专栏的第33篇,结合优质项目案例持续分享Pyppeteer的干货知识,记得关注。相信有些同学在使用Pyppeteer框架进行某个自动化操作的时候,会触发平台的检测机制,让目标平台识别出当前是机器人在操作,而非人为操作,导致让你的程序无法继续进行下一步。对于上述这种情况,你是不是有很大的疑惑呢?别担心,本文笔者专门针对上述问题,来详细介绍在使用Pyppeteer的过程中,出现反自动化机制
Python 图像分类入门
超龄超能程序猿
机器学习 python 分类 开发语言
一、介绍图像分类作为深度学习的基础任务,旨在将输入图像划分到预定义的类别集合中。在实际的业务中,图像分类技术是比较常用的一种技术技能。例如,在安防监控中,可通过图像分类识别异常行为;在智能交通系统中,实现对交通标志和车辆类型的快速识别等。本文将通过安装包已有数据带你逐步了解使用Python进行图像分类的全过程。二、环境搭建在开始图像分类项目前,需要确保Python环境中安装了必要的库。主要包括:T
取余和取模到底是不是一回事?对比Python、Java、C和C++中的%运算符
霜叶桑
java python c语言 c++
取余和取模到底是不是一回事?对比Python、JAVA、C和C++中的%运算符数学中的「取余」和「取模」计算机领域中的「取余」和「取模」Python、Java、C和C++中的`%`运算符Python:取模运算Java:取余运算C和C++:取余运算为什么一般用正除数数学中的「取余」和「取模」在纯数学中,当我们谈论整数除法a÷ba\divba÷b(aaa是被除数,bbb是除数,且b≠0b\not=0
R 语言安装使用教程
小奇JAVA面试
安装使用教程 r语言 开发语言
一、R语言简介R是一种用于统计分析、数据挖掘和可视化的编程语言和环境。它在学术界和数据分析领域中广泛使用,拥有丰富的统计函数库和绘图功能。二、安装R语言2.1下载R安装包前往CRAN官网下载适合你操作系统的安装程序:官网地址:https://cran.r-project.org/2.2Windows安装下载.exe安装包;双击安装程序,按默认选项一路安装即可;安装完成后,可通过RGUI或命令行启动
194、Django Channels实战:构建实时WebSocket应用
多多的编程笔记
django websocket sqlite
DjangoChannels:实现WebSocket与实时通信本文将向您介绍Python开发框架Django中的一个重要组件——DjangoChannels,它使得在Django中实现WebSocket通信变得轻而易举。通过阅读本文,您将了解WebSocket的概念、DjangoChannels的工作原理以及如何在实际项目中使用它来实现实时通信。1.WebSocket:实现快速双向通信在介绍Dja
Flutter中Material的介绍
zhouzhengqian
flutter flutter
Flutter是一个由Google开发的开源UI工具包,用于在移动、Web和桌面平台上构建高性能、美观的本地用户界面。Flutter使用Dart编程语言,具有热重载(HotReload)功能,可以快速方便地进行开发、测试和构建应用。MaterialDesign是由Google提出的一种设计语言,用于创建现代、直观、一致的用户界面。Flutter提供了一个名为material的包,它实现了Mater
apache-dolphinscheduler-3.2.0调度器简介和集群部署详细安装文档
1、为什么选用apache-dolphinscheduler轻松管理复杂的任务工程支持跨项目和跨工作流程的任务依赖支持Kill、暂停和恢复操作任务支持以租户、Worker分组组和环境中隔离运行每个任务都可以修改输出参数,并将其传递给后续任务在一分钟内创建你的工作流程通过拖拉拽的工作流创建方式提高效率支持Python、Yaml和OpenApi的方式生成工作流支持将一个工作流作为另一个工作流的子流程执
基于python版本secsgem源码开发gem,该gem作为一个中间平台,既要连接EAP,又要连接探针台,应该如何设置devicetype、connectmode
SunkingYang
# SECS协议 python gem eap 中间平台 三方连接 设备类型
文章目录一、角色定义与连接模式设计1.中间平台的双向角色2.核心参数设置二、代码实现步骤1.创建两个独立连接实例2.数据转发逻辑实现三、高级配置与注意事项1.状态机管理2.多线程与异步处理3.协议兼容性4.调试与错误排查四、典型应用场景1.配方管理2.事件与报警处理五、扩展方案(多设备协同)总结基于Python的secsgem库开发中间平台需同时连接EAP(作为Host端)和探针台(作为Equip
Python 爬虫入门(九):Scrapy安装及使用「详细介绍」
blues_C
Python爬虫实战 python 爬虫 scrapy
Python爬虫入门(九):Scrapy安装及使用「详细介绍」前言1.Scrapy简介2.Scrapy的安装2.1环境准备2.2安装Scrapy3.创建Scrapy项目3.1创建项目3.2项目结构简介4.编写爬虫4.1创建爬虫4.2解析数据4.3运行爬虫5.存储数据5.1存储为JSON文件5.2存储到数据库5.2.1MongoDB6.处理请求和响应6.1请求头设置6.2处理响应7.高级功能7.1使
python 会议室预约系统解决方案_会议预约管理系统解决方案
weixin_39963853
python 会议室预约系统解决方案
随着时代快速发展,各大会议中心都有密集的会议安排,同时企业也会有大大小小的会议安排。会议室没有管理,会造成会议室被争抢、重要会议被非重要会议挤占、会议室信息不能及时发布、会议室设备开会时不满足会议要求、会议室设备没有提前调试以及设备因没有及时检修造成故障、会中设备出现故障且没有应急预案等等问题。这些问题往往频繁发生,使人们平时习以为常,用时抱怨连连。如果任由问题发生、日积月累,则会产生严重影响,轻
python 会议室预约系统解决方案_智能会议预约系统解决方案
weixin_39914868
python 会议室预约系统解决方案
随着时代的发展,科技的进步,效率在工作中成为了评价工作能力的一项标准。人的工作效率,机器的工作效率等等,我们都是逐步在提高。达到高效的工作状态离不开智能的解决方案,在此我将分享上海铭港公司做的智能办公空间—会议预约系统的案例。上海铭港做的此项会议预约系统案例的解决方案围绕的主题中心即是:效率提到会议室,可能令大家的头疼的事情随之而来。特别是公司的行政部门人员。哪间会议室是在空闲状态?哪间会议室有人
java工厂模式
3213213333332132
java 抽象工厂
工厂模式有
1、工厂方法
2、抽象工厂方法。
下面我的实现是抽象工厂方法,
给所有具体的产品类定一个通用的接口。
package 工厂模式;
/**
* 航天飞行接口
*
* @Description
* @author FuJianyong
* 2015-7-14下午02:42:05
*/
public interface SpaceF
nginx频率限制+python测试
ronin47
nginx 频率 python
部分内容参考:http://www.abc3210.com/2013/web_04/82.shtml
首先说一下遇到这个问题是因为网站被攻击,阿里云报警,想到要限制一下访问频率,而不是限制ip(限制ip的方案稍后给出)。nginx连接资源被吃空返回状态码是502,添加本方案限制后返回599,与正常状态码区别开。步骤如下:
java线程和线程池的使用
dyy_gusi
ThreadPool thread Runnable timer
java线程和线程池
一、创建多线程的方式
java多线程很常见,如何使用多线程,如何创建线程,java中有两种方式,第一种是让自己的类实现Runnable接口,第二种是让自己的类继承Thread类。其实Thread类自己也是实现了Runnable接口。具体使用实例如下:
1、通过实现Runnable接口方式 1 2
Linux
171815164
linux
ubuntu kernel
http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.1.2-unstable/
安卓sdk代理
mirrors.neusoft.edu.cn 80
输入法和jdk
sudo apt-get install fcitx
su
Tomcat JDBC Connection Pool
g21121
Connection
Tomcat7 抛弃了以往的DBCP 采用了新的Tomcat Jdbc Pool 作为数据库连接组件,事实上DBCP已经被Hibernate 所抛弃,因为他存在很多问题,诸如:更新缓慢,bug较多,编译问题,代码复杂等等。
Tomcat Jdbc P
敲代码的一点想法
永夜-极光
java 随笔 感想
入门学习java编程已经半年了,一路敲代码下来,现在也才1w+行代码量,也就菜鸟水准吧,但是在整个学习过程中,我一直在想,为什么很多培训老师,网上的文章都是要我们背一些代码?比如学习Arraylist的时候,教师就让我们先参考源代码写一遍,然
jvm指令集
程序员是怎么炼成的
jvm 指令集
转自:http://blog.csdn.net/hudashi/article/details/7062675#comments
将值推送至栈顶时 const ldc push load指令
const系列
该系列命令主要负责把简单的数值类型送到栈顶。(从常量池或者局部变量push到栈顶时均使用)
0x02 &nbs
Oracle字符集的查看查询和Oracle字符集的设置修改
aijuans
oracle
本文主要讨论以下几个部分:如何查看查询oracle字符集、 修改设置字符集以及常见的oracle utf8字符集和oracle exp 字符集问题。
一、什么是Oracle字符集
Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货
png在Ie6下透明度处理方法
antonyup_2006
css 浏览器 Firebug IE
由于之前到深圳现场支撑上线,当时为了解决个控件下载,我机器上的IE8老报个错,不得以把ie8卸载掉,换个Ie6,问题解决了,今天出差回来,用ie6登入另一个正在开发的系统,遇到了Png图片的问题,当然升级到ie8(ie8自带的开发人员工具调试前端页面JS之类的还是比较方便的,和FireBug一样,呵呵),这个问题就解决了,但稍微做了下这个问题的处理。
我们知道PNG是图像文件存储格式,查询资
表查询常用命令高级查询方法(二)
百合不是茶
oracle 分页查询 分组查询 联合查询
----------------------------------------------------分组查询 group by having --平均工资和最高工资 select avg(sal)平均工资,max(sal) from emp ; --每个部门的平均工资和最高工资
uploadify3.1版本参数使用详解
bijian1013
JavaScript uploadify3.1
使用:
绑定的界面元素<input id='gallery'type='file'/>$("#gallery").uploadify({设置参数,参数如下});
设置的属性:
id: jQuery(this).attr('id'),//绑定的input的ID
langFile: 'http://ww
精通Oracle10编程SQL(17)使用ORACLE系统包
bijian1013
oracle 数据库 plsql
/*
*使用ORACLE系统包
*/
--1.DBMS_OUTPUT
--ENABLE:用于激活过程PUT,PUT_LINE,NEW_LINE,GET_LINE和GET_LINES的调用
--语法:DBMS_OUTPUT.enable(buffer_size in integer default 20000);
--DISABLE:用于禁止对过程PUT,PUT_LINE,NEW
【JVM一】JVM垃圾回收日志
bit1129
垃圾回收
将JVM垃圾回收的日志记录下来,对于分析垃圾回收的运行状态,进而调整内存分配(年轻代,老年代,永久代的内存分配)等是很有意义的。JVM与垃圾回收日志相关的参数包括:
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps
-Xloggc
-XX:+PrintGC
通
Toast使用
白糖_
toast
Android中的Toast是一种简易的消息提示框,toast提示框不能被用户点击,toast会根据用户设置的显示时间后自动消失。
创建Toast
两个方法创建Toast
makeText(Context context, int resId, int duration)
参数:context是toast显示在
angular.identity
boyitech
AngularJS AngularJS API
angular.identiy 描述: 返回它第一参数的函数. 此函数多用于函数是编程. 使用方法: angular.identity(value); 参数详解: Param Type Details value
*
to be returned. 返回值: 传入的value 实例代码:
<!DOCTYPE HTML>
java-两整数相除,求循环节
bylijinnan
java
import java.util.ArrayList;
import java.util.List;
public class CircleDigitsInDivision {
/**
* 题目:求循环节,若整除则返回NULL,否则返回char*指向循环节。先写思路。函数原型:char*get_circle_digits(unsigned k,unsigned j)
Java 日期 周 年
Chen.H
java C++ c C#
/**
* java日期操作(月末、周末等的日期操作)
*
* @author
*
*/
public class DateUtil {
/** */
/**
* 取得某天相加(减)後的那一天
*
* @param date
* @param num
*
[高考与专业]欢迎广大高中毕业生加入自动控制与计算机应用专业
comsci
计算机
不知道现在的高校还设置这个宽口径专业没有,自动控制与计算机应用专业,我就是这个专业毕业的,这个专业的课程非常多,既要学习自动控制方面的课程,也要学习计算机专业的课程,对数学也要求比较高.....如果有这个专业,欢迎大家报考...毕业出来之后,就业的途径非常广.....
以后
分层查询(Hierarchical Queries)
daizj
oracle 递归查询 层次查询
Hierarchical Queries
If a table contains hierarchical data, then you can select rows in a hierarchical order using the hierarchical query clause:
hierarchical_query_clause::=
start with condi
数据迁移
daysinsun
数据迁移
最近公司在重构一个医疗系统,原来的系统是两个.Net系统,现需要重构到java中。数据库分别为SQL Server和Mysql,现需要将数据库统一为Hana数据库,发现了几个问题,但最后通过努力都解决了。
1、原本通过Hana的数据迁移工具把数据是可以迁移过去的,在MySQl里面的字段为TEXT类型的到Hana里面就存储不了了,最后不得不更改为clob。
2、在数据插入的时候有些字段特别长
C语言学习二进制的表示示例
dcj3sjt126com
c basic
进制的表示示例
# include <stdio.h>
int main(void)
{
int i = 0x32C;
printf("i = %d\n", i);
/*
printf的用法
%d表示以十进制输出
%x或%X表示以十六进制的输出
%o表示以八进制输出
*/
return 0;
}
NsTimer 和 UITableViewCell 之间的控制
dcj3sjt126com
ios
情况是这样的:
一个UITableView, 每个Cell的内容是我自定义的 viewA viewA上面有很多的动画, 我需要添加NSTimer来做动画, 由于TableView的复用机制, 我添加的动画会不断开启, 没有停止, 动画会执行越来越多.
解决办法:
在配置cell的时候开始动画, 然后在cell结束显示的时候停止动画
查找cell结束显示的代理
MySql中case when then 的使用
fanxiaolong
casewhenthenend
select "主键", "项目编号", "项目名称","项目创建时间", "项目状态","部门名称","创建人"
union
(select
pp.id as "主键",
pp.project_number as &
Ehcache(01)——简介、基本操作
234390216
cache ehcache 简介 CacheManager crud
Ehcache简介
目录
1 CacheManager
1.1 构造方法构建
1.2 静态方法构建
2 Cache
2.1&
最容易懂的javascript闭包学习入门
jackyrong
JavaScript
http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。
下面就是我的学习笔记,对于Javascript初学者应该是很有用的。
一、变量的作用域
要理解闭包,首先必须理解Javascript特殊
提升网站转化率的四步优化方案
php教程分享
数据结构 PHP 数据挖掘 Google 活动
网站开发完成后,我们在进行网站优化最关键的问题就是如何提高整体的转化率,这也是营销策略里最最重要的方面之一,并且也是网站综合运营实例的结果。文中分享了四大优化策略:调查、研究、优化、评估,这四大策略可以很好地帮助用户设计出高效的优化方案。
PHP开发的网站优化一个网站最关键和棘手的是,如何提高整体的转化率,这是任何营销策略里最重要的方面之一,而提升网站转化率是网站综合运营实力的结果。今天,我就分
web开发里什么是HTML5的WebSocket?
naruto1990
Web html5 浏览器 socket
当前火起来的HTML5语言里面,很多学者们都还没有完全了解这语言的效果情况,我最喜欢的Web开发技术就是正迅速变得流行的 WebSocket API。WebSocket 提供了一个受欢迎的技术,以替代我们过去几年一直在用的Ajax技术。这个新的API提供了一个方法,从客户端使用简单的语法有效地推动消息到服务器。让我们看一看6个HTML5教程介绍里 的 WebSocket API:它可用于客户端、服
Socket初步编程——简单实现群聊
Everyday都不同
socket 网络编程 初步认识
初次接触到socket网络编程,也参考了网络上众前辈的文章。尝试自己也写了一下,记录下过程吧:
服务端:(接收客户端消息并把它们打印出来)
public class SocketServer {
private List<Socket> socketList = new ArrayList<Socket>();
public s
面试:Hashtable与HashMap的区别(结合线程)
toknowme
昨天去了某钱公司面试,面试过程中被问道
Hashtable与HashMap的区别?当时就是回答了一点,Hashtable是线程安全的,HashMap是线程不安全的,说白了,就是Hashtable是的同步的,HashMap不是同步的,需要额外的处理一下。
今天就动手写了一个例子,直接看代码吧
package com.learn.lesson001;
import java
MVC设计模式的总结
xp9802
设计模式 mvc 框架 IOC
随着Web应用的商业逻辑包含逐渐复杂的公式分析计算、决策支持等,使客户机越
来越不堪重负,因此将系统的商业分离出来。单独形成一部分,这样三层结构产生了。
其中‘层’是逻辑上的划分。
三层体系结构是将整个系统划分为如图2.1所示的结构[3]
(1)表现层(Presentation layer):包含表示代码、用户交互GUI、数据验证。
该层用于向客户端用户提供GUI交互,它允许用户