JDK16即将发布,你准备好了吗?JDK8新特性Lambda

9 篇文章 0 订阅
订阅专栏

      岁月无声,岁月有声.2020实鼠不易,2021牛转乾坤。

      当我们开发者与大多企业还停留在JDK8的时候,JDK16即将问世,你准备好了吗?

作为开发者的我与大家一样,我真心的跟不上,也跟不上jdk更新的速度,但这会影响我们吗?答案是否定的,目前主流大型企业很多停留在jdk6,jdk7与jdk8,jdk9这几个主流版本。所以对于我们而言,也可暂时不去更新学习jdk16。当然,具体情况根据自身需求情况,有需要就可以去学习,暂时不影响工作,也未必马上就去学习。当然,作为程序员的我们,是需要经常学习的,学海无涯,活到老学到老。有梦想就去追逐,即使失败,也无愧于心。那么在这里,博主并不会去介绍jdk16,博主这里主要是介绍jdk8相关的知识特性。

1、JDK8新特性简介

  • 速度更快:算法的优化(比如HashMap)、底层内存结构的优化(将永久区PremGen变成了元空间MetaSpace)
  • 代码更少(增加了新的语法Lambda表达式)
  • 强大的Stream API
  • 偏于并行
  • 最大化减少空指针异常 Optional
    tips:
    永久区属于堆heap(在jdk1.7之前,heap中分为了2个区:垃圾回收区和永久区);而元空间存储在物理内存上

2、函数式编程思想

  • 在数学中,函数指的是给定一个输入值,通过一套计算方案,最终给出结果值。 也就是拿什么东西做什么事。
  • 面向对象又过分的强调了必须要通过对象的形式来做某事。(重视做事的过程)
  • 而函数式编程强调“做什么,而不是以什么形式去做”。(重视做事的结果)

3、Lambda编程基础

3.1函数式接口

在学习Lambda之前,需要先搞清楚函数式接口
函数式接口:适用于函数式编程场景(Lambda表达式),接口中有且仅有一个抽象方法,且需要添加FunctionalInterface注解
示例代码如下:

@FunctionalInterface
interface Conver{
	void fun();
}

3.2Lambda表达式格式及说明

Lambda表达式的标准格式为: (参数类型 参数名称) ‐> { 代码语句 }
说明:

  • 小括号内的语法与传统方法参数列表一致
  • -> 是新引入的语法格式,代表指向动作 ,表示小括号前面的参数被用于后面{}里面的代码语句
  • 大括号内的语法与传统方法体要求基本一致,它实际上是对函数式接口里唯一的那个抽象方法的重写

 

3.3Lambda省略格式

Lambda强调的是“做什么”而不是“怎么做”,所以凡是可以根据上下文推导得知的信息,都可以省略。
省略规则如下:

  • 小括号内参数的类型可以省略;
  • 如果小括号内有且仅有一个参,则小括号可以省略;
  • 如果大括号内有且仅有一个语句,则无论是否有返回值,都可以省略大括号、return关键字及语句分号。

3.4代码实例

1)无参无返回值

import org.junit.Test;
public class demo01 {
    @Test
    public void demo01(){
        //匿名内部类写法
        Runnable task = new Runnable() {
            @Override
            public void run() {
                System.out.println("多线程任务1");
            }
        };
        new Thread(task).start();

        //Lambda写法
        new Thread(()->{System.out.println("多线程任务2");}).start();
        //{}里面只有一条语句,可以省略{}和;
        new Thread(()->System.out.println("多线程任务3")).start();
    }
}

 

2)有参有返回值

//有参有返回值
//有参有返回值
@FunctionalInterface
public interface addSum {
    int sum(int a,int b);
}

 

package com.demo.lambda.day03;

import org.junit.Test;

public class LambdaAddSumDemo {
    @Test
    public void demo02() {
        //需求:求两个整数和
        //int result = addSum(10,20,(a,b)->{return a+b;});
        //可优化为下面代码
        int result = sum(10,20,(a,b)->a+b);
        System.out.println(result);
    }

    //两个int类型进行处理
    public int sum(int a,int b,addSum c){
        return c.sum(a,b);
    }
}

3)参数、返回值类型为函数式接口类型

package com.demo.lambda.day03;
import org.junit.Test;
import java.util.Arrays;
import java.util.Comparator;

