当前位置: 首页 > news >正文

从计费出账加速的设计谈周期性业务的优化思考

1号恐惧症

你有没有这样的做IT的朋友?年纪轻轻,就头发花白或者秃顶,然后每个月周期性的精神不振,一到月底,就有明显的焦虑。如果有,他可能就是运营商行业做计费运营的,请对他好点,特别是在国庆、元旦这种节日,尽量少晒些美食啊、旅游啊这类的照片,否则,他真的可能拉黑你。

为什么这群人会如此恐惧1号呢?因为1号,是运营商计费出账的日子。这个日子,要持续N个小时的紧张劳动,神经绷紧,谨防数据库突然宕机,焦虑程序任务能啥时候跑完,跑的结果对不对。总之,直到做完回去睡觉,都可能会被噩梦惊醒。

周期性业务场景普遍存在,比如会员月度结算、薪酬月度发放,以及林林总总的月度报表等,周期性是生活中的惯性规律。那么有没有办法给这些周期性业务优化减负呢?

原因分析

当然有。

运营商计费系统1号要做的事情,就是批价出账。所谓出账,其实就是生成用户账单的过程。对于正常使用的用户,出完账后,可以查看和打印上个月的消费账单,余额不足的用户,为了防止继续欠费会被停机需要尽快缴费;出账生成的数据,要供财务、经营分析、结算等多个部门使用。

可以看出,出账事关用户感知,事关企业运营,非常重要。出账也需要极高的准确性,不说百分百,但是99.999%还是要做到的,还需要极高的及时性,因为其他部门的同事都等着你的米下锅呢。

可能有同学要问:运营商行业信息化建设那么早,难道还不成熟?怎么出账出的还如此纠结呢?

先说答案。究其根本,还是日益增长的业务量与落后的业务流程之间的矛盾。计费的基本业务流程、数据模型大概在十几年前就基本确定,后面持续在提升,也只是修修补补,没有太大的变化。当然,即使是站在今天的角度,这个模型和流程依然是十分的灵活而且优秀(以十多年没有大的修改就可以看出),但是也存在不适应现在业务的落后的地方。

这个业务流程哪些地方落后呢?

可能对于大部分人,你的手机费用无非就是套餐费+超出套餐的费用,月初收你一笔费用,然后每天实时根据清单算出超出的费用,没啥难算的。但是站在计费人员的角度,还有一些人,他们的费用是某些账目的费用打个折,然后某些加起来保个底,再封顶之类,个人的算完,还要把这些人集合成一个单位,再算一次。

这些业务现在看来十分特殊,但是在十几二十年前,手机还没广泛使用的时候,其实是固定电话的主流业务(也基于硬件情况,甚至连基于套餐的清单优惠都实现不了),这部分用户,不仅固定的费用,是月底才计算(固定费用计算流程),在月底,在完成了所有话单费用的计算之后,还要加上个人的账单优惠流程(用户级优惠)、家庭或单位的账单优惠流程(账户级优惠),甚至还有些杂在一起的其他的优惠(捆绑优惠),而且更加过分的是,这些都只能串行,因为一个费用会影响另一个费用,这个流程计算固定费用的部分,我们称之为租费计算流程,后面的几个优惠,我们称之为账单优惠流程。

这种业务作为主流其实持续了近十年左右,而新的业务也在不停的增长,直到新的业务变成主流。而老的业务也没法去抛弃,这就造成了系统中存在不少的这种用户需要去“特殊处理”(下文会称这些用户为特殊用户),老的业务流程就一直保留了下来。另外一方面,这近十年,用户量增长了十倍的数量级,业务量增长了百倍的数量级。因为业务量的增长,这些业务流程处理时间越来越长(从10个里面挑5个和从100个里面挑5个的效率肯定不一样)。虽然硬件水平在增长,程序也一直在优化,但是得到的效果不能说毫无作用吧,也只能说九牛一毛。

嗯,相信原因已经说清楚,主要还是业务流程的问题。业务在增长,业务的模式也在不停的更新,而业务流程既要适应老的业务,也要适应新的业务。新的业务因为是后来者,所以是在很多都是老的业务流程上打的补丁,虽然满足了业务需要,但是也不能避免的造成了新的系统负担。

