前端开发是创建WEB页面(网页)或APP等前端界面呈现给用户的过程,通过HTML,CSS,JavaScript以及衍生出来各种技术、框架,来实现互联网产品的用户界面交互。
1.HTML:网页的核心,是一种制作万维网网页页面的标准语言。HTML是一种超文本标记语言,并不属于编程语言,它是通过各种标签来实现web页面并在浏览器中显示。
2.CSS:样式代码。如果HTML相当于一个房子,那么CSS就相当于装饰品。页面要呈现成什么样的样式,主要就是靠CSS。CSS有两种用法分为外部样式、内部样式以及内联样式。内部样式是写在HTML文件内写在
标签内;内联样式是直接写在HTML标签中的例如
他的权重级别是最高的,在执行顺序上如果他存在必须先执行;外部样式是将css代码单独写一个css文件,然后再HTML文件内引入这个文件,外部样式跟内部样式的权重级别是一样的,加载顺序跟书写顺序有关。3.JavaScript:是一种直译式脚本语言,一种动态类型、弱类型、基于原型的语言。里面写的都是属于逻辑上的代码,主要负责控制页面的交互行为,例如页面中各种点击跳转、点击弹出、鼠标移入移出效果等。
4.HTML5:HTML的升级版,于08年1月发布第一份草案,12年12月正式定稿HTML5的规范。与HTML进行比较后会发现,HTML5内很多标签都进行了语义化,例如HTML中没有
这个标签,页面的头只能放在
标签内,在给这个标签起一个id名字来区别它是干什么的,HTML5中就可以直接将头放在标签内,这样看就很明显,这是页面的头部代码。方便与后期维护的时候找代码位置。新增多媒体标签,可以直接在页面内插入视频,声音。
5.CSS3:CSS3新增了动画属性,可以使用其内的新增的属性来给页面中的内容实现动画效果。
6.Threejs(不属于核心):Three.js是一个轻量级,跨平台的Javascript库,可以在浏览器上结合HTML5的canvas,SVG或者WebGL,创建和展示3D模型和动画。Three.js允许我们在不依赖任何浏览器插件的情况下,创建一个GPU加速的3D动画场景,这可能得益于WebGL的出现,因为WebGL的底层实现是基于OpenGL
7.TypeJavaScript:TypeScript 起源于使用JavaScript开发的大型项目 。由于JavaScript语言本身的局限性,难以胜任和维护大型项目开发。因此微软开发了TypeScript ,使得其能够胜任开发大型项目。TypeScript是微软开发的一个开源的编程语言,通过在JavaScript的基础上添加静态类型定义构建而成。TypeScript通过TypeScript编译器或Babel转译为JavaScript代码,可运行在任何浏览器,任何操作系统。TypeScript的作者是安德斯·海尔斯伯格,C#的首席架构师。它是开源和跨平台的编程语言。它是JavaScript的一个超集(可以理解为JavaScript的严格类型),而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。它扩展了JavaScript的语法,所以任何现有的JavaScript程序都可以运行在TypeScript环境中。使用TypeJavaScript时需要通过node.js的指令安装TypeJavaScript包,同时需要编译TypeJavaScript文件。它与JavaScript的区别在于,它是一个强类型语言,在很多的写法与规定上比JavaScript更加的严格,只要不符合它的写法要求就会直接报错
2)主流框架:
1.JQuery:是属于JavaScript的框架(写原生JS代码时常用的框架之一),在其内包含了JavaScript的函数库,主要是为了实现“更少的代码,做更多的事”。使用JQuery时需要从官网下载到本地后再需要的HTML页面内引入,或者直接从网上引入api接口文件。两种方法各有优缺点,第一种相对来说稳定,但是加载速度相对第二种会慢一些。
2.Bootstrap:用于快速开发Web应用程序和网站的前端框架。操作简单,对于非专业前端人员来说比较友好,在需要用到的HTML文件内引入官网的api,然后直接从官网找到自己想要的样式后复制代码到自己要展示的位置上就行,目前来说Bootstrap已经不是很火,如果要修改他的样式非常麻烦,并且样式相对来说单一还丑。
3.React:React 起源于 Facebook 的内部项目, 是一个用于构建用户界面的 JavaScript 库。使用React大大降低了逻辑复杂性,意味着开发难度降低,可能产生Bug的机会也更少。React的核心思想是封装组件,各个组件维护自己的状态和UI,当状态变更,自动重新渲染整个组件。它的核心语法是JSX语法,此语法的写法是直接将HTML嵌入到JS代码里面,例如:
import React, { Component } from 'react'; import { render } from 'react-dom'; class HelloMessage extends Component { render() { return <div>Hello {this.props.name}</div>; } } // 加载组件到 DOM 元素 mountNode render(<HelloMessage name="John" />,
React无法像Vue一样实现双向数据绑定,它提倡的是单向数据流,称之为onChange/setState()模式、其次React是一个前端组件化的框架,是由后端组件化发展而来,并且他只有一个视图层。React的项目管理工具是Redux,因为React的设计理念是数据不可变,所以Redux中每次要更 新state中的数据时都需要用this.setState({ })方法来修改数据
4.Vue:近几年比较火的框架,由中国人尤雨溪研发,是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合同时利于后期的维护。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。Vue还提供了vue-cli脚手架来快速的进行页面的搭建,提供vant组件库来方便页面布局和样式的快速的成型。vue-cli、vant等组件库或者差价的安装都依赖于Node.js的指令。Vue用的是MVVM模式(Model View ViewModel),M(数据层(存储数据以及对数据的处理,如增删改查))、V(视图层(UI用户界面))、VM(业务逻辑层(一切js可视为业务逻辑))。MVVM(Model-View-ViewModel)是对MVC(Model-View-Control)和 MVP(Model-View-Presenter)的进一步改进。它将数据双向绑定作为核心思想,视图层与数据层之间没有联系,两者是通过业务逻辑层这个桥梁进行交互。因为数据层和业务逻辑层之间的交互是双向的,因此视图层的变化会自动同步到数据层,而数据层的变化也会立即反映到视图层上显示,从而实现了双向数据绑定。(点击观看此篇文章帮助理解三种模式)
vue鼓励去写近似常规的HTML的模板,写起来很接近HTML元素,同时vue将html,css,js都整合在一个页面内,方便对每一个组件进行单独的样式设计以及逻辑编辑。3)其他:
1.JSON:是存储和交换文本信息的语法。JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。(常用于ajax想后端请求数据,或者向后端提交数据)
2.Ajax:用于创建快速动态的网页的技术,通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。例如,后端存储了数据建成了数据库之后会给前端一个接口,前端只要用ajax请求这个接口后,就可以将后端的数据显示到前端页面上。
3.Less、Scss、Sass:都是CSS的预处理器,可以为网站启用可自定义,可管理和可重用的样式表。是一种动态样式表语言,扩展了CSS的功能,使样式代码看起来更加直观。
4.Node.js(偏后端):简单的说 Node.js 就是运行在服务端的 JavaScript。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。使用Node.js之前需要在电脑上进行环境变量的配置,同时通过指令安装需要用到的包管理器以及配置淘宝镜像(Node.js指令默认请求的事外网的,淘宝镜像相当于国内的,安装速度上来说快)。
二:后端开发
后端是指用户看不见的东西,通常是与前端工程师进行数据交互及网站数据的保存和读取,相对来说后端涉及到的逻辑代码比前端要多的多,后端考虑的是底层业务逻辑的实现,平台的稳定性与性能等。前后端就像演双簧一样,前端在台前,后端在幕后。
1)后端语言:
1.C/C++语言:C语言是一种结构化语言(后端编程语言的基础)。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。此外,C语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,从而形成了多种版本的C语言。 C++进一步扩充和完善了C语言,成为一种面向 对象的程序设计语言。
2.Java语言(强类型语言):Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java在使用之前,需要配置它的的编程环境;JDK(Java Development Kit)(又称为Java开发包或Java开发工具)它是整个Java的核心,包括了Java运行环境,一些Java工具和Java核心类库。
JRE是支持Java程序运行的标准环境。写Java需要JDK,运行Java程序需要JRE,又因为JDK中包含了JRE,因此只需要安装JDK就可以编辑和运行Java程序,但JDK中包含了许多与运行无关的内容,占用空间打,因此普通Java程序只需要安装JRE就行。3.PHP(弱类型语言):PHP(Hypertext Preprocessor)即“超文本预处理器”,是一种简单的、面向对象的、解释型的、健壮的、安全的、性能非常之高的、独立于架构的、可移植的、动态的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
4.Python(面向对象的语言):Python由荷兰数学和计算机科学研究学会的Guido van Rossum 于1990 年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。Python解释器易于扩展,可以使用C或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。
5.C#(CSharp):C#是微软公司发布的一种由C和C++衍生出来的面向对象的编程语言、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。应用领域的面非常的广泛,例如桌面端软件、网站、游戏、Web服务以及命令行工具(黑窗口)
6.GO语言(编译型语言):Go(又称Golang)后端语言都有哪些是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊(Ken Thompson)于2007年9月开始设计Go,于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac OS X平台上进行了实现,后来追加了Windows系统下的实现。
7 .net(后端框架):2002年2月13日微软正式推出.NET的开发工具--Visual 2002。.NET框架是一个多语言组件开发和执行环境,它提供了一个跨语言的统一编程环境。.NET框架的目的是便于开发人员更容易地建立Web应用程序和Web服务,使得Internet上的各应用程序之间,可以使用Web服务进行沟通。从层次结构来看,.NET框架又包括三个主要组成部分:公共语言运行库(CLR:Common Language Runtime)、服务框架(Services Framework)和上层的两类应用模板——传统的Windows应用程序模板(Win Forms)和基于ASP.NET的面向Web的网络应用程序模板(Web Forms和Web Services)。
2)数据库:简而言之存放大量数据的地方
1.MySQL:MySQL是一个关系型数据库管理系统, 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。它是将数据保存在不同的表中,而不是放在一个大的仓库内,增加了速度并提高了灵活性。MySQL使用的SQL语言适用于访问数据库的常用标准化语言。1982年中国数据库开拓者—萨师煊起草国内第一个计算机专业本科“数据库系统概论”的教学大纲,同时也是他将数据库的概念引入中国。
2.MongoDB:MongoDB是一个基于分布式文件存储的数据库。由C++语言编写,是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。MongoDB 的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)和传统的RDBMS 系统(具有丰富的功能)之间架起一座桥梁,它集两者的优势于一身。
3.Redis:Redis 是遵循 BSD 开源协议的存储系统,数据存储在内存中,因此具备极高的性能,可用作数据库、缓存和消息中间件。Redis 支持多种类型的数据结构,如字符串、哈希、列表、集合、带范围查询的有序集合、位图、hyperloglogs 和带半径查询的地理空间索引。Redis 内置了复制、脚本语言编程、最近最少使用(LRU)淘汰、事务以及不同级别的磁盘持久化等功能,通过 Redis Sentinel 和集群自动分区机制实现高可用性。Redis 采用 C 语言编写,能运行在 Windows、MacOS X、Linux、Solaris 等操作系统上,不过 Linux 是其最佳的运行平台,无须第三方依赖,它提供了最广泛的编程语言接口。
4.Oracle:Oracle Database,又名 Oracle RDBMS,简称 Oracle。Oracle 数据库系统是美国 Oracle 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(client/server)或B/S体系结构的数据库之一,比如 SilverStream 就是基于数据库的一种中间件。Oracle 数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系型数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能,但它的所有知识,只要在一种机型上学习了 Oracle 知识,便能在各种类型的机器上使用它。
5.SQL Server:SQL Server数据库是Microsoft开发设计的一个关系数据库智能管理系统(RDBMS),现在是全世界主流数据库之一。SQL Server数据库具备方便使用、可伸缩性好、相关软件集成程度高等优势,能够从单一的笔记本上运行或以高倍云服务器集群为基础,或在这两者之间任何东西(需要考虑软件和硬件配置)上运行。SQL Server应用集成化的商务智能(BI)专用工具提供了企业级的数据管理服务。Microsoft SQL Server数据库引擎为关系型数据和结构化数据提供了更可靠安全的存储功能,使用户能够搭建和管理用于业务流程的高可用性和性能卓越的程序。
6.Memcached:是一个免费开源的、高性能的、具有分布式内存对象的缓存系统(key-value存储系统),一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。 ;Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。
3)应用场景:
1、b/s架构(Browser/Server,浏览器/服务器模式):一般都是一些网站。如果是普通网站,小型企业站,部分商城,PHP是最好的选择。在访问量不高,并发不严重,业务逻辑不复杂的时候,PHP足以应对。除此之外,还有jsp,asp。在小型应用中,PHP能占到8,90的份额。但是PHP的缺点同样明显:访问量跟高并发下,PHP很容易到达瓶颈,解决这个问题的成本是高昂的。同时,PHP在高访问下的生态不如Java等。
2、商城,高访问高并发网站:
Java:性能好,生态好,几乎所有的问题都能找到现成的解决方案。
Nodejs:因为nodejs的异步,事件驱动,非租塞io等特点让nodejs在高并发领域占有一席之地。主要是北京,杭州这种大地方用的多。3、c/s架构(Client-Server,客户端/服务器模式):具体不大懂,但是c,Java,c#都能支持游戏后端。
4、底层:
比如浏览器插件,c/c++
比如算法,c++/Python5、爬虫:Python,Java,PHP等很多语言都能搞。用的最多的还是Python。
6、总结:现在很多项目都是多语言结合。比如获取数据(c/c++/Java),数据处理(Java),业务逻辑(Java/PHP),展示(html/ios/Andriod)。
三:大数据
大数据(big data),是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。大数据技术包括数据采集,数据管理,数据分析,数据可视化,数据安全等内容。数据的采集包括传感器采集,系统日志采集以及网络爬虫等。数据管理包括传统的数据库技术,nosql技术,以及对于针对大规模数据的大数据平台,例如hadoop,spark,storm等。数据分析的核心是机器学习,当然也包括深度学习和强化学习,以及自然语言处理,图与网络分析等。
1)技术组件:
1.Hadoop(海杜普):由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算
2.HBase:HBase是一个分布式的、面向列(按照列(由“键——值”对组成的列表)在数据文件中记录数据,以获得更好的请求及遍历效率。一行中的列数允许动态变化,且列的数目可达数百万,每条记录的关键码不同,支持多值列。)的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase是基于列的而不是基于行的模式。
3.Kafka(科技术语):由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。
4.SPARK(计算引擎):Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。Spark 主要有三个特点 :
首先,高级 API 剥离了对集群本身的关注,Spark 应用开发者可以专注于应用所要做的计算本身。
其次,Spark 很快,支持交互式计算和复杂算法。
最后,Spark 是一个通用引擎,可用它来完成各种各样的运算,包括 SQL 查询、文本处理、机器学习等,而在 Spark 出现之前,我们一般需要学习各种各样的引擎来分别处理这些需求。5.Hive(数据仓库工具):基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析。hive是基于Hadoop构建的一套数据仓库分析系统(也是数据仓库工具),它提供了丰富的SQL查询方式来分析存储在Hadoop分布式文件系统中的数据:可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能;可以将SQL语句转换为MapReduce任务运行,通过自己的SQL查询分析需要的内容,这套SQL简称Hive SQL,使不熟悉mapreduce的用户可以很方便地利用SQL语言查询、汇总和分析数据。hive 构建在基于静态批处理的Hadoop 之上,Hadoop 通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。因此,hive 并不能够在大规模数据集上实现低延迟快速的查询,例如,hive 在几百MB 的数据集上执行查询一般有分钟级的时间延迟。
6.Storm:是Twitter开源的分布式实时大数据处理框架,最早开源于github,从0.9.1版本之后,归于Apache社区,被业界称为实时版Hadoop。随着越来越多的场景对Hadoop的MapReduce高延迟无法容忍,比如网站统计、推荐系统、预警系统、金融系统(高频交易、股票)等等,大数据实时处理解决方案(流计算)的应用日趋广泛,目前已是分布式技术领域最新爆发点,而Storm更是流计算技术中的佼佼者和主流。 与hadoop不同的是,storm不是批量处理已经存在的大量数据,而是实时计算每一条数据。
四:人工智能(AI,通俗点,人工智能指的是“脑子”,而不是身体)
就是让机器像人一样的智能、会思考,是机器学习、深度学习在实践中的应用。人工智能更适合理解为一个产业,泛指生产更加智能的软件和硬件,人工智能实现的方法就是机器学习。
1)相关概念:
1.机器学习:专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,机器学习是对能通过经验自动改进的计算机算法的研究。
2.数据挖掘:数据挖掘是从大量数据中提取出有效的、新颖的、有潜在作用的、可信的、并能最终被人理解模式(pattern)的非平凡的处理过程。数据挖掘利用了统计、机器学习、数据库等技术用于解决问题;数据挖掘不仅仅是统计分析,而是统计分析方法学的延伸和扩展,很多的挖掘算法来源于统计学。数据挖掘主要分为分类算法,聚类算法和关联规则三大类,这三类基本上涵盖了目前商业市场对算法的所有需求。
算法分类:
关联分析:Apriori 关联关系挖掘,从消费者交易 记录中发掘商品与商品之间的关联关系。
原理:
1.支持度:
某个商品组合出现的次数与总次数之间的比例。
5次购买,4次买了牛奶,牛奶的支持度为4/5=0.8。
5次购买,3次买了牛奶+面包,牛奶+面包的支持度为3/5=0.6。
2.置信度:
购买了商品A,有多大概率购买商品B,A发生的情况下B发生的概率是多少。
买了4次牛奶,其中2次买了啤酒,(牛奶->啤酒)的置信度为2/4=0.5。
买了3次啤酒,其中2次买了牛奶,(啤酒->牛奶)的置信度为2/3-0.67。
3.提升度:
衡量商品A的出现,对商品B的出现 概率提升的程度。
提升度(A->B)=置信度(A->B)/支持度(B)。
提升度>1,有提升;提升度=1,无变化;提升度<1,下降。
4.频繁项集:
项集:可以是单个商品,也可以是商品组合。
频繁项集是支持度大于最小支持度(Min Support)的项集。
计算过程
1、从K=1开始,筛选频繁项集。
2、在结果中,组合K+1项集,再次筛选。
3、循环1,2步。直到找不到结果为止,K-1项集的结果就是最终结果。
分类算法:C4.5(决策树),Naive Bayes(朴素贝叶斯),SVM,KNN,Adaboost,CART(分类与回归树)
C4.5:C4.5算法是用于产生决策树的算法,主要用于分类。C4.5使用信息增益率做计算(ID3算法使用信息增益做计算)。
原理:C4.5选择最有效的方式对样本集进行分裂,分裂规则是分析所有属性的信息增益率。信息增益率越大,意味着这个特征分类的能力越强,我们就要优先选择这个特征做分类。就拿挑西瓜作为一个比喻,拿到一个西瓜的时候首先要看它的纹路,如果模糊就不是好瓜,反之就是好瓜。如果这个瓜只是稍微模糊就要考虑它的密度(拍西瓜听声音),当密度大于某个值的时候就是好瓜,否则就是坏的。
聚类算法:K-Means,EM(最大期望算法)
EM:在统计计算中,最大期望(EM,Expectation–Maximization)算法是在概率(probabilistic)模型中寻找参数最大似然 估计的算法,其中概率模型依赖于无法观测的隐藏变量(Latent Variabl)。最大期望经常用在机器学习和计算机视觉的数据集聚(Data Clustering)领域。3.深度学习:是相对浅层学习而言的,是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络。它模仿人脑的机制来解释数据,例如图像,声音和文本。深度学习的概念源于人工神经网络的研究。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。到了当下,经过深度学习技术训练的机器在识别图像方面已不逊于人类,比如识别猫、识别血液中的癌细胞特征、识别MRI扫描图片中的肿瘤。在谷歌AlphaGo学习围棋等等领域,AI已经超越了人类目前水平的极限。图示展现的只是一种大致的从属关系,其中数据挖掘与人工智能并不是完全的包含关系。
2)核心技术:
1.计算机视觉:计算机视觉技术运用由图像处理操作及机器学习等技术所组成的序列来将图像分析任务分解为便于管理的小块任务。
2.机器学习:机器学习是从数据中自动发现模式,模式一旦被发现便可以做预测,处理的数据越多,预测也会越准确。
3. 自然语言处理:对自然语言文本的处理是指计算机拥有的与人类类似的对文本进行处理的能力。例如自动识别文档中被提及的人物、地点等,或将合同中的条款提取出来制作成表。
4. 机器人技术:近年来,随着算法等核心技术提升,机器人取得重要突破。例如无人机、家务机器人、医疗机器人等。
5. 生物识别技术:生物识别可融合计算机、光学、声学、生物传感器、生物统计学,利用人体固有的生体特性如指纹、人脸、虹膜、静脉、声音、步态等进行个人身份鉴定,最初运用于司法鉴定。五:SuperMap GIS
SuperMap GIS 是超图软件研发的面向各行业应用开发、二三维制图与可视化、决策分析的大 型 GIS 基础软件系列,包含云 GIS 服务器、边缘 GIS 服务器、端 GIS 以及在线 GIS 平台等多种软 件产品。其最新版本SuperMap GIS 10i 于2019年10月发布,融入人工智能(AI)技术,创新并构建了 GIS 基础软件“BitCC”五 大技术体系,即大数据 GIS、人工智能 GIS、新一代三维 GIS、云原生 GIS 和跨平台 GIS,丰富和革新了 GIS 理论与技术,为各行业信息化赋能更强大的地理智慧。
1)GIS 10i产品体系:
1、云GIS服务器:包括云GIS应用服务器、门户服务器、运维管理服务器
2、边缘GIS服务器:支持边缘前置代理、服务聚合、内容分发和分析计算
3、PC端GIS:提供跨平台、二三维一体化能力、大数据分布式管理与分析功能
4、Web端GIS:可用于构建无插件、跨浏览器、跨操作系统的二三维客户端开发平台
5、移动GIS:包括全功能移动GIS SDK、移动GIS APP等
6、在线GIS平台:GIS数据安全上云,多端应用轻松展现2) 五大技术体系(BitCC):
1、人工智能GIS技术体系:人工智能 GIS (AI GIS)是人工智能与 GIS 相互融合的技术统 称,包括:
融合 AI 的空间分析算法(GeoAI)与相关的流程工具;
基于 AI 技术对 UI 体验、运维效率和其他 GIS 软件功能的提升和优化;
基于 GIS 对 AI算法输出结果的管理、可视化和分析。
SuperMap GIS 10i提供涵盖全系列产品的人工 智 能 GIS 功能,支持样本制作、模型训练、应用 推理 的人工智能 GIS 工作流程工具,提供提升效 率、 UI体验的人工智能GIS功能,提供GIS对人工 智能 算法输出结果的管理、可视化和分析。
2、大数据GIS技术体系:包括空间大数据的存储管理、空间分析、流数据处理与可视化等技术,致力于提供全面支持大数据的 GIS 基础软件与服务,让更多用户能够轻松管理与挖掘空间大数据 “金矿”。同时,基于 IT 大数据技术重构传统 GIS,支持海量经典空间数据的分布式存储、处理、分析与渲染,实现数量级的性能提升。
3、新一代三维GIS技术体系:以二三维一体化 GIS 技术为基础框架,进一步拓展全空间数据模型及其分析计算能力;更全面地融合倾斜摄影、 BIM、激光点云、三维场等多源异构数据,并制定了开放的《空间三维模型数据格式》 标准(S3M) ;基于分布式技术实现倾斜摄影模型、激光点云等实景三维数据的高效全流程管理;集成WebGL、虚拟现实(VR)、增强现实(AR)、 3D 打印等 IT 新技术,带来更真实、更便捷的三维体验,推动三维 GIS 实现室外室内一体化、 宏观微观一体化与空天 / 地表 / 地下一体化,赋能全空间的新一代三维 GIS 应用。
4、云原生GIS技术体系:云原生 GIS(Cloud Native GIS)是指为云环境而设计和优化的 GIS 相关技术,它基于微服务架构思想,以容器为部署载体,可自动化编排、运维管理,更好地利用云平台的能力,使 GIS 系统更高效、更弹性、更新更实时、运行更稳定。SuperMap 云原生 GIS ,将传统的 GIS 单体应用拆分为多个可独立部署的微服务,实现 GIS 更细粒度的弹性伸缩与灵活部署;将微服务部署到容器而非虚拟机中,降低资源占用并可快速伸缩;通过 GIS 容器的自动化编排技术,实现资源动态调度,且屏蔽多云环境差异,降低管理和迁移成本。通过应用云原生,GIS 系统开发者可更专注于业务本身,更快地响应客户需求、落地新特性。
5、跨平台GIS技术体系:自 2001 年起,超图基于标准 C++ 技术重构 GIS 内核,建立了一套高性能的、支持多种操作系统和 CPU 架构的原生跨平台 GIS 技术体系。目前 SuperMap GIS 支持 x86、ARM( 如华为鲲鹏、飞腾 ) 、 MIPS( 如龙芯 ) 、SW-64( 如申威 ) 等多种架构的 CPU,并能够在 Linux 系列、Windows 系列、Android 及 iOS 等多种操作系统上高性能运行。六:移动端开发
移动开发也称为手机开发,或叫做移动互联网开发,移动应用开发等。是指以手机、PDA、UMPC等便携终端为基础,进行相应的开发工作,由于这些随身设备基本都采用无线上网的方式,因此,业内也称作为无线开发。移动应用包括早期的WM掌上助理设备,Web os设备、java设备、塞班设备,以及现在现在火热的安卓和苹果设备等移动应用的开发。移动应用的形成对移动设备的功能有了长足的拓展。设备可以不单单只靠自带的简陋功能,而是可以像计算机一样通过安装应用程序、游戏程序等进行扩展,使移动设备成为更能帮助人们解决事物的个人智能终端。
1)安卓
1、安卓系统:安卓是(Android)一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机、智能手表等。
2、安卓开发:android开发是指android平台上应用的制作,Android早期由“Android之父”之称的Andy Rubin创办,Google于2005年并购了成立仅22个月的高科技企业Android,展开了短信、手机检索、定位等业务,基于Linux的通用平台进入了开发。Android是一种基于Linux的自由及开放源代码的操作系统,Android 分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和 Linux内核层。
3、安卓软件开发(编程语言Java):android软件开发是根据用户要求建造出android软件或者系统中的软件部分的过程。android软件开发是一项包括需求捕捉,需求分析,设计,实现和测试的系统工程。软件一般是用某种程序设计语言来实现的。通常采用软件开发工具可以进行开发。安卓应用的开发语言用的是Java语言,并且在Android中也用到了Java核心类库的大量的类,因此,在学习安卓开发之前,可以先把Java基本语法和Java SE的基础类库好好学习一下。2)IOS
1、 IOS系统:iOS是由苹果公司开发的移动操作系统。苹果公司最早于2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPhone使用的,后来陆续套用到iPod touch、iPad上。iOS与苹果的macOS操作系统一样,属于类Unix的商业操作系统。原本这个系统名为iPhone OS,因为iPad,iPhone,iPod touch都使用iPhone OS,所以2010年WWDC上宣布改名为iOS(iOS为美国Cisco公司网络设备操作系统注册商标,苹果改名已获得Cisco公司授权)。
2、 iOS开发:iOS是由苹果公司为iPhone等设备开发的操作体系。它主要是给iPhone、iPod touch和iPad运用。就像其根据的Mac OS X操作体系相同,它也是以Darwin为根底的。iPhone OS的体系架构分为四个层次:中心操作体系层(the Core OS layer),中心效劳层(the Core Services layer),媒体层(the Media layer),可轻触层(the Cocoa Touch layer)。见下图:体系操作占用大约512MB的存储空间。
Core OS 是最为核心的系统层,包括了内存管理,文件系统,硬件管理,电源管理,安全管理等内容。
Core Services 包含了多种核心服务提供给 App 使用,如网络、线程、定位等。
Media 层主要包括了各种媒体文件的处理,通过它我们可以在应用程序中使用各种媒体文件,进行音频与视频的录制,图形的绘制,以及制作基础的动画效果。
Cocoa Touch 层为应用程序开发提供了各种有用的框架,并且大部分与用户界面有关,它负责用户在 iOS 设备上的触摸交互操作以及一些其他的关键功能。