互联网常用算法和数据结构

image.png
image.png
image.png
image.png

http://www.cnblogs.com/oldhorse/archive/2009/11/16/1604009.html
http://blog.csdn.net/wgyscsf/article/details/54783101?winzoom=1
推荐下我用着觉得不错的:Toad:在 Mac App Store 上的内容**免费,可以直接在AppStore下载,支持:Oracle,PostgreSQL,MySQL,MongoDB
DBeaver:http://dbeaver.jkiss.org/**Github开源,免费;支持主流操作系统:Windows,Linux,Mac OS X,Solaris支持所有流行的数据: MySQL, PostgreSQL, SQLite, Oracle, DB2, SQL Server, Sybase, Teradata, MongoDB, Cassandra, Redis, etc.
作者:CorningSun链接:https://www.zhihu.com/question/20498949/answer/140156456来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
########################################################################
http://www.cnblogs.com/wangcp-2014/p/6060019.html
http://www.cnblogs.com/star91/p/5059222.html
一、经典公式1:
一般来说,利用以下经验公式进行估算系统的平均并发用户数和峰值数据

1)平均并发用户数为 C = nL/T
2)并发用户数峰值 C‘ = C + 3*根号C
C是平均并发用户数,n是login session的数量,L是login session的平均长度,T是值考察的时间长度
C’是并发用户数峰值

举例1,假设系统A,该系统有3000个用户,平均每天大概有400个用户要访问该系统(可以从系统日志从获得),对于一个典型用户来说,一天之内用户从登陆到退出的平均时间为4小时,而在一天之内,用户只有在8小时之内会使用该系统。
那么,
平均并发用户数为:C = 4004/8 = 200
并发用户数峰值为:C‘ = 200 + 3
根号200 = 243

举例2, 某公司为其170000名员工设计了一个薪酬系统,员工可进入该系统查询自己的薪酬信息,但并不是每个人都会用这个系统,假设只有50%的人会定期用该系统,这些人里面有70%是在每个月的最后一周使用一次该系统,且平均使用系统时间为5分钟。
则一个月最后一周的平均并发用户数为(朝九晚五):
n = 1700000.50.7/5 = 11900
C= 11900*5/60/8 = 124

吞吐量计算为:F = Vu * R / T 单位为个/s
F为事务吞吐量,Vu为虚拟用户数个数,R为每个虚拟用户发出的请求数,T为处理这些请求所花费的时间

二、通用公式2:
对绝大多数场景,我们用(用户总量/统计时间)影响因子(一般为3)来进行估算并发量。
比如,以乘坐地铁为例子,每天乘坐人数为5万人次,每天早高峰是7到9点,晚高峰是6到7点,根据8/2原则,80%的乘客会在高峰期间乘坐地铁,则每秒到达地铁检票口的人数为50000
80%/(36060)=3.7,约4人/S,考虑到安检,入口关闭等因素,实际堆积在检票口的人数肯定比这个要大,假定每个人需要3秒才能进站,那实际并发应为4人/s*3s=12,当然影响因子可以根据实际情况增大!

三、根据PV计算公式:
比如一个网站,每天的PV大概1000w,根据2/8原则,我们可以认为这1000w pv的80%是在一天的9个小时内完成的(人的精力有限),那么TPS为:
1000w80%/(93600)=246.92个/s,取经验因子3,则并发量应为:
246.92*3=740

四、根据TPS估计:
公式为 C = (Think time + 1)*TPS

五、根据系统用户数计算:
并发用户数 = 系统最大在线用户数的8%到12%

######################################################################
###################################################################################
新产品自动化测试方案和计划 Test Plan

01
梳理新产品自动化的核心业务模块和一些数据业务 包括夜审 价格算法 和房量算法

02
使用SQL语句和业务脑图 梳理清楚 核心模块的 业务流程用例

03
使用Python SQL 开发和实现 业务核心的自动化 用例

04
05

使用自动化 用例 集成CI Jenkins 对核心业务进行验证
JMeter 核心接口压力测试 压测

