本站提供最佳益盟强弱区域指标源码服务,欢迎转载和分享。

【qrcoder源码】【get源码库】【承德到邯郸源码】开源网络框架源码_开源网络框架源码是什么

2024-11-15 01:29:19 来源:奶粉溯源码在哪 分类:热点

1.基于bootstrap的开源框架开源框架开源框架(bootstrap开发教程)
2.20个基于DPDK开源项目,建议收藏
3.Retrofit2.9.0源码解析
4.MASA Framework源码解读-01 MASAFacotry工厂设计(一个接口多个实现的网络网络最佳姿势)
5.探索Android开源框架 - 8. Gson使用及源码解析
6.什么是开源代码,组件和框架?

开源网络框架源码_开源网络框架源码是源码源码什么

基于bootstrap的开源框架(bootstrap开发教程)

       前端常用的框架有哪些?

       Foundation框架Foundation框架总体来看要比Bootstrap略显高大上一点,但他们俩的开源框架开源框架设计理念都是非常清楚的,Bootstrap有引导的网络网络意思尝试处理你项目中的一切所需。

       Angular:Angular是源码源码qrcoder源码一款优秀的前端JS框架,Angular有着诸多特性,开源框架开源框架最为核心的网络网络是MVW(Model-View-Whatever)、模块化、源码源码自动化双向数据绑定、开源框架开源框架语义化标签、网络网络依赖注入等等。源码源码

       现在比较常用的开源框架开源框架主流框架有Vue、React、网络网络Angular。源码源码

html5有没有类似jqueryui的框架?

       4)UIKitUIKit是一款轻量级,模块化的前端框架,可快速构建强大的web前端界面。UIKit提供了全面的HTML、CSS和JS组件,使用和定制都很方便。

       相比国外框架,AmazeUI关注中文排版,根据用户代理调整字体,实现更好的中文排版效果;兼顾国内主流浏览器及App内置浏览器兼容支持。

       ③:MobileAngularUIMobileAngularUI是使用bootstrap3和AngularJS的响应式移动开发HTML5框架。

       SiimplerSiimpler是个简单的HTML开发框架,他可以通过选择你自己喜欢的部分,来帮助你迅速又简单地创建HTML5开发结构。网络设计者们也可以通过使用Siimpler框架类的文件和文件夹来无缝的开始一个Web项目。

       zepto.js的语法借鉴并且兼容jQuery。2BakerBaker是用来在iPad或者iPhone平台上发布交互式的电子书或者电子杂志的HTML5电子书框架。

       CSS是最著名的CSS框架之一,是由Yahoo开发小组开发而成。YUIGridsCSS为开发者提供了预先设置的四种不同页面宽度,六种不同的模板。framework(CreativeCommons)对HTML5支持非常好,简单易用。

       Web前端开发必备的开源框架有哪些

       BootstrapBootstrap无疑是最流行的CSS框架,它是最早的Web前端框架,由Twitter开发。Bootstrap还提供了许多示例来帮助你入门。使用Bootstrap,你可以将不同的组件和布局组合在一起,从而创建有趣的页面设计。

       Bootstrap框架Bootstrap是当今可用的前端框架中最受欢迎的,它具有直观,时尚的界面而且功能强大可以更快更轻松地实现web开发而且不需要捆绑。

       Web前端三大框架:Vue.js、React.js、Angular.js。Vue.jsVuejs的受欢迎度目前是最高的,而开发vuejs的就是一个中国人名字叫尤雨溪。Vue可以通过简洁的API提供高效的数据绑定和灵活的组件系统。

       AngularJS是一个客户端的JavaScriptMVC开源框架,特别为使用MVC架构模式的单页面web应用而设计,可用于开发动态Web应用程序。get源码库它不是一个完整的堆栈,而是一个处理web页面的前端框架。

       web前端开源框架有很多,给你举例几个:Bootstrap是最流行的前端开发框架,可以让不是前端工程师也能开发出优美的页面,更加快捷、方便的开发web页面和移动端应用。也能开发响应式web页面,上手也非常快。

       QUICKUIQUICKUI是一套完整的企业级web前端开发解决方案,由基础框架、UI组件库、皮肤包、示例工程和文档等组成。使用QUICKUI开发者可以极大地减少工作量,提高开发效率,快速构建功能强大、美观、兼容的web应用系统。

