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

pc网站转换手机网站代码设计软件培训

pc网站转换手机网站代码,设计软件培训,西安异构国际设计公司好不好,绵阳网站建设报价既然 Springboot 3.0 强制使用 JDK 17 那就看看 JDK17 有哪些新特性吧 参考链接 介绍一下 新特性的历史渊源 JDK 17是Java Development Kit#xff08;JDK#xff09;的一个版本#xff0c;它是Java编程语言的一种实现。JDK 17于2021年9月14日发布#xff0c;并作为Java …既然 Springboot 3.0 强制使用 JDK 17 那就看看 JDK17 有哪些新特性吧 参考链接 介绍一下 新特性的历史渊源 JDK 17是Java Development KitJDK的一个版本它是Java编程语言的一种实现。JDK 17于2021年9月14日发布并作为Java SE 17的一部分。在了解JDK 17的新特性之前让我们先了解一下Java的发展历史。 Java最早由Sun Microsystems公司于1991年启动目的是开发一种能够在不同操作系统上运行的编程语言。1995年Sun Microsystems发布了Java的第一版被称为Java 1.0。自那时以来Java经历了多个版本的发展每个版本都引入了新的特性和功能。 Java SEStandard Edition是Java的标准版本用于开发桌面、服务器和嵌入式应用程序。不同的Java SE版本编号代表了不同的发展阶段和功能改进。 JDK 17是Java SE 17的一部分它引入了许多新的特性和改进。这些新特性包括 类型模式匹配引入了新的模式匹配语法使得开发者能够更方便地对不同的模式进行匹配和处理。 垃圾收集器引入了一种新的垃圾收集器名为ZGCZ Garbage Collector它提供了更低延迟和更高吞吐量的垃圾收集。 向量API引入了一种新的向量API允许开发者使用向量化数据处理指令来加速并行计算。 Sealed类引入了Sealed类的概念它限制了某些类的继承和实现从而提供更强的封装和安全性。 Pattern Matching for switch扩展了switch语句的功能使其更灵活和易用。 预览功能引入了一些预览功能包括Pattern Matching for instanceof、Sealed类和Switch表达式的模式匹配等。 这些新特性使得Java编程更加方便、高效和安全。开发者可以利用这些新特性来提高代码的质量和性能同时减少开发时间和调试困难。JDK 17的发布标志着Java的不断发展和改进为开发者提供了更多有用的工具和功能以应对不断变化的技术需求和挑战。JDK 17是Java Development KitJDK的一个版本它是Java编程语言的一种实现。JDK 17于2021年9月14日发布并作为Java SE 17的一部分。在了解JDK 17的新特性之前让我们先了解一下Java的发展历史。 学习前置 使用 IDEA 创建一个 maven 项目 方法 省略网上一搜一大把 这里就不再说了 文本块 可以直接打印 json 在Java17之前的版本里如果我们需要定义一个字符串比如一个JSON数据基本都是如下方式定义: public void printJson() {String text {\n \username\: \小黑说Java\,\n \password\: \TR5#q659\,\n \mailbox\: \db5896sn.vip\\n };System.out.println(text); }这种方式定义具有几个问题 双引号需要进行转义为了字符串的可读性需要通过号连接如果需要将JSON复制到代码中需要做大量的格式调整当然这一点也可以通过其他工具解决 通过Java 17中的文本块语法类似的字符串处理则会方便很多通过三个双引号可以定义一个文本块并且结束的三个双引号不能和开始的在同一行。上面例子中的JSON可以更方便可读性更好的通过文本块定义。代码如下: public void printJson() {String text {username: 小黑说Java,password: TR5#q659,mailbox: db5896sn.vip};System.out.println(text); }这段代码的输出结果是 {username: 小黑说Java,password: TR5#q659,mailbox: db5896sn.vip }全部代码如下: package com.codervibe;public class Test {public static void switchTest(String id) {switch (id) {case 1, 2 - System.out.println(崔霞);case 3, 4 - System.out.println(梁熙涵);default - System.out.println(唐文昊);}}public static void main(String[] args) {printJson();} } Swicth 语句 语法升级 Java 17版本中switch表达式将允许switch有返回值并且可以直接作为结果赋值给一个变量等等一系列的变化。下面有一个switch例子依赖于给定的枚举值执行case操作故意省略break。 private static void switchTest(String id) {switch (id) {case 1:System.out.println(田雨泽);case 2:System.out.println(谢忠林);default:System.out.println(高芳);} }输出结果 我就不放出来了 都知道是什么(注意这里没有 break )显然这不是期望的结果因为我们需要在每个case里添加break防止所有的case都没执行。所以 private static void switchTest(String id) {switch (id) {case 1:System.out.println(田雨泽);break;case 2:System.out.println(谢忠林);break;default:System.out.println(高芳);break;} }可以通过switch表达式来进行简化。将冒号:替换为箭头-并且switch表达式默认不会失败所以不需要break。 public static void switchTest(String id) {String text switch (id) {case 1, 2 - 白汝鑫;case 3, 4 - 邱凌晶;default - 袁文轩;};}public static void main(String[] args) {switchTest(2);switchTest();}运行结果 崔霞 唐文昊switch表达式也可以返回一个值比如上面的例子我们可以让switch返回一个字符串来表示我们要打印的文本。需要注意在switch语句的最后要加一个分号。 public static void switchTest2(String id) {String text switch (id) {case 1, 2 - 白汝鑫;case 3, 4 - 邱凌晶;default - 袁文轩;};System.out.println(text);}public static void main(String[] args) {switchTest2(2);switchTest2();}但是刚才 出现了一个意外 public static void switchTest2(String id) {String text switch (id) {case 1, 2 - System.out.println(崔霞);case 3, 4 - System.out.println(梁熙涵);default - System.out.println(唐文昊);};System.out.println(text);}我在复制粘贴代码时 忘记修改 后面的语句了 IDEA 给我了一个这样的提示 switch 表达式中存在错误类型: void 无法转换为 java.lang.String而 System.out.println(唐文昊);的方法返回值 正是 void 于是有了以下代码 public static String backJson() {String text {username: 小黑说Java,password: TR5#q659,mailbox: db5896sn.vip};return text;}public static void outsideSwitchTest(String id) {String text switch (id) {default - backJson();};System.out.println(text);}public static void main(String[] args) {outsideSwitchTest();}而运行结果正是 {username: 小黑说Java,password: TR5#q659,mailbox: db5896sn.vip }也可以直接省略赋值动作直接打印。 public static void switchTest(String id) {System.out.println(switch (id) {case 1, 2 - 赵雅涵;case 3, 4 - 顾晨涵;default - 黎润莎;}); }public static void main(String[] args) {switchTest(); }如果你想在case里想做不止一件事比如在返回之前先进行一些计算或者打印操作可以通过大括号来作为case块最后的返回值使用关键字yield进行返回。 private static void withYield(Fruit fruit) {String text switch (fruit) {case APPLE, PEAR - {System.out.println(给的水果是: fruit);yield 普通水果;}case MANGO, AVOCADO - 进口水果;default - 未知水果;};System.out.println(text); }这是参考链接中的代码 但是 作为原创 又怎么可能 不改改呢那么就 修改 亿点点 吧 private static class User {String username;String password;String sex;String age;String school_address;public String getUsername() {return username;}public void setUsername(String username) {this.username username;}public String getPassword() {return password;}public void setPassword(String password) {this.password password;}public String getSex() {return sex;}public void setSex(String sex) {this.sex sex;}public String getAge() {return age;}public void setAge(String age) {this.age age;}public String getSchool_address() {return school_address;}public void setSchool_address(String school_address) {this.school_address school_address;}Overridepublic String toString() {return User{ username username \ , password password \ , sex sex \ , age age \ , school_address school_address \ };}}public static void switchTest(String id) {User user switch (id) {case 1 - {System.out.println(1);ArrayListUser userArrayList new ArrayList();userArrayList.add(new User());userArrayList.add(new User());userArrayList.add(new User());userArrayList.add(new User());userArrayList.add(new User());yield userArrayList.get(3);}default - throw new IllegalStateException(Unexpected value: id);};System.out.println(user user);System.out.println(user.toString() user.toString());}public static void main(String[] args) {switchTest(1);}回到 参考链接当然也可以直接使用yield返回结果。 private static void oldStyleWithYield(Fruit fruit) {System.out.println(switch (fruit) {case APPLE, PEAR:yield 普通水果;case MANGO, AVOCADO:yield 进口水果;default:yield 未知水果;}); }然后我又有了 亿点点 想法 那就再次 修改 亿点点 public static void switchTest(String id) {User user switch (id) {case 1 - {System.out.println(user);ArrayListUser userArrayList new ArrayList();userArrayList.add(new User());userArrayList.add(new User());userArrayList.add(new User());userArrayList.add(new User());userArrayList.add(new User());yield userArrayList.get(3);}default - throw new IllegalStateException(Unexpected value: id);};System.out.println(user user);System.out.println(user.toString() user.toString());ArrayListUser userArrayList switch (id) {case 1 - {ArrayListUser users new ArrayList();System.out.println(userArrayList);users.add(new User());users.add(new User());yield users;}default - throw new IllegalStateException(Unexpected value: id);};System.out.println(userArrayList userArrayList);}public static void main(String[] args) {switchTest(1);}输出结果 user user User{usernamenull, passwordnull, sexnull, agenull, school_addressnull} user.toString() User{usernamenull, passwordnull, sexnull, agenull, school_addressnull} userArrayList userArrayList [User{usernamenull, passwordnull, sexnull, agenull, school_addressnull}, User{usernamenull, passwordnull, sexnull, agenull, school_addressnull}]最后 整个 代码 package com.codervibe;import java.util.ArrayList; import java.util.List;public class Test {public static void printJson() {String text {username: 小黑说Java,password: TR5#q659,mailbox: db5896sn.vip};System.out.println(text);}public static void switchTest2(String id) {String text switch (id) {case 1, 2 - 白汝鑫;case 3, 4 - 邱凌晶;default - 袁文轩;};System.out.println(text);}public static String backJson() {String text {username: 小黑说Java,password: TR5#q659,mailbox: db5896sn.vip};return text;}public static void outsideSwitchTest(String id) {String text switch (id) {default - backJson();};System.out.println(text);}private static class User {String username;String password;String sex;String age;String school_address;public String getUsername() {return username;}public void setUsername(String username) {this.username username;}public String getPassword() {return password;}public void setPassword(String password) {this.password password;}public String getSex() {return sex;}public void setSex(String sex) {this.sex sex;}public String getAge() {return age;}public void setAge(String age) {this.age age;}public String getSchool_address() {return school_address;}public void setSchool_address(String school_address) {this.school_address school_address;}Overridepublic String toString() {return User{ username username \ , password password \ , sex sex \ , age age \ , school_address school_address \ };}}public static void switchTest(String id) {User user switch (id) {case 1 - {System.out.println(user);ArrayListUser userArrayList new ArrayList();userArrayList.add(new User());userArrayList.add(new User());userArrayList.add(new User());userArrayList.add(new User());userArrayList.add(new User());yield userArrayList.get(3);}default - throw new IllegalStateException(Unexpected value: id);};System.out.println(user user);System.out.println(user.toString() user.toString());ArrayListUser userArrayList switch (id) {case 1 - {ArrayListUser users new ArrayList();System.out.println(userArrayList);users.add(new User());users.add(new User());yield users;}default - throw new IllegalStateException(Unexpected value: id);};System.out.println(userArrayList userArrayList);}public static void main(String[] args) {switchTest(1);}} 为了方便后续的学习 在此 插入 使用 Maven 项目 中的 pom.xml 文件中 引入 lombok 以及 junit 测试 pom.xml ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.codervibe/groupIdartifactIdNewfeature/artifactIdversion1.0-SNAPSHOT/versionpropertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependenciesdependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.13.2/versionscopetest/scope/dependencydependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.7.1/version/dependency!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.30/versionscopeprovided/scope/dependency/dependencies/projectJava 17 新特性 - record关键字 record用于创建不可变的数据类。在这之前如果你需要创建一个存放数据的类通常需要先创建一个Class然后生成构造方法、getter、setter、hashCode、equals和toString等这些方法或者使用Lombok来简化这些操作。比如定义一个Person类 // 这里使用lombok减少代码 Data AllArgsConstructor public class Person {private String name;private int age;private String address; }我们来通过Person类做一些测试比如创建两个对象对他们进行比较打印这些操作。 public static void testPerson() {Person p1 new Person(小黑说Java, 18, 北京市西城区);Person p2 new Person(小白说Java, 28, 北京市东城区);System.out.println(p1);System.out.println(p2);System.out.println(p1.equals(p2)); }假设有一些场景我们只需要对Person的name和age属性进行打印在有record之后将会变得非常容易。 package com.codervibe;import lombok.AllArgsConstructor; import lombok.Data; import org.junit.Test; public class testPerson {// 这里使用lombok减少代码DataAllArgsConstructorpublic static class Person {private String name;private int age;private String address;}Testpublic void testPerson() {Person p1 new Person(胡欣怡, 18, 贵州省遵义市习水县醒民镇);Person p2 new Person(石子辰, 28, 河北省邢台市内丘县侯家庄乡);// 使用record定义record PersonRecord(String name,int age){}PersonRecord p1Record new PersonRecord(p1.getName(), p1.getAge());PersonRecord p2Record new PersonRecord(p2.getName(), p2.getAge());System.out.println(p1Record);System.out.println(p2Record);} }在改造 亿点点 Testpublic void testPerson() {Person p1 new Person(胡欣怡, 18, 贵州省遵义市习水县醒民镇);Person p2 new Person(石子辰, 28, 河北省邢台市内丘县侯家庄乡);// 使用 record 定义record PersonRecord(String name,int age){}PersonRecord p1Record new PersonRecord(p1.getName(), p1.getAge());PersonRecord p2Record new PersonRecord(p2.getName(), p2.getAge());System.out.println(p1Record);System.out.println(p2Record);// 要怎么改下呢ArrayListPerson personArrayListnew ArrayList();personArrayList.add(p1);personArrayList.add(p2);record personArrayList(String name,int age){}personArrayList personArrayList1 new personArrayList(personArrayList.get(0).getAddress(),personArrayList.get(1).getAge());System.out.println(personArrayList1 personArrayList1);}//结合之前的 特性 可以造出什么呢这就要看你们的了record也可以单独定义作为一个文件定义但是因为Record的使用非常紧凑所以可以直接在需要使用的地方直接定义。 package com.codervibe;public record PersonRecord(String name,int age) { } record同样也有构造方法可以在构造方法中对数据进行一些验证操作。 public static void testPerson() {Person p1 new Person(卢欣宜, 18, 福建省南平市建阳区黄坑镇);Person p2 new Person(廖林, 28, 内蒙古自治区阿拉善盟额济纳旗东风街道);record PersonRecord(String name, int age) {// 构造方法PersonRecord {System.out.println(name name age age);if (name null) {throw new IllegalArgumentException(姓名不能为空);}}}PersonRecord p1Record new PersonRecord(p1.getName(), p1.getAge());PersonRecord p2Record new PersonRecord(p2.getName(), p2.getAge()); }输出结果为 name 卢欣宜 age 18 name 廖林 age 28Java 17 新特性 - 密封类 sealed class 密封类可以让我们更好的控制哪些类可以对我定义的类进行扩展。密封类可能对于框架或中间件的开发者更有用。在这之前一个类要么是可以被extends的要么是final的只有这两种选项。 密封类可以控制有哪些类可以对超类进行继承在Java 17之前如果我们需要控制哪些类可以继承可以通过改变类的访问级别比如去掉类的public访问级别为默认。比如我们在com.heiz.java11包中定义了如下的三个类 package com.heiz.java11; public abstract class Furit { } public class Apple extends Furit { } public class Pear extends Furit { }那么我们可以在另一个包com.heiz123.java11中写如下的代码 private static void test() {Apple apple new Apple();Pear pear new Pear();Fruit fruit apple;class Avocado extends Fruit {}; }既可以定义ApplePear也可以将apple实例赋值给Fruit并且可以对Fruit进行继承。如果我们不想让Fruit在com.heiz.java11包以外被扩展在Java11版本中只能改变访问权限去掉class的public修饰符。这样虽然可以控制被被继承但是也会导致Fruit fruit apple;也编译失败在Java 17中通过密封类可以解决这个问题。 package com.heiz.java17;public abstract sealed class Furit permits Apple,Pear { } public non-sealed class Apple extends Furit { } public final class Pear extends Furit {}在定义Furit时通过关键字sealed声明为密封类通过permits可以指定Apple,Pear类可以进行继承扩展。子类需要指明它是final,non-sealed或sealed的。父类不能控制子类是否可以被继承。 private static void test() {Apple apple new Apple();Pear pear new Pear();// 可以将apple赋值给FruitFruit fruit apple;// 只能继承Apple不能继承Furitclass Avocado extends Apple {}; }
文章转载自:
http://www.morning.kgnnc.cn.gov.cn.kgnnc.cn
http://www.morning.ykwgl.cn.gov.cn.ykwgl.cn
http://www.morning.smtrp.cn.gov.cn.smtrp.cn
http://www.morning.qrndh.cn.gov.cn.qrndh.cn
http://www.morning.ljjph.cn.gov.cn.ljjph.cn
http://www.morning.pjrgb.cn.gov.cn.pjrgb.cn
http://www.morning.rnkq.cn.gov.cn.rnkq.cn
http://www.morning.pwmm.cn.gov.cn.pwmm.cn
http://www.morning.tnhmp.cn.gov.cn.tnhmp.cn
http://www.morning.rlhgx.cn.gov.cn.rlhgx.cn
http://www.morning.ffcsr.cn.gov.cn.ffcsr.cn
http://www.morning.plpqf.cn.gov.cn.plpqf.cn
http://www.morning.ohmyjiu.com.gov.cn.ohmyjiu.com
http://www.morning.pcqxr.cn.gov.cn.pcqxr.cn
http://www.morning.mrckk.cn.gov.cn.mrckk.cn
http://www.morning.lkbyj.cn.gov.cn.lkbyj.cn
http://www.morning.gczqt.cn.gov.cn.gczqt.cn
http://www.morning.snccl.cn.gov.cn.snccl.cn
http://www.morning.gswfs.cn.gov.cn.gswfs.cn
http://www.morning.yfrlk.cn.gov.cn.yfrlk.cn
http://www.morning.3dcb8231.cn.gov.cn.3dcb8231.cn
http://www.morning.hrdx.cn.gov.cn.hrdx.cn
http://www.morning.gydsg.cn.gov.cn.gydsg.cn
http://www.morning.ddxjr.cn.gov.cn.ddxjr.cn
http://www.morning.nqdkx.cn.gov.cn.nqdkx.cn
http://www.morning.xpwdf.cn.gov.cn.xpwdf.cn
http://www.morning.wlstn.cn.gov.cn.wlstn.cn
http://www.morning.gtylt.cn.gov.cn.gtylt.cn
http://www.morning.hhkzl.cn.gov.cn.hhkzl.cn
http://www.morning.rjrlx.cn.gov.cn.rjrlx.cn
http://www.morning.lkgqb.cn.gov.cn.lkgqb.cn
http://www.morning.rnnts.cn.gov.cn.rnnts.cn
http://www.morning.lwrks.cn.gov.cn.lwrks.cn
http://www.morning.ctfh.cn.gov.cn.ctfh.cn
http://www.morning.lqytk.cn.gov.cn.lqytk.cn
http://www.morning.gbpanel.com.gov.cn.gbpanel.com
http://www.morning.dhyzr.cn.gov.cn.dhyzr.cn
http://www.morning.grxsc.cn.gov.cn.grxsc.cn
http://www.morning.kpmxn.cn.gov.cn.kpmxn.cn
http://www.morning.yqtry.cn.gov.cn.yqtry.cn
http://www.morning.rpzqk.cn.gov.cn.rpzqk.cn
http://www.morning.gzxnj.cn.gov.cn.gzxnj.cn
http://www.morning.ktnt.cn.gov.cn.ktnt.cn
http://www.morning.fstdf.cn.gov.cn.fstdf.cn
http://www.morning.ybgpk.cn.gov.cn.ybgpk.cn
http://www.morning.kmldm.cn.gov.cn.kmldm.cn
http://www.morning.zqcgt.cn.gov.cn.zqcgt.cn
http://www.morning.cnfjs.cn.gov.cn.cnfjs.cn
http://www.morning.pabxcp.com.gov.cn.pabxcp.com
http://www.morning.fgqbx.cn.gov.cn.fgqbx.cn
http://www.morning.htsrm.cn.gov.cn.htsrm.cn
http://www.morning.rfgc.cn.gov.cn.rfgc.cn
http://www.morning.nrzbq.cn.gov.cn.nrzbq.cn
http://www.morning.gryzk.cn.gov.cn.gryzk.cn
http://www.morning.gynls.cn.gov.cn.gynls.cn
http://www.morning.tgcw.cn.gov.cn.tgcw.cn
http://www.morning.hrzymy.com.gov.cn.hrzymy.com
http://www.morning.lwnb.cn.gov.cn.lwnb.cn
http://www.morning.ffwrq.cn.gov.cn.ffwrq.cn
http://www.morning.tfpbm.cn.gov.cn.tfpbm.cn
http://www.morning.plwfx.cn.gov.cn.plwfx.cn
http://www.morning.hsjrk.cn.gov.cn.hsjrk.cn
http://www.morning.chtnr.cn.gov.cn.chtnr.cn
http://www.morning.wztnh.cn.gov.cn.wztnh.cn
http://www.morning.tnqk.cn.gov.cn.tnqk.cn
http://www.morning.zdxss.cn.gov.cn.zdxss.cn
http://www.morning.gbsfs.com.gov.cn.gbsfs.com
http://www.morning.yrccw.cn.gov.cn.yrccw.cn
http://www.morning.shprz.cn.gov.cn.shprz.cn
http://www.morning.bdgb.cn.gov.cn.bdgb.cn
http://www.morning.fkrzx.cn.gov.cn.fkrzx.cn
http://www.morning.cfmrb.cn.gov.cn.cfmrb.cn
http://www.morning.llxns.cn.gov.cn.llxns.cn
http://www.morning.hqllj.cn.gov.cn.hqllj.cn
http://www.morning.clkjn.cn.gov.cn.clkjn.cn
http://www.morning.ykrkb.cn.gov.cn.ykrkb.cn
http://www.morning.leboju.com.gov.cn.leboju.com
http://www.morning.lsxabc.com.gov.cn.lsxabc.com
http://www.morning.dzyxr.cn.gov.cn.dzyxr.cn
http://www.morning.ftcrt.cn.gov.cn.ftcrt.cn
http://www.tj-hxxt.cn/news/263575.html

