首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

作为一名合格开发者,必须了解编程原则有哪些?

做最简单事情 为什么 仅有当我们只解决问题本身时,才能最大化地解决实际问题。 怎么做 扪心自问:“最简单事情是什么?”。...Dijkstra (1974)所说: 有时将其称为“关注点分离”,即使这不可能完全做到,但它也是所知道唯一有效思维整理技巧。...怎么做 使它运作,使它正确,使它更快(Make It Work Make It Right Make It Fast) 不要在你不需要时候优化,只有在你发现一个瓶颈之后才能优化它。...怎么做 向其他机器(或同一机器上其他程序)发送指令或数据代码应该完全符合规范,但接受输入代码应接受不一致输入,只要其意义明确。...为什么 通过最小化对现有代码修改来提高可维护性和稳定性 怎么做 编写可以扩展类(而不是可以修改类) 只暴露需要更换活动部分,隐藏其他所有部分。 单一职责原则 一个类不应该有多个修改原因。

54800

横扫9家大厂前端校招offer

) 你用户密码是怎么存在数据库里(PASSWORD函数) 追问 用户密码在前端传输时候有做加密吗(有了ssl不需要) 你有没有做登陆态持久化,怎么做(设置cookie过期时间) 追问 你服务器端怎么管理...题目:在一个最大长度200000数组中,分别求出长度从1到n序列中最大值最小值 样例: 输入:61 8 7 5 4 2输出:1 4 5 7 8 8 简单来说,就是把一个数组进行连续子序列划分,...从长度为1序列开始划分,每次划分子序列后,求出每个子序列最大值,再求出所有这些最大值中最小那个,一直到长度为n序列序列本身)。...min[i]比较哪个值更小,一趟下来就能得到最小值了。...如何消除异或影响大家应该都能理解,因此只要把参与异或部分再与密文异或一下即可得到明文。

1.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

LeetCode 第 227 场周赛题解

示例 3: 输入:nums = [1,2,3] 输出:true 解释:[1,2,3] 为有序源数组。 可以轮转 x = 0 个位置(即不轮转)得到 nums 。...示例 4: 输入:nums = [1,1,1] 输出:true 解释:[1,1,1] 为有序源数组。 轮转任意个位置都可以得到 nums 。...也就是说,如果子序列元素和为 sum ,你需要 最小化绝对差 abs(sum - goal) 。 返回 abs(sum - goal) 可能最小值」。...示例 1: 输入:nums = [5,-7,3,5], goal = 6 输出:0 解释:选择整个数组作为选出序列, 元素和为 6 。 子序列和与目标值相等,所以绝对差为 0 。...2021/02/14 补充 这份题解是周赛后一天(2021/02/08)就写出来了,因为周赛当天是前一天双周赛题解,所以这个晚了一天。

61830

如何在Python中为长短期记忆网络扩展数据

,打印由序列估计得到最小值和最大值,打印相同归一化序列,然后使用逆变换将值变回到其原始比例。...实际值输入 你可能有一系列数值作为输入,如价格或温度。 如果数量分布是正常,那么就应该标准化,否则应该归一化。...其他输入 问题可能会很复杂,也很难弄清如何才能最好地缩放输入数据。 如果陷入了困境,尝试将输入序列归一化。如果你有资源,就尝试用原始数据或标准化数据分别建模,看看哪一种更好。...- 应该归一化/标准化/重新缩放数据吗?神经网络常见问题 缩放输出变量 输出变量是由神经网络预测得到。 你必须确保输出变量比例与神经网络输出层上激励函数(传递函数)比例相匹配。...进一步阅读 本节列出了一些额外资源,你不妨在缩放使参考一下。 应该归一化/标准化/重新调整数据吗?神经网络常见问题。

4K70

帅地问我:Dubbo服务调用过程

那是因为你大脑很智能,它能智能地识别到交流语言,而计算机可不是,你想想你代码写 print 1,它还能打出 2 不成? 也就是计算机是死板,我们程序告诉它该怎么做,它就会生硬怎么做。...其实协议很重要,因为从中可以得知很多信息,而且只有懂了协议内容,才能看得懂编码器和解码器在干嘛,再截取一张官网对协议解释图。 ?...序列化协议 其实从上图协议中可以得知 Dubbo 支持很多种序列化,不具体分析每一种协议,就大致分析序列种类,万变不离其宗。 序列化大致分为两大类,一种是字符型,一种是二进制流。...同步调用,这是我们最常用,也就是 Dubbo 框架帮助我们异步转同步了,从代码可以看到在 Dubbo 源码中就调用了 future.get,所以给用户感觉就是调用了这个接口方法之后就阻塞住了,必须要等待结果到了之后才能返回...找到 invoker 最终调用实现类具体方法再返回响应整个流程就完结了,再补充一下之前图。 ? 总结 今天调用过程再总结一遍应该差不多了。

