arr

Golang - 指针与引用

天大地大妈咪最大 提交于 2020-02-01 18:51:28
​ Golang有指针 , 那么一切数据都是值传递吗 ? 都需要用户进行指针传递吗, 其实不然, 对于Go语言, 虽然有指针, 但是其也有引用传递. 是不是很绕, 因为引用传递就是指针传递哇 . 我们继续解释. 概念 在Go语言中,对于 布尔变量 或 数值类型 或 字符串类型 或 数组 以及 struct 都是按照值传递的:值在传递给函数或者方法时会被复制一份,然后方法或函数使用的是复制的这份值,也就不会对原值产生什么影响。一般情况下,对于布尔变量或数值类型或字符串类型的按值传递是非常廉价的,Go语言编译器会在传递过程中进行安全优化。 对于大字符串是这样,对于数组进行值传递也是如此。为了解决可能产生的巨大代价,Go语言使用数组切片来代替数组的使用。传递一个切片的代价跟传递字符串差不多,无论该切片的长度或容量是多大。对切片进行复制修改操作也不会像字符串那样需要创建新的切片, 因为切片是可变的,属于引用类型 。 因此以下就是重点 : 语言中的值传递类型有:基本数据类型,数组 , struct 特点 :变量直接存储值,内存通常在栈中分配,栈在函数调用完会被释放 , 在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数 , 所以他最大的好处就是不怕多线程安全性问题. 但是浪费内存 Go语言中的引用类型有:映射(map),数组切片(slice)

javascript数组的排序(sort,冒泡)

那年仲夏 提交于 2020-02-01 09:31:07
一、js的sort()方法 var arr = [10, 20, 1, 2]; arr.sort(function(a,b){ if(a<b){ return -1; } if(a>b){ return 1; } return 0; }) console.log(arr); //[1, 2, 10, 20] 如上面代码,按照正序(由小到大)排列。通常规定,如果a<b,则返回-1;如果a>b,则返回1;如果a==b,则返回0; 倒序相反。 var arr = [10, 20, 1, 2]; arr.sort(function(a,b){ return a-b; }) console.log(arr); //[1, 2, 10, 20] 该段排序代码效果同上段代码。 二、冒泡排序 var arr = [10, 20, 1, 2]; var t; for(var i=0;i<arr.length;i++){ for(j=i+1;j<arr.length;j++){ if(arr[i]>arr[j]){ t=arr[i]; arr[i]=arr[j]; arr[j]=t; } } } console.log(arr); //[1, 2, 10, 20] 三、二维数组的排序(sort,冒泡) 1.二维数组使用sort()方法排序 var arr=[ ["北京",80], ["上海",50],

Java基础——数组

。_饼干妹妹 提交于 2020-01-31 22:58:13
Java基础——数组 数组 数组的概念:存储同一种 数据类型 多个元素的集合,既可以存储 基本数据类型 ,也可以存储 引用数据类型 。 数组的作用:为了存储 同种数据类型 的多个值。 定义格式: 数据类型[] 数组名 = new 数据类型[数组的长度];( 动态初始化 ) 数据类型[] 数组名 = {元素1,元素2,···};( 静态初始化 ) 数组的初始化 定义:为数组开辟连续的内存空间,并为每一个数据元素赋值。 分类: 动态初始化:只指定长度,由系统给出默认初始化值。 静态初始化:给出初始化值,由系统指定长度。 Java中的内存分配以及栈和堆的区别 内存分配 栈通过得到堆的地址找到相应的堆 栈和堆的区别 栈:存储 局部变量 (定义子啊方法声明上和方法中的变量),具有 先进后出 的原则。 堆:存储 new 出来的数组和对象。 数组操作中两个常见的小问题 数组索引越界异常 ArrayIndexOutOfBoundsException 原因:访问了不存在的索引 空指针异常 NullPointerException 原因:当数组引用赋值为 null ,再去调用数组中的元素 一维数组的基本操作 数组的遍历 定义:依次输出数组中的每一个元素 数组的长度: Array.length 数组的最大索引: Array.length-1 一维数组的遍历 /* 数组的遍历,利用方法提高复用性 */

