当前位置: 首页 > 编程日记 > 正文

推荐系统中的前沿技术研究与落地:深度学习、AutoML与强化学习 | AI ProCon 2019...

640?wx_fmt=png


整理 | 夕颜
出品 | AI科技大本营(ID:rgznai100)

个性化推荐算法滥觞于互联网的急速发展,随着国内外互联网公司,如 Netflix 在电影领域,亚马逊、淘宝、京东等在电商领域,今日头条在内容领域的采用和推动,个性化推荐如今已成为互联网公司背后的无形“推手”,可以说,如今我们打开任意一款联网的产品,用户看到的内容,接收到的信息,绝大部分取决于提供这些商品和服务背后企业的推荐算法团队。

在效率至上的时代,推荐系统将信息生产者与信息受众有效地连接起来,前者可以将信息精准传达给后者,后者也能接收到自己最感兴趣的内容。

然而,推荐系统并非完美无缺。比如,再完美的个性化推荐系统都逃不过“信息茧房”的桎梏,因为人的兴趣会随着时间的变化而改变,甚至自己都无法意识到自己感兴趣的话题和领域有哪些,在何时悄然发生变化,推荐系统更是无法精准“揣度”人的心思,这导致仅凭推荐算法已无法满足用户越来越高的要求。因此,基于推荐算法,结合知识图谱、深度学习、AutoML 等技术的新方法随之诞生,让推荐系统变得更加可信赖。

推荐系统与深度学习、强化学习、AutoML 等新技术将碰撞出什么样的火花?推荐系统用上这些技术之后便“如虎添翼”还是会被其所累?新技术与推荐算法的结合还有哪些新的可能和方向?在2019 AI开发者大会上,来自华为诺亚方舟实验室推荐与搜索项目组资深研究员唐睿明在推荐系统技术分论坛上,为观众分享了华为在这些新技术与推荐系统结合探索中的最新成果。

2019 AI开发者大会是由中国IT社区 CSDN 主办的 AI 技术与产业年度盛会,2019 年 9 月 6-7 日,近百位中美顶尖 AI 专家、知名企业代表以及千余名 AI 开发者齐聚北京,进行技术解读和产业论证。

以下为唐睿明的演讲实录整理,AI 科技大本营整理(ID:rgznai100):

640?wx_fmt=png

我所在的华为诺亚方舟实验室是偏算法研究的团队。今天我将主要从三个方面来向大家介绍一下我们的研究进展,其中强化学习目前偏探索,而深度学习和 AutoML已经落地。深度学习的一些新模型,我们已落地两年左右;AutoML 是最近较新的进展,可以和大家分享。

深度学习在推荐系统中的研究与应用

推荐系统的三个功能模块

640?wx_fmt=png

工业界推荐系统基本上都遵循这样的框架,我们称之为候选集生成、排序和重排序。

推荐技术发展历程及技术趋势

640?wx_fmt=png

我们总结出,推荐模型的技术发展的演进路线基本上经过了协同过滤、广义线性模型,到 2015 年,业界比较流行深度学习模型,之后又出现强化学习模型,以及 AutoML 推荐模型。但是业界的互联网公司真正使用这些技术的时间点远远早于图片中我标注的时间点,因为这些时间点是我根据网上公开的博客、论文资料找到的,资料往往比业界商用来的晚。

深度学习推荐算法挑战:高维稀疏特征+海量样本

640?wx_fmt=png

深度学习模型在推荐系统中的应用面对两个比较重要的挑战,一是如何合理地表达特征,即把一个高维稀疏的向量表达成低维稠密的表示。第二是如何学习特征之间的交互关系。

640?wx_fmt=png

2016 年 YouTube 提出 DNN 框架。这是一个 Embedding+MLP 的算法框架。

640?wx_fmt=png

