宿迁腾云网络网站建设公司

腾云网络 八年经验专注网站建设
  • 首页
  • 服务项目
    • 网站建设
    • 微信小程序
    • APP开发
    • SEO优化
  • 建站费用
  • 成功案例
    • 网站建设案例
    • 小程序案例
    • APP开发案例
    • SEO优化案例
  • 行业动态
    • 网站建设
    • SEO优化
    • 技术日志
  • 联系我们
    • 关于我们
首页 > 行业动态 > 技术日志 > 基于php的个人博客系统的实现什么是函数?刚刚考完数学没多久的我,脑力里立马想到的是自变量基于html5和css3做的个人博客

基于php的个人博客系统的实现什么是函数?刚刚考完数学没多久的我,脑力里立马想到的是自变量基于html5和css3做的个人博客

2022-12-31

什么是函数? 数学考完不久,我立马想到了自变量、因变量、函数值,即y=f(x)。 当然,在计算机中,函数往往是指定义好的代码程序。 我们可以通过传递参数来调用这个定义好的函数来实现我们需要的功能。 那么,今天的函数计算FC是什么?

在当前云计算时代,容器化技术和各种工具的发展,对开发运维进行了全新的统筹。 开发者完成代码编写后,可以直接提交到各种流水线,无需考虑环境。 可以完成微服务的测试、开发、部署、项目搭建,环境的打包可以由容器来完成。 但是很多时候我们还是需要把精力放在业务上线的集群上。 它是私有云环境还是公共云? 是裸机服务器还是云实例ECS? 是自购还是租赁?

当然,服务器\集群的落地和运维都需要耗费大量的资源和精力。 这是一条捷径,但不是唯一的出路。 因此,函数计算FC的出现带来了架构,让开发者在开发部署时不再有复杂部署服务的感觉,对服务端没有任何影响基于php的个人博客系统的实现,让开发者真正专注于自己的代码。 优越的。 阿里云函数式极简编程,可以专注于业务创新,无采购和部署成本,提供完整的监控、告警等可观察性能力。 函数计算是一种事件驱动的全托管计算服务。 服务器的运维管理真的不用考虑。 您只需要上传开发的代码。 函数计算将通过角色策略规划计算资源,灵活执行函数,最终实现高效。 执行部署。 优雅!

会有那些适用场景? 是人吗? 还是生产?所以这次我会部署两个不同方向的应用来评估

1.通知系统和触发器和聊天机器人。 推送功能涉及到很多系统,如邮件、短信、. 当然,能力不仅仅是信息通知,这里所说的通知功能必须需要基础设施,即服务器来支持运行。 如果直接操作这些功能,我们就不需要支付服务器的运维费用,节省了很多工作量。 收费。 同样,我们可以使用事件驱动模型来实现定时自动触发任务,自动签到,自动发送。

第二,其次,当然是Web类的应用。 基于各种web框架的应用部署,基于Java、PHP等语言搭建站点 ,很容易在线实现这样的博客应用。 配合其他云产品、OSS、RDS等,可以实现高可用、高性能的Web应用,比如Kod官方的云盘系统。

1.用于实现B站日常登录签到

作为b站的老用户,b站的水平无疑是一张妥妥的“名片”。 当然,我已经是六级boss的一员了。 b站升级所需的经验值是关键。 登录、投币、观看都会积累经验。 为了快速升级,这次我会使用阿里云实现b站的日常登录体验Get,看视频体验Get,看直播银瓜子Get(卖淫的直播礼物道具),配合钉钉机器人实现消息推送。

1.创建服务和功能

进入函数计算FC控制台,选择【服务和函数】,点击【创建服务】

在【创建服务】页面,输入服务名称网站优化,选择开启日志功能。 日志可以帮助我们更好的排查错误

这里当然要标注服务的功能,即实现的日常登录签到。

进入【 】页面,选择【Use to from 】

配置函数名,运行环境选择为,选择从文件夹上传代码。

注意这里如果有依赖包需要提前下载到代码包中。 这里需要用到包,需要执行 pip -t 。 本地。不过也可以稍后在控制台执行下载命令

这里函数实现的脚本是定时触发类型,所以我们选择请求处理类型为【 】

