4889软件园:电脑手机软件下载大全,热门手机游戏免费下载

4889软件园 > 资讯文章 > 哎呀游戏浏览器(弟弟的浏览器记录被姐姐看到,神评:此弟不宜久留)

哎呀游戏浏览器(弟弟的浏览器记录被姐姐看到,神评:此弟不宜久留)

作者:佚名 来源:4889软件园 时间:2023-01-20 00:37:10

哎呀游戏浏览器(弟弟的浏览器记录被姐姐看到,神评:此弟不宜久留)

哎呀游戏浏览器文章列表:

哎呀游戏浏览器(弟弟的浏览器记录被姐姐看到,神评:此弟不宜久留)

弟弟的浏览器记录被姐姐看到,神评:此弟不宜久留

近日,一个姐姐偶然翻开了弟弟的浏览器记录,看到弟弟的搜索记录后,觉得好气又好笑,立刻截图下来发到网上。没想到引来了很多网友的评论,其中一个评论堪称神评:此弟不宜久留。这个评论点赞非常多,看来这个弟弟估计少不了挨一顿打了。

我们来看看这个弟弟使用浏览器搜索了什么,让姐姐这么生气?

1、如果姐姐很凶应该怎么办(猜测这个姐姐应该对弟弟比较凶,这家伙找对策呢!)

2、怎么可以制服姐姐(看来是想反抗了)

3、打人打哪里最痛(估计是被姐姐打多了,想还手打姐姐,先研究一下打哪里最痛?)

3、吃什么放屁最臭,臭死姐姐的那种(这是为了臭死姐姐,要豁出去了?)

4、姐姐最怕什么(哎呀,厉害了,先研究姐姐怕什么,好对症下药,一鼓作气击败姐姐?)

看了这些浏览器搜索记录,怪不得姐姐会生气要发朋友圈呢,真的太搞笑了。有人说,这个弟弟也太不小心了,这么重要的搜索记录竟然没有清空删除,这可是隐私啊。那么,为了防止浏览器搜索记录、历史记录被别人看到,我们使用浏览器的时候应该怎么做呢?

保护浏览器隐私安全这样做

1、在手机上可以打开浏览器的无痕模式,在这个模式下,不管我们搜索什么关键词、浏览什么网页,都不会留下记录。无痕模式主要的目的就是为了保护好用户的隐私。

2、如果没有开启无痕模式,但是已经搜索一些不想让别人看到的内容,比如像上图这些不想让姐姐看到的内容,就可以找到【历史记录】,然后对这些记录进行删除。

3、给浏览器设置密码锁屏,这个密码只有自己知道,如果别人想打开浏览器,就要输入密码,不知道锁屏密码是进不去的。也就是说除了自己谁也打不开浏览器,别人就无法知道自己用浏览器搜索了什么内容,这也是保护好隐私的一种方式。

目前,支持密码锁屏的浏览器有多御浏览器,这个浏览器在保护隐私安全方面做得非常不错。它拥有无痕模式,开启后用户不用清除浏览记录和各种痕迹,浏览器也不会存储用户的浏览数据,包括Cookie、浏览器的临时文件、历史记录以及其他数据。

此外,多御浏览器还有删除历史记录功能,如果忘记开启无痕模式,但是已经搜索了一些你在研究,但是还没有想好要跟别人分享的内容,那么使用这个删除历史记录功能,可以清空这些记录。

最后,多御浏览器和其他浏览器不一样,它增加了密码锁屏功能,为用户隐私安全筑起第一道保护墙。

我们使用浏览器搜索内容、浏览网页的时候,一定要注意保护好自己的隐私安全。无痕模式、密码锁屏这样的功能,能够帮助我们更好地保护自己的隐私安全。不想浏览器记录被别人看到,引起不必要的尴尬和麻烦,那就赶紧把浏览器的这些功能用起来吧。

在Auto CAD下如何能提高绘图速度,下面这些是不得不知的技巧

在Auto CAD下如何能提高绘图速度

使用计算机绘图就是为了提高绘图速度和效率,然而 CAD的绘图命令达几百条之多,要将这些绘图命令全部掌握,不但烦琐,而且没有必要。但是,在这几百条绘图命令里,活学活用,会给我们的绘图工作带来意想不到的效果。实践证明使用Auto CAD加快绘图速度,提高工作效率的方法有使用样板图、用好当前点、块与属性,巧妙使用命令的组合以及灵活使用层和Ucs。本文介绍如何使用Auto CAD加快绘图,提高工作效率,让你充分体验到Auto CAD的魅力所在。

样板图

样板图是绘制一幅新图形时,用来给这个新图形建立一个作图环境的一个样本。其中包括层,每一层的线形,颜色,标注时字的大小,字的纵横比,箭头大小,绘图范围等一些限制设置。样板图中甚至还可以包含一些通用的图形,如图框,标题栏,粗糙度符号等,凡是公用的参数,图形等都可以放在样板图中。这样便于各个使用该样板图的图形共享。

做一个合适的样板图上作图,可以带来以下好处:

1.不需重复设置。各种图形的共同参数是很多的,如箭头大小、字的高低、图层颜色等。如果不使用样板图,每一个图形我们都要进行设置。如果使用样板图我们只需要设置一次,这样我们节省大量的作图时间。并且可以实现作图的标准化。

2.样板图本身是一个利用率极高的图库。你可以将经常使用的符号,例如:粗糙度符号、设计基准符号、 螺钉螺帽符号等做成块放在样板图里单独存储,在需要时可以非常方便地调出,插入到所需要的位置即可。还可以将本厂中的常用的或系列化的零件图放到样板图中,便于今后调用。因此绘图时间越长,样板图中保留的图块越多,今后绘图的速度就会越快。

3.在样板图中设定有层,并规定每一层的使用范围。这样就可以保证每一个使用该样板图的线型和颜色一致,能够保证使用大型绘图机时多张图纸同时输出,保证所有图形图幅大小,字体的大小等一致,并可以节约图纸,便于图纸管理等。

命令组合应用

在长期使用AUTOCAD的过程中,对于各种命令熟练使用的基础上,可以发现,有几组命令组合使用可以方便地减少命令转换的麻烦。

Offset与Trim命令的组合使用。在绘图过程中,可以毫不夸张地说,如果你能够熟练掌握这两个命令的组合使用,那么,一般绘图你就可以顺利完成。在使用的过程中,首先是绘制出设计基准,随后就使用Offset命令。再用Trim剪裁。这样你可以省去大量的坐标输入。先不要管画长了或是画短一类的事,你第一步工作是根据图纸的需要Offset上应该有的图素,生成基本图样。第二步工作才是用Trim命令剪切掉所有多余的线或弧。这autocad当作是单一的对象来处理。下面来看块的重要功能:

1.建立图库。利用块的性质,可以将当前图形中的一组对象,或者以前某个独立的图形定义一个块,也可以将常用的图素作成块,存放在样板图里。这样,实际上是建立了用户自己的“零件”库。绘制其它的图形时可以直接调用。甚至我们可以使用块将一些较小的细节图做块,按照“拼积木“的方式构成一张整图。经常用到的图形可以一次完成而不必重复制作。这大大地加快了绘图速度。

2.节省内存及磁盘空间。块的是单独存放的,数据存储结构中只单纯地保存块的存储地址、放大参数、设计基准、比例因子等,而没有各个图元的点、半径等信息,这些信息在块的插入后将根据图形要求来确定。也就是说,块的存储相对图形存储来说,节省了许多空间。因此,块的定义越复杂,引用的次数越多,则越能节省空间。

3.便于修改图形。在一个图中可能要插入很多相同的块,在设计过程中有可能要修改某个部件,代表这个部件的图形块就需要修改。如果不做块修改工作量会很大。但是如果将部件定义为块,就可以简单地对块进行修改,重新定义一下,那么相应的图形上的所有引用该块的内容也随之自动更新。

4.便于加入属性。属性是块中的文字信息,属性依附于块,可以随块的变化改变比例和位置。这些文字信息有些是可见的,有些是不可见的。块可以很好地管理它们。属性不仅可以作为图形的可见部分。而且它还可以从一张图纸中提取出来,并传输给数据库,生成材料表、外购件表或进行成本核算的原始数据等。

5.在绘图过程中充分合理的利用块将极大地提高绘图速度。 在做块时,建议尽可能做1X1X1的图块,也就是说该图的长、宽、高都做成1,这样能够扩大的块的使用范围。例如,做块时我们做一个1X1的矩形块,插入时根据实际需要,只需给出相应的X、Y的比例系数我们可以得到任何尺寸的长方形或矩形。

层的活用

应用层技术可以很方便地把图上的实体分门别类。一层图上(或一个层集合)里可以含有与图的某一特别方面相关的实体,这样就可以对所有的这些实体的可见性、颜色和线型进行全面的控制。正确利用和把握层的性质和功能将加快你的绘图速度。

层冻结:使用LAYER命令的“Freeze”选择项,可指示Autocad在重新生成图形时不显示指定层上的实体。由于冻结层上的实体不予显示,即不绘出,那么系统可以节省许多的时间。因此对复杂的图形可以冻结没有直接关系的层,来加快Autocad的ZOOM PAN 、REGEN 等命令和选择实体的速度。

如果是频繁地在层之间进行关闭的情况下。在每层上只做一些微小的编辑,则应该使用”Layer off”来关闭那些妨碍视觉的实体所在的层;而另一方面,如果大多数编辑工作都在一层(或一个层集)上做,不需要看到其他层上的实体,则应该冻结其他层。例如,经常使用zoom pan 或其他引起图形重新生成的操作,这种方法将加快编辑速度。如果将装配图中的零件,一层一个零件,将所有层打开就是装配图,将某一层打开就是一个零件图。这样只要绘制好装配图,零件图就自然得到了,且保证了装配图和零件图的尺寸统一。

在画三视图时,可以利用层的性质,合理利用主视图中已经确定的尺寸,来生成俯视图草图。具体过程如下:在绘制完主视图时,将主视图锁住,就在主视图上绘制俯视图,这样就可以利用已经存在的图形的长度尺寸数据,直接生成俯视图,绘制完成后移动该图到俯视图位置即可,由于主视图已经锁住,主视图不会随着移动。在这个过程中,不需要考虑线形和颜色,而是在完成后用钳夹功能改变图元的属性。

AutoCAD实用经典技巧80条---不可错过!

1.【CTrl N无效时之解决办法】

众所周知CTRL N是新建命令

但有时候CTRL N则出现选择面板

这时只需到OP选项里调下设置

操作:

OP(选项)------系统-------右侧有一个启动(A显示启动对话框B不显示启动对话框)

选择A则新建命令有效,反则无效

2.【Ctrl键无效之解决办法】

有时我们会碰到这样的问题

比如CTRL C(复制),,CTRL V(粘贴)CTRL A(全选)等一系列和CTRL键有关的命令都会失效

这时你只需到OP选项里调一下

操作:OP(选项)-----用户系统配置------WINDOWS标准加速键(打上勾)

WINDOWS 标准加速键打上勾后,和CTRL键有关的命令则有效,反之失灵

3.【填充无效时之解决办法】

有的时候填充时会填充不出来

除了系统变量需要考虑外

还需要去OP选项里检查一下

OP---------显示-----------应用实体填充(打上勾)

4.【加选无效时之解决办法】

AD正确的设置应该是可以连续选择多个物体

但有的时候,连续选择物体会失效,只能选择最后一次所选中的物体

这时可以如下解决

进入OP(选项)---------选择-----------SHIFT键添加到选择集(把勾去掉)

用SHIFT键添加到选择集“去掉勾”后则加选有效

反之加选无效

★命令:PICKADD 值 :0/1

5.【CAD命令三键还原】

如果CAD里的系统变量被人无意更改

或一些参数被人有意调整了怎么办

这时不需重装,也不需要一个一个的改

操作:

OP选项-----配置-----重置

即可恢复

但恢复后,有些选项还需要一些调整,例如十字光标的大小等~

5.【鼠标中键不好用怎么办呀】

正常情况下

CAD的滚轮可用来放大和缩小,,,还有就是平移(按住)

但有的时候,按住滚轮时,不是平移,而是出下一个菜单,很烦人

这时只需调下系统变量mbuttonpan即可

初始值: 1

0 支持菜单 (.mnu) 文件定义的动作

1 当按住并拖动按钮或滑轮时,支持平移操

6.【命令行中的模型,布局不见是的解决办法】

op----选项------显示---------显示布局和模型选项卡(打上勾即可)

7.【CAD技巧】

众所周知,确定键有两个,一个是“回车”另一个则是“空格”

但现在就让我们用右键来代替他们吧

OP选项-----用户系统配置-------绘图区域中使用快捷菜单(打上勾)自定义右键

单击进去------把所有的重复上一个命令打上勾

8.【图形里的圆不圆了咋办呀】

命令:RE~即可

9.【图形窗口中显示滚动条】

也许有人还用无滚轮的鼠标,那么这时滚动条也许还有点作用(如果平移不太会用)

op----显示------图形窗口中显示滚动条即可

10.【保存的格式】

OP----打开和保存----另存为2000格式

为什么要存2000格式呢

因为CAD版本只向下兼容

这样用2002 2004 2006都可以打开了

11.【如果想下次打印的线型和这次的一样怎么办】

换言之.【如何保存打印列表】

op选项-----打印------添加打印列表

但在这之前,你得自己建立一个属于自己的例表

12.【如果在标题栏显示路径不全怎么办】

op选项---------打开和保存----------在标题栏中显示完整路径(勾选)即可

13.【目标捕捉(OSNAP)有用吗】?

答:用处很大。尤其绘制精度要求较高的机械图样时,目标捕捉是精确定点的最佳工具。Autodesk公司对此也是非常重视,每次版本

14.【为什么绘制的剖面线或尺寸标注线不是连续线型】?

答:Autocad绘制的剖面线、尺寸标注都可以具有线型属性。如果当前的线型不是连续线型,那么绘制的剖面线和尺寸标注就不会是

连续线。

15.【如何减少文件大小】?

答:在图形完稿后,执行清理(PURGE)命令,清理掉多余的数据,如无用的块、没有实体的图层,未用的线型、字体、尺寸样式等,可以有效减少文件大小。一般彻底清理需要PURGE二到三次。

-purge,前面加个减号,清理的会更彻底些,哈,我还没试呢,你先试下

★补充:

方法二:用WBLOCK命令。

把需要传送的图形用WBLOCK命令以块的方式产生新的图形文件,把新生成的图形文件作为传送或存档用。目前为止,这是笔者发现的最有效的“减肥”方法。现简明示例如下:

命令: wblock

(在弹出的对话框中输入文件名及文件存放位置,由于非常简单,故在此省略对话框图形)

定义的名字: (直接回车)

给一个基点:(任选一点)

选择物体: (选择完毕后回车)

这样就在你指定的文件夹中生成了一个新的图形文件。

笔者对自己的DWG文件用两种方法精简并对比效果发现,精简后的文件大小相差几乎在5K以内!(我也是刚看完别人的贴,哈哈,我还没试呢,就急着发上来,我们一起试试去,哦耶~)

16.【如何将自动保存的图形复原】?

答:AutoCAD将自动保存的图形存放到AUTO.SV$或AUTO?.SV$文件中,找到该文件将其改名为图形文件即可在AutoCAD中打开。

一般该文件存放在WINDOWS的临时目录,如C:WINDOWSTEMP。

补充:

默认状态下*.sv$文件的存放位置:win9x:一般该文件存放在WINDOWS的临时目录,如C:WINDOWSTEMP;winnt/2000/xp:

开始菜单->运行,输入%temp%,(有可能%tmp%也行),确定

17.【为什么不能显示汉字?或输入的汉字变成了问号】?

答:原因可能是:

1. 对应的字型没有使用汉字字体,如HZTXT.SHX等;

2. 当前系统中没有汉字字体形文件;应将所用到的形文件复制到AutoCAD的字体目录中(一般为...FONTS);

3. 对于某些符号,如希腊字母等,同样必须使用对应的字体形文件,否则会显示成?号。

如果找不到错误的字体是什么,或者你眼神不太好,性子有点急,那么你从新设置正确字体及大小,,从新写一个,然后用小刷子点

新输入的字体去刷错误的字体

注:(系统是有一些自带的字体

但有的时候由于错误操作,或等等一些外界因素而导致汉字字体丢失

这时你去别人的电脑中考一些字体过来就OK了 )

18.【为什么输入的文字高度无法改变】?

答:使用的字型的高度值不为0时,用DTEXT命令书写文本时都不提示输入高度,这样写出来的文本高度是不变的,包括使用该字型进行的尺寸标注。

19.【为什么有些图形能显示,却打印不出来】?

答:如果图形绘制在AutoCAD自动产生的图层(DEFPOINTS、ASHADE等)上,就会出现这种情况。应避免在这些层

20.【DWG文件破坏了咋办呀】

答:文件---绘图实用程序---修复.选中你要修复的文件.

有人也会用recover

