作者小头像 Lv.3
434 成长值

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

大数据、数据库、微服务架构、编程语言
个人勋章
  • 活跃之星
成长雷达
360
54
0
0
20

个人资料

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

大数据、数据库、微服务架构、编程语言

达成规则

发布时间 2020/09/14 09:00:05 最后回复 Mr.兜兜 2020/10/14 09:23:19 版块 社区活动
16055 233 0
他的回复:
华为云ID:dzx_huawei + 第二周笔记人工智能的能与不能3.1 人工智能的发展史1、定义:是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的综合性的技术科学。1956年,约翰麦.卡锡提出人工智能:制造智能机器的科学与工程。2、目的:让机器像人一样思考,让机器拥有智能3、交叉科学:涵盖计算机科学、脑科学、认知科学、心理学、语言学、逻辑学、哲学等4、弱人工智能夯实强人工智能、超人工智能基础5、人工智能、机器学习、深度学习的关系:机器学习:研究计算机怎样模拟和学习人的行为以获取新的知识或技能,重新组织已有的知识结构,不断改善自己的技能。包括随机森林、决策树、贝叶斯学习、人工神经网络等。深度学习(炼丹术):源于人工神经网络的研究、模拟人脑机制, 比较依赖调参人员的经验6、人工智能的三要素:数据、算法、算力7、当前处于第三个爆发期。8、三大人工智能学派:符号主义:在符号主义眼里,人类认知和思维的基本单元是符号,而认知过程就是在符号表示上的一种运算,人是一个物理符号系统,计算机也是一个物理符号系统.。 连接主义、行为主义 3.2 人工智能的应用发展1、感情分析2、制造方面应用预测维护,能提前发现设备可能存在的故障,做到事前人为介入,提前排除故障,提高生产线产能。3、医疗方面引入AI辅助诊疗,尤其在病理分析领域,解决看片量大及病理专家极缺矛盾的问4、视觉、语音,自然语言处理 3.3 人工智能的未来1、所谓通用技术,简单理解就是有多种用途,应用到经济的几乎所有地方,并且有很大的溢出效应。2、未来突破方向:非监督学习和知识推理3、机器人三定律第一定律:机器人不得伤害人类个体,或者目睹人类个体将遭受危险而袖手不管第二定律:机器人必须服从人给予它的命令,当该命令与第一定律冲突时例外第三定律:机器人在不违反第一、第二定律的情况下要尽可能保护自己的生存4.1 算法4.1.1人工智能的理论上限通过一个表情识别案例说明了AI的误差来源之一:人类打标签产生的误差。有时候机器识别比人类高。误差的产生不一定是来自模型的误差或者AI的误差,可能会存在人的因素。表情的识别,表情的认知人类识别不是很好。AI辅助人类进行识别。4.1.2 AI会犯什么错AI也会犯错。安防领域等,如果胸前油画可能欺骗AI识别,图片蒙版等情况;利用干扰AI错误识别。AI攻击噪声、对抗。这种技术叫做生成对抗。置信度高并不一定是准确的。AI也有不确定性。在原始图像上引入噪声分布就会影响到图像识别的最终结果。人工智能就是你有多少人工就有多少智能。自动驾驶理论和实际相差很多。迁移学习:可以将一个场景应用训练出来的模型应用于另一个相似的场景中自动驾驶分为5个等级:L1-L5。AI没有紧急避险原则,人有。AI伦理问题:做AI的时候要有一定的思考,是否反人类反道德4.1.3 AI能做什么AI能做的和人类想要的的交集就是AI需要去做的自然语言处理的目标很难被量化处理。Language modelBertseq2seqA-B TEST:A/B-test是为同一个目标制定两个方案,在同一时间维度,分别让组成成分相同(相似)的用户群组随机的使用一个方案,收集各群组的用户体验数据和业务数据,最后根据显著性检验分析评估出最好版本正式采用。使用A/B-test首先需要建立一个待测试的版本服务,这个版本服务可能在标题、字体、排版、背景颜色、措辞等方面与原有版本服务有所不同,然后将这两个版本服务以随机的方式同时推送给测试用户。接下来分别统计两个版本的用户转化率指标,然后根据样本数据进行显著性检验。相关特征可以被有效的表达吗?不一定,但是精度可以提高。问题是否需要AI去解决,看具体的问题。有足够的数据来训练够准的模型吗?只能提高精度,但不能完全准确。 4.2 算力4.2.1机器学习到深度学习AI从统计逐渐往深度学习发展算法和算力的发展几乎是同步螺旋上升的AI发展史:56-76年 符号学+逻辑 Logic 第一阶段。76-06年 图谱、机器学习,专家系统,自动维护,自动问答系统- SM 第二阶段;06-现在 深度学习 DL(卷积神经、元)+大数据  第三阶段。4.2.2计算架构的迭代:从CPU,GPU到NPUAI芯片可分为训练芯片、推理芯片 ;模型放进去,进行训练得到结果。反向传播是不同的。成本比较敏感。性能排序:ASIC>FPGA>GPU>CPUFPGA,GPUs高计算性能,不是很实用;ASIC也在用;都是异构工业落地领域不常见的芯片类型是FPGA,因为同样的性能其成本为GPU3倍以上。芯片高性能会牺牲其灵活度。AI芯片架构,华为鲲鹏arm架构,指令集RISC,添加核心数,加主频方式;英文达GPU行业,利润高;定制化芯片方面;华为升腾芯片,INference推理芯片310 max能耗8w,Training训练芯片910 max能耗 350w;4.2.3 加速矩阵乘:scalar,Vector,Cube;DL Matrix Mul;计算单元3部分:CUbe->16位乘法。4.2.4端边云协同智能落地:AI生态,语音识别,语音处理,推荐系统,大数据分析;语音、视觉、自然语言;AI应用领域:图片搜索处理,声音、语言识别、声音文本转换、自动翻译、智能分析、人脸识别、车牌识别、自动识别、个人助手、情感识别等。智能分析决策:对话式AI;智能计算;智能分析等。 
发布时间 2020/09/14 09:00:05 最后回复 Mr.兜兜 2020/10/14 09:23:19 版块 社区活动
16055 233 0
他的回复:
华为云ID:dzx_huawei 第一周笔记:准备安装Python(www.python.orgpython 3.x 2.x)课前准备OM安装Visual Studio Code (微软)课前准备OM安装Visual Studio Code扩展课前准备OM运行Python,执行Python语句课前准备OM创建源码文件、保存、编辑源码初探pythonOM初探PythonC语言:源代码机器语言链接可执行文件执行Python:不需要编译成二进制代码,可以直接从源代码运行程序。源代码字节码机器语言执行优势:1.不用关心程序的编译和库的链接等问题,开发人员的工作更加轻松2.python代码与机器底层更远了,更加易于移植,基本上无需改动就能跨平台运行缺点:1.Python是解释语言,运行效率比C语言差。每次运行Python程序是要先将程序文件或者语句转换成字节码,然后再由Python虚拟机把字节码转换成机器语言,最后才能在硬件上运行。效率提升:1.编译成pyc文件,存储了字节码,节省了多次编译动作,减少运行时加载模块的时间。字节码的形式也增加了反向工程的难度,可以保护源代码2.调用C进行扩展OM初探Python对开发人员非常实用的函数:dir([obj]):显示对象的属性,如果没有提供参数,则显示全局变量的名字,通过执行dir(对象),可以看到其属性和函数信息OM初探Python输入help(),进入交互模式,q退出输入int, str,dict等获取帮助信息输入help(对象)直接获取帮助信息OM课程主要内容基本语句数据类型初探PythonWhy Python?数据类型OM数据类型Python支持的标准类型数字字符串(str)列表(list)元组(tuple)字典(dict)集合(set)OM数据类型Python支持的其它类型类型(type)Null对象(None)函数模块类文件OM数据类型标准类型的三种分类方式存储模型:看对象能保存多少对象更新模型:对象创建之后是否可以更新值访问模型:对象的访问方式Data TypeStorageModeUpdateModeAccess ModeNumberScalarinvariantDirectStringScalarinvariantSequential/RandomListContainermutableSequential/RandomTupleContainerinvariantSequential/RandomDictionaryContainermutableMappingSetContainermutableMappingFrozensetContainerinvariantMappingOM数据类型—数字Python支持的数字类型整型:1,234,0,-4,0x93,056长整型:123456789999999L,-8976l(Python3.6版本非法)布尔型:整型的子类,True和False对应整型的1和0浮点型:1.23,3.14e-10复数:1 + 2j,0.23-8.55j复数的内建属性real:复数的实部imag:复数的虚部conjugate():返回该复数的共轭复数OM数据类型—字符串操作符:“+”:用于字符串的链接操作。字符串的链接也可以使用空格“*”:重复操作符。“==”, “”, “>”, “!=”:可以进行两个字符串的比较。OM数据类型—字符串出于性能方面的考虑,不推荐使用“+”进行字符串连接OM数据类型—字符串操作符(续):“[:]”:切片操作符。[开始:终止:步长] “in”, “not in”:是否为成员测试。OM数据类型—字符串字符串格式化操作符%%[(name)][flags][width][.precision]typecode% (a,b,c)稍微高级一点的用法:只有一个参数时可以省去括号:OM数据类型—字符串“r” “R”:原始字符串操作符号。当字符串前有该操作符则输出的字符串就是输入的字符串,不进行相关的转义字符的替换。正则表达式的很多字符串都会用到该操作符已避免不必要的转义字符。“u”“U”:Unicode操作符。可以把该操作符后的字符串转换为Unicode编码的字符串。OM数据类型—字符串字符串是不可改变的对象:我们可以看到不能对字符串的单个元素赋值,或者对字符串的切片赋值。OM数据类型—字符串字符串是不可改变的对象(续):上述例子,我们可以看到字符串被改变了。其实这不是字符串改变了,而是我们把原有的字符串“I love pyton.”释放了,重新创建了一个字符串,并赋了新的值。我们可以通过id()函数来发现这个问题。id()函数返回对象的实例号。我们可以很清楚的看到,实例号发生了改变,这个a是新创建出来的字符串。对于不可改变的对象,象字符串,在赋值时作为左值的表达式必须是完整的对象。否则就会引发异常。就象我们前面举的给字符串的切片赋值的例子。OM数据类型—字符串除了之前介绍的几个序列类型常用的内置函数外,还有以下函数在字符串中也是比较常用的:cmp(str1,str2):根据字符串的ASCII码值进行比较(python 3.6没有cmp)max()和min():按照ASCII码值返回最大或最小的字符OM数据类型—TupleTuple与List互相转换:Tuple 可以转换成list, 反之亦然。内置的tuple 函数接收一个list, 并返回一个有着相同元素的tuple。而list 函数接收一个tuple 返回一个list。从效果上看, tuple 冻结一个list, 而list 解冻一个tuple。OM数据类型—Tuple要当心单元素Tuple的陷阱:圆括号也被重载作为分组操作符使用,由圆括号包含的单一元素首先被作为分组操作,而不是作为元组的分界符。以下代码摘自R16 DEV6910的boardhelp.py,赶快修改并排查吧!OM数据类型—DictionaryDictionarydict是Python 的内置数据类型之一, 它定义了键和值之间一对一的关系, 它是用{}括起来的,{}代表一个空的字典每个Dictionary的项的句法为:key:value. 当输入的Key不存在时,会引发一个异常。OM数据类型—DictionaryDictionary的相关操作:1、使用zip构造一个字典2、使用已经存在的key获取元素的值3、使用不存在的key,字典新增加一个元素4、字典元素的值可以是任意类型,如数字5、字典的key是任意可hash的对象,如数字6、del删除字典元素7 字典的clear()方法清除字典所有元素OM数据类型—DictionaryDictionary的遍历:从python2.2开始,可以不必再用keys()方法获取供循环使用的键值列表,可以用迭代器访问,即:只要用字典的名字就可以在for循环内遍历字典1、使用dict函数传入键值对构造2、使用现有dict解包构造新的dict3、使用dict的copy()函数构造dict4、实验中三个dict对象不相同OM数据类型—Dictionary常用的函数:字典方法方法说明dict.clear()删除字典对象内所有元素dict.copy()字典浅拷贝,返回新生成的字典对象dict.get(key, default=None)使用key获取字典中的值,如果不存在则返回默认值,如果没有设置默认则返回Nonedict.items()返回字典的键值tuple列表dict.keys()返回字典的键列表dict.setdefault(key, default=None)设置对应key的默认值dict.update(dict2)将dict2的键值都加入到dict中dict.values()返回dict的值列表dict.fromkeys(seq,val=None)创建并返回一个新字典,以seq中的元素做该字典的键,val做字典中所有键对应的初始值OM数据类型—Dictionary1、准备两个字典对象,其中有一个项的键相同,值不同2、使用bDict更新aDict,注意键’a’对应的值更新3、使用fromkeys方法构造cDict对象,值均为True4、使用setdefault添加一个新的项,键为’z’,值为空字典{},并为值增加一个元素’x’:35、使用setdefault添加一个新的项,键为‘h’,值为空列表[],并为这个列表增加一个新元素’x’OM数据类型—Dictionary1、keys()获取字典的key列表2、values()获取字典的值列表3、items()获取字典的键值的tuple列表使用列表返回字典的key value 或者item在字典大的时候占用大量内存4、使用enumerate函数获取字典的迭代器配合next()方法获取键索引和键值构成的tuple对象迭代到末尾时系统会抛出停止迭代异常OM数据类型—DictionaryDictionary的排序:defsortedDictValues1(adict): items = adict.items( )items.sort( ) return [value for key, value in items] def sortedDictValues2(adict): keys = adict.keys( ) keys.sort( ) return [adict[key] for key in keys]字典解析:大家熟悉的列表解析:>>> some_list= [1, 2, 3, 4, 5]>>> another_list= [ x + 1 for x in some_list]>>> another_list[2, 3, 4, 5, 6]从python2.7开始,可以用同样的语法创建字典:OM数据类型—集合集合对象是一组无序排列的可哈希的值,集合成员可以作为字典的键,空集合为set()集合集合的类型:可变集合(set)和不可变结合(frozenset)。4、可变集合可以增删元素,是不可哈希的,因此既不能作为字典的键也不能作为其他集合中的元素。5、不可变集合则正好相反。1、使用列表构造一个集合2、构造一个空集合,注意是set()3、在列表中增加一个列表元素,再使用这个列表构造集合会失败OM数据类型—集合集合支持的操作:最新的集合属性和方法,请大家使用help查询散列扩展学习散列(hash)1、键值必须是可散列的,实现__hash__, __eq__函数,且保证a==b为真,hash(a)==hash(b)也为真2、内存开销上增加3、键查询很快4、键的次序取决于添加顺序5、添加新键可能会改变已有顺序OM数据类型小结OMOM数据类型——变量变量变量名必须是字母或者_开头。变量名的其他部分可以是字母,_或者数字。Python是大小写敏感的。其中以下划线开头的标识符是有特殊意义的。以单下划线开头(_foo)的代表不能用“from xxx import *”而导入;以双下划线开头的(__foo)代表类的私有成员;以双下划线开头和结尾的(__foo__)代表python里特殊方法专用的标识,如__init__()代表类的构造函数,供解释器使用。OM数据类型——变量变量声明和赋值:在Python中变量是不需要声明的。变量通过首次赋值产生, 当超出作用范围时自动消亡。X = 1该赋值在Python中是如何进行的?对象变量引用赋值的过程:1、在内存中创建对象1。2、创建变量名X。3、把变量和对象建立映射关系。在赋值时,是把对象的引用赋值给变量而不是值。变量可以引用任何类型的对象。变量没有类型,只有对象有类型。变量在使用前必须被赋值。OM数据类型——变量del和垃圾回收1、del删除名称,而不是对象。删除alist之后就不能未经初始化使用它2、而blist还有效,blist指向的对象还存在Python的垃圾回收:主要算法为引用计数,当引用计数归零时,对象立即就被销毁。当删除的变量保持的是对象最后一个引用的时候,会删除对象。OM数据类型——变量浅拷贝和深拷贝:通过给列表分配一个变量能创建对列表的引用,如果要创建列表的副本就要理解浅副本和深副本的概念。1 列表或其他包容器对象的浅拷贝生成对象本身的拷贝,并将其包含的对象插入到新对象中。可用分片(object[:])和copy模块的copy(obj)函数创建。2 列表或其他对象包容器对象的深拷贝生成对象本身的副本,并递归地生成所有子对象的拷贝,加入到新对象中。可用copy模块的deepcopy(obj)函数创建。比较两种拷贝副本,一般情况下表现一样。但当列表内包含另一个列表的情况下,父列表的浅副本将包含对子列表引用,而不是独立副本。其结果是,当更改其内部列表时,从父列表的两个副本中都可见,如下例:OM数据类型——变量浅拷贝和深拷贝(续):1、变量赋值,两个变量指向相同的列表对象2、通过列表切片复制列表,生成新的队列对象3、对原始队列进行修改,切片生成的队列对象也被修改浅拷贝:切片操作符,或者copy.copy()1、导入copy模块2、调用deepcopy从alist生成blist,两个列表为不同的对象3、对alist进行修改,blist保持不变深拷贝:copy.deepcopy()变量总结变量不是盒子,而是对象上的标注ID是对象的唯一标注,在整个生命周期不变==(__eq__)比较两个对象的值,is比较对象标识,is比==执行快Python一切皆对象OM基本语句OM课程主要内容基本语句数据类型初探PythonWhy Python?OM基本语句Python语句printdelifwhileforbreakcontinuepassPython语句构造和执行原则语句按照顺序一条一条执行,直到出现判定和跳转指示按照缩进自动识别语句和语句块的边界,顶层代码即模块中缩进最小的那些语句复合语句=header:语句空格和注释(#及其后的文字)都将被忽略OM基本语句——printprint()print函数是把对象用文本化的形式输出到标准的输出流上。OperationInterpretationPrint(spam, ham)Print objects to sys.stdout, add a space betweenOM基本语句——deldeldel删除语句,可以删除列表和字典中的一项,删除列表中的一个切片,可以完整的删除一个对象。它与pop()方法不同,pop方法会返回一个值。1、构造一个list,删除第一个元素2、使用pop删除第一个元素,方法会返回该元素3、使用切片的方式删除部分元素或者所有元素,最后列表为一个空列表4、删除变量,此时列表对象也会被删除OM基本语句——ififif 语句的基本形式如下:if :                         #if test              # associated block elif :                      # optional elif's else:                                 # optional else 如果复合语句是单一语句,可以和前面的语句写在同一行。这条原则也适用于for循环和while循环。思考:C/C++ switch/case 语句在python中如何替代。OM基本语句——if条件表达式(即“三元操作符”2.5版本以后)C/C++:   condition? X:Y   condition是条件表达式,X是condition为真的结果,Y是condition为假的结果Python:   X if C else Y  OM基本语句——whilewhilewhile expression:suite_to_repeatWhile 循环的suite_to_repeat子句会一直循环执行,直到expression值为假。OM基本语句——forfor 为迭代而生for iter_varin iterable:suite_to_repeat每次循环,iter_var迭代变量设置为可迭代对象(序列,迭代器或其他支持迭代的对象)的当前元素,提供给suite_to_repeat语句块使用。1、直接迭代namelist元素2、通过namelist元素下标迭代,在生成range对象时我们使用len,所以不会出现异常3、使用enumerate生成迭代器,并在for循环中完成对list下标和元素值的访问OM基本语句——breakbreak与C中break用法一样,该语句可以跳出循环,继续执行跟在“循环块”后的语句break可用在while循环和for循环中。break语句与if语句结合使用OM基本语句——continuecontinue和C中传统的continue用法一样,循环中遇到该语句,程序会终止当前循环,并忽略剩余的语句,然后回到循环的顶端。1、调用input函数获取用户输入,其参数为输入提示语句。遍历userlist进行匹配,如果存在即终止遍历for循环2、如果没有匹配的名字,则递减计数器,continue让用户重新输入3、如果有匹配的名字,break语句让while循环结束4、如果while循环结束都没有匹配到名字,则执行最后一个else语句块OM基本语句——再谈else在while,for循环后,也可以有else语句else语句缩进与while/for循环一致以覆盖循环终止条件的判定循环内break语句终止循环,不进入else语句块循环和条件语句辅助语句ifwhileforelif●else●●●break●●continue●●pass●●●OM基本语句——passpass如果在需要有语句块的时候不想写任何语句,可以使用pass。该语句在开发和调试很有用。deffoo_func():pass或是if user_input= “do_calc”:passelse:pass
发布时间 2020/07/13 10:25:31 最后回复 blateyang 2020/08/20 23:20:02 版块 社区活动
32609 468 0
他的回复:
华为云ID:  dzx_huaweiAJAX 实战案例 笔记创建login项目服务端代码:extends layoutblock content    h1 登录华为云账号    div 华为账号:        input(type='text'  id='account')    div 账号密码;        input(type='password' id='pwd')    button(type='button' id='btn') 登录接口app.use(async function(ctx){    if(ctx.path=='/login'){    if(ctx.request.body.account == 'zhang' && ctx.request.body.pwd=='123'){         ctx.body = '登录成功!'        }else{            ctx.body  = '登录失败!'        }    }}) 前端代码:var btn = document.getElementById("btn")var account = ''var pwd = ''btn.onclick = function(){        account = document.getElementById("account").value;        pwd = document.getElementById('pwd').value;        ajax({            type:'post',            url:'/login',            data:{            account: account,             pwd : pwd,             },             success: function(data){                    alert(data)             }       })}function ajax(opt){        var defaultParam = {            type: 'get',            url:'#',            data:{},            async:true,            success:function(){}        }         for(var key in opt){               defaultParam[key] = opt[key]        }        var xhr = null;     if(window.XMLHttpRequest){        xhr = new XMLHttpRequest();      }else {      xhr = new ActiveXObject('Microsoft.XMLHTTP')        }     var paramStr = ''    for(var k in defaultParam.data){     paramStr += k +'='+ data[k]+'&'   }    paramStr.substr(0,paramStr.length-1)    console.log(paramStr)   if(defaultParam.type =='get'){        xhr.open(defaultParam.type,defaultParam.url+'?'+paramStr,defaultParam.async)        xhr.send()    }else{        xhr.open(defaultParam.type,defaultParam.url,defaultParam.async)        xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded')        xhr.send(paramStr)    }     xhr.onreadystatechange = function(){            if(xhr.readyState == 4){                if(xhr.status==200){                     defaultParam.success(xhr.responseText)                }            }      }}
发布时间 2020/07/13 10:25:31 最后回复 blateyang 2020/08/20 23:20:02 版块 社区活动
32609 468 0
他的回复:
华为云ID: dzx_huawei jQuery中的AJAX jQuery 简介官网:https://jquery.com宗旨:write less,do more“$”美元符号    $(document).ready(function(){         //代码     });     $(function(){ //document ready 简写         //代码     });get和post方法get方法$.get(url,data,callback,type)url是请求的接口地址data是请求的参数callback是请求成功时的回调函数type是请求返回数据的格式除了url,其它三个参数如果没有可以省略    注意的地方:    请求参数的格式可以是json对象,也可以是字符串    返回的数据格式可以是:JSON、HTML、Script、XML、Text等post方法$.post(url,data,callback,type)url是请求的接口地址data是请求的参数callback是请求成功时的回调函数type是请求返回数据的格式除了url,其它三个参数如果没有可以省略·    注意的地方:    post请求发出去的时候请求参数是放在请求体中ajax方法ajax方法语法格式$.ajax(option)option是JSON格式的配置参数,用于设置ajax请求常用配置url:发送请求的地址type:请求方式(get or post等)data:请求参数dataType:返回的数据类型(json、html、xml等)success:请求成功后的回调函数error:请求失败后的回调函数complete:请求完成后的回调函数(不论成功与否都会执行)布尔类型的配置async:是不为异步请求cache:是否进行缓存(主要针对get请求)timeout:请求超时时间(毫秒) 容易被忽视的配置项
发布时间 2020/07/13 10:25:31 最后回复 blateyang 2020/08/20 23:20:02 版块 社区活动
32609 468 0
他的回复:
华为云ID: dzx_huawei数据类型笔记:js 中 分为基本数据类型 和 引用数据类型值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。引用数据类型:对象(Object)、数组(Array)、函数(Function)。JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型:var x;               // x 为 undefinedvar x = 5;           // 现在 x 为数字var x = "dzx";      // 现在 x 为字符串字符串:字符串是存储字符(比如 "Bill Gates")的变量。字符串可以是引号中的任意文本。您可以使用单引号或双引号:var dog = "tom";var dog1 ='Tom1';Number:var num=100.00;      //使用小数点来写var num2=101;         //不使用小数点来写var num3=123e5;      // 12300000var mun4=123e-5;     // 0.00123Boolean:var flag = true;var flag1 = false;Array:var cars=new Array();cars[0]="Saab";cars[1]="Volvo";cars[2]="BMW";var cars=["Saab","Volvo","BMW"];数组下标是基于零的,所以第一个项目是 [0],第二个是 [1],以此类推。计算年龄案例:var year = prompt("请输入您的出生年份");// year 此时是字符串,使用减法可以自动进行隐式转换var age = 2020 - year;alert('您今年已经'+age+'岁了');标识符:就是指开发人员为变量,属性,函数,参数取得名字。关键字:就是指js本身已经使用了的字,不能用他们再充当变量名,方法名。例如:break,case,switch,if,while,with等...保留字:实际上就是预留的关键字,虽然现在还不是关键字,但是未来可能会成为关键字,同样不能使用他们来充当变量名,方法名。
发布时间 2020/07/13 10:25:31 最后回复 blateyang 2020/08/20 23:20:02 版块 社区活动
32609 468 0
他的回复:
华为云id:dzx_huawei1、Ajax全称asynchronous(异步的)JavaScript and XML,是一种无需加载网页而更新网页部分内容的技术。同步:客户端发起请求,然后客户端一直等待服务器端处理,收到服务器端响应后,客户端重新载入整个页面,如果有错误客户端再次发起请求……异步:客户端发起请求,服务器端处理的同时客户端可以继续运行,没有等待,服务器端的响应会实时反馈给客户端。步骤:运用XMLHttpRequset对象和web服务器进行数据的异步交换;运用JS操作DOM实现动态局部刷新。语法:var request=new XMLHttpRequest();request.open("GET/POST","URL",true/false);  //true表示异步请求,默认可省略,false表示同步请求request.send(string);XMLHttpRequest对象的属性和方法:readyState属性:HTTP请求的状态。4表示HTTP响应已完全接收。status属性:HTTP状态码。202表示成功,404表示"Not Found"。responseText属性:服务器接收到的响应体,字符串形式。onreadystatechange事件句柄:每次readystate属性改变的时候调用的事件句柄函数。可参考(http://www.w3school.com.cn/xmldom/dom_http.asp)例:发送Ajax请求 查询并处理var request=new XMLHttpRequest();request.open("GET","server.php?number="+document.getElementById("keyword").value);request.send();request.onreadystatechange=function(){    if(request.readyState===4){        if(request.status===200){            document.getElementById("searchResult").innerHTML=request.responseText;        }else{           alert("发生错误"+request.status);        }    }} 2、跨域域名:http://www.abc.com:8080/index.jshttp://协议www子域名abc.com主域名8080端口号(http协议的默认端口号为80,一般可以省略)协议、子域名、主域名、端口号其中任意一个不同,就叫做不同域,不同域之间相互请求资源叫作“跨域”。JavaScript出于安全考虑,不允许跨域即同源策略,但是,这个跨域的文件返回跨域的服务器端数据。因此json只支持GET请求,不支持POST请求。在www.aa.com页面中在www.bb.com页面中jsonp({"name":"洪七公","age":70})例,客户端:$.ajax({type:"GET",url:"http://***/serverjsonp.php?number="+$("#keyword").val(),dataType:"jsonp",jsonp:"callback",//回调函数jsonpCallback:"callbackname",//回调函数名称,如省略服务器会自动生成success:function(data){……},error:function(jqXHR){alert("发生错误"+jqXHR.status);}});服务器端部分语句:$jsonp=$_GET["callback"]; $result = $jsonp.'({"success":false,"msg":"没有找到员工。"})';$result = $jsonp.'({"success":true,"msg":"找到员工:***"})';查看调试工作台:Request URL:http://***/serverjsonp.php?number=101&callback=callbackname&_=1496980303811返回值:callbackname({success: true, msg: "找到员工:***"}处理跨域方法2:XHR2HTML5提供的XMLHttpRequest level2已经实现了跨域访问,但是IE10以下还不支持。实现方法很简单,只需在服务器端代码里加上:header("Access-Control-Allow-Origin:*");header("Access-Control-Allow-Methords:POST/GET");