清空数组的三种方式

扶醉桌前 提交于 2020-01-31 02:04:39
清空数组的三种方式: 1、splice(0,数组的长度); var arr1 = arr.splice(0,arr.length); console.log(arr1); 2、让数组的长度为0; 这种方式很有意思,其它语言如 Java ,其数组的length是只读的,不能被赋值。如 int [] ary = { 1 , 2 , 3 , 4 }; ary.length = 0 ; Java中会报错,编译通不过。而JS中则可以,且将数组清空了; (在JS中length的属性是可读可写的,也就是可以给length属性赋值) console.log(arr.length); arr.length=0; console.log(arr); 3、让数组为空; var arr = [12,23,"a",undefined,null,90]; arr = []; conlose.log(arr); 这里其实并不能说是严格意义的清空数组,只是将ary重新赋值为空数组,之前的数组如果没有引用在指向它将等待垃圾回收。   第2种方式保留了数组其它属性,第3种则未保留。很多人认为方式2的效率很高些,因为仅仅是给length重新赋值了,而方式3则重新建立个对象。经测试恰恰是方式3的效率高。测试代码如下: var a = []; for (var i=0; i< 1000000; i++){ a.push(i

C++起航

假装没事ソ 提交于 2020-01-30 14:30:37
1.1 C++输入与输出 #include <iostream> #include <stdlib.h> using namespace std; //要求:用户输入一个整数,将该整数分别以8进制,10进制,16进制打印在屏幕上 //要求:提示用户输入一个布尔值(0 或 1),以布尔方式打印在屏幕上 int main() { cout << "Please enter a number:" << endl;//输出 int x = 0; cin >> x;//输入 cout << oct << x << endl;// 八进制 cout << dec << x << endl;// 十进制 cout << hex << x << endl;//16进制9 cout << "请输入一个布尔值(0或1):" << endl; bool y = false; cin >> y; cout << boolalpha << y << endl; //boolalpha,函数名称,功能是把bool值显示为true或false system ("pause"); //系统暂停 return 0; } Please enter a number: 17 21 17 11 请输入一个布尔值(0或1): 0 false 请按任意键继续. . . Process returned 0 (0x0)

Java学习笔记(三):数组

冷暖自知 提交于 2020-01-30 04:21:54
数组声明 java语言中,数组是一种最简单的复合数据类型。数组是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和下标来唯一地确定数组中的元素。 int arr1[]; int[] arr2; 两种写法都可以。 初始化 动态初始化 使用new来为数组分配内存空间: int[] arr; arr = new int[10]; 需要注意的是分配内存空间时要指定数组的数量,同时数组中的每一个元素都会被设置为对应类型的默认值。 内存结构 静态初始化 相对于上面的初始化,还有一种初始化的方式可以在初始化时就指定好数组的内容: int[] arr = {0,1,2,3,4,5,6,7,8,9};//静态初始化必须在声明时进行 arr = {9,8,7,6,5,4,3,2,1,0};//这里不是声明编译器会报错 动态初始化和静态初始化在使用和内存结构上都没有区别。 使用数组 数组的使用时非常广的,这里写一个冒泡排序的例子来展示一下数组的使用: 1 package org.hammerc.study; 2 3 public class Main 4 { 5 public static void main(String[] args) 6 { 7 int[] arr = {100, 187, 22, 9, 199, 500, 1, 134}; 8 for (int i =

关于数组的一道典型题

情到浓时终转凉″ 提交于 2020-01-29 23:15:12
定义第一个数组,定义完毕后,给数组元素赋值。赋值完毕后,再输出数组名称和元素。 定义第二个数组,定义完毕后,给数组元素赋值。赋值完毕后,再输出数组名称和元素。 定义第三个数组,把第一个数组的地址值赋值给它。(注意类型一致),通过第三个数组的名称去把元素重新赋值。 最后,再次输出第一个数组数组名称和元素。 public class 数组 { public static void main ( String [ ] args ) { int arr [ ] = new int [ 3 ] ; arr [ 0 ] = 1 ; arr [ 1 ] = 2 ; arr [ 2 ] = 3 ; System . out . println ( arr ) ; System . out . println ( arr [ 0 ] ) ; System . out . println ( arr [ 1 ] ) ; System . out . println ( arr [ 2 ] ) ; int arr1 [ ] = new int [ 3 ] ; arr1 [ 0 ] = 4 ; arr1 [ 1 ] = 5 ; arr1 [ 2 ] = 6 ; System . out . println ( arr1 ) ; System . out . println ( arr1 [ 0 ] ) ;

数据标准化——Python实现

为君一笑 提交于 2020-01-29 18:07:46
在家没事梳理下数据标准化的东西,这数据预处理的基础东西,有大佬路过可以拿去跑一下,应该没有错误,下一篇讲数据离散化! ```# 数据标准化(Normalization)是指:将数据按照一定的比例进行缩放,使其落入一个特定的小区间。最经典就是数据的归一化处理,即将数据统一映射到【0,1】之间。 # 常用的数据标准化有6种 # 1.Min-Max 标准化 # Min-Max 标准化是指对原始数据进行线性变换,将值映射到【0,1】之间。 # 公式为: X' = (X-Xmin)/(Xmax-X) # 2.Z-Score 标准化 # Z-Score(也叫 Standard Score,标准分数)标准化是指:基于原始数据的均值(mean)和标准差(standard deviation)来进行数据的标准化。 # 公式为: X' = (x-μ)/a 为了方便,标准的数学符合用a、b等符号代替,x是原始数据,μ表示原始数据的均值,a表示原始数据的保准差 # 3.小数定标(Decimal scaling)标准化 # 小数定标标准化是指:通过移动小数点的位置来进行数据的标准化。小数点移动的位数取决于原始数据中的最大绝对值。 # 公式为:X' = x/10^j (j是10的指数) j表示满足条件的最小整数 # 例如:一组数据为[-309,-10,-43,87,344,970],其中绝对值最大的是970

JavaScript-迭代器模式

自闭症网瘾萝莉.ら 提交于 2020-01-29 14:05:11
迭代器模式 顺序访问一个集合 使用者无需知道集合内部结构(封装) jQuery 示例 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Document</title> </head> <body> <p>jquery each</p> <p>jquery each</p> <p>jquery each</p> <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script> <script> var arr = [1, 2, 3]; var nodeList = document.getElementsByTagName("p"); var $p = $("p"); // 要对这三个变量进行遍历,需要写三个遍历方法 // 第一 arr.forEach(function(item) { console.log(item); }); // 第二 var i, length = nodeList.length; for (i = 0; i < length; i++) { console.log(nodeList[i]); } // 第三 $p.each(function(key, p) { console.log(key, p); })

mongo 语法 增删改查

拈花ヽ惹草 提交于 2020-01-29 04:05:00
1.增 db.collection.insert()与db.collection.save() 都是增加,区别:save()遇到相同_id后,则更新此_id数据。 而insert()则报错 > db.c1.find() > db.c1.insert({_id:1, name:'use001'}); > db.c1.insert({_id:1, name:'use001'}); E11000 duplicate key error index: test.c1.$_id_ dup key: { : 1.0 } > db.c1.save({_id:1, name:'user002'}); > db.c1.save({_id:1, name:'user003'}); > db.c1.find(); { "_id" : 1, "name" : "user003" } 2.查 db.collection.find()//不带条件 查询所有 db.collection.find({name:'user007'})//条件查找 某些个 > db.c1.insert({name:'user11', age:22, sex:'man'}); > db.c1.find({name:'user11'}, {name:1});//find 第二个条件参数 { "_id" : ObjectId(