那接下来要做的事情就是业务流程的优化了。

整体业务流程的优化

先说一个“错误”答案。

你可能首先想到的,既然老业务流程的用户挑出来慢,那是否可以把这部分用户单独存放,然后在月底对这些用户单独处理呢?不是不行,但是得不偿失。这主要是两个方面的原因,其一,这样涉及的流程改造点太多,从受理、到批价、到最后出账都需要大刀阔斧的改造。另外,部分资费不仅仅包含这部分特殊用户,也包含主流的用户,“融合”是个更大的问题【相信知道预后融合(本地电信套餐类型)这个词的朋友都知道】 其二,即使这么改造了,其实月底仍然要走完原来的流程,虽然会快,但是也不见得能快多少。

我们其实做了一个更加大胆的决定,那就是,在月底的时候,彻底抛弃租费计算流程、账单优惠流程。

通过分析,在包括前文所说的特殊用户在内,其实在月底账单优惠前,95%的用户每月费用不变,仅存在固定费(或者说套餐内费用),只有5%的用户费用发生变更,也就是说会产生超出套餐包含量的计量费。也就是说,因为账单优惠触发的量并不多,我们完全可以在月初的时候,租费以及相关的账单优惠全部预生成出来,然后再计算每天超出的计量费。产生一笔,我们计算一次优惠,这样到了月底,就可以直接不再计算账单优惠了,改造完成后,计费的整体流程如下图:

月底需要做的核心事情,就是图的最下面橙色框的内容,一般只需要1.5小时就可以完成,原来一直要到第二天早上8点才能结束的出账核心流程,在2点一般就可以结束了。

看到这里,你自然会有点认为,这其实还是没抛弃以前的业务模式,也只是在原有的流程上打补丁而已(或者说重新组合),关于这个疑问,我们的理解是,补丁完全可以打,就看打的漂亮不漂亮了。

漂亮还是不漂亮,我们认为应该是有三个标准。

✨ 第一个标准,也是最重要的标准,是有没有影响最终用户的感知。整体业务流程修改后,由于能够更加实时和精准对用户的费用进行判断,催缴、停复机等动作更加及时。最终用户的感知不仅没有影响,反而是优化了,所以是满足的。

✨ 第二个标准,使用系统本身和下游系统的用户的需求是否满足。整体业务流程修改后,加快了出账的速度,当然是满足的。其实除了出账快以外,还抛弃了一个每月25日左右的“预出账”流程,原来做这个流程的目的,一个是为了防止月底出账有大的波动的时候,核查措手不及;另外一个方面,也是尽可能早给下游系统如经营分析系统一些分析的数据。这样改造后,每天都可以核查预期月账的情况,也可以每天都提供下游系统基本准确的数据,这样就可以抛弃掉这个预出账流程,也增加了下游系统分析的准确性。

✨ 第三个标准,是否能尽可能兼容以前的流程。实际上,本次的改造,可以理解为积木的重新组合,对部分组件进行了适配性修改。如果发现问题,还是可以重新搭回以前的流程,实际上,这次改造是否升级都可以用配置开关来实现。实际实施中,各地也存在一些不适配新流程的出账流程,这部分完全保留,也没有问题。

当然,虽然业务流程确实没有伤筋动骨,但是也不是看上去的那么简单。

核心流程改造:租费与优惠

从前文流程可以看到,首先要做的是,把所有用户的租费和优惠在月初先算出来,按天计算后放入中间表,那就是增加月初的租费、优惠预生成流程。

先说简单一点的租费。

在优化之前,租费的计算,周期有三种类型,即月初、每日(日租)、和月底,现在其实要做的,就是把月底的租费计算提前到月初,并考虑用户感知,将租费摊分到每日。实际设计时,我们认为可以直接把所有用户的租费(包括日租)都放在月初执行,直接生成每天的数据,都放入中间表中,后面增加一个中间表到账单表的流程,实现每日的“账单合并”(合账流程)。

这样的话,租费的计算周期,其实就变成了一种类型,都是月初计算,只不过按照原月初、每日和月底的不同的一些业务差别,每天计算的逻辑不太一样而已(比如月初计算的都在1号收费)。

