自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

onlywishes的博客

且将新火试新茶,诗酒趁年华 ^-^

  • 博客(89)
  • 收藏
  • 关注

原创 身份证识别系统(安卓)

前言本课题为基于Android平台的身份证识别应用程序开发。其目的是掌握Android开发技术和调用图像处理接口,实现一个功能完善、界面友好、操作简便的身份证识别应用程序。在整个项目的设计中要实现的任务有:调用阿里云OCR接口完成识别、调用相机、获取内部存储图片、数据提取、数据库操作、识别相关界面编写、我的页面编写、首页页面编写以及界面优化等。本项目最终实现了如下主要功能:拍照识别身份证信息、从相册选择照片识别身份证信息、显示身份证信息及头像、保存识别结果、查询识别结果等。

2024-03-03 17:17:55 3257 6

原创 Android编程环境搭建

登录网站下载javaJDK11,具体步骤如图1所示图1 下载安装JDK到 Android Studio 的官网上下载对应安装包,链接为。对应页面如下图2所示图2 Android Studio下载页面。

2024-03-02 20:31:44 1095

原创 数据库课程设计(教室设备故障报修系统)

题目:教室设备故障报修系统第1章 概述随着社会的发展,教育事业的完善,全国范围内接受教育的人数在逐渐递增,教室的管理变得非常重要。教室是学生学习的主要场所,因其使用率居高不下,不可避免会造成教室设备的故障,后勤每天都有着大量的工作需要完成。但是目前大多学校只是针对宿舍的设备故障开发了报修系统,而对于教室设备故障往往还是传统的手工记录报修系统的方式,不仅使用不方便,而且影响时效性,结合目前市面上常见的家电安装的形式,我们特此开发一套大学教室设备故障报修系统,期望大大提升教室维修的效率。

2023-07-01 23:40:12 1664 2

原创 大数据大作业(课程设计)

本课题为信息爬取字数及可视化,首先使用Python编程爬取了凤凰网门户网站新闻栏目22/7/26—7/28三天内的新闻信息,其次,将爬取的新闻整合为一个文件,然后使用Python编程对文件进行分词处理并且可以获取词云,接下来将该文件上传至hadoop平台,利用MapReduce框架编程完成了字数统计,接着就是利用Python编程对字数统计文件中的词频由高到低进行排序,得到出现频次排名前5、前10、前20、前50的词语,最后根据排好序的词语利用Echarts平台分别完成4种可视化效果网页。

2023-06-20 00:02:23 12232 2

原创 UFT软件的安装与注意事项

首次运行UFT会让我们安装许可证,我们点击继续会有30天的试用期。那么当时间到了之后怎么办呢,如下图。之后在到UFT的安装目录的bin文件夹下,找到instdemo.exe文件。UFT软件的安装包网上也有许多,这里我分享下我使用的--->之后我们再次运行UFT就会看到试用时间重新变回30天了。当我们测试前,可以配置一下测试结果的导出,便于查看--->上面的就是我们用的UFT,下面的用来生成运行结果报告。我们运行后会让我们选择插件,根据需要选择就行。运行过程中出现分段截断怎么办---->

2023-05-21 14:13:00 2374

原创 UFT描述性编程及综合练习

最后在Action中写获取Excel中的数据,在进行调用函数库中的登录函数进行登录,要先判断一下数据中是否有数据,没有就从外部Excel中导入,之后获取Excel中设置好的账号和密码,调用Login函数进行登录,然后调用输出函数将结果写到数据表l中,在调用输出日志函数,传入账号和登录结果,即可写入日志。要知道怎么进行改造的,就是把每个对象的属性是什么,值是什么写上就OK了,这样当缺少某个对象时,就不用录制加入,可以直接描述对象的属性和值进行加入。对其改造完成后,就需不在需要对象库了,

2023-05-14 19:34:18 1557 6

原创 UFT——操作模块

分析:就是创建一个只有登录的测试起名为login,然后在创建一个主测试起名字比如main,在main中,调用登录测试副本,然后接着录制订票操作和退出操作,在订票Action中使用本地数据表进行参数化完成迭代。在全局表中设置2行数据,在订单Action的本地表中设置3行数据,观察运行结果。分析:这个和之前的UFT参数化中的测试没什么区别,唯一的区别就是数据表中的数据不一样。然后在创建另一个主测试,在主Action中右键。如下图我们需要在global数据表中进行设置用户名参数化,在订票中设置城市参数化。

2023-04-30 14:48:31 1969

