获取商铺信息,以及商铺信息的增删改查

news2024/7/30 10:27:09

本文章主要讲述如何对商铺信息进行基本的增删改查操作,及数据库对比。

1、获取首页仪表盘统计数据接口

待收费金额:

SELECT count(1) as count,IFNULL(sum(total),0)as sum FROM payment_bill WHERE enabled_mark = '1' AND pay_state='0'

欠费数据:

SELECT count(1) as count,IFNULL(sum(total),0)as sum FROM payment_bill WHERE enabled_mark = '1' AND pay_state='0'  and deadline<now()

1.1 接口测试分析

结合数据库进行了验证点的分析

1.1.1 何时要进行数据库方面的验证?

1、接口数据的读取与数据库有关

2、接口的测试点要进行数据来源的验证

3、接口处理后会导致数据库记录的变化,例如新增、更新、删除

4、满足1的前提下,满足2或3,建议追加数据库的验证点

1.1.2  如何编写数据库的验证点

1、统计,查询

和开发进行确认,明确对应的SQL命令

2、新增、更新、删除

要与select命令相对应

如注册了一个用户,可以用表名,手工表打开,人工核对一下,编写SQL的select命令

如更新了一个用户,手机号。数据库查看表名,手工表打开,人工核对一下,编写SQL的select命令。

1.2 接口冒烟测试

1.3接口脚本研发

技术试验:

数据库测试脚本

# 试验1:数据库访问试验
# 导入类库
import pymysql
# 打开数据库连接
db=pymysql.connect(host='vip.51env.net',
                user='readonly',
                password='******',
                port=30001,
                db='zh******',
                charset='utf8')
# 用cursor()方法获取操作游标
cursor = db.cursor()
# 使用execute方法执行SQL语句
sql="SELECT count(1) as count,IFNULL(sum(total),0)as sum FROM payment_bill WHERE enabled_mark = '1' AND pay_state='0'"

# 使用fetchall()方法获取一条数据
cursor.execute(sql)
data=cursor.fetchall()
data1=data[0][0]
data2=data[0][1]
print(data1,data2)
# 关闭数据库连接
db.close()

实验结果:

95 9157423.75

Process finished with exit code 0

注意:这个连接数据库时要先装一个pymysql的库。目前程序用的是1.0.2

1.3.1 获取首页仪表盘统计数据接口 V1.0

主要任务:面向过程的方法封装,主要封装三个方法。

方法1:获取接口实际返回结果

方法2:获取数据库统计结果

方法3:进行二者的比对

注意:注意:逐一封装,逐一调试

方法定义好之后,进行调用。

实现方式:可以分两种

第一种是单一变量,4个变量代表4个参数,def check_result(count1,count2,sum1,sum2)

第二种返回值,一次返回多个:

return data1,data2

默认类型是元组类型

# **********************************************************
# 获取首页仪表盘统计数据接口V1.0脚本实现
# 功能:常量参数传递
# 问题1:token的值放在请求的headers中是否可行?
# ***********************************************************

# 导入类库
import requests,csv
import pymysql
#************************************************************************
# 获取接口的实际统计返回结果
def getdashboard_result():
    # 定义接口地址
    url = 'https://svr-6-9009.share.51env.net/prod-api/statistics/dashboard'
    # 定义token参数
    token = "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjBlNTJhNGUyLWRjNzgtNDg5ZC05Y2E1LTUzYTcyOTI5ZWZjMiJ9.EcPEAg1J86qBwwCxzFm7V2pQ_2FgZuVYTPIaWLqJKPxdKNO3BJ8Y5BVz3YvZpia3XagmmlCB0JywQfXPBZMgHg"
    header = {'Authorization': 'Bearer ' + token}
    # 发送请求并获取
    response = requests.get(url, headers=header).json()
    print(response)

    # 获取代缴费的记录总数
    data_exp1 = response['data']['needPay']['count']
    print(data_exp1)
    # 获取待缴费的金额
    data_exp2 = response['data']['needPay']['sum']
    print(data_exp2)
    return data_exp1,data_exp2
#************************************************************************


#定义数据库统计结果获取