下面配置触发器,选择定时触发器,输入名称,选择【指定时间】。 这里我选择每天23:00运行脚本

脚本内容

# -*- coding: utf8 -*-
import requests 
import json
import time
import re
import sys
import codecs
from bs4 import BeautifulSoup
from json.decoder import JSONDecodeError
# B站登陆Cookie
cookie = ""
# Webhook地址
webhook = "https://oapi.dingtalk.com/robot/send?access_token=xxxx"
# 自动观看的BV号,杰伦新专-最伟大的作品
bid = 'BV1ua411p7iA' 
uid=re.match('(?<=DedeUserID=).*?(?=;)',cookie)
sid=re.match('(?<=sid=).*?(?=;)',cookie)
csrf=re.match('(?<=bili_jct=).*',cookie)
# 部分编码问题
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
# bv转为av
def bv_to_av(bv):
    headers={   
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
    }
    r = requests.get('https://api.bilibili.com/x/web-interface/view', {'bvid': bv}, headers=headers)
    response = decode_json(r)
    try:
        return str(response['data']['aid'])
    except (KeyError, TypeError):
        return '883409884'
# json解析
def decode_json(r):
    try:
        response = r.json()
    except JSONDecodeError:
        return -1
    else:
        return response
# 自定义钉钉机器人推送
def pushinfo(info,specific):
# 定义推送内容,格式参考https://open.dingtalk.com/document/group/message-types-and-data-format
# 注意机器人的关键词
    data = {
     "msgtype": "text",
      "text": {
      "title":"Taoreset",
          "content": "【Taoreset-Serverless推送】\n"+info+specific
     }
 }
    headers = {'content-type': 'application/json'} # 请求头
    r = requests.post(webhook, headers=headers, data=json.dumps(data))
    r.encoding = 'utf-8'
    print (r.text)
# 阿b登录,得登陆经验
def login():
    headers={   
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
    'Cookie':cookie
    }
    response = requests.session().get('http://api.bilibili.com/x/space/myinfo',headers=headers)
    rejson = json.loads(response.text)
    code = rejson['code']
    msg = rejson['message']
    if code == 0:
        print('登录成功')
        return True
    else:
        print('登录失败:'+msg)
        return False
# 获取用户信息
def get_user_info():
    headers = {
        'Cookie':cookie
    }
    response = requests.session().get('http://api.bilibili.com/x/space/myinfo?jsonp=jsonp',headers=headers)
    rejson = json.loads(response.text)
    code = rejson['code']
    msg = rejson['message']
    if code == 0:
        userInfo=['账号:'+str(rejson['data']['silence']),
        '硬币:'+str(rejson['data']['coins']),
        '经验:'+str(rejson['data']['level_exp']['current_exp'])+"/"+str(rejson['data']['level_exp']['next_exp']),
        '等级:'+str(rejson['data']['level']),
        '昵称:'+str(rejson['data']['name'])
        ]
        print(userInfo[0]) 
        print (userInfo[1])
        print(userInfo[2])
        print(userInfo[3])
        print(userInfo[4])
        return userInfo
    else:
        print("用户信息获取失败:"+msg)
        return "用户信息获取失败:"+msg
# 直播签到,赚银瓜子儿
def do_sign():
    headers = {
        'Cookie':cookie
    }
    response = requests.session().get('https://api.live.bilibili.com/sign/doSign',headers=headers)
    rejson = json.loads(response.text)
    code = rejson['code']
    msg = rejson['message']
    if code == 0:
        print('直播签到成功!') 
        return True
    else:
        print("直播签到失败:"+msg)
        return False
