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

天翼云主机怎么建设网站四大战略咨询公司

天翼云主机怎么建设网站,四大战略咨询公司,网站的中英文切换怎么做,网站每天更新多少文章1. MySqlMemcached架构的问题 实际MySQL是适合进行海量数据存储的#xff0c;通过Memcached将热点数据加载到cache#xff0c;加速访问#xff0c;很多公司都曾经使用过这样的架构#xff0c;但随着业务数据量的不断增加#xff0c;和访问量的持续增长#xff0c;我们遇…1.  MySqlMemcached架构的问题 实际MySQL是适合进行海量数据存储的通过Memcached将热点数据加载到cache加速访问很多公司都曾经使用过这样的架构但随着业务数据量的不断增加和访问量的持续增长我们遇到了很多问题 1.MySQL需要不断进行拆库拆表Memcached也需不断跟着扩容扩容和维护工作占据大量开发时间。 2.Memcached与MySQL数据库数据一致性问题。 3.Memcached数据命中率低或down机大量访问直接穿透到DBMySQL无法支撑。 4.跨机房cache同步问题。 众多NoSQL百花齐放如何选择 最近几年业界不断涌现出很多各种各样的NoSQL产品那么如何才能正确地使用好这些产品最大化地发挥其长处是我们需要深入研究和思考的问题实际归根结底最重要的是了解这些产品的定位并且了解到每款产品的tradeoffs在实际应用中做到扬长避短总体上这些NoSQL主要用于解决以下几种问题 1.少量数据存储高速读写访问。此类产品通过数据全部in-momery 的方式来保证高速访问同时提供数据落地的功能实际这正是Redis最主要的适用场景。 2.海量数据存储分布式系统支持数据一致性保证方便的集群节点添加/删除。 3.这方面最具代表性的是dynamo和bigtable 2篇论文所阐述的思路。前者是一个完全无中心的设计节点之间通过gossip方式传递集群信息数据保证最终一致性后者是一个中心化的方案设计通过类似一个分布式锁服务来保证强一致性,数据写入先写内存和redo log然后定期compat归并到磁盘上将随机写优化为顺序写提高写入性能。 4.Schema freeauto-sharding等。比如目前常见的一些文档数据库都是支持schema-free的直接存储json格式数据并且支持auto-sharding等功能比如mongodb。 面对这些不同类型的NoSQL产品,我们需要根据我们的业务场景选择最合适的产品。 Redis最适合所有数据in-momory的场景虽然Redis也提供持久化功能但实际更多的是一个disk-backed的功能跟传统意义上的持久化有比较大的差别那么可能大家就会有疑问似乎Redis更像一个加强版的Memcached那么何时使用Memcached,何时使用Redis呢? 如果简单地比较Redis与Memcached的区别大多数都会得到以下观点 1 、Redis不仅仅支持简单的k/v类型的数据同时还提供listsetzsethash等数据结构的存储。      2 、Redis支持数据的备份即master-slave模式的数据备份。      3 、Redis支持数据的持久化可以将内存中的数据保持在磁盘中重启的时候可以再次加载进行使用。 2.  Redis常用数据类型 Redis最为常用的数据类型主要有以下 StringHashListSetSorted setpub/subTransactions 在具体描述这几种数据类型之前我们先通过一张图了解下Redis内部内存管理中是如何描述这些不同数据类型的 首先Redis内部使用一个redisObject对象来表示所有的key和value,redisObject最主要的信息如上图所示 type代表一个value对象具体是何种数据类型 encoding是不同数据类型在redis内部的存储方式 比如typestring代表value存储的是一个普通字符串那么对应的encoding可以是raw或者是int,如果是int则代表实际redis内部是按数值型类存储和表示这个字符串的当然前提是这个字符串本身可以用数值表示比如:123 456这样的字符串。 这里需要特殊说明一下vm字段只有打开了Redis的虚拟内存功能此字段才会真正的分配内存该功能默认是关闭状态的该功能会在后面具体描述。通过上图我们可以发现Redis使用redisObject来表示所有的key/value数据是比较浪费内存的当然这些内存管理成本的付出主要也是为了给Redis不同数据类型提供一个统一的管理接口实际作者也提供了多种方法帮助我们尽量节省内存使用我们随后会具体讨论。 3.  各种数据类型应用和实现方式 下面我们先来逐一的分析下这7种数据类型的使用和内部实现方式: String: Strings 数据结构是简单的key-value类型value其实不仅是String也可以是数字. 常用命令:  set,get,decr,incr,mget 等。 应用场景String是最常用的一种数据类型普通的key/ value 存储都可以归为此类.即可以完全实现目前 Memcached 的功能并且效率更高。还可以享受Redis的定时持久化操作日志及 Replication等功能。除了提供与 Memcached 一样的get、set、incr、decr 等操作外Redis还提供了下面一些操作 获取字符串长度往字符串append内容设置和获取字符串的某一段内容设置及获取字符串的某一位bit批量设置一系列字符串的内容 实现方式String在redis内部存储默认就是一个字符串被redisObject所引用当遇到incr,decr等操作时会转成数值型进行计算此时redisObject的encoding字段为int。 Hash 常用命令hget,hset,hgetall 等。 应用场景在Memcached中我们经常将一些结构化的信息打包成HashMap在客户端序列化后存储为一个字符串的值比如用户的昵称、年龄、性别、积分等这时候在需要修改其中某一项时通常需要将所有值取出反序列化后修改某一项的值再序列化存储回去。这样不仅增大了开销也不适用于一些可能并发操作的场合比如两个并发的操作都需要修改积分。而Redis的Hash结构可以使你像在数据库中Update一个属性一样只修改某一项属性值。         我们简单举个实例来描述下Hash的应用场景比如我们要存储一个用户信息对象数据包含以下信息 用户ID为查找的key存储的value用户对象包含姓名年龄生日等信息如果用普通的key/value结构来存储主要有以下2种存储方式 第一种方式将用户ID作为查找key,把其他信息封装成一个对象以序列化的方式存储这种方式的缺点是增加了序列化/反序列化的开销并且在需要修改其中一项信息时需要把整个对象取回并且修改操作需要对并发进行保护引入CAS等复杂问题。 第二种方法是这个用户信息对象有多少成员就存成多少个key-value对儿用用户ID对应属性的名称作为唯一标识来取得对应属性的值虽然省去了序列化开销和并发问题但是用户ID为重复存储如果存在大量这样的数据内存浪费还是非常可观的。 那么Redis提供的Hash很好的解决了这个问题Redis的Hash实际是内部存储的Value为一个HashMap并提供了直接存取这个Map成员的接口如下图 也就是说Key仍然是用户ID, value是一个Map这个Map的key是成员的属性名value是属性值这样对数据的修改和存取都可以直接通过其内部Map的Key(Redis里称内部Map的key为field), 也就是通过 key(用户ID) field(属性标签) 就可以操作对应属性数据了既不需要重复存储数据也不会带来序列化和并发修改控制的问题。很好的解决了问题。 这里同时需要注意Redis提供了接口(hgetall)可以直接取到全部的属性数据,但是如果内部Map的成员很多那么涉及到遍历整个内部Map的操作由于Redis单线程模型的缘故这个遍历操作可能会比较耗时而另其它客户端的请求完全不响应这点需要格外注意。 实现方式 上面已经说到Redis Hash对应Value内部实际就是一个HashMap实际这里会有2种不同实现这个Hash的成员比较少时Redis为了节省内存会采用类似一维数组的方式来紧凑存储而不会采用真正的HashMap结构对应的value redisObject的encoding为zipmap,当成员数量增大时会自动转成真正的HashMap,此时encoding为ht。 List 常用命令lpush,rpush,lpop,rpop,lrange等。 应用场景 Redis list的应用场景非常多也是Redis最重要的数据结构之一比如twitter的关注列表粉丝列表等都可以用Redis的list结构来实现。 Lists 就是链表相信略有数据结构知识的人都应该能理解其结构。使用Lists结构我们可以轻松地实现最新消息排行等功能。Lists的另一个应用就是消息队列 可以利用Lists的PUSH操作将任务存在Lists中然后工作线程再用POP操作将任务取出进行执行。Redis还提供了操作Lists中某一段的api你可以直接查询删除Lists中某一段的元素。 实现方式 Redis list的实现为一个双向链表即可以支持反向查找和遍历更方便操作不过带来了部分额外的内存开销Redis内部的很多实现包括发送缓冲队列等也都是用的这个数据结构。 Set 常用命令 sadd,spop,smembers,sunion 等。 应用场景 Redis set对外提供的功能与list类似是一个列表的功能特殊之处在于set是可以自动排重的当你需要存储一个列表数据又不希望出现重复数据时set是一个很好的选择并且set提供了判断某个成员是否在一个set集合内的重要接口这个也是list所不能提供的。 Sets 集合的概念就是一堆不重复值的组合。利用Redis提供的Sets数据结构可以存储一些集合性的数据比如在微博应用中可以将一个用户所有的关注人存在一个集合中将其所有粉丝存在一个集合。Redis还为集合提供了求交集、并集、差集等操作可以非常方便的实现如共同关注、共同喜好、二度好友等功能对上面的所有集合操作你还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中。 实现方式 set 的内部实现是一个 value永远为null的HashMap实际就是通过计算hash的方式来快速排重的这也是set能提供判断一个成员是否在集合内的原因。 Sorted Set 常用命令 zadd,zrange,zrem,zcard等 使用场景 Redis sorted set的使用场景与set类似区别是set不是自动有序的而sorted set可以通过用户额外提供一个优先级(score)的参数来为成员排序并且是插入有序的即自动排序。当你需要一个有序的并且不重复的集合列表那么可以选择sorted set数据结构比如twitter 的public timeline可以以发表时间作为score来存储这样获取时就是自动按时间排好序的。 另外还可以用Sorted Sets来做带权重的队列比如普通消息的score为1重要消息的score为2然后工作线程可以选择按score的倒序来获取工作任务。让重要的任务优先执行。 实现方式 Redis sorted set的内部使用HashMap和跳跃表(SkipList)来保证数据的存储和有序HashMap里放的是成员到score的映射而跳跃表里存放的是所有的成员排序依据是HashMap里存的score,使用跳跃表的结构可以获得比较高的查找效率并且在实现上比较简单。 Pub/Sub Pub/Sub 从字面上理解就是发布Publish与订阅Subscribe在Redis中你可以设定对某一个key值进行消息发布及消息订阅当一个key值上进行了消息发布后所有订阅它的客户端都会收到相应的消息。这一功能最明显的用法就是用作实时消息系统比如普通的即时聊天群聊等功能。 Transactions 谁说NoSQL都不支持事务虽然Redis的Transactions提供的并不是严格的ACID的事务比如一串用EXEC提交执行的命令在执行中服务器宕机那么会有一部分命令执行了剩下的没执行但是这个Transactions还是提供了基本的命令打包执行的功能在服务器不出问题的情况下可以保证一连串的命令是顺序在一起执行的中间有会有其它客户端命令插进来执行。Redis还提供了一个Watch功能你可以对一个key进行Watch然后再执行Transactions在这过程中如果这个Watched的值进行了修改那么这个Transactions会发现并拒绝执行。 4.  Redis实际应用场景 Redis在很多方面与其他数据库解决方案不同它使用内存提供主存储支持而仅使用硬盘做持久性的存储它的数据模型非常独特用的是单线程。另一个大区别在于你可以在开发环境中使用Redis的功能但却不需要转到Redis。 转向Redis当然也是可取的许多开发者从一开始就把Redis作为首选数据库但设想如果你的开发环境已经搭建好应用已经在上面运行了那么更换数据库框架显然不那么容易。另外在一些需要大容量数据集的应用Redis也并不适合因为它的数据集不会超过系统可用的内存。所以如果你有大数据应用而且主要是读取访问模式那么Redis并不是正确的选择。 然而我喜欢Redis的一点就是你可以把它融入到你的系统中来这就能够解决很多问题比如那些你现有的数据库处理起来感到缓慢的任务。这些你就可以通过Redis来进行优化或者为应用创建些新的功能。在本文中我就想探讨一些怎样将Redis加入到现有的环境中并利用它的原语命令等功能来解决 传统环境中碰到的一些常见问题。在这些例子中Redis都不是作为首选数据库。 1、显示最新的项目列表 下面这个语句常用来显示最新项目随着数据多了查询毫无疑问会越来越慢。 SELECT * FROM foo WHERE ... ORDER BY time DESC LIMIT 10    在Web应用中“列出最新的回复”之类的查询非常普遍这通常会带来可扩展性问题。这令人沮丧因为项目本来就是按这个顺序被创建的但要输出这个顺序却不得不进行排序操作。 类似的问题就可以用Redis来解决。比如说我们的一个Web应用想要列出用户贴出的最新20条评论。在最新的评论边上我们有一个“显示全部”的链接点击后就可以获得更多的评论。 我们假设数据库中的每条评论都有一个唯一的递增的ID字段。 我们可以使用分页来制作主页和评论页使用Redis的模板每次新评论发表时我们会将它的ID添加到一个Redis列表 LPUSH latest.comments ID    我们将列表裁剪为指定长度因此Redis只需要保存最新的5000条评论 LTRIM latest.comments 0 5000  每次我们需要获取最新评论的项目范围时我们调用一个函数来完成使用伪代码 FUNCTION get_latest_comments(start, num_items):      id_list  redis.lrange(latest.comments,start,startnum_items - 1)      IF id_list.length  num_items          id_list  SQL_DB(SELECT ... ORDER BY time LIMIT ...)      END      RETURN id_list  END   这里我们做的很简单。在Redis中我们的最新ID使用了常驻缓存这是一直更新的。但是我们做了限制不能超过5000个ID因此我们的获取ID函数会一直询问Redis。只有在start/count参数超出了这个范围的时候才需要去访问数据库。 我们的系统不会像传统方式那样“刷新”缓存Redis实例中的信息永远是一致的。SQL数据库或是硬盘上的其他类型数据库只是在用户需要获取“很远”的数据时才会被触发而主页或第一个评论页是不会麻烦到硬盘上的数据库了。 2、删除与过滤 我们可以使用LREM来删除评论。如果删除操作非常少另一个选择是直接跳过评论条目的入口报告说该评论已经不存在。 有些时候你想要给不同的列表附加上不同的过滤器。如果过滤器的数量受到限制你可以简单的为每个不同的过滤器使用不同的Redis列表。毕竟每个列表只有5000条项目但Redis却能够使用非常少的内存来处理几百万条项目。 3、排行榜相关 另一个很普遍的需求是各种数据库的数据并非存储在内存中因此在按得分排序以及实时更新这些几乎每秒钟都需要更新的功能上数据库的性能不够理想。 典型的比如那些在线游戏的排行榜比如一个Facebook的游戏根据得分你通常想要 - 列出前100名高分选手 - 列出某用户当前的全球排名 这些操作对于Redis来说小菜一碟即使你有几百万个用户每分钟都会有几百万个新的得分。 模式是这样的每次获得新得分时我们用这样的代码 ZADD leaderboard  score  username  你可能用userID来取代username这取决于你是怎么设计的。 得到前100名高分用户很简单ZREVRANGE leaderboard 0 99。 用户的全球排名也相似只需要ZRANK leaderboard username。 4、按照用户投票和时间排序 排行榜的一种常见变体模式就像Reddit或Hacker News用的那样新闻按照类似下面的公式根据得分来排序 score  points / time^alpha  因此用户的投票会相应的把新闻挖出来但时间会按照一定的指数将新闻埋下去。下面是我们的模式当然算法由你决定。 模式是这样的开始时先观察那些可能是最新的项目例如首页上的1000条新闻都是候选者因此我们先忽视掉其他的这实现起来很简单。 每次新的新闻贴上来后我们将ID添加到列表中使用LPUSH LTRIM确保只取出最新的1000条项目。 有一项后台任务获取这个列表并且持续的计算这1000条新闻中每条新闻的最终得分。计算结果由ZADD命令按照新的顺序填充生成列表老新闻则被清除。这里的关键思路是排序工作是由后台任务来完成的。 5、处理过期项目 另一种常用的项目排序是按照时间排序。我们使用unix时间作为得分即可。 模式如下 - 每次有新项目添加到我们的非Redis数据库时我们把它加入到排序集合中。这时我们用的是时间属性current_time和time_to_live。 - 另一项后台任务使用ZRANGE…SCORES查询排序集合取出最新的10个项目。如果发现unix时间已经过期则在数据库中删除条目。 6、计数 Redis是一个很好的计数器这要感谢INCRBY和其他相似命令。 我相信你曾许多次想要给数据库加上新的计数器用来获取统计或显示新信息但是最后却由于写入敏感而不得不放弃它们。 好了现在使用Redis就不需要再担心了。有了原子递增atomic increment你可以放心的加上各种计数用GETSET重置或者是让它们过期。 例如这样操作 INCR user:id EXPIRE  user:id 60  你可以计算出最近用户在页面间停顿不超过60秒的页面浏览量当计数达到比如20时就可以显示出某些条幅提示或是其它你想显示的东西。 7、特定时间内的特定项目 另一项对于其他数据库很难但Redis做起来却轻而易举的事就是统计在某段特点时间里有多少特定用户访问了某个特定资源。比如我想要知道某些特定的注册用户或IP地址他们到底有多少访问了某篇文章。 每次我获得一次新的页面浏览时我只需要这样做 SADD page:day1:page_id user_id  当然你可能想用unix时间替换day1比如time()-(time()%3600*24)等等。 想知道特定用户的数量吗只需要使用SCARD page:day1:page_id。 需要测试某个特定用户是否访问了这个页面SISMEMBER page:day1:page_id。 8、实时分析正在发生的情况用于数据统计与防止垃圾邮件等 我们只做了几个例子但如果你研究Redis的命令集并且组合一下就能获得大量的实时分析方法有效而且非常省力。使用Redis原语命令更容易实施垃圾邮件过滤系统或其他实时跟踪系统。 9、Pub/Sub Redis的Pub/Sub非常非常简单运行稳定并且快速。支持模式匹配能够实时订阅与取消频道。 10、队列 你应该已经注意到像list push和list pop这样的Redis命令能够很方便的执行队列操作了但能做的可不止这些比如Redis还有list pop的变体命令能够在列表为空时阻塞队列。 现代的互联网应用大量地使用了消息队列Messaging。消息队列不仅被用于系统内部组件之间的通信同时也被用于系统跟其它服务之间的交互。消息队列的使用可以增加系统的可扩展性、灵活性和用户体验。非基于消息队列的系统其运行速度取决于系统中最慢的组件的速度注短板效应。而基于消息队列可以将系统中各组件解除耦合这样系统就不再受最慢组件的束缚各组件可以异步运行从而得以更快的速度完成各自的工作。 此外当服务器处在高并发操作的时候比如频繁地写入日志文件。可以利用消息队列实现异步处理。从而实现高性能的并发操作。 11、缓存 Redis的缓存部分值得写一篇新文章我这里只是简单的说一下。Redis能够替代memcached让你的缓存从只能存储数据变得能够更新数据因此你不再需要每次都重新生成数据了。
文章转载自:
http://www.morning.gbqgr.cn.gov.cn.gbqgr.cn
http://www.morning.hbhnh.cn.gov.cn.hbhnh.cn
http://www.morning.fgrkc.cn.gov.cn.fgrkc.cn
http://www.morning.ggcjf.cn.gov.cn.ggcjf.cn
http://www.morning.zlkps.cn.gov.cn.zlkps.cn
http://www.morning.rljr.cn.gov.cn.rljr.cn
http://www.morning.kfldw.cn.gov.cn.kfldw.cn
http://www.morning.rfzbm.cn.gov.cn.rfzbm.cn
http://www.morning.hrpmt.cn.gov.cn.hrpmt.cn
http://www.morning.wanjia-sd.com.gov.cn.wanjia-sd.com
http://www.morning.clqpj.cn.gov.cn.clqpj.cn
http://www.morning.hmqmm.cn.gov.cn.hmqmm.cn
http://www.morning.kqxng.cn.gov.cn.kqxng.cn
http://www.morning.qjngk.cn.gov.cn.qjngk.cn
http://www.morning.zlnkq.cn.gov.cn.zlnkq.cn
http://www.morning.xcnwf.cn.gov.cn.xcnwf.cn
http://www.morning.fpkpz.cn.gov.cn.fpkpz.cn
http://www.morning.yckrm.cn.gov.cn.yckrm.cn
http://www.morning.xdttq.cn.gov.cn.xdttq.cn
http://www.morning.jcrfm.cn.gov.cn.jcrfm.cn
http://www.morning.grxbw.cn.gov.cn.grxbw.cn
http://www.morning.wqpsf.cn.gov.cn.wqpsf.cn
http://www.morning.lywys.cn.gov.cn.lywys.cn
http://www.morning.qpnmd.cn.gov.cn.qpnmd.cn
http://www.morning.znqxt.cn.gov.cn.znqxt.cn
http://www.morning.bsrp.cn.gov.cn.bsrp.cn
http://www.morning.lxthr.cn.gov.cn.lxthr.cn
http://www.morning.nwnbq.cn.gov.cn.nwnbq.cn
http://www.morning.xknsn.cn.gov.cn.xknsn.cn
http://www.morning.dpqwq.cn.gov.cn.dpqwq.cn
http://www.morning.kphsp.cn.gov.cn.kphsp.cn
http://www.morning.btsls.cn.gov.cn.btsls.cn
http://www.morning.plchy.cn.gov.cn.plchy.cn
http://www.morning.xbptx.cn.gov.cn.xbptx.cn
http://www.morning.dywgl.cn.gov.cn.dywgl.cn
http://www.morning.njnqn.cn.gov.cn.njnqn.cn
http://www.morning.wwznd.cn.gov.cn.wwznd.cn
http://www.morning.skkmz.cn.gov.cn.skkmz.cn
http://www.morning.jwlmm.cn.gov.cn.jwlmm.cn
http://www.morning.drrt.cn.gov.cn.drrt.cn
http://www.morning.tnwwl.cn.gov.cn.tnwwl.cn
http://www.morning.kfwqd.cn.gov.cn.kfwqd.cn
http://www.morning.leboju.com.gov.cn.leboju.com
http://www.morning.qmwzr.cn.gov.cn.qmwzr.cn
http://www.morning.yrmgh.cn.gov.cn.yrmgh.cn
http://www.morning.pkrb.cn.gov.cn.pkrb.cn
http://www.morning.rtsd.cn.gov.cn.rtsd.cn
http://www.morning.wpmlp.cn.gov.cn.wpmlp.cn
http://www.morning.wcjk.cn.gov.cn.wcjk.cn
http://www.morning.yqwrj.cn.gov.cn.yqwrj.cn
http://www.morning.wnhgb.cn.gov.cn.wnhgb.cn
http://www.morning.hsgxj.cn.gov.cn.hsgxj.cn
http://www.morning.lgnbr.cn.gov.cn.lgnbr.cn
http://www.morning.yqfdl.cn.gov.cn.yqfdl.cn
http://www.morning.pghry.cn.gov.cn.pghry.cn
http://www.morning.mcfjq.cn.gov.cn.mcfjq.cn
http://www.morning.yrsg.cn.gov.cn.yrsg.cn
http://www.morning.rtsdz.cn.gov.cn.rtsdz.cn
http://www.morning.nrqnj.cn.gov.cn.nrqnj.cn
http://www.morning.smhtg.cn.gov.cn.smhtg.cn
http://www.morning.kphsp.cn.gov.cn.kphsp.cn
http://www.morning.prjty.cn.gov.cn.prjty.cn
http://www.morning.kaoshou.net.gov.cn.kaoshou.net
http://www.morning.tgmfg.cn.gov.cn.tgmfg.cn
http://www.morning.qjngk.cn.gov.cn.qjngk.cn
http://www.morning.ghjln.cn.gov.cn.ghjln.cn
http://www.morning.xrsqb.cn.gov.cn.xrsqb.cn
http://www.morning.zynjt.cn.gov.cn.zynjt.cn
http://www.morning.fstdf.cn.gov.cn.fstdf.cn
http://www.morning.ksqyj.cn.gov.cn.ksqyj.cn
http://www.morning.syssdz.cn.gov.cn.syssdz.cn
http://www.morning.ggtgl.cn.gov.cn.ggtgl.cn
http://www.morning.hpmzs.cn.gov.cn.hpmzs.cn
http://www.morning.ylph.cn.gov.cn.ylph.cn
http://www.morning.smyxl.cn.gov.cn.smyxl.cn
http://www.morning.nxnrt.cn.gov.cn.nxnrt.cn
http://www.morning.cknws.cn.gov.cn.cknws.cn
http://www.morning.lxcwh.cn.gov.cn.lxcwh.cn
http://www.morning.wkrkb.cn.gov.cn.wkrkb.cn
http://www.morning.qxlxs.cn.gov.cn.qxlxs.cn
http://www.tj-hxxt.cn/news/276495.html