def getdatabase_result():

    # 打开数据库连接
    db=pymysql.connect(host='vip.51env.net',
                    user='readonly',
                    password='zhaoxin@2021',
                    port=30001,
                    db='zhaoxinpms',
                    charset='utf8')
    # 用cursor()方法获取操作游标
    cursor = db.cursor()
    # 使用execute方法执行SQL语句
    sql="SELECT count(1) as count,IFNULL(sum(total),0)as sum FROM payment_bill WHERE enabled_mark = '1' AND pay_state='0'"
    # 使用fetchall()方法获取一条数据
    cursor.execute(sql)
    data=cursor.fetchall()
    print("1",data)
    data1=data[0][0]
    data2 = data[0][1]
    # 关闭数据库连接
    db.close()
    return data1,data2
#******************************************************************
#进行接口实际结果和数据库统计结果的比对
def check_result(count1,count2,sum1,sum2):
    # 比对记录总数是否一致
    if count1==count2:
        print("统计的记录总数一致")
    else:
        print("统计的记录总数不一致")
    # 比对记录总数是否一致
    if sum1==sum2:
        print("统计的总金额一致")
    else:
        print("统计的总金额不一致")



#*******************************************************************************
if __name__ == '__main__':
    #调用接口运行,获取实际结果
    jsondata=getdashboard_result()
    # print(jsondata)
    #调用数据库检查点获取方法,获取数据库的统计结果
    resultdata=getdatabase_result()
    # print(resultdata)
    check_result(jsondata[0], resultdata[0],jsondata[1], resultdata[1])

1.3.2  数据结构和参数的优化V2.0

1、直接使用元组进行比对

实际返回结果的内容通过return来获取,

数据库返回结果要注意去掉元组的嵌套

2、对比方法的参数从4个调整为2个

def check_result(data1,data2):

比对的方法,

# **********************************************************
# 获取首页仪表盘统计数据接口V2.0脚本实现
# 功能:常量参数传递
# 问题1:将测试数据的类型由独立变量改为元组类型
# ***********************************************************

# 导入类库
import requests,csv
import pymysql
#************************************************************************
# 获取接口的实际统计返回结果
def getdashboard_result():
    # 定义接口地址
    url = 'https://svr-6-9009.share.51env.net/prod-api/statistics/dashboard'
    # 定义token参数
    token = "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjcxNjI1NGE0LTUwY2YtNDJhYi1hYTUzLWUyNmRiNDM2NzBlNyJ9.tNoHS2La_nGWG_q-KKlfBRUtFSpocYFuONMl2BklWMMKYCz-o762dXnIwgul7bT1uw_Qay7mH1Va1eDMsgIgWg"
    header = {'Authorization': 'Bearer ' + token}
    # 发送请求并获取
    response = requests.get(url, headers=header).json()
    print(response)
    data1=response['data']['needPay']
    # # 获取代缴费的记录总数
    # data_exp1 = response['data']['needPay']['count']
    # print(data_exp1)
    # # 获取待缴费的金额
    # data_exp2 = response['data']['needPay']['sum']
    # print(data_exp2)
    return data1
#************************************************************************


#定义数据库统计结果获取

def getdatabase_result():

    # 打开数据库连接
    db=pymysql.connect(host='vip.51env.net',
                    user='readonly',
                    password='******',
                    port=30001,
                    db='******',
                    charset='utf8')
    # 用cursor()方法获取操作游标
    cursor = db.cursor()
    # 使用execute方法执行SQL语句
    sql="SELECT count(1) as count,IFNULL(sum(total),0)as sum FROM payment_bill WHERE enabled_mark = '1' AND pay_state='0'"
    # 使用fetchall()方法获取一条数据
    cursor.execute(sql)
    data2=cursor.fetchall()[0]
    # print("1",data)
    # 关闭数据库连接
    db.close()
    return data2
#******************************************************************
#进行接口实际结果和数据库统计结果的比对
def check_result(data1,data2):
    print("比对前的打印",data1,data2)
    if data1==data2:
        print("统计的总金额一致")
    else:
        print("统计的总金额不一致")