# 看BV号视频,得观看经验
def watch():
        aid=bv_to_av(bid)
        headers = {
            'Cookie':cookie
        }
        response = requests.session().get('http://api.bilibili.com/x/web-interface/view?aid='+str(aid),headers=headers)
        rejson = json.loads(response.text)
        code = rejson['code']
        #print(response.text)
        if code == 0:
            cid = rejson['data']['cid']
            duration = rejson['data']['duration']
        else:
            print('视频信息解析失败')
            return False
        payload = {
            'aid': aid,
            'cid': cid,
            'jsonp': "jsonp",
            'mid': uid,
            'csrf': csrf,
            'played_time': 0,
            'pause': False,
            'realtime': duration,
            'dt': 7,
            'play_type': 1,
            'start_ts': int(time.time()),
        }
        response = requests.session().post('http://api.bilibili.com/x/report/web/heartbeat',data=payload,headers=headers)
        rejson = json.loads(response.text)
        code = rejson['code']
        if code == 0:
            time.sleep(5)
            payload['played_time'] = duration - 1
            payload['play_type'] = 0
            payload['start_ts'] = int(time.time())
            response = requests.session().post('http://api.bilibili.com/x/report/web/heartbeat',data=payload,headers=headers)
            rejson = json.loads(response.text)
            code = rejson['code']
            if code == 0:
                print(f"av{aid}观看成功")
                return True
        print(f"av{aid}观看失败 {response}")
        return False
def main(*args):
    if login():
        ui = get_user_info()
        desp='直播签到:'+str(do_sign())+'\n\n'+'观看视频:'+str(watch())+'\n\n'+ui[0]+'\n\n'+ui[1]+'\n\n'+ui[2]+'\n\n'+ui[3]+'\n\n'+ui[4]+'\n\n'
        pushinfo('哔哩哔哩签到成功',desp)
    else:
        pushinfo('哔哩哔哩签到失败','')
    
if __name__ == '__main__':
    main()

2.修改功能配置

创建函数后,会进入函数管理界面。 这里的功能代码展示的是我们上传的代码文件,所有代码执行的本地路径都在/code目录下。

如果有依赖模块提示,也可以在下面的控制台终端输入命令完成模块的安装和下载。 工作目录下所有代码修改完成后,需要点击 Code进行部署上传。

点-t.bs4

对于其余的,您需要修改功能的配置。 点击【功能配置】,找到【环境信息】进行编辑,修改【 】,修改功能入口。 我这里的脚本文件名是.py,代码中的main函数是main,所以函数入口是

3.完成功能功能测试

选择【测试功能】立即触发功能,点击测试功能进行测试

测试完成后会在下方显示日志输出内容,方便查看结果和排查问题

完成效果,触发23点定时准时完成签到,钉钉机器人推送消息

嘿嘿,一起跑剧本,早日迎来B站六级会员! ! !

脚本参考,由

2、农产品电商网站云化改造

这里我以隔壁软件专业(本人是网络技术专业)的一个大作业项目作为部署案例。 项目非常简单,功能单一,但也是一个非常经典的前后端分离项目。 由于本人不太擅长开发,所以项目具体技术就不难看了。 据说有版权,就不放源码了hhhh

改造前相信是很多中小腾云网络业务的经典架构,将业务涉及的所有服务中间件运行在一台服务器/虚拟机上,虽然现在可能完全是实验室环境,但是在事实上,还有很多项目是这样做的。 劣势不用多说,部署维护困难,资源难以扩展,后续改造复杂,没有应用高可用技术性能差等等。

云上农产品电商平台,项目比较简单,同区域规划。 主要是前端的HTML页面和后端的Jar包分别由两个独立的函数来完成运行计算。 其余的配套服务都是通过相应的云产品在云端实现的。 由于我已经在自己的ECS上运行服务,不再需要单独购买云数据库版本。 当然还是推荐使用阿里云的云数据库产品。

1.服务创建

进入函数计算控制台,选择【服务与函数】,点击【创建服务】

输入要创建的服务的名称和描述,开启日志功能,点击确定完成服务的创建

服务创建完成后,进入【服务详情】,找到【网络配置】,点击【编辑】

选择 to VPC,选择 ,选择VPC, , ,这里需要和其他支持的云产品(数据库等)保持在同一个VPC下。 因此,需要在云端规划网络,查看该地区的产品是否有货。

2.前端页面功能创建

服务创建完成后seo优化,点击【创建函数】进入函数创建页面

选择【Use 】,输入函数名,运行环境选择【】,上传前端html代码和配置文件,监听端口选择80,即原中间件的服务端口.

创建函数后,进入函数详情界面,可以在函数代码中编辑修改代码。 代码更改后,需要点击 Code重新上传。 上面说了服务配置需要一起上传,还有一个/etc//mime. 需要将文件复制到当前目录,以避免 mime 文件类型映射错误。