原创 UFT常用检查点的使用

将订单号输出到02_New Order的本地表中,之后打开订单,选择输入订单号复选框,订单号来自于本地表中的输出值。做传真订单操作,当输入完传真号后,插入一个检查点,检查send按钮变为可用状态。完成后打开对象存储库,对传真号进行正则化,避免对象不一致出现问题。之后配置订单号为我们的输出值,这样打开的就是我们新生成的订单。首先命名Action为01_Login,然后就是熟悉的第一步。在02_New Order中打开关键字视图,把城市名字参数化。在03_Logout中把飞机叉掉,结束录制。

2023-04-16 01:06:20 2103 3

原创 实现在SpringBoot项目中使用腾讯云发送短信

在一些项目中总会不可避免的要用到短信服务,比如发送验证码等,那么如何进行短信的发送呢,我们这就来捋一捋,我这里采用的是腾讯云的短信服务。其他的云服务也大致一样。第一步、申请腾讯云的短信服务并配置基本信息首先进入腾讯云的短信服务界面传送门如上图所示,我们会看到要我们申请开通短信服务,开通后它会免费送我们100条国内短信。接下来我们就要进行相关的配置,首先进行创建签名,按照要求填写就行。这步之后创建短信正文的模板创建正文模板我们可以选择使用标准模板。

2023-04-15 13:58:34 1968

原创 UFT参数化的使用

首先要求将操作分为三个Action,并且用SystemUtil.Run 打开程序,这个在前面我们已经做过一次了,因为这个要设置同步点,同步点在录制完成后也可以加,为了简单,我就在录制过程中先加入设置同步点的操作。然后在数据中设置参数化,不要在Global中写任何数据,Global有数据就会执行Global的,最后结果会出错。注意下面输入完名字后,我们点击以下ticket,设置一个数,这样就会加入对象库,便于后面进行随机数的设置。点击对应Action 然后右键进行关联,分别选择对应的导出的对象库就好。

2023-04-10 17:42:15 2257 2

原创 14届蓝桥杯Python总结