################################################################################### 日志测试SQL语句##############
use log_dev database, change your table name and timestamp day value, and excute it **
select log_cd,func_cd,log_dhms from log_operate_1709 where created_date >= to_timestamp('2017-09-11', 'yyyy-mm-dd')****and log_cd <> '日志类型' order BY created_date DESC;****select log_cd,func_cd,log_dhms,infurl,infnm from log_pdt_data_1709 where created_date >= to_timestamp('2017-09-11', 'yyyy-mm-dd')****and log_cd <> '日志类型' ORDER BY created_date DESC;
--testing log SQL statementsselect log_cd,func_cd,log_dhms,from_ip from log_operate_1709 where created_date >= to_timestamp('2017-09-14', 'yyyy-mm-dd')and log_cd <> '日志类型' order BY created_date DESC;select log_cd,func_cd,log_dhms,infurl,infnm,from_ip from log_pdt_data_1709 where created_date >= to_timestamp('2017-09-14', 'yyyy-mm-dd')and log_cd <> '日志类型' ORDER BY created_date DESC;--count log_operate_1709 and log_pdt_data_1709 tables current date record select count(log_cd) from log_operate_1709 where log_cd <> '日志类型' and created_date >= to_timestamp('2017-09-14', 'yyyy-mm-dd');select count(log_cd) from log_pdt_data_1709 where log_cd <> '日志类型' and created_date >= to_timestamp('2017-09-14', 'yyyy-mm-dd');
#################################################################################################################
白盒测试 需求用例 名词解释 houseblock锁房 RT+ 只改房含 RT 不管改不改房含 只要改了房价 noshow 预定未到 结账folio 就是结账账单-已结账下面 下个+下面的****001.房价=====================================================
每日房价记录数与住店时间一致houseblock记录数与住店时间一致每日收取的房含要出现在每日房含表中的每一天,首日房含只能出现在首日一期所有每日房价的价格代码、折扣一样RT+只能有一套房含RT
只能有一套房含,且每日价格设定一样
002.预订=====================================================没有来期大于等于今日的noshow账户没有离期小于今日的在店账户没有来期小于今日的预订账户没有来期大于今日的在店账户每个账户至少有一个住店客人,且账户表里的住店客人ID对应的存在每个账户只能有一个预订人,且账户表里的预订人ID对应的存在
003.账务====================================================客账交易金额与账务明细金额一致,12个细项金额也一致账单的余额为0已结账户余额为0结账folio里的几个金额与明细一致转账folio里的几个金额与明细一致
004.客房====================================================空房态没有在店账户占用房态必有在店账户维修房态有对应的维修记录
houseblock
###################################################################
白盒测试 by 20170622****房价 housingprice_test001 housingprice_test002 housingprice_test003
1.每日房价记录数与住店时间一致

SELECT country, SUM( CASE WHEN sex = '1' THEN population ELSE 0 END), --男性人口 SUM( CASE WHEN sex = '2' THEN population ELSE 0 END) --女性人口 FROM Table_A GROUP BY country

2.houseblock记录数与住店时间一致

select * from emp where empno=7369 for update;

3.每日收取的房含要出现在每日房含表中的每一天,首日房含只能出现在首日

select * from emp where empno=7369 for update;

4.一期所有每日房价的价格代码、折扣一样

select * from emp where empno=7369 for update;

5.RT+只能有一套房含

select * from emp where empno=7369 for update;

6.RT*只能有一套房含,且每日价格设定一样

select * from emp where empno=7369 for update;

7.每日房含12个分项的合计与每日房价的一致

select * from emp where empno=7369 for update;

预订 reserve_test001 reserve_test002
1.没有来期大于等于今日的noshow账户

SELECT arr_dt,dpt_dt,acct_no,resv_no FROM rsv_account WHERE acct_stus='NSW' AND arr_dt>今日

2.没有离期小于今日的在店账户