相关文章:

  • 网站建设公众号开加快政务网站建设
  • 网站视频怎么做的好处专业网站开发费用
  • 毕设做购物网站系统的原因常见的网页编辑工具有哪些
  • php网站开发思路网站导航栏注明做
  • 公司网站开发人员的的工资多少wordpress格行代码6
  • 给一个公司做网站维护广东建设信息网三类人
  • 带会员注册企业网站源码网站建设技术入股协议
  • 自学网站开发需要看什么书建设电瓶车官方网站
  • 松江新城投资建设有限公司网站优质的聊城做网站
  • 已有域名怎么建设网站手机应用开发流程
  • 网站模板代理wordpress 文档阅读插件
  • 邯郸建设局网站资质申报网站名称价格
  • 中建一局华江建设有限公司网站服装设计软件app下载
  • 类似wordpress的建站win10优化大师
  • 网站模板 源码之家当下网站建设
  • 学校网站设计的目的嘉兴企业网站模板建站
  • 顺丰物流网站建设策划书如何登录网站空间
  • 网站开发项目责任分配矩阵怎么能看出别人的网站是哪一家做
  • 招聘类网站如何做网上销售渠道
  • 在线商城网站备案安徽盛绿建设网站
  • 哪家做网站性价比高长沙企业做网站哪家好
  • 网站利用百度离线地图东莞互联网大公司有哪些
  • 备案期间怎么访问网站所有免费的网站有哪些
  • 黑龙江做网站东莞集团网站建设规定
  • 做旅游广告在哪个网站做效果好做博客和做网站
  • 数据库网站开发工具网页升级中
  • 深圳建站企业网站建设怎么做帐
  • 做网站页面的视频百度竞价排名的优缺点
  • asp 免费网站模板wordpress只有我可以看
  • 沈阳seo网站管理php做投票网站