(这道题多少有点可惜了)如下图,构造一个区间数组,初始状态为0 ,然后对每一次时间的值,根据给的区间公式 Li-(Ti-Si)~ Li+(Ti-Si)进行求出区间左边和右边,这就可以用到差分数组,在当前t时间时对每个阀门进行求区间,然后对区间加一,当最后dp数组中从起始位置1到管道最右边都为1时,说明每段都检测到了水流,输出时间t,退出循环。首先吐槽一下,为什么测试样例只给一个啊,我写出来,为了测试一下样例,把代码中的范围缩小了下,结果就是缩小了没有改回去,真正测试肯定不通过的(还是怪自己粗心,白忙活了。

2023-04-09 00:58:04 8632 26

原创 录制Flight程序登录的脚本

选中导出的共享对象库。

2023-03-29 23:52:03 904

原创 使用对象存储库管理 UFT 中的对象

脚本代码如下这里吧insert order 改名为new order了,所以最后高亮的是原insert order按钮。下面是我们暂停后界面。接下来点击。

2023-03-29 23:20:28 1327

原创 使用UFT进行脚本录制与回放

就像这样,记住那个地方以及时间,然后填在表里就好。选择地方时候可以不点确定,然后看看时间,截图先,里面的参数是根据时间变化的,要注意你选择的时间。首先新建测试,出现如下界面,点击录制。最后要导出报告:先设置,在运行就可以了。

2023-03-26 21:05:27 1172

原创 基数排序详细说明及实现-python

在第三次分桶时,十位和个位均已按顺序排序,只有百位数字无序,此时将百位置为关键字,分桶完成后,百位数字也就按照桶的顺序有序排列,所有数字位都有序,排序完成。然后再次分桶,按照十位数字分桶,因为个位从小到大有序,所以第二次每个桶中的个位还是有序的,又因为每个桶是按照从小到大排序的,所以依次输出到原序列即可。每个桶分别代表0-9这10个数字,那么对于很多数的序列这只有10个数字是如何排序的呢,其实当数字分到桶中时就完成了一次排序,0-9这10个桶就相当于间接排序了。

2023-01-21 21:09:57 214

原创 桶排序详细说明及实现-python

如下图,我们以序列【5, 24, 78, 65, 54, 94, 15, 36, 68, 35, 3, 78, 89, 56, 47】为例,进行桶排序。可以看到改进前桶排序用时达到了9秒多, 而快速排序用时0.3341秒,明显快排较快,而改进后的桶排序内部也采用了快速排序,结果比快排还要快为0.2383秒,所以改进是有效的且显著的。我们为了比较一下改进是否有效,比较其排序时间更直观。来记录每个函数的排序时间。由于我们用到快速排序,我们可以把我们之前写的快速排序进行一下改装,放到QuickSort.py下。

2023-01-18 22:53:35 1317 1

原创 计数排序详细说明及实现-python

每次排序要开辟一个新的空间存储每个数出现的次数,这样当待排序序列个数很少,但数的跨度非常大时,就会产生很大的空间复杂度,造成空间浪费。计数排序顾名思义,就是统计每个数出现的次数,统计完毕,从小到大依次输出那么序列就是有序的。下面以序列 [5, 3, 5, 7, 4, 3, 1, 3, 5] 九个数为例,进行说明。实现简单,时间复杂度为O(n)

2023-01-15 23:16:23 162

原创 希尔排序详细说明及实现-python

可以发现,每次插入排序,会把每次增量分割得到的子序列进行排序。可以快速使序列向有序方向发展。最后一次增量为1,就是执行一次常规的插入排序,遍历整个序列完成排序。因为当增量为1时,序列已基本有序,交换次数大大减小,规避了从序列末尾一直交换到序列首部等耗时操作。因此希尔排序也可以看做插入排序的一种更高效的改进版本。我们一般以序列长度的一半为增量起始值。即 n//2作为增量起始值。这里的增量的取值不固定,每一种取值方法造成的时间复杂度不一样。

2023-01-13 18:02:09 275

原创 归并排序详细说明及实现-python

当剩下两个序列且分别有序时,只要一次合并就可以使整个序列有序。

2023-01-12 17:01:32 464

原创 堆排序详细说明及实现-python

首先将与堆相应的完全二叉树根结点中的记录移出,该记录称为待调整记录。从空结点的左、右子中选出一个关键字较大的记录,如果该记录的关键字大于待调整记录的关键字,则将该记录上移至空结点中。然后看原 54 位置是否有孩子结点,若有孩子结点,让 tmp 与 孩子最大值比较,小于孩子最大值 50 ,那么把 50 放置到空位置,此时原50 位置为空。保存记录,15 与左右孩子中较大者比较,即与 54 比较,15小,把 54 置于堆顶位置,此时原 54 位置为空。,即对应的完全二叉树根结点的值是所有元素中值最小或最大的。

2023-01-12 00:19:25 569

原创 快速排序实现及思路-python

直到最后left指针和right指针重合,即该空位左边的数都小于tmp,空位右边的数都大于tmp,把tmp置于空位上本次排序结束,获得tmp的位置,进行分治,从下标0到tmp下标-1的位置上和tmp下标+1到列表最后继续重复递归上述过程。最后整个列表即为有序。在第一次排序时,首先选定无序列表的最左边的值为tmp保存,然后从列表最右边向左边取值与tmp比较,若tmp小于等于该值,就继续向左比较,直到一个数小于tmp,就把该数放到左边指针指向的空位上。

2023-01-10 21:46:32 146

原创 插入排序-python

若tmp大于前一个数字那就将tmp插入其后面,本次插入结束,开始抽取下一个数字进行比较插入;若tmp小于前一个数字那就将前一个数字后移一位,tmp继续向前比较,直到前面无数字就插入第一个位置,本次插入结束,开始抽取下一个数字。针对无序列表,我们从第一个数开始,向后续列表逐个抽取数字,每抽取一个数字就保存该数字为tmp,然后逐个与前面的数字进行比较。以此类推,直到抽取完最后一个数字,插入完毕即为有序。直到抽取完列表最后一个数字插入结束,排序完成。

2023-01-09 19:43:47 67

原创 递归与非递归实现选择排序-python

设置第一个元素为最小值,遍历后续列表与设置的最小值比较,若小于最小值就将min_loc置于其位置,一轮就会找到一个最小值位置min_loc,放到第一个位置,第一轮结束。因为最后两个元素只需要比较一次,所以n个元素共循环比较n-1轮。考虑每次循环完一轮就从下一个位置开始,从下一个位置进行递归,判断一下若当前开始循环位置不是最后一个位置就继续,否则结束递归。针对无序列表元素,每次让列表中最小的元素依次从最前面往后放,最后肯定是有序的。排序过程如图所示:每一趟确定一个位置的元素。

2023-01-08 20:30:35 302

原创 递归与非递归冒泡排序-python

列表中每两个相邻的数,如果前面比后面大,则交换这两个数,由于最后两个数只需要比较一次,n个数共需要比较n-1次即可确定一个数,剩下m个数需要比较m-1次确定一个数,即n-1-1次。非递归每完成一次循环就确定一个最大数,不在参与循环比较,那么可以利用这个特性进行递归调用,每次递归列表长度-1.上面这种冒泡排序会把循环执行完毕,即最坏的情况,到最后整个列表才有序,但是时间复杂度是。每次比较完一趟后得到一个固定的数,不在参与排序。,可以进行优化,一旦列表有序就不在循环,直接返回结果。排序过程如图所示,共8趟。

2023-01-07 18:35:20 638

原创 在云服务器上使用Nginx部署java项目和SSL证书

在服务器上下载好对应域名的SSL证书,解压后有四个文件,后缀为 .csr .key _bundle.crt _bundle.pem, 将后缀为 .key 和 _bundle.crt的文件上传到Nginx的。将静态资源部署到Nginx很简单,只要将文件复制到Nginx安装目录下的HTML目录中即可。反向代理服务器位与用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问代理服务器就可以获得目标服务器的资源,反向代理服务器负责将请求转发给目标服务器。

2022-10-12 23:54:53 2887

原创 Linux常用命令(详细)

几个常用命令文件目录操作命令lscdcatmoretailmkdirrmdirrm拷贝移动命令cpmv打包压缩命令 tar文本编辑命令 vim查找命令findgrep几个常用命令lslist查看当前目录下的内容pwd查看当前所在目录cd [目录名]切换目录touch [文件名]touch如果目录不存在,新建文件mkdir [目录名]创建目录rm [文件名]remove删除指定文件Tab键自动补全连续两次Tab键,给出操作提示。

2022-09-27 00:17:35 786

原创 如何在本地电脑连接服务器上的数据库

本地电脑连接服务器上的数据库

2022-07-08 08:45:00 8465

原创 如何在云服务器上部署javaweb项目

在云服务器上部署javaweb项目其实很简单,但是由于在这个过程中全靠自己摸索,踩了很多坑,废话不多说,现在就开始。宝塔这个真是方便,相信大家都安装了:我们就是在宝塔里进行部署的。宝塔中需要安装以下应用:域名这里我会用 apple.com 来表示 2.在宝塔中创建一个数据库,并把我们项目相关的数据库导入 创建好数据库后,点击导入,选择我们项目的SQL文件,SQL文件获取可以在本地数据库上转储SQL文件,然后上传 然后配置项目内数据库连接信息:1. 项目打包我们使用Tomcat进行打包,之后在

2022-07-08 00:17:37 1585

原创 javaGUI中关于用getSelectedItem()获取JComboBox的数据时空指针异常问题

最初遇到这个问题是用JavaGUI来做界面,定义了几个选项,因为不止一个JcomboBox,为了节省力气,就直接复制代码改名字了,但是这样做就会导致出现空指针异常的问题。尝试了好多方法都不行,正当我百思不得其解的时候,突然想起来这个好像是复制的另一个代码,另一个行,为什么这个不行,于是就把它删掉,重新写了一遍,运行成功!所以当你做界面时,碰到空指针异常,数据传输不来的时候,在代码没有任何问题的时候,大概可能是你复段GUI组件代码进行了改名,可以把JavaGUI组件重新写一下试试,获取其他组件空指针异常同样的

2022-06-30 22:42:25 911 2

原创 【LeetCode】229. 求众数 II

解题思路:一)哈希使用哈希表来计算每个数的个数,然后返回相同数的个数判断是否满足要求 ls = [] #结果 lt = {} for i in nums: lt[i] = lt.get(i,0)+1 #计数 for i,j in lt.items(): if lt[i] > len(nums)/3: #判断 ..