Bootstrap框架是什么,如何用Bootstrap框架实现表单验证?

       1、如果你想详细的了解Bootstrap的话,建议你可以去慕课网上看一下关于Bootstrap的教学,我之前在那上面看过,讲的特别详细。

       2、Bootstrap,来自Twitter,是目前最受欢迎的前端框架。Bootstrap是基于HTML、CSS、JAVASCRIPT的,它简洁灵活,使得Web开发更加快捷。它由Twitter的设计师MarkOtto和JacobThornton合作开发,是一个CSS/HTML框架。

       3、Bootstrap是一个用于快速开发Web应用程序和网站的前端框架。Bootstrap是基于HTML、CSS、JAVASCRIPT的。Bootstrap是由Twitter的MarkOtto和JacobThornton开发的。

       4、BootstrapFormGenerator介绍Web窗体是任何一个网站和一个干净的,友好的交互的核心方法,吸引力的形式是最小化错误或失败的意见至关重要。

       5、Bootstrap是当前流行的前端框架。下面,我们来看看Bootstrap的基本使用吧。

北京电脑培训分享常用的UI框架有哪些

       Bootstrap是由Twitter推出的一个用于前端开发的开源工具包,它可谓是目前流行的HTML5框架,用户基数大,在国内的知名度也高。

       FrozenUI是一个开源的简单易用,轻量快捷的移动端UI框架。基于手Q样式规范,承德到邯郸源码选取最常用的组件,做成手Q公用离线包减少请求,升级方式友好,文档完善,目前全面应用在腾讯手Q增值业务中。

       “采用主流的关系数据数据库管理(RDBMS)、Hibernate/JPA+SpringBoot、RESTAPI,并且使用我喜欢的或者新的JS框架来实现UI。”“嗯~,还需配置SpringSecurity,也许还需要写一部分代码来实现行级别的数据保护功能。

       适用于Vue.js项目的轻量级UI框架,使用流行的基于flexbox的CSS库Bulma构建。它具有典型的WebAPP所需的全部组件,包括像模态框、吐司和通知这样的动态元素,使开发者可以快速添加任何用户界面到现有的Vue.js项目。

       Photoshop任何一名设计师都必须掌握的一款软件,其主要功能涉及图像、图形、文字等各个方面,无论是处理加工,还是凭空创作作品,PS强大的功能都能一一实践,掌握PS是成为一名设计人员的前提。

       UI设计师必会工具一:AdobePsPs相信很多同学都了解,用于处理,进行编修与绘图,进行高效全面的编辑,不单单是,还有图像,文字等相关编辑处理,那么在UI设计中ps可想图标的回执与界面的设计。

Bootstrap简介

       Bootstr是一个用于快速开发web应用程序和网站的前端框架,Bootstrap是基于HTML,Css,JavaScript的。Bootstrap历史:Bootstrap是由Twitt的MarkOtto和JecobThomton开发的。

       Html最基本,先学习网页的布局,然后CSS用于美化HTML页面,并为页面提供布局和格式,最后,学习JavaScript。

       目前比较流行的前端三大框架是Angular、React、Vue,三者各有所长。AngularAngular是一个JavaScript框架,最为核心的是:MVC(Model–view–controller)、模块化、自动化双向数据绑定、语义化标签、依赖注入等等。

       ServerBootstrap是cyc股票源码一个用来创建服务端Channel的工具类,创建出来的Channel用来接收进来的请求;只用来做面向连接的传输,像TCP/IP。

       拔靴法又称Bootstrapping所谓的拔靴法就是利用有限的样本资料经由多次重复抽样,重新建立起足以代表母体样本分布之新样本。