2018 年,谷歌发表一篇论文,提出推荐系统的交互方式,有内部交互的数据中,如果用传统的非常简洁的 MLP结构来学习,理论上可以学出来,但是这需要非常宽的网络结构。这在实际应用中非常难以实现,因为需要用到的神经网络宽度远远大于 Embedding SIZE。这篇文章同时提出,我们需要一些非线性的网络结构来学习特征之间的交互关系,而非MLP中的简单加法。

640?wx_fmt=png

之后,业界很多工作把一些模型创新点转向了特征交互,实际上特征交互的设计非常合理,因为在深度学习引用到推荐系统之前,推荐系统的这类算法核心技术就是在建模特征之间的关系。在深度学习中,我们为何不把低阶模型(浅层模型)中一些特征交互的设计经验引入到深度学习模型中呢?这样做的优势是可以显示建模与特征之间交互的关系。

640?wx_fmt=png

640?wx_fmt=png

业界有几类特征交互设计:第一种是 Product Operation,用点击操作建模特征交互(从 2016 年开始是 PNN,我们诺亚连续发了两篇论文,分别是 DeepFM 和 PIN);第二种是用attention operation(比如AFM,阿里的DIN,DIEN等);第三种是RNN/CNN(例如谷歌的LatentCross,诺亚的FGCNN等);第四种是Memory-based,因为之前的这些网络结构都没法捕捉到超长序列中的关系。

我们先来介绍一下诺亚的两个深度学习模型DeepFM和PIN。

640?wx_fmt=png

DeepFM 的思想比较简单,在工业界中应用也较为容易,完全没有操练过深度学习的人可以把这个模型当作入门级演练。该模型的思路其实和谷歌的Wide & Deep模型比较类似。当时,学术界对是否将深度学习引入到推荐模型还没有得出定论,到底是浅层模型还是深度模型好,两个学派还在争论。因此谷歌的研究员把这两个模型结合起来,提出了有名、实用的Wide & Deep模型。

在复现Wide & Deep模型的训练过程中我们发现一个问题,即做一个公开数据集(Criteo数据集)时经过匿名化处理,那么如何在这样的特征数据集上做人工的特征交互(以输入Wide & Deep模型中的Wide部分)?在这种情况下,如果无法做特征交互,是否能有一个端到端自动提取低阶特征的模型?在这种思路下,我们提出了DeepFM模型,用FM模型来自动地学习低阶特征交互。

640?wx_fmt=png

第二个模型是 PIN,思路同样聚焦于建模特征之间的相互关系。不同特征交互关系是不同的,有的信息量较大的特征域进行交互应该用较复杂的操作进行建模,而信息量较少的特征域之间的交互可以用相对简单的模型建模。基于这个想法,我们用子神经网络来学习不同特征域之间的交互关系,每一对域之间的交互由一个子神经网络来表达并学习,而具体的参数通过训练数据训练得到。如果深度学习中域的数量为几十,我们可以把所有两个域之间的组合罗列出来,这样的结果是子神经网络的数量非常巨大,在这种情况下神经网络规模必须非常小。由于子神经网络数量较大,我们现在假设所有的神经网络架构一模一样,否则非常难以为数量如此庞大的子神经网络来设计它们的结构(我们用一层或者两层的网络进行原始输入)。今年,我们提出来用AutoML 来解决这个问题,后面会进行详解。

640?wx_fmt=png

我们团队直接服务于华为应用市场,把DeepFM和PIN用在应用市场游戏推荐的场景,当时连续做了 12 天的 AB 测试之后,深度学习模型在更新频次不占优势的情况下,精度大幅度超过了线性模型。而PIN 以复杂的建模轻而易举地击败了 DeepFM。但由于复杂度的原因,PIN 模型最终没有大规模上线,所以在我们内部,主流模型还是 DeepFM。

640?wx_fmt=png

现在我介绍一个个人觉得工业界非常感兴趣的问题,那就是位置偏差问题。很多推荐场景往往不是推荐一个商品,而是一组商品。推荐一组商品时,摆放位置不同会影响推荐的效果,比如某个商品摆放在位置 1 时下载量较高,那是因为用户喜欢它,还是放在了好的位置?这两个影响因子融合起来,产生的影响不容忽视。据我了解,工业界通常处理这个问题时会把位置当做一般特征输入到神经网络进行训练;而在预测时,位置特征的值是无法获取的,则会输入一个默认值做为位置特征。

