2022-04-21:给定一个包含 [0,n) 中不重复整数的黑名单 blacklist, 写一个函数从 [0, n) 中返回一个不在 blacklist 中的随机整数, 对它进行优化使其尽量少调用系统方法...黑名单中的随机数。 答案2022-04-21: 工程题目,黑名单存map。范围是[0,n),黑马单有m个;那么随机数的范围变成[0,n-m)。然后随机范围内的数字,碰到黑名单的数根据map映射。
这个英语学习 App 首页有一个随机显示单词的功能,也就是根据每个用户的级别有一个单词表,然后这个用户每次访问首页的时候,都会随机滚动显示三个单词。...他们发现随着单词表变大,选单词这个逻辑变得越来越慢,甚至影响到了首页的打开速度。 现在,如果让你来设计这个 SQL 语句,你会怎么写呢?...为了便于理解,我对这个例子进行了简化:去掉每个级别的用户都有一个对应的单词表这个逻辑,直接就是从一个单词表中随机选出三个单词。...对于每一个 word 值,调用 rand() 函数生成一个大于 0 小于 1 的随机小数,并把这个随机小数和 word 分别存入临时表的 R 和 W 字段中,到此,扫描行数是 10000。 3. ...取得这个表的主键 id 的最大值 M 和最小值 N; 2. 用随机函数生成一个最大值到最小值之间的数 X = (M-N)*rand() + N; 3. 取不小于 X 的第一个 ID 的行。
这个英语学习 App 首页有一个随机显示单词的功能,也就是根据每个用户的级别有一个单词表,然后这个用户每次访问首页的时候,都会随机滚动显示三个单词。...他们发现随着单词表变大,选单词这个逻辑变得越来越慢,甚至影响到了首页的打开速度。 现在,如果让你来设计这个 SQL 语句,你会怎么写呢?...为了便于理解,我对这个例子进行了简化:去掉每个级别的用户都有一个对应的单词表这个逻辑,直接就是从一个单词表中随机选出三个单词。...对于每一个 word 值,调用 rand() 函数生成一个大于 0 小于 1 的随机小数,并把这个随机小数和 word 分别存入临时表的 R 和 W 字段中,到此,扫描行数是 10000。 3....取得这个表的主键 id 的最大值 M 和最小值 N; 2. 用随机函数生成一个最大值到最小值之间的数 X = (M-N)*rand() + N; 3. 取不小于 X 的第一个 ID 的行。
对于矩阵中(I,I)的值为什么为0呢?...对于(I,like)的值为什么为2呢?扫描第一个句子后,I的前后一个单位没有出现like。对于第2个和第3个句子,I的后面出现了like,所以最后(I,like)的值为2,其他同理。...用随机梯度下降更新V和U,使预测更加接真实概率 就像在CBOW模型中,我们需要产生一个目标函数来评估模型效果。一个关键不同的地方是,我们需要调用贝叶斯理论来分离概率。...在给出中心词条件下,所有的单词都是完全独立的。 ? 有了这个目标函数,在每次迭代更新后,我们通过随机梯度下降就可以计算未知参数的梯度。 ?...如果过词语和上下文刚好不在语料库中,我们将词语和上下文不在语料库数据中的概率最大化。 下面是我们所采用这两个概率的简单最大似然法。
所以这个想法对应的目标函数即: ? 这里 ? 是正例, ? 是随机采样出来的负例(采样k个), ? 是sigmoid函数。然后即最大化正例的似然,最小化负例的似然。...不过,既然发现在各个NLP任务中基本都有encoding的需要,那么为啥不在最开始就让词向量拥有上下文相关的能力呢?于是有了ELMo[2]。...不过这个ELMo的亮点当然不在于模型层,而是其通过实验间接说明了在多层的RNN中,不同层学到的特征其实是有差异的,因此ELMo提出在预训练完成并迁移到下游NLP任务中时,要为原始词向量层和每一层RNN的隐层都设置一个可训练参数...那么为什么不像下游监督任务中那样做真正的双向encoding呢?...,对于一个被盖住的单词: 有80%的概率用“[mask]”标记来替换 有10%的概率用随机采样的一个单词来替换 有10%的概率不做替换(虽然不做替换,但是还是要预测哈) Encoder 在encoder
但是,机器智能为什么还没有改变我们的饮食方式呢?我们能不能调整语言处理算法的要素,深入探究一下食物呢?...比如,我们选出牛津词典中170,000个单词,用一个单词(如:food)代表一个向量:那么就会有169,999个0和一个1,而这个1就处在词汇表里该单词的位置上。...那么,有没有更快捷的方法呢? 答案就是词向量。词向量会降低问题的维度,为我们提供了强大的语言表示方法。 我们可以构造出一个语言模型,为每个单词随机分配100个数字。...为了训练这个模型,我们运用每个单词的100个随机数字去预测它们的上下文语境。其中,每个单词的“上下文语境”会包含其周围的单词。这样做的中心思想是:上下文语境意味着在相似语境下出现的词,其含义也会相似。...这种情况比较罕见,是因为单词量(食材数量)很小,所以我们可以同时运用这两种模型,并进行比较。这样可以看到词向量中的非对比估计损失函数,同时提供一个更有意思的实验台。
知识点 首先一个棘手的问题就是电脑怎么出题? 随机单词 在这个游戏当中,电脑出的题其实就是单词,所有英文的单词都可以作为题目。所以我们只需要用程序随机出一个单词来即可。...问题就转化成了我们到哪里可以找到英文的单词库呢? 这个我估计大家都知道,可以借助搜索引擎。...如果上来动手就写代码,你会发现写代码的过程非常不顺,经常要做大的调整。一个比较好的方法是我们可以把一些单独的功能抽象成函数,我们先打框架,再进行实现。...打框架的时候不对函数的具体功能做实现,只是留一个注释表明这个函数是干什么的。...怎么样,这样再去实现每一个函数里的功能,是不是整个代码就清晰多了?当大家熟悉了这一套流程之后,很多步骤可以逐渐省略,这个时候也就自然成了开发老鸟了。
此过程会将一个小时的会议压缩到仅一页的笔记中。本质上,注意力机制在尝试通过更加重要的嵌入(单词的缩写或图标表示)来尝试编码序列的过程中也是如此。 什么是Softmax注意机制?...这种注意力也被称为softmax注意力,因为它使用softmax激活函数将Q和K的缩放点积转化为注意力的相对测量,即a,其中每一个单词将分享一个比例的注意力,然后总和为1(或100%)。...为什么Softmax的注意力机制不够好? 在一个典型的transformer中,部署多头注意力来解压缩更复杂的语言模式。...为了解决这个问题,来自Google Deepmind的小组利用了Bochner定理,并扩展了Rahmi&Recht(2008)的工作,softmax函数与指数函数的随机特性映射ϕ(独立和正态分布的随机向量...softmax函数 ? 随机特征映射 ? 随机特征图的点积可用于估计指数函数 在不深入过多数学推导细节的情况下,softmax注意机制可以近似为以下结构: ?
为什么大模型本质上只是预测词汇出现的概率就能让它输出问题的答案呢? 为了寻找这个问题的答案,找到了一篇科普文章,详细解释了大模型的工作原理和它为何能够发挥作用。...02—只需一次添加一个单词 ChatGPT 可以自动生成一些读起来就像人类书写的文本一样的东西,它是如何做到的呢?为什么它有效?...但它实际上应该选择哪一篇来添加到它正在写的文章(或其他内容)中呢?人们可能认为它应该是“排名最高”的单词(即被分配最高“概率”的单词)。...一个典型的例子可能涉及五十万次数学运算。 但最终的结果是,如果我们将图像的像素值集合输入到这个函数中,就会得到一个数字,指定我们拥有图像的哪个数字。...假设我们逐渐模糊一个数字。有一段时间我们的函数仍然“识别”它,这里是“2”。但很快它就“失去了它”,并开始给出“错误”的结果: 但为什么我们说这是“错误”的结果呢?
那么为什么要引入模糊测试呢,引入后我们在写单元测试的时候要有哪些调整呢? 首先我们来聊聊为什么引入模糊测试。 为什么引入模糊测试 大家看文章开头第一段的解释,那就是Go官方要引入模糊测试的原因。...大家先不考虑什么模糊测试的事儿,就单纯给下面这个工具函数写一个单测,我们该怎么写。...单元测试怎么写 我们在之前Go 单元测试入门中,给大家介绍过表格测试,就是为单测的执行提供样本数据的,那么这个表格测试该怎么写呢?...,后面跟至少一个模糊参数,这个也好理解,如果没有这个参数,那随机输入该往哪输入呢。...Fuzz argument:这个一条说过了,就是fuzz target 中第一个参数以后的参数都叫模糊参数,用来接收模糊测试随机生成的样本,这个参数数量应该是要跟我们的被测函数的形参数一致的。
= 或 或 or 或表达式或函数(左侧) like 语句 % 开头 字符串未加’’ 索引字段区分度过低,如性别 未匹配最左前缀 (一张嘴就知道老面试题了) 为什么这些做法会导致失效,成熟的 MySQL...函数操作 当在 查询 where = 左侧使用表达式或函数时,如字段 A 为字符串型且有索引, 有 where length(a) = 6查询,这时传递一个 6 到 A 的索引树,不难想象在树的第一层就迷路了...不过,对于如性别这种区分度过低的字段,索引失效就不是因为这个原因。 1.1.3 性别字段为什么不要加索引 为什么索引区分度低的字段不要加索引。盲猜效率低,效率的确低,有时甚至会等于没加。...不要对索引字段做函数操作 对于确定的、写多读少的表或者频繁更新的字段都应该考虑索引的维护成本。 1.1.5 如何评价 MySQL 选错了索引 有时,建立了猛一看挺正确的索引,但事情却没按计划发展。...1.2 等MDL锁 在 MySQL 5.5 版本中引入了 MDL,对一个表做 CRUD 操作时,自动加 MDL 读锁;对表结构做变更时,加 MDL 写锁。读写锁、写锁间互斥。
($ in node)) node[$] = 0; node[$]++; } } randomWord 随机单词 这里我们做一个 randomWord() 函数,这个函数会产生一个随机的单词...好,现在我们想实现我们的业务需求,找出出现最多的随机字符串该怎么写呢? most 统计字符函数 回到我们的 Trie 字典树的类中,加入我们的 most() 方法。...这里我们看到 maek 这个字符在 10 万个随机单词中出现了最多次,一共是 5 次。 在 26 的 4 次方的单词量中,其实这个数还是蛮大的。 !! 等等,26 的 4 次方?这个是什么?...如果我们回去看看我们随机生成单词的代码,我们随机生成了 4 个字母的单词,我们一共有 26 个字母,所以 4 个字母的单词一共有多少个组合呢?...在 1 万以内的量级,我们想在它们中求最大,求最小,不管这个数字有多少个我们都是可以比较方便地去处理的。 !! 这就是字典树在处理大量的输入和字符串类的问题时候的能力。
大家可以看一下之前这篇文章: 链接: 【初阶数据结构】——剑指 Offer : 复杂链表(带随机指针)的复制 1.1 思路分析(利用map搞) 我们再来一起回顾下之前C语言的做法 大家思考我们为什么要拷贝原链表的结点一个个链接到原链表结点的后面...那既然不行,我们就可以自己写一个比较的仿函数(也可以写成函数传函数指针),因为sort是可以由我们自己指定比较方式的 那排好序的话我们取到前k个不就好了嘛(注意最终返回只要单词) 我们提交一下...所以我们还是要自己写一个仿函数: 当然这个用我们上面写的那个就可以,因为也是存的pair,比较规则一样。...,注意我们写了这个仿函数,有时候他里面会用const对象调用,所以以后写这个仿函数最好把const加上 就好了。...我们直接一个set就搞定了 然后呢,其实算法库里面也是有求这些集合的算法的。 但是我们不建议大家这样写,题目就是想让我们自己设计算法呢。 那怎么求交集?
但是,为什么没有用 get() 方法呢?...然后再次进行循环,走入到 spins>0 的分支判断,接着做一个随机运算,随机出来的值如果大于等于 0 ,则对 spins 进行减一操作。...只有减到 spins 为 0 的时候才会进入到后面的这些被我框起来的逻辑中: 也就是说这里就是把 spins 从 256 减到 0,且由于随机函数的存在,循环次数一定是大于 256 次的。...那么解决方案是什么呢? 在前面我已经给大家看了,就是把 availableProcessors 方法的返回值找个字段给缓存起来: 但是后面跟了一个“problem”。...比如怎么在不引入时间的前提下,做出一个自旋等待的效果? 答案就是被拿掉的这段代码。 但是有一说一,我第一次看到这个代码的时候我就觉得别扭。这一个短短的自旋能延长多少时间呢?
那为什么平常生活中我们每个人都能够迅速地对这种二义性进行消解呢?这背后到底隐藏着什么样的思维法则?我们留到后面解释。 1.2 贝叶斯公式 贝叶斯公式是怎么来的?...问题是我们看到用户输入了一个不在字典中的单词,我们需要去猜测:“这个家伙到底真正想输入的单词是什么呢?”...用刚才我们形式化的语言来叙述就是, 我们需要求: P(我们猜测他想输入的单词 | 他实际输入的单词) 这个概率。并找出那个使得这个概率最大的猜测单词。...5.2 为什么朴素贝叶斯方法令人诧异地好——一个理论解释 朴素贝叶斯方法的条件独立假设看上去很傻很天真,为什么结果却很好很强大呢?...那么为什么这个假设在实际中的表现却不比决策树差呢?
1)^x^y^ 我总在使用的一个小技巧。 从来没有输入过类似的命令?...2)pushd/popd 这个在脚本中非常好用,特别是在循环中 如下所示,假设你正在写一个进入退出文件夹的for循环: for d1 in $(ls -d */) do # Store original...定义一个用于结束的单词,则在这个单词单独出现在一行之前的所有输入行将构成文件。...你也可以直接用${VAR:=defaultval}(等号,不是破折号),但是注意这不适用于脚本或函数中的位置变量。尝试修改上面的脚本来看它是如何失败的。...RANDOM 不要依赖这个来加密堆栈,但你可以生成随机数字,例如在脚本中创建临时文件时: $ echo ${RANDOM} 16313 $ # Not enough digits?
那为什么平常生活中我们每个人都能够迅速地对这种二义性进行消解呢?这背后到底隐藏着什么样的思维法则?我们留到后面解释。 1.2 贝叶斯公式 贝叶斯公式是怎么来的?...问题是我们看到用户输入了一个不在字典中的单词,我们需要去猜测:“这个家伙到底真正想输入的单词是什么呢?”...用刚才我们形式化的语言来叙述就是,我们需要求: P(我们猜测他想输入的单词 | 他实际输入的单词) 这个概率。并找出那个使得这个概率最大的猜测单词。...5.2 为什么朴素贝叶斯方法令人诧异地好——一个理论解释 朴素贝叶斯方法的条件独立假设看上去很傻很天真,为什么结果却很好很强大呢?...那么为什么这个假设在实际中的表现却不比决策树差呢?
= 或 或 or 或表达式或函数(左侧) like 语句 % 开头 字符串未加’’ 索引字段区分度过低,如性别 未匹配最左前缀 为什么这些做法会导致失效,成熟的 MySQL 也有自己的想法。...函数操作 当在 查询 where = 左侧使用表达式或函数时,如字段 A 为字符串型且有索引, 有 where length(a) = 6查询,这时传递一个 6 到 A 的索引树,不难想象在树的第一层就迷路了...不过,对于如性别这种区分度过低的字段,索引失效就不是因为这个原因。 1.1.3 性别字段为什么不要加索引 为什么索引区分度低的字段不要加索引。盲猜效率低,效率的确低,有时甚至会等于没加。...不要对索引字段做函数操作 对于确定的、写多读少的表或者频繁更新的字段都应该考虑索引的维护成本。 1.1.5 如何评价 MySQL 选错了索引 有时,建立了猛一看挺正确的索引,但事情却没按计划发展。...1.2 等MDL锁 在 MySQL 5.5 版本中引入了 MDL,对一个表做 CRUD 操作时,自动加 MDL 读锁;对表结构做变更时,加 MDL 写锁。读写锁、写锁间互斥。
领取专属 10元无门槛券
手把手带您无忧上云