• 关于

    缓存java

    的搜索结果

问题

关于JAVA缓存框架问题

Java开源缓存框架介绍(OSCache,JSC) OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。 有一个疑惑。就是JAVA缓存框架与memcache有什么区别呢?我...
蛮大人123 2019-12-01 20:02:31 1063 浏览量 回答数 1

问题

项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?【Java问答学堂】30期

面试官心理分析 这个问题,互联网公司必问,要是一个人连缓存都不太清楚,那确实比较尴尬。 只要问到缓存,上来第一个问题,肯定是先问问你项目哪里用了缓存?为...
剑曼红尘 2020-06-02 13:28:01 44 浏览量 回答数 1

问题

了解什么是 Redis 的雪崩、穿透和击穿?Redis 崩溃之后会怎么样?【Java问答】37期

面试题 了解什么是 Redis 的雪崩、穿透和击穿?Redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 Redis 的穿透? 面试官心理分析 其实这是问到缓存必问的&#...
剑曼红尘 2020-06-17 13:17:18 31 浏览量 回答数 1

阿里云高校特惠,助力学生创业梦!0元体验,快速入门云计算!

建个炫酷的简历网页,制作一个浪漫的表白网页,打造个人专属网盘,多种动手场景应用免费学!!!

问题

【Java问答学堂】12期 项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?

面试官心理分析 这个问题,互联网公司必问,要是一个人连缓存都不太清楚,那确实比较尴尬。 只要问到缓存,上来第一个问题,肯定是先问问你项目哪里用了缓存?为...
剑曼红尘 2020-04-30 13:03:14 0 浏览量 回答数 1

回答

面试官心理分析 这个问题,互联网公司必问,要是一个人连缓存都不太清楚,那确实比较尴尬。 只要问到缓存,上来第一个问题,肯定是先问问你项目哪里用了缓存?为啥要用?不用行不行?如果用了以后可能会有什么不良的后果? 这就是看看你对缓存这个东西背后有没有思考,如果你就是傻乎乎的瞎用,没法给面试官一个合理的解答,那面试官对你印象肯定不太好,觉得你平时思考太少,就知道干活儿。 面试题剖析 项目中缓存是如何使用的? 这个,需要结合自己项目的业务来。 为什么要用缓存? 用缓存,主要有两个用途:高性能、高并发。 高性能 假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作 mysql,半天查出来一个结果,耗时 600ms。但是这个结果可能接下来几个小时都不会变了,或者变了也可以不用立即反馈给用户。那么此时咋办? 缓存啊,折腾 600ms 查出来的结果,扔缓存里,一个 key 对应一个 value,下次再有人查,别走 mysql 折腾 600ms 了,直接从缓存里,通过一个 key 查出来一个 value,2ms 搞定。性能提升 300 倍。 就是说对于一些需要复杂操作耗时查出来的结果,且确定后面不怎么变化,但是有很多读请求,那么直接将查询出来的结果放在缓存中,后面直接读缓存就好。 高并发 mysql 这么重的数据库,压根儿设计不是让你玩儿高并发的,虽然也可以玩儿,但是天然支持不好。mysql 单机支撑到 2000QPS 也开始容易报警了。 所以要是你有个系统,高峰期一秒钟过来的请求有 1万,那一个 mysql 单机绝对会死掉。你这个时候就只能上缓存,把很多数据放缓存,别放 mysql。缓存功能简单,说白了就是 key-value 式操作,单机支撑的并发量轻松一秒几万十几万,支撑高并发 so easy。单机承载并发量是 mysql 单机的几十倍。 缓存是走内存的,内存天然就支撑高并发。 用了缓存之后会有什么不良后果? 常见的缓存问题有以下几个: 缓存与数据库双写不一致缓存雪崩、缓存穿透、缓存击穿缓存并发竞争 点击超链接,可直接查看缓存相关问题及解决方案。 往期回顾: 【Java问答学堂】1期 为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景? 【Java问答学堂】2期 如何保证消息队列的高可用? 【Java问答学堂】3期 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性? 【Java问答学堂】4期 如何保证消息的可靠性传输?(如何处理消息丢失的问题?) 【Java问答学堂】5期 如何保证消息的顺序性? 【Java问答学堂】6期 如何解决消息队列的延时以及过期失效问题? 【Java问答学堂】7期 如果让你写一个消息队列,该如何进行架构设计? 【Java问答学堂】8期 es 的分布式架构原理能说一下么(es 是如何实现分布式的啊)? 【Java问答学堂】9期 es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊? 【Java问答学堂】10期 es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊? 【Java问答学堂】11期 es 生产集群的部署架构是什么?每个索引的数据量大概有多少?
剑曼红尘 2020-04-30 13:03:26 0 浏览量 回答数 0