44430

ChatGLM-6B 安装试用

,clear 清空对话历史,stop 终止程序 用户: 加载完模型后 GPU 使用情况 用户:你好,中午想吃鱼香肉丝,现在有一条鱼,应该怎么做这道菜?...递归神经网络 (RNN):RNN 是一种能够处理序列数据神经网络结构,ChatGPT 中 RNN 用来对输入文本数据进行时序建模,从而能够更好地理解用户输入上下文信息。 3....不懂前端,不好判断正确与否 用户:大模型时代,我们应普应该怎样跟上技术发展,学习哪些知识 ChatGLM-6B:大模型时代,我们应普应该怎样跟上技术发展,学习哪些知识,可以参考下述建议: 1....作为一个人工智能语言模型,是通过在大量数据训练中度过来学习和改进自己开发者们会持续地对进行维护和更新,以确保能够更好地为用户提供服务。...说谢谢之后,GPU显存占用降到12613MB,识别到对话结束,应该是清空了上下文。 那我再把上面的 没有猪肉这个食材,可以用鸡肉代替吗?做出来好吃吗?

93250

超级干货:你应该知道那些编程原则!!

例如,应用程序业务逻辑是一个关注点而用户界面是另一个关注点。更改用户界面不应要求更改业务逻辑,反之亦然。 引用Edsger W....怎么做 消除,最小化和降低必要关联复杂性。 通过隐藏实现细节,减少耦合。...怎么做 向其他机器(或同一机器上其他程序)发送指令或数据代码应该完全符合规范,但接受输入代码应接受不一致输入,只要其意义明确。...为什么 通过最小化对现有代码修改来提高可维护性和稳定性 怎么做 编写可以扩展类(而不是可以修改类) 只暴露需要更换活动部分,隐藏其他所有部分。...当预期修改发生时,修改会保持在局部。 为什么 在发生更改时,最小化所需修改。 怎么做 封装API背后不同概念。 将可能不同概念分到各自模块。

19810

程序员能力提升:你应该知道那些编程原则!!

例如,应用程序业务逻辑是一个关注点而用户界面是另一个关注点。更改用户界面不应要求更改业务逻辑,反之亦然。 引用Edsger W....怎么做 消除,最小化和降低必要关联复杂性。 通过隐藏实现细节,减少耦合。...怎么做 向其他机器(或同一机器上其他程序)发送指令或数据代码应该完全符合规范,但接受输入代码应接受不一致输入,只要其意义明确。...为什么 通过最小化对现有代码修改来提高可维护性和稳定性 怎么做 编写可以扩展类(而不是可以修改类) 只暴露需要更换活动部分,隐藏其他所有部分。...当预期修改发生时,修改会保持在局部。 为什么 在发生更改时,最小化所需修改。 怎么做 封装API背后不同概念。 将可能不同概念分到各自模块。

30411

最大连续子数列和

对于这个序列,我们答案应该是14,所选数列是从第2个数到第5个数,这4个数和是所有子数列中最大。...此外,我们在这个程序中创建了一个sum数组,事实上,这也是不必要,我们就也可以把数组前缀和直接计算在num数组中,这样可以节约一些内存。 换个思路,继续优化 你应该听说过分治法,正是:分而治之。...可能说起来简单,但是仍不知道怎么做,接下来分析这个问题: 首先,我们可以把整个序列平均分成左右两部分,答案则会在以下三种情况中: 所求序列完全包含在左半部分序列中。...,又一个O(N)算法中介绍一样,在计算前缀和过程中维护之前得到最小值。...然而以上介绍算法都只是直接求出问题结果,而不能求出具体是哪一个子序列,其实搞定这个问题并不复杂,具体怎么做留待读者思考吧!

1.1K20

腾讯阿里携程 详细NLP算法实习 面经

