自定义博客皮肤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小程序技术栈的开发创作与分享

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

原创 一起代码,两分钟,实现 java restful webservice

新接手个项目中用到了restful webservice, 开始研究JAX-RX,JAX-WS,CXF,jaxb等概念,也从网上找一些简单的例子,其实java实现rest还是非常简单的(要不怎么叫rest呢^_^),但是发现找到的例子都是eclipse实现,代码虽然没有几行,但是都是手工敲,尤其是各种annotations,和web.xml,这些东东对于我这样一个懒人来说实在是不愿意手工输入,手工

2015-11-17 18:38:57 2368 1

原创 RESTful WebService入门

RESTful WebService是比基于SOAP消息的WebService简单的多的一种轻量级Web服务,RESTful WebService是没有状态的,发布和调用都非常的轻松容易。 下面写一个最简单的Hello World例子,以便对RESTful WebService有个感性认识。因为非常专业理论化的描述RESTful WebService是一件理解起来很痛苦的事情。看看例子就知

2015-11-17 16:54:28 930

原创 SOAP Webservice和RESTful Webservice

REST是一种架构风格,其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的复杂性,提高系统的可伸缩性。REST提出设计概念和准则为:1.网络上的所有事物都可以被抽象为资源(resource)2.每一个资源都有唯一的资源标识(resource identifier),对资源的操作不会改变这些标识3.所有的操作都是无状态的REST简化开发,其架构遵循CRUD

2015-11-17 16:53:40 637

原创 整理了一份React-Native学习指南

自己在学习React-Native过程中整理的一份学习指南,包含 教程、开源app和资源网站等,还在不断更新中。欢迎pull requests!React-Native学习指南本指南汇集React-Native各类学习资源,给大家提供便利。指南正在不断的更新,大家有好的资源欢迎Pull Requests!同时还有Awesome React-Native系列https://githu

2015-11-17 13:48:12 1306

转载 谈谈 React Native

前言几天前,Facebook 在 React.js Conf 2015 大会上推出了 React Native(视频链接)。我发了一条微博(地址),结果引来了 100 多次转发。为什么 React Native 会引来如此多的关注呢?我在这里谈谈我对 React Native 的理解。一个新框架的出现总是为了解决现有的一些问题,那么对于现在的移动开发者来说,到底有哪些问题 React

2015-11-17 13:38:38 691

转载 java多线程通信方法