21【如果你想修改块咋办呀】

看好了修改块命令:REFEDIT,按提示,修改好后用命令:REFCLOSE,确定保存,你原先的按改后也随之保存

22【简说两种打印方法】

打印无外乎有两种

一种是模型空间打印

另一种则是布局空间打印

3.PS命令切换到框外

Z空格E空格,最大化,自己感觉一下图形是否合适

如不合适在进行调整

4.接下来的操作都一样

注:你得把所有的图都画在一个模型空间里

23.【画矩形或圆时没有了外面的虚框咋办啊】

答:系统变量dragmode ON勾选即可解决

24【画完椭圆之后,椭圆是以多义线显示咋办啊】

椭圆命令生成的椭圆是以多义线还是以椭圆为实体的是由系统变量PELLIPSE决定,当其为1时,生成的椭圆是PLINE。

为0时,显示的是实体

25【镜像过来的的字体保持不旋转咋办啊】

mirrtext值为0时,可保持镜像过来的字体不旋转

为1时,进行旋转

26.【平方怎么打出来呀】

这个问题看似简单吧,不过好像有好多人不知道

唉,以前别人都发过贴子咧,可你看不到

就在这里在说一下吧

1T文字命令,输入数字35 2

在2前面输入SHIFT 6,然后按B/A 键,此方法为下标

在2后面输入SHIFT 6,然后按B/A 键,此方法为上标(即平方)

27:【特殊符号的输入】

我们知道表示直径的“Ф”、表示地平面的“±”、标注度符号“°”都可以用控制码%%C、%%P、%%D来输入

可是在CAD里咋输入啊

1.T文字命令,拖出一个文本框框(不要告诉我你不会脱呀)

2.在对话框中右键-------符号------会出现一些选项

28:【打印出来的字体是空心的咋办啊】

唉呀呀,是空心的可真是麻烦

但似乎问题并不难解决哟

1.在命令行输入TEXTFILL命令

值为0则字体为空心。值为1则字体为实心的。

行了,解决

29【关掉这个层后,却还能看到这个层的某些物体的原因】

这个问题我在8月份回答过了,可由于时间久,有的人不曾看到

在这里复制一下

下面我就在花点时间,来解释一下我们所说的图层关闭为何还显示的问题

举个例子,“直线”~

操作步骤如下:

1.画两组两条直线(共四条)

2.左边这组直线为CAD默认颜色(A)

右边这组直线为自定义颜色(B),红,黄,蓝,任何颜色均可(需要说明的是,为此组线条建立一个新层)

3.分别为两组线条写入块(W)命令

注意:虽然都成为块,但A组线条是无图层的块,而B组线条是带图层定义的块

4.定义块结后,记住所保存的位置,以便插入

5.分别将两组图块插入到图纸界面

6.建立两个新层,然后将两组线条分别放到两个新建层当中

7.分别进行块冻结

8.你会发现,A项线条可以被冻结

B项线条不可以被冻结

解答:转徐佑然的贴

问题的关键在于你所用的块(可能是别人的),它本身是在不同的图层上作出来的。〔这本身就挺害人的!〕因此当你在对某一图层作‘关闭’、‘冻结’等操作时图形上似乎显示出命令无效。解决问题的办法是:要自己找到这个图块的原始文件,打开该图,并将其改为都在同一图层上,再将原始图块文件另改名存放。重新打开你的图形,插入你新改好的图块,放在某一空白处,然后就用这个新图块,全面替换原图块。这时候你才可以用‘清理全图’(Purge)命令。这样一来就可以一劳永逸地解决了。

如果无法找到原文件,则在此另教你一招:将你的图中被你怀疑的块,拷贝一个,把它放在图中某一空白处。我假定你叫他作‘新样’然后就将这个‘新样’中所有实体全部改为某一图层,再把这个‘新样’作为块,另外命名,再用‘新样’图块作一次全局替换。这样就保证你的图中没有了旧的图块,这时你才可以用 Purge 命令。

即:做块的时候只能在一个层上做(最好是0层),可以用不同的颜色,别用不同的层!其实很多人没注意到这个问题,我在此告诉你,希望引起注意。

不要嫌我麻烦,如你所知,你所碰到的这个问题本身就是比较麻烦的 。“吃别人嚼过的馍没有味道”,此其义也。

30.【消除点标记】

在AutoCAD中有时有交叉点标记会在鼠标点击处产生,用BLIPMODE命令,并在提示行下输入OFF即可消除它。

31.【错误文件的恢复】

有时我们辛苦几天绘制的CAD图会因为停电或其它原因突然打不开了,而且没有备份文件,这时我们可以试试下面的方法恢复:

1.在“文件(File)”菜单中选择“绘图实用程序/修复(Drawing Utilities/Recover)”项,在弹出的“选择文件(Select File)”对话框

中选择要恢复的文件后确认,系统开始执行恢复文件操作;

2.如果用“Recover”命令不能修复文件,则可以新建一个图形文件,然后把旧图用图块的形式插入在新图形中,也能解决问题;

3.如果有问题的图形文件是R14或R2000格式,也可在R2002或R2004下试一试上面的恢复操作;

4.在AutoCAD2002或2004中打开后另存为2002或2004的文件,然后重新打开文件,并选择采用局部打开方式,打开几个图层另存为一个文件,再

打开剩下的图层,再另存为第二个文件,最后把两个文件复制重合在一起就会复原图了;

5.如果打开CAD图某一百数(如30%)时就停住没反映了,这说明图纸不一定被损坏,把电脑内的非AutoCAD提供的矢量字体文件删除(移到别的地

32.【坐三维坐标的显示】

在三维视图中用动态观察器变动了坐标显示的方向后,可以在命令行键入“-view”命令,然后命令行显示:-VIEW 输入选项 [?/正交(O)/删除

(D)/恢复(R)/保存(S)/UCS(U)/窗口(W)]:

键入O然后再回车,就可以回到那种标准的显示模式了。

33.【恢复失效的特性匹配命令】

有时我们在AutoCAD R14的使用过程中,其他命令都很正常,但特性匹配却不能用了,重装软件一时又找不到它的安装程序,下面介绍的方法就

方法1.在命令行键入menu命令,在弹出的"选择菜单文件"对话框中,选择acad.mnu菜单文件,重新加载菜单;

方法2.在命令行键入appload命令,在弹出的"加载AutoLISP ADS 和 ARX 文件" 对话框中,选择并加载AutoCAD R14目录下的match.arx文件。

其实,对于其它命令失效的问题,也可以灵活运用以上方法。

★:暴力破解法:找到AutoCAD目录下的match.arx或者acmatch.arx文件,直接用鼠标拖放到ACAD绘图区。其实,对于其它命令失效的问题,也可以灵活运用以上方法。。。

34.【关于explode命令无效的问题】

如果在CAD使用过程中,不能炸开图块了,先试一试能否炸开别的实体(如多行文本、填充图案等),如果能,说明是你所选择的实体本身不能被炸开(也可以在命令前加上.来测试是否可以炸开图块);如果不能,可能是感染了一个基于AutoLISP语言的病毒程序acad.lsp。它的主要表现特征为打开任意一张图纸均不能炸开图块,即explode命令无效,给我们的工作带来了不少麻烦。该病毒运行时将在所有打开过CAD图纸的目录下,生成acad.lsp病毒程序,并在CAD的安装目录Support下,生成acadapp.lsp病毒程序。

下面是清除该病毒的方法:

(1)打开系统的查找“文件或文件夹”对话框;

(2)在“文件或文件夹名”数据框中输入:acad.lsp;acadapp.lsp;

(3)在“包含文字”数据框中输入:explode;

(4)在“搜索” 数据框中选择:所有硬盘驱动器;

(5)将搜索到的这两个文件全部删除后,问题就已经解决了。

注意:一定要将硬盘是的所有目录都搜索一遍,这样才能将病毒清除干净。

★补充:

那病毒文件的名字也可能叫Support acadiso.lsp

35.【如何保存图层】

如想把图层,标注,打印都设置好了保存起来~!!方便下次做图

如何操作

新建一个CAD文档,把图层,标注样式等等都设置好后另存为DWT格式(CAD的模板文件)。

在CAD安装目录下找到DWT模板文件放置的文件夹,把刚才创建的DWT文件放进去,以后使用时,新建文档时提示选择模板文件选那个就好了

或者,把那个文件取名为acad.dwt(CAD默认模板),替换默认模板,以后只要打开就可以了。

36.【如何隐藏坐标】

有的时候你会一些抓图软件捕捉CAD的图形界面

或进行一些类似的打操作

但在此过程中,你是不是为了左下角的坐标而苦恼呢

因为它的存在,而影响了你的操作

答:UCSICON 调置为OFF

即可关闭

反之ON打开

37.【交叉点标记在鼠标点击处生成了咋办呀】

答:在画图中有时有交叉点标记在鼠标点击处产生,很是烦人

用BLIPMODE命令,在提示行下输入OFF可消除它。

38.【交叉点标记在鼠标点击处生成了咋办呀】

答:在画图中有时有交叉点标记在鼠标点击处产生,很是烦人

用BLIPMODE命令,在提示行下输入OFF可消除它。

39.【标注的尾巴有0咋办呀】

举例说明:

如果你标注为100MM

但实际在图形当中标出的是100.00或100.000等等这样的情况

那么用下面这个命令

“dimzin”系统变量最好要设定为8,这时尺寸标注中的缺省值不会带几个尾零,我们直接输入此命令进行修改很是方便

40..【如果想将CAD图插入WORD咋办呀】

答:Word文档制作中,往往需要各种插图,Word绘图功能有限,特别是复杂的图形,该缺点更加明显,AutoCAD是专业绘图软件,功能强大,很适合绘制比较复杂的图形,用AutoCAD绘制好图形,然后插入Word制作复合文档是解决问题的好办法,可以用AutoCAD提供的EXPORT功能先将AutocAD图形以BMP或WMF等格式输出,然后插入Word文档,也可以先将AutoCAD图形拷贝到剪贴板,再在Word文档中粘贴。须注意的是,由于AutoCAD默认背景颜色为黑色,而Word背景颜色为白色,首先应将AutoCAD图形背景颜色改成白色。另外,AutoCAD图形插入Word文档后,往往空边过大,效果不理想。利用Word图片工具栏上的裁剪功能进行修整,空边过大问题即可解决。

41【如果想将EXCEL咋办呀】

此方法我试了,还将就吧,希望能有高人提供更方便快捷的方法

AutoCAD表格制作

AutoCAD尽管有强大的图形功能,但表格处理功能相对较弱,而在实际工作中,往往需要在AutoCAD中制作各种表格,如工程数量表等,如何高效制作表格,是一个很实用的问题。

在AutoCAD环境下用手工画线方法绘制表格,然后,再在表格中填写文字,不但效率低下,而且,很难精确控制文字的书写位置,文字排版也很成问题。尽管AutoCAD支持对象链接与嵌入,可以插入Word或Excel表格,但是一方面修改起来不是很方便,一点小小的修改就得进入Word或Excel,修改完成后,又得退回到AutoCAD,另一方面,一些特殊符号如一级钢筋符号以及二级钢筋符号等,在Word或Excel中很难输入,那么有没有两全其美的方法呢,经过探索,可以这样较好解决:先在Excel中制完表格,复制到剪贴板,然后再在AutoCAD环境下选择编辑菜单中的选择性粘巾,选择作为。。。,确定以后,表格即转化成AutoCAD实体,用explode炸开,即可以编辑其中的线条及方字,非常方便

42【提高绘图效率的途径和技法】

有的人往往会问这样的问题,如何提高画图的速度

除了一些命令我们需要掌握之外]

还要遵循一定的作图原则,下面我转个贴~

为了提高作图速度,用户最好遵循如下的作图原则:

1.作图步骤:设置图幅→设置单位及精度→建立若干图层→设置对象样式→开始绘图。

2.绘图始终使用1:1比例。为改变图样的大小,可在打印时于图纸空间内设置不同的打印比例。

3.为不同类型的图元对象设置不同的图层、颜色及线宽,而图元对象的颜色、线型及线宽都应由图层控制(BYLAYER)。

4.需精确绘图时,可使用栅格捕捉功能,并将栅格捕捉间距设为适当的数值。

5.不要将图框和图形绘在同一幅图中,应在布局(LAYOUT)中将图框按块插入,然后打印出图。

6.对于有名对象,如视图、图层、图块、线型、文字样式、打印样式等,命名时不仅要简明,而且要遵循一定的规律,以便于查找和使用。

7.将一些常用设置,如图层、标注样式、文字样式、栅格捕捉等内容设置在一图形模板文件中(即另存为*.DWF文件),以后绘制新图时,可在创建新图形向导中单击"使用模板"来打开它,并开始绘图。

二、选用合适的命令

用户能够驾驭AutoCAD,是通过向它发出一系列的命令实现的。AutoCAD接到命令后,会立即执行该命令并完成其相应的功能。在具体操作过程中,尽管可有多种途径能够达到同样的目的,但如果命令选用得当,则会明显减少操作步骤,提高绘图效率。下面仅列举了几个较典型的案例。

1.生成直线或线段

(1)在AutoCAD中,使用LINE、XLINE、RAY、PLINE、MLINE命令均可生成直线或线段,但唯有LINE命令使用的频率最高,也最为灵活。

(2)为保证物体三视图之间"长对正、宽相等、高平齐"的对应关系,应选用XLINE和RAY命令绘出若干条辅助线,然后再用TRIM剪截掉多余的部分。

(3)欲快速生成一条封闭的填充边界,或想构造一个面域,则应选用PLINE命令。用PLINE生成的线段可用PEDIT命令进行编辑。

(4)当一次生成多条彼此平行的线段,且各条线段可能使用不同的颜色和线型时,可选择MLINE命令。

2.注释文本

(1)在使用文本注释时,如果注释中的文字具有同样的格式,注释又很短,则选用TEXT(DTEXT)命令。

(2)当需要书写大段文字,且段落中的文字可能具有不同格式,如字体、字高、颜色、专用符号、分子式等,则应使用MTEXT命令。

3.复制图形或特性

(1)在同一图形文件中,若将图形只复制一次,则应选用COPY命令。

(2)在同一图形文件中,将某图形随意复制多次,则应选用COPY命令的MULTIPLE(重复)选项;或者,使用COPYCLIP(普通复制)或COPYBASE(指定基点后复制)命令将需要的图形复制到剪贴板,然后再使用PASTECLIP(普通粘贴)或PASTEBLOCK(以块的形式粘帖)命令粘帖到多处指定的位置。

(3)在同一图形文件中,如果复制后的图形按一定规律排列,如形成若干行若干列,或者沿某圆周(圆弧)均匀分布,则应选用ARRAY命令。

(4)在同一图形文件中,欲生成多条彼此平行、间隔相等或不等的线条,或者生成一系列同心椭圆(弧)、圆(弧)等,则应选用OFFSET命令。

(5)在同一图形文件中,如果需要复制的数量相当大,为了减少文件的大小,或便于日后统一修改,则应把指定的图形用BLOCK命令定义为块,再选用INSERT或MINSERT命令将块插入即可。

(6)在多个图形文档之间复制图形,可采用两种办法。其一,使用命令操作。先在打开的源文件中使用COPYCLIP或COPYBASE命令将图形复制到剪贴板中,然后在打开的目的文件中用PASTECLIP、PASTEBLOCK或PASTEORIG三者之一将图形复制到指定位置。这与在快捷菜单中选择相应的选项是等效的。其二,用鼠标直接拖拽被选图形。注意:在同一图形文件中拖拽只能是移动图形,而在两个图形文档之间拖拽才是复制图形。拖拽时,鼠标指针一定要指在选定图形的图线上而不是指在图线的夹点上。同时还要注意的是,用左键拖拽与用右键拖拽是有区别的。用左键是直接进行拖拽,而用右键拖拽时会弹出一快捷菜单,依据菜单提供的选项选择不同方式进行复制。

(7)在多个图形文档之间复制图形特性,应选用MATCHPROP命令(需与PAINTPROP命令匹配)。

三、使用快车工具(EXPRESS TOOLS)

所谓快车工具,实际上是为用户设计并随AutoCAD 2000一起免费提供的实用工具库。该库中的大部分工具来自AutoCAD R14的优惠(Bonus)工具,其余的则已被舍弃或改进,同时又增加了一些新工具。快车工具在图层管理、对象选择、尺寸标注样式的输入/输出、图形的编辑修改等众多方面对AutoCAD进行了功能扩展,而且能非常容易地结合在AutoCAD 2000的菜单和工具条中,使用起来方便快捷,故能明显提高你绘图的工作效率。

安装快车工具的方法,是在安装AutoCAD 2000时选择"完全"安装,或者选择带有"快车工具"选项的"用户"安装。假如当初不是这样,则应以"增加"方式重新安装AutoCAD 2000,并选择需添加的"快车工具"。

