自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

GY的的专栏

专注AI大数据JAVA小程序技术栈的开发创作与分享

  • 博客(61)
  • 资源 (165)
  • 收藏
  • 关注

原创 Spark技术内幕:Shuffle的性能调优

通过上面的架构和源码实现的分析,不难得出Shuffle是Spark Core比较复杂的模块的结论。它也是非常影响性能的操作之一。因此,在这里整理了会影响Shuffle性能的各项配置。尽管大部分的配置项在前文已经解释过它的含义,由于这些参数的确是非常重要,这里算是做一个详细的总结。1.1.1  spark.shuffle.manager前文也多次提到过,Spark1.2.0官方支持两种方式的

2015-03-19 10:01:19 11657 1

原创 Java NIO和IO的主要区别

当学习了Java NIO和IO的API后,一个问题马上涌入脑海:我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异、它们的使用场景,以及它们如何影响您的代码设计。下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分的差异。IO                NIO面向流            面向缓冲阻塞IO

2015-03-31 10:55:01 540

原创 Java NIO原理图文分析及代码实现

前言: 最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。可以参考:http://baike.baidu.com/view/32726.htm )机制时,发现hadoop的RPC机制的实现主要用到了两个技术:动态代理(动态代理可以参考博客:http:/

2015-03-31 10:47:27 567

原创 MySQL引擎

MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的。要添加一个新的引擎,就必须重新编译MYSQL。在缺省情况下,MYSQL支持三个引擎:ISAM、MYISAM和HEAP。另外两种类型INNODB和BERKLEY(BDB),也常常可以使用。如果技术高超,还可以使用MySQL++ API自己做一个引擎。下面介绍几种数据库引擎:    ISAM:ISAM是一个定义明确且历经时间考验的数据

2015-03-23 09:32:27 490

原创 数据库索引的实现原理

说白了,索引问题就是一个查找问题。。。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。为表设置索引要付出代价的:一是增加了数据库的存储

2015-03-23 09:24:45 679

原创 HashMap的工作原理

1 数据结构:hash_map原理 这是一节让你深入理解hash_map的介绍,如果你只是想囫囵吞枣,不想理解其原理,你倒是可以略过这一节,但我还是建议你看看,多了解一些没有坏处。 hash_map基于hash table(哈希表)。哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用

2015-03-23 09:17:09 876

原创 JVM工作原理和特点

作为一种阅读的方式了解下jvm的工作原理 JVM工作原理和特点主要是指操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境. 1.创建JVM装载环境和配置 2.装载JVM.dll 3.初始化JVM.dll并挂界到JNIENV(JNI调用接口)实例 4.调用JNIEnv实例装载并处理class类。 在我们运行和调试Java程序的时候,经

2015-03-23 09:16:23 548

原创 HashMap源码分析(基于JDK1.6)

在Java集合类中最常用的除了ArrayList外,就是HashMap了。本文尽自己所能,尽量详细的解释HashMap的源码。一山还有一山高,有不足之处请之处,定感谢指定并及时修正。    在看HashMap源码之前先复习一下数据结构。    Java最基本的数据结构有数组和链表。数组的特点是空间连续(大小固定)、寻址迅速,但是插入和删除时需要移动元素,所以查询快,增加删除慢。链表恰好相反

2015-03-23 09:16:16 714

原创 Spark技术内幕:Storage 模块整体架构

Storage模块负责了Spark计算过程中所有的存储,包括基于Disk的和基于Memory的。用户在实际编程中,面对的是RDD,可以将RDD的数据通过调用org.apache.spark.rdd.RDD#cache将数据持久化;持久化的动作都是由Storage模块完成的。包括Shuffle过程中的数据,也都是由Storage模块管理的。可以说,RDD实现了用户的逻辑,而Storage则管理了用户

2015-03-19 10:03:51 1582

原创 Spark技术内幕:Shuffle Read的整体流程