至于优惠就复杂一些。流程上,与租费还是一样的,都是分散到每天,然后再每日抽取合账,主要还是在于优惠的摊分计算方式非常复杂,以下就举两个例子(非计费专业同学可以只感受一下):

赠送固定值的计算方法

需要记录优惠配置的赠送固定值X。

若charge1+…+chargeN-X<=0,则优惠费用为直接对当天费用取负值;若charge1+…+chargeN-X>0并且charge1+…+charge(N-1)-X<=0,则当天的优惠的总费用为charge1+…+charge(N-1)-X,以后每天的优惠费用都为0。

封顶的计算方法

需要记录优惠配置的封顶值X。

若charge1+…+chargeN-X<=0,则第N天优惠费用为0;charge1+…+chargeN-X>0,则第N天优惠费用为X-(charge1+…+chargeN),第N天以后为-charge(N+1)…-charge31。

当然,对于优惠,实际更加需要关心的是,如何做实时的优惠。

第一个问题就是,何时该触发实时优惠?

首先,费用变动肯定需要触发实时优惠流程。这部分我们设计之初,认为可能会存在效率问题,因为所有优惠都需要重算,所以触发的账目为优惠参考的账目组中的账目,但是后面实际测试,实际上每一次实时优惠,即使所有优惠都进行重算,响应基本为毫秒级,且按照批次而非按照清单触发后,触发的次数并不多。所以现在通用的做法是,所有产生的超出费用都会触发优惠的重新计算(可配置),也避免因优惠的各种参考科目问题造成出现费用计算错误的情况。

其次,用户资料的变动需要触发实时优惠流程。用户资料的变动是指用户订购了新的套餐、退出或者加入了某个需要参与优惠的账户或者其他优惠对象等等变动。这种情况下,其实也不是所有的变动都需要触发(比如新套餐为次月生效),还是要进行一些筛选。不过肯定有聪明的同学会立刻觉察到另外一个问题:现在的套餐下,很多都不是一个人的套餐,有些与家庭有关,有些与公司有关,那一个用户的变动,是否需要触发所有人的优惠重算呢?

如果你想到了这个问题,请允许我为你鼓掌。

这就是我们要说的第二个问题:单个用户的费用变动,哪些关联用户要触发实时优惠?又怎么样把这个用户关联的其他用户找出来呢?

关联用户分组以及配套流程改造

熟悉三户模型的朋友知道运营商用户资料实际是用户、账户、客户的三层关系,加上费用计算的套餐(销售品)关系,比较常用的就是这三个关联:套餐关联、账户关联、客户关联。其实还有一些比较随意的捆绑关联,这这些是极少数,可以保留原有流程,单独处理。这几个关联关系比较麻烦的,是这三个关联关系,存在多层的嵌套关联,而某些用户因为有些大账户的存在,会关联数万级别的用户分组,处理会比较慢。

所以,这个关联关系,肯定要先生成出来,而不能是到了相应的触发流程,再去寻找。我们在用户资料层面,引入了关联用户分组这个模型,与之配套的,需要修改一些流程。

首先是生成这个关联用户分组的资料接口。

在实施的时候,参考目前的现有资料,将关联用户分组先生成出来,然后进行用户资料接口的配套改造,根据用户的受理情况,进行一个实时的分组判断和处理,对用户所在的关联分组进行维护。

这样的话,就做到了当某个用户费用变动时,将其关联的其他用户也再触发一次实时优惠。当然这里面存在一些过滤的问题,因为业务规则比较复杂,篇幅有限,这里就不详细描述。

其次是批价流程。

批价流程,最好也根据用户关联分组来区分进程,这么做的好处,其一为了现在引入的分布式计算引入的流框的效率,其二是关联分组肯定会包含套餐关联的用户,处理累积量时,可以尽可能少的遇到累积量并发锁问题,批价效率也自然会提高。当然,批价流程进行改造的前提,前面的预处理流程将“用户关联分组属性”填出来。

还有一点就是优惠对特别大的分组的处理的大账户优惠,进程上需要分开,避免造成处理慢影响其他用户,程序上也需要优化,不过这也是“过于先进,不便展示”的内容,只说一点成果,这个优化之后,我们的大账户处理做到了秒级响应。

当然,各种需要改造的小流程还是挺多,比如话单回退、重处理、补退费等等,这些就不一一赘述了。