个基于DPDK开源项目,建议收藏

       ANS - DPDK 原生加速网络堆栈

       ANS是DPDK本地TCP/IP堆栈,参考FreeBSD实现,提供与Intel DPDK一起使用的用户空间TCP/IP堆栈。支持功能包括TCP部署,旨在加速网络应用。

       BESS - Berkeley可扩展软件交换机

       BESS是一个高性能软件交换机,专为支持网络功能虚拟化设计。它完全在用户空间运行,使用DPDK直接绑定到网络接口,避免内核网络堆栈的开销,实现超快性能。

       Butterfly - 连接虚拟机

       Butterfly连接虚拟机,并控制其流量,通过特定的VXLAN网络封装VM数据包。使用DPDK端口连接到物理网络,提供VM之间低延迟通信,集成防火墙过滤流量。

       DPVS - 第4层负载平衡器

       DPVS是一个高性能Layer-4负载均衡器,源自Linux Virtual Server LVS及其修改版本。由爱奇艺QLB团队开发,广泛用于IDC的L4负载均衡器和SNAT集群。

       FastClick - 高速数据平面

       FastClick是Click路由器的更快版本,具有批量处理、高级多处理和改进的DPDK支持。它在Metron分支中提供了Metron特性。

       F-Stack - 基于DPDK的通用网络框架

       F-Stack是基于DPDK的高性能网络框架,用于应对DDoS攻击,优化DNS服务器性能,集成Nginx、Redis等应用,提供标准化接口。

       Lagopus - 软件 OpenFlow 1.3 交换机

       高性能软件OpenFlow 1.3交换机,提供交换和路由功能,适用于复杂网络环境。

       MoonGen - 数据包生成器

       MoonGen是一个高速数据包生成器,使用DPDK和Lua脚本,实现数据包生成、检查和接收功能,用于网络测试。

       mTCP - 用户级TCP堆栈

       mTCP是多核系统上的高性能用户级TCP堆栈,解决内核效率低下的问题,提供全面的TCP堆栈实现。

       OPNFV - NFV开放平台

       OPNFV是一个促进NFVI组件集成、持续集成和测试的项目和社区,加速企业网络转型。

       OpenDataPlane - 开放数据平面

       ODP提供高性能数据平面应用编程环境,支持移植和跨平台应用,提供公共层和实现层的分层结构。

       Open vSwitch - 多层开放虚拟交换机

       Open vSwitch是一种多层虚拟交换机,支持标准管理接口,可部署在多个物理服务器上,伊朗离中国源码与多种虚拟化平台兼容。

       Packet-journey - 基于DPDK的Linux路由器

       Pktgen-dpdk - 数据包生成器

       PcapPlusPlus - C++数据包解析框架

       Ruru - 实时TCP延迟监控

       Seastar - 开源C++框架

       SPDK - 存储性能开发套件

       NFF-Go - GO的网络功能框架

       DPDK工程师手册

       Golang资料补给包

       dpdk视频教程推荐

Retrofit2.9.0源码解析

       前言

       之前我们探讨了OkHttp的基本原理,这款以高效的线程池设计、任务分配与转化以及基于责任链模式的五大全拦截器而深受开发者喜爱的库,却在引入时需要进行封装,以适应主、子线程的切换与返回值的转换。面对团队成员的偏好,选择Retrofit作为解决方案,无疑提升了团队协作的友好性。接下来,我们将深度剖析这个优秀的开源框架是如何促进团队合作的。

       使用

       以下代码摘自Retrofit的官方示例,除了线程管理部分,其余部分基本相同,可以直接在Android Studio项目中运行。Retrofit的使用方式相对直观,但在此不再赘述,直接进入源码解析。

       Retrofit的封装模式在于为OkHttp提供了一层更友好的调用方式,实质上仍依赖OkHttp执行网络请求。正如一把剑,除了锋利的刃之外,剑柄、剑鞘和符咒共同决定了它的使用体验。Retrofit与OkHttp的关系图展示了它们之间的爱恨纠葛。

       Retrofit.build()方法详解

       在Retrofit构建实例的过程中,以下关键步骤被实现:

       判断并设置baseUrl。

       赋值callFactory,即OkHttp客户端。

       若未指定callFactory,则默认使用OkHttpClient。

       设置callbackExecutor,用于线程切换。

       赋值callAdapterFactories,用于处理网络请求的转换。

       其中,callbackExecutor的默认值是Android平台的MainThreadExecutor,确保了执行方法后线程切换至主线程。callAdapterFactories是一个工厂模式的列表,用于创建不同的callAdapter,以处理网络请求的关键步骤(enqueue、execute)。

       在Android平台下,defaultCallbackExecutor被构造为MainThreadExecutor的实例,通过Handler与Looper的关联确保了线程切换。

       最后,我们了解了converterFactories的作用,这是负责服务端返回值转换的关键组件。

       Retrofit.create()方法解析

       在调用Retrofit.create()方法时,动态代理(Proxy.newProxyInstance)发挥关键作用。这个过程类比于N女士委托X律师处理问题,动态代理将实体方法的调用转化为OkHttp请求的执行。

       动态代理通过反射机制,实现所有请求的统一处理,简化了接口的使用,同时增强了功能。尽管它可能导致性能损耗,但Retrofit的高效与强大使其成为众多开发者的首选。

       代理执行的关键步骤包括:

       明确动态代理概念。

       理解invoke()方法的执行时机。

       分析github(代理).contributors方法的执行流程。

       通过动态代理,Retrofit实现了对网络请求的封装,简化了开发过程,并提供了灵活的适配性。最终,请求通过OkHttp客户端执行,返回值通过适配器转换为预期格式。

       生成Call与执行网络请求

       在生成Call后,执行network request的过程由OkHttp客户端负责。在Retrofit的实现中,Call的创建与执行紧密相连,最终通过OkHttp的Call.execute()方法完成网络请求的执行。

       结语

       撰写源码解析的过程不仅加深了对Retrofit的理解,也揭示了其作为团队协作工具的潜力。通过阅读优秀源码,开发者可以不断提升自我,学习到更深层次的知识与技能。Retrofit以其简洁、高效的设计,为开发者提供了强大的网络请求支持,成为了Android开发中的重要组件。源码的探索之旅,既是一次技术的修炼,也是对开源精神的致敬。