回忆一下,每个Stage的上边界,要么需要从外部存储读取数据,要么需要读取上一个Stage的输出;而下边界,要么是需要写入本地文件系统(需要Shuffle),以供childStage读取,要么是最后一个Stage,需要输出结果。这里的Stage,在运行时的时候就是可以以pipeline的方式运行的一组Task,除了最后一个Stage对应的是ResultTask,其余的Stage对应的都是Shuff

2015-03-19 10:00:30 1666 2

原创 Spark技术内幕:Shuffle Map Task运算结果的处理

Shuffle Map Task运算结果的处理这个结果的处理,分为两部分,一个是在Executor端是如何直接处理Task的结果的;还有就是Driver端,如果在接到Task运行结束的消息时,如何对Shuffle Write的结果进行处理,从而在调度下游的Task时,下游的Task可以得到其需要的数据。Executor端的处理在解析BasicShuffle Writer时,我们知道Sh

2015-03-19 09:58:26 2343

原创 Spark技术内幕:Shuffle Pluggable框架详解,你怎么开发自己的Shuffle Service?

首先介绍一下需要实现的接口。框架的类图如图所示(今天CSDN抽风,竟然上传不了图片。如果需要实现新的Shuffle机制,那么需要实现这些接口。1.1.1  org.apache.spark.shuffle.ShuffleManagerDriver和每个Executor都会持有一个ShuffleManager,这个ShuffleManager可以通过配置项spark.shuffle.

2015-03-19 09:56:55 912

原创 Spark技术内幕:Sort Based Shuffle实现解析

在Spark 1.2.0中,Spark Core的一个重要的升级就是将默认的Hash Based Shuffle换成了Sort Based Shuffle,即spark.shuffle.manager 从hash换成了sort,对应的实现类分别是org.apache.spark.shuffle.hash.HashShuffleManager和org.apache.spark.shuffle.sor

2015-03-19 09:55:31 664

原创 What’s new in Spark 1.2.0

1.2.0 was released on 12/18, 2014在2014年5月30日发布了Spark 1.0 和9月11日发布了Spark1.1.后,Spark 1.2 终于在12月18日发布。作为1.X时代的第三个release,它有什么重要更新呢?1.    Spark Core:性能和易用性的改进对于超大规模的Shuffle,Spark Core在性能和稳定性方面做了两个重要

2015-03-19 09:54:43 467

原创 Spark技术内幕:Stage划分及提交源码分析

当触发一个RDD的action后,以count为例,调用关系如下:org.apache.spark.rdd.RDD#countorg.apache.spark.SparkContext#runJoborg.apache.spark.scheduler.DAGScheduler#runJoborg.apache.spark.scheduler.DAGScheduler#submitJobor

2015-03-19 09:53:34 750

原创 Spark技术内幕: Task向Executor提交的源码解析

在上文《Spark技术内幕:Stage划分及提交源码分析》中,我们分析了Stage的生成和提交。但是Stage的提交,只是DAGScheduler完成了对DAG的划分,生成了一个计算拓扑,即需要按照顺序计算的Stage,Stage中包含了可以以partition为单位并行计算的Task。我们并没有分析Stage中得Task是如何生成并且最终提交到Executor中去的。这就是本文的主题。从

2015-03-19 09:53:24 1160

原创 Spark技术内幕:究竟什么是RDD

RDD是Spark最基本,也是最根本的数据抽象。http://www.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf 是关于RDD的论文。如果觉得英文阅读太费时间,可以看这篇译文:http://shiyanjun.cn/archives/744.html 本文也是基于这篇论文和源码,分析RDD的实现。第一个问题,RDD是什么?Resili

2015-03-19 09:50:49 732

原创 Spark 1.0 开发环境构建:maven/sbt/idea

因为我原来对maven和sbt都不熟悉,因此使用两种方法都编译了一下。下面记录一下编译时候遇到的问题。然后介绍一下如果使用IntelliJ IDEA 13.1构建开发环境。首先准备java环境和scala环境:1. jdk 1.72. scala 2.11.11. maven首先安装maven,我安装的是3.2.3, 可以直接下载binary。解压即可用。需要设置一下环

2015-03-19 09:50:42 676

原创 从Storm和Spark 学习流式实时分布式计算的设计

0. 背景最近我在做流式实时分布式计算系统的架构设计,而正好又要参加CSDN博文大赛的决赛。本来想就写Spark源码分析的文章吧。但是又想毕竟是决赛,要拿出一些自己的干货出来,仅仅是源码分析貌似分量不够。因此,我将最近一直在做的系统架构的思路整理出来,形成此文。为什么要参考Storm和Spark,因为没有参照效果可能不会太好,尤其是对于Storm和Spark由了解的同学来说,可能通过对比,更能

2015-03-19 09:47:31 1862

原创 Spark技术内幕:Master基于ZooKeeper的High Availability(HA)源码实现

如果Spark的部署方式选择Standalone,一个采用Master/Slaves的典型架构,那么Master是有SPOF(单点故障,Single Point of Failure)。Spark可以选用ZooKeeper来实现HA。     ZooKeeper提供了一个Leader Election机制,利用这个机制可以保证虽然集群存在多个Master但是只有一个是Active的,其他的都是

2015-03-19 09:38:37 4151

原创 Spark技术内幕:Client,Master和Worker 通信源码解析

Spark的Cluster Manager可以有几种部署模式:StandloneMesosYARNEC2Local在向集群提交计算任务后,系统的运算模型就是Driver Program定义的SparkContext向APP Master提交,有APP Master进行计算资源的调度并最终完成计算。具体阐述可以阅读《Spark:大数据的电花火石!》。那么Standal

2015-03-19 09:26:49 1053

原创 Spark:大数据的电花火石!

什么是Spark?可能你很多年前就使用过Spark,反正当年我四六级单词都是用的星火系列,没错,星火系列的洋名就是Spark。当然这里说的Spark指的是Apache Spark,Apache Spark™is a fast and general engine for large-scale data processing: 一种快速通用可扩展的数据分析引擎。如果想要搞清楚Spark是什么,

2015-03-19 09:26:46 992

原创 RabbitMQ消息队列的小伙伴: ProtoBuf(Google Protocol Buffer)

什么是ProtoBuf?     一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。     它可以作为RabbitMQ的Message的数据格式进行传输,由于是结构化的数据,这样

2015-03-19 09:10:56 997

原创 RabbitMQ消息队列(七):适用于云计算集群的远程调用(RPC)

在云计算环境中,很多时候需要用它其他机器的计算资源,我们有可能会在接收到Message进行处理时,会把一部分计算任务分配到其他节点来完成。那么,RabbitMQ如何使用RPC呢?在本篇文章中,我们将会通过其它节点求来斐波纳契完成示例。1. 客户端接口 Client interface        为了展示一个RPC服务是如何使用的,我们将创建一段很简单的客户端class。 它将会向外

2015-03-19 09:07:41 1015

原创 RabbitMQ消息队列(六):使用主题进行消息分发

在上篇文章RabbitMQ消息队列(五):Routing 消息路由 中,我们实现了一个简单的日志系统。Consumer可以监听不同severity的log。但是,这也是它之所以叫做简单日志系统的原因,因为是仅仅能够通过severity设定。不支持更多的标准。        比如syslog unix的日志工具,它可以通过severity (info/warn/crit...) 和模块(auth

2015-03-19 09:04:32 573

原创 RabbitMQ消息队列(五):Routing 消息路由

上篇文章中,我们构建了一个简单的日志系统。接下来,我们将丰富它:能够使用不同的severity来监听不同等级的log。比如我们希望只有error的log才保存到磁盘上。1. Bindings绑定    上篇文章中我们是这么做的绑定:[python] view plaincopychannel.queue_bind(exchange=exchange_name

2015-03-19 09:03:41 670

原创 RabbitMQ消息队列(四):分发到多Consumer(Publish/Subscribe)

上篇文章中,我们把每个Message都是deliver到某个Consumer。在这篇文章中,我们将会将同一个Message deliver到多个Consumer中。这个模式也被成为 "publish / subscribe"。    这篇文章中,我们将创建一个日志系统,它包含两个部分:第一个部分是发出log(Producer),第二个部分接收到并打印(Consumer)。 我们将构建两个Con

2015-03-19 09:02:25 714

原创 RabbitMQ消息队列(三):任务分发机制

在上篇文章中,我们解决了从发送端(Producer)向接收端(Consumer)发送“Hello World”的问题。在实际的应用场景中,这是远远不够的。从本篇文章开始,我们将结合更加实际的应用场景来讲解更多的高级用法。   当有Consumer需要大量的运算时,RabbitMQ Server需要一定的分发机制来balance每个Consumer的load。试想一下,对于web applica

2015-03-19 09:00:14 705

原创 RabbitMQ消息队列(一): Detailed Introduction 详细介绍

1. 历史    RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现。AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多公开标准(如 COBAR的 IIOP ,或者是 SOAP 等),但是在异步消息处理中却不是这样,只有大企业有一些商业实现(如微软的 MSMQ ,IBM 的 Websphere MQ

2015-03-19 08:58:12 620

原创 RabbitMQ消息队列(二):”Hello, World“

本文将使用Python(pika 0.9.8)实现从Producer到Consumer传递数据”Hello, World“。     首先复习一下上篇所学:RabbitMQ实现了AMQP定义的消息队列。它实现的功能”非常简单“:从Producer接收数据然后传递到Consumer。它能保证多并发,数据安全传递,可扩展。     和任何的Hello world一样,它们都不复杂。我们将会

2015-03-19 08:58:01 869

原创 PostgreSQL与MySQL比较

特性MySQLPostgreSQL实例通过执行 MySQL 命令(mysqld)启动实例。一个实例可以管理一个或多个数据库。一台服务器可以运行多个 mysqld 实例。一个实例管理器可以监视 mysqld 的各个实例。通过执行 Postmaster 进程(pg_ctl)启动实例。一个实例可以管理一个或多个数据库,这些数据库组成一个集群。集群是磁盘上的一个区域,这个区

2015-03-17 10:30:24 3014

原创 网页如何防止刷新重复提交与如何防止后退的解决方法

提交后禁用提交按钮(大部分人都是这样做的)如果客户提交后,按F5刷新怎么办?使用Session在提交的页面也就是数据库处理之前:if session("ok")=true then   response.write "错误,正在提交"   response.endend if数据处理完后,修改session("ok")=false。数据处理成功马上Redirec

2015-03-16 17:20:38 3016

原创 字符常见的几种编码方式

无论在是在编辑文本文件的时候,还是在制作网页的时候,总会遇到文本编码方式的问题。如果处理不当,就会出现乱码的问题。因此,有必要对文本的编码方式做一个详尽的了解。常见的一些字符编码方式无非有:Unicode、ASCII、GBK、GB2312、UTF-8。下面先对常见的这一些字符编码方式作下说明:1.ASCII码这是美国在19世纪60年代的时候为了建立英文字符和二进制的关系时制定的编码规范

2015-03-16 17:07:58 860

原创 数据库设计原则

1. 原始单据与实体之间的关系   可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。 在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体。 这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。   〖例1〗:一份员工履历资料,在人力资源信息系统中,

2015-03-16 17:03:13 1375

原创 线程安全的概念,实现线程安全的几种方法

并发性只有当要解决的问题需要一定程度的并发性时,程序员才会从多线程应用程序中受益。例如,如果打印队列应用程序仅支持一台打印机和一台客户机,则不应该将它编写为多线程的。一般说来,包含并发性的编码问题通常都包含一些可以并发执行的操作,同时也包含一些不可并发执行的操作。例如,为多个客户机和一个打印机提供服务的打印队列可以支持对打印的并发请求,但向打印机的输出必须是串行形式的。多线程实现还可以

2015-03-16 17:00:35 2197

原创 hash算法的实现原理,hashcode的实现原理

1. 引言       哈希表(Hash Table)的应用近两年才在NOI中出现,作为一种高效的数据结构,它正在竞赛中发挥着越来越重要的作用。哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空间换时间的做法是值得的。另外,编码比较容易也是它的特点之一。       哈希表又叫做散

2015-03-16 16:51:52 1667

原创 使用静态工厂方法的好处和坏处

前言: 清晰性和简介性是最为重要的      一个模块的使用者永远也不应该被模块的行为所迷惑(那样就不清晰了),模块要尽可能的小,但又不能太小【术语模块(module):是指任何可重用的软件组件,从单个方法到包含多个包的复杂系统都可以是一个模块】。代码应该被重用,而不是拷贝,模块之间的相依性应该尽可能降低到最小,错误应该尽早被检测出来,理想的情况下是在编译的时刻。NO.1 考虑用静态工

2015-03-16 16:46:40 6552

原创 常用的排序算法的时间复杂度和空间复杂度

常用的排序算法的时间复杂度和空间复杂度排序法 最差时间分析平均时间复杂度 稳定度 空间复杂度 冒泡排序O(n2)O(n2)稳定 O(1) 快速排序O(n2)O(n*log2n)不稳定 O(log2n)~O(n)选择排序O(n2)O(n2)稳定

2015-03-16 16:36:35 526

原创 ajax是否能跨域请求,解决的办法

由于安全方面的考虑,Javascript被限制了跨域访问的能力,但是有时候我们希望能够做一些合理的跨域访问的事情,那么怎么办呢?这里分两类情况:一、基于同一父域的子域之间页面的访问;参见如下3个domain域:taobao.com、jipiao.taobao.com、promotion.taobao.com;它们有相同的父域taobao.com。二、基于不同父域页面之间的访问;参见如下

2015-03-16 16:24:49 497

原创 Spring MVC 3.0 深入及对注解的详细讲解

核心原理1.       用户发送请求给服务器。url:user.do2.       服务器收到请求。发现Dispatchservlet可以处理。于是调用DispatchServlet。3.      DispatchServlet内部,通过HandleMapping检查这个url有没有对应的Controller。如果有,则调用Controller。4、    Control开始

2015-03-16 11:19:05 638

微信小程序完整:对wx接口的promise封装

微信小程序完整:对wx接口的promise封装

2023-06-01

微信小程序源码小游戏贪吃蛇

微信小程序源码小游戏贪吃蛇

2023-06-01

微信小程序组件:canvas股票分时图

微信小程序组件:canvas股票分时图

2023-06-01

微信小程序:外卖小程序

微信小程序:外卖小程序

2023-06-01

微信下程序:电影麻辣烫

微信下程序:电影麻辣烫

2023-06-01

微信小程序:新华字典:适用1028版本

微信小程序:新华字典:适用1028版本

2023-06-01

微信小程序精品:仿某易云音乐:歌单,FM,播放,评论

微信小程序精品:仿某易云音乐:歌单,FM,播放,评论

2023-06-01

微信小程序代码:欢迎来到召唤师峡谷!

微信小程序代码:欢迎来到召唤师峡谷!

2023-06-01

微信小程序代码:电影时光

微信小程序代码:电影时光

2023-06-01

微信小程序:福利:美女荟萃;(适用1123版本)

微信小程序:福利:美女荟萃;(适用1123版本)

2023-06-01

微信小程序代码:登录及动画效果

微信小程序代码:登录及动画效果

2023-06-01

微信小程序:小商店;增减商品数量,图片排布

微信小程序:小商店;增减商品数量,图片排布

2023-06-01

微信小程序推荐:B站首页界面设计:附详细教程

微信小程序推荐:B站首页界面设计:附详细教程

2023-06-01

微信小程序精品:有格调商城(适用1221)

微信小程序精品:有格调商城(适用1221)

2023-06-01

微信小程序精品:医药网:tab变换,使用Labrador

微信小程序精品:医药网:tab变换,使用Labrador

2023-06-01

微信小程序:外卖菜单 ,完整版

微信小程序:外卖菜单 ,完整版

2023-06-01

微信小程序代码:花店 完整版

微信小程序代码:花店 完整版

2023-06-01

微信小程序精品:大转盘,仿某猫超市抽奖

微信小程序精品:大转盘,仿某猫超市抽奖

2023-06-01

微信小程序源码公众号热门文章信息流

微信小程序源码公众号热门文章信息流

2023-06-01

微信小程序代码:人脸识别

微信小程序代码:人脸识别

2023-06-01

微信小程序商城分销系统

微信小程序商城分销系统

2023-06-01

微信小程序完整精品移动小商城:基于node,包含前后台

微信小程序完整精品移动小商城:基于node,包含前后台

2023-06-01

微信小程序代码:积分商城

微信小程序代码:积分商城

2023-06-01

微信小程序代码:轮播图变换

微信小程序代码:轮播图变换

2023-06-01

微信小程序精品组件:登录注册效果;适用1122版本

微信小程序精品组件:登录注册效果;适用1122版本

2023-06-01

mysql彻底理解删除重复记录sql脚本,只保留一条记录

mysql彻底理解删除重复记录sql脚本,只保留一条记录

2023-07-25

mysql存储过程、函数,业务编写、启动、停止命令,linux环境下,新增用户,授权,binlog传输数据

mysql存储过程、函数,业务编写、启动、停止命令,linux环境下,新增用户,授权,binlog传输数据

2023-07-25

微服务工程自动编译,部署的shell脚本,自行修改工程目录和服务名称,运行即可

微服务工程自动编译,部署的shell脚本 cd /data/project/ ./build_server.sh ./deploy_server.sh server-auth

2023-07-25

基于Prometheus 和 Grafana 实现springboot应用监控和服务器监控

基于Prometheus 和 Grafana 实现springboot应用监控和服务器监控

2023-07-07

node-exporter-1.3.1.linux-amd64.tar.gz ,基于Prometheus 和 Grafana 实

node_exporter-1.3.1.linux-amd64.tar.gz ,基于Prometheus 和 Grafana 实现springboot应用监控和服务器监控,官网的几乎是下载不下来,自从github被微软收购后,我感到了深深的担忧,很多东西都不能下载了。

2023-07-07

微信小程序:时尚购:ajax获取数据,适用1122版本

微信小程序:时尚购:ajax获取数据,适用1122版本

2023-06-01

微信小程序:相册:上传本地图片生成列表

微信小程序:相册:上传本地图片生成列表

2023-06-01

微信小程序:音乐播放器:带列表循环模式设置

微信小程序:音乐播放器:带列表循环模式设置

2023-06-01

微信小程序代码:简易抽奖

微信小程序代码:简易抽奖

2023-06-01

微信小程序代码:在线聊天功能基于MINA

微信小程序代码:在线聊天功能基于MINA

2023-06-01

微信小程序精品小游戏:麻将骰子

微信小程序精品小游戏:麻将骰子

2023-06-01

微信小程序推荐:美容商城;列表,预约

微信小程序推荐:美容商城;列表,预约

2023-06-01

微信小程序推荐:天气预报;百度地图,BootStrap

微信小程序推荐:天气预报;百度地图,BootStrap

2023-06-01

微信小程序推荐:易打卡;表单设计(适用1221)

微信小程序推荐:易打卡;表单设计(适用1221)

2023-06-01

微信小程序优质荐:AI机器人兔兔:多轮对话

微信小程序优质荐:AI机器人兔兔:多轮对话

2023-06-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除