SELECT arr_dt,dpt_dt,acct_no,resv_no FROM rsv_account WHERE acct_stus='STY' AND dpt_dt<今日

3.没有来期小于今日的预订账户

SELECT arr_dt,dpt_dt,acct_no,resv_no FROM rsv_account WHERE acct_stus='RSV' AND arr_dt<今日

4.没有来期大于今日的在店账户

SELECT arr_dt,dpt_dt,acct_no,resv_no FROM rsv_account WHERE acct_stus='STY' AND arr_dt>今日

5.每个账户至少有一个住店客人,且账户表里的住店客人ID对应的存在

SELECT resv_no,acct_no,acct_stus FROM rsv_account WHERE acct_stus IN ('RSV','STY','WAT') AND resv_no NOT IN ( SELECT DISTINCT(M.resv_no) FROM rsv_account M INNER JOIN rsv_account_guest D ON M.resv_no=D.resv_no AND M.acct_no=D.acct_no WHERE acct_stus IN ('RSV','STY','WAT') AND guest_flg='RE' ORDER BY M.resv_no)

6.每个账户只能有一个预订人,且账户表里的预订人ID对应的存在

(SELECT guest_id FROM rsv_account m INNER JOIN rsv_account_guest d ON m.resv_no=d.resv_no AND m.bkguest_id=d.guest_id WHERE acct_stus IN ('RSV','STY','WAT') AND guest_flg='BK' ORDER BY m.resv_no,d.acct_no)
SELECT acct_stus,resv_no,acct_no FROM rsv_account WHERE acct_stus IN ('RSV','STY','WAT') AND acct_no IN ( SELECT d.acct_no FROM rsv_account m INNER JOIN rsv_account_guest d ON m.resv_no=d.resv_no AND m.acct_no=d.acct_no WHERE acct_stus IN ('RSV','STY','WAT') AND guest_flg='BK' GROUP BY d.acct_no HAVING COUNT(*)>1)

账务 financial_test001 financial_test002

1.客账交易金额与账务明细金额一致,12个细项金额也一致

金额一致:
SELECT * from (SELECT mtrn_id,SUM(trntot_amt) as amt1 FROM hpt_fin_transaction GROUP BY mtrn_id) A, (SELECT trn_id,SUM(trn_amt) as amt2 FROM hpt_fin_transaction_jrnl WHERE jrnl_typ='REVN' GROUP BY trn_id) B WHERE A.mtrn_id=B.trn_id AND amt1<>amt2

细项一致:
SELECT * FROM (SELECT mtrn_id,acct_no,room_num,trn_cd,trn_drpt,trntot_amt AS amt1,trn_net+trn_tax1+trn_tax2+trn_tax3+trn_tax4+trn_tax5+trnsvc_net+trnsvc_tax1+trnsvc_tax2+trnsvc_tax3+trnsvc_tax4+trnsvc_tax5 AS amt2 FROM hpt_fin_transaction) A WHERE A.amt1<>A.amt2

2.账单的余额为0

SELECT acct_no,bill_no,SUM(trntot_amt) from hpt_fin_transaction WHERE COALESCE(bill_no,'')<>'' GROUP BY acct_no,bill_no HAVING SUM(trntot_amt)>0 ORDER BY acct_no

3.已结账户余额为0

SELECT a.acct_no,SUM(trntot_amt) from rsv_account a LEFT JOIN hpt_fin_transaction t ON a.acct_no=t.acct_no WHERE a.acct_stus='OUT' GROUP BY a.acct_no HAVING SUM(trntot_amt)>0

4.结账folio里的几个金额与明细一致