2022-03-25 23:13:50 421

原创 【LeetCode】226. 翻转二叉树

解题思路:一):递归要求翻转整棵树,就是要把每个节点的左孩子与右孩子交换,那么可以用递归将左右孩子交换,从下到上,从里到外 if not root: return root cur = root.left root.left = self.invertTree(root.right) root.right = self.invertTree(cur) return roo..

2022-03-19 23:02:59 522

原创 【LeetCode】219. 存在重复元素 II

解题思路:一):暴力解直接俩for循环记录相同值下标并计算两者间距离,距离满足小于K,返回True.注:时间复杂度太高,超时 for i in range(len(nums)): for j in range(i+1,len(nums)): if nums[i] == nums[j] and j-i<=k: return True else: ..

2022-03-18 23:59:44 229

原创 【LeetCode】169. 多数元素

解题思路:一)哈希既然总存在多数元素,也就是目标元素个数总大于总元素的一半,那么可以用哈希表遍历数组,将每个数存进去,每存一个相同的数设置其个数加一,如果有元素的个数大于总数一半,返回该元素 lt = {} for i in range(len(nums)): lt[nums[i]] = lt.get(nums[i],0)+1 #将每个元素加入并计算个数 if lt[nums[i]] ...

2022-03-17 22:57:51 347

