Cherry

沃尔玛的产品知识图谱

若如初见. 提交于 2020-08-08 07:25:17
作者|Karthik Deivasigamani 编译|VK 来源|Medium 介绍 电子商务目录是通过从卖家、供应商/品牌获取数据而创建的。合作伙伴(销售商、供应商、品牌)提供的数据往往不完整,有时会遗漏我们客户正在寻找的关键信息。尽管合作伙伴遵循一个规范(一种发送产品数据的约定格式),但在标题、描述和图像中隐藏着大量数据。除了我们的合作伙伴提供的数据外,互联网上还有许多非结构化数据,如产品手册、产品评论、博客、社交媒体网站等。 沃尔玛正致力于构建一个零售图谱(Retail Graph),捕捉有关产品及其相关实体的知识,以帮助我们的客户更好地发现产品。它是一个产品知识图谱,可以在零售环境中回答有关产品和相关知识的问题,可用于语义搜索、推荐系统等。本文进一步阐述了什么是零售图谱、如何构建零售图谱、围绕图模型的技术选择、数据库和一些用例。 沃尔玛的零售图谱是什么 零售图谱捕获了零售世界中存在的产品和实体之间的连接。实体是存在的物体、事物、概念或抽象,例如客厅、野生动物摄影、颜色、农舍风格。我们关注的实体大致有两种:抽象的和具体的。前者帮助我们回答诸如“夏日游泳池派对用品”、“农家客厅家具”、“野生动物摄影镜头”之类的问题,而后者帮助我们回答诸如“蓝色牛仔裤裤子”、“木制餐桌”之类的问题。该图谱还将产品之间的关系捕获到两个类别,替代品和补充品(附件、兼容产品等)。它还试图将抽象概念

Redis详解(五)------ redis的五大数据类型实现原理