画龙点睛:出账流程自动化

虽然是一个保守而传统的计费人,但其实我们非常符合电影里面程序员或者黑客的形象:噼噼啪啦敲一阵键盘,然后得到一个结果,然后想半天,又噼里啪啦敲了一阵键盘,如此往复,直到自己的任务完成。但是这个辛苦,只有自己才能感觉到,除了减少流程、缩短时长,谁不想做到自动化呢?

既然都做到实时的出账了,那为啥不做的更彻底呢?

所以,这次的改造,除了流程的优化以外,我们还做了系统自动化调度、实时可视化展示、智能化的支撑等等。完全摆脱过去人工值守,人工启停应用的低效率处理模式,完全提升了出账效率。

以下是一张成果图,是领导千叮咛万嘱咐让我放进去的,当然,相信你看完这张图,就知道我们做了啥了(别问,问就是过于先进)。

总结:打破常规、实事求是

运营商计费系统是非常传统的IT系统。系统模型、业务流程的基本面,已经运行了20来年。在这20来年中,业务模式在不停更新,业务本身在不停发展,而系统需要满足各个时期的业务,这就造成了系统中存在很多甜蜜的历史负担。要解决这些负担,即需要有打破常规的勇气,也需要有实事求是的态度,来正确对待我们面临的问题。根据解决的问题和带来的影响来评估,方法是大刀阔斧,还是庖丁解牛(或是中间态)。

大刀阔斧可能迅速且能够解决更多的问题,但是可能影响不可承受;庖丁解牛可能辛苦,但是好在影响面小,出现错误还可以回溯。

我们选择了庖丁解牛式的解决,将周期性业务切的更细,以月末的集中处理,分散到每天处理,并加上相应的自动化以及监控,使处理更加放心。当然这个过程也确实非常辛苦,从主流程优化到配套流程改造,设计的每个点都要详细评估;从设计、开发到实施,每一步都做到精细而且精准。

相关文章:

从计费出账加速的设计谈周期性业务的优化思考

1号恐惧症 你有没有这样的做IT的朋友&#xff1f;年纪轻轻&#xff0c;就头发花白或者秃顶&#xff0c;然后每个月周期性的精神不振&#xff0c;一到月底&#xff0c;就有明显的焦虑。如果有&#xff0c;他可能就是运营商行业做计费运营的&#xff0c;请对他好点&#xff0c;特…...

垃圾回收的概念与算法(第四章)

《实战Java虚拟机&#xff1a;JVM故障诊断与性能优化 (第2版)》 第4章 垃圾回收的概念与算法 目标&#xff1a; 了解什么是垃圾回收学习几种常用的垃圾回收算法掌握可触及性的概念理解 Stop-The-World&#xff08;STW&#xff09; 4.1. 认识垃圾回收 - 内存管理清洁工 垃圾…...

让您的客户了解您的制造过程“VR云看厂实时数字化展示”

一、工厂云考察&#xff0c;成为市场热点虚拟现实&#xff08;VR&#xff09;全景技术问世已久&#xff0c;但由于应用范围较为狭窄&#xff0c;一直未得到广泛应用。国外客户无法亲自到访&#xff0c;从而导致考察难、产品取样难等问题&#xff0c;特别是对于大型制造企业来说…...

CV——day80 读论文:DLT-Net:可行驶区域、车道线和交通对象的联合检测