缺省时,AutoCAD 2000在启动时不把快车工具装入内存,以缩短其启动时间。当你第一次使用快车工具时,工具库会自动装入。不过你也可以在开始时用EXPRESS TOOLS命令强行装入。在已正确安装了快车工具的前提下,如果屏幕上未出现其"快车"菜单,你可以使用EXPRESS MENU命令将菜单显示出来。

下面则是在屏幕上显示"快车"工具条的方法步骤:

(1)在下拉式菜单中,选择视图>工具条...,则出现"工具条"对话框。

(2)在名为"菜单组"的下拉组合框中,选择"快车"。

(3)在名为"工具条"的组合框中点选所需要的选项。凡冠以"X"的选项,将在屏幕上显示其工具条。

(4)单击"关闭"按钮,退出对话框。

四、打开或关闭一些可视要素

图形的复杂程度影响到AutoCAD执行命令和刷新屏幕的速度。打开或关闭一些可视要素(如填充、宽线、文本、标示点、加亮选择等)能够增强AutoCAD的性能。

(1)如果把FILL设为OFF,则关闭实体填充模式,新画的迹线、具有宽度的多义线、填充多边形等,只会显示一个轮廓,它们在打印时不被输出。而填充模式对已有图形的影响效果,可使用REGEN命令显示出来。另外,系统变量FILLMODE除控制填充模式之外,还控制着所有阴影线的显示与否。

(2)关闭宽线显示。宽线增加了线条的宽度。宽线在打印时按实际值输出,但在模型空间中是按象素比例显示的。在使用AutoCAD绘图时,可通过状态条上的LWT按钮,或者从"格式"菜单中选择"宽线"选项,用"宽线设置"对话框将宽线显示关闭,以优化其显示性能。系统变量LWDISPLAY也控制着当前图形中的宽线显示。

(3)如果把QTEXT设为ON,则打开快显文本模式。这样,在图样中新添加的文本会被隐匿起来只显示一个边框,打印输出时也是如此。该设置对已有文本的影响效果,可使用REGEN命令进行显示。另外,系统变量QTEXTMODE也控制着文本是否显示。这在图样中的文本较多时,对系统性能的影响是很明显的。

(4)禁止显示标示点。所谓标示点,是在选择图形对象或定位一点时出现在AutoCAD绘图区内的一些临时标记。它们能作为参考点,能用REDRAW或REGEN命令清除,但打印输出时并不出现在图纸上。欲禁止标示点显示,可将BLIPMODE设为OFF,以增强AutoCAD的性能。

(5)取消加亮选择。在缺省情况下,AutoCAD使用"加亮"来表示当前正被选择的图形。然而,将系统变量HIGHLIGHT的值从1改为0,取消加亮选择时,也可增强AutoCAD的性能。

(6)顺便一提的是,将系统变量REGENMODE的值设为0,或者将REGENAUTO设为OFF,可以节省图形自动重新生成的时间。

五、及时清理图形

在一个图形文件中可能存在着一些没有使用的图层、图块、文本样式、尺寸标注样式、线型等无用对象。这些无用对象不仅增大文件的尺寸,而且能降低AutoCAD的性能。用户应及时使用PURGE命令进行清理。

六、使用命令别名和加速键

AutoCAD为一些比较常用的命令或菜单项定义了别名和加速键。使用命令别名和加速键可以明显节省访问命令的时间。命令别名是在acad.pgp文件中定义的。用任何文本编辑器打开并编辑该文件,就可以添加、删除或更改命令别名。用这种方法定义的别名,当重新进入AutoCAD时即可使用。在最新的软件版本中,用户不必退出AutoCAD就可以利用快车工具重新定义命令别名,但如果使用这种方法,则需要在第一次使用新定义的别名之前,执行REINIT命令以对软件重新初始化。

命令加速键是在acad.mnu文件中定义的。欲添加、删除或更改命令加速键,用户只能用文本编辑器对acad.mnu文件进行编辑修改。修改过的*.mnu文件必须用MENU命令加载并编译后,新定义的命令加速键方可使用。

CAD的图设密码:autocad2004及以上均可

步骤一:将要加密的文件另存,在出现的保存对话框中选右上角的Tools然后选其下的security options...

步骤二:在打开的对话框中的Password...下的输入框中输入你的密码。

步骤三:在步骤二确定后,会出现密码确认对话框,在此再次输入你刚才输入的密码,两次输入的要完全一致。确定之后你的文件就加密了。再次打开时就要输入密码了。忘了密码文件就永远也打不开了,所以加密之前最好先备份文件。

43.【不出现对话框,只是显示路径怎么办呀】

答:按CTRL O或者CTRL S的时候,不出现对话框,只是显示路径怎么办呀

确实很讨厌

命令:FILEDIA 设为1即可

44.【打印的时候有印戳怎么办呀】

答:打开打印机的对话框中

右侧有一个打印戳记

把它前面的对勾去掉就可以了

45.【CAD2002以上版本在哪里修改快捷键?】

如果你正在使用的系统是Win2000或者WInXP的话,请到这个位置去查找PGP文件

X(你的系统安装盘):Documents and Settings(你的用户名)Application DataAutodeskAutoCAD 2006(或者是2002/2004/2005/2006)R16.2(CAD内部版本号,可能是R15.1/R16.1等)chs(中文版,英文版好像是ENS不记得了)

Supportacad.pgp

46.【添加程序中大面积的空白怎么解决呀 】.

转风中尘埃~~

解决办法是修改注册表

运行regedit.exe

到HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall

查找"AutoCAD 2002"

应该是在{5783F2D7-0101-0409-0000-0060B0CE6BBA}里,(也可能不能完全对应这些数值)

然后双击右边的DisplayIcon项,把最后的数字改为0(原来是-1)。

47.【ma的小问题】

有的时候用MA这个小刷子刷物体的时候

不能刷其线型,或颜色等

答:MA--选中源对像--S设置---这里把想刷的打上勾即可

48.【文字乱码小办法】

