数组

C#(二维数组/集合)

狂风中的少年 提交于 2020-03-24 05:00:13
一、二维数组 int [,] array = new int[5,3];//有五个一维数组,每一个一维数组有3个元素 /打印出来一个“王”这个字string[,] wang = new string[,]{ {" ","■","■","■","■","■"," "}, {" "," "," ","■"," "," "," "}, {" "," "," ","■"," "," "," "}, {" "," ","■","■","■"," "," "}, {" "," "," ","■"," "," "," "}, {" "," "," ","■"," "," "," "}, {"■","■","■","■","■","■","■"} }; for (int i = 0; i < 7; i++) { for (int j = 0; j < 7; j++) { Console.Write(wang[i,j]); } Console.WriteLine(); } 输入班级人数,输入每个人的语数英成绩,求语文的总分,数学的平均分,英语的最高分和最低分 Console.Write("请输入班级人数:"); int n = int.Parse(Console.ReadLine()); double sum1= 0; double sum2 = 0; double[,] a = new

vue中检测对象和数组值变化的问题

▼魔方 西西 提交于 2020-03-23 21:31:34
今天工作中遇到改变vue data中某个对象的值,却无法触发视图更新的问题。看了看官方文档,怎么解决的呢? 1、检测对象的变化 受现代 JavaScript 的限制(以及废弃 Object.observe ), Vue 不能检测到对象属性的添加或删除 。由于 Vue 会在初始化实例时对属性执行 getter/setter 转化过程,所以属性必须在 data 对象上存在才能让 Vue 转换它,这样才能让它是响应的。 使用Object.assign() 或 _.extend() 方法来添加属性 // 代替 `Object.assign(this.someObject, { a: 1, b: 2 })` this.someObject = Object.assign({}, this.someObject, { a: 1, b: 2 }) 2. 检测数组的变化 由于 JavaScript 的限制, Vue 不能检测以下变动的数组: (1)、当你利用索引直接设置一个项时,例如: vm.items[indexOfItem] = newValue (2)、当你修改数组的长度时,例如: vm.items.length = newLength 如何解决上述问题呢? 方法1: // Vue.set Vue.set(example1.items, indexOfItem, newValue) 方法2:

Js深度克隆解析