DLT-Net:可行驶区域、车道线和交通对象的联合检测I. INTRODUCTIONII. ANALYSIS OF PERCEPTIONIV. DLT-NETA. EncoderB. Decoder1) Drivable Area Branch(可行驶区域分支)2) Context Tensor(上下文张量)3) Lane Line Branch(车道线分支)4) Traffic Object Branch(目标检测对象分…...

工具篇4.5数据可视化工具大全

1.1 Flourish 数据可视化不仅是一项技术&#xff0c;也是一门艺术。当然&#xff0c;数据可视化的工具也非常多&#xff0c;仅 Python 就有 matplotlib、plotly、seaborn、bokeh 等多种可视化库&#xff0c;我们可以根据自己的需要进行选择。但不是所有的人都擅长写代码完成数…...

京东前端二面常考手写面试题(必备)

实现发布-订阅模式 class EventCenter{// 1. 定义事件容器&#xff0c;用来装事件数组let handlers {}// 2. 添加事件方法&#xff0c;参数&#xff1a;事件名 事件方法addEventListener(type, handler) {// 创建新数组容器if (!this.handlers[type]) {this.handlers[type] …...

如何用AST还原某音的JSVMP

1. 什么是JSVMP vmp简单来说就是将一些高级语言的代码通过自己实现的编译器进行编译得到字节码&#xff0c;这样就可以更有效的保护原有代码&#xff0c;而jsvmp自然就是对JS代码的编译保护&#xff0c;具体的可以看看H5应用加固防破解-JS虚拟机保护方案。 如何区分是不是jsv…...

【蓝桥杯试题】 递归实现指数型枚举例题

&#x1f483;&#x1f3fc; 本人简介&#xff1a;男 &#x1f476;&#x1f3fc; 年龄&#xff1a;18 &#x1f91e; 作者&#xff1a;那就叫我亮亮叭 &#x1f4d5; 专栏&#xff1a;蓝桥杯试题 文章目录1. 题目描述2. 思路解释2.1 时间复杂度2.2 递归3. 代码展示最后&#x…...

【用Group整理目录结构 Objective-C语言】

一、接下来,我们看另外一个知识点,怎么用Group把这一堆乱七八糟的文件给它整理一下,也算是封装一下吧, 1.这一堆杂乱无章的文件: 那么,哪些类是属于模型呢,哪些类是属于视图呢,哪些类是属于控制器呢, 我们接下来通过Group的方式,来给它们分一下类, 这样看起来就好…...

JavaScript高级程序设计读书分享之8章——8.1理解对象

JavaScript高级程序设计(第4版)读书分享笔记记录 适用于刚入门前端的同志 创建自定义对象的通常方式是创建 Object 的一个新实例&#xff0c;然后再给它添加属性和方法。 let person new Object() person.name Tom person.age 18 person.sayName function(){//示 this.name…...

代码随想录算法训练营第四十天 | 343. 整数拆分,96.不同的二叉搜索树

一、参考资料整数拆分https://programmercarl.com/0343.%E6%95%B4%E6%95%B0%E6%8B%86%E5%88%86.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV1Mg411q7YJ不同的二叉搜索树https://programmercarl.com/0096.%E4%B8%8D%E5%90%8C%E7%9A%84%E4%BA%8C%E5%8F%89%E6%90…...

数据结构与算法系列之顺序表的实现

这里写目录标题顺序表的优缺点&#xff1a;注意事项test.c&#xff08;动态顺序表&#xff09;SeqList.hSeqList.c各接口函数功能详解void SLInit(SL* ps);//定义void SLDestory(SL* ps);void SLPrint(SL* ps);void SLPushBack(SL* ps ,SLDataType * x );void SLPopBack(SL* ps…...

基于Linux_ARM板的驱动烧写及连接、挂载详细过程(附带驱动程序)

文章目录前言一、搭建nfs服务二、ARM板的硬件连接三、putty连接四、挂载共享文件夹五、烧写驱动程序六、驱动程序示例前言 本文操作环境&#xff1a;Ubuntu14.04、GEC6818 这里为似懂非懂的朋友简单叙述该文章的具体操作由来&#xff0c;我们的主要目的是将写好的驱动程序烧进…...

python-爬虫-字体加密

直接点 某8网 https://*****.b*b.h*****y*8*.com/ 具体网址格式就是这样的但是为了安全起见,我就这样打码了. 抛出问题 我们看到这个号码是在页面上正常显示的 F12 又是这样就比较麻烦,不能直接获取.用requests库也是获取不到正常想要的 源码的,因为字体加密了. 查看页面源代码…...

计算机组成原理4小时速成5:输入输出系统,io设备与cpu的链接方式,控制方式,io设备,io接口,并行串行总线

计算机组成原理4小时速成5&#xff1a;输入输出系统&#xff0c;io设备与cpu的链接方式&#xff0c;控制方式&#xff0c;io设备&#xff0c;io接口&#xff0c;并行串行总线 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c…...

安全狗受聘成为福州网信办网络安全技术支撑单位

近日&#xff0c;福州市委网信办召开了2022年度网络安全技术支撑单位总结表彰大会。 作为国内云原生安全领导厂商&#xff0c;安全狗也出席了此次活动。 据悉&#xff0c;会议主要对2022年度优秀支撑单位进行表彰&#xff0c;并为2023年度支撑单位举行授牌仪式。 本次遴选工…...

RV1126 在Ubuntu18.04开发环境搭建

1:安装软件终端下输入安装命名&#xff1a;sudo apt install openssh-serversudo apt install android-tools-adbsudo apt install vim net-tools gitsudo apt install cmakesudo apt install treesudo apt install minicomsudo apt install gawksudo apt install bisonsudo ap…...

如何在 C++ 中调用 python 解析器来执行 python 代码(一)?

实现 Python UDF 中的一步就是学习如何在 C 语言中调用 python 解析器。本文根据 Python 官方文档做了一次实验&#xff0c;记录如下&#xff1a; 1. 安装依赖包 $sudo yum install python3-devel.x86_642. 使用 python-config 来生成编译选项 $python3.6-config --cflags -…...

操作系统权限提升(二十三)之Linux提权-通配符(ws)提权

系列文章 操作系统权限提升(十八)之Linux提权-内核提权 操作系统权限提升(十九)之Linux提权-SUID提权 操作系统权限提升(二十)之Linux提权-计划任务提权 操作系统权限提升(二十一)之Linux提权-环境变量劫持提权 操作系统权限提升(二十二)之Linux提权-SUDO滥用提权 利用通配符…...

Zookeeper下载和安装

Zookeeper 1.下载 官方下载地址&#xff1a;https://zookeeper.apache.org/ 版本&#xff1a;apache-zookeeper-3.7.1-bin.tar.gz 2. 安装 2.1 本地安装 2.1.1 安装JDK 见&#xff1a;Hadoop集群搭建 2.1.2 上传安装包 使用远程工具拷贝安装包到Linux指定路径 /opt/s…...

Biomod2 (上):物种分布模型预备知识总结

Biomod11.栅格数据处理1.1 读取一个栅格图片1.2 计算数据间的相关系数1.3 生成多波段的栅格图像1.4 修改变量名称1.4.1 计算多个变量之间的相关性2. 矢量数据处理2.1 提取矢量数据2.2 数据掩膜2.2 栅格计算2.3 拓展插件的使用3. 图表绘制3.1 遥感影像绘制3.2 柱状图分析图绘制3…...

操作指南:如何高效使用Facebook Messenger销售(二)

上一篇文章我们介绍了使用Facebook Messenger作为销售渠道的定义、好处及注意事项&#xff0c;本节我们将详细介绍怎么将Facebook Messenger销售与SaleSmartly&#xff08;ss客服&#xff09;结合&#xff0c;实现一站式管理多主页配图来源&#xff1a;SaleSmartly&#xff08;…...

计算机三级|网络技术|中小型网络系统总体规划与设计方案|IP地址规划技术|2|3

p3 p4一、中小型网络系统总体规划与设计方案网络关键的设备选型路由器技术指标性能指标综述吞吐量背板能力丢包率时延抖动突发处理能力路由表容量服务质量网管能力可靠性和可用性1 吞吐量指路由器的包转发能力&#xff0c;涉及两个内容&#xff1a;端口吞吐量和整机吞吐量&…...

为什么一定要做集成测试?

集成测试&#xff0c;我们都不陌生&#xff0c;几乎我们产品每天都在进行。但是我们真的有好好思考&#xff1a;为什么一定要做集成测试吗&#xff1f;只是为了简单的将“积木”搭起来就行&#xff0c;还是有什么其他的深意&#xff1f; 深意可能不一定会有&#xff0c;但是意…...

前端:CSS

CSS基本语法规则&#xff1a;选择器若干属性声明 style标签&#xff1a;可以放到代码的任意位置处&#xff0c;head/body中都可以 三种写CSS的方式&#xff1a; 1、内部样式&#xff1a;使用style标签&#xff0c;直接把CSS写到html文件中。此时的style标签可以放到任何位置…...

CMMI—组织级过程定义(OPD)

大家好&#xff0c;我是Doker 多克&#xff01;一、目的组织级过程定义&#xff08;Organizational Process Definition&#xff0c; OPD&#xff09;的目的在于建立并维护一套可用的组织级过程资产、工作环境标准以及团队规则与指南二、简介组织级过程资产使得整个组织具有一致…...

华为OD机试真题Python实现【猜字谜】真题+解题思路+代码(20222023)

猜字谜 题目 小王设计了一个简单的猜字谜游戏,游戏的谜面是一个错误的单词,比如nesw,玩家需要猜出谜底库中正确的单词。 猜中的要求如下: 对于某个谜面和谜底单词,满足下面任一条件都表示猜中: 变换顺序以后一样的,比如通过变换w和e的顺序,nwes跟news是可以完全对应的…...

软测入门(三)Selenium(Web自动化测试基础)

Selenium&#xff08;Web端自动测试&#xff09; Selenium是一个用于Web应用程序测试的工具&#xff1a;中文是硒 开源跨平台&#xff1a;linux、windows、mac核心&#xff1a;可以在多个浏览器上进行自动化测试多语言 Selenium WebDriver控制原理 Selenium Client Library…...

备战蓝桥杯——sort函数

备战蓝桥杯——sort函数排列字母lambda匿名函数排列字母 链接: 排列字母 不用多说&#xff0c;很简单的签到题&#xff0c;我们先来了解一下sort函数的用法 list.sort(cmpNone, keyNone, reverseFalse) cmp:进行比较的方法&#xff08;可以自定义排序的方法&#xff0c;通常…...

华为机试题:HJ86 求最大连续bit数(python)

文章目录&#xff08;1&#xff09;题目描述&#xff08;2&#xff09;Python3实现&#xff08;3&#xff09;知识点详解1、input()&#xff1a;获取控制台&#xff08;任意形式&#xff09;的输入。输出均为字符串类型。1.1、input() 与 list(input()) 的区别、及其相互转换方…...

自己建网站做推广/seo百度排名优化

原文自工程师Enmanuel Durn博客&#xff0c;传送门 最近&#xff08;或者不是最近&#xff0c;这完全取决于您什么时候阅读这边文章&#xff09;&#xff0c;我正在跟我的团队伙伴讨论如何去处理这种需要根据不同的值去处理不同的情况的方法&#xff0c;通常对于这种情况下&…...

男生跟男生做口视频网站/优化网站技术

原标题&#xff1a;Linux下iptables防火墙用法规则详解管理网络流量是系统管理员必需处理的最棘手工作之一&#xff0c;我们必需规定连接系统的用户满足防火墙的传入和传出要求&#xff0c;以最大限度保证系统免受。很多用户把 Linux 中的iptables当成一个防火墙&#xff0c;从…...

广西建设培训中心网站/软文自助发布平台系统

今天在用nobody跑 脚本时&#xff0c;报错&#xff1a;登录root su apache 报错&#xff1a; su: cannot set user id: 资源暂时不可用 以前也遇到过这种问题&#xff0c;apache账号突然不可用。当时找的原因是系统进程太多&#xff0c;kill几个进程就可以了。 根本原因是&…...

网站推广的方法有/北京网络营销招聘

使用pyhthon使用turtle图形库&#xff0c;借用简单的几何图形画出漂亮的花形图案 今天我们利用简单的四边形的重复&#xff0c;画出一个漂亮的花朵&#xff0c;先看一下效果&#xff1a; 实现的原理呢&#xff1f;就是以一个点为中心&#xff0c;不停的画正方形&#xff0c;当…...

越南网站怎么做/seo实战密码

前言 PowerShell是为系统管理员设计的基于任务的自动化命令行外壳(Shell)和相关脚本环境。 它建立在.NET框架上。 它是比命令提示符(cmd)强大的命令行解释器&#xff0c;可以解释PowerShell和批处理命令。 powershell一直都是内网渗透的大热门&#xff0c;微软是真正的在推行…...

建材公司网站建设方案/网址大全

目录 [隐藏] 1 环境与软件2 第一步&#xff1a;安装MinGW3 第二步&#xff1a;配置编译环境4 第三步&#xff1a;配置SDL5 第四步&#xff1a;编译 5.1 编译faac5.2 编译fdk-aac5.3 编译x2645.4 配置ffmpeg 6 第五步&#xff1a;利用eclipse编译ffmpeg7 第六步&#xff1a;调试…...