感情迁移 提交于 2020-08-07 14:00:27
  前面两篇博客,第一篇介绍了 五大数据类型的基本用法 ,第二篇介绍了 Redis底层的六种数据结构 。在Redis中,并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这些对象系统也就是前面说的五大数据类型,每一种数据类型都至少用到了一种数据结构。通过这五种不同类型的对象,Redis可以在执行命令之前,根据对象的类型判断一个对象是否可以执行给定的命令,而且可以针对不同的场景,为对象设置多种不同的数据结构,从而优化对象在不同场景下的使用效率。 1、对象的类型与编码   Redis使用前面说的五大数据类型来表示键和值,每次在Redis数据库中创建一个键值对时,至少会创建两个对象,一个是键对象,一个是值对象,而Redis中的每个对象都是由 redisObject 结构来表示: typedef struct redisObject{ //类型 unsigned type:4; //编码 unsigned encoding:4; //指向底层数据结构的指针 void *ptr; //引用计数 int refcount; //记录最后一次被程序访问的时间 unsigned lru:22; }robj ①、type属性   对象的type属性记录了对象的类型,这个类型就是前面讲的五大数据类型:      可以通过如下命令来判断对象类型: type key  

是否有可能从另一个git存储库中挑选一个提交?

独自空忆成欢 提交于 2020-08-06 10:17:07
问题: I'm working with a git repository that needs a commit from another git repository that knows nothing of the first. 我正在使用一个git存储库,需要从另一个不知道第一个存储库的git存储库提交。 Typically I would cherry-pick using the HEAD@{x} in the reflog, but because this .git knows nothing of this reflog entry (different physical directory), how can I cherry-pick this, or can I? 通常我会在reflog中使用 HEAD@{x} 进行挑选,但是因为这个 .git 对这个reflog条目(不同的物理目录)一无所知,我怎么能选择这个,或者我可以吗? I'm using git-svn . 我正在使用 git-svn 。 My first branch is using git-svn of the trunk of a Subversion repo, and the next branch is using git-svn on a Subversion branch.

屡屡失败犯错的我为什么没有被开除

自作多情 提交于 2020-08-04 12:25:27
我是词典里 “失败” 一词旁边的插图,这就是为什么我擅长我的工作的原因。 我的职称是高级软件工程师,但我最亲近的同事并不这么称呼我。由于我摧毁一切,他们管我叫“樱桃炸弹”(正巧我姓“樱桃”)。我定期会遇到的失败已经可以影响到我们的季度性收益和停机时间。简单的来说,我就是你所听说过的生产灾难:“别动,啥都别做,无论何时何地。” 我的职业生涯始于支持服务台,在那里我写了一些循环,破坏了高端客户的服务器。我曾在没有警告的情况下将生产应用程序关闭了长达八个小时,并且在试图使得情况好转的过程中摧毁了无数个集群,有几次只是因为我打错了字。 我是我们在 Kubernetes 中设有灾难恢复(DR)集群的原因。我是个混乱的工程师,我们有一个应用程序,它的故障恢复计划还从未测试过,而我在没有警告的情况下,就教人们如何快速行动和排除故障。我作为可能失败的最好例子而存在,这实际上是有史以来最酷的事情。 我和消失的 K8s 集群 我的正式职责之一涉及到我们的应用架构。对于任何形式的架构改动,我都要进行代码的编写与测试,看看有什么可能性。近来,据说这成了我老板史诗级的痛苦,这只是轻描淡写。 我们在 Kubernetes 上运行我们的大多数基础架构,Kubernetes 以其弹性著称。尽管有这样的声誉,我还是使得两个集群,好吧,消失了。你可能会好奇我是怎么做到的,很容易, terraform destroy

Tower for Mac(强大的Git客户端) 5.0

我只是一个虾纸丫 提交于 2020-07-29 09:58:55
你是否需要一款简单易用的Git客户端呢? Tower mac版 是Macos上一款强大的Git客户端,具有强大的Git资源库管理、版本控制、分支管理等等,已被很多知名公司使用,并且能够和Xcode、GitHub、Beanstalk、BBEdit等软件无缝结合使用。 功能介绍 1、便于使用 无需记住复杂的命令(及其参数)。Tower使许多高级操作像拖放一样简单。 2、撤消一切 撤消本地更改 恢复旧版本 还原提交 恢复已删除的提交 撤消分支删除 3、清晰的可视化,更好的理解 Tower的清晰视觉界面非常有用 - 并且使复杂场景更容易理解。 4、自信地使用Git 以简单,直观的方式解决合并冲突 立即查看哪些提交尚未与遥控器同步 停止使用SSH密钥,用户名,密码和身份验证令牌进行摔跤 5、简单 拖放 撤消所有内容 独特的冲突向导 文件历史记录 丰富的文档 出色的客户支持 Tower可帮助您使用Git掌控版本控制。 6、强大 拉动请求 单线分段 交互式重新基础 子模块 Git LFS Git-Flow 文件历史记录 责备 Cherry-Pick 可以访问Git的所有功能。 7、快速 快速打开 单击克隆 自动存储和获取 使用Tower提高工作效率。 地址: https://www.macw.com/mac/699.html 来源: oschina 链接: https://my.oschina

外设之键盘选择

隐身守侯 提交于 2020-07-26 23:35:51
一、一点键盘历史 键盘最早是作为打字机的一个输入部件出现的,早期的打字机都是机械式的,键盘相当于一种机械触发的开关,用来触发打字机内部的机械结构。后来随着一些电子设备的出现,如电子计算机等等,键盘开始独立成为一个外设。同时,用来触发机械结构的键盘逐渐成为触发电信号的键盘,键盘也逐渐变得电子化和模块化,其中一种模块我们称为轴体,其决定了键盘的触发方式,同时决定了整个键盘手感。 在发展阶段上,早期出现机械键盘,后来出现薄膜键盘,这两种都是电阻式触发。再后来出现静电容键盘,然后出现光轴键盘,再接着出现电磁键盘,顾名思义,它们分别是电容触发、光栅触发、电磁触发。 二、轴体介绍 现代键盘的主要构成是基本电路板、轴体、中控三大部分组成。基本电路板与中控都很成熟,电路板的线路构成基本不变,中控则是采用现成的芯片构成,包括外围电路,都很相似(可能在RGB灯光上有一丁点差别),因此,轴体就成了各大键盘之间主要差异点,也成了卖点。目前市场上主要有机械轴、静电容轴、光轴,电磁轴等。 轴体品质主要从灵敏度、手感、段落感、声音、劳累程度四个方面来决定: 1、触发方式 灵敏度主要由触发方式决定。其主要有以下几种类型: 电阻式(机械和薄膜) 电容式 光电式 电磁式 一般来说,光电式触发最快,电容触发次之,电磁式随后,电阻式触发最慢。(但是,触发也取决于键程的设计,真正选择的时候,还需要综合考虑各种因素。) 2

git 分支操作

我是研究僧i 提交于 2020-05-05 13:12:52
git分支操作 1.查看分支 git branch 查看本地分支 git branch -r 查看远程分支 git branch -d 删除分支 2.新建分支 git branch <分支名称> 创建新的分支 git checkout -b <分支名称> 创建新的分支并切换到对应分支 git checkout -b <分支名称> origin/<分支名称> 创建新的分支制定对应的远程分支 ,切换到该分支 3.切换分支 git checkout <分支名称> 切换到对应的分支 4.分支合并 git merge dev1 在当前分支合并dev1分支 5. 合并分支上的某次提交 (遴选) git log //找到当前分支要合并的提交记录,获取版本号 git checkout <分支名称> //切换到要合并的分支 git cherry-pick <版本号> //选择找到的版本号 git push //提交 6.删除分支 git branch -d <分支> 删除本地分支 git push origin --delete <分支名> 删除远程分支     7.克隆分支   git fetch origin dev1:dev1 克隆远程的分支dev1到本地的分支dev1     8.推送分支   git push origin dev1:dev1 将本地dev1分支推到远程dev1分支上 来源

(Python基础教程之七)Python字符串操作

三世轮回 提交于 2020-05-04 19:17:00
Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操作 Python中的list操作 Python中的Tuple操作 Pythonmax()和min()–在列表或数组中查找最大值和最小值 Python找到最大的N个(前N个)或最小的N个项目 Python读写CSV文件 Python中使用httplib2–HTTPGET和POST示例 Python将tuple开箱为变量或参数 Python开箱Tuple–太多值无法解压 Pythonmultidict示例–将单个键映射到字典中的多个值 PythonOrderedDict–有序字典 Python字典交集–比较两个字典 Python优先级队列示例 在 Python中 ,string文字是: 代表Unicode字符的字节数组 用单引号或双引号引起来 无限长度 字符串文字 str = 'hello world' str = "hello world" 一个 多行字符串 使用三个单引号或三个双引号创建的。 多行字符串文字 str = '''Say hello to python programming''' str = """Say hello to python programming"""

动画图解Git命令

回眸只為那壹抹淺笑 提交于 2020-05-01 08:51:32
​Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理,是目前使用范围最广的版本管理工具 尽管Git是一个非常强大的工具,但我认为大多数人都会同意我的说法,即它也可以是。。。彻头彻尾的噩梦😐 一直觉得在脑海中想象使用Git时发生的事情非常有用:当我执行某个命令时,分支是如何交互的,它将如何影响历史?国外来自英属哥伦比亚的程序媛 Lydia Hallie《CS Visualized: Useful Git Commands》。在这篇文章里面,她通过生动形象的动画,以更加直观的方式,向开发者展示 Git 命令中的 merge、rebase、reset、revert、cherry-pick 等常用骚操作的具体原理 1.Git | Merging (git merge) - Fast-forward (--ff) 当当前分支与正在合并的分支相比没有额外提交时,可能会发生快速向前合并,Git首先尝试执行最简单的选择 Fast-forward 模式合并不会创建新的提交,而是合并当前分支中合并的分支上的提交 现在,在dev分支上所做的所有更改都在master分支上可用。那么,No-fast-foward 是怎么回事? - No-fast-foward (--no-ff) 如果您当前的分支与要合并的分支相比没有任何额外的提交,那就太好了,但不幸的是

git-bash的alias别名设置

安稳与你 提交于 2020-04-29 12:46:33
正常需要设置别名时,直接使用 alias gs="git status" 输入上边的命令之后,就可以使用gs(命令)代替git status(命令),这是一种设置别名简化输入,提升效率的办法 可以根据自己日常的习惯,和自己的理解,按照自己是喜好特点定义自己的一组常用的别名缩写。 然后日常操作就会变得简单很多。 但是,如果只是如此操作,当我们关闭终端窗口的时候,重新启动之后会发现,这个别名消失了。原因是没有永久保存。 如果想永久保存,我们可以做如下操作: ls ~/.bash_profile 查看用户目录的.bash_profile文件是否存在,如果存在直接修改,不存在这创建该文件,并编辑其内容 vi ~/.bash_profile 在该文件中写入最开始的alias 别名="命令"的信息,每行写一个。可以把所有想要设置别名的命令都列到这里。 然后保存该文件退出。此时,所有相关的别名设置基本完成。但是目前并么有马上生效,要不重启终端,要不通过命令 source ~/.bash_profile 命令执行以后,所有的别名就可以正常使用了,而且如果关掉终端再打开依然可以正常使用。 因为缩写确实是非常的方便,所以很多人都有这样的习惯。这里推荐一些人使用的zshell的一套别名 alias gpm='git push origin master' alias ...=../.. alias ..