#*******************************************************************************
if __name__ == '__main__':
    #调用接口运行,获取实际结果
    jsondata=getdashboard_result()
    # print(jsondata)
    #调用数据库检查点获取方法,获取数据库的统计结果
    resultdata=getdatabase_result()
    # print(resultdata)
    check_result(jsondata,resultdata)

1.3.3  数据结构和参数的优化

直接使用字典进行比对,

实际返回结果本身就是字典类型

data_exp=response['data']['needPay']

数据库返回结果转为字典类型,将元素的数据提取出来,再将其逐一添加到字典中。

# **********************************************************
# 获取首页仪表盘统计数据接口V3.0脚本实现
# 功能:常量参数传递
# 问题1:将测试数据的类型由独立变量改为字典类型
# ***********************************************************

# 导入类库
import requests,csv
import pymysql
#************************************************************************
# 获取接口的实际统计返回结果
def getdashboard_result():
    # 定义接口地址
    url = 'https://svr-6-9009.share.51env.net/prod-api/statistics/dashboard'
    # 定义token参数
    token = "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjU3MTA5ZDU2LTNiYjYtNGI5ZC04YmEwLWE1MDZiNzk5MDNiZiJ9.xSGXVDBbagKmwWMxB0ojnZr6LyY1_LtDbFHrasN1GVAlImHe7WiMnqYqWNCgWUJcd0icnVWmnJ86uflwYki9Fw"
    header = {'Authorization': 'Bearer ' + token}
    # 发送请求并获取
    response = requests.get(url, headers=header).json()
    print(response)
    data_exp=response['data']['needPay']
    # # 获取代缴费的记录总数
    # data_exp1 = response['data']['needPay']['count']
    # print(data_exp1)
    # # 获取待缴费的金额
    # data_exp2 = response['data']['needPay']['sum']
    # print(data_exp2)
    return data_exp
#************************************************************************


#定义数据库统计结果获取

def getdatabase_result():
    dicdata={}
    # 打开数据库连接
    db=pymysql.connect(host='vip.51env.net',
                    user='readonly',
                    password='zhaoxin@2021',
                    port=30001,
                    db='zhaoxinpms',
                    charset='utf8')
    # 用cursor()方法获取操作游标
    cursor = db.cursor()
    # 使用execute方法执行SQL语句
    sql="SELECT count(1) as count,IFNULL(sum(total),0)as sum FROM payment_bill WHERE enabled_mark = '1' AND pay_state='0'"
    # 使用fetchall()方法获取一条数据
    cursor.execute(sql)
    data=cursor.fetchall()
    data1=data[0][0]
    data2=data[0][1]
    dicdata['count']=data1
    dicdata['sum']=data2
    # 关闭数据库连接
    db.close()
    return dicdata
#******************************************************************
#进行接口实际结果和数据库统计结果的比对
def check_result(data1,data2):
    # 比对记录总数是否一致
    if data1==data2:
        print("统计的记录总数一致")
    else:
        print("统计的记录总数不一致")




#*******************************************************************************
if __name__ == '__main__':
    #调用接口运行,获取实际结果
    jsondata=getdashboard_result()
    # print(jsondata)
    #调用数据库检查点获取方法,获取数据库的统计结果
    dbdata=getdatabase_result()
    print(dbdata)
    check_result(jsondata,dbdata)

2、创建商铺接口

真正高效的工作方法是边学边干,边干边完善。

创建商铺接口的难点和重点,是和数据库进行对比验证。分为可见字段和不可见字段。其中不可见字段是测试是否全面深入的分水岭。

脚本技术,在设计脚本时,要构造传入商铺信息的参数是正确的以及不正确的。

添加商铺的收费数据

进入商铺管理里面

里面参数结合前台的参数进行分析。

冒烟测试结果:

#创建商铺接口V1.0接口脚本实现
#功能:常量参数传递
#*************************************************************************
# 导入类库
import json

