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

常见的面试问题

因为更新表时,MySQL不仅要保存数据,还要保存索引文件。 建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快。...413 请求实体过大 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。 414 请求的 URI 过长 请求的 URI(通常为网址)过长,服务器无法处理。...417 未满足期望值 服务器未满足”期望”请求标头字段的要求。 5XX(服务器错误) 这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。...+链表的结构,当发生 hash 碰撞时将会把元素追加到链表上。...hashtable(哈希表) 当哈希类型无法满足ziplist要求时,redis会采用hashtable做为哈希的内部实现,因为此时ziplist的读写效率会下降

76210

分享一些整理的HTTP状态码及其详解

4xx(请求错误) 这些状态代码表示请求可能出错,妨碍了服务器的处理。 5xx(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。...状态码303和307被添加了进来,用以明确服务器期待客户端进行何种反应。 303 对应当前请求的响应可以在另一个 URI 上被找到,而且客户端应当采用 GET 的方式访问那个资源。...这个状态码允许客户端在获取资源时在请求的元信息(请求头字段数据)中设置先决条件,以此避免该请求方法被应用到其希望的内容以外的资源上。...一般来说,这个问题都会在服务器的程序码出错时出现。 501 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。...5xx(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。 500 (服务器内部错误) 服务器遇到错误,无法完成请求。

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

    Java 并发编程之 ConcurrentHashMap 源码分析(小长文)

    使用getObjectVolatile方法读取数组元素需要先获得元素在数组中的偏移量,在这里根据哈希码计算得到分段锁在数组中的偏移量为u,然后通过偏移量u来尝试读取分段锁。...在确定分段锁和它内部的哈希表都不为空之后,再通过哈希码读取HashEntry数组的元素,根据上面的结构图可以看到,这时获得的是链表的头结点。..., hash, value, true); } ConcurrentHashMap中有两个添加键值对的方法,通过put方法添加时如果存在则会进行覆盖,通过putIfAbsent方法添加时如果存在则不进行覆盖...自旋操作也是在JDK1.7中添加的,为了避免线程频繁的挂起和唤醒,以此提高并发操作时的性能。...方法在put方法中被调用,我们知道在put方法时会新建元素并添加到哈希数组中,随着元素的增多发生哈希冲突的可能性越大,哈希表的性能也会随之下降。

    68830

    Java 并发(9)ConcurrentHashMap 源码分析

    我们知道哈希表是一种非常高效的数据结构,设计优良的哈希函数可以使其上的增删改查操作达到 O (1) 级别。...在确定分段锁和它内部的哈希表都不为空之后,再通过哈希码读取 HashEntry 数组的元素,根据上面的结构图可以看到,这时获得的是链表的头结点。..., hash, value, true); } ConcurrentHashMap 中有两个添加键值对的方法,通过 put 方法添加时如果存在则会进行覆盖,通过 putIfAbsent 方法添加时如果存在则不进行覆盖...自旋操作也是在 JDK1.7 中添加的,为了避免线程频繁的挂起和唤醒,以此提高并发操作时的性能。...方法在 put 方法中被调用,我们知道在 put 方法时会新建元素并添加到哈希数组中,随着元素的增多发生哈希冲突的可能性越大,哈希表的性能也会随之下降。

    62110

    引以为戒:避免在Set中使用未重写equals和hashCode的引用对象进行去重

    实际上,HashSet是对HashMap的一个包装,它使用HashMap的键作为集合中的元素,并将HashMap的值设置为一个固定的对象(在实现中称为PRESENT)。...当你向HashSet中添加一个元素时,实际上是将该元素作为HashMap的键,并将对应的值设置为PRESENT对象。...通过计算元素的哈希码(hashCode())和比较元素的内容(equals()),Set判断元素是否相等,避免添加重复元素。...默认的equals()方法是使用==操作符进行引用地址比较,hashCode()方法是根据内存地址计算的哈希码。...重写hashCode()方法,根据对象的属性值来计算哈希码,保证具有相同内容的对象具有相同的哈希码。

    39840

    Password

    identification and authentication Learn how passwords are protected 身份识别和认证 身份识别(IDENTIFICATION) 系统实体提供其声明的身份的过程...,例如UPI(统一支付接口) 认证(Authentication) 验证系统实体声明的身份的过程,例如PIN码或秘密 密码漏洞(PASSWORD VULNERABILITIES) Offline dictionary...应对策略: 尝试失败一定次数后锁定机制 另一种方法是逐渐延迟每次后续尝试 Popular password attack 流行密码攻击 用户倾向于选择容易记住的密码(例如:“123456”),这使得密码很容易被猜出...,可以使用盐,盐可以是随机数,盐会增加攻击者的工作量 注册时,服务器可以存储 UserID Salt 加盐密码的哈希值 加盐的密码验证过程(VERIFYING PASSWORD: SALT WITH...HASH) 用户提供用户 ID 和密码,查找相应的盐和哈希,根据检索到的盐和输入的密码重新计算哈希,如果结果匹配,则接受密码 随机盐的好处 很难猜测一个用户是否为多个服务选择相同的密码 很难猜测多个用户是否为单个服务

    21220

    Play 2.1 - Evolution插件使用指南

    禁用Evolution插件相当于切断了play与数据库间的同步手段,实体类的任意变动都不会影响到数据库的表结构,这在项目发布时非常有用。...考虑到一个应用可能在多台服务器上同时部署,在执行up/down脚本时,会先将表中相应记录的state改为applying_up/applying_down状态,如果执行出错,则更新last_problem..., 如果有脚本执行失败,则Evolution插件不会再尝试执行出错的脚本,而是直接在浏览器中报错,此时的解决办法是手工在数据库中执行出错脚本,然后再单击页面上的"Mark it resolved"按钮。...八、Evolution with Oracle     在play第一次连接数据库时,Evolution插件会尝试创建PLAY_EVOLUTIONS表,上文曾提到过,Evolution插件以硬编码形式提供的建表语句无法在...Oracle中执行,原因是Oracle中没有text类型,所以在将play的数据源切换至Oracle时,我们需要手工在Oracle上创建PLAY_EVOLUTIONS表,建表语句如下: create

    1.2K80

    HTTP 状态码

    utm=qqc 结合实际 PHP 面试,系统的汇总面试中的各种各样的问题,尝试提供简洁准确的答案。如果你在 PHP 面试中遇到问题,欢迎提 Issues 交流。...状态码的目的是对这样的情况进行优化:HTTP 客户端应用程序有一个实体的主体部分要发送给服务器,但希望在发送之前查看一下服务器是否会接受这个实体。...客户端应用程序只有在避免向服务器发送一个服务器无法处理或使用的大实体,才应该使用 100 Continue 200 ~ 299,成功状态码 客户端发起请求时,这些请求通常都是成功的。...超时时长随服务器的不同有所不同,但通常对所有的合法请求来说,都是够长的 409 Conflict 用于说明请求可能在资源上引发的一些冲突。服务器担心请求会引发冲突时,可以发送此状态码。...这可能是客户端碰上了服务器的缺陷,或者服务器上的子元素,比如某个网关资源,出了错 代理尝试着代表客户端与服务器进行交流时,经常会出现问题。

    2.7K00

    从一道面试题引发的原理性探究

    ,我们不必为哈希码字段保留内存.当对象被添加到哈希表时,才把新的私有符号存储在对象上。...与使用内联缓存(IC)系统进行的任何其他属性查找一样,V8 还可以优化哈希码符号查找,从而为哈希码提供非常快速的查找。当键具有相同的隐藏类时,这对于单态内联缓存查找非常有效。...Hiding the hash code 存储哈希码最简单的方法是将 JavaScript 对象的大小扩展一个字,并将散列码直接存储在对象上。...但是,对于那些没有添加到哈希表中的对象,这会浪费内存。相反,我们可以尝试将散列码存储在元素存储或属性存储中。 元素存储是一个包含其长度和所有元素的数组。...在这里没有太多的工作要做,因为可以把哈希码存储在一个保留的槽中(比如第 0 个索引),不过,当我们不使用这个对象作为哈希表中的关键字时,仍然会浪费内存。 让我们看看属性存储。

    1.5K20

    Java内存模型和线程安全

    偏向锁、轻量级锁的状态转化及对象Mark Word的关系如图所示: 在Java语言里面一个对象如果计算过哈希码,就应该一直保持该值不变(强烈推荐但不强制,因为用户可以重载hashCode()方法按自己的意愿返回哈希码...),否则很多依赖对象哈希码的API都可能存在出错风险。...,再次调用该方法取到的哈希码值永远不会再发生改变。...因此,当一个对象已经计算过一致性哈希码后,它就再也无法进入偏向锁状态了;而当一个对象当前正处于偏向锁状态,又收到需要计算其一致性哈希码请求时,它的偏向状态会被立即撤销,并且锁会膨胀为重量级锁。...在重量级锁的实现中,对象头指向了重量级锁的位置,代表重量级锁的ObjectMonitor类里有字段可以记录非加锁状态(标志位为“01”)下的Mark WVord,其中自然可以存储原来的哈希码。

    49560

    温柔地介绍比特币挖掘

    最近在吃晚饭时,我被要求解释比特币挖掘,而我挣扎着,因为它与许多其他概念纠缠在一起。这是我的尝试,把它分解成一口大小的小块。 什么是比特币挖掘?...在比特币中,你不能相信任何特定参与者的时间戳,并且没有“主时钟”来信任,所以阻止顺序相当于时间顺序。 金融威慑。 这是关于猜谜游戏,称为“工作证明”。您实际上并不需要猜谜游戏来将区块添加到区块链中。...我添加了一个问号: 添加或更改一个字符会导致看起来完全不同的散列。 通过稍微改变数据,尝试找到一个从0000000开始的散列。Tricky呃?...---- 结论 总而言之,比特币挖掘是理论上分散的过程,任何人都可以在比特币区块链中添加一块交易,而无需获得任何权威机构的许可,并以比特币支付比特币。...它可以很好地工作,直到任何实体或协调组控制了太多的哈希能力,在这一点上,他们可以控制系统的各个方面。

    1.3K90

    【深入分析Java Web】HTTP解析-常见请求头响应头状态码

    例如,当服务器没有用户请求的数据时就会返回一个404状态码,告诉浏览器没有要请求的数据,通常浏览器就会展示一个非常不愿意看到的该页面不存在的错误信息。...Server 使用的服务器名称,如Server: Apache/1.3.6 (Unix) Content-Type 用来指明发送给接收者的实体正文的媒体类型,如Content-Type:text/html...HttpFox: 火狐上安装HttpFox后,打开的快捷键:ctrl+shift+F2. ? 然后启动监听; ?...Google 建议每次请求时使用的重定向要少于 5 个。 4xx(请求错误)4开头的状态码: 这些状态代码表示,请求可能出错,已妨碍了服务器对请求的处理。...5xx(服务器错误)5开头的状态码: 这些状态代码表示,服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。

    89920

    c#使用HashSet去重

    在编程中,去重是一个常见的需求,尤其是在处理大量数据时。在C#中,HashSet类提供了一种高效的方式来去除重复的元素。...HashSet的工作原理HashSet类在内部使用了一个哈希表来存储元素。当添加一个元素时,HashSet会计算该元素的哈希码,然后根据哈希码将元素存储在哈希表的特定位置。...如果尝试添加一个已存在的元素,HashSet会根据元素的哈希码和相等性比较来判断该元素是否已经存在,从而避免重复。...然后,我们创建了一个包含重复Person对象的列表people,并使用HashSet去重。性能考量HashSet在大多数情况下都能提供很好的性能,特别是在元素数量较大时。...然而,使用HashSet时也需要注意以下几点:哈希冲突:如果多个元素具有相同的哈希码,它们会发生哈希冲突。在极端情况下,哈希冲突可能会导致性能下降。

    2.3K00

    python接口自动化(七)--状态码详解对照表(详解)

    状态码303和307被添加了进来,用以明确服务器期待客户端进行何种反应。 303 对应当前请求的响应可以在另一个 URI 上被找到,而且客户端应当采用 GET 的方式访问那个资源。...这个状态码允许客户端在获取资源时在请求的元信息(请求头字段数据)中设置先决条件,以此避免该请求方法被应用到其希望的内容以外的资源上。...一般来说,这个问题都会在服务器的程序码出错时出现。 501 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。...502 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。 503 由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。...504 作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。

    1.3K41

    HTTP状态码详解对照表

    状态码303和307被添加了进来,用以明确服务器期待客户端进行何种反应。 303 对应当前请求的响应可以在另一个URI上被找到,而且客户端应当采用GET的方式访问那个资源。...在添加了表明请求消息体长度的有效Content-Length头之后,客户端可以再次提交该请求。 412 服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个。...这个状态码允许客户端在获取资源时在请求的元信息(请求头字段数据)中设置先决条件,以此避免该请求方法被应用到其希望的内容以外的资源上。...一般来说,这个问题都会在服务器的程序码出错时出现。 501 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。...504 作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。

    62240

    以太坊虚拟机EVM的工作原理是怎样的

    如果你打算尝试在以太坊区块链上开发智能合约,或者已经在该领域工作了一段时间,可能会遇到EVM一词,EMV是太坊虚拟机的缩写。 虚拟机本质上是在执行代码和执行的机器之间创建一个抽象级别。...相反,它们需要被编译为低级别的指令(称为操作码)。 操作码 在底层,EVM 使用一组指令(称为操作码)来执行特定任务。 在撰写本文时,有 140 个唯一操作码。...在合约上调用函数时,函数签名是通过对函数名称(包括其输入)进行哈希处理(使用 keccak256)并截断除前 4 个字节之外的所有内容来确定的。...需要传递给函数的参数(在这种情况下没有)可以在交易输入数据中的签名哈希之后添加到称为单词的 32 字节片段中。...尽管通过智能合约与 EVM 交互可能比在传统服务器上运行程序要昂贵得多,但在许多用例中,去中心化更受大家的关注。

    74330

    http状态码

    状态码303和307被添加了进来,用以明确服务器期待客户端进行何种反应。 303 对应当前请求的响应可以在另一个 URI 上被找到,而且客户端应当采用 GET 的方式访问那个资源。...这个状态码允许客户端在获取资源时在请求的元信息(请求头字段数据)中设置先决条件,以此避免该请求方法被应用到其希望的内容以外的资源上。...一般来说,这个问题都会在服务器的程序码出错时出现。 501 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。...502 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。 503 由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。...504 作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。

    22930

    【犀牛鸟论道】深度哈希方法及其在移动视觉搜索中的应用

    因此,许多研究尝试提出一个端到端的深度哈希框架,用以自动学习图像的二进制哈希码表示。表1展示了现有的深度学习哈希方法及其特点。这些方法在CIFAR-10数据集上的图像搜索性能如表2所示。 ?...首先在大型图像数据集上训练深层神经网络,学习图像搜索的有效特征表示;然后添加一个隐藏的哈希层,用于训练将特征映射到二进制序列的哈希函数。...Lin等人就提出了这样一个深度哈希框架[6]:第一步是在ImageNet上进行卷积神经网络有监督的预训练,学习丰富的中层图像特征;然后在网络中添加一个隐藏层,学习哈希码的转换,并在目标数据集上进行微调。...除了这三个约束,无监督的深层哈希神经网络也将旋转不变性添加到二进制码的学习中,进一步提高了无监督深度哈希的性能[8]。...将全连接层分割,顺序加载和执行;4)在流水线CPU和GPU计算时将全连接层计算全部放在CPU上。

    1.2K100

    小白学算法-数据结构和算法教程: 使用开放寻址线性探测实现自己的哈希表

    类似地,哈希表用于在恒定时间内获取、添加和删除元素。在继续实施方面之前,任何人都必须清楚哈希表的工作原理。...每个哈希函数都有两部分:哈希码和压缩器。  哈希码是一个整数(随机或非随机)。在Java中,每个对象都有自己的哈希码。...我们将在哈希函数中使用 JVM 生成的哈希码,并根据哈希表的大小对哈希码取模 (%) 来压缩哈希码。所以模运算符在我们的实现中是一个压缩器。...这很有趣,因为当负载因子高于我们指定的值时,我们需要动态增加列表的大小。   就像删除步骤直到遍历和添加一样,两种情况(在头点或非头点添加)保持不变。...接近尾声时,如果负载系数大于 0.7 我们将数组列表的大小加倍,然后在现有键上递归调用 add 函数,因为在我们的例子中,生成的哈希值使用数组的大小来压缩我们使用的内置 JVM 哈希码,因此我们需要获取新的索引现有的钥匙

    19920

    HTTP状态码详解

    状态码303和307被添加了进来,用以明确服务器期待客户端进行何种反应。 303 对应当前请求的响应可以在另一个 URI 上被找到,而且客户端应当采用 GET 的方式访问那个资源。...这个状态码允许客户端在获取资源时在请求的元信息(请求头字段数据)中设置先决条件,以此避免该请求方法被应用到其希望的内容以外的资源上。...500 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。 501 服务器不支持当前请求所需要的某个功能。...当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。 502 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。...504 作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。

    50510
    领券