public class demo03 {
    @Test
    public void demo03() {
        //需求1:执行1个线程任务
        startThread(()->System.out.println("多线程"));

        //需求2:将数组按照由小到大顺序排序
        String[] arr = {"c","a","d","b"};
        Arrays.sort(arr,compara());
        System.out.println(Arrays.toString(arr));
    }

    //参数为函数式接口,执行1个线程操作
    public void startThread(Runnable target){
        new Thread(target).start();
    }

    //返回值类型为一个函数式接口,返回一个比较器对象
    public Comparator<String> compara(){
        return (a,b)->a.compareTo(b);
    }

}

3.5Lambda的延迟执行

有些场景代码执行后,结果不一定会使用,这就造成了性能浪费。而Lambda具有延迟执行的特性,就可以很好的解决这个问题。
参考代码如下:

package com.demo.lambda.day03;

import org.junit.Test;

public class LambdaStringDemo {
    @Test
    public void demo04() {
        String msg1 = "hello";
        String msg2 = "world";
        //不论level,在调用log方法的时候,后面的参数一定要进行拼接操作
        log("2",msg1+msg2);

        //只有当level符合条件,才会去调用append方法,才会执行Lambda
        newLog("1",()->msg1+msg2);
    }

    //记录日志
    public void log(String level,String msg){
        if("1".equals(level)){
            System.out.println(msg);
        }
    }

    public void newLog(String level,MessageBuilder mb){
        if("1".equals(level)){
            System.out.println(mb.append());
        }
    }
}

 

4、Lambda编程进阶

公共定义的函数式接口
从jdk1.8开始提供了function包,该包针对于用户有可能做的函数式接口做了一个公共定义
最为核心的有四个接口:

  1. 功能性接口:Function<T, R>
    是对接收一个T类型参数,返回R类型的结果的方法的抽象
    抽象方法:R apply(T t)
    默认方法:andThen
    示例代码如下:
package com.demo.lambda.day03;

import org.junit.Test;

import java.util.function.Function;

public class demo5 {
    @Test
    public void functionTest() {
        int num = fun("100",s->Integer.parseInt(s) );//字符串转成int类型
        System.out.println(num);
        //先将字符串转成int,再*10
        int result = method("5", s->Integer.parseInt(s), a->a *= 10);
        System.out.println(result);
    }

    //用于字符串处理
    public Integer fun(String s, Function<String,Integer> fun){
        return fun.apply(s);
    }

    //andThen:先执行一次apply操作,然后将第一次执行apply操作后获得的返回值作为参数再执行一次apply操作
    public int method(String s, Function<String,Integer> one,Function<Integer,Integer> two){
        return one.andThen(two).apply(s);
    }
}

2. 消费型接口:Consumer<T>
对应的方法类型为接收一个参数,没有返回值
抽象方法:void accept(T t)
默认方法:andThen
示例代码如下:

package com.demo.lambda.day03;
import org.junit.Test;
import java.util.function.Consumer;
public class demo6 {
    @Test
    public void consumerTest(){
        shopping(12345, m->System.out.println("花了"+m+"元买了包包"));
        //将"hElLo"转成大写输出,其次再转成小写输出
        fun("hElLo",s->System.out.println(s.toUpperCase()),
                s->System.out.println(s.toLowerCase()));
    }

    //花钱购物
    public void shopping(double money,Consumer<Double> con){
        con.accept(money);
    }

    //andThen:使用提供的参数执行两次操作
    public void fun(String str, Consumer<String> one, Consumer<String> two){
        one.andThen(two).accept(str);
    }

}

3.供给型接口:Supplier<T>
该接口对应的方法类型不接受参数,但是提供一个返回值
抽象方法:T get()
示例代码如下:

package com.demo.lambda.day03;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.function.Supplier;
public class demo7 {
    @Test
    public void supplierTest(){
        //获取10个0~99之间的随机数
        List<Integer> list = getList(10, ()->new Random().nextInt(100));
        System.out.println(list);
    }

    //获取指定个数的Integer集合
    public List<Integer> getList(int count, Supplier<Integer> sup){
        List<Integer> list = new ArrayList<>();
        for(int i=0;i<count;i++){
            list.add(sup.get());
        }
        return list;
    }

}

4.断言型接口:Predicate<T>
该接口对应的方法为接收一个参数,返回一个Boolean类型
抽象方法:boolean test(T t)
默认方法:and(与),or(或),negate(非)
示例代码如下: 