import requests
# 定义接口地址
url='https://svr-6-9009.share.51env.net/prod-api/baseconfig/House'
# 传入接口参数,获取实际返回值
housedata={
  "block": "01",
  "code": "05-09-12",
  "buildingsquare": "100",
  "usesquare": "50",
  "state": "empty",
  "floor": "12",
  "rentFee": "12000",
  "remark": "test"
}
housejson=json.dumps(housedata)
token = "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImZmNDA5N2M4LWJkMTUtNDc5NC1iNTkxLTlhZmQ2OTExMDJmMSJ9.twNDaNr_d2MLmJjRePp5oNmcSc-gC1UpLSp5O9qQ-zWu6I7GHgc5PropoA3Xa_vdBux8W7z19jsxih6IbbJIXQ"
header = {'Authorization': 'Bearer ' + token,
          "Content-Type":"application/json"}
# 比对结果1:接口返回值
response=requests.post(url,data=housejson,headers=header).json()
print(response)

3、修改商铺接口

实现对商铺信息的修改,put类型

冒烟测试结果:

#更新商铺接口V1.0接口脚本实现
#功能:常量参数传递
#*************************************************************************
# 导入类库
import json

import requests
# 定义接口地址
url='https://svr-6-9009.share.51env.net/prod-api/baseconfig/House/ca0d768d47ec486b8901b2180b8f5766'
# 传入接口参数,获取实际返回值
housedata={
  "id": "ca0d768d47ec486b8901b2180b8f5766",
  "code": "05-09-13",
  "block": "01",
  "state": "empty",
  "floor": "9",
  "buildingsquare": "900.00",
  "rentFee": "9000.00",
  "usesquare": "90.00",
  "remark": "修改3"
}
housejson=json.dumps(housedata)
token = "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjljMzFjNWViLTIyMzUtNGQ2YS1hYTM5LTIxYmY2NWM0ODI5MCJ9.kZSY8EL9OurhRdTfcRkRwJ_QdRspm4i0i2JXQyR-AnJ9Fv0pzt64BOuZEAgB1m4ECmkeNm4ze24Rg3PLanQb8g"
header = {'Authorization': 'Bearer ' + token,
          "Content-Type":"application/json"}
# 比对结果1:接口返回值
response=requests.put(url,data=housejson,headers=header).json()
print(response)

4、删除商铺接口

冒烟结果:

4.1 一般的删除功能

一般的删除功能,从数据库进行数据的删除,Delete类型

4.2 假删除

为什么进行假删除?因为有的数据可能还有用,或者关联它数据的表数据还存在,所以要进行假删除,在数据库设计时,让这条数据的标志位置0进行逻辑删除。

如果数据库没有做假删除的设计,开发人员真正的进行了数据删除,这可能是数据库设计的缺陷。

那么什么样的数据可以进行真删除呢?刚刚创建的商铺、还有没有任何的关联数据的。

假删除什么样的需要用假删除呢?

已经有了关联数据,探讨关联数据是否有必要进行删除,如果有必要,则进行级联删除,那么主表被删除,关联的所有的从表记录也要同时被删除。

如果关联数据不能被删除,只能进行假删除

假删除如何测试?
    1、当前主表关联了哪些其他的从表
    2、新建了一个主表记录,没有关联的从表数据
        进行删除
    3、新建了一个主表记录,关联了一个从表数据
        进行删除
    4、新建了一个主表数据,关联了多个从表数据
        进行删除

#*****************************************************
# 删除商铺接口V1.0脚本实现
# 功能:常量参数传递
#*****************************************************
#导入类库
import requests
#定义接口地址
url='https://svr-6-9009.share.51env.net/prod-api/baseconfig/House/ca0d768d47ec486b8901b2180b8f5766'
token = "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjliMzkyYjFkLTQxZjktNDIwYy1iYTU3LWJkOTdhYTNhNDcyMiJ9.lmOdIGc8f8RpYr2lNx859tlOASHLAz6QtsZRK6XMbKCr9m1qjaZJePrMG72jb3Ck7fVWgv_1JKqqYOGZ-yMhZA"
header = {'Authorization': 'Bearer ' + token}
# 发送接口请求
response=requests.delete(url,headers=header).json()
print(response)

5、分页展示商铺列表接口

分页展示商铺列表接口
    1、参数放在请求头的地址中
    2、返回的结果包含多个内容,如何验证?
        总数量
        随机取一个内容进行验证
    3、脚本封装
        1、接口方法
            返回随机的一个ID
        2、数据库验证的方法
            接收ID,进行数据库的验证