进程间通信的方法主要有以下几种:  (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。  (2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关 系 进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建

2015-11-13 15:11:34 471

原创 【Java并发编程】:使用synchronized获取互斥锁的几点说明

在并发编程中,多线程同时并发访问的资源叫做临界资源,当多个线程同时访问对象并要求操作相同资源时,分割了原子操作就有可能出现数据的不一致或数据不完整的情况,为避免这种情况的发生,我们会采取同步机制,以确保在某一时刻,方法内只允许有一个线程。 采用synchronized修饰符实现的同步机制叫做互斥锁机制,它所获得的锁叫做互斥锁。每个对象都有一个monitor(锁标记),当线程拥有这个锁标记时才能访问这个资源,没有锁标记便进入锁池。任何一个对象系统都会为其创建一个互斥锁,这个锁是为了分配给线程的,

2015-11-10 14:55:46 2582

原创 【Java并发编程】:图文讲述同步的另一个重要功能:内存可见性

加锁(synchronized同步)的功能不仅仅局限于互斥行为,同时还存在另外一个重要的方面:内存可见性。我们不仅希望防止某个线程正在使用对象状态而另一个线程在同时修改该状态,而且还希望确保当一个线程修改了对象状态后,其他线程能够看到该变化。而线程的同步恰恰也能够实现这一点。

2015-11-10 14:53:48 455

原创 【Java并发编程】:volatile变量修饰符—意料之外的问题(含代码)

volatile用处说明 在JDK1.2之前,Java的内存模型实现总是从主存(即共享内存)读取变量,是不需要进行特别的注意的。而随着JVM的成熟和优化,现在在多线程环境下volatile关键字的使用变得非常重要。在当前的Java内存模型下,线程可以把变量保存在本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。

2015-11-10 14:51:42 539

原创 【Java并发编程】:第五篇中volatile意外问题的正确分析解答(含代码)

在《Java并发编程学习笔记:volatile变量修饰符—意料之外的问题》一文中遗留了一个问题,就是volatile只修饰了missedIt变量,而没修饰value变量,但是在线程读取value的值的时候,也读到的是最新的数据。但是在网上查了很多资料都无果,看来很多人对volatile的规则并不是太清晰,或者说只停留在很表面的层次,一知半解。    这两天看《深入Java虚拟机——JVM高级特

2015-11-10 14:50:26 512

原创 【Java并发编程】:图文讲述同步的另一个重要功能:内存可见性

加锁(synchronized同步)的功能不仅仅局限于互斥行为,同时还存在另外一个重要的方面:内存可见性。我们不仅希望防止某个线程正在使用对象状态而另一个线程在同时修改该状态,而且还希望确保当一个线程修改了对象状态后,其他线程能够看到该变化。而线程的同步恰恰也能够实现这一点。

2015-11-10 14:47:14 463

原创 【Java并发编程】:并发编程中实现内存可见的两种方法比较:加锁和volatile变量

1、volatile变量是一种稍弱的同步机制在访问volatile变量时不会执行加锁操作,因此也就不会使执行线程阻塞,因此volatile变量是一种比synchronized关键字更轻量级的同步机制。    2、从内存可见性的角度看,写入volatile变量相当于退出同步代码块,而读取volatile变量相当于进入同步代码块。    3、在代码中如果过度依赖volatile变量来控制状态的

2015-11-10 14:45:58 504

原创 【Java并发编程】:生产者—消费者模型(含代码)

生产者消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一存储空间,生产者向空间里生产数据,而消费者取走数据。

2015-11-10 14:38:23 460

原创 【Java并发编程】:深入Java内存模型—内存操作规则总结

主内存与工作内存 Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量主要是指共享变量,存在竞争问题的变量。Java内存模型规定所有的变量都存储在主内存中,而每条线程还有自己的工作内存,线程的工作内存中保存了该线程使用到的变量的主内存副本拷贝,线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,而不能直接读写主内存中的变量

2015-11-10 14:36:57 2151

原创 【Java并发编程】:并发新特性—Executor框架与线程池(含代码)

Executor框架简介 在Java 5之后,并发编程引入了一堆新的启动、调度和管理线程的API。Executor框架便是Java 5中引入的,其内部使用了线程池机制,它在java.util.cocurrent 包下,通过该框架来控制线程的启动、执行和关闭,可以简化并发编程的操作。因此,在Java 5之后,通过Executor来启动线程比使用Thread的start方法更好,除了更易管理,效率更好(用线程池实现,节约开销)外,还有关键的一点:有助于避免this逃逸问题——如果我们在构造器中启动一个

2015-11-10 14:32:35 1252

原创 【Java并发编程】:并发新特性—信号量Semaphore(含代码)

在操作系统中,信号量是个很重要的概念,它在控制进程间的协作方面有着非常重要的作用,通过对信号量的不同操作,可以分别实现进程间的互斥与同步。当然它也可以用于多线程的控制,我们完全可以通过使用信号量来自定义实现类似Java中的synchronized、wait、notify机制。

2015-11-10 14:29:08 510

原创 【Java并发编程】:并发新特性—障碍器CyclicBarrier(含代码)

CyclicBarrier(又叫障碍器)同样是Java 5中加入的新特性,使用时需要导入java.util.concurrent.CylicBarrier。它适用于这样一种情况:你希望创建一组任务,它们并发地执行工作,另外的一个任务在这一组任务并发执行结束前一直阻塞等待,直到该组任务全部执行结束,这个任务才得以执行。这非常像CountDownLatch,只是CountDownLatch是只触发一次的事件,而CyclicBarrier可以多次重用。

2015-11-10 14:27:55 545

原创 【Java并发编程】:并发新特性—阻塞队列和阻塞栈(含代码)

阻塞队列 阻塞队列是Java 5并发新特性中的内容,阻塞队列的接口是java.util.concurrent.BlockingQueue,它有多个实现类:ArrayBlockingQueue、DelayQueue、LinkedBlockingQueue、PriorityBlockingQueue、SynchronousQueue等,用法大同小异,具体可查看JDK文档,这里简单举例看下ArrayBlockingQueue,它实现了一个有界队列,当队列满时,便会阻塞等待,直到有元素出队,后续的元素才可

2015-11-10 14:26:29 1221

原创 【Java并发编程】:线程间通信中notifyAll造成的早期通知问题(含代码)

如果线程在等待时接到通知,但线程等待的条件还不满足,此时,线程接到的就是早期通知,如果条件满足的时间很短,但很快又改变了,而变得不再满足,这时也将发生早期通知。这种现象听起来很奇怪,下面通过一个示例程序来说明问题。    很简单,两个线程等待删除List中的元素,同时另外一个线程正要向其中添加项目。代码如下:[java]view plaincopyimport 

2015-11-10 11:06:34 716

原创 【Java并发编程】:线程间通信中notify通知的遗漏(含代码)

notify通知的遗漏很容易理解,即threadA还没开始wait的时候,threadB已经notify了,这样,threadB通知是没有任何响应的,当threadB退出synchronized代码块后,threadA再开始wait,便会一直阻塞等待,直到被别的线程打断。 遗漏通知的代码    下面给出一段代码演示通知是如何遗漏的,如下:[java]view pla

2015-11-10 11:05:23 469

原创 【Java并发编程】:使用wait/notify/notifyAll实现线程间通信的几点重要说明

在Java中,可以通过配合调用Object对象的wait()方法和notify()方法或notifyAll()方法来实现线程间的通信。在线程中调用wait()方法,将阻塞等待其他线程的通知(其他线程调用notify()方法或notifyAll()方法),在线程中调用notify()方法或notifyAll()方法,将通知其他线程从wait()方法处返回。      Object是所有类

2015-11-10 11:03:55 454

原创 Java基本数据类型

Java语言是静态类型的(statical typed),也就是说所有变量和表达式的类型再编译时就已经完全确定。由于是statical typed,导致Java语言也是强类型(Strong typed)的。强类型意味着每个变量都具有一种类型,每个表达式具有一种类型,并且每种类型都是严格定义的,类型限制了变量可以hold哪些值,表达式最终产生什么值。同时限制了这些值可以进行的操作类型以及操作的具体方

2015-11-10 10:58:04 625

转载 Callable,Runnable比较及用法

编写多线程程序一般有三种方法,Thread,Runnable,Callable.Runnable和Callable的区别是,(1)Callable规定的方法是call(),Runnable规定的方法是run().(2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值得(3)call方法可以抛出异常,run方法不可以(4)运行Callable任务可以

2015-11-10 10:00:08 409

原创 Callable接口和Runnable接口

1、Java代码  public interface Executor {        /**      * Executes the given command at some time in the future.  The command      * may execute in a new thread, in a pooled thread, or in th

2015-11-10 09:58:04 454

原创 Callable,Runnable比较及用法

编写多线程程序是为了实现多任务的并发执行,从而能够更好地与用户交互。一般有三种方法,Thread,Runnable,Callable.Runnable和Callable的区别是,(1)Callable规定的方法是call(),Runnable规定的方法是run().(2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值得(3)call方法可以抛出异常,ru

2015-11-10 09:49:17 380

原创 基本线程同步: 在Lock中使用多个条件

在Lock中使用多个条件一个锁可能伴随着多个条件。这些条件声明在Condition接口中。 这些条件的目的是允许线程拥有锁的控制并且检查条件是否为true,如果是false,那么线程将被阻塞,直到其他线程唤醒它们。Condition接口提供一种机制,阻塞一个线程和唤醒一个被阻塞的线程。在并发编程中,生产者与消费者是经典的问题。我们有一个数据缓冲区,一个或多个数据生产者往缓冲区存储数据,一个

2015-11-06 15:08:10 1041 1

原创 《 Java并发编程从入门到精通》 多线程之间交互:线程阀

5.1 线程安全的阻塞队列BlockingQueue(1)先理解一下Queue、Deque、BlockingQueue的概念:Queue(队列) :用于保存一组元素,不过在存取元素的时候必须遵循先进先出原则。队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空

2015-11-06 15:04:51 962

原创 《Java并发编程从入门到精通》显示锁Lock和ReentrantLock

显示锁Lock和ReentrantLockLock是一个接口提供了无条件的、可轮询的、定时的、可中断的锁获取操作,所有加锁和解锁的方法都是显式的。包路径是:java.util.concurrent.locks.Lock。核心方法是lock(),unlock(),tryLock(),实现类有ReentrantLock, ReentrantReadWriteLock.ReadLock, Reent

2015-11-06 15:02:12 648

原创 ReentrantLock(重入锁)以及公平性

简介ReentrantLock的实现不仅可以替代隐式的synchronized关键字,而且能够提供超过关键字本身的多种功能。这里提到一个锁获取的公平性问题,如果在绝对时间上,先对锁进行获取的请求一定被先满足,那么这个锁是公平的,反之,是不公平的,也就是说等待时间最长的线程最有机会获取锁,也可以说锁的获取是有序的。ReentrantLock这个锁提供了一个构造函数,能够控制这个锁是否是公平的

2015-11-06 15:00:40 697

原创 Java锁的种类以及辨析(四):可重入锁

锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。

2015-11-06 14:55:29 671

原创 Java锁的种类以及辨析(三):阻塞锁

锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。

2015-11-06 14:54:25 634

原创 Java锁的种类以及辨析(二):自旋锁的其他种类

锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。2.自旋锁的其他种类上篇我们讲到了自旋锁,在自旋锁中 另有三种常见的锁形式:TicketLock ,CLHl

2015-11-06 14:53:07 636

原创 java锁的种类以及辨析(一):自旋锁

锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。1、自旋锁自旋锁是采用让当前线程不停地的在循环体内执行实现的,当循环的条件被其他线程改变时 才能进入临界区。如下

2015-11-06 14:51:59 717

原创 深入剖析ConcurrentHashMap(2)

经过之前的铺垫,现在可以进入正题了。我们关注的操作有:get,put,remove 这3个操作。对于哈希表,Java中采用链表的方式来解决hash冲突的。一个HashMap的数据结构看起来类似下图:实现了同步的HashTable也是这样的结构,它的同步使用锁来保证的,并且所有同步操作使用的是同一个锁对象。这样若有n个线程同时在get时,这n个线程要串行的等待来获取锁。C

2015-11-06 14:46:53 349

原创 深入剖析ConcurrentHashMap(1)

ConcurrentHashMap是Java5中新增加的一个线程安全的Map集合,可以用来替代HashTable。对于ConcurrentHashMap是如何提高其效率的,可能大多人只是知道它使用了多个锁代替HashTable中的单个锁,也就是锁分离技术(Lock Stripping)。实际上,ConcurrentHashMap对提高并发方面的优化,还有一些其它的技巧在里面(比如你是否知道在get操作的时候,它是否也使用了锁来保护?)。

2015-11-06 14:45:35 377

原创 jdk1.7的新特性

jdk1.7的新特性: 1,switch中可以使用字串 Java代码 String s = "test";   switch (s) {     case"test" :        System.out.println("test");   case"test1" :       System.out.prin

2015-11-05 17:17:34 359

原创 Java中的ReentrantLock和synchronized两种锁定机制的对比

多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Thread 类,可以用它来构建、启动和操纵线程,Java 语言包括了跨线程传达并发性约束的构造 —— synchronized 和 volatile 。在简化与平台无关的并发类的开发的同时,它决没有使并发类的编写工作变得更繁琐,只是使它变得更容易了。

2015-11-05 16:54:52 420

原创 彻底理解ThreadLocal

早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。  当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。

2015-11-05 16:50:03 339

原创 java中volatile关键字的含义

在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。

2015-11-05 16:42:12 311

原创 MyBatis 缓存机制深度解剖 / 自定义二级缓存

缓存概述正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持;一级缓存基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该Session中的所有 Cache 就将清空。二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap存储

2015-11-04 15:39:57 775

微信小程序完整:对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关注的人

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