远程监督,别的还有one-shot zero-shot label embedding) 假设一个情景题,微博创立初期,短文本,10w数据集,无监督,分类怎么做用label embedding...你自己写(啊好,还好记得公式) 能运行下不(可以,然后炸了)你这bug在哪你知道不(应该是矩阵搞炸了)是的,怎么改(矩阵操作函数名忘了)好吧提醒一下,把math.exp改成np.exp(啊好...BERT和RNN之类区别(Auto Encoder与Auto regression,吧啦吧啦 ) BERT缺点,什么情况无法处理,双重否定,数值可以处理吗(应该不太明感) BERT输入长度多少?...(没有具体做,但是大概知道上NER这一块东西,其他不清楚了) 一个算法题,求一个大于等于输入正整数最小降序序列,比如,325->330, 4->4, 1234->2000, 4321->4321(...,比如说余弦距离) self-attention和attention区别(说了一堆好像没答道点上,最核心应该是attention只计算q和v) BERT和其他序列模型区别(BERT不是序列模型,Auto-Encoder

81921

PAT 1043 Is It a Binary Search Tree (25分) 由前序遍历得到二叉搜索树后序遍历

所以它满足: 左子树所有节点键值大于等于根节点 右子树所有节点键值小于根有点 左子树和右子树也必须满足上面两点 首先我们应该明白一个道理: 一般情况下,我们要根据一棵二叉树前序遍历结果和中序遍历结果才能得到后序遍历结果...所以我们可以假设这个输入序列是对,然后利用这个输入序列得到后序序列并保存,如果最终得到结果中节点个数不够,那说明它不是正确前序遍历,否则就直接输出得到结果。...,扫描前序序列,遇到比根小就i++,会停在9位置; j从右往左,扫描前序序列,遇到比根大于或等于就j--,最后会停在7位置 这样一次扫描后,应该满足 j + 1 == i,对于每一个二叉搜索树前序遍历都应该满足这个特点...从上面可以看出: 这个函数需要两个参数,一个是当前树根,一个是当前树最后一个节点在前序序列位置 每次双指针扫描结束后,不满足 i == j + 1 就退出 最小子树是只有一个节点,此时这两个参数应该相等...综上,总体执行流程为: 把输入序列当作二叉搜索树前序遍历,执行这个函数,得到后序结果, 如果所得结果中节点个数与输入一致,直接输出 如果不一致,把输入序列当作二叉搜索树镜像树前序遍历,也就是改变标志位

55210

PyTorch 最佳实践:模型保存和加载

你是否遵循官方文档最佳实践指南?你对哪些应该坚持,哪些可以放弃而不会搞出问题有自己经验和看法吗? 承认有时候很难遵循最佳实践,因为他们反对方法似乎也能工作,而我并不完全理解他们基本原理。...一个意外错误 现在只需要运行几个批次输入。 preds = model(inp) 但是发生了什么呢?...但是它(正确地)没有做是调用 __init__ 来设置类(它不应该这样做,尤其是担心在 __init__ 和序列化之间可能已经修改了内容,或者它可能有我们不希望副作用)。...所以简而言之,这就是为什么在 Python 中序列化 PyTorch 模块或通常意义上对象是危险: 你很容易就会得到数据属性和代码不同步结果。...可以无需模块加载状态字典,如果我们改变了一些重要东西,可以检查和修改状态字典。 不太明显是,实现者或用户还可以自定义模块处理状态字典。这有两个方面: 对于用户来说,有钩子(hooks)。

1.8K40

Transformer - 1 - Self-attenstion

就像上图中一样,从左到右表示用户从过去到现在所购买商品序列,现在就是要通过观察这些序列用户特征、商品特征,来判断新出现一个商品,用户会不会购买。...比如说,购买了手套、靴子,就对可能会购买羽绒服决定比我买手机、键盘要更重要一些。这个重要性,就是我们希望能够从购买序列中发现,他能帮着我们更好判断新商品购买可能性。...这里为了生成单词,我们把 Decoder 部分输入得到向量作为 query;把 Encoder 部分每个单词向量作为 key。...在推荐系统中三步走怎么做 在商品推荐系统中,query 就是当前要判断商品向量,key 就是用户购买序列中,每一个商品向量。...但是值得一提是,Self-attention 本身是忽略序列自然输入顺序。 再来一个动画,看看self-attention过程。

37750

每周学点大数据 | No.22 外排序

当这些子问题有效地得到解决时,我们就可以按照子问题和原问题关系逐步将子问题解进行合并,从而得到原来问题解。 小可:这也符合我们日常生活中处理问题思路。...但这两张牌也是有大小关系,不难想到,这两张牌里面最小一定是所有8 张牌里面最小。根据排序问题定义,按照从小到大顺序排列,所以第一次我们希望能够找出序列最小那个数。...小可:那从1 到2,2 到4,4 到8,8 到16 都可以用这个方法进行操作实现,所以对于任意序列长度n,我们都可以用这个方法进行排序了。嗯,内存中归并排序方法基本上搞懂了。 Mr....小可:在倒数第二轮中,有4 个序列被合并成2 个,其中一个合并过程有n/2 个元素参与,所以应该是cn/2,这样过程应该有两个,所以依然是cn 次。 Mr....在现实生活中,需要排序数据量有时候是很大,当内存中无法容纳这么大数据量时,我们就要尝试将这些数据存储在磁盘上,利用内存作为数据暂存地进行排序。 小可:那么在外排序中,归并排序又该怎么做呢?

1K60

昨晚学妹参加了B站秋招笔试,还想考考

作者 | godweiyang - BEGIN - 学妹昨晚参加了B站2022届秋招算法笔试,做完给我发来了一道题,想考考,说挺难看了两分钟,给她发去了思路。...那么这道题到底是怎么做呢? 题目要求将 个数切分成 块,求每块序号乘上该块内数字之和最大值。 那么首先我们可以用 来表示前缀和,也就是 。...然后假设 个子序列中,第 个子序列末尾元素为 ,其中 。那么第 个子序列元素和就可以用前缀和来表示为 。...然后题目要求最大值就可以表示为: 展开并化简就可以得到: 后面一项 就是整个数组之和 倍,是一个定值。所以要求这个式子最大值,就是求 最小值。 又因为 ,所以就是求 最小值。...可以发现,这 个前缀和其实是互不干扰,所以只需要对所有的前缀和进行排序,取最小 个就行了。

35020

大数据下实时热点功能实现讨论(实时流TopN)

一个时间窗口TopN结果必须是建立在该时间窗口全量数据上才能保证100%正确性,然而在实时流情况下,由于各种不确定性因素,你很难在一个时间窗口内拿到上个时间窗口数据。...在现实情况下,这个5分钟热点数据可能下个5分钟就得展示给用户,当然异常情况除外,那我们就可以退一步,稍微牺牲一点数据准确性来给出一个堪用结果。...这里有个非常简单可行方案,实时流计算只做word count,然后把计算结果存储起来后有个旁路程序扫结果数据,排序后截取TopN,估计好多人就是怎么做,架构如下。 ?   ...但是如果面对大量TopN调用,旁路Topn程序就会成为性能瓶颈,因为要涉及到大量数据查询和排序,而且多一个系统,维护成本也变高了。如果我们想通过纯storm方式去解决Topn应该怎么做?   ...,还得支持持久化后更新,可以对minheap序列化后放到hbase里。

1.1K20

Transformer各层网络结构详解!

,前馈神经网络计算可以并行,得到输出会输入到下一个encoder。...因为每个批次输入序列长度是不一样也就是说,我们要对输入序列进行对齐。具体来说,就是给在较短序列后面填充 0。但是如果输入序列太长,则是截取左边内容,把多余直接舍弃。...也就是对于一个序列,在 time_step 为 t 时刻,我们解码输出应该只能依赖于 t 时刻之前输出,而不能依赖 t 之后输出。因此我们需要想一个办法,把 t 之后信息给隐藏起来。...那么具体怎么做呢?也很简单:产生一个上三角矩阵,上三角值全为0。把这个矩阵作用在每一个序列上,就可以达到我们目的。...任何模型都有其适用范围,同样,RNN系列模型在很多任务上还是首选,熟悉各种模型内部原理,知其然且知其所以然,才能遇到新任务时,快速分析这时候该用什么样模型,该怎么做好。

3.6K00

Leetcode | 第6节:栈与队列

读者如果不习惯这种写法,也可以换一种自己写法,当然对来说,一般会学一学这种新方法,毕竟师夷长技以制夷嘛。...要找到一个最大合并序列,那么很明显,每一个数组中它也最好是一个最大序列。而这个最大序列获得方法,其实就是上一个问题,单调栈方法一个变形。Problem 6中,我们通过单调栈找到了一串数中最小。...那么这个题,我们就把判断方法换一下,就可以找到一串数中最大。具体怎么做交给读者思考。 第一步说明白了,再看看合并序列应该怎么做。事实上,和合并排序思路一致。...但是这样算有个问题,就是我们如果最小值遇到了相同元素,应该如何处理?举个例子,假如一个区间是[1, 2, 3, 4, 1],那么这个区间最小值有2个,但是上面的方法就会把这个区间最小值计算两次。...小结 这一节我们主要介绍了利用栈和队列这两个结构来求解一些问题。也介绍了几道单调栈方法应用习题。这一些题目各自都具有一些技巧,需要仔细思考和设计才能比较好完成。

40220

编程范式知多少——厘清主流编程范式

说白了,就是计算机一个个指令序列,按照写定顺序或者跳转逻辑(for/while/goto等)进行逐个执行。程序执行效率,取决于指令序列多少、变量占用空间大小等因素决定。...对例中而言,只需要声明要吃鸡翅就行了,至于这个鸡翅是怎么做出来,完全不用关心。——这就是声明式编程。 声明式编程主要思想是告诉计算机应该做什么,但不指定具体要怎么做。...也即: 当一个函数无论何时、无论谁调用、无论传入什么,只要保持相同输入,不管调用多少次,都能够得到同样结果(无副作用、引用透明性),这样,就可以说这个函数具备了函数式特征。...我们回到代码层面,继续看下前面声明式编程中提到那个例子完整代码: // 声明式编程、只告诉应该要做什么,不关心具体怎么做 List results = getAllGreaterThan5Numbers...,但声明式编程通常都是需要依赖于命令式编程基础上才能实现

86420

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券