分页展示冒烟结果:

分页展示获取商铺信息列表接口V1.0

#************************************************************************
# 获取商铺信息列表接口V1.0脚本实现
# 功能:常量参数传递
# 重点:参数在地址中体现+验证点如何提取?
#************************************************************************
# 导入类库
import requests
#存放返回结果id列表
idlist=[]
# 定义分页显示的数量
num=10
# 定义接口地址+参数
url='https://svr-6-9009.share.51env.net/prod-api/baseconfig/House?currentPage=1&pageSize='+str(num)+'&sort=desc&sidx='

# 发送请求,获取返回值
# 定义token参数
token = "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjliMzkyYjFkLTQxZjktNDIwYy1iYTU3LWJkOTdhYTNhNDcyMiJ9.lmOdIGc8f8RpYr2lNx859tlOASHLAz6QtsZRK6XMbKCr9m1qjaZJePrMG72jb3Ck7fVWgv_1JKqqYOGZ-yMhZA"
header = {'Authorization': 'Bearer ' + token}
response=requests.get(url,headers=header).json()
print(response)
# 返回值进行验证
# 获取某一个id
for i in range(0,num):
    id=response['data']['list'][i]['id']
    idlist.append(id)
    print(id)
print(idlist)
if len(idlist)==num:
    # print("该接口返回的房屋数量是"+str(num)+",符合接口参数要求")
    print("该接口返回的房屋数量是%d,符合接口参数要求"%num)
else:
    print("该接口返回的房屋数量不符合接口参数请求要求")

分页展示商铺列表接口V2.0

#************************************************************************
# 获取商铺信息列表接口V2.0脚本实现
# 功能:常量参数传递
# 重点:任意提取一个
#************************************************************************
# 导入类库
import requests
import random
import pymysql
#定义后去商铺信息ID的接口方法
def gethouseID():
    idlist = []
    # 定义分页显示的数量
    num = 10
    # 定义接口地址+参数
    url = 'https://svr-6-9009.share.51env.net/prod-api/baseconfig/House?currentPage=1&pageSize=' + str(
        num) + '&sort=desc&sidx='

    # 发送请求,获取返回值
    # 定义token参数
    token = "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjliMzkyYjFkLTQxZjktNDIwYy1iYTU3LWJkOTdhYTNhNDcyMiJ9.lmOdIGc8f8RpYr2lNx859tlOASHLAz6QtsZRK6XMbKCr9m1qjaZJePrMG72jb3Ck7fVWgv_1JKqqYOGZ-yMhZA"
    header = {'Authorization': 'Bearer ' + token}
    response = requests.get(url, headers=header).json()
    print(response)
    # 返回值进行验证
    # 获取某一个id
    for i in range(0, num):
        id = response['data']['list'][i]['id']
        idlist.append(id)
        print(id)
    print(idlist)
    n=random.randint(0,num-1)
    print(n)
    return idlist[n]

#连接后台数据库进行ID的检查,并给出测试结论
def checkID(id):
    # 打开数据库连接
    db=pymysql.connect(host='vip.51env.net',
                    user='readonly',
                    password='zhaoxin@2021',
                    port=30001,
                    db='zhaoxinpms',
                    charset='utf8')
    # 用cursor()方法获取操作游标
    cursor = db.cursor()
    # 使用execute方法执行SQL语句
    #查找是否存在对应id的商铺信息
    sql="SELECT * FROM `config_house` WHERE id ='"+id+"'"
    # 使用fetchall()方法获取一条数据
    cursor.execute(sql)
    db_ID=cursor.fetchall()[0][0]

    print("1",db_ID)
    # 关闭数据库连接
    db.close()

    #判断是否执行成功
    if db_ID=='5c7100ce60d044768223daf1546b3b61':
        print("获取商铺列表接口测试通过")
    else:
        print("获取商铺列表接口测试失败")


if __name__ == '__main__':
    # #调用获取商铺id方法
    id = gethouseID()
    print(id)
    #调用数据库ID检查方法
    checkID('5c7100ce60d044768223daf1546b3b61')

