分类
其它综合

原子变量操作类AtomicLong详解

JUC并发包中有AtomicInteger、AtomicIntegerArray、AtomicLong、AtomicBoolean等原子变量操作类,他们原理都类似,本文主要分析为什么需要原子操作类以及AtomicLong类的实现原理。

为什么需要原子变量操作类?

public class Test {
    
    private static long count = 0L;
    
    private static void increase() {
        count++;
    }
    public static void main(String[] args) throws InterruptedException {
        Thread[] threads = new Thread[10];
        for (int i = 0; i < threads.length; i++) {
            threads[i] = new Thread(new Runnable() {
                public void run() {
                    for (int j = 0; j < 1000; j++) {
                        increase();
                    }
                }
            });
            threads[i].start();
        }
        for (Thread thread : threads) {
            thread.join();
        }
        System.out.println(count);
    }
}

上方的代码创建一个普通long类型的变量count,启动10个线程分别对count进行1000次递增操作。我们知道count++解析为count=count+1,这个操作并不是原子性的,多线程执行这个操作必然会出现问题,如果按照正常的并发情况,执行结果应该是10000,但是实际情况是每次执行的结果都是小于10000的数字。为什么呢?

有人肯定会说,使用volatile来修饰count变量是否能解决这个问题,这里顺便来说下volatile关键字的作用及使用场景。

volatile作用

  1. 当一个共享变量被volatile修饰时,它会保证修改的值立即被更新到主存,通俗来讲就是,线程A对一个volatile变量的修改,对于其它线程来说是可见的,即线程每次获取volatile变量的值都是最新的
  2. 禁止指令重排序

volatile使用场景

  1. 对变量的写操作不依赖当前值
  2. 该变量没有包含在具有其它变量的不变式中
private static volatile long count = 0L;

用volatile关键字修饰count后再次测试,发现执行结果依然小于10000。
分析volatile使用场景发现必须满足对变量的写操作不应该依赖当前值,而count++明显是依赖当前值的,所以多线程下执行count++是无法通过volatile保证结果准确性的。

那既然无法通过volatile关键字来保证准确性,我们就可以尝试使用AtomicLong原子变量操作类来进行操作,代码如下

public class Test {

    private static AtomicLong count = new AtomicLong(0L);

    private static void increase() {
        count.incrementAndGet();
    }
    public static void main(String[] args) throws InterruptedException {
        Thread[] threads = new Thread[10];
        for (int i = 0; i < threads.length; i++) {
            threads[i] = new Thread(new Runnable() {
                public void run() {
                    for (int j = 0; j < 1000; j++) {
                        increase();
                    }
                }
            });
            threads[i].start();
        }
        for (Thread thread : threads) {
            thread.join();
        }
        System.out.println(count);
    }
}

我们发现不管怎么执行,最后的结果都是10000,这是因为AtomicInteger.incrementAndGet()方法是原子性的。

AtomicLong原理分析

首先,我们来看一下一下AtomicLong的属性

public class AtomicLong extends Number implements java.io.Serializable {
	//通过Unsafe.getUnsafe()方法,获取unsafe实例
	private static final Unsafe unsafe = Unsafe.getUnsafe();
	//存放变量value的偏移量
    private static final long valueOffset;
    //判断JVM是否支持Long类型无锁CAS
    static final boolean VM_SUPPORTS_LONG_CAS = VMSupportsCS8();
    //VMSupportsCS8()方法是native方法
    private static native boolean VMSupportsCS8();
    //静态代码块获取value在AtomicLong中的偏移量
    static {
        try {
            valueOffset = unsafe.objectFieldOffset
                (AtomicLong.class.getDeclaredField("value"));
        } catch (Exception ex) { throw new Error(ex); }
    }
	//实际使用的变量值,可以看到这里也是使用volatile修饰的,保证多线程下的内存可见性
	private volatile long value;
	
	//构造函数
    public AtomicLong(long initialValue) {
        value = initialValue;
    }
    public AtomicLong() {
    }
}

然后我们来看下AtomicLong的主要方法,都是使用Unsafe来实现的


//调用unsafe方法原子性设置value的值,并返回设置之前的值
public final long getAndSet(long newValue) {
        return unsafe.getAndSetLong(this, valueOffset, newValue);
}
    
	//getAndSetLong()方法是使用CAS方式设置value值的
	//其中getLongVolatile()方法和compareAndSwapLong()方法是native方法
	public final long getAndSetLong(Object var1, long var2, long var4) {
        long var6;
        //每个线程获取到变量的当前值,然后使用CAS方式设置新的值,如果设置失败,则循环继续尝试,直到成功为止
        do {
            var6 = this.getLongVolatile(var1, var2);
        } while(!this.compareAndSwapLong(var1, var2, var6, var4));
		
        return var6;
    }

//如果当前值等于期望值,则原子性设置value为新的值
public final boolean compareAndSet(long expect, long update) {
    return unsafe.compareAndSwapLong(this, valueOffset, expect, update);
}