问题

如何保证缓存与数据库的双写一致性?【Java问答】38期

面试题 如何保证缓存与数据库的双写一致性? 面试官心理分析 你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解...
剑曼红尘 2020-06-16 12:58:57 36 浏览量 回答数 1

问题

电商网站的商品详情页系统架构【Java问答学堂】61期

小型电商网站的商品详情页系统架构 小型电商网站的页面展示采用页面全量静态化的思想。数据库中存放了所有的商品信息,页面静态化系统,将数据填充进静态模板中,形成静态化页面,推入 Ngin...
剑曼红尘 2020-07-20 13:08:17 1491 浏览量 回答数 2

问题

Ehcache使用配置+硬编码实现缓存遇到的问题:报错

目前使用jfinal+Ehcache来开发应用,但是遇到了一个缓存问题。 Ehcache 的使用和配置至少有2种:配置文件+硬编码 这2中,都在项目中使用:...
kun坤 2020-06-20 13:45:46 1 浏览量 回答数 1

问题

Ehcache使用配置+硬编码实现缓存遇到的问题 配置报错 

目前使用jfinal+Ehcache来开发应用,但是遇到了一个缓存问题。 Ehcache 的使用和配置至少有2种:配置文件+硬编码 这2中,都在项目中使用:配置文件适合...
kun坤 2020-05-31 17:41:02 0 浏览量 回答数 1

问题

java缓存怎么实现的

java缓存怎么实现的...
云计算小粉 2019-12-01 19:57:10 558 浏览量 回答数 1

问题

java怎么读取缓存字典

java怎么读取缓存字典...
云计算小粉 2019-12-01 19:53:11 580 浏览量 回答数 1

问题

java为什么要使用缓存

java为什么要使用缓存...
云计算小粉 2019-12-01 19:52:57 1790 浏览量 回答数 2

问题

如何保证 redis 的高并发和高可用?【Java问答】34期

往期回顾: 【Java问答学堂】1期 为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景&...
剑曼红尘 2020-06-10 21:04:19 15 浏览量 回答数 1

回答