经过实验,我们团队认为这个方法并不好,因为不同的位置特征的值输入神经网络后,会造成 CTR 预估数值不同。我们对这一点进行了改进,把神经网络分为两部分,一部分只用来建模 Position,另外一部分建模除 Position 之外的所有特征,两部分合在一起得到最后的 CTR。我们希望右边的神经网络能够完全把 Position 的影响去除,这样做 预测时,用右边的神经网络即可。我们选取了 Position1、Position5、Psition9这三个值做为baseline的位置特征值,而我们的模型在预测时不需要 Position。通过三周的线上AB测试发现,我们的模型比固定位置特征值的baseline方法在下载率上有大幅度提升。现在,我们都是用这个模型进行处理位置特征。

AutoML在推荐系统中的研究与应用

640?wx_fmt=png

前面介绍的是过去深度学习模型部分的工作,下一步介绍我们目前正在进行,或者计划进行的工作,那就是 AutoML。大家都在提 AutoML,目前 AutoML 80%-90% 的工作聚焦于CV领域,搜索 CNN 网络架构。

在推荐系统里,我们如何用 AutoML 技术解决模型上之前无法解决的一些问题呢?

基于深度学习的推荐算法主要包括三个模块,第一个是 Embedding,第二个是特征交互,第三层是 MLP,我们现在想做的是 Embedding 和特征交互。我们先来看看业界一些公开工作。

640?wx_fmt=png

第一个工作是第四范式的 AutoCross。对于传统的浅层模型,专家一般只设计二阶特征交互,而用 AutoCross 可以自动地搜索出一阶、二阶或更高阶的特征加入到特征中,精度可以媲美深度学习,甚至用AutoCross搜索出来的特征组合可以用到深度学习模型中。

640?wx_fmt=png

谷歌今年 7 月份公开了一个具有开创性的工作——NIS。基于深度学习的推荐系统模型,绝大部分参数都在Embedding层。现在,很多商用的深度学习模型中不同特征的Embedding Size相同,其中的原因是让矩阵算得更快,或者是为了调参方便。但是这不是合理的做法,举例来说,城市和性别这两个特征相比较,城市的数量有成百上千,但是性别只有两类,男或者女,我们应用使用更多的参数去表达城市这个特征;在城市这个特征内部,也有着不同的特点,如北上广深这些城市,有着很大的样本量,而拉萨、呼和浩特这些城市样本量较小,我们可以用更大的参数去描述北上广深这些城市,而用较少的参数去表达其他城市。总结来说,在参数量给定,资源有限的情况下,如何合理分配 Embedding 参数非常关键。

640?wx_fmt=png

基于深度学习的推荐系统当中,绝大参数聚焦于 Embedding,这部分参数如何合理分配,可能使得深度学习效果得到大幅提升。这是初步的尝试,把整个搜索空间划分成矩阵的形式进行搜索。我们认为,该工作指出了一个正确的方向,我们也在推荐系统中进行相关工作,这个方向是我们的目标之一。

640?wx_fmt=png

下面介绍三个我们团队已经基本上完成的工作。

第一个工作叫做 AutoGroup,高阶特征交互自动化探索。深度学习止步于二级特征交互,没有向三阶、四阶迈进。AutoGroup 的思想是让特征交互有意义。对于不同的阶数(二阶,三阶,…,P阶),AutoGroup会自动地找到一些特征子集,以生成对应阶数的特征交互。AutoGroup 训练复杂度是 DeepFM的两到三倍,在现有计算资源下比较容易实现。8 月份,我们上线测试了三周, AutoGroup 相比于基线在 AB 测试上平均提升 8%。