MASA Framework源码解读- MASAFacotry工厂设计(一个接口多个实现的最佳姿势)

       闲来无事,偶然接触到了MASA Framework,此框架是MASA Stack系列中专门用于构建web系统的开源框架。通过在几个小型项目中的应用,我发现它确实拥有诸多优点。为深入理解其内部结构和设计思路,我决定详细阅读MASA Framework的源代码,并记录整个阅读过程。如有任何错误或疑问,还请各位指正。

       MASA Framework是一个功能全面且易于扩展的框架,主要由三个部分组成:BuildingBlocks(抽象层)、Contrib(BuildingBlocks的实现)以及Utils(工具库)。官方将BuildingBlocks称为构建块,实际上,这个层将日常开发中频繁使用到的功能抽象出来,如多租户、多语言、仓储、配置中心等,形成易于替换的接口,大大提高了框架的灵活性和可扩展性。

       MASA Framework包含个主要模块,几乎涵盖了日常开发所需的所有组件,从基础服务到高级功能应有尽有。这些模块协同工作,共同构建了一个强大且功能丰富的框架。

       让我们从MASA Framework的核心设计——构建工厂(MasaFactory)开始探讨。构建工厂在框架中起着至关重要的作用,它负责通过配置选项来创建不同实现的实例。在实际项目中,构建工厂设计用于解决接口具有多种实现时的依赖注入问题,比如在面对多实现的场景时,如何优雅地注入并使用特定的实现类。以下是构建工厂解决多实现问题的具体步骤:

       首先,通过下载MASA Framework的源码(地址:github.com/masastack/MA...)进行研究。我们首先关注的是Masa.BuildingBlocks.Data.Contracts类库的设计。MASA Framework的构建工厂通过选项配置,允许为接口的每个实现类指定一个简短的名称。根据传入的不同名称,构建工厂类的Create方法能够创建对应的实例。

       通过使用MASA Framework的构建工厂,我们能够轻松地创建与特定名称对应的面单消息转换类,而无需依赖于IEnumerable集合进行复杂的筛选。这种方法在实现多实现场景时明显更加直观且高效。

       以物流面单申请为例,不同销售订单对应不同的商家店铺,而每个商家店铺可能选择不同的物流商。利用MASA Framework构建工厂实现不同物流商的面单申请,不仅简化了开发过程,而且在使用层面保持了无感的效果。

       总结而言,MASA Framework提供了强大的构建工厂设计,以解决多实现接口的依赖注入问题,简化了开发流程。这个设计不仅限于构建工厂模块,其他模块同样采用了类似的设计理念,允许用户根据需要替换官方实现或结合自定义实现,以适应不同场景和需求。

       MASA Framework的其他模块同样采用了构建工厂的设计,用户既可以替换官方实现,也可以在程序内同时共存官方实现和自定义实现。例如,Service Caller模块不仅支持使用dapr的服务调用,还提供了HTTP服务调用等选项。