面试题 Redis 的并发竞争问题是什么?如何解决这个问题?了解 Redis 事务的 CAS 方案吗? 面试官心理分析 这个也是线上非常常见的一个问题,就是多客户端同时并发写一个 key,可能本来应该先到的数据后到了,导致数据版本错了;或者是多客户端同时获取一个 key,修改值之后再写回去,只要顺序错了,数据就错了。 而且 Redis 自己就有天然解决这个问题的 CAS 类的乐观锁方案。 面试题剖析 某个时刻,多个系统实例都去更新某个 key。可以基于 zookeeper 实现分布式锁。每个系统通过 zookeeper 获取分布式锁,确保同一时间,只能有一个系统实例在操作某个 key,别人都不允许读和写。 你要写入缓存的数据,都是从 mysql 里查出来的,都得写入 mysql 中,写入 mysql 中的时候必须保存一个时间戳,从 mysql 查出来的时候,时间戳也查出来。 每次要写之前,先判断一下当前这个 value 的时间戳是否比缓存里的 value 的时间戳要新。如果是的话,那么可以写,否则,就不能用旧的数据覆盖新的数据。 往期回顾: 【Java问答学堂】1期 为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景? 【Java问答学堂】2期 如何保证消息队列的高可用? 【Java问答学堂】3期 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性? 【Java问答学堂】4期 如何保证消息的可靠性传输?(如何处理消息丢失的问题?) 【Java问答学堂】5期 如何保证消息的顺序性? 【Java问答学堂】6期 如何解决消息队列的延时以及过期失效问题? 【Java问答学堂】7期 如果让你写一个消息队列,该如何进行架构设计? 【Java问答学堂】8期 es 的分布式架构原理能说一下么(es 是如何实现分布式的啊)? 【Java问答学堂】9期 es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊? 【Java问答学堂】10期 es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊? 【Java问答学堂】11期 es 生产集群的部署架构是什么?每个索引的数据量大概有多少? 【Java问答学堂】12期 项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果? 【Java问答学堂】13期 redis 和 memcached 有什么区别? 【Java问答学堂】14期 redis 都有哪些数据类型?分别在哪些场景下使用比较合适? 【Java问答学堂】15期redis 的过期策略都有哪些?内存淘汰机制都有哪些? 【Java问答学堂】16期如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍 为什么使用消息队列?【Java问答学堂】17期 消息队列有什么优点和缺点?【Java问答学堂】18期 Kafka、ActiveMQ、RabbitMQ、RocketMQ的区别?【Java问答学堂】19期 如何保证消息队列的高可用?【Java问答学堂】20期 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?【Java问答学堂】21期 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?【Java问答学堂】22期 如何保证消息的顺序性?【Java问答学堂】23期 如何解决消息队列的延时以及过期失效问题?【Java问答学堂】24期 如果让你写一个消息队列,该如何进行架构设计?【Java问答学堂】25期 ES 的分布式架构原理能说一下么(ES 是如何实现分布式的啊)?【Java问答学堂】26期 ES 写入数据的工作原理是什么啊?ES 查询数据的工作原理是什么啊?【Java问答学堂】27期 ES 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?【Java问答学堂】28期 ES 生产集群的部署架构是什么?每个索引的数据量大概有多少?【Java问答学堂】29期 项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?【Java问答学堂】30期 Redis 和 Memcached 的区别?Redis 的线程模型是什么?【Java问答学堂】31期 Redis 都有哪些数据类型?分别在哪些场景下使用比较合适?【Java问答学堂】32期 Redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现?【Java问答】33期 如何保证 redis 的高并发和高可用?【Java问答】34期 Redis 的持久化有哪几种方式?【Java问答】35期 Redis 集群模式的工作原理能说一下么?【Java问答】36期 了解什么是 Redis 的雪崩、穿透和击穿?Redis 崩溃之后会怎么样?【Java问答】37期 如何保证缓存与数据库的双写一致性?【Java问答】38期
剑曼红尘 2020-06-17 21:12:43 0 浏览量 回答数 0

问题

Redis 的并发竞争问题是什么?如何解决这个问题?【Java问答】39期

面试题 Redis 的并发竞争问题是什么?如何解决这个问题?了解 Redis 事务的 CAS 方案吗? 面试官心理分析 这个也是线上非常常见的一个问题,就是多客户端同时并发写一个...
剑曼红尘 2020-06-17 21:12:34 1 浏览量 回答数 1

问题

CDN如何使用JAVA SDK刷新缓存?

CDN如何使用JAVA SDK刷新缓存?...
行者武松 2019-12-01 19:38:26 1117 浏览量 回答数 1

问题

如何使用CDN的JAVA SDK刷新缓存?

如何使用CDN的JAVA SDK刷新缓存?...
保持可爱mmm 2020-03-30 15:14:29 1 浏览量 回答数 1

