们知道在java script中 for 用来实现循环结构,而for...in 用来实现遍历,for...of用来对象迭代遍历。
与其他开发语言相同,JS中for用来实现循环结构之一,
for ([initialization]; [condition]; [final-expression]) {
statement
}
for(let i=1;i<=10;i++){
console.log("i=",i);
}
执行结果:
break关键词用户终止循环
for(let i=1;i<=10;i++){
if(i>5)
break;
console.log("i=",i);
}
循环到第5次终止循环。
执行结果:
i=1
i=2
i=3
i=4
i=5
continue关键词用户跳过本次循环,继续下一次
for(let i=1;i<=10;i++){
if(i % 2===0 ) continue;
console.log("i=",i);
}
如果i是偶数跳过,执行下一次循环,输出i为奇数
i=1
i=3
i=5
i=7
i=9
for循环是js中基础的循环结构,适用于任何情况,而for...in和for...of则更适合于不同的应用场景。
for...in循环遍历对象的所有可枚举属性。什么是可枚举呢?你可以理解为可枚举就是可表现为键值对的对象,for...in枚举得到的是键值对的键值。
objs={mp_v:"可视化",mp_a:"低代码",mp_name:"有效云"};
for(let objk in objs){
console.log("key:",objk,"值:",objs[objk]);
}
//执行结果:
key: mp_v 值: 可视化
key: mp_a 值: 低代码
key: mp_name 值: 有效云
从上例中可以看到,for...in 循环枚举得到了键值对 key-value中的key属性值,检索适用键值对的值,将键视为数组中的索引并将其放在方括号 ->objs[key]中,如上面代码中的:objs[objk]。
注意:一维数组也可以理解为键值对,key即为数组的索引,但是for...in枚举是无序的,无法保证枚举得到的顺序,所以不建议使用for...in用来枚举数组,应该使用for,for...of 或for each 来遍历数组。
ES6引入for...of之后,它已经成为广大开发者们常用以迭代枚举对象的方法。
pmname="有效云开发平台"
for(letter of pmname){
console.log(letter);
}
//执行结果:
有
效
云
开
发
平
台
上例使用for...of枚举了字符串中的每个字符,我们注意到,for...of是有序的,这与for...in不同。
for...of可以用来迭代枚举任何,除字符串外还可以是数组、对象等。
const arrA=[1,2,3,4,5,6];
for( let v of arrA ){
console.log(v);
}
//执行结果:
1
2
3
4
5
6
上面代码使用 for...of 遍历了数组arrA,接下来使用for..of迭代对象。
objs={mp_v:"可视化",mp_a:"低代码",mp_name:"有效云"};
for(const [k,v] of Object.entries(objs)){
console.log("key:",k,"val:",v);
}
// key: mp_v val: 可视化
// key: mp_a val: 低代码
// key: mp_name val: 有效云
通过这个示例,我们看到在遍历对象时,通过[v,k],同时获得键值对的键和值。
感谢阅读,欢迎关注有效云开发平台。
affe的安装笔记 Ubuntu16.04
跑实验用过一次caffe,光安装就用了一周,经历了各种错误,真的好难安装,记录下最后成功安装的方法,希望给大家安装时提供参考。
1、下载安装所需的包,例如anaconda,numpy ,protobuf,opencv,cython, scikit-image等
opencv使用
conda install opencv
直接使用 conda install caffe-gpu安装好所需的环境再使用源码编译,进行下面的步骤
再 使用conda uninstall caffe-gpu 去掉这个包,装上需要的环境,但是这个包不能直接使用(我也不知道原因)。
2、下载caffe
git clone https://github.com/BVLC/caffe.git
3、更改makefile.config
USE_CUDNN :=1
USE_OPENCV :=0 OPENCV_VERSION :=3
CUDA_DIR :=/usr/local/cuda_env/cuda-8.0
ANACONDA_HOME :=$(HOME)/anaconda3/envs/caffe PYTHON_INCLUDE :=$(ANACONDA_HOME)/include \ $(ANACONDA_HOME)/include/python3.6m\ $(ANACONDA_HOME)/lib/python3.6/site-packages/numpy/core/include PYTHON_LIB :=$(ANACONDA_HOME)/lib
INCLUDE_DIRS :=$(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial LIBRARY_DIRS :=$(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial/
完整的makefile.config
## Refer to http://caffe.berkeleyvision.org/installation.html # Contributions simplifying and improving our build system are welcome! # cuDNN acceleration switch (uncomment to build with cuDNN). USE_CUDNN :=1 # CPU-only switch (uncomment to build without GPU support). # CPU_ONLY :=1 # uncomment to disable IO dependencies and corresponding data layers USE_OPENCV :=0 # USE_LEVELDB :=0 # USE_LMDB :=0 # uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary) # You should not set this flag if you will be reading LMDBs with any # possibility of simultaneous read and write # ALLOW_LMDB_NOLOCK :=1 # Uncomment if you're using OpenCV 3 OPENCV_VERSION :=3 # To customize your choice of compiler, uncomment and set the following. # N.B. the default for Linux is g++ and the default for OSX is clang++ # CUSTOM_CXX :=g++ # CUDA directory contains bin/ and lib/ directories that we need. CUDA_DIR :=/usr/local/cuda_env/cuda-8.0 # On Ubuntu 14.04, if cuda tools are installed via # "sudo apt-get install nvidia-cuda-toolkit" then use this instead: # CUDA_DIR :=/usr # CUDA architecture setting: going with all of them. # For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility. # For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility. # For CUDA >=9.0, comment the *_20 and *_21 lines for compatibility. CUDA_ARCH :=-gencode arch=compute_20,code=sm_20 \ -gencode arch=compute_20,code=sm_21 \ -gencode arch=compute_30,code=sm_30 \ -gencode arch=compute_35,code=sm_35 \ -gencode arch=compute_50,code=sm_50 \ -gencode arch=compute_52,code=sm_52 \ -gencode arch=compute_60,code=sm_60 \ -gencode arch=compute_61,code=sm_61 \ -gencode arch=compute_61,code=compute_61 # BLAS choice: # atlas for ATLAS (default) # mkl for MKL # open for OpenBlas BLAS :=atlas # Custom (MKL/ATLAS/OpenBLAS) include and lib directories. # Leave commented to accept the defaults for your choice of BLAS # (which should work)! # BLAS_INCLUDE :=/path/to/your/blas # BLAS_LIB :=/path/to/your/blas # Homebrew puts openblas in a directory that is not on the standard search path # BLAS_INCLUDE :=$(shell brew --prefix openblas)/include # BLAS_LIB :=$(shell brew --prefix openblas)/lib # This is required only if you will compile the matlab interface. # MATLAB directory should contain the mex binary in /bin. # MATLAB_DIR :=/usr/local # MATLAB_DIR :=/Applications/MATLAB_R2012b.app # NOTE: this is required only if you will compile the python interface. # We need to be able to find Python.h and numpy/arrayobject.h. #PYTHON_INCLUDE :=/usr/include/python2.7 \ # /usr/lib/python2.7/dist-packages/numpy/core/include # Anaconda Python distribution is quite popular. Include path: # Verify anaconda location, sometimes it's in root. ANACONDA_HOME :=$(HOME)/anaconda3/envs/caffe PYTHON_INCLUDE :=$(ANACONDA_HOME)/include \ $(ANACONDA_HOME)/include/python3.6m\ $(ANACONDA_HOME)/lib/python3.6/site-packages/numpy/core/include # Uncomment to use Python 3 (default is Python 2) # PYTHON_LIBRARIES :=boost_python3 python3.5m # PYTHON_INCLUDE :=/usr/include/python3.5m \ # /usr/lib/python3.5/dist-packages/numpy/core/include # We need to be able to find libpythonX.X.so or .dylib. # PYTHON_LIB :=/usr/lib PYTHON_LIB :=$(ANACONDA_HOME)/lib # Homebrew installs numpy in a non standard path (keg only) # PYTHON_INCLUDE +=$(dir $(shell python -c 'import numpy.core; print(numpy.core.__file__)'))/include # PYTHON_LIB +=$(shell brew --prefix numpy)/lib # Uncomment to support layers written in Python (will link against Python libs) # WITH_PYTHON_LAYER :=1 # Whatever else you find you need goes here. INCLUDE_DIRS :=$(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial LIBRARY_DIRS :=$(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial/ # If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies # INCLUDE_DIRS +=$(shell brew --prefix)/include # LIBRARY_DIRS +=$(shell brew --prefix)/lib # NCCL acceleration switch (uncomment to build with NCCL) # https://github.com/NVIDIA/nccl (last tested version: v1.2.3-1+cuda8.0) # USE_NCCL :=1 # Uncomment to use `pkg-config` to specify OpenCV library paths. # (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.) # USE_PKG_CONFIG :=1 # N.B. both build and distribute dirs are cleared on `make clean` BUILD_DIR :=build DISTRIBUTE_DIR :=distribute # Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171 # DEBUG :=1 # The ID of the GPU that 'make runtest' will use to run unit tests. TEST_GPUID :=0 # enable pretty build (comment to see full commands) Q ?=@
4、更改makefile,更改这一行
LIBRARIES +=opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
5、编译caffe
cd caffe make all -j8 make pycaffe
6、更改.bashrc路径
export PYTHONPATH="/home/usrname/caffe/python:$PYTHONPATH"
7、完整安装caffe路径(这个私人设置,不做参考)
# add for use caffe copy from jhyang export LD_LIBRARY_PATH="/usr/local/cuda_env/cuda-8.0/lib64:/usr/local/cuda_env/cudnn-v5.1-for-cuda8.0/lib64:/usr/local/cuda_env/cudnn-v6.0-for-cuda8.0/lib64:/usr/local/cuda_env/cuda-9.0/lib64:/usr/local/cuda_env/cudnn-v7.0-for-cuda9.0/lib64" export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/bin:/bin:/usr/sbin:/sbin" export LIBRARY_PATH="/usr/local/cuda_env/cuda-8.0/lib64:/usr/local/cuda_env/cudnn-v5.1-for-cuda8.0/lib64:/usr/local/cuda_env/cudnn-v6.0-for-cuda8.0/lib64:/usr/local/cuda_env/cuda-9.0/lib64:/usr/local/cuda_env/cudnn-v7.0-for-cuda9.0/lib64" export PYTHONPATH="/home/usr/caffe/python:$PYTHONPATH" export CPATH=$CPATH:/usr/local/cuda_env/cudnn-v6.0-for-cuda8.0/include:/usr/include/hdf5/serial/hdf5.h export CPATH=/usr/local/cuda_env/cudnn-v5.1-for-cuda8.0/include:/usr/local/cuda_env/cudnn-v6.0-for-cuda8.0/include:/usr/local/cuda_env/cudnn-v7.0-for-cuda9.0/include
8、测试使用
么是JavaScript
JavaScript是一种基于对象和事件驱动的、并具有安全性能的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。
JavaScript特点
是一种解释性脚本语言(代码不进行预编译)。
主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。
可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。
跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、Android、iOS等)。
JavaScript组成
JavaScript日常用途
1、嵌入动态文本于HTML页面。
2、对浏览器事件做出响应。
3、读写HTML元素。
4、在数据被提交到服务器之前验证数据。
5、检测访客的浏览器信息。
6、控制cookies,包括创建和修改等。
7、基于Node.js技术进行服务器端编程。
JavaScript的基本结构
<script type="text/javascript"> <!— JavaScript 语句; —> </script >
示例:
…… <title>初学JavaScript</title> </head> <body> <script type="text/javascript"> document.write("初学JavaScript"); document.write("<h1>Hello,JavaScript</h1>"); </script> </body> </html>
<script>…</script>可以包含在文档中的任何地方,只要保证这些代码在被使用前已读取并加载到内存即可
JavaScript的执行原理
网页中引用JavaScript的方式
1、使用<script>标签
2、外部JS文件
<script src="export.js" type="text/javascript"></script>
3.直接在HTML标签中
<input name="btn" type="button" value="弹出消息框" onclick="javascript:alert('欢迎你');"/>
JavaScript核心语法:
1. 变量
①先声明变量再赋值
var width; width=5; var - 用于声明变量的关键字 width - 变量名
②同时声明和赋值变量
var catName="皮皮"; var x, y, z=10;
③不声明直接赋值【一般不使用】
width=5;
变量可以不经声明而直接使用,但这种方法很容易出错,也很难查找排错,不推荐使用。
2. 数据类型
①undefined:示例:var width;
变量width没有初始值,将被赋予值undefined
②null:表示一个空值,与undefined值相等
③number:
var iNum=23; //整数
var iNum=23.0; //浮点数
④Boolean:true和false 但是JS会把他们解析成1;0
⑤String:一组被引号(单引号或双引号)括起来的文本 var string1="This is a string";
3. typeof运算符
typeof检测变量的返回值;typeof运算符返回值如下:
①undefined:变量被声明后,但未被赋值.
②string:用单引号或双引号来声明的字符串。
③boolean:true或false。
④number:整数或浮点数。
⑤object:javascript中的对象、数组和null。
*请认真填写需求信息,我们会在24小时内与您取得联系。