在该工作过程中,我们还得到另外一个方向:特征交互的自动化选择。现在有很多模型中的二阶特征交互时没有权重的(或者是权重都是1),也有一些工作尝试用加权重的方式来学习不同特征交互的重要性。我们用类似的方法给二阶特征交互加上权重来探索权重到底能学习到什么。我们随机对神经网络进行初始化,把最终学习到的权重进行排序,得到比较重要的特征交互。但通过这种方式学出来的权重极其不稳定,表现为不同的神经网络初始化下,得到的重要的特征交互有着很大的区别。这种不稳定性导致这种权重的定义和学习方法在工业界基本不可用。我们用另外一种方式进行改造(正在申请专利不便公布),发现特征选取的稳定性达 96%。

640?wx_fmt=png

我们选取两个模型,一个是 FM、一个是 DeepFM,经过改造之后的模型比原始的版本相比性能有了大幅提升。如果有更多计算资源,我们还可以把三阶特征交互罗列出来,性能还会继续提升。我们选取了20%有用的特征交互,相比于基线,AB 测试线上平均提升 10%。

640?wx_fmt=png

第三个工作是基于 PIN 模型的改造。PIN 模型有成百上千个子网络,我们现在的做法是不同的子网络有着相同的网络结构,而这些子网络的权重则是由训练数据学习出来的。我们用AutoML方法来决定不同子网络的网络结构,对于一些无用的特征域的交互,可以不用子网络建模,一些非常重要的特征域交互,可以使用复杂的网络结构。初步的实验表明,用AutoML的方法来精细化、自动化地设计不同子网络的网络结构可以带来精度的提升(相比于PIN模型)。

以上是我们在 AutoML 上的一些工作。

强化学习在推荐系统中的研究与应用 

640?wx_fmt=png

因为更加偏向于探索,强化学习在推荐系统中的应用这部分我做简单的介绍。

640?wx_fmt=png

640?wx_fmt=png

我总结了近几年基于强化学习的推荐算法的工作,大致分为三类模型:第一类模型是 Policy-Based,直接决定推荐的策略;第二类模型是 Value-Based,算出每一个候选动作的价值,然后进行推荐;第三类模型是 Policy & Value-Based,是前两种模型的结合。

谷歌在2019年提出了两个模型,其中一个应用在YouTube的视频推荐中。

640?wx_fmt=png

另外一个比较有意思的工作与淘宝相关,这是南京大学俞扬老师在搜索场景中做的一个模拟器。一般这种模拟器都用在游戏场景中,因为没什么损失,而推荐系统就不能这么做。虚拟淘宝的作用是建立一个与淘宝类似的虚拟场景。在这个虚拟场景下,强化学习可以得到充分的训练,从而安全、有效的上线。

640?wx_fmt=png

我们在去年提出了一个工作,TPGR。我们想要解决在将强化学习模型应用推荐系统中时,推荐商品侯选集较大的问题。首先,TPGR模型基于商品候选集建出一棵平衡聚类树,树的叶子节点代表待推荐的商品,非叶子节点代表聚类的一些信息。推荐商品其实就是在这棵树中从根节点走到一个叶子节点的过程,走到哪个叶子节点就推荐哪一个商品。每一个非叶子节点上都有一个小的策略网络,用来决定接下来走向该非叶子节点的哪一个孩子节点。多个策略网络联合决策,共同决定了推荐哪个商品。而推荐商品的用户反馈可以反向传播,更新这条路径上的这些策略网络。

总结与回顾

640?wx_fmt=png

最后总结一下,深度学习算法已成为业界主流,平台+算力+算法+数据是深度学习推荐系统能力的核心竞争力。强化学习加快探索,实现动态自适应的推荐能力。AutoML技术在推荐中的研究也成为热点,不久会有大量的成功应用案例涌现。

演讲嘉宾:

唐睿明,华为诺亚方舟实验室推荐与搜索项目组资深研究员。他于 2009 年在中国东北大学获得学士学位,专业为计算机科学与技术;并在 2014 年从新加坡国立大学计算机专业获得博士学位。2014 年底,他加入华为诺亚方舟实验室。他的研究方向包括机器学习、推荐系统、深度学习、强化学习、AutoML等。在基于深度学习和强化学习的推荐系统领域,他的多篇论文发表于国际顶级会议和期刊,如WWW,IJCAI,TOIS,AAAI,RecSys,SIGIR等。