package com.demo.lambda.day03;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;

public class demo8 {
    @Test
    public void predicateTest(){
        List<String> list = Arrays.asList("Tom","Jerry","Tony");
        List<String> nl = filterList(list, s->s.startsWith("T"));//将所有以“T”开头的字符串放入集合中
        System.out.println(nl);

        //判断一个字符串既包含"H",又包含"O"
        boolean bool = andFun(s->s.contains("H"),s->s.contains("O"),"HelloOpen");
        System.out.println(bool);

        //判断一个字符串中是否含有"H"或者"O"
        bool = orFun(s->s.contains("H"),s->s.contains("O"),"HelloOpen");
        System.out.println(bool);

        //对给定操作进行非判定
        bool = negateFun(s->s.length()<5,"helloworld");
        System.out.println(bool);
    }

    //将满足条件的字符串放入集合中
    public List<String> filterList(List<String> list, Predicate<String> pre){
        List<String> nl = new ArrayList<>();
        for(String s:list){
            if(pre.test(s)){
                nl.add(s);
            }
        }
        return nl;
    }

    //and
    public boolean andFun(Predicate<String> one,Predicate<String> two,String s){
        return one.and(two).test(s);
    }

    //or
    public boolean orFun(Predicate<String> one,Predicate<String> two,String s){
        return one.or(two).test(s);
    }

    //negate
    public boolean negateFun(Predicate<String> pre, String s){
        return pre.negate().test(s);
    }

}

附:一些常用的其它接口

注:参考引用文献:

https://blog.csdn.net/u010572176/article/details/104393869