北城以北 提交于 2020-03-23 18:29:59
Js克隆(clone),就是数据拷贝,包括基础类型的数据和引用类型的数据,而深度克隆(deepClone)就是针对引用类型,如数组和对象。 两种拷贝的区别在于:浅拷贝时,拷贝出的对象指向原对象的地址,当其值发生改变时,原对象的值也发生改变;          深度拷贝,拷贝出的对象指向一个新的地址,当其值发生改变时,原对象的值不受影响。 下面列出深度拷贝的代码及其详细注释: var obj = {//待拷贝的对象 name:"abc", age:"123", card:['visa','master'], wife:{ name:"bcd", son:{ name:"aaa" } }, a:function(){} } function deepclone(origin , target){ var target = target || {}, tostr = Object.prototype.toString,//使用Object.prototype.toString.call方法进行对象和数组的区分,所以先将其进行存储以便使用 arr = '[object Array]'; for(var prop in origin){ if(origin.hasOwnProperty(prop)){//防止拷贝的对象从原对象的原型上取值 if(origin[prop] !== "null"

Java7 ConcurrentHashMap详解

五迷三道 提交于 2020-03-23 15:38:52
###Java7 ConcurrentHashMap ConcurrentHashMap 和 HashMap 思路是差不多的,但是因为它支持并发操作,所以要复杂一些。 整个 ConcurrentHashMap 由一个个 Segment 组成,Segment 代表”部分“或”一段“的意思,所以很多地方都会将其描述为分段锁。注意,行文中,我很多地方用了“槽”来代表一个 segment。 简单理解就是,ConcurrentHashMap 是一个 Segment 数组,Segment 通过继承 ReentrantLock 来进行加锁,所以每次需要加锁的操作锁住的是一个 segment,这样只要保证每个 Segment 是线程安全的,也就实现了全局的线程安全。 concurrencyLevel: 并行级别、并发数、Segment 数,怎么翻译不重要,理解它。默认是 16,也就是说 ConcurrentHashMap 有 16 个 Segments,所以理论上,这个时候,最多可以同时支持 16 个线程并发写,只要它们的操作分别分布在不同的 Segment 上。这个值可以在初始化的时候设置为其他值,但是一旦初始化以后,它是不可以扩容的。 再具体到每个 Segment 内部,其实每个 Segment 很像之前介绍的 HashMap,不过它要保证线程安全,所以处理起来要麻烦些。 ##初始化

数组和指针

房东的猫 提交于 2020-03-23 12:00:52
本节结束。================================================================== 数组类型:是一个复杂类型;(由数组元素类型和数组长度综合表述)如下;数组类型是:(int []); 类型的本质是:固定大小内存块的别名。是模具。 一. 对一维数组 C语言规定: int c[10]; 1.一维数组名:c是数组首元素的地址,c+1步长为 4个字节,一个 int 元素大小。 &c是整个数组的地址,&c+1步长为40个字节,十个 int 元素大小 虽然c和&c的值相同,但是他们所代表的步长不同。 2.数组第i 个元素这样表示:c[i] 或 *(c+i); 给它赋值。c[i] = 5 或 *(c+i) = 5; 本节结束。================================================================== 二. 多维数组(int a[3][4]) 1.多维数组名:a是指向一个一维数组 的数组指针,a 的步长为一维的长度(即每次+1都跳一行)(16个字节,四个int元素元素大小) 2.(a+i)代表是整个第i行的地址,(代表二级指针) *(a+i)代表第i行首元素地址 (代表一级指针) *(a+i)+j或(&a[i][j])代表第i行第j个元素的地址 *(*(a+i)+j)或(a[i]

字符串_基本操作

限于喜欢 提交于 2020-03-23 09:31:06
concat /*--> */ /*--> */ concat 功能:1、用于将字符串组合起来 返回一个新的字符串 2、组合几个数组成为一个新数组 参数:str.concat(str,null,undefined,object,function) 参数都是待连接项 concat 不用用于除 字符串 数组 之外的类型 indexOf 功能:用于查找匹配的字符串或者数组元素 结果:找到返回索引 从0开始记录 找不到返回-1 参数:str.indexOf(searchValue, 开始搜索的位置) indexOf 不用用于除 字符串 数组 之外的类型 charAt 功能:用于查找指定位置的字符 参数:(0,str.length-1) 结果:返回指定位置的字符 位置大于str.length-1返回空字符串 charAt 不用用于除 字符串 数组 之外的类型 substring 功能:字符串截取 参数:(start,end) 参数规定非负整数 规则:包括开始位置 不包括结束位置;结果:返回一个截取的新字符串 substr 功能:字符串截取 参数:(start,length) start可以为负数,-1:最后一项,-2:倒数第二项 ; 结果:返回一个截取的新字符串 str.substr(-2,4)从倒数第二项开始寻找长度是四 slice 功能:字符串截取 参数:(start,end)

黑马程序员——指针的应用

大兔子大兔子 提交于 2020-03-23 09:15:21
黑马程序员——指针的应用 ------- android培训 、 ios培训 、期待与您交流! ---------- 内存单元的标号也叫做地址,既然根据内存单元的编号或地址可以找到所需的内存单元,所以通常也把这个地址成为指针 允许用一个变量来存放指针,这种变量称为指针变量 指针是一个地址,是一个常量 指针变量存放一个地址,是一个变量 **1 、定义指针变量 ** 一般形式为:类型说明符 *变量名; *表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型 例如:int *pi; //一个指向整形变量的指针 long *pi; //一个指向长整形变量的指针 float *pi;//一个指向浮点型变量的指针 char *pi;//一个指向字符型变量的指针 **2 、指针变量的定义** 数据类型 *指针变量名 int *p; //定义了一个指针变量,变量名为p。。int表示,p只能存放一个int类型的变量的地址 char *p1; //定义了一个指针变量,变量名为p1。。p1只能存放一个char类型数据变量的地址 注意:1)*必须得有,如果没有就相当于定义一个普通变量。2)指针变量不能用来存放数值或者字符。3)指针变量有全局和局部之分 **3 、指针变量的初始化和引用** 1)指针变量的初始化 1、定义的同时初始化:int *p=&a; 2

Js对象

微笑、不失礼 提交于 2020-03-23 06:19:43
Function引用类型创建的对象也叫函数。 一、创建函数:   1.function 函数名(x,y,z...){     各种js语句     }   2.var 函数名=function(x,y,z...){   各种js语句     } 二、调用函数:   函数名(); 三、函数可以有返回值:关键字return,如 1 var $1=function (){ 2 console.log('function $1 running~'); 3 return 2; 4 }; 5 console.log($1());   输出结果如下: 四、function对象有默认属性length,代表形参的个数。 Array引用类型创建的对象也叫数组。 一、是数据的集合,数组里面的值称为数组元素; 二、数组元素可以是基本数据类型,也可以是数组或Object类型; 三、实例: 1 <script type="text/javascript"> 2 var arr1 = new Array(); 3   arr1[1]=3; 4   arr1[2]={ 5     name:'zrh' 6   }; 7   var arr2=new Array('blue','gray','red'); 8 var arr3 =[5,'2','zrh',true]; 9   console.log(arr1[1]

Android JNI&NDK编程小结及建议

丶灬走出姿态 提交于 2020-03-23 05:31:23
前言 由于网上关于JNI/NDK相关的知识点介绍的比较零散而且不具备参照性,所以写了这篇JNI/NDK笔记,便于作为随时查阅的工具类型的文章,本文主要的介绍了在平时项目中常用的命令、JNI数据类型、签名等,便于查阅相关资料。文末相关参考资料比较适合刚接触或者不熟悉Android NDK开发的朋友参阅。 常用命令 javac 编译java源文件生成.class文件 由于JNI对应的头文件由javah工具根据对应的.class文件生成,所以在进行JNI编程之前,写好Java代码后需要先编译,在使用javah生成对应的头文件 javah -jni自动生成头文件 举例说明: 生成普通的JNI头文件 javah -classpath path -jni -d outputdirpath com.mrljdx.JavaNativeCode 在Java函数中包含Android相关的参数代码,则需要在classpath中添加android.jar包的绝对路径地址 javah -classpath path:$ANDROID_HOME/path/android.jar -jni -d outputdirpath com.mrljdx.JavaNativeCodeWithAndroid javap -s -p 查看函数签名 -s: 显示签名(只显示public类型的签名) -p:显示所有函数

数据分析之Numpy的基本操作

拟墨画扇 提交于 2020-03-23 01:58:17
Numpy NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。 1 创建 ndarray 使用np.array()创建 import numpy as np # 一维数据创建 ret = np.array([1, 2, 3]) # 二维数据创建 ret = np.array([[1, 2, 3], [4, 5, 6]]) print(ret) numpy默认ndarray的所有元素的类型是相同的 如果传进来的列表中包含不同的类型,则统一为同一类型,优先级:str>float>int 使用matplotlib.pyplot获取一个numpy数组,数据来源于一张图片 import matplotlib.pylab as plt # 图片数据转化为数组 img_arr = plt.imread('./cat.jpg') # 数组转图片 img_show = plt.imshow(img_arr) # 操作该numpy数据,该操作会同步到图片中 plt.imshow(img_arr-100) 使用np的routines函数创建 np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) 等差数列