探索Android开源框架 - 8. Gson使用及源码解析

       深入解析Android开源框架中的Gson使用及其源码解析,Gson作为Java语言的高效JSON转换库,以其简洁的API和高性能的特点,成为Android开发中进行数据序列化和反序列化的首选工具。本文将详细介绍Gson的使用方法,包括基本的解析与生成、属性重命名、POJO与JSON的字段映射规则、泛型的封装、序列化与反序列化过程,以及如何进行字段过滤与自定义序列化器和反序列化器的实现。

       1. **基本的解析与生成

**

        使用Gson进行JSON字符串解析时,可以通过Gson对象的fromJson方法将JSON字符串转换为Java对象,反之,使用toJson方法将Java对象转换为JSON字符串。

       2. **属性重命名

**

        通过使用@SerializedName注解,可以方便地在POJO类中重命名JSON字段,以匹配服务端返回的数据结构,从而避免硬编码的字符串匹配。

       3. **POJO与JSON的字段映射规则

**

        Gson通过构建一个映射规则来匹配JSON字段到POJO类的属性,确保数据的正确解析与生成。这主要通过类型适配器(TypeAdapter)来实现,使得Gson能够理解如何处理复杂数据类型,如日期、集合等。

       4. **泛型的封装

**

        在使用Gson进行序列化和反序列化时,可以通过泛型来保证类型安全,确保不会出现类型转换错误。GsonBuilder提供了一系列方法来实现泛型的封装,使得API调用更为清晰和明确。

       5. **Gson的序列化、反序列化

**

        通过Gson的API,可以轻松实现Java对象到JSON字符串的序列化,以及从JSON字符串反序列化到Java对象的过程。这使得数据在不同系统间传输变得简单高效。

       6. **字段过滤

**

        提供了多种方法进行字段过滤,如使用@Expose注解、基于版本的过滤、访问修饰符、以及基于策略的自定义过滤规则,以满足不同的数据处理需求。

       7. **TypeAdapter、JsonSerializer与JsonDeserializer

**

        实战中,可能需要处理一些特殊的数据类型或复杂逻辑,这时可以通过实现JsonSerializer或JsonDeserializer来自定义序列化和反序列化过程。TypeAdapter则可以用于处理复杂类型的序列化。

       8. **实战TypeAdapterFactory

**

        在某些场景下,可以通过实现TypeAdapterFactory来创建自定义的TypeAdapter,从而实现更为灵活的数据处理逻辑。

       9. **@JsonAdapter注解

**

        用于指定自定义的序列化器或反序列化器,简化了实现自定义序列化逻辑的步骤,使得代码更为简洁和易读。

       . **源码解析

**

        通过深入源码分析,可以更好地理解Gson内部的实现机制,如fromJson方法如何获取适配器、getAdapter方法如何选择适配器、Gson的构造方法如何初始化适配器列表,以及如何通过反射机制创建绑定字段等关键逻辑。这不仅有助于解决实际开发中的问题,还能加深对Gson工作的理解,为后续的优化和定制提供基础。