把关键的配置放在这里,根据自己的业务情况修改,注意配置中的端口监听需要和函数创建监听端口保持一致,网页代码的路径设置为/code

http {
    include mime.types;  #注意引入此文件
    keepalive_timeout  900;
    server {
        listen       80;        
        server_name  localhost;
        location / {
            root   /code;
            index  index.html index.htm;
            proxy_set_header    Host $host; 
            proxy_set_header    X-Real-IP $remote_addr;  
            proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
       }
        location /users {
            proxy_pass http://serverless.后端函数访问地址.run;      
#Nginx反代传给后端的函数,地址在后续后端函数创建完可以拷贝
        }
        location /items {
            proxy_pass http://serverless.后端函数访问地址.run; 
#Nginx反代传给后端的函数,地址在后续后端函数创建完可以拷贝
        }

可以在通话记录中查询相关日志

当函数被触发运行时,实例会根据访问请求自动启动。 在这里,您可以手动登录实例查看中间件服务和运行环境的日志,并进行故障排查。

3.后台功能创建

回到函数服务界面,再次点击【创建函数】,进入函数创建页面

选择【使用自定义运行时平滑迁移】,输入函数名,运行环境选择【Java】,上传打包好的Jar包文件。

根据具体业务修改【启动命令】和【监听端口】。 这里我需要监听的业务端口为8080,运行时需要传入数据库连接的参数。 这里配置的数据库源用户名和密码连接地址会在后续的云数据库RDS中设置。

后台功能创建完成后,进入功能详情界面,其余功能与上述前端功能相同,不再赘述

点击【触发器管理】,其中HTTP触发器提供公网和内网访问地址,我们复制内网地址基于php的个人博客系统的实现,在前端中间件反向生成配置中填写这个域名,实现前端访问和后端触发-结束功能

4.云数据库RDS创建及迁移导入

原有的架构并没有做到数据库服务的独立性和高可用。 在本次云部署中,我们将使用阿里云公测中的云数据库版本。 RDS提供了CPU和内存的实时弹性能力,具有资源占用低、易用、灵活、价格低廉等优点。 合理优化使用成本,进一步降本增效。

RDS实例创建

进入云数据库RDS控制台,点击【创建实例】开始实例创建过程,在【基础资源】设置界面选择版本,其余根据实际情况选择

【实例配置】创建RDS时,需要注意网络VPC的设置,必须与服务设置的VPC一致,才能实现内网数据互通。确定顺序后,等待实例上线即​​可被创造

RDS数据库用户设置

创建实例后,选择管理实例。 选择左侧任务栏【账户管理】,点击【创建账户】创建数据库账户,连接供应商平台后台。

输入账户名和密码,选择普通账户,点击确定完成用户创建

RDS业务数据库创建

选择左侧栏的【数据库管理】,选择【创建数据库】

输入农产品电商业务所需的库名,并将账号授权给上一步设置的用户,点击创建完成库设置。

RDS服务连接地址

我们函数中需要连接的库的地址可以在rds实例中的【数据库】连接处找到,但是需要提前设置好白名单。

我们复制内网地址,同样完成连接用户、密码、库的配置,然后我们就可以在函数或者后台代码中配置了

RDS业务数据库的导入与恢复

数据库上云的关键是数据内容的迁移。 本次部署的业务数据库少且小,迁移方式采用简单的备份SQL脚本文件。 /的数据导出方式有很多种,可以根据实际需要进行备份导出。 当然,大型业务数据库也有专门的备份和迁移工具,这里不再赘述。

进入DMS数据管理服务,选择【数据库开发】,点击【数据变更】下的【数据导入】。

根据具体的备份方式导入数据库。 这里我选择上传备份sql脚本,提交申请开始导入数据。

数据导入完成,数据迁移完成

5、服务云和静态资源CDN

上一篇文章提到,由于我已经在自己的ECS上运行服务,所以不再需要单独购买云数据库版本。 ECS也在同一个VPC下,可以实现内网互通。 当然还是推荐使用阿里云的云数据库产品。

静态资源的CDN,包括css\js\的加速,在阿里的CDN服务上,在原有的架构中已经有了,这里就不做改动了。

6.公网业务访问域名配置

最后一步,用户最终访问了前端功能。 正如阿里云给出的提示,访问默认公网地址不会进行任何中间件解析,而是直接下载首页html静态文件,所以需要我们自己配置访问域名。

返回函数计算控制台,选择【域名管理】,点击【添加自定义域名】

输入自定义域名,配置路由,选择对应功能的服务名、功能名、版本号(最新)

复制需要解析的值

复制记录值,点击【云解析DNS控制台】,进入解析设置,点击【添加记录】

选择记录类型【】,输入主机头,填写复制的记录值,确认完成添加

七、农产品电商项目上云效果

Tag: rds阿里云 数据库系统 php rds php框架
网站制作公众号

宿迁腾云网络网站建设公司 | 网站开发 | 网站制作 | 网站优化

咨询电话:13160355545

上一篇

返回栏目

下一篇

免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。

热推

  • 聚焦国外:比尔盖茨13岁开始学编程,后来他成了世界首富
  • php代码在线格式化工具1.解析文件上传漏洞与开发语言无关的区别!!notepad php代码格式化
  • php文件上传代码网络攻击者上传漏洞与的关系文件上传的一种方式介绍php上传图片代码
  • 中一群资深技术领导组成的技术顾问委员会创建了该雷达
  • php网站源码加密健身类小程序前后端项目源码(代码开源,不加密)
  • php框架开发教程推荐:PHP+教程PHP程序员框架框架php框架开发教程 pdf
  • php框架基础教程上周将自己用C++开发的框架forC及C++代码php框架开发视频教程
  • php网站管理系统模板腾云网络后端的cgi开发界面及应用php 网站模板
  • 江阴问鼎教育分享课程:澄江中路5号东都大厦8楼PLC编程应注意以下基本原则
  • 代码审核不是简单的检查代码,审核代码的原因

相关

如何查看虚拟主机上的 PHP 版本?这篇文章告诉你

Linux 系统管理员和 web 开发者必知:如何查看 PH

Linux 系统管理员和 web 开发者必知:如何查看 PH

免费开源的轻量级 PHP 开发框架 ThinkPHP,遵循

从零开始开发完整网站:前端、后端与 Web 服务器的关键技术

php框架 Java 与 PHP 之争:为何懂技术的大佬选

BitDefender 发布超级工厂病毒专杀工具,可清除所有

asp语言与php语言的区别 前端和后端的区别,你真的了解吗

优化 PHP 代码,提升公司内部电脑监控软件安全性

优化 PHP 代码,提升公司内部电脑监控软件安全性

免费且可商用的 PHP CMS 系统推荐:PbootCMS

轻量级可扩展的电商系统:优点与缺点分析

标签

seo(1182) 市场营销(661) 网站制作(573) 网站建设(564) 搜索引擎(553) 网站(482) PHP(361) 编程语言(345) 建站(294) 关键词排名优化(267) 网站建设公司(245) 优化(216) seo排名(207) 域名(190) 软件(171) 网站优化(148) 搜索引擎优化(146) 外链(141) 科技(136) 网站关键词(124) 网站排名优化(123) 域名服务器(120) 网站排名(107) 时政(103) 排名优化(95) 搜索引擎收录(93) 网站设计(92) 电子商务(88) 引擎(86) 移动互联网(85) 开发框架(79) 开发(75) 网站服务器(74) 框架(68) 前端开发(68) 网站分析(66) 网站建设方案(65) 关键(64) 流量(63) 源码(62) 百度优化(62) 网站权重(61) 开放源代码(59) seo培训(53) 网页设计(51) 百度(51) php框架(50) 网站建设知识(50) 大数据(50) 谷歌(49)
宿迁腾云网络网站建设公司
网站建设
  • 私人定制
  • 标准模板建站
  • 经济模板建站
精品模板

宿迁腾云网络网站建设公司

联系电话:13160355545

公司地址:江苏省宿迁市丽景湾华庭北门都市花园公寓9楼907

联系邮箱:admin@tyweb.net

全国分站
  • 北京
  • 广东
  • 东莞 广州 中山 深圳 惠州 江门 珠海 汕头 佛山 湛江 河源 肇庆 潮州 清远 韶关 揭阳 阳江 云浮 茂名 梅州 汕尾
  • 山东
  • 济南 青岛 临沂 济宁 菏泽 烟台 泰安 淄博 潍坊 日照 威海 滨州 东营 聊城 德州 莱芜 枣庄
  • 江苏
  • 苏州 徐州 盐城 无锡 南京 南通 连云港 常州 扬州 镇江 淮安 泰州 宿迁
  • 河南
  • 郑州 南阳 新乡 安阳 洛阳 信阳 平顶山 周口 商丘 开封 焦作 驻马店 濮阳 三门峡 漯河 许昌 鹤壁 济源
  • 上海
  • 河北
  • 石家庄 唐山 保定 邯郸 邢台 沧州 秦皇岛 张家口 衡水 廊坊 承德
  • 浙江
  • 温州 宁波 杭州 台州 嘉兴 金华 湖州 绍兴 舟山 丽水 衢州
  • 陕西
  • 西安 咸阳 宝鸡 汉中 渭南 安康 榆林 商洛 延安 铜川
  • 湖南
  • 长沙 邵阳 常德 衡阳 株洲 湘潭 永州 岳阳 怀化 郴州 娄底 益阳 张家界 湘西
  • 重庆
  • 福建
  • 漳州 泉州 厦门 福州 莆田 宁德 三明 南平 龙岩
  • 天津
  • 云南
  • 昆明 红河 大理 文山 德宏 曲靖 昭通 楚雄 保山 玉溪 丽江 临沧 思茅 西双版纳 怒江 迪庆
  • 四川
  • 成都 绵阳 广元 达州 南充 德阳 广安 阿坝 巴中 遂宁 内江 凉山 攀枝花 乐山 自贡 泸州 雅安 宜宾 资阳 眉山 甘孜
  • 广西
  • 贵港 玉林 北海 南宁 柳州 桂林 梧州 钦州 来宾 河池 百色 贺州 崇左 防城港
  • 安徽
  • 芜湖 合肥 六安 宿州 阜阳 安庆 马鞍山 蚌埠 淮北 淮南 宣城 黄山 铜陵 亳州 池州 巢湖 滁州
  • 海南
  • 三亚 海口 琼海 文昌 东方
  • 江西
  • 南昌 赣州 上饶 吉安 九江 新余 抚州 宜春 景德镇 萍乡 鹰潭
  • 湖北
  • 武汉 宜昌 襄樊 荆州 恩施 孝感 黄冈 十堰 咸宁 黄石 仙桃 随州 天门 荆门 潜江 鄂州 神农架
  • 山西
  • 太原 大同 运城 长治 晋城 忻州 临汾 吕梁 晋中 阳泉 朔州
  • 辽宁
  • 大连 沈阳 丹东 辽阳 葫芦岛 锦州 朝阳 营口 鞍山 抚顺 阜新 本溪 盘锦 铁岭
  • 黑龙江
  • 齐齐哈尔 哈尔滨 大庆 佳木斯 双鸭山 牡丹江 鸡西 黑河 绥化 鹤岗 伊春 大兴安岭 七台河
  • 内蒙古
  • 赤峰 包头 通辽 呼和浩特 乌海 鄂尔多斯 呼伦贝尔
  • 贵州
  • 贵阳 黔东 黔南 遵义 黔西 毕节 铜仁 安顺 六盘水
  • 甘肃
  • 兰州 天水 庆阳 武威 酒泉 张掖 陇南 白银 定西 平凉 嘉峪关 临夏 金昌 甘南
  • 青海
  • 西宁 海西 海东 海北 果洛 玉树 黄南
  • 新疆
  • 乌鲁木齐 伊犁 昌吉 石河子 哈密
  • 西藏
  • 拉萨 山南 林芝 日喀则
  • 吉林
  • 长春 白山 白城 延边 松原 辽源 通化 四平
  • 宁夏
  • 银川 吴忠 中卫 石嘴山 固原
SiteMap
网站地图
TAG标签
Copyright © 2017-2024 TYWEB.NET 宿迁腾云网络科技有限公司 ALL RIGHTS RESERVED.   苏ICP备17033535号-1

热门搜索

百度 下载 2025 2024 2026 货源 货货源 虚拟 禅道 报名 金蝶KIS旗舰版
  • 客服

    在线客服

  • 电话

    13160355545

  • 微信

精品模板
建站费用
成功案例
联系我们