愿每个测试都能成为测试开发,提高职业技能,成为前1%的存在,为社会创造更大的价值,为公司节约更多的成本,为自己和家庭谋求更高的收入,所有人不受职业年龄限制,越老越吃香,直至财富自由;愿测试技术越来越进步,软件质量进一步得到提高,效率提高。愿祖国更加美好,人民更加幸福。多喜乐,常安宁。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1917191.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux-shell编程入门基础

文章目录 前言Shell编程bash特性shell作用域变量环境变量$特殊变量$特殊状态变量 $特殊符号(很重要)其他内置shell命令shell语法的子串截取统计 指令执行时间练习shell特殊扩展变量父子shell的理解内置和外置命令区别 数值计算双括号(())运算letexprexpr模式匹配 bcawk中括号 s…

LabVIEW电容器充放电监测系统

概述 为了对车用超级电容器的特性进行研究&#xff0c;确保其在工作时稳定可靠并有效发挥性能优势&#xff0c;设计了一套车用超级电容器充放电监测系统。该系统通过利用传感器、USB数据采集卡、可调直流稳压电源、电子负载以及信号调理电路&#xff0c;完成对各信号的采集和超…

【matlab】随机森林客户流失预测

目录 引言 核心思想 优点 应用场景 建模步骤 数据集 结果 代码实现 引言 随机森林&#xff08;Random Forest&#xff09;是一种集成学习算法&#xff0c;它通过构建多个决策树并将它们的预测结果进行汇总来提高整体模型的预测准确率、稳定性和泛化能力。随机森林属于“…

CentOS7安装部署git和gitlab

安装Git 在Linux系统中是需要编译源码的&#xff0c;首先下载所需要的依赖&#xff1a; yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker方法一 下载&#xff1a; wget https://mirrors.edge.kernel.org/pub/s…

软考高项论文备考论

软考高项论文备考是一个系统而全面的过程&#xff0c;需要考生从多个方面进行准备。以下是一份详细的备考策略&#xff0c;供考生参考&#xff1a; 一、明确考试要求 首先&#xff0c;考生需要详细了解软考高项论文的考试要求&#xff0c;包括字数限制、结构要求、评分标准等…

Monaco Editor 中文文档整理(超详细、超全面、带demo示例)

地址 Monaco Editor 中文官网&#xff0c;欢迎大家体验。 网站采用 github pages 部署&#xff0c;可能因网络等原因&#xff0c;响应较慢&#xff0c;请耐心等待~ 也欢迎大家对译文内容进行纠正&#xff0c;如果有误&#xff0c;可本文留言、提 ISSUE、亦或直接在内容页的在 …

苹果手机信号为什么比安卓手机信号差,原因你知道吗?

不知道你有没有过这种体会&#xff0c;在使用苹果手机时&#xff0c;信号要比安卓的信号差的一些&#xff0c;这到底是怎么回事呢&#xff1f;接下来&#xff0c;小编从多个角度深入分析下这一问题&#xff0c;给出相应的解决方案&#xff0c;希望能帮助到大家哈&#xff01; ​…

Mac视频录制神器推荐,让你的创作更高效

“mac可以视频录制吗&#xff1f;最近我开始对录制和编辑视频产生了浓厚的兴趣。然而&#xff0c;由于我主要使用的是mac电脑&#xff0c;我发现关于在mac上录制视频的教程和资源相对较少。大家知道如何在mac上录制视频吗&#xff1f;如果有的话&#xff0c;请告诉我具体方法&a…

[WMCTF2020]easy_re