命令:FONTALT [用于字体的更换】

解决CAD字体乱码现象

工作需要用cad读取大量的各大设计院的cad图纸,大家可以把以下这段添加到cad目录下的acad.fmp文件中,解决在读取cad无这种字体下造成的乱码现象,如遇到没有添加的,大家可以自行添加,希望能给大家一点帮助.

hztxtb;hztxt.shx

hztxto;hztxt.shx

hzdx;hztxt.shx

hztxt1;hztxt.shx

hzfso;hztxt.shx

hzxy;hztxt.shx

fs64f;hztxt.shx

hzfs;hztxt.shx

st64f;hztxt.shx

kttch;hztxt.shx

khtch;hztxt.shx

hzxk;hztxt.shx

st64s;hztxt.shx

ctxt;hztxt.shx

hzpmk;hztxt.shx

china;hztxt.shx

hztx;hztxt.shx

fs;hztxt.shx

ht64s;hztxt.shx

kt64f;hztxt.shx

eesltype;hztxt.shx

hzfs0;hztxt.shx

SHX字体小解

常用的SHX字体:

txt 标准的 AutoCAD 文字字体。这种字体可以通过很少的矢量来描述,它是一种简单的字体,因此绘制起来速度很快,txt字体文件为txt.shx。

monotxt 等宽的 txt 字体。在这种字体中,除了分配给每个字符的空间大小相同(等宽)以外,其他所有的特征都与 txt

字体相同。因此,这种字体尤其适合于书写明细表或在表格中需要垂直书写文字的场合。

romans 这种字体是由许多短线段绘制的 roman 字体的简体(单笔划绘制,没有衬线)。该字体可以产生比 txt 字体看上去更为单薄的字符。

romand 这种字体与 romans 字体相似,但它是使用双笔划定义的。该字体能产生更粗、颜色更深的字符,特别适用于在高分辨率的打印机(如激光打印机)上使用。

romanc 这种字体是 roman 字体的繁体(双笔划,有衬线)。

romant 这种字体是与 romanc 字体类似的三笔划的 roman 字体(三笔划,有衬线)。

italicc 这种字体是 italic 字体的繁体(双笔划,有衬线)。

italict 这种字体是三笔划的 italic 字体(三笔划,有衬线)。

scripts 这种字体是 script 字体的简体(单笔划)。

scriptc 这种字体是 script 字体的繁体(双笔划)。

greeks 这种字体是 Greek 字体的简体(单笔划,无衬线)。

greekc 这种字体是 Greek 字体的繁体(双笔划,有衬线)。

gothice 哥特式英文字体。

gothicg 哥特式德文字体。

gothici 哥特式意大利文字体。

syastro 天体学符号字体。

symap 地图学符号字体。

symath 数学符号字体。

symeteo 气象学符号字体。

Symusic 音乐符号字体。

常用的大字体(如图七所示) :

hztxt 单笔划小仿宋体。

hzfs 单笔划大仿宋体。

china 双笔划宋体。

49.【解决AutoCAD在XP操作系统下打印时致命错误的方法】

近来,有些会员反映AutoCAD 2002 版或 2004版本在点击打印时出现致命错误并退出AutoCAD的现象。

经过我的研究,这跟AutoCAD 2002及以上版本使用打印戳记有关。在2000版时,增补的打印戳记功能就有很多的BUG,这个功能在2002版本后就直接做为AutoCAD功能。该功能在98操作系统中是完全没有问题的,但在有些XP系统中就会出错。所以在XP系统中最好不要去开启该功能。

如果你已经不幸开启了该功能而使AutoCAD在打印时出现致命错误,解决的方法只能是这样:

在AutoCAD的根目录下找到AcPltStamp.arx文件,把它改为其它名称或删除掉。

50.【ACAD.PGP文件修改 】

大家都知道LINE命令在COMMAND输入时可简化为L,为何会如此呢?

因为在AutoCAD中有一个加密文件ACAD.PGP中定义了LINE命令的简写,先找出这个文件打开它。

找到"These examples include most frequently used commands."的提示语,在其下的几行文字就可对简写的定义,记住它的左列是简写命令的文字实现你可以根据你的需要进行修改(当然是你比较熟悉的英文缩写喽),

它的右列是默认的命令请不要随意修改。相信这能为你提高一定的速度。

51.【对图形夹点操作 】

通过控制夹点便能进行一些基本的编辑操作。如:COPY,MOVE,改变图形所在的图层等基本操作。

而且不同的图形,还有其特殊的操作。如:直线有延伸操作。

53.【关于鼠标的一点小技巧】:

***AUX2

''_zoom _w

***AUX3

''_zoom _p

''pan

***AUX4

''layer$p0=tool $p0=*

''layer

在acad.mnu中做上面的设置你只要按住shift键然后击鼠标

右键就可以框选放大(zoom w)

按住ctrl键然后击鼠标

右键就可以回到上一次图形窗口(zoom p)

当然了,有兴趣的朋友玩玩行,实际用处不是很大

嘿''

53.【鼠标都有啥功能呀】

二键式鼠标

左键 : 选择功能键(选象素 选点 选功能)

右键: 绘图区-----快捷菜单或[ENTER]功能

1.变量 SHORTCUTMENU 等于0---------[ENTER]

2.变量 SHORTCUTMENU 大于0---------快捷菜单

3.或用于环境选项--------使用者设定---------快捷菜单开关设定

[shift] 右键:对象捕捉快捷菜单

三键式鼠标

左键 : 选择功能键(选象素 选点 选功能)

右键: 绘图区-----快捷菜单或[ENTER]功能

1.变量 SHORTCUTMENU 等于0---------[ENTER]

2.变量 SHORTCUTMENU 大于0---------快捷菜单

3.或用于环境选项--------使用者设定---------快捷菜单开关设定

中间键 :Mbuttonpan=1(系统默认值)

压着不放并拖曳 实现平移

双击 ZOOM ------E缩放成实际范围

[Shift] 压着不放并拖曳 作垂直或水平的实时平移

[Ctrl] 压着不放并拖曳 随意式实时平移

Mbuttonpan=0 对象捕捉快捷菜单

[Shift] 右键 对象捕捉快捷菜单

二键 中间滚轮鼠标

左键 : 选择功能键(选象素 选点 选功能)

右键: 绘图区-----快捷菜单或[ENTER]功能

1.变量 SHORTCUTMENU 等于0---------[ENTER]

2.变量 SHORTCUTMENU 大于0---------快捷菜单

3.或用于环境选项--------使用者设定---------快捷菜单开关设定

中间滚轮 1.旋转轮子向前或向后,实时缩放、拉近、拉远

2.压轮子不放并拖曳 实时平移

3.双击 ZOOM ------E缩放成实际范围

[Shift] 压轮子不放并拖曳 作垂直或水平的实时平移

[Ctrl] 压轮子不放并拖曳 随意式实时平移

Mbuttonpan=0 (系统默认值=1) 按一下轮子 对象捕捉快捷菜单

[Shift] 右键 对象捕捉快捷菜单

这是我看书过程中觉得好的,我想跟大家分享分享!

54.【块文件不能炸开及不能用另外一些常用命令的问题】

可以有两种方法解决,一是删除acad.lsp和acadapp.lsp 文件,大小应该一样都是3K,

然后复制acadr14.lsp两次,命名为上述两个文件名,加上只读,就免疫了。要删掉你DWG图形所在目录的所有lsp文件。

不然你会感染别人的。 二是有种专门查杀该病毒的软件。

http://abbs.cn/pic/2005/11/02/1130896989.rar

55.【删除顽固图层的有效方法】

删除顽固图层的有效方法是采用图层影射,命令laytrans,可将需删除的图层影射为0层即可,

这个方法可以删除具有实体对象或被其它块嵌套定义的图层,可以说是万能图层删除器。

56.【CAD 自动保存的文件格式转化为DWG格式时,为什么总会变成.DWG.SV$格式呀】

答:那是你的文件扩展名被隐藏起来了。

在IE浏览器菜单“工具”-“文件夹选项”-“查看”中先去除“隐藏已知文件类型的扩展名”再重命名sv$文件。

57.【在修改完ACAD.LSP后,它不能自动加载咋办呀】

每次新建文档或者打开AUTOCAD都必须手动加载ACAD.LSP文件,若要想每次启动或者新建都能自动加载LISP文件,

那么可以将ACADLSPASDOC的系统变量修改为1。

只要acad.lsp的路径正确,每次打开CAD,它至少会被自动加载一次,然后才归ACADLSPASDOC干活。

路径正确的意思,是放到支持文件搜索路径里面。

简单说,cad根目录、support和当前工作目录最保险。

58.【如何关闭CAD中的*BAK文件】:

(1)工具——选项,选“打开和保存”选项卡,再在对话框中将“每次保存均创建备份”即“CREAT BACKUP COPY WITH EACH SAVES”前的对钩去掉。

(2)也可以用命令ISAVEBAK,将ISAVEBAK的系统变量修改为0,系统变量为1时,每次保存都会创建“*BAK”备份文件。

59.【CAD中绘图区左下方显示坐标的框有时变为灰色,当鼠标在绘图区移动时,显示的坐标没有变化咋办呀】

这时需按F6键或者将COORDS的系统变量修改为1或者2。

系统变量为0时,是指用定点设备指定点时更新坐标显示。

系统变量为1时,是指不断更新坐标显示。

系统变量为2时,是指不断更新坐标显示,当需要距离和角度时,显示到上一点的距离和角度。

60.【当绘图时没有虚线框显示,比如画一个矩形,取一点后,拖动鼠标时没有矩形虚框跟着变化】

这时需修改DRAGMODE的系统变量,推荐修改为AUTO。

系统变量为ON时,再选定要拖动的对象后,仅当在命令行中输入DRAG后才在拖动时显示对象的轮廓。

系统变量为OFF时,在拖动时不显示对象的轮廓。

系统变量位AUTO时,在拖动时总是显示对象的轮廓。

61.【当选取对象时,拖动鼠标产生的虚框变为实线框且选取后留下两个交叉的点时咋办呀】

将BLIPMODE的系统变量修改为OFF即可。

62.【用AutoCAD打开一张旧图,有时会遇到异常错误而中断退出咋办呀】

则可以新建一个图形文件,而把旧图用图块形式插入,也许可以解决问题。

63.【在AutoCAD中有时尺寸箭头及Trace画的轨迹线变为空心咋办呀】

用FILLMMODE命令,在提示行下输新值1可将其重新变为实心。

64.【autocad2004新增了为图形设置密码的功能】

具体的设置方法如下:

(1)执行保存命令后,在弹出的save drawing as(图形另存为)对话框中,选择对话框右上方tools(工具)下拉菜单中的security options(安全选项),autocad会弹出security options(安全选项)对话框,

(2)单击password(口令)选项卡,在password or phrase to open this drowing (用于打开此图形的口令或短语)文本框中输入密码。此外,利用digital sinnature(数字签名)选项卡还可以设置数字签名。

65.【温馨小提示】

在cad中可以用ctrl z取消上面的操作,用ctrl y恢复,但是在2004之前只能恢复一步,而2004后可以多次恢复。

66.【CAD多重复制】

在复制对象时,多重复制总是需要输入M,显得比较麻烦,你可以在acad.lsp文件中添加程序实现不必输入M

(defun C:CVV ()

(setvar "cmdecho" 0)

(setq css (ssget)) (command "copy" css "" "m")

(setq css nil) (setvar "cmdecho" 1)

(prin1) )

即输入CVV回车,即可实现多重复制。

编完之后,AP加载此LSP程序

67【如果想关闭CAD中的*BAK文件咋办呀】

还在为那该死的BAK备份文件而烦恼嘛

有了BAK不用愁,一个命令为您解分忧,嘻~~

(1)工具——选项,选“打开和保存”选项卡,再在对话框中将“每次保存均创建备份”即“

CREAT BACKUP COPY WITH EACH SAVES”前的对钩去掉。

(2)也可以用命令ISAVEBAK,将ISAVEBAK的系统变量修改为0,系统变量为1时,

每次保存都会创建“*BAK”备份文件。

68【如果想快速选择一个东东的时候咋办呀】

在快速选择时,可以用FI命令来设置快速选择的类型样式,并用命令FI来筛选所需对象。

补充:

除了fi(lter),还有个简化版的命令,QSELECT,比前者易用

69【图层1的内容被图层2的内容给遮住了咋办呀,555~~~】

如果在一个图里,图层1的内容被图层2的内容给遮住了,用工具——显示——前置即可将遮住的内容显示出来。

70.【AUTOCAD中绘图区左下方显示坐标的框变成灰色的咋办】

AUTOCAD中绘图区左下方显示坐标的框,有时变为灰色,当鼠标在绘图区移动时,显示的坐标没有变化,这时需按F6键或者将COORDS的系统变量修改为1或者2。

最简单的是,在那个坐标值上点,嘿嘿,爽吧

72.【关于选择的问题】

当绘图时没有虚线框显示,比如画一个矩形,取一点后,拖动鼠标时没有矩形虚框跟着变化,这时需修改DRAGMODE的系统变量,推荐修改为AUTO。

系统变量为ON时,再选定要拖动的对象后,仅当在命令行中输入DRAG后才在拖动时显示对象的轮廓。

系统变量为OFF时,在拖动时不显示对象的轮廓。

系统变量位AUTO时,在拖动时总是显示对象的轮廓

73【工具栏不见了可咋办呀,急死人了嘛】

如果在AUTOCAD中的工具栏不见了时,在工具栏处点右键,或者工具——选项——配置——重置,

也可用命令:MENULOAD命令,然后点击浏览,选择ACAD.MNC加载即可。

74【在AUTOCAD中,修改ACAD.CNT文件,可以在帮助中加入自己的帮助链接。】

75【在用AUTOCAD(2002和2004)在XP系统下打印时出现致命错误时的解决方法:】

在AUTOCAD中不开启打印戳记功能,如已开起,则需将AUTOCAD根目录下的ACPLTSTAMP.ARX文件改为其它的名称或者删除。

但是在删除时不能运行AUTOCAD,而且要具有管理员权限,否则不能删除。

76【将文字对齐方式修改而不改变文字的位置的方法:】

修改——对像——文字—对正,改变对齐方式,文字的位置不会改变。】

77【简说自定义快键】:

Auto cad提供了一个名为ACAD.PGP的文件,该文件称为AUTO CAD程序参数文件,用于保存命令定义。

在以往的版本中,该文件存放在安装目录的support文件夹下,但是在cad2004中有了改变,它被放在了C:Documents and SettingsmhApplication DataAutodeskAutoCAD 2004R16.0chsSupport下(mh是我的计算机用户名)。

78【为什么绘图文件、层和块在对话框中不再以阿拉伯字母顺序显示在列表中?】

系统变量MAXSORT决定了文件名、层名、块名、线型等等在AutoCAD对话框中以字母顺序排列。可在“Preferences(系统配置)”对话框中的“General(基本)”标签下,设置“maximum number sorted symbols(存储符号的最大数量)”。

缺省的MAXSORT值是200,这意味着至多200个实体能被在列表框中依字母顺序排序,如果在列表框中一个项目的序号超过了200,将不能对其排序。

79【怎样用PSOUT命令输出图形到一张比A型图纸更大的图纸上? 】

R14中,如果直接用PSOUT输出EPS文件,系统变量FILEDIA又被设置为1,输出的EPS文件,只能送到A型图纸大小。

如果想选择图纸大小,必须在运行PSOUT命令之前取消文件交互对话框形式,为此,设置系统变量FILEDIA为0。或者为AutoCAD配置一个Postscript打印机,然后输出到文件,得到任意图纸大小的EPS文件。

云计算、大数据、人工智能傻傻分不清楚?华为阿里架构师详解

大家是不是对hadoop的组件系列不太感兴趣,那今天写点别的,写了很久,都是最通俗的语言,你们肯定可以看懂。

今天跟大家讲讲云计算、大数据和人工智能。这三个词现在非常火,并且它们之间好像互相有关系。

一般谈云计算的时候会提到大数据、谈人工智能的时候会提大数据、谈人工智能的时候会提云计算……感觉三者之间相辅相成又不可分割。

但如果是非技术的人员,就可能比较难理解这三者之间的相互关系,所以有必要解释一下。

云计算最初的目标

我们首先来说云计算。云计算最初的目标是对资源的管理,管理的主要是计算资源、网络资源、存储资源三个方面。

管数据中心就像配电脑

什么叫计算、网络、存储资源?

比如你要买台笔记本电脑,是不是要关心这台电脑是什么样的 CPU?多大的内存?这两个就被我们称为计算资源。

这台电脑要上网,就需要有个可以插网线的网口,或者有可以连接我们家路由器的无线网卡。

您家也需要到运营商比如联通、移动或者电信开通一个网络,比如 100M 的带宽。然后会有师傅弄一根网线到您家来,师傅可能会帮您将您的路由器和他们公司的网络连接配置好。

这样您家的所有的电脑、手机、平板就都可以通过您的路由器上网了。这就是网络资源。

您可能还会问硬盘多大?过去的硬盘都很小,大小如 10G 之类的;后来即使 500G、1T、2T 的硬盘也不新鲜了。(1T 是 1000G),这就是存储资源。

对于一台电脑是这个样子的,对于一个数据中心也是同样的。想象你有一个非常非常大的机房,里面堆了很多的服务器,这些服务器也是有 CPU、内存、硬盘的,也是通过类似路由器的设备上网的。

这时的问题就是:运营数据中心的人是怎么把这些设备统一的管理起来的呢?

灵活就是想啥时要都有,想要多少都行

管理的目标就是要达到两个方面的灵活性。具体哪两个方面呢?

举个例子来理解:比如有个人需要一台很小的电脑,只有一个 CPU、1G 内存、10G 的硬盘、一兆的带宽,你能给他吗?

像这么小规格的电脑,现在随便一个笔记本电脑都比这个配置强了,家里随便拉一个宽带都要 100M。然而如果去一个云计算的平台上,他想要这个资源时,只要一点就有了。

这种情况下它就能达到两个方面的灵活性:

时间灵活性:想什么时候要就什么时候要,需要的时候一点就出来了。

空间灵活性:想要多少就有多少。需要一个空间很小的电脑,可以满足;需要一个特别大的空间例如云盘,云盘给每个人分配的空间动不动就很大很大,随时上传随时有空间,永远用不完,也是可以满足的。

空间灵活性和时间灵活性,即我们常说的云计算的弹性。而解决这个弹性的问题,经历了漫长时间的发展。

物理设备不灵活

第一个阶段是物理设备时期。这个时期客户需要一台电脑,我们就买一台放在数据中心里。

物理设备当然是越来越牛:

例如服务器,内存动不动就是百 G 内存。

例如网络设备,一个端口的带宽就能有几十 G 甚至上百 G。

例如存储,在数据中心至少是 PB 级别的(一个 P 是 1000 个 T,一个 T 是 1000 个 G)。

然而物理设备不能做到很好的灵活性:

首先是它缺乏时间灵活性。不能够达到想什么时候要就什么时候要。比如买台服务器、买个电脑,都要有采购的时间。

如果突然用户告诉某个云厂商,说想要开台电脑,使用物理服务器,当时去采购就很难。与供应商关系好的可能需要一个星期,与供应商关系一般的就可能需要采购一个月。

用户等了很久电脑才到位,这时用户还要登录上去慢慢开始部署自己的应用。时间灵活性非常差。

其次是它的空间灵活性也不行。例如上述的用户需要一个很小很小的电脑,但现在哪还有这么小型号的电脑?不能为了满足用户只要一个 G 的内存、80G 硬盘的,就去买一个这么小的机器。

但是如果买一个大的,又会因为电脑大,需要向用户多收钱,可用户需要用的只有那么小一点,所以多付钱就很冤。

虚拟化灵活多了

有人就想办法了。第一个办法就是虚拟化。用户不是只要一个很小的电脑么?

数据中心的物理设备都很强大,我可以从物理的 CPU、内存、硬盘中虚拟出一小块来给客户,同时也可以虚拟出一小块来给其他客户。

每个客户只能看到自己的那一小块,但其实每个客户用的是整个大的设备上的一小块。

虚拟化的技术使得不同客户的电脑看起来是隔离的。也就是我看着好像这块盘就是我的,你看着这块盘就是你的,但实际情况可能我的这个 10G 和你的这个 10G 是落在同样一个很大很大的存储上。

而且如果事先物理设备都准备好,虚拟化软件虚拟出一个电脑是非常快的,基本上几分钟就能解决。所以在任何一个云上要创建一台电脑,一点几分钟就出来了,就是这个道理。

这样空间灵活性和时间灵活性就基本解决了。

虚拟世界的赚钱与情怀

在虚拟化阶段,最牛的公司是 VMware。它是实现虚拟化技术比较早的一家公司,可以实现计算、网络、存储的虚拟化。

这家公司很牛,性能做得非常好,虚拟化软件卖得也非常好,赚了好多的钱,后来让 EMC(世界五百强,存储厂商第一品牌)给收购了。

但这个世界上还是有很多有情怀的人的,尤其是程序员里面。有情怀的人喜欢做什么事情?开源。

这个世界上很多软件都是有闭源就有开源,源就是源代码。也就是说,某个软件做的好,所有人都爱用,但这个软件的代码被我封闭起来,只有我公司知道,其他人不知道。

如果其他人想用这个软件,就要向我付钱,这就叫闭源。但世界上总有一些大牛看不惯钱都让一家赚了去的情况。大牛们觉得,这个技术你会我也会;你能开发出来,我也能。

我开发出来就是不收钱,把代码拿出来分享给大家,全世界谁用都可以,所有的人都可以享受到好处,这个叫做开源。

比如最近的蒂姆·伯纳斯·李就是个非常有情怀的人。2017 年,他因“发明万维网、第一个浏览器和使万维网得以扩展的基本协议和算法”而获得 2016 年度的图灵奖。

图灵奖就是计算机界的诺贝尔奖。然而他最令人敬佩的是,他将万维网,也就是我们常见的 WWW 技术无偿贡献给全世界免费使用。

我们现在在网上的所有行为都应该感谢他的功劳,如果他将这个技术拿来收钱,应该和比尔盖茨差不多有钱。

开源和闭源的例子有很多:例如在闭源的世界里有 Windows,大家用 Windows 都得给微软付钱;开源的世界里面就出现了 Linux。

比尔盖茨靠 Windows、Office 这些闭源的软件赚了很多钱,称为世界首富,就有大牛开发了另外一种操作系统 Linux。

很多人可能没有听说过 Linux,很多后台的服务器上跑的程序都是 Linux 上的,比如大家享受双十一,无论是淘宝、京东、考拉……支撑双十一抢购的系统都是跑在 Linux 上的。

再如有 Apple 就有安卓。Apple 市值很高,但是苹果系统的代码我们是看不到的,于是就有大牛写了安卓手机操作系统。

所以大家可以看到几乎所有的其他手机厂商,里面都装安卓系统。原因就是苹果系统不开源,而安卓系统大家都可以用。

在虚拟化软件也一样,有了 VMware,这个软件非常贵。那就有大牛写了两个开源的虚拟化软件,一个叫做 Xen,一个叫做 KVM,如果不做技术的,可以不用管这两个名字,但是后面还是会提到。

虚拟化的半自动和云计算的全自动

要说虚拟化软件解决了灵活性问题,其实并不全对。因为虚拟化软件一般创建一台虚拟的电脑,是需要人工指定这台虚拟电脑放在哪台物理机上的。

这一过程可能还需要比较复杂的人工配置。所以使用 VMware 的虚拟化软件,需要考一个很牛的证书,而能拿到这个证书的人,薪资是相当高,也可见其复杂程度。

所以仅仅凭虚拟化软件所能管理的物理机的集群规模都不是特别大,一般在十几台、几十台、最多百台这么一个规模。

这一方面会影响时间灵活性:虽然虚拟出一台电脑的时间很短,但是随着集群规模的扩大,人工配置的过程越来越复杂,越来越耗时。

另一方面也影响空间灵活性:当用户数量多时,这点集群规模,还远达不到想要多少要多少的程度,很可能这点资源很快就用完了,还得去采购。

所以随着集群的规模越来越大,基本都是千台起步,动辄上万台、甚至几十上百万台。如果去查一下 BAT,包括网易、谷歌、亚马逊,服务器数目都大的吓人。

这么多机器要靠人去选一个位置放这台虚拟化的电脑并做相应的配置,几乎是不可能的事情,还是需要机器去做这个事情。

人们发明了各种各样的算法来做这个事情,算法的名字叫做调度(Scheduler)。

通俗一点说,就是有一个调度中心,几千台机器都在一个池子里面,无论用户需要多少 CPU、内存、硬盘的虚拟电脑,调度中心会自动在大池子里面找一个能够满足用户需求的地方,把虚拟电脑启动起来做好配置,用户就直接能用了。

这个阶段我们称为池化或者云化。到了这个阶段,才可以称为云计算,在这之前都只能叫虚拟化。

云计算的私有与公有

云计算大致分两种:一个是私有云,一个是公有云,还有人把私有云和公有云连接起来称为混合云,这里暂且不说这个。

私有云:把虚拟化和云化的这套软件部署在别人的数据中心里面。使用私有云的用户往往很有钱,自己买地建机房、自己买服务器,然后让云厂商部署在自己这里。

VMware 后来除了虚拟化,也推出了云计算的产品,并且在私有云市场赚的盆满钵满。

公有云:把虚拟化和云化软件部署在云厂商自己数据中心里面的,用户不需要很大的投入,只要注册一个账号,就能在一个网页上点一下创建一台虚拟电脑。

例如 AWS 即亚马逊的公有云;国内的阿里云、腾讯云、网易云等。

亚马逊为什么要做公有云呢?我们知道亚马逊原来是国外比较大的一个电商,它做电商时也肯定会遇到类似双十一的场景:在某一个时刻大家都冲上来买东西。

当大家都冲上买东西时,就特别需要云的时间灵活性和空间灵活性。因为它不能时刻准备好所有的资源,那样太浪费了。但也不能什么都不准备,看着双十一这么多用户想买东西登不上去。

所以需要双十一时,就创建一大批虚拟电脑来支撑电商应用,过了双十一再把这些资源都释放掉去干别的。因此亚马逊是需要一个云平台的。

然而商用的虚拟化软件实在是太贵了,亚马逊总不能把自己在电商赚的钱全部给了虚拟化厂商。

于是亚马逊基于开源的虚拟化技术,如上所述的 Xen 或者 KVM,开发了一套自己的云化软件。没想到亚马逊后来电商越做越牛,云平台也越做越牛。

由于它的云平台需要支撑自己的电商应用;而传统的云计算厂商多为 IT 厂商出身,几乎没有自己的应用,所以亚马逊的云平台对应用更加友好,迅速发展成为云计算的第一品牌,赚了很多钱。

在亚马逊公布其云计算平台财报之前,人们都猜测,亚马逊电商赚钱,云也赚钱吗?后来一公布财报,发现不是一般的赚钱。仅仅去年,亚马逊 AWS 年营收达 122 亿美元,运营利润 31 亿美元。

云计算的赚钱与情怀

公有云的第一名亚马逊过得很爽,第二名 Rackspace 过得就一般了。没办法,这就是互联网行业的残酷性,多是赢者通吃的模式。所以第二名如果不是云计算行业的,很多人可能都没听过了。

第二名就想,我干不过老大怎么办呢?开源吧。如上所述,亚马逊虽然使用了开源的虚拟化技术,但云化的代码是闭源的。

很多想做又做不了云化平台的公司,只能眼巴巴的看着亚马逊挣大钱。Rackspace 把源代码一公开,整个行业就可以一起把这个平台越做越好,兄弟们大家一起上,和老大拼了。

于是 Rackspace 和美国航空航天局合作创办了开源软件 OpenStack,如上图所示 OpenStack 的架构图,不是云计算行业的不用弄懂这个图。

但能够看到三个关键字:Compute 计算、Networking 网络、Storage 存储。还是一个计算、网络、存储的云化管理平台。

当然第二名的技术也是非常棒的,有了 OpenStack 之后,果真像 Rackspace 想的一样,所有想做云的大企业都疯了,你能想象到的所有如雷贯耳的大型 IT 企业:IBM、惠普、戴尔、华为、联想等都疯了。

原来云平台大家都想做,看着亚马逊和 VMware 赚了这么多钱,眼巴巴看着没办法,想自己做一个好像难度还挺大。

现在好了,有了这样一个开源的云平台 OpenStack,所有的 IT 厂商都加入到这个社区中来,对这个云平台进行贡献,包装成自己的产品,连同自己的硬件设备一起卖。

有的做了私有云,有的做了公有云,OpenStack 已经成为开源云平台的事实标准。

IaaS,资源层面的灵活性

随着 OpenStack 的技术越来越成熟,可以管理的规模也越来越大,并且可以有多个 OpenStack 集群部署多套。

比如北京部署一套、杭州部署两套、广州部署一套,然后进行统一的管理。这样整个规模就更大了。

在这个规模下,对于普通用户的感知来讲,基本能够做到想什么时候要就什么时候要,想要多少就要多少。

还是拿云盘举例子,每个用户云盘都分配了 5T 甚至更大的空间,如果有 1 亿人,那加起来空间多大啊。

其实背后的机制是这样的:分配你的空间,你可能只用了其中很少一点,比如说它分配给你了 5 个 T,这么大的空间仅仅是你看到的,而不是真的就给你了。

你其实只用了 50 个 G,则真实给你的就是 50 个 G,随着你文件的不断上传,分给你的空间会越来越多。

当大家都上传,云平台发现快满了的时候(例如用了 70%),会采购更多的服务器,扩充背后的资源,这个对用户是透明的、看不到的。

从感觉上来讲,就实现了云计算的弹性。其实有点像银行,给储户的感觉是什么时候取钱都有,只要不同时挤兑,银行就不会垮。

总结

到了这个阶段,云计算基本上实现了时间灵活性和空间灵活性;实现了计算、网络、存储资源的弹性。

计算、网络、存储我们常称为基础设施 Infranstracture, 因而这个阶段的弹性称为资源层面的弹性。

管理资源的云平台,我们称为基础设施服务,也就是我们常听到的 IaaS(Infranstracture As A Service)。

云计算不光管资源,也要管应用

有了 IaaS,实现了资源层面的弹性就够了吗?显然不是,还有应用层面的弹性。

这里举个例子:比如说实现一个电商的应用,平时十台机器就够了,双十一需要一百台。你可能觉得很好办啊,有了 IaaS,新创建九十台机器就可以了啊。

但 90 台机器创建出来是空的,电商应用并没有放上去,只能让公司的运维人员一台一台的弄,需要很长时间才能安装好的。

虽然资源层面实现了弹性,但没有应用层的弹性,依然灵活性是不够的。有没有方法解决这个问题呢?

人们在 IaaS 平台之上又加了一层,用于管理资源以上的应用弹性的问题,这一层通常称为 PaaS(Platform As A Service)。

这一层往往比较难理解,大致分两部分:一部分笔者称为“你自己的应用自动安装”,一部分笔者称为“通用的应用不用安装”。

自己的应用自动安装:比如电商应用是你自己开发的,除了你自己,其他人是不知道怎么安装的。

像电商应用,安装时需要配置支付宝或者微信的账号,才能使别人在你的电商上买东西时,付的钱是打到你的账户里面的,除了你,谁也不知道。

所以安装的过程平台帮不了忙,但能够帮你做得自动化,你需要做一些工作,将自己的配置信息融入到自动化的安装过程中方可。

比如上面的例子,双十一新创建出来的 90 台机器是空的,如果能够提供一个工具,能够自动在这新的 90 台机器上将电商应用安装好,就能够实现应用层面的真正弹性。

例如 Puppet、Chef、Ansible、Cloud Foundary 都可以干这件事情,最新的容器技术 Docker 能更好的干这件事情。

通用的应用不用安装:所谓通用的应用,一般指一些复杂性比较高,但大家都在用的,例如数据库。几乎所有的应用都会用数据库,但数据库软件是标准的,虽然安装和维护比较复杂,但无论谁安装都是一样。

这样的应用可以变成标准的 PaaS 层的应用放在云平台的界面上。当用户需要一个数据库时,一点就出来了,用户就可以直接用了。

有人问,既然谁安装都一个样,那我自己来好了,不需要花钱在云平台上买。当然不是,数据库是一个非常难的东西,光 Oracle 这家公司,靠数据库就能赚这么多钱。买 Oracle 也是要花很多钱的。

然而大多数云平台会提供 MySQL 这样的开源数据库,又是开源,钱不需要花这么多了。

但维护这个数据库,却需要专门招一个很大的团队,如果这个数据库能够优化到能够支撑双十一,也不是一年两年能够搞定的。

比如您是一个做单车的,当然没必要招一个非常大的数据库团队来干这件事情,成本太高了,应该交给云平台来做这件事情。

专业的事情专业的人来做,云平台专门养了几百人维护这套系统,您只要专注于您的单车应用就可以了。

要么是自动部署,要么是不用部署,总的来说就是应用层你也要少操心,这就是 PaaS 层的重要作用。

虽说脚本的方式能够解决自己的应用的部署问题,然而不同的环境千差万别,一个脚本往往在一个环境上运行正确,到另一个环境就不正确了。

而容器是能更好地解决这个问题。

容器是 Container,Container 另一个意思是集装箱,其实容器的思想就是要变成软件交付的集装箱。集装箱的特点:一是封装,二是标准。

在没有集装箱的时代,假设将货物从 A 运到 B,中间要经过三个码头、换三次船。

每次都要将货物卸下船来,摆得七零八落,然后搬上船重新整齐摆好。因此在没有集装箱时,每次换船,船员们都要在岸上待几天才能走。

有了集装箱以后,所有的货物都打包在一起了,并且集装箱的尺寸全部一致,所以每次换船时,一个箱子整体搬过去就行了,小时级别就能完成,船员再也不用上岸长时间耽搁了。

这是集装箱“封装”、“标准”两大特点在生活中的应用。

那么容器如何对应用打包呢?还是要学习集装箱。首先要有个封闭的环境,将货物封装起来,让货物之间互不干扰、互相隔离,这样装货卸货才方便。好在 Ubuntu 中的 LXC 技术早就能做到这一点。

封闭的环境主要使用了两种技术:

看起来是隔离的技术,称为 Namespace,也即每个 Namespace 中的应用看到的是不同的 IP 地址、用户空间、程号等。

用起来是隔离的技术,称为 Cgroups,也即明明整台机器有很多的 CPU、内存,而一个应用只能用其中的一部分。

所谓的镜像,就是将你焊好集装箱的那一刻,将集装箱的状态保存下来,就像孙悟空说:“定”,集装箱里面就定在了那一刻,然后将这一刻的状态保存成一系列文件。

这些文件的格式是标准的,谁看到这些文件都能还原当时定住的那个时刻。将镜像还原成运行时的过程(就是读取镜像文件,还原那个时刻的过程),就是容器运行的过程。

有了容器,使得 PaaS 层对于用户自身应用的自动部署变得快速而优雅。

大数据拥抱云计算

在 PaaS 层中一个复杂的通用应用就是大数据平台。大数据是如何一步一步融入云计算的呢?

数据不大也包含智慧

一开始这个大数据并不大。原来才有多少数据?现在大家都去看电子书,上网看新闻了,在我们 80 后小时候,信息量没有那么大,也就看看书、看看报,一个星期的报纸加起来才有多少字?

如果你不在一个大城市,一个普通的学校的图书馆加起来也没几个书架,是后来随着信息化的到来,信息才会越来越多。

首先我们来看一下大数据里面的数据,就分三种类型:

结构化的数据:即有固定格式和有限长度的数据。例如填的表格就是结构化的数据,国籍:中华人民共和国,民族:汉,性别:男,这都叫结构化数据。

非结构化的数据:现在非结构化的数据越来越多,就是不定长、无固定格式的数据,例如网页,有时候非常长,有时候几句话就没了;例如语音,视频都是非结构化的数据。

半结构化数据:是一些 XML 或者 HTML 的格式的,不从事技术的可能不了解,但也没有关系。

其实数据本身不是有用的,必须要经过一定的处理。例如你每天跑步带个手环收集的也是数据,网上这么多网页也是数据,我们称为 Data。

数据本身没有什么用处,但数据里面包含一个很重要的东西,叫做信息(Information)。

数据十分杂乱,经过梳理和清洗,才能够称为信息。信息会包含很多规律,我们需要从信息中将规律总结出来,称为知识(Knowledge),而知识改变命运。

信息是很多的,但有人看到了信息相当于白看,但有人就从信息中看到了电商的未来,有人看到了直播的未来,所以人家就牛了。

如果你没有从信息中提取出知识,天天看朋友圈也只能在互联网滚滚大潮中做个看客。

有了知识,然后利用这些知识去应用于实战,有的人会做得非常好,这个东西叫做智慧(Intelligence)。

有知识并不一定有智慧,例如好多学者很有知识,已经发生的事情可以从各个角度分析得头头是道,但一到实干就歇菜,并不能转化成为智慧。

而很多的创业家之所以伟大,就是通过获得的知识应用于实践,最后做了很大的生意。

所以数据的应用分这四个步骤:数据、信息、知识、智慧。

最终的阶段是很多商家都想要的。你看我收集了这么多的数据,能不能基于这些数据来帮我做下一步的决策,改善我的产品。

例如让用户看视频的时候旁边弹出广告,正好是他想买的东西;再如让用户听音乐时,另外推荐一些他非常想听的其他音乐。

用户在我的应用或者网站上随便点点鼠标,输入文字对我来说都是数据,我就是要将其中某些东西提取出来、指导实践、形成智慧,让用户陷入到我的应用里面不可自拔,上了我的网就不想离开,手不停地点、不停地买。

很多人说双十一我都想断网了,我老婆在上面不断地买买买,买了 A 又推荐 B,老婆大人说,“哎呀,B 也是我喜欢的啊,老公我要买”。

你说这个程序怎么这么牛,这么有智慧,比我还了解我老婆,这件事情是怎么做到的呢?

数据如何升华为智慧

数据的处理分以下几个步骤,完成了才最后会有智慧:

数据收集

数据传输

数据存储

数据处理和分析

数据检索和挖掘

数据收集

首先得有数据,数据的收集有两个方式:

拿,专业点的说法叫抓取或者爬取。例如搜索引擎就是这么做的:它把网上的所有的信息都下载到它的数据中心,然后你一搜才能搜出来。

比如你去搜索的时候,结果会是一个列表,这个列表为什么会在搜索引擎的公司里面?就是因为他把数据都拿下来了,但是你一点链接,点出来这个网站就不在搜索引擎它们公司了。

比如说新浪有个新闻,你拿百度搜出来,你不点的时候,那一页在百度数据中心,一点出来的网页就是在新浪的数据中心了。

推送,有很多终端可以帮我收集数据。比如说小米手环,可以将你每天跑步的数据,心跳的数据,睡眠的数据都上传到数据中心里面。

数据传输

一般会通过队列方式进行,因为数据量实在是太大了,数据必须经过处理才会有用。可系统处理不过来,只好排好队,慢慢处理。

数据存储

现在数据就是金钱,掌握了数据就相当于掌握了钱。要不然网站怎么知道你想买什么?

就是因为它有你历史的交易数据,这个信息可不能给别人,十分宝贵,所以需要存储下来。

数据处理和分析

上面存储的数据是原始数据,原始数据多是杂乱无章的,有很多垃圾数据在里面,因而需要清洗和过滤,得到一些高质量的数据。

对于高质量的数据,就可以进行分析,从而对数据进行分类,或者发现数据之间的相互关系,得到知识。

比如盛传的沃尔玛超市的啤酒和尿布的故事,就是通过对人们的购买数据进行分析,发现了男人一般买尿布的时候,会同时购买啤酒。

这样就发现了啤酒和尿布之间的相互关系,获得知识,然后应用到实践中,将啤酒和尿布的柜台弄的很近,就获得了智慧。

数据检索和挖掘

检索就是搜索,所谓外事不决问 Google,内事不决问百度。内外两大搜索引擎都是将分析后的数据放入搜索引擎,因此人们想寻找信息的时候,一搜就有了。

另外就是挖掘,仅仅搜索出来已经不能满足人们的要求了,还需要从信息中挖掘出相互的关系。

比如财经搜索,当搜索某个公司股票的时候,该公司的高管是不是也应该被挖掘出来呢?

如果仅仅搜索出这个公司的股票发现涨的特别好,于是你就去买了,其时其高管发了一个声明,对股票十分不利,第二天就跌了,这不坑害广大股民么?所以通过各种算法挖掘数据中的关系,形成知识库,十分重要。

大数据时代,众人拾柴火焰高

当数据量很小时,很少的几台机器就能解决。慢慢的,当数据量越来越大,最牛的服务器都解决不了问题时,怎么办呢?

这时就要聚合多台机器的力量,大家齐心协力一起把这个事搞定,众人拾柴火焰高。

对于数据的收集:就 IoT 来讲,外面部署着成千上万的检测设备,将大量的温度、湿度、监控、电力等数据统统收集上来;就互联网网页的搜索引擎来讲,需要将整个互联网所有的网页都下载下来。

这显然一台机器做不到,需要多台机器组成网络爬虫系统,每台机器下载一部分,同时工作,才能在有限的时间内,将海量的网页下载完毕。

对于数据的传输:一个内存里面的队列肯定会被大量的数据挤爆掉,于是就产生了基于硬盘的分布式队列,这样队列可以多台机器同时传输,随你数据量多大,只要我的队列足够多,管道足够粗,就能够撑得住。

对于数据的存储:一台机器的文件系统肯定是放不下的,所以需要一个很大的分布式文件系统来做这件事情,把多台机器的硬盘打成一块大的文件系统。

对于数据的分析:可能需要对大量的数据做分解、统计、汇总,一台机器肯定搞不定,处理到猴年马月也分析不完。

于是就有分布式计算的方法,将大量的数据分成小份,每台机器处理一小份,多台机器并行处理,很快就能算完。

例如著名的 Terasort 对 1 个 TB 的数据排序,相当于 1000G,如果单机处理,怎么也要几个小时,但并行处理 209 秒就完成了。

所以说什么叫做大数据?说白了就是一台机器干不完,大家一起干。

可是随着数据量越来越大,很多不大的公司都需要处理相当多的数据,这些小公司没有这么多机器可怎么办呢?

大数据需要云计算,云计算需要大数据

说到这里,大家想起云计算了吧。当想要干这些活时,需要很多的机器一块做,真的是想什么时候要就什么时候要,想要多少就要多少。

例如大数据分析公司的财务情况,可能一周分析一次,如果要把这一百台机器或者一千台机器都在那放着,一周用一次非常浪费。

那能不能需要计算的时候,把这一千台机器拿出来;不算的时候,让这一千台机器去干别的事情?

谁能做这个事儿呢?只有云计算,可以为大数据的运算提供资源层的灵活性。

而云计算也会部署大数据放到它的 PaaS 平台上,作为一个非常非常重要的通用应用。

因为大数据平台能够使得多台机器一起干一个事儿,这个东西不是一般人能开发出来的,也不是一般人玩得转的,怎么也得雇个几十上百号人才能把这个玩起来。

所以说就像数据库一样,还是需要有一帮专业的人来玩这个东西。现在公有云上基本上都会有大数据的解决方案了。

一个小公司需要大数据平台的时候,不需要采购一千台机器,只要到公有云上一点,这一千台机器都出来了,并且上面已经部署好了的大数据平台,只要把数据放进去算就可以了。

云计算需要大数据,大数据需要云计算,二者就这样结合了。

人工智能拥抱大数据

机器什么时候才能懂人心

虽说有了大数据,人的欲望却不能够满足。虽说在大数据平台里面有搜索引擎这个东西,想要什么东西一搜就出来了。

但也存在这样的情况:我想要的东西不会搜,表达不出来,搜索出来的又不是我想要的。

例如音乐软件推荐了一首歌,这首歌我没听过,当然不知道名字,也没法搜。但是软件推荐给我,我的确喜欢,这就是搜索做不到的事情。

当人们使用这种应用时,会发现机器知道我想要什么,而不是说当我想要时,去机器里面搜索。这个机器真像我的朋友一样懂我,这就有点人工智能的意思了。

人们很早就在想这个事情了。最早的时候,人们想象,要是有一堵墙,墙后面是个机器,我给它说话,它就给我回应。

如果我感觉不出它那边是人还是机器,那它就真的是一个人工智能的东西了。

让机器学会推理

怎么才能做到这一点呢?人们就想:我首先要告诉计算机人类推理的能力。你看人重要的是什么?人和动物的区别在什么?就是能推理。

要是把我这个推理的能力告诉机器,让机器根据你的提问,推理出相应的回答,这样多好?

其实目前人们慢慢地让机器能够做到一些推理了,例如证明数学公式。这是一个非常让人惊喜的一个过程,机器竟然能够证明数学公式。

但慢慢又发现这个结果也没有那么令人惊喜。因为大家发现了一个问题:数学公式非常严谨,推理过程也非常严谨,而且数学公式很容易拿机器来进行表达,程序也相对容易表达。

然而人类的语言就没这么简单了。比如今天晚上,你和你女朋友约会,你女朋友说:如果你早来,我没来,你等着;如果我早来,你没来,你等着!

这个机器就比较难理解了,但人都懂。所以你和女朋友约会,是不敢迟到的。

教给机器知识

因此,仅仅告诉机器严格的推理是不够的,还要告诉机器一些知识。但告诉机器知识这个事情,一般人可能就做不来了。可能专家可以,比如语言领域的专家或者财经领域的专家。

语言领域和财经领域知识能不能表示成像数学公式一样稍微严格点呢?例如语言专家可能会总结出主谓宾定状补这些语法规则,主语后面一定是谓语,谓语后面一定是宾语,将这些总结出来,并严格表达出来不就行了吗?

后来发现这个不行,太难总结了,语言表达千变万化。就拿主谓宾的例子,很多时候在口语里面就省略了谓语,别人问:你谁啊?我回答:我刘超。

但你不能规定在语音语义识别时,要求对着机器说标准的书面语,这样还是不够智能,就像罗永浩在一次演讲中说的那样,每次对着手机,用书面语说:请帮我呼叫某某某,这是一件很尴尬的事情。

人工智能这个阶段叫做专家系统。专家系统不易成功,一方面是知识比较难总结,另一方面总结出来的知识难以教给计算机。

因为你自己还迷迷糊糊,觉得似乎有规律,就是说不出来,又怎么能够通过编程教给计算机呢?

算了,教不会你自己学吧

于是人们想到:机器是和人完全不一样的物种,干脆让机器自己学习好了。

机器怎么学习呢?既然机器的统计能力这么强,基于统计学习,一定能从大量的数字中发现一定的规律。

其实在娱乐圈有很好的一个例子,可窥一斑:

有一位网友统计了知名歌手在大陆发行的 9 张专辑中 117 首歌曲的歌词,同一词语在一首歌出现只算一次,形容词、名词和动词的前十名如下表所示(词语后面的数字是出现的次数):

如果我们随便写一串数字,然后按照数位依次在形容词、名词和动词中取出一个词,连在一起会怎么样呢?

例如取圆周率 3.1415926,对应的词语是:坚强,路,飞,自由,雨,埋,迷惘。

稍微连接和润色一下:

坚强的孩子

依然前行在路上

张开翅膀飞向自由

让雨水埋葬他的迷惘

是不是有点感觉了?当然,真正基于统计的学习算法比这个简单的统计复杂得多。

然而统计学习比较容易理解简单的相关性:例如一个词和另一个词总是一起出现,两个词应该有关系;而无法表达复杂的相关性。

并且统计方法的公式往往非常复杂,为了简化计算,常常做出各种独立性的假设,来降低公式的计算难度,然而现实生活中,具有独立性的事件是相对较少的。

模拟大脑的工作方式

于是人类开始从机器的世界,反思人类的世界是怎么工作的。

人类的脑子里面不是存储着大量的规则,也不是记录着大量的统计数据,而是通过神经元的触发实现的。

每个神经元有从其他神经元的输入,当接收到输入时,会产生一个输出来刺激其他神经元。于是大量的神经元相互反应,最终形成各种输出的结果。

例如当人们看到美女瞳孔会放大,绝不是大脑根据身材比例进行规则判断,也不是将人生中看过的所有的美女都统计一遍,而是神经元从视网膜触发到大脑再回到瞳孔。

在这个过程中,其实很难总结出每个神经元对最终的结果起到了哪些作用,反正就是起作用了。

于是人们开始用一个数学单元模拟神经元。

这个神经元有输入,有输出,输入和输出之间通过一个公式来表示,输入根据重要程度不同(权重),影响着输出。

于是将 n 个神经元通过像一张神经网络一样连接在一起。n 这个数字可以很大很大,所有的神经元可以分成很多列,每一列很多个排列起来。

每个神经元对于输入的权重可以都不相同,从而每个神经元的公式也不相同。当人们从这张网络中输入一个东西的时候,希望输出一个对人类来讲正确的结果。

例如上面的例子,输入一个写着 2 的图片,输出的列表里面第二个数字最大,其实从机器来讲,它既不知道输入的这个图片写的是 2,也不知道输出的这一系列数字的意义,没关系,人知道意义就可以了。

正如对于神经元来说,他们既不知道视网膜看到的是美女,也不知道瞳孔放大是为了看的清楚,反正看到美女,瞳孔放大了,就可以了。

对于任何一张神经网络,谁也不敢保证输入是 2,输出一定是第二个数字最大,要保证这个结果,需要训练和学习。

毕竟看到美女而瞳孔放大也是人类很多年进化的结果。学习的过程就是,输入大量的图片,如果结果不是想要的结果,则进行调整。

如何调整呢?就是每个神经元的每个权重都向目标进行微调,由于神经元和权重实在是太多了,所以整张网络产生的结果很难表现出非此即彼的结果,而是向着结果微微地进步,最终能够达到目标结果。

当然,这些调整的策略还是非常有技巧的,需要算法的高手来仔细的调整。正如人类见到美女,瞳孔一开始没有放大到能看清楚,于是美女跟别人跑了,下次学习的结果是瞳孔放大一点点,而不是放大鼻孔。

没道理但做得到

听起来也没有那么有道理,但的确能做到,就是这么任性!

神经网络的普遍性定理是这样说的,假设某个人给你某种复杂奇特的函数,f(x):

不管这个函数是什么样的,总会确保有个神经网络能够对任何可能的输入 x,其值 f(x)(或者某个能够准确的近似)是神经网络的输出。

如果在函数代表着规律,也意味着这个规律无论多么奇妙,多么不能理解,都是能通过大量的神经元,通过大量权重的调整,表示出来的。

人工智能的经济学解释

这让我想到了经济学,于是比较容易理解了。

我们把每个神经元当成社会中从事经济活动的个体。于是神经网络相当于整个经济社会,每个神经元对于社会的输入,都有权重的调整,做出相应的输出。

比如工资涨了、菜价涨了、股票跌了,我应该怎么办、怎么花自己的钱。这里面没有规律么?肯定有,但是具体什么规律呢?很难说清楚。

基于专家系统的经济属于计划经济。整个经济规律的表示不希望通过每个经济个体的独立决策表现出来,而是希望通过专家的高屋建瓴和远见卓识总结出来。但专家永远不可能知道哪个城市的哪个街道缺少一个卖甜豆腐脑的。

于是专家说应该产多少钢铁、产多少馒头,往往距离人民生活的真正需求有较大的差距,就算整个计划书写个几百页,也无法表达隐藏在人民生活中的小规律。

基于统计的宏观调控就靠谱多了,每年统计局都会统计整个社会的就业率、通胀率、GDP 等指标。这些指标往往代表着很多内在规律,虽然不能精确表达,但是相对靠谱。

然而基于统计的规律总结表达相对比较粗糙。比如经济学家看到这些统计数据,可以总结出长期来看房价是涨还是跌、股票长期来看是涨还是跌。

如果经济总体上扬,房价和股票应该都是涨的。但基于统计数据,无法总结出股票,物价的微小波动规律。

基于神经网络的微观经济学才是对整个经济规律最最准确的表达,每个人对于自己在社会中的输入进行各自的调整,并且调整同样会作为输入反馈到社会中。

想象一下股市行情细微的波动曲线,正是每个独立的个体各自不断交易的结果,没有统一的规律可循。

而每个人根据整个社会的输入进行独立决策,当某些因素经过多次训练,也会形成宏观上统计性的规律,这也就是宏观经济学所能看到的。

例如每次货币大量发行,最后房价都会上涨,多次训练后,人们也就都学会了。

人工智能需要大数据

然而,神经网络包含这么多的节点,每个节点又包含非常多的参数,整个参数量实在是太大了,需要的计算量实在太大。

但没有关系,我们有大数据平台,可以汇聚多台机器的力量一起来计算,就能在有限的时间内得到想要的结果。

人工智能可以做的事情非常多,例如可以鉴别垃圾邮件、鉴别黄色暴力文字和图片等。

这也是经历了三个阶段的:

依赖于关键词黑白名单和过滤技术,包含哪些词就是黄色或者暴力的文字。随着这个网络语言越来越多,词也不断地变化,不断地更新这个词库就有点顾不过来。

基于一些新的算法,比如说贝叶斯过滤等,你不用管贝叶斯算法是什么,但是这个名字你应该听过,这是一个基于概率的算法。

基于大数据和人工智能,进行更加精准的用户画像、文本理解和图像理解。

由于人工智能算法多是依赖于大量的数据的,这些数据往往需要面向某个特定的领域(例如电商,邮箱)进行长期的积累。

如果没有数据,就算有人工智能算法也白搭,所以人工智能程序很少像前面的 IaaS 和 PaaS 一样,将人工智能程序给某个客户安装一套,让客户去用。

因为给某个客户单独安装一套,客户没有相关的数据做训练,结果往往是很差的。

但云计算厂商往往是积累了大量数据的,于是就在云计算厂商里面安装一套,暴露一个服务接口。

比如您想鉴别一个文本是不是涉及黄色和暴力,直接用这个在线服务就可以了。这种形势的服务,在云计算里面称为软件即服务,SaaS (Software AS A Service)

于是工智能程序作为 SaaS 平台进入了云计算。

基于三者关系的美好生活

终于云计算的三兄弟凑齐了,分别是 IaaS、PaaS 和 SaaS。所以一般在一个云计算平台上,云、大数据、人工智能都能找得到。

一个大数据公司,积累了大量的数据,会使用一些人工智能的算法提供一些服务;一个人工智能公司,也不可能没有大数据平台支撑。

所以,当云计算、大数据、人工智能这样整合起来,便完成了相遇、相识、相知的过程。

我在小区门口,骂赢30个广场舞大妈

星河路北口的广场上,跳舞的大妈们安分了不少,伴奏的声音也低调了许多,听说是因为周围住户请来“威震四九城,骂哭全世界”的吵架大师周龙星,舌战群妈,挑了领舞的老太太。吵架谁都会,但吵架的奥义却鲜有人知,我们的故事就从这件事展开……

广场上千钧一发,喧闹的伴奏还在进行,大妈们却都停了舞步,围在一处。人群中站着一高一矮两名青年男子,矮的泰然自若,高的神色惊惶。

“老姊妹们,咱就在这儿跳!你算哪根葱,城管都不管,你管得着么?”尖利的嗓音从远处刺来,人群分散开,一名打扮得花枝招展的老太太冲上前,叉腰梗脖瞅着那矮子——周龙星。

周龙星神色自若,完全没被大妈的气势唬住,他冷冷回头,问躲在自己身后文质彬彬高个子:“就是她?”

高个子双手颤抖推了推眼镜,越过周龙星的肩膀偷瞄,刚想说话,就被领头的老太太认了出来:“原来是你小子!挨骂没挨够是不?姐妹们,就是他,三番五次去派出所投诉,怎么着,投诉不成,就把你后爹喊来给你做主啊?哈哈哈!”

高个子被嘲笑一番,红着脸又把头缩了回去,藏到了周龙星的身后。大妈们哄笑一团,放肆的笑声传到远处,吸引了更多前来围观的人。

“知道了,先说好,气死你承担,打我你扛着!”周龙星不搭理旁人,轻声说。

领头的老太太以为对方怯了,趁胜追击道:“呦,没动静喽,瘪茄子喽,脑袋浸裤裆里喽!赶紧跟你后爹回家去吧,奶奶们忙着呢!”

高个子被骂面红耳赤,但还是有些担心:“也别气死啊,大师,帮我出口气就行。”

周龙星冷笑一声:“晚了!老太太欺人太甚!”

此时,周围已经里三层外三层站满了看热闹的人,其中不少是广场旁边小区的住户,也都是这广场舞的苦主——每到晚上五点,随着凤凰传奇第一首《最炫民族风》,这里就开启了舞蹈模式。堪比夜店的低音炮划破天际,能传到小区最远那栋楼的窗户里,时不常还夹杂着大妈们穿透力极强的欢笑,尤其在某首不知名的歌曲中,大妈们竟还要喊广场号子:“跳跳舞,拍拍手,开心快乐全都有!啪!开心!啪!快乐!嘿!健康!嘿!长寿!”

星河小区的住户苦不堪言,多次协调社区和城管,却都失望而归,跳舞的大妈们为了报复他们“背后使刀子”,把音乐越放越大。有的业主甚至低价出售了房子,自己寻清静去了,剩下的,只能用泡沫胶封住窗户,尽量减少噪音。

面前这个高个子,就是苦主中的一位。原本,他并没有太在意这些事情,直到某天他发现,孩子写作业的时候,口中总是哼哼凤凰传奇、乌兰托娅、慕容晓晓的歌,他才意识到事态的严重。终于,在协商未果,又被喷得狗血淋头、彻底认怂后,他不惜花费重金,请来了京城名嘴,传说中的吵架大师——周龙星!

“老太太们,快别笑了,看看地下这一层白灰,脸上涂了多少粉啊?这一笑跟下雪似的!”周龙星一开口,没有针对那个领头的老太太,而是范围攻击,他知道,对付眼前这人,要先把周围起哄的吓住,不然干扰过多,不利于精准打击。

果不其然,大妈们立即停止了哄笑,铁青着脸看他。

“哎呀妈呀,你们还是笑吧,不笑更难看了,一个个皱皱巴巴的,难怪成天在这跳皮影戏!”周龙星见效果出来了,立即补上一刀。

领头大妈果然是老江湖,几个深呼吸就适应了战局,拍拍手道:“有娘生没娘教的玩意儿,你说谁呢?你长得漂亮,跟个纸扎人儿似的,谁家出殡烧山给你弄丢了?”

周龙星知道遇见了狠角色,不怒反笑,当真摆了个纸扎人的样子,双手紧绷着垂在身侧,装作木讷地说:“你家出殡啊,你老头子不今早刚走吗?让我来给你捎个话,赶紧回家守丧,别老穿得花花绿绿的出来丢人现眼,不然找个日子就给你一并带走!”

围观的人笑成一团,捂着嘴按着肚子,大妈堆里有些憋不住的也笑出了声。周龙星却依旧“僵硬”,盯着大妈的表情,随时准备接招。

“放屁!你咒谁死呢?最该死的就是你!吃饱了撑的没事儿干,上这跟奶奶裹乱,尿不湿都没脱的娃娃,欠抽吧你!我告诉你,我心脏不好,你给我气倒了,你看我儿子饶得了你不!”大妈阵脚已经乱了,开始碰瓷儿了。

身后的高个子有些惧了,怼了怼周龙星:“大师,差不多得了,你这也太狠了!别真给人气病了。”

周龙星战意正浓,充耳不闻,接着说:“呀!有孩子啊!我还以为你是个老绝户呢!”

此话一出,大妈再也忍不住了,甩开一旁劝阻的老姐妹,疯了似的冲向周龙星:“操你姥姥!我今天跟你拼了!”

“差不多了,大师,快跑!”还不等周龙星反应,高个子一把拽住他的胳膊,撒腿就跑,看来是个斗争经验丰富的“老兵”。

周龙星却意犹未尽,边跑边骂:“追不上吧,死老太太,广场舞都白他妈跳了,老胳膊老腿儿的,你不是健康吗?你能跑动吗?你不是快乐吗?我以后天天儿来,叫你们快乐不起来!!”

“你你你!你个龟孙子欺负老人!”

“我我我,我不欺负老人,我专治老瘪犊子!”

“你别跑!我跟你一命抵一命!”

“你得了吧,你那烂命值几个钱,土都埋到抬头纹了······”

周龙星,京城资深的吵架大师,时刻秉行着“把自己性命置之度外,把雇主需求摆在眼前”的职业理念,真正做到了:无所不吵,无吵不赢。

前段时间《延禧攻略》大火,很多人大呼过瘾,纷纷表示想学魏璎珞怼人的技术。但在周龙星眼中,魏璎珞还差得远。毕竟,魏璎珞只是用手段和语言维护自己的利益,总还站在正义一方。

周龙星不同,他不管雇主是否正确,只管吵。“有理走遍天下”,这句话确实是对的,但评判吵架大师的技术,更要看的是,“无理雄辩三分”。

他替离职员工骂老板,把老板骂得体无完肤,在公司里彻底没了威信;替老板骂公司员工,把员工骂得一无是处,主动提出降薪加班。他替原配骂小三儿,把小三儿嚣张的气焰彻底浇灭,从此男人下班就回家,和小三儿断了联系;也替小三儿骂原配,原配一气之下撕了结婚证,扯着男人就去民政局离婚,最终小三儿顺利上位。

他能有现在的成就,剑走偏锋干上这一本万利的行业,离不开他对都市人心理的准确拿捏和细致剖析。

其实,他原本是做出气大师的,也就是供人撒气的出气筒,套上个头盔站在广场上,挨骂挨打,泼脏水吐唾沫随便,只要客户把心里的憋闷发泄出去,就算他生意做成了。但随着接触的客户增多,周龙星越来越觉得,替人吵架可能是一个新的赚钱机遇。因为他发现,很多人明明已经受到了极大的委屈和侵犯,却还是习惯忍气吞声,知道的,来找他发泄,不知道的,就朝亲近的人撒泼。吵架这件事情,似乎成了都市人最大的痛点。

有痛点,就有商机嘛。

经过一番调查研究,周龙星得出都市人习惯忍气吞声的两大原因:一是不敢吵,二是不会吵。前者是迫于生计,后者嘛,总是半夜睡不着,后悔白天吵架没发挥好。

在周龙星的统计数据里,受教育程度越高的人,道德约束越强,越不善于发泄自己不满的情绪,也就越不敢在表面一片祥和的社会上发出不和谐的声音。而且,大家对吵架本身抱有很大偏见,认为吵架只是宣泄情绪,不能解决问题,是低级的、不理智的做法。

可事实上,很多雇主棘手的问题,都是在周龙星替他们大吵一架以后解决的。

周龙星认为,之所以吵架能够解决问题,是因为吵架本质上十一种高频词信息互换,持有不同意见的双方,在吵架的过程中被迫重新梳理自己的观点,同时也需要细致分析对方的意见,这些,对问题的解决都是有重要意义的!

所以,他把吵架当成了自己毕生的事业,并立志要为此奋斗终生。

他学习心理学,分析不同人群的心理防线;研究微表情,确保时刻掌握对手的情绪状态;苦读古典文学,背诵唐诗宋词,以求在吵架的时候引经据典,高端大气。他还特地报了播音主持的培训班,成为班里最大的学生,和孩子们一起练习绕口令,发声和气息,让自己每一句话都字正腔圆,掷地有声。

除此之外,在闲暇的时间,也不忘记练功,有事儿没事儿就跑到前门大街、南锣鼓巷,专门找茬,和来旅游的各地人吵,以积累实战经验。

跟上海人吵,适应他们吴侬软语下不屑的嘲笑;和天津人吵,熟悉他们歇后语和俏皮话一套接着一套;和北京人吵,体会皇城根下祖传的连环嘴炮,以及尊称中的反讽。最后,他冒着生命危险和东北人吵,为的是训练自己的抗击打能力,以备不时之需,毕竟,东北人的吵架的特点是,能动手就不吵吵。不过,他外语不太好,遇见说英文的还能应付两句,其他语种只能各自为战了,幸好人的情绪是相通的,他竟然通过动作和微表情,骂哭过一个北海道的女厨师。

总之,历经千辛万苦,他终于成为“威震四九城,骂哭全世界”的吵架大师!

这也是刚刚他被请来对战广场舞大妈的原因。

“总算出了这口气,大师,明儿我给您送面锦旗!”跑出广场,雇主激动地攥住了周龙星的双手,“太谢谢您了。”

周龙星跑得上气不接下气,咽了口吐沫说,“别······别废话,锦旗顶什么用,给钱!”说着,他从怀里掏出二维码,递到男人手中,“扫码付款,今天······可以······摇一摇抽奖。”

“大师,我这不是团购了么?”

“把团购退了,美团扣我七个点呢!你按原价给我就行,退款原因就写你买错了!”周龙星语气不容反驳,男人只好老老实实地重新交了钱,生怕一不小心惹他又开骂。

“大师,有个事儿我还得咨询您,小两口吵架的活儿您接不接?”

周龙星想了想,问:“领证了么?情侣还是夫妻啊?分手一个价位,离婚一个价位。”

“没有,谈恋爱呢。这人是我弟弟,跟女朋友成天吵架,我俩一个爹,嘴都笨,总吃亏,他老跟我抱怨。您不知道,我在家就让我媳妇天天骂,哪有招给他使啊?这不认识您了么,”男人讪笑着,“他是说过想分手,可总是放不下狠话。”

“那你俩一起多好,哥俩儿还能打个折,她对象、你媳妇我都负责了,从此兄弟二人恢复单身,再找机会梅开二度,怎么样?”周龙星一副包您不亏的模样。

男人笑了笑:“我媳妇就算了,孩子都大了,我也习惯了,但是我弟弟不成啊,要么就婚前适应好,要么就赶紧分,可不能步我的后尘!”

周龙星见男人态度明确,也不强求:“那就具体问题具体分析吧!多少钱见面再聊,让你弟弟联系我就行,另外这两天出门多留神,广场那边绕着点儿走吧!挨打了可别怪我。”

说完,周龙星兜着手消失在夜色中。

陈学找到周龙星的时候,他正和某位当红小鲜肉的粉丝们骂得起劲,这是他最近的必备功课。他倒不是针对谁,明星嘛,有人喜欢演有人喜欢看,谈不上对错。只不过粉丝圈是个练习吵架的好地方,别的场合,人们都太理智,只有在网上的粉丝圈,他才能找到单挑杠全场的机会。

“大师,我是陈冬的弟弟,就是,之前找您骂广场舞大妈的那个人。”

周龙星手不离键盘,扫了眼陈学,心中暗赞陈家老爷子基因强大,这两兄弟长得跟原装和高仿似的,甚至身上散发的孬种气质都如出一辙。

“啊,听你哥说了,坐,坐下聊。”周龙星关掉浏览器,从办公椅上站了起来,和陈学对坐在茶桌前,泡起了功夫茶,“说说,怎么个吵法,是要给她弄哭啊,还是叫她认错啊,或者干脆点儿,给她骂分手?”

“认错也好,分手也罢,我必须赢她一次,两年来,您知道我憋得多难受么!”

“理解,完全理解。”周龙星说着,拿竹夹子夹起一个小瓷杯,放在陈学面前。

“不,你不理解,没有人能够理解我,我原本是个开朗外向的人,自从被她频繁地侮辱和谩骂后,我已经失去男子汉气概了,自卑、懦弱、胆小,甚至连分手都不敢提。”陈学没有闲心喝茶,一边说一边攥紧了拳头,“即便真的分手了,我也要先找回我的自信,重新成为带把儿的!男人!”

周龙星正在沏茶,陈学滑稽的样子把他逗的前仰后合,差点打翻了杯子:“带把儿的!哈哈,没毛病老铁!来来来,先喝茶。”

陈学僵硬地接过茶杯,面无表情看着周龙星:“我找你,不是让你嘲笑我的,是解决问题的。”

“好,解决问题,咱们怎么弄,是微信啊还是电话,我这有变声器,可以转换成你的声线。”谈到正事儿,周龙星勉强收起了笑容,正襟危坐地问。

“不,就要面对面杠她!当然,你出面肯定是不行的,只能远程协助,这套迷你监视设备给你,我家里也安了一套,一旦她要和我吵架,我就发微信给你,我们一起把设备打开,这样你的耳机能听见我这边的内容,我的耳机也能听见你这边的回应,通过我眼镜上的摄像头,你也能大致看见现场的情况。设备我试过了,通讯延迟非常小。”陈学摆出一副工科男独有的严谨。

周龙星接过设备放在一旁:“你想好了?吵架以后分手了,跟我无关,你要是被她挠得满脸血,也别来怪我!”

“好。”陈学鼓足了极大的勇气说。

送走了陈学,周龙星喝了口茶,惬意地躺在沙发上,对他来说,陈学这单买卖这并非什么难事。

从古至今,男人和女人吵架,鲜有大获全胜的,因为男人总想摆事实,讲道理,想用逻辑制服敌人,但实际上这并不能伤害女人一丝一毫,她们对于吵架一事,精明着呢,有时谈理性谈成熟,有时用情绪主导全部,可谓百毒不侵。对付她们只能用最简单的办法——无理取闹、胡搅蛮缠,生生把她们气死!

连续接了两单的周龙星春风得意,刚想出门喝两杯,没想到当天晚上,陈学便发来消息:“大师,她又来劲了!”

“打开设备,开干!”

“骂的就是你,怎么了,跟个废物一样,每天就知道打游戏,吃完饭不刷碗,像坨细屎一样往沙发上盘。”监控器里传来女生尖酸刻薄的言语,话虽然难听,但周龙星觉得陈学似乎也大男子主义了,不会做饭还不会刷碗吗?找女朋友又不是找保姆。

他没有急于反击,静静地听着事态发展。

陈学愣了一会儿,似乎在等耳机里周龙星的回应,见周龙星迟迟没有说话,只好根据经验瞎说:“你不也在看淘宝么?”

“我看淘宝怎么了,马上就要双十二了,我不提前把东西选好,到时候穿什么用什么?”

“双十一不是买过了吗,怎么还买?”

“是啊,还不是因为找了个没用的男朋友,只能在促销打折的时候买东西,还要熬夜去抢,我那些同事闺蜜,人家从来都不网购,实体店推门就进,我能行吗?就你那点工资,我看见专柜的标签腿肚子都抽筋。别废话了,赶紧刷碗去!”女生思维缜密,语速适中,很自然地把自己的网购行为说成了男人没出息。

周龙星从烟盒里抽出一支南京,轻轻地点燃:“放心,大师在,跟她杠。”

陈学心领神会,仿佛找到了靠山,清了清嗓子说:“以前都说好的,我做饭你洗碗,可是打从咱们住到一起,你一次碗都没洗过。”

周龙星猛吸了一口烟,原本以为雇主是个直男癌患者,没想到晚饭竟然是他做的,呵,对付一个公主病的黄毛丫头,那就更好办了!

“嘿,你想吵架是不?”

贼喊捉贼!女人这招用得妙。一看对手不是菜鸟,周龙星也来了战意,抄起话筒,坚定地说:“忍你很久了,今天咱们好好理论理论。”

陈学深吸了一口气:“凡凡,我忍很久了,今天咱好好说说。”

周龙星:“我说什么你说什么,别他妈添字儿改字儿!”

“你还忍了很久了,说,今天不把话说清楚咱们没完,好像我欺负你似的。”果然,陈学气势一弱,对方立马占领了高地。

周龙星:“别把自己说得那么厉害,你个娘们儿能欺负到谁?”

陈学这次没有再修改周龙星的话,一次不漏地复述说:“别把自己说得那么厉害,你个娘们儿能欺负到谁?”

“呦,你是爷们儿?男子汉大丈夫?实话告诉你,你还真赶不上个女人,婆婆妈妈的,八竿子打不出一个屁。”

“我是怕熏着你。”

“还学会顶嘴了,看看你那副样子,长了一副欠骂的脸,我真是瞎了眼才看上你,这碗不洗是吧?那就堆着,反正我眼不见心不烦,看看谁能耗过谁!”女生一副无赖的样子。

“对啊,你瞎啊,你当然眼不见心不烦了。”陈学说。

“你说谁瞎呢?四眼田鸡!”

“你不瞎,你是残废!不做饭不洗碗,长个大嘴就知道喊。”

“敢骂我,你算什么男人!骂女朋友,真是有出息啊!”

“哎呀,你是我女朋友啊,我还以为你是我祖宗呢?失敬失敬。”

女生似乎觉察到了什么,一秒就红了眼睛,捏起嗓子撇嘴说:“你是不是外面有人了?你以前不舍得骂我的。”

周龙星当然知道,这是女人的常用套路,一旦见了颓势,立即就诬陷男人变心了、背叛自己。男人们最不会处理的就是这种话,说没有吧,气势上就输了一截,女人一旦说“我不信”,男人在随后的吵架过程中则需要不停地解释自己没有出轨,忘记了吵架初衷,节节败退,一溃千里。

如何破这个局,周龙星一般选择反其道而行之,不管有没有,先说有,如果最后和解,可以称自己说的是气话,毕竟谁出轨了也不会一问就当场承认。

“对,等你腾地方呢,长得特别漂亮,素颜比你化浓妆都性感!”

果然,女生一受刺激,立马收起可怜巴巴的样子,恢复了河东狮子王的面目。

“就你?别做梦了,姑奶奶跟你都算做慈善,还有人能看得上你?”

陈学说:“你也太自以为是了,你光着屁股追我两公里我回一次头都算耍流氓!”

“你变了!陈学,你不爱我了!你忘了当初追我的时候了吗?”女生猝不及防,楞了半晌,竟然带着哭腔,以退为进。

周龙星却一拍大腿,兜兜转转这么久,终于找到决战契机,可以把问题重新带回去了:“对啊,当初,你忘了当初说我做饭你洗碗的事儿了吗?”

你看,先胡搅蛮缠,再讲逻辑,赢了。

陈学和女朋友并没有分手,他告诉周龙星,那天吵完架,女朋友凡凡嘟着嘴老老实实地把碗刷了,并且小心翼翼给他认了错,还保证从今以后吃完饭都会及时把碗筷洗干净。陈学觉得,他终于重新找回了男人的感觉,为了这种状态能够长久保持下去,他决定继续雇佣周龙星帮他吵架。

周龙星欣然接受了这样一个长久的大单,在之后的半个月时间里,只要陈学和女朋友有了分歧和矛盾开始吵架,周龙星远程战局,而陈学自从有了后台支撑,有时候即便凡凡没有主动吵架,他也要周龙星帮他怼女朋友几句,诡异的是,二人的关系却并没有恶化,反而感情越来越好了。

但是,让周龙星没想到的是,陈学的女朋友凡凡,竟然通过其他渠道,也找到了他。

“大师,您知道么,他一骂我,我就特兴奋,觉得他好man啊!完全不是以前的怂样子,您能理解么?那些妙语连珠,那些金句频出,在我看来,比六块腹肌甚至LV、Gucci都更迷人,天啊,太男人了!”姑娘一脸痴情。

打从姑娘一张嘴,他就觉得头皮发麻,这声音容貌,不正是这些天来,自己远程怒骂的女孩儿吗?如今她就坐在自己对面,并且想要雇佣自己和她男友吵架,这实在是,有些猝不及防。

周龙星稳了稳心神,故作镇定地说:“那你来找我干嘛?吵回去?那岂不是抹杀了他的男人味,姑娘,我有些不懂你了。”

凡凡却摇摇头说:“大师,我当然不想抹杀这些美好,但是最近我觉得自己力不从心了,有时候我跟他吵一两句,就词穷,而且这种趋势愈发明显,我怕有一天他觉得我没有战斗力,懒得和我吵,那我就要失去他了,大师,我真的不想失去他。”

“那你要我怎么做?”眼见着悍妇变萝莉,周龙星一身鸡皮疙瘩。

“陪领导下棋的故事您听说过么?又让他赢,又不能叫他轻松地赢。”凡凡狡猾的笑了笑。

“你这不是装吗!”

“女人嘛,为了爱的男人,总要装一装的。”

送走凡凡,周龙星把陈学的监听设备和凡凡的监听设备并放在桌子上,两个耳机和两个话筒扭曲纠缠在一起,正如同他此刻的心情,别扭,纠结。面对从业以来最大的危机,周龙星沉默良久,终于把心一横:钱要赚,事儿得办,自己要跟自己干!

“你小时候被猪亲过吧?”

“这你都知道,亲我的那头猪是你吧?”

“看你走个路都昂首挺胸的,怕别人不知道你是飞机场吗?”

“我还没喊口号呢,一,二,三,你就完事儿了?”

“还喊口号,说话都不利落,成天跟含着大鼻涕似的。”

每到俩人吵架的时候,周龙星就手忙脚乱,打开这个麦说一句,然后赶紧关掉,再打开另一个麦说下一句,一个人扮演歌手和音响师。在来回变换设备的同时,他又要迅速想好自己如何应对自己。他尝试过提前写好台词,然后照着本子念,却发现陈学和凡凡经过这么多次的吵架洗礼,总是偶尔自由发挥一下,往往念不上几句,自己的节奏就被打乱,最后索性丢掉台本,凭多年的吵架经验临场应对,真把自己当做另一个人去吵。

直接、间接、讽刺、夸张、比喻、排比、诅咒、侮辱,当年他入行的时候,万不会想到,毕生所学施展到炉火纯青的时候,竟然是自己和自己吵,而且越吵越凶,越吵越气愤,最后甚至用上了粗口,自己骂自己。

第七天的时候,周龙星终于撑不住了,他同时对着两个麦大吼一声:操你妈!耳机里再也听不到大师吵架的话语,取而代之的是痛彻心扉,惊天动地的哭嚎!

听完了事情的始末,我问面前正襟危坐的三人:“然后,他就一句话都不再说了?”

对面叫凡凡的女孩满脸担忧:“我俩在他工作室找到人的时候,他就只是哭,那哭声惨烈得我都忍不住落泪,最后哭累了,嗓子也哑了,就干张嘴不出声,最后干脆嘴也不张了,只是无论我们跟他说什么,他都不说话,折腾一宿,这不,赶紧就带他来你这儿了。”

一旁的男人点点头:“哎,都怪我这弟弟和弟妹,生生给大师逼疯了。”

姑娘一撇嘴,不满地说:“要不是你介绍他给陈学认识,也不会有今天!”

挨着女生那个叫陈学的男孩用胳膊肘碰了碰女孩,示意她别再说话,略带歉意地看着我:“方哥,您就帮个忙吧,他在北京无亲无故的,您要是不帮忙,我们真不知道该怎么办了!说真的,我挺感激他的,求您救救他!”

陈冬接着说:“是啊,您说这叫咋回事儿嘛,好好一个大活人,怎么就突然就不说话了······”

“他只是没有发出声音罢了······”我打断他说。

“没发出声音,什么意思?”三人疑惑的齐声问我。

“其实,大师现在的症状,和多重人格患者有些相似,但本质却不同。多重人格之所以让人觉得异常,是因为他们经常通过语言和肢体来表达除本身以外的一个或多个人格,比如,说傻话做傻事,自己和自己交谈。”

我瞥了眼墙角被称为吵架大师的周龙星,继续道:“大师的情况特殊,归根到底,是因为他同时接手了你们二人的委托。其实,自己骂自己简单,我们偶尔也会懊恼后悔,骂自己几句,但要分饰两角,一男一女,又要在快速的吵架过程中,调整自己的人设,这就很难了。

“男人吵架,冷酷无情,逻辑清晰,善于把问题舒展成一条线,有时间轴,有起因经过结果,用女人的话说,总是太理性,明明是感情的问题,偏偏要讲道理。”

“而女人吵架,反复无常,多点开花,完全凭感觉说话,如果把男人的那条吵架轨迹画出一条线,女人则是围绕直线上下左右,毫无规律的密密麻麻的点,她们又善于把点扩展成立体的多维度的,语气、表情甚至音量等等因素,全都在关注范围内,所以男人往往说她们不讲道理。”

“这和大师不说话有什么关系呢?”那对小情侣异口同声地问。

“大师这几天来,频繁转换自己的身份吵架,这种转换是被动的,又是主观的,他既需要成为你们俩,体会吵架时的情绪,又需要调动自己的经验,调整话术。这样一来,他就在你们吵架的时候,迅速转换陈冬、凡凡、自己三个人设,嘴里不停地表达脑中所想。当思维运转的速度过快,嘴终于跟不上了思维的节奏的时候,开口讲话能力滞后,脑子却飞速思考,便导致了失语。”

三个人恍然大悟,都松了口气,我接着说:“所以我说,他只是没有发出声音罢了,如果我的推断是正确的,他脑中三个小人,此时还在喋喋不休的争吵着。”

“天啊,这太可怕了!”凡凡惊呼道。

我笑了笑说:“你们万幸吧,大师思维能力比语言能力强,如果反之,脑袋跟不上嘴的速度了,此刻就不仅是不发声的问题了,而是胡言乱语,脑神经纠缠一团,再解开就难了。”

“那现在这样是不是不算严重,方锐老师你这么厉害,一定可以救他,对吗?”陈学近乎哀求地看着我。

“可别抬举我,我也就是个传话的,能不能救,得看领导。”看着他们急切的目光,又瞧了瞧蹲在墙角一言不发的周龙星,我叹了口气:“大家伙啊,有这么个事儿得跟您说叨说叨······”

调查结果:

吵架本质上是一个高频信息互换,持有不同意见的双方,在吵架过程中被迫梳理己方的观点,重新剖析对方意见。因此,适度的争吵队解决双方矛盾,有一定积极意义。

Web前端开发人员应该知道的JavaScript技巧有哪些?

熟悉Web前端工作的小伙伴都知道,在Web工作中离不开JavaScript的使用,js的技巧有很多,那么Web程序员都需要掌握哪些呢?下面让我们一起来看一看吧!

主要技巧有:

· 相等

· 点号vs括号

· 函数上下文

· 函数声明vs函数表达式

· 命名vs匿名函数

· 立即执行函数表达式

· typeof vs Object.prototype.toString

1、相等

C#出身的我非常熟悉==比较运算符。值类型(或字符串)当有相同值是是相等的。引用类型相等需要有相同的引用。(我们假设你没有重载==运算符,或实现你自己的等值运算和GetHashCode方法)我很惊讶为什么JavaScript有两个等值运算符:==和===。最初我的大部分代码都是用的==,所以我并不知道当我运行如下代码的时候JavaScript为我做了什么:

这是黑暗魔法吗?整数1是如何和字符串”1”相等的?

在JavaScript中,有相等(==)和严格相等(===)之说。相等运算符将强制转换两边的操作数为相同类型后执行严格相等比较。所以在上面的例子中,字符串”1”会被转换为整数1,这个过程在幕后进行,然后与变量x进行比较。

严格相等不进行类型转换。如果操作数类型不同(如整数和字符串),那么他们不全等(严格相等)。

你可能正在考虑可能发生强制类型转换而引起的各种恐怖问题——假设你的引用中发生了这种转换,可能导致你非常困难找到问题出在哪里。这并不奇怪,这也是为什么经验丰富的JavaScript开发者总是建议使用严格相等。

2、点号VS.括号

这取决于你来自其他什么语言,你可能见过或没见过这种方式(这就是废话)。

1. //获取person对象的firstName值

2. var name = person.firstName;

3.

4. //获取数组的第三个元素

5. var theOneWeWant = myArray[2]; // remember, 0-based index不要忘了第一个元素的索引是0

然而,你知道它也可以使用括号引用对象的成员吗?比如说:

1. var name = person["firstName"];

为什么会这样有用吗?而你会用点符号的大部分时间,有几个实例的括号使某些方法可能无法这样做。例如,我会经常重构大开关语句到一个调度表,所以这样的事情:

为什么可以这样用?你以前可能对使用点更熟悉,有几个特例只能用括号表示法。例如,我经常会将switch语句重构为查找表(速度更快),其实就像这样:

可以转化为像下面这样:

使用switch并没有错误(并且在许多情况下,如果被迭代多次并且非常关注性能,switch可能比查找表表现更好)。然而查找表提供了一个很好的方法来组织和扩展代码,并且括号允许你的属性延时求值。

3、函数上下文

已经有一些伟大的博客发表了文章,正确理解了JavaScript中的this上下文(在文章的结尾我会给出一些不错的链接),但它确实应该加到“我希望我知道”的列表。它真的困难看懂代码并且自信的知道在任何位置this的值——你仅需要学习一组规则。不幸的是,我早起读到的许多解释只是增加了我的困惑。因此我试图简明扼要的做出解释。

第一——首先考虑全局情况(Global)

默认情况下,直到某些原因改变了执行上下文,否则this的值都指向全局对象。在浏览器中,那将会是window对象(或在node.js中为global)。

第二——方法中的this值

当你有一个对象,其有一个函数成员,冲父对象调用这方法,this的值将指向父对象。例如:

你可能已经知道你能引用marty对象的timeTravel方法并且创建一个其他对象的新引用。这实际上是JavaScript非常强大的特色——使我们能够在不同的实例上引用行为(调用函数)。

所以——如果我们调用doc.timeTravel(1885)将会发生什么?

再次——上演黑暗魔法。嗯,并不是真的。记住,当你调用一个方法的时候,this上下文是被调用函数父的父对象。

当我们保存marty.TimeTravel方法的引用然后调用我们保存的引用时发生了什么?让我们看看:

让我们问一个关键的问题:当我们调用我们的getBackInTime函数时父对象/容器对象是什么?当getBackIntTime函数存在于window中时,我们调用它作为一个函数,而不是一个对象的方法。当我们像这样调用一个函数——没有容器对象——this上下文将是全局对象。David Shariff有一个伟大的描述关于这:

无论何时调用一个函数,我们必须立刻查看括号的左边。如果在括号的左边存在一个引用,那么被传递个调用函数的this值确定为引用所属的对象,否则是全绝对象。

由于getBackInTime的this上下文是window——没有firstName和lastName属性——这解释了为什么我们看见“undefined undefined”。

因此我们知道直接调用一个函数——没有容器对象——this上下文的结果是全局对象。然而我也说我早就知道我们的getBackInTime函数存在于window上。我是如何知道的?好的,不像上面我包裹getBackInTime在不同的上下文(我们探讨立即执行函数表达式的时候),我声明的任何变量都被添加的window。来自Chrome控制台的验证:

是时候讨论下this的主要用武之地之一了:订阅事件处理。

第三(仅仅是#2的扩展)——异步调用方法中的this值

所以,让我们假装我们想调用我们的marty.timeTravel方法当有人点击一个按钮时:

在上面的代码中,当用户点击按钮是,我们会看见“undefined undefined is time traveling to [object MouseEvent]”。什么?好——首先,非常明显的问题是我们没有给我们的timeTravel方法提供year参数。反而,我们直接订阅这方法作为事件处理程序,并且MouseEvent参数被作为第一个参数传递个事件处理程序。这是很容易修复的,但真正的问题是我们再次见到“undefined undefined”。不要无望——你已经知道为什么会发生这种情况(即使你还没意识到)。让我们修改我们的timeTravel函数,输出this,从而帮助我们搞清事实:

现在——当我们点击这按钮,我们将类似下面的输出在你的浏览器控制台:

当方法被调用时,第二个console.log输出出this上下文——它实际上是我们订阅事件的按钮元素。你感到吃惊吗?就像之前——当我们将marty.timeTravel赋值给getBackInTime变量时——对marty.timeTravel的引用被保存到事件处理程序,并被调用,但容器对象不再是marty对象。在这种情况下,它将在按钮实例的点击事件中异步调用。

所以——有可能将this设置为我们想要的结果吗?绝对可以!在这个例子里,解决方法非常简单。不在事件处理程序中直接订阅marty.timeTravel,而是使用匿名函数作为事件处理程序,并在匿名函数中调用marty.timeTravel。这也能修复year参数丢失的问题。

1. flux.addEventListener("click", function(e) {

2. marty.timeTravel(someYearValue);

3. });

点击按钮将会在控制台输出类似下面的信息:

成功了!但为什么这样可以?思考我们是如何调用timeTravel方法的。在我们按钮点击的第一个例子中,我们在事件处理程序中订阅方法自身的引用,所以它没有从父对象marty上调用。在第二个例子中,通过this为按钮元素的匿名函数,并且当我们调用marty.timeTravel时,我们从其父对象marty上调用,所以this为marty。

第四——构造函数中的this值

当你用构造函数创建对象实例时,函数内部的this值就是新创建的对象。例如:

你可能开始疑惑,上面的例子中,没有语言级别的特性允许我们在运行时指定调用函数的this值吗?你是对的。存在于函数原型上的call和apply方法允许我们调用函数并传递this值。

call方法的第一个参数是this,后面是被调用函数的参数序列:

1. someFn.call(this, arg1, arg2, arg3);

apply的第一个参数也是this,后面是其余参数组成的数组:

1. someFn.apply(this, [arg1, arg2, arg3]);

我们的doc和marty实例他们自己能时间旅行,但einstein(爱因斯坦)需要他们的帮助才能完成时间旅行。所以让我们给我们的doc实例添加一个方法,以至于doc能帮助einstein完成时间旅行。

现在它可以传送Einstein了:

我知道这个例子有些牵强,但它足以让你看到应用函数到其他对象的强大之处。

这种方法还有我们没有发现的另一种用处。让我们给我们的marty实例添加一个goHome方法,作为this.timeTravel(1985)的快捷方式。

然而,我们知道如果我们订阅marty.goHome作为按钮的点击事件处理程序,this的值将是按钮——并且不幸的是按钮没有timeTravel方法。我们能用上面的方法解决——用个一匿名函数作为事件处理程序,并在其内部调用上述方法——但我们有另一个选择——bind函数:

1. flux.addEventListener("click", marty.goHome.bind(marty));

bind函数实际上会返回一个新函数,新函数的this值根据你提供的参数设置。如果你需要支持低版本浏览器(例如:ie9以下版本),你可能需要bind函数的shim(或者,如果你使用jQuery你可以用$.proxy代替,underscore和lodash都提供_.bind方法)。

记住重要一点,如果你直接使用原型上的bind方法,它将创建一个实例方法,这将绕过原型方法的优点。这不是错误,做到心里清楚就行了。我写了关于这个问题得更多信息在这里。

4、函数表达式VS.函数声明

函数声明不需要var关键字。事实上,如Angus Croll所说:“把他们想象成变量声明的兄弟有助于理解”。例如:

上面例子里的函数名字timeTravel不仅在它声明的在作用域可见,同时在函数本身内部也是可见的(这对递归函数调用非常有用)。函数声明,本质上说其实就是命名函数。换句话说,上面函数的名称属性是timeTravel。

函数表达式定义一个函数并指派给一个变量。典型应用如下:

讨论函数表达式和函数声明不能不提“hoisting(提升)”——函数和变量声明被编译器移到作用域的顶部。在这里我们无法详细解释hoisting,但你可以读Ben Cherry和Angus Croll两个人的伟大解释。

5、命名VS.匿名函数

基于我们刚才的讨论,你可能一进猜到“匿名”函数其实就是一个没有名字的函数。大多数JavaScript开发者能迅速识别瞎买年第一个参数为匿名函数:

然而,同样的我们的marty.timeTravvel方法也是一个匿名函数:

因为函数声明必须有一个唯一的名字,只有函数表达式可以没有名字。

6、立即执行函数表达式

因为我们正在谈论函数表达式,有一个东西我希望我早知道:立即执行函数表达式(IIFE)。有很多关于IIFE的好文章(我将在文章结尾出列出),但用一句话来形容,函数表达式不是通过将函数表达式赋值给一个标量,稍后再执行,而是理解执行。可以在浏览器控制台看这一过程。

首先——让我们先敲入一个函数表达式——但不给它指派变量——看看会发什么:

语法错误——这被认为是函数声明,缺少函数名字。然而,为了使其变为表达式,我们仅需将其包裹在括号内:

让其变为表达式后控制台返回给我们一个匿名函数(记住,我们没有为其指派值,但表达式会有返回值)。所以——我们知道“函数表达式”是“立即调用函数表达式”的一部分。为了等到“立即执行”的特性,我们通过在表达式后面添加另一个括号来调用返回的表达式(就像我们调用其他函数一样):

“但是等一下,Jim!(指作者)我想我以前见过这种调用方式”。事实上你可能见过——这是合法的语法(众所周知的是Douglas Crockford的首选语法)

这两种方法都起作用,但是我强烈建议你读一读这里。

OK,非常棒——现在我们已经知道了IIFE是什么——以及为什么要用它?

它帮助我们控制作用域——任何JavaScript教程中非常重要的部分!前面我们看到的许多实例都创建在全局作用域。这意味着window(假设环境是浏览器)对象将有很多属性。如果我们全部按照这种方式写我们的JavaScript代码,我们会迅速在全局作用域积累一吨(夸张)变量声明,window代码会被污染。即使在最好的情况下,在全局变量暴漏许多细节是糟糕的建议,但当变量的名字和已经存在的window属性名字相同时会发生什么呢?window属性会被重写!

例如,如果你最喜欢的“Amelia Earhart”网站在全局作用域声明了一个navigator变量,下面是设置之前和之后的结果:

哎呀!

显而易见——全局变量被污染是糟糕的。JavaScript使用函数作用域(而不是块作用域,如果你来自C#或Java,这点非常重要!),所以保持我们的代码和全局作用域分离的办法是创建一个新作用域,我们可以使用IIFE来实现,因为它的内容在它自己的函数作用域内。在下面的例子中,我将在控制台向你显示window.navigator的值,然后我常见一个IIFE(立即执行函数表达式)去包裹Amelia Earhart的行为和数据。IIFE结束后返回一个作为我们的“程序命名空间”的对象。我在IIFE内声明的navigator变量将不会重写window.navigator的值。

作为额外好处,我们上面创建的IIFE是JavaScript中模块模式的启蒙。我将在结尾处包括一些我浏览的模块模式的链接。

7、‘typeof’操作符和’Object.prototype.toString’

最终,可能发现在某些情况下,你需要检查传递给函数参数的类型,或其他类似的东西。typeof运算符会是显而易见的选择,但是,这并不是万能的。例如,当我们对一个对象,数组,字符串或正则表达式,调用typeof运算符时会发生什么?

还好——至少我们可以将字符串和对象,数组,正则表达式区分开,对吗?幸运的是,我们可以得到更准确的类型信息,我们有其他不同的方法。我们将使用Object.prototype.toString方法,并且应用我们前面提到的call方法:

为什么我们要使用Object.prototype上的toString方法?因为第三方库或你自己的代码可能重写实例的toString方法。通过Object.prototype,我们可以强制实现实例原来的toString行为。

如果你知道typeof将会返回什么那么你不需要进行多余的检查(例如,你仅需要知道是或不是一个字符串),此时用typeof非常好。然而,如果你需要区分数组和对象,正则表达式和对象,等等,那么使用Object.prototype.toString吧。