//调用unsafe方法,原子性设置当前值自增1,返回修改前的值
public final long getAndIncrement() {
        return unsafe.getAndAddLong(this, valueOffset, 1L);
//调用unsafe方法,原子性设置当前值自减1,返回修改前的值
public final long getAndDecrement() {
        return unsafe.getAndAddLong(this, valueOffset, -1L);
    }
//调用unsafe方法,原子性设置当前值加上参数值,返回修改前的值
public final long getAndAdd(long delta) {
        return unsafe.getAndAddLong(this, valueOffset, delta);
//调用unsafe方法,原子性设置当前值自增1,返回修改后的值
public final long incrementAndGet() {
        return unsafe.getAndAddLong(this, valueOffset, 1L) + 1L;
    }
//调用unsafe方法,原子性设置当前值自减1,返回修改后的值
public final long decrementAndGet() {
        return unsafe.getAndAddLong(this, valueOffset, -1L) - 1L;
    }
//调用unsafe方法,原子性设置当前值加上参数值,返回修改后的值
public final long addAndGet(long delta) {
        return unsafe.getAndAddLong(this, valueOffset, delta) + delta;
    }

可以看到,AtomicLong的操作都是通过Unsafe类来实现的

分类
其它综合

学大数据一点也不难!一文带你了解RDD与共享变量(附安装教程)

?前言

Spark是一种大规模、快速计算的集群平台,本头条号试图通过学习Spark官网的实战演练笔记提升笔者实操能力以及展现Spark的精彩之处。有关框架介绍和环境配置可以参考以下内容:

linux下Hadoop安装与环境配置(附详细步骤和安装包下载)

linux下Spark安装与环境配置(附详细步骤和安装包下载)

本文的参考配置为:Deepin 15.11、Java 1.8.0_241、Hadoop 2.10.0、Spark 2.4.4、scala 2.11.12

一、弹性分布式数据集(RDDs)

Spark 主要以弹性分布式数据集(RDD)的概念为中心,它是一个容错且可以执行并行操作的元素的集合。有两种方法可以创建 RDD:在你的 driver program(驱动程序)中 parallelizing 一个已存在的集合,或者在外部存储系统中引用一个数据集,例如,一个共享文件系统,HDFS,HBase,或者提供 Hadoop InputFormat 的任何数据源。

1.并行集合

例如在已存在的集合上通过调用 SparkContext parallelize 方法来创建并行集合。

2.外部数据源

Spark 可以从 Hadoop 所支持的任何存储源中创建 distributed dataset(分布式数据集),包括本地文件系统HDFSCassandraHBaseAmazon S3 等等。Spark 支持文本文件,SequenceFiles,以及任何其它的 Hadoop InputFormat

3.RDD操作

RDDs support 两种类型的操作:transformations(转换),它会在一个已存在的 dataset 上创建一个新的 dataset,和 actions(动作),将在 dataset 上运行的计算后返回到 driver 程序。

我们还可以传递函数给Spark。当 driver 程序在集群上运行时,Spark 的 API 在很大程度上依赖于传递函数。可以使用Anonymous function syntax(匿名函数语法),它可以用于短的代码片断.

大多数 Spark 操作工作在包含任何类型对象的 RDDs 上,只有少数特殊的操作可用于 Key-Value 对的 RDDs。最常见的是分布式 “shuffle” 操作,如通过元素的 key 来进行 grouping 或 aggregating 操作.

3.RDD转换操作

  • map是对RDD中的每个元素都执行一个指定的函数来产生一个新的RDD;
  • Filter是对RDD元素进行过滤;返回一个新的数据集,是经过func函数后返回值为true的原元素组成
  • flatMap类似于map,但是每一个输入元素,会被映射为0到多个输出元素
  • mapPartitions是map的一个变种。map的输入函数是应用于RDD中每个元素,而mapPartitions的输入函数是每个分区的数据,也就是把每个分区中的内容作为整体来处理的
  • mapPartitionsWithSplit与mapPartitions的功能类似, 只是多传入split index而已,所有func 函数必需是 (Int, Iterator<T>) => Iterator<U> 类型
  • sample(withReplacement,fraction,seed)是根据给定的随机种子seed,随机抽样出数量为frac的数据。withReplacement:是否放回抽样;fraction:比例,0.1表示10% ;
  • union(otherDataset)是数据合并,返回一个新的数据集,由原数据集和otherDataset联合而成
  • intersection(otherDataset)是数据交集,返回一个新的数据集,包含两个数据集的交集数据;
  • distinct([numTasks]))是数据去重,返回一个数据集,是对两个数据集去除重复数据,numTasks参数是设置任务并行数量
  • groupByKey([numTasks])是数据分组操作,在一个由(K,V)对组成的数据集上调用,返回一个(K,Seq[V])对的数据集。
  • reduceByKey(func, [numTasks])是数据分组聚合操作,在一个(K,V)对的数据集上使用,返回一个(K,V)对的数据集,key相同的值,都被使用指定的reduce函数聚合到一起。
  • aggreateByKey(zeroValue: U)(seqOp: (U, T)=> U, combOp: (U, U) =>U) 和reduceByKey的不同在于,reduceByKey输入输出都是(K, V),而aggreateByKey输出是(K,U),aggreateByKey可以看成更高抽象的,更灵活的reduce或group
  • combineByKey是对RDD中的数据集按照Key进行聚合操作。
  • sortByKey([ascending],[numTasks])是排序操作,对(K,V)类型的数据按照K进行排序,其中K需要实现Ordered方法
  • join(otherDataset, [numTasks])是连接操作,将输入数据集(K,V)和另外一个数据集(K,W)进行Join, 得到(K, (V,W));
  • cogroup(otherDataset, [numTasks])是将输入数据集(K, V)和另外一个数据集(K, W)进行cogroup,得到一个格式为(K, Seq[V], Seq[W])的数据集
  • cartesian(otherDataset)是做笛卡尔积:对于数据集T和U 进行笛卡尔积操作, 得到(T, U)格式的数据集

4.RDD行动操作

  • reduce(func)是对数据集的所有元素执行聚集(func)函数,该函数必须是可交换的。
  • collect是将数据集中的所有元素以一个array的形式返回
  • count返回数据集中元素的个数。
  • first返回数据集中的第一个元素, 类似于take(1)
  • Take(n)返回一个包含数据集中前n个元素的数组
  • takeSample(withReplacement,num, [seed])返回包含随机的num个元素的数组
  • takeOrdered(n, [ordering])是返回包含随机的n个元素的数组,按照顺序输出
  • saveAsTextFile把数据集中的元素写到一个文本文件,Spark会对每个元素调用toString方法来把每个元素存成文本文件的一行。
  • countByKey对于(K, V)类型的RDD. 返回一个(K, Int)的map, Int为K的个数
  • foreach(func)是对数据集中的每个元素都执行func函数

5.持久化

Spark 中一个很重要的能力是将数据 persisting 持久化(或称为 caching 缓存),在多个操作间都可以访问这些持久化的数据。RDD 可以使用 persist() 方法或 cache() 方法进行持久化。

二、共享变量

通常情况下,一个传递给 Spark 操作(例如 map 或 reduce)的函数 func 是在远程的集群节点上执行的。该函数 func 在多个节点执行过程中使用的变量,是同一个变量的多个副本。这些变量的以副本的方式拷贝到每个机器上,并且各个远程机器上变量的更新并不会传播回 driver program(驱动程序)。通用且支持 read-write(读-写)的共享变量在任务间是不能胜任的。所以,Spark 提供了两种特定类型的共享变量:broadcast variables(广播变量)accumulators(累加器)

1.广播变量

Broadcast variables(广播变量)允许程序员将一个 read-only(只读的)变量缓存到每台机器上,而不是给任务传递一个副本。广播变量通过在一个变量 v 上调用 SparkContext.broadcast(v) 方法来进行创建。广播变量是 v 的一个 wrapper(包装器),可以通过调用 value 方法来访问它的值。

在创建广播变量之后,在集群上执行的所有的函数中,应该使用该广播变量代替原来的 v 值,所以节点上的 v 最多分发一次。另外,对象 v 在广播后不应该再被修改,以保证分发到所有的节点上的广播变量具有同样的值(例如,如果以后该变量会被运到一个新的节点)。

2.累加器

Accumulators(累加器)是一个仅可以执行 “added”(添加)的变量来通过一个关联和交换操作,因此可以高效地执行支持并行。累加器可以用于实现 counter(计数,类似在 MapReduce 中那样)或者 sums(求和)。原生 Spark 支持数值型的累加器,并且程序员可以添加新的支持类型。

可以通过调用 sc.longAccumulator() sc.doubleAccumulator() 方法创建数值类型的 accumulator(累加器)以分别累加 Long 或 Double 类型的值。集群上正在运行的任务就可以使用 add 方法来累计数值。然而,它们不能够读取它的值。只有 driver program(驱动程序)才可以使用 value 方法读取累加器的值。

RDD和共享变量的内容至此结束,下文将进一步对Spark SQL 、DataFrame、DataSets的内容做详细介绍。前文笔记请参考下面的链接:

Spark大数据分布式处理实战:一文带你走进大数据世界

分类
其它综合

前端知识点总结——JavaScript基础

前端知识点总结——JS基础

1.javascript概述(了解)

1.什么是javascript

javascript简称为js,是一种运行于js解释器/引擎中的脚本语言
js的运行环境:
1.独立安装的js解释器(node)
2.嵌入在浏览器内核中的js解释器

2.js的发展史

1.1992年Nombas公司为自己开发了一款脚本语言SciptEase
2.1995年Netscape(网景)开发了一款脚本语言LiveScrpt,后来更名javascript
3.1996年Microsoft在IE3.0版本中克隆javascript,JScript
4.1997年,javascript提交给ECMA(欧洲计算机制造商联合会)。定义ECMAScript,简称ES5,ES6

3.js组成部分

1.核心(ECMAScript)
2.DOM (Document object model)文档对象模型
3.BOM (Browser object model)浏览器对象模型

4.js的特点

1.语法类似于c,java
2.无需编译,由js解释器直接运行
3.弱类型语言
4.面向对象的

前端人的成长离不开与优秀的同伴共同交流,讨论前端相关的技术、从企业招聘人才需求到怎么学习前端开发,和学习什么内容都有免费系统分享。好友都在里面,每天都会有大牛定时讲解前端技术!

2.JavaScript的基础语法

1.使用javascript

1.搭建运行环境
 1.独立安装的JS解释器-NodeJS
 1.在命令行界面:输入node
 console.log("你好,世界");
 在控制台打印输出
 说明:js是可以独立在js解释器中运行
2.使用浏览器内核中嵌的js解释器
 浏览器内核负责页面内容的渲染,由两部分组成:
 内容排版引擎-解析:HTML/CSS
 脚本解释引擎-解析:javascript
 1.直接在Console(控制台)中输入脚本并运行
 2.将js脚本嵌入在HTML页面中执行
 1.html元素的事件中执行js脚本
 事件-onclick-鼠标单击时要执行的操作
 2.在<script>中编写脚本并执行
 网页的任何位置处,嵌入一对<script>标记,并且将脚本编写在<script>标记中。
 3.使用外部脚本文件(.js为后缀)
 1.创建脚本文件(.js)并在文件中编写脚本
 2.在使用的网页中引用脚本文件
 <script src="脚本文件的url"></script>
 3.js调试,F12查看错误,出错时不影响其它代码块,后续代码继续执行。
 <script>
 /*这个脚本错误*/
 document.writ("<h3>周芷若</h3>");
 </script>
 <script>
 /*继续执行*/
 console.log("金花婆婆"); 
 </script>
 3.通过语法规范
 1.语句:可执行的最小单元
 必须以;结束
 严格区分大小
 所有的符号必须是英文
 2.注释:
 // :单行注释
 /**/:多行注释

3.变量和常量

1.变量声明

1.声明变量
 var 变量名;
2.为变量赋值
 变量名=值;
3.声明变量是直接赋值
 var 变量名=值;
 ex:
 var uname="张无忌";
 var age=20;
 注意:
 1.允许在一条语句中声明多个变量,用逗号隔开变量名。
 var uname="韩梅梅",uage=20;
 2.如果声明变量,但未赋值,则值默认为undefined
 3.声明变量时可以不适用var,但不推荐
 uname="tom";

2.变量名的规范

1.不允许以数字开头
2.不允许使用关键词和保留关键字
3.最好见名知意
 var uname; var uage;
4.允许包含字母,数字,下划线(_),$
 var $name="Tom";
5.尽量使用小驼峰命名法
 var userName;
 var uname;
 var _uname;//下划线
 var user_name;//下划线
 var UserName;//大驼峰命名法

4.变量的使用

1.声明变量未赋值,值默认为undefined
2.使用未声明过的变量 报错
3.赋值操作
 变量名出现在=的左边,一律是赋值操作
 var uname="林妹妹";
4.取值操作
 变量只要没出现在=的左边,一律是取值操作
 var uage=30;
console.log(uage);
var num1=uage;

5.常量

1.什么是常量
 在程序中,一经声明就不允许被修改的数据就是常量。
2.语法
 const 常量名=值;
 常量名在程序中,通常采用大写形式。
 const PI=3.1415926;

5.1数据类型

1.数据类型的作用

规定了数据在内存中所占的空间
10.1 64位 8个字节
bit:位
8bit=1byte字节
1024byte=1KB 
1024KB=1MB
1024MB=1G 
1024G=1T

2.数据类型详解

1.数据类型分两大类
 原始类型(基本类型)
 引用类型
 1.原始类型
 1.Number 类型
 数字类型
 作用:可以表示32位的整数,也可以表示64位的浮点数(小数)
 整数:
 1.十进制
 10 
 2.八进制
 由0-7八个数字组成,逢八进一
 八进制中以0开始
 var num=010;
 3.十六进制
 由0-9和A-f组成,逢十六进一
 A:10
 B:11
 C:12
 D:13
 E:14
 F:15
 十六进制中以0X开始
 浮点数:又称小数
 小数点计数法:12.58 
 指数计数法:3.4e3(3.4*10的3次方)
2.String类型
 字符串类型
 作用:表示一系列的文本字符数据,如:姓名,性别,住址...
 字符串中的每个字符,都是由Unicode码的字符,标点和数字组成。
 Unicode码:每个字符在计算机中都有一个唯一的编码表示该字符,
 该码就是unicode码(他是十六进制)
 1.查找一个字符的unicode码:
 "李".charCodeAt();
 //10进制输出
 "李".charCodeAt().toString(2);
 //二进制输出
 "李".charCodeAt().toString(16);
 //十六进制
 李的unicode码是:674e
 2.如何将674e转换为汉字?
 用\u
 ex:
 var str="\u674e";
 console.log(str);//结果是“李”
 汉字的Unicode码的范围:
 \u4e00~\u9fa5
 3.特殊字符需要转义字符
 \n: 换行
 \t: 制表符(缩进)
 \": "
 \': '
 \\: \
3.Boolean类型
 布尔类型
 作用:在程序中表示真或假的结果
 取值:
 true或false
 var isBig=true;
 var isRun=false;
 在参与到数学运算时,true可以当成1做运算,false可以当做0做运算。
 var res=25+true; //结果为26
 4.Undefined类型
 作用:表示使用的数据不存在
 Undefined类型只有一个值,即undefined当声明的变量未赋值(未初始化)时,
 该变量的默认值就是undefined.
5.Null类型
 null用于表示不存在的对象。
 Null类型只有一个值,即null,如果函数或方法要返回的是对象,
 找不到该对象,返回的就是null。

5.2数据类型的转换

1.隐式(自动)转换
 不同类型的数据在计算过程中自动进行转换
 1.数字+字符串:数字转换为字符串
 var num=15;
var str="Hello";
var res=num+str; //结果:15Hello
 2.数字+布尔:将布尔转换为数字true=1,false=0
 var num1=10;
var isSun=true;
var res1=num1+isSun;//结果:11
 3.字符串+布尔:将布尔转换为字符串
 var str1="Hello";
var isSun1=true;
var res2=str1+isSun1;//结果:Hellotrue
 4.布尔+布尔:将布尔转换为数字
 true=1,false=0;
 var isSun2=true;
var isSun3=flase;
var res=isSun2+isSun3;//结果1
2.强制转换 -转换函数
 1.toString()
 将任意类型的数据转换为字符串
语法:
 var num=变量.toString();
 ex:
 var num=15;
 var str=num.toString();
 console.log(typeof(str));
 2.parseInt()
 将任意类型的数据转换为整数
如果转换不成功,结果为NaN(Not a Number)
语法:var result=parseInt(数据);
 3.parseFloat()
 将任意类型的数据转换为小数
如果转换不成功,结果为NaN
语法:var result=parseFloat(数据);
 4.Number()
 将任意类型数据转为Number类型
注意:如果包含非法字符,则返回NaN
语法:var result=Number(数据);

6.运行符和表达式

1.什么是表达式

由运算符连接操作数所组成的式子就是表达式。
ex:
 15+20
 var x=y=40
任何一个表达式都会有结果。

2.运算符

1.算术运算符
 +,-,*,/,%,++,--
 5%2=1;
 ++:自增运算,只做+1操作
 ++在前:先自增,再运算;
 ++在后:先运算,再自增;
 ex:
 var num=5;
console.log(num++);//打印5,变为6
console.log(++num);//变为7,打印7
ex:
 var num=5;
 5 (6)6 6(7) (8)8
 var res=num+ ++num +num++ + ++num +num++ +num; 
 8(9) 9
结果:42
2.关系运算符(比较)
 >,<,>=,<=,==,===(全等),!=,!==(不全等)
 关系运算的结果:boolean类型(true,false)
 问题:
 1. 5 > "10" 结果:false
 关系运算符两端,只要有一个是number的话,另外一个会隐式转换为number类型,再进行比较。
2."5">"1 0" 结果:true
 "5".charCodeAt(); //53
 "1".charCodeAt(); //49
 "张三丰" > "张无忌" 结果:false
 19977 > 26080
3."3a" > 10 结果:false
 Number("3a")--->NaN
 注意:
 NaN与任何一个数据做比较运算时,结果都是false.
 console.log("3a">10); false
 console.log("3a"==10); false
 console.log("3a"<10); false
 isNaN()函数:
 语法:isNaN(数据);
 作用:判断指定数据是否为非数字,如果不是数字,返回值为true,是数字的话返回的值为false
 console.log(isNaN("3")); //false
 console.log(isNaN("3a")); //ture 
 console.log("3a"!=10);//true
3.逻辑运算符
 !,&&,||
 !:取反
 &&:并且,关联的两个条件都为true,整个表达式的结果为true
 ||:或者,关联的两个条件,只要有一个条件为true,整个表达式的结果就为true
 短路逻辑:
 短路逻辑&&:
 当第一个条件为false时,整体表达式的结果就为false,不需要判断第二个条件
 如果第一个条件为true,会继续判断或执行第二个条件
 短路逻辑||:
 当第一个条件为true时,就不再执行后续表达式,整体结果为true。
 当第一个条件为false时,继续执行第二个条件或操作。
4.位运算符
 <<,>>,&,|,^
 右移是把数变小,左移是把数变大
 &:按位与,判断奇偶性
 任意数字与1做按位与,结果为1,则为奇数,结果为0,则为偶数。
 var num=323;
 var result=num & 1
 console.log(result); //结果为1
 |:按位或,对小数取整
 将任意小数与0做按位或,结果则取整数部分。
 ^:按位异或,用于交换两个数字
 二进制位数,逐位比较,不同则为1,相同则为0
 a=a^b;
 b=b^a;
 a=a^b;
5.赋值运算符和扩展赋值运算符
 1.赋值运算 =
 var uname="TOM";
 2.扩展赋值运算符
 +=,-=,*=,/=,%=,^=...
a=a+1 a+=1;a++;++a
a=a^b
a^=b
6.条件(三目)运算符
 单目(一目)运算符,只需要一个操作数或表达式
 ex: a++,b--,!isRun
 双目(二元)运算符,需要两个操作数或表达式
 +,-,*,/,%,>,<,>=,<=,==,!=,===,!==,&&,||,&,|,^
 三目(三元)运算符,需要三个操作数或表达式
 条件表达式?表达式1:表达式2;
 先判断条件表达式的值,
 如果条件为true,则执行表达式1的操作
 如果条件为false,则执行表达式2的操作
 ex:成绩大于60及格,否则,输出不及格

7.函数-function

1.什么是函数

函数,function,也称为方法(method)
函数是一段预定义好,并可以被反复执行的代码块。
 预定义:提前定义好,并非马上执行。
 代码块:可以包含多条可执行的语句
 反复执行:允许被多次调用
函数-功能
 parseInt();
 parseFloat();
 Number();
 console.log();
 alert();
 document.write();

2.定义和使用函数

1.普通函数的声明和调用(无参数无返回值)
 1.声明
 function 函数名(){
 //函数体
 若干可执行的语句
}
 2.调用函数
 在任意javascript合法的位置处通过 函数名(); 对函数进行调用。
2.带参函数的声明和调用
 1.声明
 function 函数名(参数列表){
 //函数体
}
参数列表:可以声明0或多个参数,多个参数间用逗号隔开
声明函数时,声明的参数,称之为“形参”
 2.调用
 函数名(参数值列表);
 注意:调用函数时,传递的参数数值,称之为“实参”。
 尽量按照声明函数的格式进行调用
3.带返回值函数声明和调用
 1.声明
 function 函数名(参数){
 //函数体
 return 值;
 //return关键字,程序碰到return关键词,就立马跳出并且把值带出去
}
注意:最多只能返回一个值
 2.调用
 允许使用一个变量接收函数的返回值
 var result=函数名(实参);

8.作用域

1.什么是作用域
 作用域表示的是变量或函数的可访问范围。
 JS中的作用域分两种:
 1.函数作用域
 只在函数范围内有效
 2.全局作用域
 代码的任何位置都有效

2.函数作用域中变量

又称为局部变量,只在声明的函数中有效
 ex:
 function test(){
 var num=10;
 }

3.全局作用域中的变量

又称为全局变量,一经声明,任何位置都能用
 1.不在function中声明的变量,为全局变量
 2.声明变量不使用var,无论任何位置声明,都是全局变量(不推荐)
 注意:
 全局变量和局部变量冲突时,优先使用局部变量。
 3.变量的声明提前
 1.什么是声明提前
 在JS程序正式执行之前,function声明的函数,
 会将所有var声明的变量,都预读(声明)到所在作用域的顶部,但赋值还是保留在原位。

9.按值传递

1.什么是按值传递

原始(基本)类型的数据(number,string,bool),在做参数传递时,
都是按照“值传递”的方式进行传参的。
值传递:真正传递参数时,实际上传递的是值的副本(复制出来一个值),
而不是原始值。

2.函数的作用域

1.分为两种
 1.局部函数
 在某个function中声明的函数。
 2.全局函数
 在最外层(<script>中)定义的函数就是全局函数,全局函数一经定义,
 任何位置处都能调用。

10.ECMAScript提供一组全局函数

1.parseInt()

2.parseFloat()

3.isNaN()

4.encodeURI()

URL:uniform resource locator路径
URI:uniform resource Identifier
作用:对统一资源标识符进行编码,并返回编码后的字符串
所谓的进行编码,就是将地址中的多字节文字编成单字节的文字
(英文数字:单字节,汉字2-3字节不等)

5.decodeURI()

作用:对已经编码的URI进行解码,并返回解码后的字符串。

6.encodeURIComponent()

在encodeURI的基础上,允许对特殊符号进行编码。

7.decodeURIComponent()

解码特殊符号

8.eval()

作用:执行以字符串表示的js代码

11.递归调用

递归:在一个函数的内部再一次调用自己

问题:

1*2*3*4*5
 5*4*3*2*1
 求5!(5*4*3*2*1) 4!(4*3*2*1) 3!(3*2*1)
 2!(2*1) 1!(1*1)
 5!=5*4!
 4!=4*3!
 3!=3*2!
 2!=2*1!
 1!=1
 通过一个函数,求数字n的阶乘
 10!=10*(10-1)!
 效率:
 在本次调用还未结束时,就开始下次的调用,本次调用就会被挂起,
 直到所有的调用都完成之后,才会依次返回,调用的次数越多,效率越低。

12.分支结构

1.if结构

if(条件){
 语句块;
}
注意:
 条件尽量是boolean的,如果不是boolean,以下情况会当做false处理
 if(0){...}
 if(0.0){...}
 if(""){...}
 if(undefined){...}
 if(null){...}
 if(NaN){...}
注意:if后的{}可以省略,但是不推荐,只控制if后的第一句话。

2.if…else…结构

语法:
 if(条件){
 语句块
 }else{
 语句块
 }

3.if….else if…else…

语法:
 if(条件1){
 语句块1
 }else if(条件2){
 语句块2
 }else if(条件3){
 语句块3
 }else{
 语句块n
 }

4.switch…case

1.作用:(使用场合)
 等值判断
2.语法
 1.switch(值/表达式){
 case 值1:
 语句块1;
 break;//结束switch结构,可选的
 case 值2:
 语句块2;
 break;
 ...
 default:
 语句块n;
 break;
 }
 2.特殊用法
 执行相同操作时:
 switch(值/表达式){
 case 值1:
 case 值2:
 case 值3:
 语句块;
 }

12.循环结构

1.特点

1.循环条件:循环的开始和结束
2.循环操作:要执行的相同或相似的语句

2.循环-while

语法:
 while(条件){
 //循环体-循环操作
 //更新循环条件
 }

3.循环的流程控制

1.break
 作用:终止整个循环的运行
2.continue
 作用:终止本次循环的运行,继续执行下一次循环
 ex:
 循环从弹出框中录入信息,并且打印,直到输入exit为止。

4.循环-do…while

1.语法
 do{
 //循环体
 }while(条件);
 执行流程:
 1.先执行循环体
 2.再判断循环条件
 如果条件为真,则继续执行循环体
 如果条件为假,则跳出循环操作

5.循环-for

语法:
 for(表达式1;表达式2;表达式3){
 //循环操作
 }
 表达式1:循环条件的声明
 表达式2:循环条件的判断
 表达式3:更新循环变量
 执行流程:
 1.先执行表达式1
 2.判断表达式2的结果(boolean类型)
 3.如果2条件为真,则执行循环体,否则退出
 4.执行完循环体后,再执行表达式3
 5.判断表达式2的结果
 ex: for(var i=1;i<=10;i++){
 console.log(i);
 }

13.for的特殊用法

1.for(表达式1;表达式2;表达式3;){}

1.省略表达式
 三个表达式可以任意省略,分号不能省
 但一定在循环的内部或外部将表达式补充完整
2.表达式1和表达式3 允许写多个表达式,用逗号隔开表达式

14.循环嵌套

1.循环嵌套

在一个循环的内部,又出现一个循环
 for(var i=1;i<100;i++){ //外层循环
 for(var j=1;j<=10;j++){
 //内层循环
 }
 }
 外层循环走一次,内层循环走一轮

15.数组

1.什么是数组

在一个变量中保存多个数据。
数组是按照线型顺序来排列的-线型结构
数组中:除了第一个元素外,每个元素都有一个直接的"前驱元素"。
数组中:除了最后一个元素外,每个元素都有一个会直接的"后继元素"。

2.声明数组

1.语法
 1.var 数组名=[];
 var names=[];
 2.var 数组名=[元素1,元素2,元素3...];
 var names=["孙悟空","猪八戒","沙和尚"];
 3.var 数组名=new Array();
 var names=new Array();
 4.var 数组名=new Array(元素1,元素2...);
 var names=new Array("林黛玉","贾宝玉","王熙凤");

3.数组的使用

1.取值和赋值操作
 取值:
 数组名[下标]
 var newArr=["tom","lilei"];
 newArr[0]
 赋值:
 数组名[下标]=值;
 newArr[2]="韩梅梅";
2.获取数组的长度
 数组长度:数组中元素的个数
 属性:length
 语法:数组名.length
3.配合循环,遍历数组中的每个元素
 for(var i=0;i<names.length;i++){
 i:表示数组中每个元素的下标
 names[i]:每个元素
 }
 length表示数组中即将要插入的元素的下标
 var names=["tom","lili","lucy"];
 names[names.length]="lilei";

16.关联数组

1.关联数组
 以字符串作为元素的下标的数组,就是关联数组。
 以数字作为下标的数组,就是索引数组。
$array=["name"=>"tom"]
2.js中的关联数组
 var array=[];
 array["字符串下标"]=值;
 注意:
 1.关联数组中,字符串下标的内容是不记录到length中的
2.只能通过 字符串 做下标取值
3.for...in
 遍历出任意数组中的字符串下标 以及 索引下标
 语法:for(var 变量 in 数组名){
 //变量:字符串下标 或 索引下标
 }

17.冒泡排序

1.什么是冒泡
 排序算法之一,将一组数据进行排序,小的数字往前排,大的数字往后排。
 两两比较,小的靠前。
 var arr=[9,23,6,78,45]; 5个数 比4轮
 第一轮:比较了4次
 第二轮:比较了3次
 第三轮:比较了2次
 第四轮:比较了1次
 1.n个数字,则比较n-1轮
 for(var i=1;i<arr.length;i++)
 2.轮数增加,比较的次数较少
 for(var j=0;j<arr.length-i;j++)
 第一轮 5 -1=4次
 第二轮 5 -2=3次
 第三轮 5 -3=2次
 第四轮 5 -4=1次
 两两比较 小的靠前
 if(arr[j]>arr[j+1])
 arr[j]^=arr[j+1];
 arr[j+1]^=arr[j];
 arr[j]^=arr[j+1]

18.数组的常用方法

1.toString();

作用:将数组转换为字符串,并返回转换后的结果。
语法: var str=数组对象.toString();

2.join()

作用:将数组的元素通过指定的字符连接到一起,并返回连接后字符串
语法:var str=数组对象.join("字符");

3.concat()

作用:拼接两个或更多的数组,并返回拼接后的结果
语法:var res=数组对象.concat(数组1,数组2,...);

19.数组的函数

1.slice()

作用:截取子数组,从指定的数组中,截取几个连续的元素组成一个新的数组
语法:var arr=数组名.slice(start,[end]);
 start:从哪个下标位置处开始截取,取值为正,从前向后算; 
 取值为负,从后向前算 0 1 2
 var arr=["中国","美国","俄罗斯"];
 -3 -2 -1 
 end:指定结束位置处的下标(不包含自己),该参数可以省略,
 如果省略的话,就是从strat开始一直截取到尾。

2.splice()

作用:允许从指定数组中,删除一部分元素,同时再添加一部分元素
语法:arr.splice(start,count,e1,e2...);
 start:指定添加或删除元素的起始下标
 count:指定要删除元素的个数,取值为0表示不删除
 e1:要增加的新元素,可以多个
 返回值:返回一个由删除元素所组成的数组

3.reverse()

作用:将一个数组反转
语法:数组名.reverse();
注意:该函数会改变当前数组的内容

4.sort()

作用:排序,默认情况下按照数组元素们的Unicode码进行升序排序。
语法:数组名.sort();
特殊:
 允许自定义排序函数,从而实现对数字的升序或降序的排序
 ex:
 var arr=[12,6,4,115,78];
 //排序函数(升序)
 function sortAsc(a,b){
 return a-b;
 }
 arr.sort(sortAsc);
 原理:
 1.指定排序行数sortAsc,定义两个参数a和b,表示数组中相邻的两个数字
2.将排序函数指定给数组sort()函数,数组会自动传递数据到sortAsc()中,
 如果sortAsc()的返回值>0,则交互两个数字的位置,否则不变。
 使用函数完成升序排序:
 arr.sort(
 function(a,b){ //匿名函数
 return a-b;
 }
 )

20.进出栈操作

JS是按照标准的“栈式操作”来访问数组

所有的“栈式操作”的特点就是“后进先出”

1.push()

入栈,在栈顶添加指定的元素,并返回新数组的长度
 var arr=[10,20,30];
 //向栈顶增加新的数据40
 var len=arr.push(40); //4

2.pop()

出栈,删除(删除栈顶数据)并返回删除元素
注意:改变原来数组

3.shift()

删除数组头部(第一个)的元素并返回删除元素
语法:数组名.shift();

4.unshift()

在数组的头部(第一个)元素的位置处,增加元素,返回的是数组的长度。
语法:数组名.unshift(增加的数据);

3.二维数组

1.什么是二维数组

在一个数组中的元素又是一个数组,也可以称为:数组的数组。

2.二维数组的使用

var names=[
 ["孙悟空","猪八戒","沙和尚"],
["大乔","小乔","曹操"],
["林黛玉","贾宝玉","薛宝钗"]
];
 //打印输出“小乔”
 console.log(names[1][1]);
分类
其它综合

Auto CAD 常用系统变量、命令及技巧

1. ARRAYRECT 矩形阵列

2. ARRAYPOLAR环形阵列

3. CECOLOR 设置新对象的颜色

4. CELTSCALE 设置当前对象的线型比例缩放因子

5. CELTYPE 设置新对象的线型

6. CELWEIGHT 设置新对象的线宽

7. CLAYER 设置当前图层

8. CMDNAMES 显示活动命令和透明命令的名称

9. CMLJUST 指定多线对正方式

10.CMLSCALE 控制多线的全局宽度

11.CMLSTYLE 设置多线样式

12.CURSORSIZE 按屏幕大小的百分比确定十字光标的大小

13.DIMADEC 控制角度标注显示精度的小数位

14.DIMASZ 控制尺寸线、引线箭头的大小

15.DIMAUNIT 设置角度标注的单位格式

16.DIMCLRD 为尺寸线、箭头和标注引线指定颜色

17.DIMCLRE 为尺寸界线指定颜色

18.DIMCLRT 为标注文字指定颜色

19.DIMDEC 设置标注主单位显示的小数位位数

20.DIMDLE 当使用小斜线代替箭头进行标注时,设置尺寸线超出尺寸界线的距离

21.DIMDLI 控制基线标注中尺寸线的间距

22.DIMEXE 指定尺寸界线超出尺寸线的距离

23.DIMEXO 指定尺寸界线偏离原点的距离

24.DIMJUST 控制标注文字的水平位置

25.DIMLDRBLK 指定引线的箭头类型

26.DIMLFAC 设置线性标注测量值的比例因子

27.DIMLUNIT 为所有标注类型(角度标注除外)设置单位

28.DIMLWD 指定尺寸线的线宽

29.DIMLWE 指定尺寸界线的线宽

30.DIMSCALE 为标注变量(指定尺寸、距离或偏移量)设置全局比例因子

31.DIMSTYLE 显示当前标注样式

32.DIMTAD 控制文字相对尺寸线的垂直位置

33.DIMTDEC 设置标注主单位的公差值显示的小数位数

34.DIMTFAC 设置用来计算标注分数或公差文字的高度的比例因子

35.DIMTIH 控制所有标注类型(坐标标注除外)的标注文字在尺寸界线内的位置

36.DIMTIX 在尺寸界线之间绘制文字

37.DIMTM 当 DIMTOL 或 DIMLIM 为开时,为标注文字设置最大下偏差

38.DIMTOL 将公差添加到标注文字中

39.DIMTSZ 指定线性标注、半径标注以及直径标注中替代箭头的小斜线尺寸

40.DIMTVP 控制尺寸线上方或下方标注文字的垂直位置

41.DIMTXSTY 指定标注的文字样式

42.DIMTXT 指定标注文字的高度,除非当前文字样式具有固定的高度

43.HPANG 指定填充图案的角度

44.HPSCALE 指定填充图案的比例因子

45.HPSPACE 为用户定义的简单图案指定填充图案的线间距

46.LTSCALE 设置全局线型比例因子

47.LUNITS 设置线性单位

48.LUPREC 设置线性单位的小数位数

49.LWUNITS 控制线宽的单位显示为英寸还是毫米

50.MBUTTONPAN 控制定点设备第三按钮或滑轮的动作响应

51.MIRRTEXT 控制MIRROR对文字的镜像

52.ZOOMFACTOR 控制智能鼠标的每一次前移或后退操作所执行的缩放增量

53.VPORTS 切换至多个视图

54.RIBBON 标签栏(功能区)开

55.RIBBONCLOSE 标签栏(功能区)关

56.REINIT= Recovery Initialization,恢复初始化;

57.PICKADD,用SHIFT键添加到选择集

58.PICKBOX,设置“拾取框”大小

59.UCSICON,显示或隐藏坐标

60.AI,AIDIMFLIPARROW,翻转箭头

61.SHORTCUTMENU,设置右键功能

62.PU,PURGE 清理

63.lockui,0.不锁定工具栏和窗口;1.锁定固定工具栏;2.锁定固定或锚定窗口;4.锁定浮动动工具栏;8. 锁定浮动窗口。

64.Q,qslect -“快速选择”

65.LWD,LWDISPLAY 线宽显示开关

66.REFEDIT,编辑“块”

67.DCO,DIMCONTINUE 连续标注

68.TP,TOOLPALETTES 打开工具选项板

69.TOL,TOLERANCE 标注形位公差

70.TS,TABLESTYLE创建、修改或指定表格样式

71.TB,TABLE绘制表格

72.ST,STYLE创建、修改或设置文字样式

73.Shoptcutmenu,设置为0时右键等于Enter;设置为1时为右键快捷菜单;

74.CECOLOR,设置当前图层颜色,1红,2黄,3绿,4青,5蓝,6紫,7白。

75.Isavebak,系统变量改为1或0 ,是否创建“*Bak”备份文件。

76.Dragmode,在拖动时,是否显示对象的轮廓;

77.SYSVARMONITOR,系统变量监视器;

78.Break,在提示输入第二点时,输入@再回车,在第一点打断选定对象;

79.pastespec,选择性粘贴;

80.DYMODE:动态输入模式

81.RIBBON,RIBBONCLOSE 打开关闭标签栏

82.PICKADD,用SHIFT键添加到选择集

83.PICKBOX,设置“拾取框”大小

84.UCSICON,显示或隐藏坐标

85.AI,AIDIMFLIPARROW,翻转箭头

86.SHORTCUTMENU,设置右键功能

87.打开“编辑程序参数”:输入start,然后输入acad.pgp即可。

88.DBA:始终以一个标注的起点为基准进行多个尺寸的标注。

89.关闭Auto CAD 2019帮助、登陆、搜索栏:打开注册表:HKEY_CURRENT_USER/Software/Autodesk/AutoCAD/R23.0/ACAD-2001:804,将InfoCenter子目录下InfoCenterOn值改为0即可。

分类
其它综合

shell 数据取值 分割后的每个字段赋值给变量

比如比如我有一个变量 “123 456 789”,要求以空格为分隔符把这个变量分隔,
并把分隔后的字段分别赋值给变量,即a=123;b=456;c=789

下面几个方法可以参考:

定义一个数组,然后把分隔出来的字段赋值给数组中的每一个元素

通过eval+赋值的方式

通过多次awk把每个字段赋值

具体直接看测试脚本:

#!/bin/bash
str="123,456,789"
arr=${str//,/ }
for each in ${arr[*]}
do
  echo $each
done
echo "++++++++++++++++++++++++++++++"
a="123 456 789"
declare -a arr
index=0
for i in $(echo $a | awk '{print $1,$2}')
do
    arr[$index]=$i
    let "index+=1"
done
echo ${arr[0]}
echo ${arr[1]}
echo "++++++++++++++++++++++++++++++"
b=""
c=""
eval $(echo $a | awk '{ printf("b=%s;c=%s",$1,$2)}')
echo $b
echo "++++++++++++++++++++++++++++++"
eval $(echo "aa:bb" | awk -F ":" '{print "i1="$1";i2="$2}')
echo "++++++++++++++++++++++++++++++"
apitypes=apis,auth,nginx,apapche
apitypeArray=$apitypes
echo $apitypes
echo $apitypeArray
echo "+++++++++++++++++++++++"

for i in ${apitypeArray//,/ }
    do
        # call your procedure/other scripts here below
        echo "$i"
    done
echo "++++++++++++++++++++++++++++++"
for f in ${apitypes//,/ }
    do
        # call your procedure/other scripts here below
        echo "$f"
    done
echo "++++++++++++++++++++++++++++++"

eval $(echo $apitypes|awk -F"," '{print "i1="$1";i2="$2}')
echo $i1
echo $i2

分类
其它综合

javascript 判断变量类型

在JavaScript中,可以使用不同的方法来判断变量的数据类型。以下是几种常见的方法:

1. 使用typeof操作符:使用typeof操作符可以获取变量的数据类型,返回一个表示数据类型的字符串。例如:

let num = 42;
console.log(typeof num); // 输出: "number"
let str = "Hello";
console.log(typeof str); // 输出: "string"
let bool = true;
console.log(typeof bool); // 输出: "boolean"

2. 使用instanceof操作符:instanceof操作符用于检查一个对象是否属于某个特定类型。例如:

let arr = [];
console.log(arr instanceof Array); // 输出: true
let today = new Date();
console.log(today instanceof Date); // 输出: true

3. 使用constructor属性:constructor属性返回创建对象的构造函数引用。通过比较变量的constructor属性可以判断其类型。例如:

let obj = {};
console.log(obj.constructor === Object); // 输出: true
let func = function() {};
console.log(func.constructor === Function); // 输出: true

4. 使用Object.prototype.toString方法:可以通过调用Object.prototype.toString方法,传入要判断的变量作为参数,来获取其具体的数据类型。例如:

let num = 42;
console.log(Object.prototype.toString.call(num)); // 输出: "[object Number]"
let str = "Hello";
console.log(Object.prototype.toString.call(str)); // 输出: "[object String]"
let bool = true;
console.log(Object.prototype.toString.call(bool)); // 输出: "[object Boolean]"

这些方法可以根据具体的需求选择合适的方式来判断变量的数据类型。

分类
其它综合

AutoCAD 新命令和系统变量

AutoCAD 2022 新命令和系统变量

新命令

说明

AutoCAD

AutoCAD LT

COUNT

计数并亮显图形中选定对象的实例。

X

X

COUNTCLOSE

关闭“计数”工具栏并结束计数。

X

X

COUNTFIELD

创建设置为当前计数值的字段。

X

X

COUNTLIST

打开“计数”选项板以查看和管理计数的块。

X

X

COUNTLISTCLOSE

关闭“计数”选项板。

X

X

COUNTNAVNEXT

缩放到计数结果中的下一个对象。

X

X

COUNTNAVPREV

缩放到计数结果中的上一个对象。

X

X

COUNTTABLE

在图形中插入包含块名称和每个块的相应计数的表格。

X

X

PURGEAECDATA

在命令提示下删除图形中不可见的 AEC 数据(AutoCAD Architecture 和 AutoCAD Civil 3D 自定义对象)。

X

X

PUSHTODOCSOPEN

将打开“推送到 Autodesk Docs”选项板,从中可以选择要作为 PDF 上载到 Autodesk Docs 的 AutoCAD 布局。

X

X

PUSHTODOCSCLOSE

打开“推送到 Autodesk Docs”选项板。

X

X

SHARE

共享指向当前图形副本的链接,以在 AutoCAD Web 应用程序中查看或编辑。图形副本包含所有外部参照和图像。

X

X

TRACE

从命令提示打开和管理跟踪。注: 在 AutoCAD Web 应用程序或 AutoCAD 移动应用程序中创建跟踪,以提供图形的反馈、注释、标记和设计研究,而不会更改图形的内容。

X

X

TRACEBACK

以完全饱和度显示宿主图形,同时暗显跟踪几何图形。

X

X

TRACEFRONT

以完全饱和度显示活动跟踪,同时暗显宿主图形几何图形。

X

X

TRACEPALETTECLOSE

关闭“跟踪”选项板。

X

X

TRACEPALETTEOPEN

打开“跟踪”选项板以查看当前图形中可用的跟踪。

X

X

新系统变量

说明

AutoCAD

AutoCAD LT

3DTECHPREVIEW

指定三维技术预览是处于打开状态还是处于关闭状态。

X

BGCOREPUBLISH

控制后台发布是使用单核还是多核。

X

X

BLOCKCREATEMODE

在使用 BLOCK 和 -BLOCK 命令创建块后,设置选定对象的行为。

X

X

CLOUDCOLLABMODIFIEDOPTION

控制文档(DWG 和 DWT 文件)在 AutoCAD 中关闭后何时在 BIM 360 中解锁。

X

X

COUNTCHECK

控制对计数中错误的检查。

X

X

COUNTCOLOR

设置计数中对象的亮显颜色。

X

X

COUNTERRORCOLOR

对在计数中可能造成潜在错误的对象设置亮显颜色。

X

X

COUNTERRORNUM

显示当前计数中的错误数量。

X

X

COUNTNUMBER

显示当前计数的数量。

X

X

COUNTPALETTESTATE

报告“计数”选项板处于打开状态还是关闭状态。

X

X

COUNTSERVICE

控制计数的后台索引。

X

X

ENABLEDSTLOCK

控制从 BIM 360 打开图纸集 (DST) 文件后是否自动锁定该文件。

X

X

MTEXTEDENCODING

设置在编辑多行文字的同时从外部编辑器读取输出时要使用的所需编码。

X

X

PUSHTODOCSSTATE

将指示“推送到 Autodesk Docs”选项板是处于打开状态还是处于关闭状态。

X

X

SYSFLOATING

控制图形窗口选项卡的固定状态。

X

X

TRACECURRENT

当 TRACEMODE=1 或 2 时,显示活动跟踪的名称。

X

X

TRACEDISPLAYMODE

当跟踪处于活动状态时,指示跟踪图纸效果处于显示状态(前)还是不显示状态(后)。

X

X

TRACEFADECTL

当 TRACEMODE 处于活动状态时,控制淡入程度。该设置仅影响不在进行编辑的对象 – 宿主图形几何图形或跟踪几何图形。

X

X

TRACEMODE

指示跟踪是否处于活动状态以及当前所处模式。

X

X

TRACEOSNAP

控制在查看跟踪时对象捕捉是否应用于跟踪几何图形。

X

X

TRACEPALETTESTATE

报告“跟踪”选项板是处于打开状态还是处于关闭状态。

X

X

TRACEPAPERCTL

控制跟踪图纸效果的不透明度。

X

X

WBLOCKCREATEMODE

在将块另存为文件后,使用 WBLOCK 和 -WBLOCK 命令设置选定对象的行为。

X

X

AutoCAD 2021.1 新命令和系统变量

新系统变量

说明

AutoCAD

AutoCAD LT

BLOCKSYNCFOLDER

设置存储最近使用的块和收藏块的路径。

X

X

AutoCAD 2021 新命令和系统变量

新命令

说明

AutoCAD

AutoCAD LT

BREAKATPOINT

在指定点处将选定对象打断为两个对象。

X

X

DWGHISTORY

打开“图形历史记录”选项板,其中显示了当前图形的版本历史记录,该历史记录由支持的云存储提供程序维护。

X

X

DWGHISTORYCLOSE

关闭“图形历史记录”选项板。

X

X

-INSERTCONTENT

将图形或块插入到当前图形中。

X

X

MAKELISPAPP

将一个或多个 AutoLISP (LSP) 源文件编译到可分发给用户并保护代码的应用程序 (VLX) 文件。

X

-PAGESETUP

PAGESETUP 命令的命令行版本,用于替代脚本和其他自定义中页面设置的设置。

X

X

REVCLOUDPROPERTIES

控制选定修订云线中圆弧的近似弦长。

X

X

XCOMPARE

将附着的外部参照与参照图形文件的最新状态相比较,在修订云线内使用颜色亮显差异。

X

X

XCOMPARECLOSE

关闭“外部参照比较”工具栏并结束比较。

X

X

XCOMPARERCNEXT

缩放到外部参照比较结果的下一更改集。

X

X

XCOMPARERCPREV

缩放到外部参照比较结果的上一更改集。

X

X

新系统变量

说明

AutoCAD

AutoCAD LT

BLOCKSRECENTFOLDER

设置存储最近插入或创建的块的路径。

X

X

COMPARESHOWCONTEXT

控制外部参照比较中未使用的对象的可见性。

X

X

DWGHISTORYSTATE

报告“图形历史记录”选项板处于打开还是关闭状态。

X

X

LISPSYS

控制使用 VLISP 命令启动的默认 AutoLISP 开发环境。

X

REVCLOUDAPPROXARCLEN

存储修订云线的当前近似弧长。

X

X

REVCLOUDARCVARIANCE

控制是使用不同弦长还是均匀弦长创建修订云线圆弧。

X

X

RTREGENAUTO

控制实时平移和缩放操作中的自动重生成。

X

X

TEXTGAPSELECTION

控制是否可以在字符之间的间隙或空格内选择文字对象或多行文字对象。默认情况下,此系统变量处于关闭状态。

X

X

TRIMEDGES

控制使用“快速”模式修剪和延伸到图案填充的操作是限于图案填充的边缘,还是包括填充图案内的对象。

X

X

TRIMEXTENDMODE

控制默认情况下,TRIM 和 EXTEND 命令是否使用简化的输入。

X

X

XCOMPAREBAKPATH

指定存储备份外部参照文件的路径。

X

X

XCOMPAREBAKSIZE

设置存储备份外部参照文件的文件夹的大小。

X

X

XCOMPARECOLORMODE

在外部参照比较期间切换对象在宿主图形中的视觉效果。

X

X

XCOMPAREENABLE

支持在外部参照和参照图形文件之间进行比较。

X

X

AutoCAD 2020.1 版本中的新命令和系统变量

新命令

说明

AutoCAD

AutoCAD LT

新系统变量

说明

AutoCAD

AutoCAD LT

TEXTLAYER

为当前图形中新的文字对象和多行文字对象指定默认图层。

X

X

AutoCAD 2020 版本中的新命令和系统变量

新命令

说明

AutoCAD

AutoCAD LT

BLOCKSPALETTE

打开“块”选项板。

X

X

BLOCKSPALETTECLOSE

关闭“块”选项板。

X

X

CLASSICINSERT

打开经典“插入”对话框。

X

X

COMPARECLOSE

关闭“比较”工具栏并退出比较。

X

X

COMPAREEXPORT

将比较结果输出到称为“快照图形”的新图形中,然后打开该图形。

X

X

COMPAREIMPORT

将比较文件中的对象输入到当前图形中。仅输入比较文件中存在而当前文件中不存在的选定对象。

X

X

新系统变量

说明

AutoCAD

AutoCAD LT

BLOCKMRULIST

控制在“块”选项板的“最近使用”选项卡中显示的最近使用块的数量。

X

X

BLOCKNAVIGATE

控制“块”选项板的“其他图形”选项卡中显示的文件和块。

X

X

BLOCKREDEFINEMODE

控制从“块”选项板插入块(其名称与当前图形中块的名称相同)时是否显示对话框。

X

X

BLOCKSTATE

报告“块”选项板处于打开状态还是关闭状态。

X

X

AutoCAD 2019 版本中的新命令和系统变量

新命令

说明

AutoCAD

AutoCAD LT

COMPARE

比较并突出显示相同图形或不同图形的两个版本之间的差异。

X

X

-COMPARE

使用“命令”窗口,比较并突出显示相同图形或不同图形的两个版本之间的差异。

X

X

COMPAREINFO

允许您插入或复制关于两个比较图形文件的特性信息。

X

X

OPENFROMWEBMOBILE

从联机 Autodesk Web 和 Mobile 帐户打开图形文件。

X

X

SAVETOWEBMOBILE

将当前图形的副本保存到联机 Autodesk Web 和 Mobile 帐户。

X

X

SHAREDVIEWS

打开“共享视图”选项板。

X

X

SHAREDVIEWSCLOSE

关闭“共享视图”选项板。

X

X

SHAREVIEW

创建当前空间或整个图形的表示,以供联机查看和共享。

X

X

-SHAREVIEW

使用“命令”窗口,创建当前空间或整个图形的表示,以供联机查看和共享。

X

X

新系统变量

说明

AutoCAD

AutoCAD LT

COMPARECOLOR1

设置结果比较图形文件中仅在第一个图形中存在的对象的颜色。

X

X

COMPARECOLOR2

设置结果比较图形文件中仅在第二个图形中存在的对象的颜色。

X

X

COMPARECOLORCOMMON

设置进行比较的两个图形中相同对象的颜色。

X

X

COMPAREFRONT

控制比较结果图形中重叠对象的默认显示次序。

X

X

COMPAREHATCH

控制是否在图形比较中包含图案填充对象。

X

X

COMPAREPROPS

控制是否将非几何(显示)特性中的更改标识为两个图形版本之间的更改。

X

X

COMPARERCMARGIN

指定自修订云线(包含比较结果图形中对象的差异)的边界框的偏移距离。

X

X

COMPARERCSHAPE

控制是否在比较结果图形中将附近的单个更改合并为一个较大的矩形或一系列较小的矩形。

X

X

COMPARESHOW1

显示仅在第一个图形中存在的对象。

X

X

COMPARESHOW2

显示仅在第二个图形中存在的对象。

X

X

COMPARESHOWCOMMON

显示进行比较的两个图形中相同的对象。

X

X

COMPARESHOWRC

在比较结果图形中显示差异周围的修订云线。

X

X

COMPARETEXT

控制是否在图形比较中包含文字对象。

X

X

COMPARETOLERANCE

指定在比较两个图形文件时使用的公差 – 如果实体低于或等于指定的小数点值,则认为它们是相同的。

X

X

FILLETPOLYARC

确定多段线(包括当前圆弧或旧圆弧)的圆角行为。仅影响 FILLET 命令的“多段线”选项。

X

X

MVIEWPREVIEW

控制插入命名或新布局视口时的预览行为。

X

X

SECUREREMOTEACCESS

控制是否限制从 Internet 位置或远程服务器访问文件。

X

X

SHAREVIEWPROPERTIES

控制共享视图是否包含图形特性。

X

X

SHAREVIEWTYPE

控制是从当前视图、模型空间或某一布局中创建共享视图,还是从整个图形中创建共享视图。

X

X

STUDENTDRAWING

报告当前图形是否已与 Autodesk 学生版产品一起保存。

X

X

AutoCAD 2018.1 版本中的新命令和系统变量

新命令

说明

AutoCAD

AutoCAD LT

NEWVIEW

通过当前视口中显示的内容或者定义矩形窗口,保存新的命名视图。(已添加到 AutoCAD LT)

X

X

新系统变量

说明

AutoCAD

AutoCAD LT

LAYEROVERRIDEHIGHLIGHT

针对具有替代的图层切换背景色亮显的可见性。

X

X

THUMBSIZE2D

控制使用二维线框视觉样式的图形缩略图预览的显示分辨率是否设置为 256 x 256 像素。

X

X

VISRETAINMODE

当 VISRETAIN 系统变量设置为 1 时,控制其行为。

X

X

XREFLAYER

为新的外部参照指定默认图层。

X

X

AutoCAD 2018 版本中的新命令和系统变量

新命令

说明

AutoCAD

AutoCAD LT

APPSTORE

打开 Autodesk App Store 网站。 命令之前称为 EXCHANGE。

X

新系统变量

说明

AutoCAD

AutoCAD LT

PDFSHX

将从 PDF 文件中输入的 SHX 几何图形转换为单个多行文字对象。注: 从 EPDFSHX 重命名以保持一致性。

X

X

MILLISECS

存储自系统启动后已经过的毫秒数。注: 当需要计算几分之一秒的时间差时,使用此系统变量。

X

X

PDFSHXBESTFONT

在将输入的 PDF 几何图形转换为文字时,控制 PDFSHXTEXT 命令使用最佳匹配字体或使用超过识别阈值的第一个选定字体。

X

X

REFPATHTYPE

控制当参照文件第一次附着到宿主图形文件时是使用完整路径、相对路径还是无路径。

X

X

SELECTIONOFFSCREEN

控制屏幕外对象的选择。

X

X

XREFLAYER

为新的外部参照指定默认图层。

X

X

XREFREGAPPCTL

控制存储在加载的外部参照中的已注册应用程序 (RegApp) 记录是否将复制到宿主图形中。

X

AutoCAD 2017.1 版本中的新命令和系统变量

新命令

说明

AutoCAD

AutoCAD LT

HIGHLIGHTNEW

控制是否使用橙色点在用户界面中亮显产品更新中的新功能。

X

X

ONLINEDESIGNSHARE

将当前图形的设计视图发布到安全、匿名 Autodesk A360 位置,以供在 Web 浏览器中查看和共享。

X

X

PDFSHXTEXT

将从 PDF 文件中输入的 SHX 几何图形转换为单个多行文字对象。

X

X

-PDFSHXTEXT

通过命令行,将从 PDF 文件中输入的 SHX 几何图形转换为单个多行文字对象。

X

X

REGEN3

在图形中重新生成视图,以修复三维实体和曲面显示中的异常问题。

X

TXT2MTXT

将单行或多行文字对象转换或者合并为一个或多个多行文字对象。

X

X

新系统变量

说明

AutoCAD

AutoCAD LT

EPDFSHX

控制是否在将图形输出为 PDF 文件时,将使用 SHX 字体的文字对象存储在 PDF 文件中作为注释。注: 重命名为 PDFSHX 以保持一致性。

X

X

PDFSHXLAYER

控制在将 SHX 几何图形转换为文字对象时,指定给新创建的文字对象的图层。

X

X

PDFSHXTHRESHOLD

设置所选几何图形在转换为文字对象之前必须匹配某个字体的百分比。

X

X

SHOWNEWSTATE

指示更新中亮显的新功能是否处于活动状态。

X

X

AutoCAD 2017 版本中的新命令和系统变量

新命令

说明

AutoCAD

AutoCAD LT

3DPRINTSERVICE

将三维模型发送到三维打印服务。

X

CENTERDISASSOCIATE

从中心标记或中心线定义的对象中删除其关联性。

X

X

CENTERLINE

创建与选定直线和多段线相关联的中心线几何图形。

X

X

CENTERMARK

在选定的圆或圆弧的中心处创建关联的十字形标记。

X

X

CENTERREASSOCIATE

将中心标记或中心线对象关联或者重新关联至选定的对象。

X

X

CENTERRESET

将中心线重置为在 CENTEREXE 系统变量中指定的当前值。

X

X

PDFIMPORT

从指定的 PDF 文件输入几何图形、填充、光栅图像和 TrueType 文字对象。

X

X

-PDFIMPORT

从指定的 PDF 文件输入几何图形、填充、光栅图像和 TrueType 文字对象。

X

X

新系统变量

说明

AutoCAD

AutoCAD LT

CENTERCROSSGAP

确定中心标记与其中心线之间的间隙。

X

X

CENTERCROSSSIZE

确定关联中心标记的尺寸。

X

X

CENTEREXE

控制中心线延伸的长度。

X

X

CENTERLAYER

为新中心标记或中心线指定默认图层。

X

X

CENTERLTSCALE

设置中心标记和中心线所使用的线型比例。

X

X

CENTERLTYPE

指定中心标记和中心线所使用的线型。

X

X

CENTERLTYPEFILE

指定用于创建中心标记和中心线的已加载的线型库文件。

X

X

CENTERMARKEXE

确定中心线是否会自动从新的中心标记延伸。

X

X

CURSORTYPE

确定定点设备的光标类型。

X

X

LTGAPSELECTION

控制是否可以在使用非连续性线型定义的对象上选择或捕捉到间隙。

X

X

PDFIMPORTFILTER

控制哪些数据类型要从 PDF 文件中输入并转换为 AutoCAD 对象。

X

X

PDFIMPORTIMAGEPATH

指定在输入 PDF 文件后用于提取和保存参照图像文件的文件夹。

X

X

PDFIMPORTLAYERS

控制将哪些图层指定给输入自 PDF 文件的对象。

X

X

PDFIMPORTMODE

控制从 PDF 文件输入对象时的默认处理。

X

X

PDFSHX

控制是否在将图形输出为 PDF 文件时,将使用 SHX 字体的文字对象存储在 PDF 文件中作为注释。从 EPDFSHX 重命名以保持一致性。

X

X

PDFSHXLAYER

控制在将 SHX 几何图形转换为文字对象时,指定给新创建的文字对象的图层。

X

X

PDFSHXTHRESHOLD

设置所选几何图形在转换为文字对象之前必须匹配某个字体的百分比。

X

X

PLINEGCENMAX

设置多段线可以拥有的最大线段数量,以便应用程序计算几何中心。

X

X

SHOWNEWSTATE

指示更新中亮显的新功能是否处于活动状态。

X

X

TEXTEDITMODE

控制是否自动重复 TEXTEDIT 命令。

X

X

AutoCAD 2016 版本中的新命令和系统变量

新命令

说明

AutoCAD

AutoCAD LT

CLOSEALLOTHER

关闭所有其他打开的图形,当前活动的图形除外。

X

X

CMATTACH

COORDINATIONMODELATTACH

将参照插入到协调模型中,例如 NWD 和 NWC Navisworks 文件。

X

DIGITALSIGN

提供将数字签名添加到图形的单独命令。从 SECURITYOPTIONS 命令删除“数字签名”选项卡。

X

X

GOTOSTART

从当前图形切换到“开始”选项卡。“开始”选项卡为“新建”选项卡的后续选项卡,并且具有不同的行为。

X

X

PCEXTRACTCENTERLINE

为点云的圆柱段绘制一条中心线。

X

PCEXTRACTCORNER

标记点云中三个检测的平面之间的交点。

X

PCEXTRACTEDGE

推断两个平面之间的边并绘制一条直线来标记它。

X

PCEXTRACTSECTION

从包含截面对象的点云中生成二维几何图形。

X

POINTCLOUDCROPSTATE

用于保存、恢复和删除点云裁剪状态的控件。

X

RENDERENVIRONMENTCLOSE

关闭“渲染环境和曝光”选项板。

X

RENDEREXPOSURECLOSE

关闭“渲染环境和曝光”选项板。

X

RENDERWINDOW

显示“渲染”窗口。替换 RENDERWIN 命令。

X

RENDERWINDOWCLOSE

关闭“渲染”窗口。

X

SCRIPTCALL

执行一系列与 SCRIPT 命令等效的命令,包括额外的执行嵌套脚本的功能。

X

X

SECTIONSPINNERS

设置“截面平面”功能区上下文选项卡中“截面偏移”和“切片厚度”的默认增量值。

X

SYSVARMONITOR

显示“系统变量监视器”对话框。

X

X

新系统变量

说明

AutoCAD

AutoCAD LT

CMFADECOLOR

控制所有附着的协调模型上混合的黑色量。

X

CMFADEOPACITY

通过透明度控制所有附着的协调模型的暗显程度。

X

CMOSNAP

决定是否为附着到图形的协调模型中的几何图形激活对象捕捉。

X

DIMLAYER

为新的标注指定默认图层。

X

X

DIMPICKBOX

在 DIM 命令中设置对象选择目标高度(以像素为单位)。

X

X

DIMTXTRULER

在编辑标注文字时,控制标尺的显示。

X

X

EXPVALUE

指定渲染期间要应用的曝光值。

X

EXPWHITEBALANCE

指定渲染期间要应用的开尔文颜色温度(白平衡)。

X

GALLERYVIEW

控制功能区下拉库中的预览类型。

X

X

IBLENVIRONMENT

启用基于图像的照明并指定当前图像贴图。

X

LEGACYCODESEARCH

控制搜索可执行文件是否包括当前文件夹和图形文件夹。

X

LINEFADING

控制当硬件加速处于启用状态且您已超出线密度限制时,是否淡入线显示。

X

X

LINEFADINGLEVEL

启用硬件加速后,控制线淡入效果的强度。

X

X

POINTCLOUD2DVSDISPLAY

在使用二维线宽视觉样式查看点云时,禁用或启用边界框和文字消息。

X

RENDERENVSTATE

指示“渲染预设管理器”选项板是处于打开状态还是关闭状态。

X

RENDERLEVEL

指定渲染引擎为创建渲染图像而执行的迭代数或层级数。

X

RENDERLIGHTCALC

控制光源和材质的渲染精度。

X

RENDERTARGET

控制要用于渲染的持续时间。

X

RENDERTIME

指定渲染引擎用于反复细化渲染图像的分钟数。

X

REVCLOUDCREATEMODE

指定用于创建修订云线的默认输入。

X

X

REVCLOUDGRIPS

控制修订云线上显示的夹点数。

X

X

SECTIONOFFSETINC

为截面对象切片厚度控件设置默认的增量值。

X

SECTIONTHICKNESSINC

为截面对象偏移控件设置默认的增量值。

X

SELECTIONEFFECTCOLOR

设置对象选择上的光晕亮显效果的颜色。

X

X

STARTINFOLDER

存储从中启动产品的驱动器和文件夹路径。

X

X

STARTMODE

控制是否显示“开始”选项卡。

X

X

SYSMON

指定是否监控对系统变量值所做的更改。

X

X

WORKINGFOLDER

存储开发人员可能关心的、操作系统工作文件夹的驱动器和文件夹路径或当前目录以供处理。

X

X

XREFOVERRIDE

控制参照图层上对象特性的显示。

X

X

AutoCAD 2015 版本中的新命令和系统变量

新命令

说明

AutoCAD

AutoCAD LT

GEOMAPIMAGE

将联机地图的一部分捕获到称为地图图像的对象,然后将其嵌入在绘图区域中。

X

X

GEOMAPIMAGEUPDATE

从联机地图服务重新加载地图图像并且可以选择重置其分辨率,以便提供最佳的屏幕查看效果。

X

X

ISODRAFT

启用或禁用等轴测草图以及所有相关设置,然后指定当前二维等轴测草图平面。

X

X

NEWTAB

已废弃。将显示一个新选项卡,用户可通过该选项卡直接访问文件、学习资源、Autodesk A360 及更多内容。

X

X

ONLINEAUTOCAD360

已废弃。 在默认浏览器中启动 AutoCAD 360。

X

X

PMTOGGLE

控制是打开还是关闭性能录制器。“性能录制器”工具可用于记录性能问题,以供 Autodesk 进行分析。

X

POINTCLOUDCOLORMAP

显示“点云颜色映射”对话框,用于定义强度、标高和分类点云样式化的设置。

X

POINTCLOUDCROP

将选定的点云裁剪为指定的多边形、矩形或圆形边界。

X

POINTCLOUDMANAGER

显示“点云管理器”选项板,用于控制点云项目、面域和扫描的显示。

X

POINTCLOUDMANAGERCLOSE

关闭点云管理器。

X

POINTCLOUDSTYLIZE

控制点云的颜色。

X

POINTCLOUDUNCROP

从选定的点云永久删除所有裁剪区域。

X

PTYPE

指定点对象的显示样式及大小。

X

X

RECAP

在 AutoCAD 中启动 Autodesk ReCap。

X

TEXTALIGN

垂直、水平或倾斜对齐多个文字对象。

X

X

新系统变量

说明

AutoCAD

AutoCAD LT

COLORTHEME

将功能区、选项板和若干其他界面元素的颜色主题设置为深色或浅色。

X

X

COMMANDPREVIEW

控制是否显示命令的可能结果的预览。

X

X

COMPLEXLTPREVIEW

控制是否在交互式操作期间显示复杂线型的预览。

X

X

CURSORBADGE

决定是否在绘图区域中显示光标标记。

X

X

HIGHLIGHTSMOOTHING

控制对象亮显的反走样效果。

X

X

HPLINETYPE

控制非连续性线型如何在填充图案中显示。

X

X

LAYOUTTAB

控制是否显示“模型”和“布局”选项卡。

X

X

MTEXTAUTOSTACK

控制 MTEXT 命令的自动堆叠。

X

X

MTEXTDETECTSPACE

控制是否在 MTEXT 命令中将键盘上的空格键用于创建列表项。

X

X

NEWTABMODE

已废弃。指定在文件选项卡栏上单击加号 (+) 是显示一个新选项卡还是打开一个新图形。

X

X

ORBITAUTOTARGET

控制为 3DORBIT 命令获取目标点的方式。

X

OSNAPOVERRIDE

确定是否已强制使用“OSNAP”对话框中的对象捕捉设置。

X

X

PCMSTATE

指示点云管理器处于打开状态还是关闭状态。

X

POINTCLOUDLIGHTING

控制点云的光源效果的显示方式。

X

X

POINTCLOUDLIGHTSOURCE

当光源处于打开状态时,确定点云的光源。

X

X

POINTCLOUDLOD

为点云设置点显示的密度级别。

X

X

POINTCLOUDPOINTMAXLEGACY

仅适用于传统(2015 之前)点云。设置可以为所有附着到图形的传统点云显示的最大点数。

X

X

POINTCLOUDPOINTSIZE

控制新点云对象的点的大小。

X

X

POINTCLOUDSHADING

指定点云中的点的亮度是漫射还是镜面反射。

X

X

POINTCLOUDVISRETAIN

控制传统图形(在 AutoCAD 2014 中创建的)是否保留单个扫描(RCS 文件)的打开或关闭状态和由附着的点云项目(RCP 文件)参照的面域。

X

X

SELECTIONEFFECT

指定对象处于选中状态时所使用的视觉效果。

X

X

SORTORDER

指定是使用自然排序顺序还是 ASCII 值来排序图层列表。

X

X

TEXTALIGNMODE

存储对齐文字的对齐选项。

X

X

TEXTALIGNSPACING

存储对齐文字的间距选项。

X

X

TEXTALLCAPS

将通过 TEXT 或 MTEXT 命令创建的所有新文字转换为大写。

X

X

TEXTAUTOCORRECTCAPS

更正因意外启用 Caps Lock 而导致的常见文本错误。

X

X

AutoCAD 2014 版本中的新命令和系统变量

新命令

说明

AutoCAD

AutoCAD LT

DESIGNFEEDCLOSE

已废弃。 关闭“设计提要”选项板。

X

X

DESIGNFEEDOPEN

已废弃。 打开“设计提要”选项板。

X

X

FILETAB

显示位于绘图区域顶部的“文件”选项卡。

X

X

FILETABCLOSE

隐藏位于绘图区域顶部的“文件”选项卡。

X

X

GEOLOCATEME

显示或隐藏用于显示您当前位置的指示器。

X

X

GEOMAP

将在当前视口中通过联机地图服务显示地图。

X

X

GEOMARKLATLONG

将位置标记放置在由纬度和经度定义的位置上。

X

X

GEOMARKME

将位置标记放置在模型空间中与您的当前位置相对应的位置。

X

X

GEOMARKPOINT

将位置标记放置在模型空间中的指定点处。

X

X

GEOMARKPOSITION

将位置标记放置在指定的位置。

X

X

GEOREMOVE

从图形文件中删除所有地理位置信息。

X

X

GEOREORIENTMARKER

修改地理标记的方向和位置,而不更改其纬度和经度特性。

X

X

INPUTSEARCHOPTIONS

控制命令行中使用“自动完成”和“自动更正”建议的设置。

X

X

ONLINEOPENFOLDER

已废弃。在“Windows 资源管理器”或“文件资源管理器”中打开本地 Autodesk A360 文件夹。

X

X

WEBLOAD

从 URL 加载 JavaScript 文件,然后执行包含在该文件中的 JavaScript 代码。

X

新系统变量

说明

AutoCAD

AutoCAD LT

CGEOCS

存储指定给图形文件的 GIS 坐标系的名称。

X

X

CLAYOUT

设置当前布局。

X

X

DESIGNFEEDSTATE

已废弃。 指示“设计提要”选项板处于打开状态还是关闭状态。

X

X

DIMCONTINUEMODE

确定连续标注的样式是基于正在连续使用的标注还是当前标注样式。

X

X

FILETABPREVIEW

控制当您将光标悬停在文件选项卡上时预览的类型(列表视图或缩略图视图)。

X

X

FILETABSTATE

指示位于绘图区域顶部的文件选项卡的显示状态。

X

X

FILETABTHUMBHOVER

指定当您将光标悬停在文件选项卡缩略图上时,是否在图形窗口中加载相应的模型或布局。

X

X

GEOMARKPOSITIONSIZE

指定在创建位置标记时,用于点对象和多行文字对象的比例因子。

X

X

HPPICKMODE

设置用于标识图案填充内容的默认方法是选择点还是选择对象。

X

X

INPUTSEARCHDELAY

设置显示命令行建议列表之前要延迟的毫秒数。

X

X

POINTCLOUDCACHESIZE

指定为显示点云而保留的内存量。

X

X

POINTCLOUDVISRETAIN

控制图形是否保留附着的 RCP 文件所参照的点云扫描文件的打开或关闭状态。

X

SAFEMODE

指示是否可在当前 AutoCAD 任务中加载和执行可执行代码。

X

SECURELOAD

控制 AutoCAD 是否根据文件的位置加载可执行文件。

X

TEXTJUSTIFY

显示 TEXT 命令在创建单行文字时使用的默认对正方式。

X

X

TOUCHMODE

对于那些使用支持触摸的屏幕或界面的用户,可以控制功能区上“触摸”面板的显示。

X

X

TRUSTEDDOMAINS

控制 AutoCAD 可从中运行 JavaScript 代码的域名或 URL。

X

TRUSTEDPATHS

控制 AutoCAD 可从中加载并执行包含可执行代码的文件的文件夹。

X

AutoCAD 2013 版本中的新命令和系统变量

新命令

说明

AutoCAD

AutoCAD LT

ARRAYCLASSIC

将显示传统“阵列”对话框。

X

X

ONLINECOLNOW

已废弃。使用 AutoCAD WS 启动联机任务,其中由您所邀请的用户可以同时查看和编辑您的当前图形。

X

X

ONLINEDOCS

已废弃。 在浏览器中打开 Autodesk A360 文档列表和文件夹。

X

X

ONLINEOPTIONS

已废弃。 打开“选项”对话框中的“联机”选项卡。

X

X

ONLINESHARE

已废弃。 指定哪些用户可以从 Autodesk A360 访问当前文档。

X

X

ONLINESYNC

已废弃。 开始或停止将自定义设置与 Autodesk A360 同步。

X

X

ONLINESYNCSETTINGS

已废弃。 显示“选择要同步的设置”对话框,用户可以在其中指定要同步的选定设置。

X

X

OPENFROMCLOUD

已废弃。 从您的本地 Autodesk A360 同步文件夹中打开现有的图形文件。

X

X

POINTCLOUDCLIP

已废弃。将选定点云的显示裁剪到指定边界。

X

POINTCLOUDINTENSITYEDIT

已废弃。打开“点云强度颜色映射”对话框,它可指定合格点云的强度颜色映射。

X

SAVETOCLOUD

已废弃。 使用新的文件名,将现有图形文件保存到您的本地 Autodesk A360 同步文件夹中。

X

X

SURFEXTRACTCURVE

从曲面提取等值线曲线。

X

VIEWCOMPONENT

选择工程视图部件以进行编辑。

X

VIEWDETAIL

支持通过选择现有工程视图创建局部视图

X

VIEWSECTION

支持通过选择要切割的工程视图创建截面视图。

X

VIEWDETAILSTYLE

支持局部视图样式的创建或修改。

X

VIEWSECTIONSTYLE

支持截面视图样式的创建和编辑。

X

VIEWSYMBOLSKETCH

激活视图的模型空间并进入“视图绘制”状态来编辑和约束剖切线或详图边界

X

VIEWSKETCHCLOSE

退出“视图绘制”状态并将图纸空间置为当前。

X

新系统变量

说明

AutoCAD

AutoCAD LT

ANNOMONITOR

打开和关闭注释监视器。

X

X

ARRAYASSOCIATIVITY

设置要成为关联或非关联的新阵列的默认行为。

X

X

CACHEMAXFILES

为产品设置保存在本地配置的临时文件夹中图形缓存文件的最大数量。

X

X

CACHEMAXTOTALSIZE

为产品设置保存在本地配置的临时文件夹中图形缓存文件的最大总大小。

X

X

CLIPROMPTLINES

设置当将浮动命令窗口设置为仅显示提示行时在临时提示历史记录中显示的行数。

X

X

CLIPROMPTUPDATE

控制命令行是否显示在执行 AutoLISP 或脚本文件时生成的消息和提示。

X

X

ONLINEDOCMODE

已废弃。指示图形和链接文件的副本是否会自动上载到 Autodesk A360。

X

X

ONLINESYNCTIME

已废弃。 控制当前自定义设置与本地缓存同步的时间间隔,然后将其存储在 Autodesk A360 中。

X

X

PLINEREVERSEWIDTHS

控制反转多段线时多段线的外观。

X

X

POINTCLOUDBOUNDARY

打开和关闭点云边界框的显示。

X

X

POINTCLOUDCLIPFRAME

控制传统点云上的剪裁边界是否显示在屏幕上和打印输出中。

X

X

POINTCLOUDPOINTMAX

设置图形中可存在的最大点云点数。

X

PROPERTYPREVIEW

控制在将鼠标悬停在控制特性的下拉列表和库上时,是否可以预览对当前选定对象的更改。

X

X

PROPPREVTIMEOUT

设置在自动取消预览之前显示特性预览的最大秒数。

X

SELECTIONPREVIEWLIMIT

限制在窗口或窗交选择期间可以显示预览亮显的对象数。

X

X

SNAPGRIDLEGACY

指定栅格捕捉仅在指定点时激活还是同时在对象选择过程中激活。

X

THUMBSAVE

控制是否将 BMP 预览图像随图形一起保存。

X

X

VIEWSKETCHMODE

打开或关闭视图绘制状态。

X

VIEWUPDATEAUTO

指定当更改未完成时模型文档视图是否会自动更新。

X

WIPEOUTFRAME

控制区域覆盖对象的框架的显示。

X

X

分类
其它综合

Python的常用变量类型与基础运算

布尔变量(bool)

布尔变量(bool)是整数型变量(int)的子类。当整数型变量的值为0时,布尔变量的值为False;当整数型变量的值非0时,布尔变量的值为True。

赋值方法

布尔变量可以直接用常量赋值构建(1-2),也可以使用bool()函数构建(3-7);此外,条件语句的返回结果也是布尔变量(8)。

var_1 = True # True
var_2 = False # False
var_3 = bool(True) # True
var_4 = bool(False) # False
var_5 = bool(0) # False
var_6 = bool(1) # True
var_7 = bool(2) # True
var_8 = 30>30 # False

基础运算

布尔变量在执行减加乘除等数值运算时,就是整数0和1的运算。

var_1, var_2 = True, False
print(var_1 and var_2) # False
print(var_1 or var_2) # True
print(var_1 and not var_2) # True
print(var_1 or not var_2) # True
print("True+1", ":", var_1 + 1) # 2
print("True-1", ":", var_1 - 1) # 0
print("True*2", ":", var_1 * 2) # 2
print("True/2", ":", var_1 / 2) # 0.5

整数变量(int)、浮点数变量(float)

在Python3以后,长整型(long)被移除,使用int代替

赋值方法

var_1 = 3 # int(3)
var_2 = int(3.1415926) # (int)3
var_3 = 3.1415926 # (float)3.1415926
var_4 = float(3) # (float)3.0

基础运算

var_1 = 10
var_2 = 3
print("10+3", ":", var_1 + var_2) # 13
print("10-3", ":", var_1 - var_2) # 7
print("10*3", ":", var_1 * var_2) # 30
print("10/3", ":", var_1 / var_2) # 3.333333333
print("10^3", ":", var_1 ** var_2) # 1000
print("10/3取模", ":", var_1 // var_2) # 3
print("10/3取余", ":", var_1 % var_2) # 1

复数变量(complex)

赋值方法

var_1 = complex(2) # (2+0j)
var_2 = complex(2,1) # (2+1j)
var_3 = complex("2") # (2+0j)
var_4 = complex("2+1j") # (2+1j)

基础运算

var_1, var_2 = complex(2,1), complex(1,-2)
print(var_1 + var_2) # (3-1j)
print(var_1 - var_2) # (1+3j)
print(var_1 * var_2) # (4-3j)
print(var_1 / var_2) # (-0+1j)

字节变量(bytes)

字节变量(bytes)是不可变的字节序列,对它的任何操作都不会改变它自身;字节变量在很多方法上与字符串(str)十分相似。

var_1 = b"hello"
var_2 = bytes(b"hello")

字节数组(bytearray)

字节数组(bytearray)是可变的字节序列,既拥有部分字节变量的操作方法,可以像字符串一样被操作;也拥有一部分列表(list)的操作方法,可以像列表一样被操作。

var_1 = bytearray(b"hello")
var_2 = bytearray.fromhex("68656c6c6f") # 十六进制的hello
print(var_1, var_1.hex(), var_2)
bytearray(b'hello') 68656c6c6f bytearray(b'hello')

字符串(str)

字符串(str)是不可变的字符序列,对它的任何操作都北湖汇改变它自身。Python中拥有一系列针对于字符串的操作。

var_1 = "hello"
var_2 = str("hello")

列表(list)

列表(list)是一个有序的、可重复的、每个元素均可以被修改的元素序列,列表中的每一个元素都分配了一个索引。

var_1 = ["h", "e", "l", "l", "o", 3, 3.1415926]
print(var_1[0]) # h
print(var_1[3:5]) # ['l', 'o']

元组(tuple)

元组(tuple)是一个有序的、可重复的、每个元素均不能被修改的元素序列;与列表(list)类似,为每一个元素都分配了一个索引。与列表不同的是,元组中的元素不能被修改。

var_1 = ("h", "e", "l", "l", "o", 3, 3.1415926)
print(var_1[0]) # h
print(var_1[3:5]) # ('l', 'o')

集合(set)

集合(set)是一个无序的、不重复的元素序列。

var_1 = {"h", "e", "l", "l", "o"}
var_2 = set("hello")
print(var_1, var_2)
3 {'l', 'e', 'h', 'o'} {'l', 'e', 'h', 'o'}

字典(dict)

字典(dict)是一种可变的容器模型,使用对象(object)和数组(array)两种结构来组合成复杂的数据结构。其中对象是一个无序的“键值对”集合,键必须是唯一的,但是值不一定是唯一的;数组是值的有序集合,即列表(list)。

var_1 = {"hello": ["h", "e", "l", "l", "o"], "circle": 3.1415926}

Jupyter Notebook的代码参见扩展链接。

分类
其它综合

js回忆录(1)——变量,null 和 undefined

变量:这个东西不同的高度的人看法不一样,甚至不同领域的人的看法也不一样,当初上机组的时候依稀记得老师说这个寄存器那个锁存器什么的,然后根据高低电位就变成了二进制认识的0和1了,当然了具体细节本博主大人也不知道!而在我现在看来,变量就是一个容器,你用什么就向内存提出申请,这个叫做变量声明,至于到底要干什么你就用赋值告诉电脑吧。

js把变量类型大致分为 引用类型和简单类型,通过typeof运算符又可分为:object,function,number,string,boolean,undefined(初学者不要把undefined视为类型不然容易混淆一些概念),通过instanceof运算符又可以判断出正则,,array,promise等等东西。这些都不重要,重要的是你只要知道引用类型和简单类型的特性就行了,引用类型引用同一个内存里边的东西,因此引用了相同对象的变量只要一个变了其他的也会跟着变,而简单类型在这一点和引用类型是不同的。然后es6里边新加了个叫const的东西,锁定了变量的入口地址,使得变量只要声明为某一类型之后,以后就不会变动了。你非作死改变他的值/引用的话就会抛出错误。

然后变量声明会提升,注意js里的作用域链。

总的来说,浏览器访问某一属性/值,是就近取值的,css如此js也可以大致如此理解。

undefined: 变量未声明前是undefined,声明了没赋值是undefined,

null: 内存中和引用类型差不多,

20180411新增一条:

浏览器环境下undefined是window的undefined,null就是null,原型链的终点

所谓 道生一 一生二 二生三 三生万物,js里的道大概是null

然后当一个变量为null或undefined的时候赋值或者读取属性的时候是会出错的。。。

变量差不多就这些内容了,最后说一点js的内存管理机制吧。

关于内存管理,有引用计数垃圾收集和标记-清除两个算法。

引用计数垃圾收集:这是最简单的垃圾收集算法。此算法把“对象是否不再需要”简化定义为“对象有没有其他对象引用到它”。如果没有引用指向该对象(零引用),对象将被垃圾回收机制回收。该算法有个限制:无法处理循环引用。比如下面的例子:

function f(){
  var o = {};
  var o2 = {};
  o.a = o2; // o 引用 o2
  o2.a = o; // o2 引用 o
  return "azerty";
 }
  f();

当f执行完毕之后,这两个对象不会离开f的作用域,因此这时候o和o2已经可以被回收了,但是他们之间存在循环引用,故而引用计数算法考虑到它们互相都有至少一次引用,所以它们不会被回收,因此就造成内存泄漏了。

IE 6, 7 使用引用计数方式对 DOM 对象进行垃圾回收。该方式常常造成对象被循环引用时内存发生泄漏。

–引用自 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Memory_Management

标记-清除算法:

This algorithm reduces the definition of "an object is not needed anymore" to "an object is unreachable".

This algorithm assumes the knowledge of a set of objects called roots (In JavaScript, the root is the global object). Periodically, the garbage-collector will start from these roots, find all objects that are referenced from these roots, then all objects referenced from these, etc. Starting from the roots, the garbage collector will thus find all reachable objects and collect all non-reachable objects.

This algorithm is better than the previous one since "an object has zero reference" leads to this object being unreachable. The opposite is not true as we have seen with cycles.

As of 2012, all modern browsers ship a mark-and-sweep garbage-collector. All improvements made in the field of JavaScript garbage collection (generational/incremental/concurrent/parallel garbage collection) over the last few years are implementation improvements of this algorithm, but not improvements over the garbage collection algorithm itself nor its reduction of the definition of when "an object is not needed anymore".

–引用自 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Memory_Management

简而言之js里全局对象无法访问到的东西都会被回收,这个算法要比前一个算法好,并且在2012之后的现代浏览器上已经的得到了支持。

分类
其它综合

Java入门到高级学习-C2 Java变量及数据类型

Hello All,上篇文章简单介绍了Java及学习框架,今天为大家带来基础课程的第二篇,Java的变量及数据类型的相关内容;

首先为大家介绍几个基础概念,方便大家加以区分概念和为日后养成一个良好的编程习惯打下基础。首先区分什么是关键字、保留字和标识符?

  • 关键字:被Java语言赋予了特殊含义,用于专门用途的字符串(单词),特点为关键字中所有字母均为小写(例如class,public,static,if,else,int,float等等);
  • 保留字:现有Java版本尚未使用,但以后的版本可能会使用,命名标识符要避免使用(goto const等)
  • 标识符:Java对各种变量、方法、类等要素命名时使用的字符序列

合法标识符规则:

  • 由26个英文字母大小写,0-9,_或$组成;
  • 数字不可以用作开头;
  • 不可使用关键字和保留字,但可以包含关键字和保留字;
  • 严格区分大小写,长度无限制;
  • 标识符不可含有空格;

标识符命名规范:

  • 包名:多单词组成时,所有字母都小写,xxxyyyzzz;
  • 类名、接口名:多单词组成时,所有单词的首字母大写(大驼峰命名法)XxxYyyZzz;
  • 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写(小驼峰命名法)xxxYyyZzz;
  • 常量名:所有字母都大写,多单词组成时,每个单词用下划线连接 XXX_YYY_ZZZ;

那么规则和规范有什么区别,规则是在标识符命名时,语法要求必须要遵守的,如不遵守则会出现编译错误的情况,规范只是一种约定俗成的习惯,遵守与否只是用来衡量代码是否具有一个良好的习惯,即使不按照规范来编写代码,也不会编译错误,这是大家要区分的,但养成一个良好的编码习惯就像饭前便后要洗手一样重要!

介绍完基础概念,接下来我们来介绍什么是变量:即是用于在内存中保存数据的区域;

  • 变量是内存中的一个存储区域;
  • 该区域的数据可以在同一类型范围内不断变化;
  • 变量是程序中最基本的存储单元,包含变量类型,变量名和存储的值;

使用变量要注意以下几点:

  • java中的每个变量必须先声明,后使用;
  • 使用变量名来访问这块区域的数据;
  • 变量的作用域:其定义所在的一对{}内;
  • 变量只有在其作用域内才有效;
  • 同一个作用域内,不能定义重名的变量;

Java定义变量的格式:数据类型 变量名 = 变量值。必须先声明且初始化(赋值)后使用;

//定义变量:数据类型 变量名 = 变量值
int myInt = 100;

介绍完变量的基本概念,接下来我们来介绍变量的数据类型,为什么要区分数据类型?在我们日常生活中,一件事物的各类属性对应的数据类型是不同的,例如描述一个人A,这个人的姓名是张三,对应的数据类型为字符串,年龄18,对应的数据类型为整数型,体重是56.8kg,对应的数据类型是浮点型(即带有小数点的数字),是否单身,对应的结果为是或者否,数据类型即为布尔型。由此可见,在计算机当中,为了区分这些属性,必须要有不同的数据类型来加以存储。

一、变量按照数据类型来分:基础数据类型和引用数据类型

  • 基本数据类型:数值型(整数型int、byte、short、long;浮点型float、double)、字符型(char)、布尔型(boolean);
  • 引用数据类型:类(class,注意字符串是一个类)、接口(interface)、数组(array[])

二、按照变量在类中声明的位置:成员变量和局部变量,在方法体外,类体内声明的变量称为成员变量;在方法体内声明的变量为局部变量。两者在初始化值方面的相同点是都有生命周期,不同点是局部变量除形参外,需显式初始化

  • 成员变量:实例变量(不以statci修饰),类变量(以statci修饰);
  • 局部变量:形参(方法、构造器中定义的变量)、方法局部变量(在方法内定义)、代码块局部变量(在代码块内定义)

下面来重点介绍8种基本数据类型:

数据类型

名称

存储量

数据范围

备注

整数型

byte

1字节

-128 ~ 127

short

2字节

-2**15 ~2**15-1

int

4字节

-2**31 ~ 2**31-1

通常定义整数型变量时,通过int定义

long

8字节

-2**63 ~ 2**63-1

定义long型,数字结尾后须以“l”或“L”结束

浮点型

float

4字节

-3.403E38 ~ 3.403E38

单精度,尾数可以精确到7位有效数字,但很多情况下,精度难以满足实际要求,声明float变量,数字结尾后须以“f“或”F“结尾

double

8字节

-1.798E308 ~ 1.798E308

双精度,精度是float的两倍,通常采用此类型

字符型

char

2字节

定义char型变量,通常使用单引号,内部只能写一个字符或一个转义字符或unicode值

布尔型

boolean

true | false

以上就是今天要介绍的内容,欢迎大家点赞,收藏,关注!