当前位置: 首页 > news >正文

编程代码网站wordpress菜单左对齐

编程代码网站,wordpress菜单左对齐,策划书网站,vps怎么搭建网站Scala学习笔记 Scala笔记一、学习Scala的目的二、Scala的基本概念2.1 JDK1.8版本的新特性2.2 Scala的运行机制 三、Scala的基本语法3.1 Scala中输出语句、键盘输入、注释语法3.1.1 Scala注释三种#xff0c;和Java一模一样的3.1.2 Scala键盘输入3.1.3 Scala输出 3.2 Scala变量… Scala学习笔记 Scala笔记一、学习Scala的目的二、Scala的基本概念2.1 JDK1.8版本的新特性2.2 Scala的运行机制 三、Scala的基本语法3.1 Scala中输出语句、键盘输入、注释语法3.1.1 Scala注释三种和Java一模一样的3.1.2 Scala键盘输入3.1.3 Scala输出 3.2 Scala变量和常量3.3 Scala中标识符3.4 Scala中的数据类型3.5 Scala中运算符3.5.1 算术运算符3.5.2 赋值运算符3.5.3 比较运算符3.5.4 逻辑运算符3.5.5 位运算符 3.6 Scala中流程控制3.6.1 分支流程3.6.2 循环流程 四、Scala的函数式编程4.1 函数的基本语法4.2 函数的形参列表问题4.3 函数的返回值问题4.4 函数的高阶函数4.4.1 函数当变量使用:把函数重命名了4.4.2 函数当参数来使用4.4.3 函数当作返回值来使用 4.5 函数中匿名函数4.6 函数的高级使用4.6.1 函数的闭包问题4.6.2 函数的柯里化4.6.3 递归函数4.6.4 函数的惰性加载 4.7 函数的简化操作4.7.1 声明的简化4.7.2 调用的简化一般不建议使用建议运算符的函数调用简化 五、 Scala中面向对象5.1 包和import导入5.1.1 Scala包有两种管理代码的方式5.1.2 Scala中类的导入问题import 5.2 类的声明和类的组成5.2.1 面向对象中的类5.2.2 面向对象中类的属性5.2.3 面向对象中类的方法5.2.4 面向对象中类的代码块和内部类5.2.5 面向对象中类的构造器 5.3 Scala中对象的创建5.4 面向对象的特征5.4.1 封装性5.4.2 继承性5.4.3 多态性5.4.4 抽象性 5.5 Scala中伴生对象Object5.6 Scala中的case class样例类5.6.1 样例类的语法 5.7 Scala中的特质Trait5.7.1 创建语法5.7.2 使用 六、Scala中集合6.1 Java集合体系6.1.1 Collection:单列集合6.1.2 Map双列集合key值不可重复value可重复 6.2 Scala集合体系6.2.1 不可变集合体系6.2.2 可变集合体 6.3 Scala集合的使用6.3.1 Scala中数组-Seq的使用6.3.2 Scala中List列表的使用6.3.3 Scala中Set集合的使用6.3.4 Scala中元组Tuple6.3.5 Scala中Map集合的使用 6.4 Scala中集合的一些常用函数6.4.1 基本函数6.4.2 集合的一些高级函数6.4.3 集合的计算函数 七、Scala中的隐式转换7.1 隐式转换函数7.2 隐式转换参数7.3 隐式转换类 八、Scala中_的作用 Scala笔记 一、学习Scala的目的 Spark、Kafka等相关大数据技术框架底层都是由Scala编程语言编写的Spark我们自己编写分布式程序时Spark提供了多种编程语言风格但是我们比较常用的是使用Scala编程。 二、Scala的基本概念 Scala是一门多范式编程语法所谓多范式指的就是多种编程风格的语法Scala主要是一门面向对象编程语言和函数式编程语言。 Scala的发明人是马丁奥德斯基Scala语言2001年左右诞生的融合了Java和JS中很多特性。 同时Java中很多特性也是从Scala语言中吸收到JDK8.0版本拉姆达表达式就是从Scala中吸收到 2.1 JDK1.8版本的新特性 Java中函数编程式接口、拉姆达表达式、方法引用 接口的组成、时间日期类、Stream API、Optional类解决NullPonitException的 函数式接口只有一个抽象方法的接口称之为函数式接口一般情况函数式接口需要使用FunctionalInterface Java中的拉姆达λ表达式是和Java中的一个接口紧密相关的接口函数式编程接口接口中只有一个抽象方法 语法(形参列表)- {方法体;} lambda表达式 就等用于scala中匿名函数使用函数式接口时我们对函数式接口的简化操作使用函数式接口大部分场景下都是使用匿名内部类的形式实现的匿名内部类最核心的就是重写函数式接口的唯一的抽象方法把lambda就是简化匿名内部类的操作的(形参列表) - {方法体} 简化 方法体只有一行 {} 可以省略形参的类型可以省略的如果形参只有一个那么 () 可以省略的 package lambda;import java.io.PrintStream;public class Demo {public static void test(Flyable flyable){flyable.fly(zs);}public static void test1(A a){}/*** 使用函数式编程接口时如果我们采用匿名内部类的形式必须要去重写唯一的抽象方法而且匿名内部类最核心的也是抽象方法* 所以此时我们就是使用拉姆达表达式将匿名内部类的代码给简化了即可** (形参列表) - {方法体} 就是抽象方法的简化* param args*/public static void main(String[] args) {test(System.out::println);test(name- System.out.println(name));} }interface A{default void run(String name){}default int call(){return 0;} }package lambda;FunctionalInterface public interface Flyable {void fly(String name);static int run(){ return 0;} }拉姆达表达式的简化 形参列表的类型可以省略的因为拉姆达表达式对应的函数式编程接口的抽象方法是确定的如果参数列表只有一个 那么形参列表的 () 可以省略的如果方法体只有一行代码而且这一行代码没有return关键字那么方法体的 {} 可以省略而且这一行代码不需要加分号 Java中的方法引用相当于是拉姆达表达式的升级版本主要就是用来替换整个拉姆达表达式的当拉姆达表达式的方法体是引用了另外一个类的方法并且方法体中没有多余的代码时可以使用方法引用来简化代码 方法引用是为了进一步的简化我们的lambda表达式只有当lambda表达式的方法体只有一行而且这一行还是引用的其他类的方法完成的而且一般方法无参的有参也可以那么lambda就可以使用方法引用简化 对象名::方法名 类名::方法名 2.2 Scala的运行机制 编写xxx.scala源码文件源码文件中可以使用Scala的SDK也可以使用Java的SDK使用scalac编译xxx.scala源码文件成为Java的二进制字节码文件xxx.class使用scala命令将xxx.class加载到Java的JVM虚拟机当中运行的 三、Scala的基本语法 3.1 Scala中输出语句、键盘输入、注释语法 3.1.1 Scala注释三种和Java一模一样的 3.1.2 Scala键盘输入 直接无缝衔接使用Java的键盘输入 Scanner使用Scala提供的自带的键盘输入 StdIn.readxxx() 3.1.3 Scala输出 使用Java的输出语句 System.out.xxx普通输出print()/println()模板输出print/println(sxxxxx$变量名)占位符输出print/println(xxxxx%s %d,变量变量) 3.2 Scala变量和常量 语法 var|val 变量名|常量名【:数据类型】 初始值; 【注意】虽然Scala中数据类型可以省略但是Scala是一门强类型编程语法 3.3 Scala中标识符 Scala的标识符由字母、数字、下划线、数学符号、$美元符号组成的其中数字不能开头如果标识符以数学符号开头那么标识符中只能包含数学符号Scala标识符可以是关键字和保留字但是关键字和保留字需要使用包括 3.4 Scala中的数据类型 Scala是一门纯面向对象的编程语言因此在Scala中所有的数据类型都是对象 Scala中所有类型的顶尖父类AnyAny有两个直接子类AnyVal、AnyRef AnyVal是值类型Byte、Short、Int、Long、Float、Double、Char、Boolean、Unit AnyRef是引用类型Java中所有类、Scala中所有类、Scala中所有集合、Null Unit、Null、Nothing三个比较特殊的类型 3.5 Scala中运算符 3.5.1 算术运算符 没有 – 3.5.2 赋值运算符 -… 3.5.3 比较运算符 Scala中代表比较值相等比较地址相等用eq函数 3.5.4 逻辑运算符 3.5.5 位运算符 【注意】Scala运算符本质上是一个函数函数的名字是数学符号正常情况下运算符的使用语法应该如下 1 1 1.1 函数调用的时候可以简化 函数调用的点可以省略的如果函数的参数只有一个那么 () 可以省略的 3.6 Scala中流程控制 顺序流程代码遵循从上而下依次执行 3.6.1 分支流程 if类型的分支Java一模一样的 模式匹配 语法 x match{ case 值|x [模式守卫if] case分支语句 case 值|x [模式守卫if] case分支语句 case _ case分支语句 }【模式守卫】模式守卫可以做范围匹配一般使用模式守卫时case需要x 3.6.2 循环流程 for循环 until型的for循环 for(i - start until end) to型的for循环 for(i - start to end) 增强的for循环——遍历集合或者数组 for(elem - 集合/数组的变量) for循环的步长迭代默认情况下迭代1 for(i - start until|to end by num) 循环守卫满足某个条件再执行循环体 for(i - start until|to end 【by num】 if 语句) 多重循环 for(i - start until|to end by num 循环守卫 j- start until|to end by num 循环守卫) 循环的返回值问题将循环的值赋予给一个Scala集合 var array for(i - start until|to end by num 循环守卫) yield i while循环 do while循环 2~3和Java语法是一模一样的 四、Scala的函数式编程 4.1 函数的基本语法 def 函数名(形参列表):函数的返回值类型{ 函数体 } 4.2 函数的形参列表问题 可变长形参 参数名:数据类型*,一个函数只能有一个可变长形参而且形参必须位于函数形参列表的末尾 形参的默认值Scala函数当中形参是可以赋予默认值的一旦形参赋予默认值那么调用参数的时候带有默认值的形参就可以不用传递参数了带有默认值的形参一般要求放到形参列表的最后如果没有放到最后那么调用的时候给其他形参传递参数需要带有参数名传递 def test(name:Stringzs,age:int){} test(age1)--具名实参 4.3 函数的返回值问题 【注意】函数有两种特殊的返回值Unit、Nothing 4.4 函数的高阶函数 【注】在Scala中函数是一等公民函数可以在Scala的任何位置充当任何的角色函数可以声明在类中也可以声明在函数中还可以声明在参数列表中、还可以当作返回值还可以当作一个变量 4.4.1 函数当变量使用:把函数重命名了 var d:函数的定义 函数名 _ 【注意】函数的类型如何声明 (形参类型列表) 返回值类型 示例 函数的定义 def test(a:Int,b:Int):Int{ab} 函数的类型写法 (Int,Int) Int 4.4.2 函数当参数来使用 语法 def test(a:Int,f:(Int,Int)Int):Unit{ } 4.4.3 函数当作返回值来使用 语法 def test():(Int,Int)Int{ } 4.4.2~4.4.3 :Scala中存在匿名函数专门使用在这两个场景 函数也是一种数据类型函数类型的语法(形参类型列表) 返回值类型 如果形参只有一个那么 () 可以省略 4.5 函数中匿名函数 简化的前提函数的类型必须是显示声明确定的 4.6 函数的高级使用 4.6.1 函数的闭包问题 函数闭包指的是将不属于本函数的变量或者对象也包含进来直到该函数运行完成外部变量或者对象才可以被释放。 var x:Int 1 def test(a:Int):Int{ a*x } 4.6.2 函数的柯里化 将一个接受多个参数的函数给他转换成为一个接受单个参数的函数的过程 将一个接受多个参数的函数转换成为一个返回了函数的函数返回的函数传递的值就是原先的第二个参数 其实闭包的一个使用场景 4.6.3 递归函数 函数内部调用本函数 递归三要素 递归入口自己调用自己的的逻辑递归出口不能调用自己的逻辑递归条件必须向出口迭代 4.6.4 函数的惰性加载 惰性加载指的是将函数的调用延迟到第一次使用函数的返回值的时候才会调用 使用语法 lazy val 变量名 函数名(实参) 此时函数的调用在第一次使用变量的时候才会调用 一旦惰性加载变量名只能使用val修饰 4.7 函数的简化操作 4.7.1 声明的简化 如果函数没有参数那么函数的括号可以省略 def test:Unit{} 函数的返回值可以省略的可以根据函数体的最后一行自动推断 【注意】如果函数体的最后一行使用return 关键字返回数据那么函数的返回值一定不能省略的 def test { 1 } 函数体中函数的返回值前的return关键字可以省略的自动根据最后一行推断函数的返回值 如果函数的返回值类型是Unit类型 那么**号和函数**的返回值都可以省略 def test{} 匿名函数 定义定义函数时只关注函数的逻辑不关注函数的名字此时我们就可以使用匿名函数来定义函数 (形参列表) {函数体}使用场景当函数当作参数或者当作返回值使用的时候可以使用匿名函数传递简化 匿名函数的形参列表的类型可以省略的因为当作参数或者返回值使用的时候参数的类型定义死了如果匿名函数的函数体只有一个那么 {} 可以省略了如果形参的参数名在函数体中只出现了一次那么参数名就可以使用 _ 替代同时形参列表可以省略了 4.7.2 调用的简化一般不建议使用建议运算符的函数调用简化 调用的语法对象名|类名.函数名(实参列表) 调用的点.可以省略的对象名|类名 函数名(实参列表) 如果实参列表为空那么 () 可以省略如果声明函数的时候没有加 () 那么调用的时候一定不能加 () 如果函数的实参列表只有一个 那么 () 也可以省略 对象名|类名 函数名 唯一的实参 五、 Scala中面向对象 Scala源于Java中因此在Scala中也存在面向对象编程思想面向对象编程最核心的逻辑就是以类来组织代码以对象来调用代码。Scala的面向对象和Java基本上思维是一致的只不过就是语法稍微不一样而已。 5.1 包和import导入 包package包是用来分类管理Scala代码的将不同类型的代码放到不同的包下便于我们管理 5.1.1 Scala包有两种管理代码的方式 采用和Java一样的管理机制,新建包包下可以新建类和子包 采用包对象的管理机制实现一个文件中存在多个包和多个scala类 5.1.2 Scala中类的导入问题import 在当前Scala类中如果要使用非本包下的代码那么我们就得需要通过import关键字导入才能使用。 每一个Scala类默认导入三个包 java.lang._scala._scala.Predef._ Scala类中导入有一些规则和Java有点不一样 Scala可以在任何位置进行导包操作代码只能在导包位置之后使用 我们可以把所有的包放到package之后 class之前 如果我们要导入一个包下的所有代码那么可以使用_当作通配符使用 我们现在只想导入某一个包下的两个类而非所有类 import xxxx.{x1,x2} 导包重命名操作可以将一个类重命名为另外一个名字在当前类中使用 import xxxx.{x1x2} x1类在当前类中可以使用x2名字来替代 屏蔽某一个包下的部分类导入一个包下的所有代码除了某几个类之外 import xxxx{x1_,x2} 导入xxxx包下的x2类不导入x1这个类 5.2 类的声明和类的组成 5.2.1 面向对象中的类 类的定义 访问控制修饰符 class ClassName 访问控制修饰符 (主构造器参数列表){类体 }【注意】在一个Scala文件可以存在多个类 多个类的访问控制修饰符没有要求的 访问控制符 三个 private protected public–不写 在同一个Scala文件中可以存在多个Scala类权限没要求的 5.2.2 面向对象中类的属性 属性 属性用来描述类的特征 声明语法 访问控制修饰符 var|val 属性名:属性类型 值; 属性声明的时候必须加值但是我不想给其他值只想给默认值那么值使用 _ 来代替(属性值可以填写 _ _ 代表给属性赋予默认值默认值看类型的) 【注意】 val修饰的属性 不能赋予 _ 默认值必须给一个显示的值 属性前加一个注解BeanProperty 5.2.3 面向对象中类的方法 方法 Scala中方法就是函数函数声明在类体中称之为方法 语法 访问控制修饰符 def 方法名(形参列表):方法的返回值类型 { 方法体 } 5.2.4 面向对象中类的代码块和内部类 {} 类中类 5.2.5 面向对象中类的构造器 构造器是创建该类的实例对象的 Scala有两种构造器 主构造器声明在类上的 class ClassName 访问控制修饰符 (形参列表)--主构造器 辅助构造器声明在类中的构造器语法 def this形参列表{ } 辅助构造器必须在首行直接或者间接的调用主构造器代码 【注意】 Scala中每一个辅助构造器必须直接或者间接的调用主构造器显示声明调用 主构造器因为没有构造器体因此一般主构造器都是无参构造器如果主构造器想给类中的属性赋值那么我们需要把属性声明在主构造器的内部构造器的形参既是类的属性还是构造参数 主构造器的参数只要加上 var | val 那么就会变成类的属性 主构造器我们一般都是要求是无参构造器而且主构造器一旦是无参的那么主构造器的 () 可以省略 5.3 Scala中对象的创建 对象的创建就是变量|常量的定义 var|val 对象名:类 new 类名(实参) 简化 类型可以省略自动推断如果调用的构造器的实参为空那么 () 也可以省略的 5.4 面向对象的特征 5.4.1 封装性 和Java的封装一样的概念合理隐藏、合理暴露控制类、属性、方法、构造器、内部类能被谁访问使用不能被谁访问使用。 Scala的封装权限只有三种private protected 不写(public) 封装性和Java的区别在于两个地方 protected的权限比Java的权限更加严格只有当前类和子类能访问同包下的类都无法访问private的权限是私有化的但是Scala开后门private[包名] 只有当前类和指定包下能访问了 包一般是一个根包 5.4.2 继承性 和Java的概念是一样的extends继承Scala也是单继承一旦继承父类拥有父类中非私有化的属性和方法 5.4.3 多态性 定义变量的时候分为编译时类型和运行时类型 向上转型将儿子的对象给了父类的变量引用可以直接给不需要任何多余的操作 var s:Father new Son() 向下转型:将父亲给儿子不能直接给需要使用asInstanceof[子类] 赋值要求父亲的运行时类型必须是儿子或者儿子的子类类型 向下转型不是使用(子类)强转的而是使用asInstanceof[子类]函数 var s:Father new Son() var s1:Son s.asInstanceof[Son] 如果我们要进行向下转型最好先使用Scala提供的以下代码先判断父类的运行时类型是不是子类的类型 obj.isInstanceof[ClassName] 5.4.4 抽象性 抽象类 abstract class ClassName{ 抽象属性 抽象方法 } 抽象属性 没有 赋值的属性就是抽象属性 抽象方法 没有函数体的方法称为抽象方法 Scala中非抽象子类重写抽象类的属性和方法时为了表示重写的概念加了override关键字表示重写的过程 5.5 Scala中伴生对象Object 伴生对象是为了Scala和Java语言更好的集成在Scala中不存在static关键字但是Java中有静态的概念Scala就推出了一个伴生对象用来存放类似于静态的类内容 Object定义的属性和方法就是当前Class类的静态内容静态内容可以直接使用类名来调用Object类中存在一个功能特别强大的方法apply方法 apply方法可以让我们创建对象的时候不需要使用new关键字而是直接使用类名(形参列表)的形式构建类的对象def apply(形参列表):Class { new ClassName(实参); } 5.6 Scala中的case class样例类 样例类就等同于Java中JavaBean同时Scala提供case class是为了丰富模式匹配的功能的 5.6.1 样例类的语法 case class(形参列表) extends Father...... case class ClassName(形参列表) extends F with T1 形参列表既是类的属性 还是类的主构造器而且形参列表默认是使用private val修饰符的 同时样例类自动给我们生成类的toString、hashCode、equals、apply方法 和模式匹配结合使用的 1、样例类的形参列表既是样例类的主构造器还是样例类的属性而且属性默认还是使用val修饰的 2、样例类默认会给当前类生成toString、hashCode、equals、Object伴生对象的apply方法参数和主构造器的参数保持一致的 3、如果想给样例类的属性生成getter和setter方法只需要在每一个形参前加上一个BeanProperty注解 4、样例类可以应用于模式匹配中 5.7 Scala中的特质Trait 特质就是Java中的接口只不过在Java中称之为接口在Scala中称之为特质。Java中的所有接口都可以当作Scala的特质使用。 Scala中特质既可以包含抽象属性和抽象方法还可以包含普通的属性和普通的方法。 5.7.1 创建语法 trait 特质名{ 抽象属性 抽象方法 普通的属性 普通的方法 } 5.7.2 使用 Scala中特质也是需要继承的父类也是继承的 class Son extends Father with Trait1 with trait2 Scala中的特质不是用来实现的而是用来继承的 class A extends F with T1 with T2..... class A extends T1 with T2...... 六、Scala中集合 Scala中可以使用Java的集合但是Scala也给我们提供了一套集合体系Spark Kafka既支持Scala集合体系还支持Java集合集合 6.1 Java集合体系 6.1.1 Collection:单列集合 List元素可重复、且元素加入有序、可以根据索引取值 VectorArrayListLinkedList Set元素不可重复、没有索引的概念 HashSet:元素无序LinkedHashSet元素加入有序TreeSet元素是大小有序需要用到比较器 6.1.2 Map双列集合key值不可重复value可重复 HashMapHashTablePropertiesLinkedHashMapTreeMap 6.2 Scala集合体系 6.2.1 不可变集合体系 每一次操作集合都是返回一个新的集合对象而原有的集合不受任何的影响 scala.collection.immutable Set:不可重复Map双列Seq可以重复 6.2.2 可变集合体 每一次操作集合都是对原有的集合对象进行操作而不是返回新的集合对象 scala.collection.mutable SetMapSeq 6.3 Scala集合的使用 6.3.1 Scala中数组-Seq的使用 不可变数组Array可变数组:ArrayBuffer 6.3.2 Scala中List列表的使用 不可变列表List ::::::: 可变列表ListBuffer 6.3.3 Scala中Set集合的使用 元素无序不重复的 不可变Set集合Set 1. 2.-可变Set集合Set - 6.3.4 Scala中元组Tuple 【元组】不是集合 Scala比较特殊的一种容器也可以存放一组数据但是数据的类型可以不一样 元组最多能存放22个元素 元组的定义语法有两种 TupleN[xxx...] xxx... 获取元组的某一个元素元组名._N 6.3.5 Scala中Map集合的使用 不可变Map可变Map 6.4 Scala中集合的一些常用函数 6.4.1 基本函数 函数xxx.lengthxxx.sizexxx.foreach(函数)xxx.mkString(“分隔符”)xxx.contains(xxxx)xxx.iterator 6.4.2 集合的一些高级函数 1获取集合的头 head()2获取集合的尾不是头的就是尾 tail3集合最后一个数据4集合初始数据不包含最后一个5反转6取前后n 个元素7去掉前后n 个元素8并集9交集10差集11拉链12滑窗 6.4.3 集合的计算函数 1sum求和2求乘积3最大值4最小值5排序 sorted(implicit ord: Ordering[B]):根据当前集合中的元素进行大小比较 然后去排序前提是集合中的元素必须是可以比较大小的如果不能比较大小那么需要传递一个比较器比较器返回一个int类型的值sortedBy(f: xxxxx)((implicit ord: Ordering[xxx]))将集合中元素转换称为另外一种类型 然后根据转换的类型做比较sortWith(f:(xx,xx)Boolean): 自定义元素的比较规则返回一个boolean类型的值 七、Scala中的隐式转换 扩展类的功能的让原本两个毫无关系的类也可以互相调用里面的方法,隐式转换的内容会自动触发 7.1 隐式转换函数 implicit def 函数名(类型)另外一个类型{ 如何创建另外一个类型 } 将输入类型转换称为输出类型从而扩展某个类型的功能和方法 7.2 隐式转换参数 可以实现在调用参数的时候哪怕参数没有默认值也可以不用传递也能调用函数 如果使用隐式转换参数需要做两步操作 1、首先需要将函数的参数声明为隐式转换参数 implicit 变量名:数据类型 2、在函数调用的作用域当中声明一个同类型的隐式变量这样的话调用函数的时候函数会从作用域当中去找一个同类型的参数自动填充 implicit 变量名:数据类型 值 【注意】在同一个作用域下不能存在两个同类型的隐式变量 7.3 隐式转换类 八、Scala中_的作用 _在模式匹配中_代表的是未匹配到其他情况默认情况函数名 _ : _ 代表的是将函数当作一个整体来使用而非调用函数导包的时候_有两种用途_ 导入一个包下的所有类 import java.lang.屏蔽某一个包下的指定类 import java.util.{Arrays_}_ _声明属性的时候属性值可以使用_替代此时_代表给属性赋予默认值
http://www.dnsts.com.cn/news/49137.html