问题

Java 客户端缓存有哪几种方案?

我们做的是Java Swing客户端的B/S系统,经常会有需要通过sql进行一一匹配的业务。这样的问题就是过多的数据库访问。比如商品A的结果,可能不同购买了会有不同的价格。价格表中,存有各种商品,各种标准的价格。需要查找A的某个购买了的价格...
蛮大人123 2019-12-01 20:06:08 1161 浏览量 回答数 1

问题

求助:【CDN】如何使用CDN的JAVA SDK刷新缓存

如何使用CDN的JAVA SDK刷新缓存。...
阿里云内容团队 2020-12-18 15:13:52 0 浏览量 回答数 1

回答

英文原文:Java Integer Cache 翻译地址:Java中整型的缓存机制 原文作者:Java Papers 翻译作者:Hollis 转载请注明出处。 本文将介绍Java中Integer的缓存相关知识。这是在Java 5中引入的一个有助于节省内存、提高性能的功能。首先看一个使用Integer的示例代码,从中学习其缓存行为。接着我们将为什么这么实现以及他到底是如何实现的。你能猜出下面的Java程序的输出结果吗。如果你的结果和真正结果不一样,那么你就要好好看看本文了。 package com.javapapers.java; public class JavaIntegerCache { public static void main(String... strings) { Integer integer1 = 3; Integer integer2 = 3; if (integer1 == integer2) System.out.println("integer1 == integer2"); else System.out.println("integer1 != integer2"); Integer integer3 = 300; Integer integer4 = 300; if (integer3 == integer4) System.out.println("integer3 == integer4"); else System.out.println("integer3 != integer4"); } } 我们普遍认为上面的两个判断的结果都是false。虽然比较的值是相等的,但是由于比较的是对象,而对象的引用不一样,所以会认为两个if判断都是false的。在Java中,==比较的是对象应用,而equals比较的是值。所以,在这个例子中,不同的对象有不同的引用,所以在进行比较的时候都将返回false。奇怪的是,这里两个类似的if条件判断返回不同的布尔值。 上面这段代码真正的输出结果: integer1 == integer2 integer3 != integer4 Java中Integer的缓存实现 在Java 5中,在Integer的操作上引入了一个新功能来节省内存和提高性能。整型对象通过使用相同的对象引用实现了缓存和重用。 适用于整数值区间-128 至 +127。 只适用于自动装箱。使用构造函数创建对象不适用。 Java的编译器把基本数据类型自动转换成封装类对象的过程叫做自动装箱,相当于使用valueOf方法: Integer a = 10; //this is autoboxing Integer b = Integer.valueOf(10); //under the hood 现在我们知道了这种机制在源码中哪里使用了,那么接下来我们就看看JDK中的valueOf方法。下面是JDK 1.8.0 build 25的实现: /** * Returns an {@code Integer} instance representing the specified * {@code int} value. If a new {@code Integer} instance is not * required, this method should generally be used in preference to * the constructor {@link #Integer(int)}, as this method is likely * to yield significantly better space and time performance by * caching frequently requested values. * * This method will always cache values in the range -128 to 127, * inclusive, and may cache other values outside of this range. * * @param i an {@code int} value. * @return an {@code Integer} instance representing {@code i}. * @since 1.5 */ public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); } 在创建对象之前先从IntegerCache.cache中寻找。如果没找到才使用new新建对象。 IntegerCache Class IntegerCache是Integer类中定义的一个private static的内部类。接下来看看他的定义。 /** * Cache to support the object identity semantics of autoboxing for values between * -128 and 127 (inclusive) as required by JLS. * * The cache is initialized on first usage. The size of the cache * may be controlled by the {@code -XX:AutoBoxCacheMax=} option. * During VM initialization, java.lang.Integer.IntegerCache.high property * may be set and saved in the private system properties in the * sun.misc.VM class. */ private static class IntegerCache { static final int low = -128; static final int high; static final Integer cache[]; static { // high value may be configured by property int h = 127; String integerCacheHighPropValue = sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high"); if (integerCacheHighPropValue != null) { try { int i = parseInt(integerCacheHighPropValue); i = Math.max(i, 127); // Maximum array size is Integer.MAX_VALUE h = Math.min(i, Integer.MAX_VALUE - (-low) -1); } catch( NumberFormatException nfe) { // If the property cannot be parsed into an int, ignore it. } } high = h; cache = new Integer[(high - low) + 1]; int j = low; for(int k = 0; k < cache.length; k++) cache[k] = new Integer(j++); // range [-128, 127] must be interned (JLS7 5.1.7) assert IntegerCache.high >= 127; } private IntegerCache() {} } 其中的javadoc详细的说明了缓存支持-128到127之间的自动装箱过程。最大值127可以通过-XX:AutoBoxCacheMax=size修改。 缓存通过一个for循环实现。从低到高并创建尽可能多的整数并存储在一个整数数组中。这个缓存会在Integer类第一次被使用的时候被初始化出来。以后,就可以使用缓存中包含的实例对象,而不是创建一个新的实例(在自动装箱的情况下)。 实际上这个功能在Java 5中引入的时候,范围是固定的-128 至 +127。后来在Java 6中,可以通过java.lang.Integer.IntegerCache.high设置最大值。这使我们可以根据应用程序的实际情况灵活地调整来提高性能。到底是什么原因选择这个-128到127范围呢?因为这个范围的数字是最被广泛使用的。 在程序中,第一次使用Integer的时候也需要一定的额外时间来初始化这个缓存。 Java语言规范中的缓存行为 在Boxing Conversion部分的Java语言规范(JLS)规定如下: 如果一个变量p的值是: -128至127之间的整数(§3.10.1) true 和 false的布尔值 (§3.10.3) ‘\u0000’至 ‘\u007f’之间的字符(§3.10.4) 中时,将p包装成a和b两个对象时,可以直接使用a==b判断a和b的值是否相等。 其他缓存的对象 这种缓存行为不仅适用于Integer对象。我们针对所有的整数类型的类都有类似的缓存机制。 有ByteCache用于缓存Byte对象 有ShortCache用于缓存Short对象 有LongCache用于缓存Long对象 有CharacterCache用于缓存Character对象 Byte, Short, Long有固定范围: -128 到 127。对于Character, 范围是 0 到 127。除了Integer以外,这个范围都不能改变。
montos 2020-06-01 21:24:56 0 浏览量 回答数 0