CTF逆向-[WMCTF2020]easy_re-WP_虚机-perl加载器截取_逆向分析ctf实战 百度网盘-CSDN博客 参考博客 收获 perl,反正这个东西流程和upx壳很像,(高级的SMC?) 它会加载一个脚本,来解密源代码,期间call 一个 script 题解: 运行为第一步! 输入类型 输入类型一般就是加密,(期间…

电商之订单价税拆分实现方案

文章目录 案例数据实现思路1、计算出平均金额2、计算每个商品的金额 实现方案1、订单 order 实体2、订单明细 orderDetail 实体3、实现类4、测试启动5、实现结果 在做电商项目的时候&#xff0c;会遇到要对订单明细进行纳税金额拆分&#xff0c;即将税额拆分到每个商品上&#…

最优化(10):牛顿类、拟牛顿类算法

4.4 牛顿类算法——介绍了经典牛顿法及其收敛性&#xff0c;并介绍了修正牛顿法和非精确牛顿法&#xff1b; 4.5 拟牛顿类算法——引入割线方程&#xff0c;介绍拟牛顿算法以及拟牛顿矩阵更新方式&#xff0c;然后给出了拟牛顿法的全局收敛性&#xff0c;最后介绍了有限内存BFG…

【漏洞复现】宏景HCM-LoadOtherTreeServlet SQL注入

声明&#xff1a;本文档或演示材料仅用于教育和教学目的。如果任何个人或组织利用本文档中的信息进行非法活动&#xff0c;将与本文档的作者或发布者无关。 一、漏洞描述 宏景HCM人力资源信息管理系统是一个全面的人力资源管理软件&#xff0c;它覆盖了人力资源管理的各个模块…

龙蜥Anolis OS基于开源项目制作openssh 9.8p1 rpm包 —— 筑梦之路

环境信息 制作过程和centos 7几乎没有区别&#xff0c;此处就不再赘述。 CentOS 7基于开源项目制作openssh9.8p1 rpm二进制包修复安全漏洞CVE-2024-6387 —— 筑梦之路_cve-2024-6387修复-CSDN博客 制作成果展示 tree RPMS/ RPMS/ └── x86_64├── openssh-9.8p1-1.an7.…

【Python 基础】第一个程序

第一个程序 虽然交互式环境对于一次运行一条 Python 指令很好&#xff0c;但要编写完整的 Python程序&#xff0c;就需要在文件编辑器中输入指令。“文件编辑器”类似于 Notepad 或 TextMate这样的文本编辑器&#xff0c;它有一些针对输入源代码的特殊功能。要在 IDLE 中打开文…

常用知识碎片 Vue3 ref和reactive (内含其他常用知识)

目录 ref和reactive ref reactive 总结&#xff1a; setup语法糖 语法糖是啥&#xff1f; Vue3 setup语法糖 Vue3 不使用setup语法糖示例&#xff1a; Vue3 使用setup语法糖示例&#xff1a; ref和eative主要区别 ref和reactive 在 Vue 3 中&#xff0c;ref 和 reac…

linux radix-tree 基数树实现详解

radix tree&#xff0c;又称做基数树&#xff0c;是一种适合于构建key(index)与value(item)相关联的数据结构。内核中使用非常广泛。本文主要聚焦linux内核基数树的代码实现,大量注释过的代码。 radix-tree组织结构如下: 1、数据结构 /** The bottom two bits of the slot de…

SQL 针对上面的salaries表emp_no字段创建索引idx_emp_no

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 针对salaries…

LabVIEW滤波器性能研究

为了研究滤波器的滤波性能&#xff0c;采用LabVIEW设计了一套滤波器性能研究系统。该系统通过LabVIEW中的波形生成函数&#xff0c;输出幅值及频率可调的正弦波和白噪声两种信号&#xff0c;并将白噪声与正弦波叠加&#xff0c;再通过滤波器输出纯净的正弦波信号。系统通过FFT&…

RFID技术革新养猪业,构建智能化养殖场

RFID技术作为无线射频识别技术的一种&#xff0c;凭借着非接触、高效识别的特性&#xff0c;在养殖业行业中得到了广泛的应用&#xff0c;为构建智能化、高效化的养殖场提供了强大的技术支持&#xff0c;给传统养殖业带来了一场前所未有的技术变革。以下是RFID技术在养猪行业不…

【Oracle】实验三 Oracle数据库的创建和管理

【实验目的】 掌握Oracle数据库的创建方法使用DBCA创建数据库在数据库中装入SCOTT用户及其表 【实验内容】 使用DBCA创建数据库&#xff0c;名为MYDB&#xff0c;找到其初始化文件(文本型和服务器型文件都要找到)&#xff0c;查看各类默认位置并记录下来(包括物理文件所在目…