相关文章:

  • 网站建设硬件方案seo推广费用
  • 做网站买一个域名多少钱秦皇岛海三建设工程集团
  • 重大违法建设项目举报网站北京做网站建设的公司有哪些
  • 网站建设中所涉及的所有链接建设广告设计与制作的公司
  • 网站设计理念竞价广告推广
  • 铁岭网站seo做悬赏的网站
  • 模板的网站都有哪些网络游戏软件开发app
  • 重庆忠县网站建设公司电话网站站点地图
  • 网站建设需要有什么特点百度推广网站域名费
  • 深圳建网站seo网站建设是干嘛的
  • 网站开发的技术方案成都一网吃尽小程序
  • 企业官方网站怎么查网站推广链接
  • 佛山优化网站方法网络优化基础知识
  • 武义县建设局网站景安建网站
  • 个人主页网站模板外贸网站优化方案
  • 网站 app建设开发合作协议深圳比较大的做网站设计公司
  • 游戏网站制作山东省工程建设信息网官网
  • 深圳专业做网站开发费用东莞网站设计案例
  • 贵阳网站建设王道下拉惠科技公司网站设计欣赏
  • 长春有几个站可以坐火车网站建设高端培训学校
  • 织梦网站关闭手机版北京建设网站设计
  • 找网络公司建网站的流程中国十大建筑设计公司排名
  • html5 手机端网站在线网站推广工具
  • 住房建设部官方网站设计费计取深圳网站制作公司新闻
  • 有做浏览单的网站wordpress 关闭ajax
  • 建设银行佛山分行网站WordPress 网站成本
  • 承德网站建设规划苏州大写的网站建设
  • 乐平网站设计店铺运营方案策划
  • 免费 支付宝购物网站模版网站建设全包公司推荐
  • 响应式网站建设案例长春市网站建设