什么是开源代码,组件和框架?

       1. 开源代码与组件的概念

       开源代码指在开放的环境下允许用户查看、使用、修改和分发的代码。组件是针对某特定领域、场景或功能需求而提供的可重用软件构造块。

       2. 开源代码与组件的优点

       开源代码和组件具有以下优点:

       2.1 可定制化

       开源代码允许用户可以自由地查看和修改代码,满足特定需求。而组件则是可以灵活地组合使用,可以随意搭建自己需要的功能。

       2.2 节省时间和成本

       使用开源代码和组件可以使开发人员减少重复开发,从而减少时间和成本。

       2.3 提高代码质量

       许多开源代码和组件都是经过广泛测试和使用的,可以提高代码稳定性和安全性,同时避免了低效重复劳动。

       3. 开源代码与组件的使用注意事项

       在使用开源代码和组件时,需要考虑以下几个方面:

       3.1 版权问题

       使用开源代码和组件时,需要了解其所使用的许可证,遵守相应的规定,避免发生版权纠纷。

       3.2 安全性

       需要确保所使用的开源代码和组件的安全性,以避免潜在的漏洞和风险。

       3.3 兼容性

       需要考虑开源代码和组件之间的兼容性,以避免出现不兼容情况。

       4. 常用的开源代码与组件

       以下是常用的开源代码和组件:

       4.1 jQuery

       基于JavaScript的跨平台JavaScript库,使用方便,可用于Web开发中的动态效果实现。

       4.2 React

       基于JavaScript的前端框架,可用于构建大型Web应用程序。

       4.3 Node.js

       基于Chrome V8引擎的JavaScript运行环境,可用于构建高可伸缩性的网络应用程序。

       4.4 Bootstrap

       基于HTML、CSS和JS的响应式设计框架,可用于快速构建移动设备和桌面设备上的Web应用程序界面。

       5. 如何选择开源代码与组件

       在选择开源代码和组件时,需要考虑以下几个方面:

       5.1 功能需求

       需要根据实际需求和功能要求,选择适合的开源代码和组件。

       5.2 开源社区支持

       需要选择有活跃的开源社区支持的开源代码和组件。

       5.3 代码质量

       需要选择具有高质量代码和可靠性的开源代码和组件。

       6. 如何贡献开源代码与组件

       任何人都可以加入开源社区,向开源社区提交代码和组件,并贡献自己的开发经验。以下是几个常用的贡献方式:

       6.1 提交代码和组件

       开发人员可以将自己的代码和组件提交到开源社区,让更多人分享和使用。

       6.2 参与社区讨论

       参与开源社区的讨论,与其他开发人员交流和分享开发经验。

       6.3 写教程和文档

       编写教程和文档,帮助更多人理解和使用开源代码和组件。

       7. 结论

       总之,开源代码和组件是现代软件开发中不可或缺的元素。选择合适的开源代码和组件有助于节省时间和成本,提高代码质量,同时使用开源社区的贡献方式也能够促进开发者之间的互动和交流。

开源框架TLog核心原理架构解析

       开源框架TLog的核心原理与架构解析

       TLog是一款轻量级的日志追踪框架,具备个主要模块,旨在优化日志追踪体验与兼容多种环境。

       核心模块“tlog-core”主要负责适配主流日志框架(log4j、log4j2、logback)与日志增强功能。针对微服务架构,TLog提供了一系列模块,如tlog-dubbo、tlog-dubbox、tlog-feign、tlog-webroot、tlog-gateway等,分别对接不同的RPC框架与协议,确保在不同场景下的兼容性。

       考虑到Spring生态的广泛使用,TLog提供了针对Spring的tlog-all与tlog-all-springboot-starter模块,以适应传统与SpringBoot环境,并支持自动装配功能。同时,tlog-agent模块支持无依赖使用方式,便于项目的集成与部署。

       为了提升代码复用与功能性,TLog将一些共用的VO、枚举、util类抽离至tlog-common模块,实现代码的模块化与规范化。

       模块之间的依赖关系通过图表直观展现,便于开发者理解与应用。

       在启动装载阶段,TLog的%工作在启动时完成,主要通过自动装配功能实现。SpringBoot环境下,TLog通过配置类自动装配,使得开发者可以更加便捷地集成TLog功能。对于Spring环境,TLog通过相应的配置类支持自动装配,实现功能的统一与兼容。

       对于日志框架的支持,TLog主要集中在tlog-core模块,支持三种接入方式:JavaAgent、字节码增强与适配模式。其中,JavaAgent方式与字节码方式不支持异步日志,而适配模式则能实现异步日志的支持。日志框架中的MDC支持也被TLog覆盖,通过检测日志配置文件中的MDC使用,并在TLog线程上下文中进行设置。

       TLog的RPC支持主要通过各个RPC框架的拦截器与过滤器实现,覆盖了Dubbo、Dubbox与Feign等框架。在RPC场景下,TLog通过特定的过滤器与拦截器处理日志标签参数,确保日志信息的完整与准确。

       TLog还具备自定义标签功能,通过AspectLogAop类解析并整合用户自定义标签到日志中。此外,TLog还支持对MQ中间件、自动打印参数与调用时间、异步线程与线程池等功能,提供了一站式日志解决方案。

       通过结合使用文档与源码阅读,开发者可以深入了解TLog的各个功能与实现细节,为项目的日志追踪与管理提供有力支持。

【本文网址:http://5o.net.cn/news/4a228597710.html 欢迎转载】

copyright © 2016 powered by 皮皮网   sitemap