Web3.0革命已经开始,中小型企业如何保护企业数据安全?

从Web 2.0向Web3.0迈进,技术界发起了“去中心化”、“个人经济”及“隐私保护”为核心的技术运动。SNS(社交平台)将朝着个人网络信息的可靠性和有效性方向发展;Blog/Vlog/Wiki在Web3.0下提出了更“可控”的概念,换句话说,高可信度的用户撰写的内容将会被更多的人阅览并可能传播。

互联网似乎正在朝着安全、可信的方向发展。

但是,仅仅是趋势。现阶段,人们是对主流社交平台(微信、头条、天猫、优酷、百度)又爱又恨 - 既离不开它们、又厌倦它们。消费者虽然享用了“免费”的服务,可是贡献了更为宝贵的个人数据、牺牲了隐私。另一方面,主流社交平台捏住了消费者的流量侧,反过来席卷B端,让企业们为了引流获客不得不投入到互联网平台的“左右互搏”游戏中,随之而来的,是企业数据安全、商业隐私保护方面的妥协。

Web3.0革命已经悄然开始,中小型企业如何保护企业数据安全?

小程序经济,已经开始制约中小企业的服务及合作

中国有句老话,正所谓“三十年河东,三十年河西”,套用在互联网时代更替上也是非常有道理的。

拥有这些东西,过去是挺难的一件事。对于一般的中小企业乃至大企业里没有什么IT预算的部门,要自己搞一个App首先是技术门槛高,其次是维持难度大,再三是运营能力低。所以,最终的效果是,投入产出比很差,自营的App品质不高、推广成本高、客流量小,得不偿失。最后,很多企业都放弃了这方面的尝试。

小程序这种技术形态的出现,加上各大社交平台的如龙卷风似的推波助流,截至2021年,全网的微信小程序已经超过了700W个应用。

小程序流量经济已经形成,但随之产生了更多的问题。企业把自己的业务以小程序上架后,利用平台的用户流量推广业务,久而久之,企业离不开大平台生态,甚至逐渐成为平台的生态一部分。留存用户的活跃的诸多限制,异业合作,技术上的受限.....已然让企业主们头疼不已。

拥有自己的App、拥有自己的服务、拥有自己的数据,掌握自己的数字化生态

当App的建设成本低至“一键生成”的时候,是否是一种技术上解决的思路?

