arr

一千万个数高效求和

三世轮回 提交于 2020-01-04 14:39:29
前言 今天看到了一道面试题 一千万个数,如何高效求和? 看到这个题中的“高效求和”,第一反应想到了JDK1.8提供的 LongAdder 类的设计思想,就是 分段求和再汇总 。也就是开启多个线程,每个线程负责计算一部分,所以线程都计算完成后再汇总。整个过程大致如下: 思路已经有了,接下来就开始愉快的编码吧 测试环境 win10系统 4核4线程CPU JDK1.8 com.google.guava.guava-25.1-jre.jar lombok 实例 由于题目对一千万个数没有明确定义是什么数,所以暂定为int类型的 随机数 。为了对比效率,博主实现了 单线程版本 和 多线程版本 ,看看多线程到底有多高效。 单线程版本 单线程累加一千万个数,代码比较简单,直接给出 /** * 单线程的方式累加 * @param arr 一千万个随机数 */ public static int singleThreadSum(int[] arr) { long start = System.currentTimeMillis(); int sum = 0; int length = arr.length; for (int i = 0; i < length; i++) { sum += arr[i]; } long end = System.currentTimeMillis(); log

JavaScript中数组对象详解

一个人想着一个人 提交于 2020-01-04 05:44:06
Array对象即数组对象用于在单个变量中存储多个值,JS的数组是弱类型的,所以允许数组中含有不同类型的元素,数组元素甚至可以是对象或者其他数组。 创建数组的语法 1、Array构造器 1、var list=new Array(); 2、var list=new Array(size); 3、var list=new Array(element0,element1,...elementn); 2、字面量的方式 var Array[element0,element1,...elementn]; 举例子 var list=new Array(1,true,null,undefined,{x:1},[1,2,3]); var list[1,true,null,undefined,{x:1},[1,2,3]]; 数组的分类 1、二维数组,二维数组的本质是数组中的元素又是数组。 var arr = [[1,2],[a,b]]; alert(arr[1][0]); //a 第2列第1行所在的元素 2、稀疏数组 稀疏数组是包含从0开始的不连续索引的数组。在稀疏数组中一般length属性值比实际元素个数大(不常见) 举例 var a=["a",,"b",,,,"c",,]; 数组对象属性 属性 作用 length 属性 表示数组的长度,即其中元素的个数 prototype 属性

javascript 详解数组

依然范特西╮ 提交于 2020-01-04 05:42:45
概念 数组创建 数组读写 数组 VS. 一般对象 相同点 不同点 稀疏数组 数组的length属性 元素增删 数组迭代 二维数组 数组方法 Array.prototype.join Array.prototype.reverse Array.prototype.sort Array.prototype.concat Array.prototype.slice 切片 Array.prototype.splice 胶接 Array.prototype.forEach (ES5) Array.prototype.map (ES5) Array.prototype.filter (ES5) Array.prototype.every (ES5) Array.prototype.some (ES5) Array.prototype.reduce/reduceRight (ES5) Array.prototype.indexOf/lastIndexOf (ES5) Array.isArray (ES5) 字符串和数组 最近在学习数组,发现很多ES5的方法平时很少用到。细节比较多,自己做了大量例子和整理,希望对大家了解JavaScript中的Array有所帮助。 概念 数组是值的有序集合。每个值叫做元素,每个元素在数组中都有数字位置编号,也就是索引。JS中的数组是弱类型的

How can I make ARR work with SSL offloading DISABLED? 502.3 Bad Gateway

☆樱花仙子☆ 提交于 2020-01-04 03:56:29
问题 So I have been hitting this error for days now. I have googled and googled but nothing seems to resolve my scenario and am hoping someone out there can help. The problem: When I disable SSL offloading in ARR (Routing Rules) I receive the following: 502 - Web server received an invalid response while acting as a gateway or proxy server. There is a problem with the page you are looking for, and it cannot be displayed. When the Web server (while acting as a gateway or proxy) contacted the

冒泡排序加图解

混江龙づ霸主 提交于 2020-01-04 00:54:16
/* 冒泡排序 */ class SortDemo{ public static void main(String[] args){ int[] arr = {2,12,3,13,20,11,32,33}; //调用冒泡排序方法 printSort(arr); } //冒泡排序 public static void printSort(int[] arr){ for(int i =0;i<arr.length-1;i++){ //循环次数 for(int j = 0;j<arr.length-i-1;j++){//最大值依次往后排 if(arr[j]>arr[j+1]){ int temp = arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } for(int k=0;k<arr.length;k++){ System.out.print(arr[k]+"\t"); } } } 来源: 51CTO 作者: qq5e01e21075ea4 链接: https://blog.51cto.com/14651315/2464210

Java学习入门06

徘徊边缘 提交于 2020-01-04 00:48:33
方法概述 方法: 就是将一个 功能 抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。 当我们需要这个功能的时候,就可以去调用。这样即实现了代码的复用性,也解决了代码冗余的现象。(方法就是完成特定功能的代码块) 方法的定义 定义格式: 修饰符 返回值类型 方法名 (参数列表){ 代码(方法体)... return ; } 定义格式解释: 修饰符 :目前固定写法 public static 返回值类型 用于限定返回值的数据类型 方法名 一个名称,为了方便我们调用方法 参数类型 限定调用方法时传入参数的数据类型 参数名 是一个变量,接收调用方法时传入的参数 方法体 完成功能的代码 return 结束方法以及返回方法指定类型的值 返回值 程序被return带回的结果,返回给调用者 有明确返回值的方法调用: 单独调用,没有意义 输出调用,有意义,但是不够好,因为我不一定非要把结果输出 赋值调用,推荐方式 方法定义注意事项 : 方法不调用不执行 方法与方法是平级关系,不能嵌套定义 方法定义的时候参数之间用逗号隔开 方法调用的时候不用在传递数据类型 如果方法有明确的返回值,一定要有return带回一个值 没有明确返回值的函数调用 其实就是void类型方法的调用 只能单独调用 方法重载概述 在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可 方法重载的特点

javascript数组对象

久未见 提交于 2020-01-03 22:42:20
constructor属性 返回数组对象原型 var arr = [1,2,3,4,5]; arr.constructor //输出 function Array() { [native code] } length属性 返回数组的数目(长度) var arr = [1,2,3,4,5]; arr.length //输出 5 concat()方法 用于连接两个或多个数组(该方法不会改变现有数组) var arr = [1,2,3,4,5]; var list = [6,7,8,9]; arr.concat(list); // 输出[1, 2, 3, 4, 5, 6, 7, 8, 9] copyWithin()方法 用于从数组的指定位置拷贝元素到数组的另一个指定位置中。 语法:array.copyWithin(target,start,end) 参数 target 必选,复制到指定目标索引位置 参数 start 必选,元素复制的起始位置 参数 end 可选,停止复制的索引的位置(默认为数组的长度) var arr = [1,2,3,4,5]; arr.copyWithin(2,0); //输出 [1, 2, 1, 2, 3] every()方法 用于检测数组中所有元素是否符合指定条件(通过函数提供) 如果所有元素都满足条件,则返回true。否则,返回false。 var ages =

javaScript(数组)

房东的猫 提交于 2020-01-03 22:41:43
JavaScript引用类型--数组常用方法 在ECMAScript中数组是非常常用的引用类型了。ECMAScript所定义的数组和其他语言中的数组有着很大的区别。首先要说的就是数组也是一种对象。 数组的概念、特性、常用方法 掌握Object,学会使用对象 了解其他引用类型对象 特点: 1.数组”即一组数据的集合。 2.js数组更加类似java的容器。长度可变,元素类型也可以不同! 3.数组长度随时可变!随时可以修改!(length属性) -----创建数组方式------ //方式一: var arr = new Array(); //方式二: var arr = [1,2,3,4,true,new Date(),'abc'] arr.length;//查询数组长度,等于7 arr.length=3;//那么 arr = [1,2,3],相当于截取了前三。 常用方法 作用 返回值 push 向数组尾部追加元素,并改变原数组的值 新数组的元素个数, pop 从数组的尾部移除一个元素,并改变原数组的值 移除的元素内容 shift 从头部移除一个元素,并改变原数组的值 移除的元素内容 unshift 向数组头部插入多个元素,并改变原数组的值 新数组的长度 splice 截取的方法。第一个参数:起始位置,第二参数:表示截取的个数,第三个参数:新追加的新元素个数。不改变原数组的值

js技巧-使用reduce实现更简洁的数组对象去重和数组扁平化

纵饮孤独 提交于 2020-01-03 21:39:32
Array.prototype.reduce()方法介绍: 感性认识reduce累加器: const arr = [1, 2, 3, 4]; const reducer = (accumulator, currentValue) => accumulator + currentValue; console.log(arr.reduce(reducer)); //10,即1 + 2 + 3 + 4。 console.log(arr.reduce(reducer, 6));//16,即6 + 1 + 2 + 3 + 4。 你可以通过打印reducer的两个参数,从而直观的感受到,第二个参数currentValue是当前的元素,而第一个参数accumulator总是返回每一次执行reducer函数的返回值,如此一次次累加起来。 reduce方法接收两个参数: reduce(callback,initialValue) callback(accumulator,currentValue, index,arr) : 执行于每个数组元素的函数; initialValue : 传给callback的初始值。 更详细的讲, callback 就是由你提供的 reducer函数 ,调用reduce()方法的 数组中的每一个元素都将执行你提供的reducer函数 ,最终汇总为 单个返回值 。

js数组

天涯浪子 提交于 2020-01-03 21:39:06
 数组:定义 赋值 使用(取值) 遍历 数组方法 字符串方法    定义: var arr=[1,2,3,4,5]; //定义并赋值 var arr=[]; //先定义后赋值 arr[0]=1; //下标 arr[3];             //取值,值是4 数组元素:数组里面的每一个值就是数组元素 数组长度:数组元素的个数 arr.length 数组下标:数组元素在数组中的位置 从0开始   一维数组:arr [ 1,2,3,4,5 ]     arr[0]; //1 for(var i=0;i<arr.length;i++){ console.log(arr); }   二维数组:arr[ [1,2,3,4,5],[11,22,33,44,55]]     arr[1][3];  //44 for(var i=0;i<arr.length;i++){ for(var j=0;j<arr.length;j++){ console.log(arr); } }  数组:定义 赋值 使用(取值) 遍历 数组方法 字符串方法    定义: var arr=[1,2,3,4,5]; //定义并赋值 var arr=[]; //先定义后赋值 arr[0]=1; //下标 arr[3];             //取值,值是4 数组元素:数组里面的每一个值就是数组元素 数组长度