问题

关于 `nginx` 缓存 `java` 动态生成的图片

我们是通过链接:www.example.com/image?id=000&height=600&weight=800这种格式的请求来从数据库中读取图片并显示。(java后台, 读取图片后通过产查询参数调整大小)现在我希望能通...
蛮大人123 2019-12-01 20:00:50 1108 浏览量 回答数 2

问题

Java spring如何在缓存中获取单例bean?

Java spring如何在缓存中获取单例bean?...
小天使爱美 2020-04-12 20:22:52 0 浏览量 回答数 1

问题

java如何实现线程安全的缓存

众所周知,java中实现缓存最简单的办法就是使用LinkedHashMap。然而这样的缓存,在多线程下就会出现问题,使得程序发生异常。那么问题来了,如何实现一个线程安全的缓存呢?1.有线程安全的HashMap-->Concurrent...
蛮大人123 2019-12-01 20:03:29 1919 浏览量 回答数 2

回答

因为JVM 内存管理有些不足: 1. 有效数据密度低:Java 对象内存存储有 3 个主要部分:对象头、实例数据、对齐填充部分。对齐填充部分会导致 JVM 中有效信息密度低 2. 垃圾回收不可控 3. OOM 问题影响稳定性 4. 缓存未命中问题:CPU在读取会缓存访问数据周边的数据,Java 对象在堆中存储不是连续的,导致会缓存无效信息,缓存未命中
一人吃饱,全家不饿 2021-01-08 15:48:41 0 浏览量 回答数 0