原创 【LeetCode】160. 相交链表

解题思路:一)哈希首先明白这是两个链表相交,链表中每个数据都是有单独内存地址的,根据题意从相交位置开始到结束两个链表一直共用每个数据对应的地址。即前面不相交的部分元素都没有共同的地址,后面从相交位置开始就有共用地址了。题目要求返回的就是相交处的值,即第一次出现共用地址的地方,如何找到该值,哈希表摆摆手说还得靠我。先将链表A中元素逐个加入我们的哈希表中,里面每个元素的地址都是不一样的,在对B链表中元素进行遍历,若B中元素存在于哈希表中,说明这两个元素共用一个地址,...

2022-03-16 21:55:26 480

原创 解决pycharm安装第三方库的问题

第一种想要安装什么库,就直接cmd打开pip install 库 ,这种方法可以的,不过速度会有点慢不过,有时候失败就难受。第二种直接在pycharm中安装如图,不过安装失败的情况比较多(可能是我电脑问题)第三种下载了Anaconda的小伙伴,虽然conda里面含有很多库了,但是还有需要下载的就可以直接打开Anaconda Navigator,在里面进行操作,如图四、上面三种都不行有安装Anaconda的话,直接上网搜索 库名加pypi ..

2022-03-14 20:05:39 4726

原创 【LeetCode】141. 环形链表

解题思路:一)判断链表中是否有环,若有环的话元素就不止遍历一次,因此可以用哈希表,元素出现第二次就有环 d = {} while head: d[head] = d.get(head,0)+1 #遍历,将元素就加入表中,并统计次数 if d[head] == 2: #出现2次说明重复,有环 return True ...

2022-02-27 22:57:26 199

原创 【LeetCode】121. 买卖股票的恰当时机

解题思路:相当于从给定天数中,选择两天,一天买入股票并且此时价格在卖出前最低,另一天卖出且此时价格为买入股票后的最高价假设A天买入,B天卖出,于是问题就分为求B前的最小值,A后的最大值可以从第一天开始遍历天数,在过程中保存更新最小值,最大值利润 low = float('inf') maxprofit = 0 for i in range(len(prices)): low = min(low,prices...

2022-02-24 23:17:02 59

原创 【LeetCode】112. 路径总和

解题思路:若存在一条路径上的和为目标值返回TRUE否则FALSE1)可以采用dfs进行递归,假设存在这样一条路径,目标值减去当前节点值后目标值就变为下面某条路径上的和了,当到达叶子节点时,目标值应该和叶子结点值相等,因此对左右子树进行递归,只要有就是TRUE if not root: #节点为空,false return False if not root.left and not root.right: ...

2022-02-21 23:49:28 65

原创 【LeetCode】111. 二叉树的最小深度

解题思路:一)找最小深度,可以分为比较左右子树的最小深度加一,不断递归,先遍历左子树,当遇到叶子结点时返回,记下深度,在遍历右子树,同样遇到叶子返回,然后比较左右深度大小,保存小的,最后加上根节点深度1 if not root :return 0 #如果节点为空反回0 if not root.left and not root.right: #叶子结点,开始计算 return 1 depth = 10**...

2022-02-20 22:57:05 216

原创 【LeetCode】110. 平衡二叉树

解题思路:要求每个节点的左右子树高度差不大于1由于每个节点高度由它的左右子树的高度决定,那么可利用递归先从最底层开始计算高度,若节点无子节点返回0,计算高度若有结点的左右子树高度差大于1,说明其不是平衡的,可返回-1代表不平衡,一旦出现了 -1就说明不平衡,那就从出现-1的地方到根节点 高度都为-1若左右子树高度差都小于等于1,那就取该节点正常高度,继续计算, def height(root): if not root:...

2022-02-19 22:14:46 188

使用软件测试工具UFT来进行脚本录制与回放

从创建测试开始到完成,包含怎么进行多次测试迭代,以及如何导出运行测试报告。

2023-03-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除