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

为什么String中hashCode方法里使用神奇因子 31呢?

今天我们接着聊聊String类型一个有趣的问题:hashCode 方法中的因子31。...但这里需要注意一个问题,为什么要是质数?。我觉得就是质数能很好的对只进行散列分布和减少哈希冲突--这感觉像一个传统。...ps:1就没算了,因为用1和没用是一样的--1乘以任何数都等于数本身,还算个啥呢 从上图可以看出,使用较小的质数做为乘子时,冲突率会很高。尤其是质数2,冲突率达到了 55.14%。...我们看到31、37、41、101 和 199 这几个不大不小的质数,表现都不错,冲突率很低。但为什选择了31呢? 先来说,为什么不是101?我们知道,这个质数是要参与到哈希值的计算的。...这就是关于hashcode中质数31的全部内容啦~ 祝大家天天开心,我们下期见!

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

    做一个“吵架”的程序员,可能更优秀!

    他现在非常苦恼,项目也停滞不前,要我帮他推荐专业的nodejs开发人员。这就是典型一个错误的跟风! 这个时候,我们需要质疑的态度,那就是批判性思维。 那么批判性思维到底是什么呢?怎么做才算拥有呢?...02 为什么需要批判性思维? 互联网信息大爆炸的时代,我们每天充斥着各种信息,但真假难辩。...比如看微信文章、使用开源代码、使用新技术,今天看到这个新技术比较好,明天又看到另一个新技术更好,但技术实现方式不一样,我们要怎样辨别所使用的新技术确实符合要求?又怎么通过信息来做出自己的选择呢?...就像我那位朋友,如果当初他对nodejs能再进一步了解,或者能跟团队进行讨论: 为什么选择nodejs?它跟其它语言对比有什么优缺点?团队能否快速接受学习这种语言?...淘金式的思维就是能对于所得到的信息能以互动的方式进行批判性的提问,能从众多信息中淘出金子,得到我们想要的信息。 那么我们怎么让自己具备淘金式学习的能力呢?

    59950

    面向前端工程师的Nodejs入门手册(二)

    继上一篇介绍了基于Nodejs的http服务和文件操作的内容后,本篇内容主要介绍前端工程师在日常工作中较少接触到的TCP相关知识内容,从Nodejs的TCP模块入手,通过实例看看TCP是怎么一回事。...与我们接触最频繁的http请求就是基于它,相比于http,它没有超时时间,正常情况下它可以一直保持连接。 ?...为什么更多的意义是一种资源释放的作用呢,如果两端把数据都发完了后均只发送一次包告诉对方数据完了,而不发送给对方确认包可以吗?...---- Hello World入门 使用Nodejs的net模块来建立一个TCP服务器。...但是为什么很少见甚至没听过telnet还能远程登录呢?是因为telnet采用明文传送报文,安全性不好,所以现在用的多且熟悉的远程登录都是通过ssh(security shell)来完成的。

    45720

    面向前端工程师的 Node.js 入门手册(二)

    继上一篇介绍了基于Nodejs的http服务和文件操作的内容后,本篇内容主要介绍前端工程师在日常工作中较少接触到的TCP相关知识内容,从Nodejs的TCP模块入手,通过实例看看TCP是怎么一回事。...与我们接触最频繁的http请求就是基于它,相比于http,它没有超时时间,正常情况下它可以一直保持连接。 ?...为什么更多的意义是一种资源释放的作用呢,如果两端把数据都发完了后均只发送一次包告诉对方数据完了,而不发送给对方确认包可以吗?...---- Hello World入门 使用Nodejs的net模块来建立一个TCP服务器。...但是为什么很少见甚至没听过telnet还能远程登录呢?是因为telnet采用明文传送报文,安全性不好,所以现在用的多且熟悉的远程登录都是通过ssh(security shell)来完成的。

    71710

    原生JS灵魂之问(下), 冲刺进阶最后一公里(附个人成长经验分享)

    对前者而言,在操作系统进行 I/O 的操作的过程中,我们的应用程序其实是一直处于等待状态的,什么都做不了。...那如果换成非阻塞I/O,调用返回后我们的 nodejs 应用程序可以完成其他的事情,而操作系统同时也在进行 I/O。...这样就把等待的时间充分利用了起来,提高了执行效率,但是同时又会产生一个问题,nodejs 应用程序怎么知道操作系统已经完成了 I/O 操作呢?...属性对应的值便是我们 nodejs 应用程序代码中传入的回调函数。...好,至此现在js的调用就直接返回了,我们的 js 应用程序代码可以继续往下执行,当然,当前的 I/O 操作同时也在线程池中将被执行,这不就完成了异步么:) 等等,别高兴太早,回调都还没执行呢!

    2K10

    electron-builder进行DEBUG输出的正确方式

    在使用electron-builder的时候,由于对机制的不熟悉,我们在打包过程中常常遇到很多环境错误,但最终只是一些简单的错误信息,难以排查问题。...有这样的一个步骤,是因为electron在运行主进程脚本的时候,是跑在了electron内部的一个nodejs环境的,electron内部的nodejs与开发机器上的nodejs并不一定是相同的。...node版本呢是12,而我们本地机器上的node是14。...这也侧面说明了为什么一般的electron应用程序会很大,因为一份electron应用程序,就有一个node的运行时。...然后在package.json中的scripts中添加一段脚本:"installappdeps": "electron-builder install-app-deps" 最后调用命令npm rum installappdeps

    66250

    为什么我们不要在nodejs中阻塞event loop

    为什么我们不要在nodejs中阻塞event loop 简介 我们知道event loop是nodejs中事件处理的基础,event loop中主要运行的初始化和callback事件。...nodejs高效运行的秘诀就是使用异步IO从而可以使用少量的线程来处理大量的客户端请求。 而同时,因为使用了少量的线程,所以我们在编写nodejs程序的时候,一定要特别小心。...阻塞event loop 因为nodejs中的线程有限,如果某个线程被阻塞,就可能会影响到整个应用程序的执行,所以我们在程序设计的过程中,一定要小心的考虑event loop和worker pool,避免阻塞他们...Event Loop中不推荐使用的Node.js核心模块 在nodejs中的核心模块中,有一些方法是同步的阻塞API,使用起来开销比较大,比如压缩,加密,同步IO,子进程等等。...这些API的目的是供我们在REPL环境中使用的,我们不应该直接在服务器端程序中使用他们。 有哪些不推荐在server端使用的API呢?

    47540

    我们为什么在MySQL中几乎不使用分区表

    在Oracle中,使用分区表是一种很自然的事情,数据库容量基本都是500G起,大小在5T以上都是很常见的。...但是在MySQL的使用中,我们几乎不使用分区表,今天有同学在群里一起沟通,我就按照我的理解做了梳理。...我觉得主要是使用模式的差异,我们不使用的主要原因是避免单库存储过大,而且分区表变更相对会比较麻烦,在MySQL侧,我们的目标是让数据库更小巧轻量一些,可能更偏TP一些,我们目前是排除了分区表的设计,而且也明确写进了开发规范...,如果按照数据类型来说,状态表,流水表和配置表,这三种类型中也就只有流水日志表的数据都是建议使用周期表的形式进行存储,方便随时扩展,表结构变更也方便T+1的变更模式 在这个基础上,可以把这个问题转化为,...问题2:日表和月表什么关系呢?月表是日表的联合查询还是数据镜像?

    1.7K50

    如何在Ubuntu 14.04中使用NodeJS,SailsJS和DustJS构建SPA(单页应用程序)

    Node.js使用事件驱动的非阻塞I / O模型,使其轻量级和高效,非常适合在分布式设备上运行的数据密集型实时应用程序。 Sails是后端服务器的NodeJS框架。...在本教程中,我们将设置一个带有SailsJS的NodeJS服务器作为管理代码的框架。我们将使用DustJS用于客户端和服务器上使用的同构模板。...它就像apt-get对于NodeJs一样。 我们将使用它来安装Sails dust-compiler等节点模块,以及其他需求。...这个模板的编译版本(我们编译使用dust-compiler)驻留在assets/templates/home.js。此编译的模板稍后将包含在脚本标记中。...我们成功构建了一个同构网站,允许在客户端和服务器上使用相同的模板。 我们构建了单页应用程序(SPA)网站,并了解了使用SailsJS框架。

    3K00

    说说Nodejs高并发的原理

    写在前面我们先来看几个常见的说法nodejs是单线程 + 非阻塞I/O模型nodejs适合高并发nodejs适合I/O密集型应用,不适合CPU密集型应用在具体分析这几个说法是不是、为什么之前,我们先来做一些准备工作从头聊起一个常见...又有哪些其他的I/O模型呢?别着急,首先我们看一下什么是阻塞什么是阻塞?什么是阻塞I/O?...中,我们可以以异步的方式去进行I/O操作,通过API调用I/O操作后会马上返回,紧接着就可以继续执行其他代码逻辑,那为什么nodejs中的I/O是“非阻塞”的呢?...里到底使用了哪种I/O模型呢?...别着急,先接着往下看,我们来了解下nodejs的体系结构nodejs体系结构,线程、I/O模型分析图片最上面一层是就是我们编写nodejs应用代码时可以使用的API库,下面一层则是用来打通nodejs和它所依赖的底层库的一个中间层

    2.3K30

    使用nodejs做文件下载中转

    但是对于OSS存储的文件比如图片点击后在浏览器直接打开了,即使是添加了download属性也无济于事,于是我就想到了使用nodejs来搭建一个中转站。...接下来要做的就是区分文件存储的环境是https还是http,两种方式没有什么别的区别,只是请求的模块不一样,当然这里我们也可以使用request模块,不在多说。...然后设置文件的编码为binary,也就是二进制的格式,为什么要设置成二进制呢?是因为我们不知道即将下载的文件格式具体是什么。...随后当请求返回数据后,我们也将数据写入到接口的响应体中,同时编码格式也是二进制。直到流获取完成,此时也将数据全部都写入到了响应体中,之后调用res.end来结束连接。...如此,一个使用nodejs来作为文件下载中转的例子就写好了。

    3.4K30

    Web开发在过去20多年时间里如何改变了我

    2007年年底,我开始使用C#编写ASP.NET。HTML和JavaScript仍然参与其中,但多多少少被封装在第三方控件中,并且jQuery当时是JavaScript的别名。...(好吧,我们确实在2005年搞回了一个很酷的SPA,但我们没有想过如何用它创建一个框架。) NodeJS通过在服务器上使用JavaScript再次改变了世界。...我不怎么对NodeJS感兴趣,除了在后端使用它,因为一些工具基于NodeJS。也许这是一个错误,谁知道呢; ) 现在我们有了ASP.NET Core,这感觉比传统的ASP.NET MVC更自然得多。...几个星期前,我启动了我第一个真正的NodeJS项目:一个使用NodeJS来为用户提供高度灵活脚本运行时的桌面应用程序。...NodeJS提供功能和UI给用户,所有都是用TypeScript写的,而不是普通的JavaScript。为什么?

    1.5K60

    大家一致避免使用的锁存器为什么依然存在于FPGA中?我们对锁存器有什么误解?

    而且目前网上大多数文章都对锁存器有个误解,我们后面会详细说明。   这篇文章,我们包含如下内容: 锁存器、触发器和寄存器的原理和区别,为什么锁存器不好? 什么样的代码会产生锁存器?...为什么锁存器依然存在于FPGA中? 锁存器、触发器和寄存器的原理和区别,为什么锁存器不好?   锁存器、触发器和寄存器它们的英文分别为:Latch、Flip-Flop、Register。...上面这两种写法容易出现在什么地方呢?最常见的就是状态机,我见过不少的FPGA工程师在写状态机时,case语句中没有给出变量的全部情况。 为什么锁存器依然存在于FPGA中?   ...所以,FPGA中没有Latch的说法在Xilinx的FPGA中是不对的。 最后一个问题,既然Latch有这么多的问题,那为什么FPGA中还要保留?...最后要说明的一点是:锁存器虽然在FPGA中不怎么被使用,但在CPU中却很常见,因为锁存器比Flip-Flop快很多。

    1.9K22

    2021年编程语言趋势预测:Python和JavaScript仍火热,Go不可小觑

    Tensorflow和Pytorch到底该用哪个呢? “import tensorflow as pytorch!” 编程语言及框架似乎总是被人拿来比较,这里我们只谈语言。...他在Medium上的一篇文章中为我们分析了 2021 年编程语言趋势。...调查数据 为什么选择Python? Python是一种高级动态类型编程语言,在IT行业中已经流行了很多年。...前端和后端使用一种语言编写。 Uber,LinkedIn,Netflix和Facebook等主要公司都在使用。 跨平台:可以在Windows,Mac和Linux上构建和运行Node.js应用程序。...基于以上优点,我们可以看到Go也是一种很棒的语言。您可能想知道为什么要花这么多时间才能弄清这一点,为什么还没有开始使用Go。在我这边,我也这么认为。

    1K30

    Nodejs学习路线图

    Nodejs标准的web开发框架Express,可以帮助我们迅速建立web站点,比起PHP的开发效率更高,而且学习曲线更低。非常适合小型网站,个性化网站,我们自己的Geek网站!! ?...那么接下来,大家肯定都会问为什么要是用Nodejs呢? 1.2. 为什么要用Nodejs?...2. 15个Nodejs应用场景 我们已经对Nodejs有了初步的了解,接下来看看Nodejs的应用场景。...通常用Nodejs做Web开发,需要3个框架配合使用,就像Java中的SSH。 2.2 REST开发:Restify restify 是一个基于Nodejs的REST应用框架,支持服务器端和客户端。...Nodejs学习路线图 我们看到Nodejs已经被广发地应用在各种的场景了,针对Nodejs的应用场景,我们应该如何学习Nodejs呢?

    6.4K102

    面向开发人员的十大 NodeJS 框架

    如果我们不提及 MeteorJS 框架,那么这个列表是不完整的。它是 NodeJS 的全栈框架,允许用户构建实时应用程序。 它用于创建基于移动和基于 Web 的 javascript 应用。 ?...Koa 的独特之处在于它使用了一些非常酷的 ECMAScript (ES6)方法,这些方法甚至还没有出现在某些浏览器中。它使你无需 回调 即可工作,同时极大地扩展了错误 处理。 ?...NestJS 框架-一种渐进式的 NodeJS 框架,用于构建高效、可靠和可扩展的服务器端应用程序 NestJS 框架-一种渐进式的 NodeJS 框架,用于构建高效、可靠和可扩展的服务器端应用程序 NodeJS...让我们检查一些主要的NodeJS框架的优点: 实时工作环境 简单的编码经验 无缝数据流 在整个开发过程中使用相同的代码模式 方便易用的 最终分析 看完本文之后,我们当然可以理解,采用哪种框架完全取决于我们想要构建的网站和...框架列表是无穷无尽的,在 JavaScript 社区中无处不在。

    2.8K20

    说说Nodejs高并发的原理

    写在前面我们先来看几个常见的说法nodejs是单线程 + 非阻塞I/O模型nodejs适合高并发nodejs适合I/O密集型应用,不适合CPU密集型应用在具体分析这几个说法是不是、为什么之前,我们先来做一些准备工作从头聊起一个常见...又有哪些其他的I/O模型呢?别着急,首先我们看一下什么是阻塞什么是阻塞?什么是阻塞I/O?...中,我们可以以异步的方式去进行I/O操作,通过API调用I/O操作后会马上返回,紧接着就可以继续执行其他代码逻辑,那为什么nodejs中的I/O是“非阻塞”的呢?...I/O模型呢?...别着急,先接着往下看,我们来了解下nodejs的体系结构nodejs体系结构,线程、I/O模型分析图片最上面一层是就是我们编写nodejs应用代码时可以使用的API库,下面一层则是用来打通nodejs和它所依赖的底层库的一个中间层

    1.1K00
    领券