SELECT F.acct_no,F.folio_no,credit_amt,debit_amt,check_amt,T.acct_no,T.bill_no,T.normal,trnamt FROM hpt_fin_folio F LEFT JOIN (SELECT acct_no,bill_no,normal,sum(trntot_amt) AS trnamt FROM hpt_fin_transaction WHERE bill_no<>'' GROUP BY acct_no,bill_no,normal ORDER BY acct_no,bill_no) T ON F.acct_no=T.acct_no AND F.folio_no=T.bill_no WHERE F.folio_typ='BILL' AND COALESCE(credit_amt,0)<>COALESCE(debit_amt,0) OR CASE T.normal WHEN 'C' THEN COALESCE(debit_amt,0)<>trnamt WHEN 'D' THEN COALESCE(credit_amt,0)<>trnamt ELSE 1=1 END

5.转账folio里的几个金额与明细一致

SELECT F.acct_no,F.folio_typ,F.folio_no,credit_amt,debit_amt,check_amt,J.trn_amt from hpt_fin_folio F LEFT JOIN (SELECT acct_no,pkgfolio_no,sum(trn_amt) AS trn_amt FROM hpt_fin_transaction_jrnl WHERE jrnl_typ='MOVE' GROUP BY acct_no,pkgfolio_no ORDER BY acct_no,pkgfolio_no) J ON F.acct_no=J.acct_no AND F.folio_no=J.pkgfolio_no WHERE F.folio_typ='MVIN' OR F.folio_typ='MVOUT' AND (COALESCE(credit_amt,0)+COALESCE(debit_amt,0)<>COALESCE(check_amt,0) OR COALESCE(check_amt,0)<>COALESCE(trn_amt,0))

SELECT F.acct_no,F.folio_typ,F.folio_no,credit_amt,debit_amt,check_amt,J.normal,J.trn_amt from hpt_fin_folio F LEFT JOIN (SELECT acct_no,pkgfolio_no,normal,sum(trn_amt) AS trn_amt FROM hpt_fin_transaction_jrnl WHERE jrnl_typ='MOVE' GROUP BY acct_no,pkgfolio_no,normal ORDER BY acct_no,pkgfolio_no,normal) J ON F.acct_no=J.acct_no AND F.folio_no=J.pkgfolio_no WHERE F.folio_typ='MVIN' OR F.folio_typ='MVOUT' AND CASE J.normal WHEN 'C' THEN COALESCE(credit_amt,0)<>J.trn_amt WHEN 'D' THEN COALESCE(debit_amt,0)<>J.trn_amt ELSE 1=1 END

客房 hotelroom_test001 hotelroom_test002
1.空房态没有在店账户

SELECT arr_dt,dpt_dt,resv_no,acct_no,room_num FROM rsv_account WHERE acct_stus='STY' AND room_num IN (SELECT room_num FROM hpt_hk_room WHERE fo_room_stus='V')

2.占用房态必有在店账户

SELECT arr_dt,dpt_dt,resv_no,acct_no,room_num FROM rsv_account WHERE acct_stus='STY' AND room_num IN (SELECT room_num FROM hpt_hk_room WHERE fo_room_stus<>'O')

3.维修房态有对应的维修记录

SELECT room_num FROM hpt_hk_room WHERE room_stus='OOO' AND room_num NOT IN (SELECT room_num FROM hpt_hk_room_repair WHERE repair_typ='OOO' AND start_dt<=当日 AND end_dt>=当日)

PMS Clean SQL Statements

####################delete clean all data################
delete from grp_crm_corp;
delete from grp_crm_corp_address;
delete from grp_crm_corp_blacklist;
delete from grp_crm_corp_contact;
delete from grp_crm_corp_contactway;
delete from grp_crm_corp_contract;
delete from grp_crm_corp_manageunit;
delete from grp_crm_corp_notice;
=====================================================delete from grp_crm_profile;
delete from grp_crm_profile_address;
delete from grp_crm_profile_blacklist;
delete from grp_crm_profile_certificate;
delete from grp_crm_profile_class;
delete from grp_crm_profile_company;
delete from grp_crm_profile_contactway;
delete from grp_crm_profile_notice;
#############################################################################################################
delete from hpt_fin_folio;
delete from hpt_fin_transaction;
delete from hpt_fin_transaction_jrnl;
delete from rsv_account;
delete from rsv_account_guest;
delete from rsv_account_package;
delete from rsv_account_package_price;
delete from rsv_account_rate;
delete from rsv_account_rate_copy;
delete from rsv_account_roomrequest;
delete from rsv_houseblock;
update hpt_hk_room set room_stus='V',clean_stus='C',fo_room_stus='V'