Java 函数式编程案例(函数式接口作为参数和返回值)
夏沐的博客
05-08 3202
1. 原日志代码 public class Demo01Logger { //只有日志等级为1时,才会打印日志信息 public static void showLog(int level, String massage){ if(level==1){ System.out.println(massage); } ...
java8新特性--函数式接口+lambda表达式+方法引用
wheredata的博客
10-28 296
java8新特性--函数式接口+lambda表达式+方法引用什么是函数式接口lambda表达式初体验再回到函数式接口lambda表达式的几种形式方法引用情况1:对象调用非静态方法 对象::方法名情况2:类调用静态方法 类::静态方法情况3:类调用非静态方法 类::非静态方法 (有难度)情况4:构造器引用与数组引用 类::new 数组::new java8出来这么久了,对它还是不熟悉,这不,最近开始学习了,写点学习笔记 什么是函数式接口 只包含一个抽象方法的接口,称为函数式接口 我们可以在一个接口
Java 16 新特性(JKD16)
最新发布
qq_40698086的博客
08-06 731
Java 16 是 Java 15 的更新版本,引入了许多新的特性和改进。
Lamda表达式(java多线程)
weixin_45637920的博客
10-26 237
Lambda表达式 希腊字母排序第十一为的字母 避免匿名内部类定义过多 实质属于函数式编程的概念 为什么要用呢? 避免匿名内部类定义过多 代码简洁 去掉了没有意义的代码,只留下核心的逻辑 理解Functional Interface(函数式接口)式学习java8 lambda表达式的关键所在。 函数式接口定义 任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。如下例子: public interface MyInterface{ public abstract void myFu
JavaSE-23.1.1【函数式接口、函数式接口作为方法的参数和返回值】
yubaby
06-16 217
1 package day14.lesson1; 2 3 /* 4 1 函数式接口 5 6 1.1 函数式接口概述 7 8 概念 9 有且仅有一个抽象方法的接口 10 java中的函数式编程体现就是Lambda表达式,所以函数式接口就是可以适用于Lambda使用的接口 11 只有确保接口中有且仅有一个抽象方法,ja...
JDK8--16新特性
MJQ_YQHXLSCS
07-02 410
1.1 JDK 版本变更说明 每6个月发布一个小版本,每3年发布一个长期支持的版本。 版本 发布日期 延长日期 长期支持 JDK 7 2011年9月 2022年9月 LTS JDK 8 2014年3月 2030年12月 LTS JDK 9 2017年9月 JDK 10 2018年3月 JDK 11 2018年9月 2026年9月 LTS JDK 12 2019年3月 JDK 13 2019年9月 JDK 14 2020年3月 JDK 15
JDK8核心新特性
06-20
JDK8已经发行有几年了,在该版本中推出了不少新特性,其中比较有代表的新特性有:Lambda表达式,Stream流,方法引用。在网上也有很多关于这些新特性的介绍,但个人觉得网上的很多文字对新特性的介绍是不够全面的,...
jdk8 新特性stream 和lambda表达式Demo
01-24
Java JDK 8是Java开发历史上一个重要的里程碑,它引入了许多创新特性和改进,极大地提升了开发效率和代码的可读性。其中,Stream API和...通过深入理解并实践这些示例,你将能够更好地运用这些新特性到实际项目中。
JDK8新特性(pdf版)
06-26
JDK8新特性课程内容包括了解Java发展史、Lambda表达式、接口的增强、函数式接口、方法引用、Stream API、Optional、新时间日期API等。 一、Java发展历史 Java的发展历史可以追溯到1991年,Sun公司成立了一个称为...
19年全新JDK8~JDK13全套新特性视频教程java教程lambda函数式编程
06-16
3)JDK8新特性综合实战之电商订单数据处理等知识点; 4)玩转JDK9/10/11/12/13 涵盖新特性 Jshell实战、接口私有方法、增强版try-with-resource、增强版 Stream API 5)局部类型推断Var实战、标准版HttpClient玩转GET/...
Java8新特性Lambda表达式的一些复杂用法总结
08-29
lambda表达式是JAVA8中提供的一种新的特性,它支持Java也能进行简单的“函数式编程”。 下面这篇文章主要给大家介绍了关于Java8新特性Lambda表达式的一些复杂用法的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
Java 8 之 Lambda表达式
Fish Where The Fish Are
04-01 337
Java 8历时2年8个月,这次升级是继Java 5之后对Java一次脱胎换骨的变化。在Java 8的新特性中很多都是围绕Lambda表达式而提供的,Lambda表达式也将使热衷于OOP(Object-Oriented Programming)的Java程序员体会到FP(Functional Programming)的强大。Java 8的Lambda表达多少借鉴了Scala的Lambda(Scal...
Unity3d C# 脚本单体模式的实现
leoleocs的专栏
05-08 1695
单体模式(Singleton)是一种最基础的设计模式,在几乎所有的程序设计和实现的时候都会用到,单体的主要作用为: 确保只有一个实例(对象)被创建,一般来讲的范围就是在一个进程当中。 需要提供全局的范围点来访问实例 在实现的时候特别要主要线程安全性,在C++的实现中特别需要注意,C#来说静态变量的初始化都是线程安全性的,一般问题不大。下面就介绍一个Unity3d 中的单体脚本的实现方法。Unity3
Java 8 之 流(Stream)
Fish Where The Fish Are
03-24 158
与java.io包里的InputStream和OutputStream是完全不同的概念,它是以数据流的形式来处理数据集合。 [list][*]不是collection,有点儿像iterator但没有存储 [*]仅代表数据流,并没有数据结构 [*]只能被遍历一次(返回另外一个Stream)。采用Lazy方式,如果有多个中间操作和最终操作,在调用最终操作的时候才会同时处理所有中间操作。 [...
jdk16新特性_jdk8到jdk16新特性
计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。
08-04 254
JDK1.7的新特性:首先是模块化特性:现在的Java7也是采用了模块的划分方式来提速,一些不是必须的模块并没有下载和安装,因此在使用全新的Java7的虚拟机的时候。。 jdk1.7比jdk1.6添加了一些新的特性.1、JDK1.7的新特性:现在的Java7也是采用了模块的划分方式来提速,一些不是必须的模块并没有下载和安...
JDK 1.6与JDK 1.8的区别
MrLiuの甜蜜小屋
08-18 1497
函数式接口,通过@ FunctionalInterface注解,可以使用函数作为参数。接口引入default关键字,使用此关键字可以定义具体的实现,接口可以有静态方法。jdk1.6只支持同类型的int, byte, short, char四个类型。DateAPI进行了更新,使日期处理变得更好用,包在java.time包。jdk1.6是先初始化static后执行main方法。jdk1.8中的switch支持string变量。jdk1.6与jdk1.8都是数组+链表。引入lambda表达式,可进行函数式编程。
JDK16JDK8共存与切换
orangerfun的博客
05-21 3885
1. 安装 将jdk8和jdk16分别安装在同一目录下的两个不同的文件夹中 2. 设置环境变量 此电脑右击属性 高级系统设置 高级 环境变量 在系统变量中添加JAVA_HOME变量,变量路径为刚才jdk安装的路径 在系统变量Path中增加%JAVA_HOME\bin% 3. 不同jdk版本切换 当需要使用jdk8版本时,将JAVA_HOME路径设置为D:\ProgramFiles\eclipse\JDK16 并在命令行中使用java -version指令查看当前jdk版本 当需要使用jdk8
JDK8到JDK12各个版本的重要特性整理
Lee_0202的博客
04-26 1771
JDK8新特性 1、Lambda表达式 2、函数式编程 3、接口可以添加默认方法和静态方法,也就是定义不需要实现类实现的方法 4、方法引用 5、重复注解,同一个注解可以使用多次 6、引入Optional来避免空指针 7、引入Streams相关的API 8、引入新的Date/Time相关的API 9、新增jdeps命令行,来分析类、目录、jar包的类依赖层级关系 10、...
Lambda表达式与JDK8新特性详解
本资源主要讨论了JDK 8的新特性,特别是Lambda表达式、函数式编程思想以及Stream流的相关内容。首先,介绍了OpenJDK和Oracle JDK的关系,指出OpenJDK是Sun公司在2006年Java平台开源后的产物,由Java社区支持,而...
写文章

热门文章

  • SSM整合,非常详细的SSM整合 115808
  • sqlserver各版本的介绍对比 106429
  • Centos 7 安装详细图解说明 95603
  • docker镜像存储在哪里 92043
  • ActiveMQ和RabbitMQ的区别 77847

分类专栏

  • springcloud 13篇
  • 项目架构
  • 项目实战案例
  • springmvc 8篇
  • maven 4篇
  • springboot 8篇
  • jar包 2篇
  • jdk 9篇
  • hibernate 1篇
  • jquery 2篇
  • java基础 50篇
  • ssh整合 2篇
  • spring 9篇
  • ssm 9篇
  • git 6篇
  • 测试
  • java异常 12篇
  • mysql 7篇
  • eclipse 1篇
  • 状态码
  • app接口 1篇
  • restful 1篇
  • springboot-ssm 1篇
  • swagger介绍 1篇
  • swagger 2篇
  • mapper 1篇
  • 随本小记 15篇
  • 开发测试 1篇
  • Spring Security 3篇
  • error
  • spring整合集成 3篇
  • redis 22篇
  • idea工具 1篇
  • 数据库 5篇
  • 数据库工具 1篇
  • MQ消息队列 2篇
  • zookeeper 4篇
  • dubbo 8篇
  • 多线程 4篇
  • session 3篇
  • java设计模式 2篇
  • jdbc 6篇
  • mybatis 3篇
  • 远程调用技术 2篇
  • ssm整合webservice之cxf
  • 消息队列 3篇
  • ssm整合rabitmq 2篇
  • ActiveMQ 3篇
  • Shiro 1篇
  • RabbitMQ 1篇
  • tomcat7 1篇
  • 面试相关 10篇
  • 持久层框架 1篇
  • Spring Data 1篇
  • Activiti工作流 4篇
  • Navicat
  • eclipse快捷键 1篇
  • tomcat服务器
  • struts2 4篇
  • 后端技术总结 1篇
  • filter过滤器
  • mybatis反向生成 1篇
  • nodeJs 1篇
  • jeesuite分布式 1篇
  • mycat安装和测试 1篇
  • Jmeter测试端 1篇
  • 数据库建模工具 1篇
  • 通讯 1篇
  • spring事务 2篇
  • websocket 1篇
  • 远程调用技术这webservice与socket
  • 培训
  • webservice 7篇
  • 高并发 2篇
  • docker 11篇
  • linux 13篇
  • 人生感悟 6篇
  • java模板引擎
  • 项目部署 3篇
  • hadoop大数据基础 1篇
  • cookie session token 1篇
  • nginx 1篇
  • sql 1篇
  • http协议 1篇
  • map集合
  • mq 1篇
  • spring事务管理器 1篇
  • spring事务配置
  • Postman测试插件 2篇
  • oracle 8篇
  • PLSQL 1篇
  • shell脚本 1篇
  • mysql与oracle区别 1篇
  • svn 2篇
  • log日志 1篇
  • 项目异常统计 1篇
  • 异常 2篇
  • 异常处理 5篇
  • sql优化 2篇
  • uml建模工具 1篇
  • oracle练习 4篇
  • oracle分页 1篇
  • PowerDesigner 1篇
  • SQL Server  1篇
  • sql server 1篇
  • sqlyog 1篇
  • Navicat错误集合 1篇
  • jsp 3篇
  • el表达 1篇
  • jstl标签库 1篇
  • BeanUtils 1篇
  • frame 1篇
  • javascript 3篇
  • html 1篇
  • 事务与连接池 1篇
  • dbutils 1篇
  • 上传下载 1篇
  • 国际化 1篇
  • ajax 1篇
  • easyui 5篇
  • java工具 1篇
  • 前端html 1篇
  • Quartz 1篇
  • ssm登录注册 1篇
  • 激励自我 1篇
  • sqlserver
  • oracle11g安装
  • 虚拟机 1篇
  • xshell 2篇
  • 微服务 1篇
  • 分布式架构之dubbo 1篇
  • idea 3篇
  • idea-mybatisgenerator 1篇
  • spring整合系列 1篇
  • spring特性 1篇
  • 前端技术之Bootstrap 1篇
  • ExtJS 1篇
  • 前端Flex 1篇
  • 前端技术之AngularJS 2篇
  • ssm整合系统 1篇
  • mybatis自动生成工具 1篇
  • 前端技术之vue 3篇
  • 个人博客搭建
  • springboot系列
  • ide工具 1篇
  • 端口号 1篇
  • redis集群
  • solr 4篇
  • centos 1篇
  • centos7 2篇
  • 设计模式 1篇
  • 面试题目大全
  • socket 2篇
  • Spring Batch 1篇
  • springbean 1篇
  • servlet 1篇
  • jvm 1篇
  • weblogic 3篇
  • Spring Batch  1篇
  • springbatch批处理 1篇
  • jvm调优总结 1篇
  • java线程 3篇
  • java导出excel 1篇
  • myeclipse 1篇
  • 项目实战参考 2篇
  • ssm整合oracle
  • js专题 5篇
  • 博客搬家 1篇
  • pdf 4篇
  • Gradle 1篇
  • java算法 1篇
  • Beyond Compare 1篇
  • sql场景
  • springcloud专题
  • 项目架构
  • 项目实战案例 2篇
  • ssh 1篇
  • base加密解密 1篇
  • Md5加密解密 1篇

最新评论

  • sqlserver各版本的介绍对比

    Jeff不能吃饭: 你的博客很有价值,分享了自己的见解,对我很有启发。

  • 现在学java的都是傻子

    毒液Venom: 要饭也不好干了,现在大家都没钱

  • 现在学java的都是傻子

    2301_81997377: 所以现在哪个方向比较好,本人普通二本

  • 现在学java的都是傻子

    secret125: 不知道,反正国外已经没啥人用java了

  • 现在学java的都是傻子

    EMIINGDY: 全别学了,全去要饭吧,每行都不好干,还是要饭最好干,一点不卷,环境好,争取40w,五年1w,200年

最新文章

  • 类变量、成员变量、局部变量介绍说明
  • JDK1.8之Stream综合练习二
  • JDK1.8之Stream练习一
2021年8篇
2020年1篇
2019年86篇
2018年412篇
2017年1篇

目录

目录

分类专栏

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家呼和浩特玻璃钢雕塑厂家昆明玻璃钢游乐场门头雕塑郑州玻璃钢卡通雕塑报价定制玻璃钢雕塑高性价比的选择户外广场玻璃钢雕塑厂睢阳玻璃钢雕塑定制玻璃钢斑马雕塑价格玻璃钢可爱猪雕塑上饶欧式玻璃钢雕塑制作湖南佛像玻璃钢雕塑多少钱辽宁泡沫玻璃钢雕塑玻璃钢西瓜雕塑行情专业玻璃钢仿铜雕塑公司广东玻璃钢恐龙雕塑湛江乳白色水印玻璃钢花盆虎门玻璃钢造型雕塑山西玻璃钢浮雕抽象景观雕塑公司上海卡通玻璃钢雕塑公司珠海玻璃钢动物雕塑湖南玻璃钢雕塑厂家供应玻璃钢学校雕塑厂商场美陈市场调查玻璃钢斑马雕塑效果图佛山街道宣传玻璃钢雕塑雕塑玻璃钢个体户怎么拉订单中庭美陈商场装修玻璃钢仿真狗雕塑山东济宁玻璃钢雕塑麻涌玻璃钢造型雕塑河北定制玻璃钢迎宾人物雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化