相关文章:

  • 如何制作一个自己的网页网站宗亲网站建设建议
  • 电子工程网站有哪些百度seo排名曝光行者seo
  • 郴州网站建设软件定制开发制作企业目录
  • 网站建设必须要具备哪些知识网络设计报告提纲范文
  • 一站式服务大厅官网建设摩托车官网首页
  • 淘客怎么建网站做推广百度怎么做开锁网站
  • 电子商务网站建设主题可以做网站的软件上传歌曲
  • 做带v头像的网站国外优秀企业网站欣赏
  • 学校内部网站开发价格在哪个网站上做苗木生意好些
  • 外贸免费开发网站建设长沙网站建设流程
  • wordpress站点如何添加百度分享代码建设银行网站怎么登陆不了了
  • 网站后台修改网站首页怎么做做网站背景图片浪漫爱情
  • 南京城市规划建设展览馆网站重庆企业网站推广价格
  • 网站后台管理系统权限做免费嗳暧视频网站
  • 华强北附近网站建设WordPress 4.8.1 增强版
  • 功能型网站wordpress 换语言
  • 网站app客户端制作林州市住房和城乡建设部网站
  • 如何策划手机网站龙岩律师在线咨询
  • 建设网站最好的软件网站设计制作的服务商
  • 戒赌网站怎么做网络培训心得体会
  • 衡水 网站建设百度搜索
  • 微网站自助建设长春网站建设模板
  • 门户网站系统业务流程图自己做的产品在哪个网站上可从卖
  • 淄博的大型网站建设企业网站源码 thinkphp
  • 杭州企业网站设计模板网站用户黏度
  • 九寨沟城乡建设官方网站呼和浩特网站建设哪家好
  • wordpress图床首页无缩略图湖北seo推广
  • 局域网的电脑怎么做网站服务器优秀的html5网站 2016
  • 什么网站可以学习建设工程法律实践设计帮官网
  • 免费发帖的平台有哪些网络优化师