**悲观锁(Pessimistic Lock)/ **乐观锁(Optimistic Lock) : ******悲观锁(Pessimistic Lock) 每次获取数据的时候,都会担心数据被修改,所以每次获取数据的时候都会进行加锁,确保在自己使用的过程中数据不会被别人修改,使用完成后进行数据解锁。由于数据进行加锁,期间对该数据进行读写的其他线程都会进行等待。
乐观锁(Optimistic Lock):****每次获取数据的时候,都不会担心数据被修改,所以每次获取数据的时候都不会进行加锁,但是在更新数据的时候需要判断该数据是否被别人修改过。如果数据被其他线程修改,则不进行数据更新,如果数据没有被其他线程修改,则进行数据更新。由于数据没有进行加锁,期间该数据可以被其他线程进行读写操作适用场景:
悲观锁:比较适合写入操作比较频繁的场景,如果出现大量的读取操作,每次读取的时候都会进行加锁,这样会增加大量的锁的开销,降低了系统的吞吐量。
乐观锁:比较适合读取操作比较频繁的场景,如果出现大量的写入操作,数据发生冲突的可能性就会增大,为了保证数据的一致性,应用层需要不断的重新获取数据,这样会增加大量的查询操作,降低了系统的吞吐量。
总结:两种所各有优缺点,读取频繁使用乐观锁,写入频繁使用悲观锁。houseblock
** 提交BUG主要 COVER 以下三方面BUG######################################################

前端功能BUG — pangtao 开BUG类型选择功能BUG
**后端借口BUG **** — zhaoxiang **开BUG类型选择接口BUG****
**UI设计BUG ** — yangxuelian **开BUG类型选择设计BUG******
################################################################################################这个文档主要是 jdk, eclipse/eclipse plugging,maven 和后端代码示例的配置和开发使用. owner is liubowen.
1.Install JDK Set env and Unzip eclipse and add pluggings
2 Tomcat and openexper plugging
3、按照培训资料配置eclipse中maven插件(maven本地库从 \192.168.20.200\cshispublic\刘博文\JAVA示例工程\ 中获取m2.rar,并解压)
4 import java priject to eclipse

  1. following Training and config projects
    6、解压缩zookeeper-3.4.8.rar,并运行其中zookeeper-3.4.8\bin下的zkServer.cmd7、解压缩redis64-2.6.12.1.rar,并使用“redis-server.exe redis.conf”命令运行8、解压缩apache-tomcat-7.0.27.rar,按照培训在eclipse中配置相应tomcat插件,并运行9、若tomcat中配置的上下文为/jwBsWeb,则访问http://127.0.0.1:8080/jwBsWeb/login.do,登录名密码为admin\1
    10 ,install and use git.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容

  • 一、基础规范(1)必须使用InnoDB存储引擎解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源...
    燕京博士阅读 256评论 1 0
  • <<编程基础-语言SQL.Git.Docker>>SQL.PLSQLhttp://docs.pythontab.c...
    燕京博士阅读 419评论 0 0
  • ——第四工作坊 早上8点50分,我们坐着客车从巴蜀小学出发来到鲁能巴蜀书院,...
    ade3cb3c7e68阅读 754评论 0 0
  • 我竟然,忘记了 竟然错过了重要的日期 难道是因为,爱,出了什么问题? 难道是爱情,还需要巩固和温习? 而我却已经,...
    水摇绢阅读 231评论 1 2
  • 孩子,你终于学会了走路。 这一刻,我盼了很久,心里梦里无数次描摹。 你小的时候,总是躺在我的臂弯里哭闹,那一个个难...
    梅屿鹿阅读 245评论 0 1