回答

1、覆盖最新Java微服务架构 -Java面向对象编程夯实基础 Java16面向对象编程 多线程编程与锁机制 Java垃圾回收GC算法 字节码机制与加载扩展 Java Web开发框架 MySQL数据库开发 ORM框架实战开发 MongoDB实战开发 -Dubbo 高并发缓存Redis实战 分布式架构体系 分布式RPC协议 Dubbo的典型场景 淘宝双11服务治理 多级缓存与分布式 Dubbo分布式架构 Dubbo3.0优化策略 Dubbo实战开发 云原生与容器化实战 -Spring Boot 快速开发 Spring 平台知识体系 依赖注入与IOC机制 Spring Boot2.5新特性 Spring Boot 网站开发 Spring Boot API开发 Spring Boot性能监控 实战高并发缓存Redis 实战开发MongoDB 消息队列RocketMQ -Spring Cloud 微服务架构 微服务架构知识体系 2020重大变化与改进 微服务注册发现机制 微服务熔断限流算法 微服务之代理网关 微服务安全身份验证 微服务之链路追踪 灰度发布与流量调度 源码解读与底层原理 -Spring Cloud Alibaba 阿里开源 阿里巴巴开源微服务 淘宝微服务架构改造 Dubbo微服务实战 Nacos注册发现原理 Sentinel熔断限流 SEATA分布式事务 分布式配置中心 负载均衡与熔断算法 异地多中心调度策略
1358896759097293 2021-05-02 22:17:30 0 浏览量 回答数 0

问题

Redis 都有哪些数据类型?分别在哪些场景下使用比较合适?【Java问答学堂】32期

面试官心理分析 除非是面试官感觉看你简历,是工作 3 年以内的比较初级的同学,可能对技术没有很深入的研究,面试官才会问这类问题。否则,在宝贵的面试时间里,面试官实在不想...
剑曼红尘 2020-06-08 20:05:05 21 浏览量 回答数 1

回答

说穿了其实非常简单了. 你"同时看磁盘上的数据"的时候, 没有绕过操作系统 去查看文件吧? 所以看到的还是 操作系统的文件缓存里的内容. 所以你上面的测试肯定是你现在的结论.想要看到你要的结果, 可能的方法: 写文件后直接 电脑断电/拔掉硬盘/把windows搞蓝屏. 然后重启机器后去看 文件内容是否改变了...有一个很简单的方法! 上优盘, debug停住之后, 立刻拔掉优盘! 然后连上优盘, 可以看到没有写入!正好结合这个问题记一下我对文件缓存的理解. 有误请帮我指出.我们一般说文件缓存, 其实是有两个缓存;一个是 application层面的, 使用fflush(c), Writer.flush(java) 来 清空缓存到 OS层面;一个是 OS 层面的, 使用fsync/msync(c), FileChannel.force/FileDescriptor.sync(java) 来清空缓存到 文件系统.
蛮大人123 2019-12-02 01:57:37 0 浏览量 回答数 0

问题

在Java语言中描述String类缓存字符串的hash Code默认初始化值为

在Java语言中描述String类缓存字符串的hash Code默认初始化值为...
huc_逆天 2021-01-08 16:25:50 2 浏览量 回答数 1

问题

Java为什么要对−128~127之间的整数进行缓存呢?

Java为什么要对−128~127之间的整数进行缓存呢?...
小天使爱美 2020-04-07 12:58:19 2 浏览量 回答数 1

回答

java缓存可以利用java自带的List集合,也可以用map,或者使用优秀的三方包,比如guava的cache,操作起来很方便,线程安全,且封装了缓存时效时间等常用功能
paji 2019-12-02 01:03:32 0 浏览量 回答数 0

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 阿里云AIoT