(*本文为 AI科技大本营整理文章,请微信联系 1092722531


彩蛋~ 


1024程序员节超值特惠限时秒杀!

活动时间:2019年10月24日00:00-24:00凡在此活动期间购买大会单人票,即送价值298元的CSDN VIP年卡哦!

(VIP年卡特权:全站免广告+600个资源免积分下载+学院千门课程免费看+购课9折)

640?wx_fmt=png

推荐阅读


640?wx_fmt=png

你点的每个“在看”,我都认真当成了AI

相关文章:

运维日志管理系统

因公司数据安全和分析的需要,故调研了一下 GlusterFS lagstash elasticsearch kibana 3 redis 整合在一起的日志管理应用:安装,配置过程,使用情况等续一,glusterfs分布式文件系统部署:说明&#xf…

NLP学习思维导图,非常的全面和清晰

作者 | Tae Hwan Jung & Kyung Hee编译 | ronghuaiyang【导读】Github上有人整理了NLP的学习路线图(思维导图),非常的全面和清晰,分享给大家。先奉上GitHub地址:https://github.com/graykode/nlp-roadmapnlp-roadm…

Go在windows10 64位上安装过程

1. 从 https://golang.org/dl/ 下载最新的发布版本go1.10即go1.10.windows-amd64.msi; 2. 双击go1.10.windows-amd64.msi ,使用默认选项,默认会安装到C:\Go目录下; 3. 将C:\Go\bin目录添加到系统环境变量中(默认已自动添加),此目录下有go.exe…

Windows SharePoint Services 3.0 应用程序模板

微软发布的一些WSS模板,看了一下,跟以前看到的模板好像不同模板分两类,一类是站点管理模板,一类是服务器管理模板站点管理模板:董事会、业务绩效报告、政府机构案例管理、课堂管理、临床试验启动和管理、竞争性分析站点…

HAProxy+Keepalived高可用负载均衡配置

一、系统环境:系统版本:CentOS5.5 x86_64master_ip:172.20.27.40backup_ip:172.20.27.50 vip:172.20.27.200web_1: 172.20.27.90web_2:172.20.27.100二、haproxy安装:1.首先172.20.27.40安装上安装:1.1安装 tar zxvf haproxy-1.3.…

Go在Ubuntu 14.04 64位上的安装过程

1. 从 https://golang.org/dl/ 或 https://studygolang.com/dl 下载最新的发布版本go1.10即go1.10.linux-amd64.tar.gz; 2. 将下载的tar包解压缩到/usr/local目录下,执行以下命令,结果如下: $ sudo tar -C /usr/local -xzf go1.…

毕业就拿阿里offer,你和他比差在哪?

我在大学的时候,真的遇到一个神人,叫他小马吧。超前学习。1024,是程序员的节日,恰逢CSDN的20周年,我们准备为你做件大事!我们与AI博士唐宇迪、畅销书作家、北大硕士阿甘等4位老师,共同为大家带来…

04号团队-团队任务5:项目总结会

1.团队信息 团队序号:04 开发项目:北软毕设管理系统 整理人:丛云聪 学号:2017035107185 在团队中的职务:项目经理兼产品经理 2.代码仓库地址 主仓库:https://gitee.com/The_Old_Cousin/StuInfoManage…

微软职位内部推荐-Sr SDE for Win Apps Ecosystem

微软近期Open的职位:Job posting title: Senior Software Design EngineerLocation: China, BeijingLevel: 63Division: Operations System Group EngineeringGroup OverviewOSG is delivering flagship products in Microsoft. China is a second largest economy in the worl…

C# Winform 启动和停止进程

启动和停止进程 一、启动进程 方法1: (1) 创建一个Process组件的实例,例如: Process myProcess new Process(); (2) 设置其对应的StartInfo属性,指定要运行的应用程序名…

在Windows/Ubuntu上使用Visual Studio Code作为Go语言编辑器操作步骤

下面以在Windows10上操作为例,在Ubuntu上操作步骤与windows一致: 1. 从 https://code.visualstudio.com/ 下载windows上的最新发布版本1.21.1,即VSCodeSetup-x64-1.21.1.exe; 2. 以管理员身份运行VSCodeSetup-x64-1.21.1.exe&…

实战:基于tensorflow 的中文语音识别模型 | CSDN博文精选

作者 | Pelhans来源 | CSDN博客目前网上关于tensorflow 的中文语音识别实现较少,而且结构功能较为简单。而百度在PaddlePaddle上的 Deepspeech2 实现功能却很强大,因此就做了一次大自然的搬运工把框架转为tensorflow….简介百度开源的基于PaddlePaddle的…

js获取Html元素的实际宽度高度

第一种情况就是宽高都写在样式表里,就比如#div1{width:120px;}。这中情况通过#div1.style.width拿不到宽度,而通过#div1.offsetWidth才可以获取到宽度。第二种情况就是宽和高是写在行内中,比如style"width:120px;",这中…

新框架ES-MAML:基于进化策略、简易的元学习方法

作者 | Xingyou Song、Wenbo Gao、Yuxiang Yang、Krzysztof Choromanski、Aldo Pacchiano、Yunhao Tang译者 | TroyChang编辑 | Jane出品 | AI科技大本营(ID:rgznai100)【导读】现有的MAML算法都是基于策略梯度的,在试图利用随机策…

Tesseract-OCR 3.04简单使用举例(读入图像输出识别结果)

下面code是对Tesseract-OCR 3.04版本进行简单使用的举例&#xff1a;包括两段&#xff0c;一个是读入带有中文字符的图像&#xff0c;一个是读入仅有英文字符的图像&#xff1a; #include "funset.hpp"#include <iostream> #include <string> #include &…

坑爹的微软官方文档:SQL无人值守安装

我在部署项目的时候&#xff0c;需要用批处理无人值守安装SQLserver,.Net等组件。 于是查了微软官方文档&#xff0c;其中一项内容如下&#xff1a; http://msdn.microsoft.com/zh-cn/library/ms144259.aspx SQL Server 安装程序控件 /IACCEPTSQLSERVERLICEN…

各种 django 静态文件的配置总结【待续】

2019独角兽企业重金招聘Python工程师标准>>> 最近在学习django框架的使用&#xff0c;想引用静态css文件&#xff0c;怎么都引用不到&#xff0c;从网搜了好多&#xff0c;大多因为版本问题&#xff0c;和我现在的使用的dango1.1配置不同&#xff0c;根据资料和公司…

实战:人脸识别的Arcface实现 | CSDN博文精选

来源 | CSDN博客本文将简单讲述arcface从训练到部署的整个过程&#xff0c;主要包括前期的数据筛选和准备&#xff0c;模型训练以及模型部署。此文参考的arcface的代码地址&#xff1a;https://github.com/ronghuaiyang/arcface-pytorch数据集准备1. 首先准备需要训练的人脸数据…

Windows7/10上快速搭建Tesseract-OCR开发环境操作步骤

之前在https://blog.csdn.net/fengbingchun/article/details/51628957 中描述过如何在Windows上搭建Tesseract-OCR开发环境&#xff0c;那时除了需要clone https://github.com/fengbingchun/OCR_Test 工程外&#xff0c;还需要依赖 https://github.com/fengbingchun/Liblept_T…

C#基础系列:实现自己的ORM(反射以及Attribute在ORM中的应用)

反射以及Attribute在ORM中的应用 一、 反射什么是反射&#xff1f;简单点吧&#xff0c;反射就是在运行时动态获取对象信息的方法&#xff0c;比如运行时知道对象有哪些属性&#xff0c;方法&#xff0c;委托等等等等。反射有什么用呢&#xff1f;反射不但让你在运行是获取对象…

Network | sk_buff

sk_buff结构可能是linux网络代码中最重要的数据结构&#xff0c;它表示接收或发送数据包的包头信息。它在中定义&#xff0c;并包含很多成员变量供网络代码中的各子系统使用。 这个结构被不同的网络层&#xff08;MAC或者其他二层链路协议&#xff0c;三层的IP&#xff0c;四…

吴恩达老师深度学习视频课笔记:深度学习的实用层面

训练、验证和测试数据集(training、development and test sets)&#xff1a;训练神经网络时&#xff0c;我们需要作出很多决策&#xff0c;如神经网络分多少层(layers)、每层含有多少个隐藏层单元(hidden units)、学习率(learning rates)、各层采用哪些激活函数(activation fun…

FtpCopy数据定时自动备份软件(FTP定时备份)

1. 软件说明 FtpCopy是一款免费的FTP数据自动备份软件&#xff0c;如果FtpCopy对您有较大的帮助&#xff0c;欢迎捐赠我们&#xff0c;我们对您表示衷心的感谢&#xff01; 如果有需求的话会一直更新下去&#xff0c;将软件做到极致&#xff01; 有问题可直接“反馈留言”。 特…

专注NLP,竹间智能完成4500万美元B+轮融资

近日&#xff0c;竹间智能在成立四周年之际宣布完成4500万美元B轮融资。本轮由某重要战略合作方、云晖资本及领沨资本联合领投&#xff0c;凯思博投资、众安资本、趋势资本、普华资本、一路资本跟投&#xff0c;光源资本担任本轮融资的独家财务顾问。竹间智能方面表示&#xff…

JDBC连接各种数据库方法

为什么80%的码农都做不了架构师&#xff1f;>>> 声明 以下内容收集自网络&#xff0c;并没有亲自测试可用性。 一、Oracle8/8i/9i数据库&#xff08;thin模式&#xff09; Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url&…

OpenCV支持中文字符输出实现

在 http://www.opencv.org.cn/forum.php?modviewthread&tid2083&extra&page1 中&#xff0c;作者给出了原始的在OpenCV中 支持中文字符的输入&#xff0c;原始的实现使用的是OpenCV的C接口&#xff0c;使用起来不怎么方便&#xff0c;这里对原作者的实现进行调整&…

CSDN”原力计划“在召唤:技术人请集结,用原创技术影响万千开发者

技术深不可测、薪资难以想象、着装招人吐槽、发量让人惊叹、笑点着实密集、情商令人堪忧......在这个你我他她它通过网络紧密互联、消息实时互通的 21 世纪&#xff0c;人们对身处技术至高点的程序员们仍然有着以上不接地气、呆板保守的误解&#xff0c;对此&#xff0c;操着一…

.asmx支持post请求或者get请求调用(WebService 因 URL 意外地以 结束,请求格式无法识别 的解决方法)...

使用Post调用以asmx形式提供的webservice时&#xff0c;在本机调试没有调用问题。一旦部署至服务器后会提示如下信息&#xff1a; <html><head><title>因 URL 意外地以“/GetCertByToken”结束&#xff0c;请求格式无法识别。</title><meta name&qu…

关于StartCoroutine的简单线程使用

StartCoroutine在unity3d的帮助中叫做协程&#xff0c;意思就是启动一个辅助的线程。 在C#中直接有Thread这个线程&#xff0c;但是在unity中有些元素是不能操作的。这个时候可以使用协程来完成。 使用线程的好处就是不会出现界面卡死的情况&#xff0c;如果有一次非常大量的运…

Robot Framework(十八) 支持工具

5支持工具 5.1库文档工具&#xff08;libdoc&#xff09; libdoc是一种用于为HTML和XML格式的测试库和资源文件生成关键字文档的工具。前一种格式适用于人类&#xff0c;后者适用于RIDE和其他工具。Libdoc也没有很少的特殊命令来显示控制台上的库或资源信息。 可以创建文档&…