FinClip小程序容器技术,兼容微信小程序的语法,能够让企业主已有的微信小程序运行在自己的App上。没有App,尝试使用新推出的“小程序转App”功能,快速生成自己的App。 又有社交平台小程序,又有自己的App,换句话说,企业可以“一键生成”社交平台-App的公域-私域闭环:

  • 将已有的社交平台小程序A编译成FinClip小程序代码包(称为A'),通过FinClip企业管理后台上架,形成可嵌入任何App的小程序
  • 通过“小程序转App”功能,一键生成iOS/Android App
  • 在App中打开的小程序A',分享至主流社交平台,打开的是小程序A

现在市面上有许多基于App的流量生态,例如垂直领域的衣食住行头部平台:美团、携程、饿了么....金融平台:工、农、中、建银行等,平台近年来都在使用各种办法活跃自有用户。如果企业主有类似的合作伙伴,利用FinClip的技术,该企业和这些外部伙伴之间,也可以互相实现小程序交换、共享,互相把自己的小程序上架到对方的App,实现了“资源整合”的数字化。

没头绪如何应用到业务上?那就举例说明...

场景一: 小业务团队A,因为热爱,苦苦经营着用户群体。直到去年,由于机缘巧合吃到了社交平台的一波红利,用户量大增,业务迅猛发展。可好景不长,有利润的行业总会出现竞争,A企业由于社交平台行业竞争越来越剧烈,增量用户出现大量下滑,业务拓展受阻。这个时候,A企业决定开始持续经营存量用户,因为用户是小企业的命脉根本,是业务贡献源头。

于是A企业考虑自建App,使用"小程序转App"功能,将原有的微信小程序,快速生成了自有的,能够运行已有小程序的App。

考虑到已有用户的登录体验,通过FinClip的微信登录插件,在自有App中能够快速调用微信登录接口,实现用户账户体系无缝对接微信登录体系。

再有就是支付,既然用户习惯使用微信支付,在已生成的App中集成微信支付SDK,那么企业A便可以利用原有的微信收款账号,在自有App中经营用户啦!

场景二: 企业B属于某集团子公司,拥有数十个微信小程序,由于业务的发展,不同微信小程序,都有用户数量的增长,现在考虑到用户的长期经营,需要有自己的App,并开始长效经营用户。

通过“小程序转App”的功能,企业B能够快速生成自有App。与此同时,通过简单、快速自研一个小程序“门户”页作为App首页,用于跳转不同的小程序。上架后的App,企业还通过“灰度发布”功能进行用户的A/B测试,快速支撑业务的试错及迭代上线,“小团队,大作为”,well done!

任何人、任何企业都可以最低成本拥有自己的App、运行自己的小程序、经营自己的小程序中心。FinClip帮你生成“公域小程序引流拉新-私域小程序服务存量-自营App沉淀客户-构建自有数字化生态"的技术闭环。

本文转载于网络 如有侵权请联系删除

相关文章

  • 数据分享|R语言逻辑回归Logisitc逐步回归训练与验证样本估计分析心脏病数据参数可视化

    原文链接:http://tecdat.cn/?p=26932在进行交叉验证之前,很自然地说“我会预烧50%(比如说)我的数据来训练一个模型,然后用剩下的来拟合模型”。例如,我们可以使用训练数据进行变量选择(例如,在逻辑回归中使用一些逐步过程),然后,一旦选择了变量,就将模型拟合到剩余的观察集上。一个自然的问题通常是“这真的重要吗?”。为了可视化这个问题,考虑我的(简单)数据集使用心脏病数据,预测急诊病人的心肌梗死,包含变量:心脏指数心搏量指数舒张压肺动脉压心室压力肺阻力是否存活让我们生成100个训练样本(我们保留大约50%的观察值)。在它们中的每一个上,我们使用逐步过程,并保留剩余变量的估计值(以及它们的标准差)M=matrix(NA,100,ncol(MODE)) for(iin1:100){ reg=step(glm(PRO=="CS"~.,dataYE\[idx,\]))复制然后,对于7个协变量(和常数),我们可以查看拟合在训练样本上的模型中的系数值,以及拟合在验证样本上的模型上的值idx=which(!is.na(M\[,j\])) plot(M\[idx,

  • PHP类(初学)

    类示例:Cat.phpname=func_get_arg(0); $this->age=func_get_arg(1); $this->color=func_get_arg(2); } } /*不支持 *function__construct($name,$age,$color) { $this->name=$name; $this->age=$age; $this->color=$color; }*/ publicfunctiongetName() { return$this->name; } publicfunctionsetName($name) { return$this->name=$name; } publicfunctiongetAge() { return$this->age; } publicfunctionsetAge($age) { $this->age=$age; } publicfunctionge

  • 零基础到百万年薪漫漫白帽从业路【上】

    视频内容零基础到百万年薪漫漫白帽从业路【上】1080P超清版微信公众号平台本身会对素材进行二次压缩,会导致画面出现不清晰等情况。如有需要查看超清1080P版视频,可以选用以下2种方式进行查看。国内使用腾讯视频做为视频内容存储点,可自定义选择超清1080P。链接地址:https://v.qq.com/x/page/h3232p3tosz.html如果腾讯视频访问出现异常或页面不存在等,可以访问国外Youtube站点进行观看。国外站点作为备用站点也支持超清1080P进行观看任意两种方式皆可选择。国外备用视频站点:链接地址:https://www.youtube.com/watch?v=AH6NnCSu06k其他说明本视频基于直播内容进行了剪辑和优化,去除多余杂音及跳帧画面添加片头增强舒适度,提高观赏性。后续会更新更多技术、娱乐、生活方面的视频及内容,如有其他需求或建议请发送E-mail一起交流,一般看到会及时回复~备注:该内容仅做技术交流和内容备存!!!

  • 在python中使用pymysql往mysql数据库中插入(insert)数据实例

    咱还是直接看代码吧!frompymysqlimport* defmain(): #创建connection连接 conn=connect(host='',port=3306,database='',user='', password='',charset='utf8') #获取cursor对象 cs1=conn.cursor() #执行sql语句 query='insertinto表名(列名1,列名2,列名3,列名4,列名5,列名6)values(%s,%s,%s,%s,%s,%s)' 列名1=值1 列名2=值2 列名3=值3 列名4=值4 列名5=值5 列名6=值6 values=(列名1,列名2,列名3,列名4,列名5,列名6) cs1.execute(query,values) #提交之前的操作,如果之前已经执行多次的execute,那么就都进行提交 conn.commit() #关闭cursor对象 cs1.close() #关闭connection对

  • MYSQL 索引优化

    优化和索引提升SELECT的最好方式是使用索引。索引条目作为表数据行的指针,使得查询能够很快的定位到所要查找的数据。所有的MySQL数据类型都可以创建索引。不必要的索引会浪费存储空间,同时也会增加数据更新成本(数据更新时,索引也相应的需要被更新)。MySQL使用索引索引用于快速定位特定值的表数据行。如果不使用索引,MySQL则需要从第一个数据行开始查找整个数据表,直到找到要查找的数据行,表越大,查找成本越高。如果查找条件的列存在索引,那么MySQL就可以快速定位需要查找的数据位置。大部分MySQL索引(PRIMARYKEY,UNIQUE,INDEX,andFULLTEXT)都是以B-trees形式存储。例外情况:基于R-trees的空间数据索引;MEMORY引擎的HASH索引;InnoDB的基于倒序列表的全文索引。MySQL使用索引的操作情景:Where条件查找。快速排序干扰数据。使用最具选择行的索引。最左前缀索引查找,如:在(col1,col2,col3)存在索引,则可以使用包括(col1),(col1,col2)及(col1,col2,col3)索引来进行查询。联合查询,从联合表查

  • 工作了这么久,文档管理这样做才最有效率

    今年以来,因为疫情的原因经常远程在家办公,很多工作中的文档无可避免的就保存在了家中的电脑上。在恢复现场办公后,又需要将家中电脑的文档与工作电脑中的文档合并起来。后来还经历了电脑故障,需要转移文档。经过这么两三次折腾,对自己文档管理的方式又做了一些深入的思考。其实从08年参加工作以来,根据在学校收到老板的影响,已经形成了基本的按照“时间-事项描述-版本”来整理文件和文件夹的命名方式。但有的时候仍会发生桌面随意堆砌了很多电子文档的情况,类似于下图。分析下来,觉得自己还是没有养成良好的定期整理文档的习惯,因此最近又梳理了自己文档管理的好习惯以及可以改进的方面,整理出来希望自己以后再遇到电脑更换时,不会发生文档混乱或者文档丢失的情况。文件管理方法论工欲善其事,必先利其器。我们在从事工作的过程中,可能会产生很多的文件,包括Word、PowerPoint、Excel等等,专业的人士可能还会产生很多特殊种类的文件,比如摄影师可能会有很多图片、短视频从业者会有很多的视频、开发人员会有很多的项目代码等等。如何对我们工作中产生的这些文档进行管理,在我们需要使用的时候能够快速、准确的定位并打开相应的文档,是

  • 重新认识一个强大的 Gson

    从一个Bug说起不知道你们发现没有,你写完的程序无论当时怎么测试,过一段时间总会出Bug。再说一个每天都在发生的例子:在你写完一篇博客后,立即检查的话,总是查不出自己写的错别字。 据说这些都包含有一些大脑对当下事物处理的逻辑在里边,而且还有心理学因素在里边,我也不懂。反正现在就是程序出Bug了!出Bug了!!Bug!!!事情是这样的,客户端请求服务器开放接口时,我们是以JSON字符串的形式返回的,这时候本来正常返回形式是这样:{ "name":"mafly", "age":"18", "sex":"男" }复制但这个名字叫Mafly的人他不想让你知道他是男是女。就没填性别,程序中默认赋值为null了,JSON序列化时就发生了意想不到的事儿。重现一下那个Bug用于转换Java对象为Json字符串和把Json字符串转换为对象的工具类有很多,Gson、Jackson、FastJson等,我们用的是Gson,它是Google开发的,还据传说它的性能比较强大一些。嗯,对,我们用

  • 黑客最想要的礼物!看完我眼红了 你呢?

    来自:极验(微信号:geetest_jy)如果,球鞋爱好者的梦想画面是这样:包包爱好者的人生理想是这样:那么,一名黑客的人生理想可能就是配齐下面这些设备了........有个黑客朋友(其实在做安全)马上要过生日了,问他想要什么礼物,然后,他丢给了我上面这张图,留言“看着图买”。emmmmmm,这些看起来像零件半成品的东西到底是什么?以及究竟是用来干什么的?接下来就给大家分享下我的研究成果。其实,总的来说就是,这些半成品都是黑客心中的神器。一、世界上最小的电脑——GPD要想开“黑”稳,基础设备一定要好用,目前在黑客心中排在榜首的是GPDpocket。GPDpocket被称为“世上最小的笔记本电脑”,最新的Pocket2机身最薄处仅8mm,重量为515g。Pocket2配置十分优秀:采用第七代IntelCore™m3-8100Y处理器,配备了7英寸夏普炫丽屏,4GB/8GBLPDDR3内存,6800mAh聚合物锂电池。在其官网的介绍中,主打卖点是在Windows10系统下作为移动办公工具,以及影视、游戏等娱乐功能。但由于其体积小,处理高性能游戏的能力以及优秀的英特尔CPU,它被黑客们视为理

  • 无线安全专题_攻击篇--MAC泛洪攻击

    上一篇讲解了无线安全专题_攻击篇--干扰通信,之后不能只是讲解攻击实战,还要进行技术原理和防御方法的讲解。本篇讲解的是局域网内的MAC泛洪攻击,这种攻击方式主要目的是窃取局域网中的通信数据,例如ftp的账号和密码,下面的实战也是以此为例子。接下来按照原理,场景,攻击实战,防御方法的层次步骤进行讲解。一.MAC泛洪攻击的原理MAC泛洪攻击主要是利用局域网交换机的mac学习和老化机制。1.1交换机的工作流程如下:  局域网中的pc1发送数据帧给pc2,经过交换机时,交换机会在内部mac地址表中查找数据帧中的目标mac地址,如果找到就将该数据帧发送到相应的端口,如果找不到,交换机就会向入端口以外的所有端口发送此数据帧(所谓的广播,不过不是广播帧,广播帧的目的mac地址是全F)。   由此可以看到交换机实现交换功能的关键就是内部的mac地址表,那这个内部mac地址是怎么形成的呢?有什么特性呢?接下来就要讲解一下交换机的mac学习和老化机制。1.2交换机的mac学习机制  1.首先咱们看一下内部mac表的结构,内部mac表都是有大小的,一般8k左右,一但mac表满了,其他mac地址就加不进来: 

  • Fragment生命周期及实现点击导航图片切换fragment,Demo

    PS:Fragment简介  Fragment是Android3.0后引入的一个新的API,他出现的初衷是为了适应大屏幕的平板电脑,当然现在他仍然是平板APPUI设计的宠儿,而且我们普通手机开发也会加入这个Fragment,我们可以把他看成一个小型的Activity,又称Activity片段!想想,如果一个很大的界面,我们就一个布局,写起界面来会有多麻烦,而且如果组件多的话是管理起来也很麻烦!而使用Fragment我们可以把屏幕划分成几块,然后进行分组,进行一个模块化的管理!从而可以更加方便的在运行过程中动态地更新Activity的用户界面!另外Fragment并不能单独使用,他需要嵌套在Activity中使用,尽管他拥有自己的生命周期,但是还是会受到宿主Activity的生命周期的影响,比如Activity被destory销毁了,他也会跟着销毁!下面是效果图,生命周期图:加载fragment1--->点击导航点fragment2(扳子)--->点击home键--->回到程序--->点击返回键(退出)。1:创建Fragment1,及xml文件。因为和Fragme

  • 普通程序员想投身 AI 行业?知乎大 V 阿萨姆分享开发者转型的机遇与挑战

    据LinkedIn发布的「全球AI领域人才报告」显示,2011年深度学习技术爆发,人工智能领域有了飞跃式的发展,但核心人才资源的短缺限制了国内人工智能相关行业的发展速度,尤其是在软件、算法、机器学习等基础层领域,有着更加明显的人才需求缺口。与此同时,为了招揽更多优秀的人才,科技公司给AI工程师开出的福利待遇也远远高于其他IT领域开发者的薪资。在市场的强烈需求以及高额薪资的双重诱惑下,不少开发者计划转型AI开发,投身于AI的浪潮中。不过,普通开发者如何基于现有的开发经历顺利过渡到AI行业?人工智能开发者如何构建自己的技能体系?未来工业界需要怎样的人工智能开发人才?这些都是非AI领域程序员不得不面对的问题。带着这些疑问,AI研习社采访了知乎大V阿萨姆,他将结合自身的学习与工作经验为开发者解读转型AI所要面对的困难和挑战。嘉宾简介阿萨姆(现知乎ID为「微调」),普华永道高级数据科学家,负责统计学习模型开发。有丰富的工业及学术经验,擅长将理论知识应用于实践中。曾以第一作者发表过多篇不同领域的学术文章,如人机互动、智能系统等。研究兴趣包括异常检测、集成学习、跨领域机器学习。以笔名“阿萨姆”在知乎

  • 微信小程序-自定义下拉刷新

    最近给别个公司做技术支持,要实现微信小程序上拉刷新与下拉加载更多 微信给出的接口不怎么友好,最终想实现效果类似QQ手机版,一共3种下拉刷新状态变化,文字+图片+背景颜色   最终实现后的效果(这里提示有个不同点就是,自定义了导航条,并且下拉的时候,自定义导航条必须固定)     小程序实现下拉加载2种方式: 1.简单粗暴,直接开启enablePullDownRefresh,开启全局下拉刷新 2.利用scroll-view组件   简单分析下2种方式的利与弊 enablePullDownRefresh方式 优点:简单粗暴,兼容性没问题 缺点1:只能配置背景颜色,没有图片与状态提示的变化。 缺点2:最重要的一点,如果自定义了导航条即使采用fixed定位,整个导航条还是会随页面一起往下拉动,整个布局效果非常变扭。这才是我放弃的最终原因(参考最终效果图,自定义了导航条)   scroll-view方式 优点:可以自定义(参考最终效果图) 缺点:安卓与微信存在不同的兼容问题,所以针对2套平台要有2套处理方式,比较麻烦  

  • Ubuntu 和 CentOS 的运维区别(长期更新)

    介绍Ubuntu和CentOS一些日常使用区别。 CentOS的支持周期为7-10年 Ubuntu的LTS有5年的官方支持 包管理器 centos ubuntu yumupdate-y aptupdate-y yuminstallgit-y aptinstallgit-y yuminstallxx.rpm-y aptinstall-y./xx.deb yumremovexx aptremovexx rpm-ivhxx.rpm dpkg-ixx.deb CentOS的Selinux,在Ubuntu叫AppArmor sudosystemctlstopapparmor sudosystemctldisableapparmor 复制 开发工具 apt-getinstall-ybuild-essentialautoconfautomake 复制

  • AtCoder 选做

    ARC063F https://atcoder.jp/contests/arc063/tasks/arc063_d 因为都是整点,注意到答案一定会大于等于\(2\times\max\{H+1,W+1\}\)所以答案矩形一定有一边大于\(H/2\)或\(W/2\),即至少过大矩形的一条直的对称轴。 考虑答案矩形过\(y=H/2\)的情况,用扫描线从左往右扫,算出每个点向上向下最远能延伸到多远。用单调增的单调栈维护上下的点,用线段树维护以扫描线为右边界,左侧各点为左边界的最大周长。过\(x=W/2\)的同理。就可以做到\(O(n\logn)\)。 但具体实现细节有点多,相当不好写,最后几乎是对着题解写的。 #include<cstdio> #include<algorithm> #include<cctype> usingnamespacestd; inlineintread(){ intx=0;charc=getchar(); while(!isdigit(c))c=getchar(); while(isdigit(c))x=x*10+c-'0'

  • log4net 写日志配置

    1、 nugetinstallpackagelog4net复制 2、站点跟目录新建配置文件 LogWriterConfig.xml <?xmlversion="1.0"encoding="utf-8"?> <configuration> <configSections> <sectionname="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-2.0"/> </configSections> <log4net> <root> <levelvalue="ALL"/> <appender-refref="LogFileAppender"/> </root> <loggername="Idc.Logger"additivity="false"> <appender-refref="LogFileAppender"/> <

  • http协议无状态中的 &quot;状态&quot; 到底指的是什么?!

      本篇文章原文出处为:赛艇队长的《http协议无状态中的"状态"到底指的是什么?!》。这篇文章只是笔者在看赛艇队长的文章时所做的笔记。所谓笔记就是对他人的文章阅读、消化后,加上自己的一些理解所写而成。当然要看原汁原味的文章,还是推荐读者看文章的原文。作者的思路很好。 只是作者认为HTTP是无连接的,而我个人认为HTTP1.0是短链接的。 1、http协议无状态中的【状态】到底指的是什么?! 先来看这句话的另外两个概念:(标准的http协议是无状态的,短连接的)。 这里的无短连接指的是http1.0协议。http1.1中加入了Connection:keep-alive,实现了http的长链接。 标准的http协议指的是不包括cookies,session,application的http协议,他们都不属于标准协议,虽然各种网络应用提供商,实现语言、web容器等,都默认支持它。 短连接指的是什么 每一个访问都是短连接,服务器挨个处理访问队列里的访问,处理完一个就关闭连接,这事儿就完了,然后处理下一个新的。 每一个HTTP请求都由它自己独立的连接完成;这意味着发

  • spring基础(一)

    1packagecom.oracle.demo01; 2 3importcom.oracle.factory.InstanceFactory; 4importcom.oracle.pojo.User; 5importcom.oracle.pojo.User2; 6importorg.junit.Test; 7importorg.springframework.beans.factory.BeanFactory; 8importorg.springframework.context.ApplicationContext; 9importorg.springframework.context.annotation.AnnotationConfigApplicationContext; 10importorg.springframework.context.support.ClassPathXmlApplicationContext; 11importorg.springframework.context.support.FileSystemXmlApplicationContext; 12

  • JSON解析代码

    /** *解析有数据头的纯数组 */ privatevoidparseHaveHeaderJArray(){ //拿到本地JSON并转成String StringstrByJson=JsonToStringUtil.getStringByJson(this,R.raw.juser_2); //先转JsonObject JsonObjectjsonObject=newJsonParser().parse(strByJson).getAsJsonObject(); //再转JsonArray加上数据头 JsonArrayjsonArray=jsonObject.getAsJsonArray("muser"); Gsongson=newGson(); ArrayList<UserBean>userBeanList=newArrayList<>(); //循环遍历 for(JsonElementuser:jsonArray){ //通过反射得到UserBean.class UserBeanuserBean=gson.fromJson(user,newTypeTok

  • Redux的学习1

    1、是什么? 类似于vuex是做状态管理的 2、store对象    3、如何创建store对象    4、action的理解:代表一个行为,一个操作,例如增删改查    4、reducer            5、store    6、 应用中所有的state都以一个对象树的形式储存在一个单一的 store 中。 惟一改变state的办法是触发 action,一个描述发生什么的对象。为了描述action如何改变state树,你需要编写 reducers。 就是这样! import{createStore}from'redux' /** *这是一个reducer,形式为(state,action)=>state的纯函数。 *描述了action如何把state转变成下一个state。 * *state的形式取决于你,可以是基本类型、数组、对象、 *甚至是Immutable.js生成的数据结

  • 【git】Git回退代码到指定版本

    1.查看所有的历史版本,获取你git的某个历史版本的id,gitlog2.回退本地代码库:gitreset--hardID3.推送到远程服务器:gitpush-f-uoriginmaster4.重新拉代码:gitpull

  • 10.25 考试总结

    10.25考试总结 距离退役死亡越来越近。 circle 其实只要暴力查找就可以了 搜索跑图,稍微注意一下不要让法师反复横跳就可以了,多加一个数据就可以解决只要一找到已经访问过的就证明是环了.... 开始想复杂了,以为可能有一个奇葩的图....原来就是一个简单的环啊 path 其实就是找必经之路,把一些可以多选择的....缩点,实际上就是tarjan缩点,然后找桥。 桥就是我们要的必经之路 然后又要去学tarjan.....模板一下背不下来 mst 首先用prim作出最小生成树。然后考虑修改哪条边的权值。 修改的边一定要选,那么我们只需要将这条边两端的点a;b在最小生成树上的路径找出来,然后删掉路 径中边权最大的即可得到答案。 时间复杂度$$O(n^2)$$ final 以我的能力就是暴力dijkstra了,最后好像是string爆空间了。实际上最好的应该是记录路径是最好的 这题有思维性,挺有意思的。三种算法都值得写。 用dijkstra+heap实现算法。那么主要的问题是如何判断两条路径的字典序。 笨一点的方法:如果是两个字符串,则可以用二分+hash截取相同的前缀。然后

相关推荐

推荐阅读