如何本地搭建FastDFS文件服务器并实现远程访问【内网穿透】
文章目录
- 前言
- 1. 本地搭建FastDFS文件系统
- 1.1 环境安装
- 1.2 安装libfastcommon
- 1.3 安装FastDFS
- 1.4 配置Tracker
- 1.5 配置Storage
- 1.6 测试上传下载
- 1.7 与Nginx整合
- 1.8 安装Nginx
- 1.9 配置Nginx
- 2. 局域网测试访问FastDFS
- 3. 安装cpolar内网穿透
- 4. 配置公网访问地址
- 5. 固定公网地址
- 5.1 保留二级子域名
- 5.2 配置二级子域名
- 6. 测试访问固定二级子域名
前言
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
配备一台公网服务器作为文件上传下载,花费资源和开销比较大,如果在本地搭建FastDFS服务,只把上传后的文件通过cpolar内网端口转发工具将文件配置可通过互联网访问,极大了减少服务器费用及开销,本文介绍详细搭建FastDFS教程,并结合Nginx+cpolar工具实现远程访问文件。
1. 本地搭建FastDFS文件系统
1.1 环境安装
由于fastDFS是由c语言编写,所以我们需要安装gcc
yum -y install gcc-c++
FastDFS依赖libevent库
,需要安装。执行如下命令:
yum -y install libevent
1.2 安装libfastcommon
进入local目录
cd /usr/local
libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS运行所需要的一些基础库。点击下面链接即可获取:
https://github.com/happyfish100/libfastcommon/releases/tag/V1.0.7
获取后,上传到local
目录下
解压libfastcommon
tar -zxvf libfastcommonV1.0.7.tar.gz
进入解压文件夹
cd libfastcommon-1.0.7/
编译
./make.sh
安装
./make.sh install
libfastcommon安装好后会自动将库文件拷贝至/usr/lib64
下,由于FastDFS程序引用usr/lib目录所以需要将/usr/lib64下的库文件拷贝至/usr/lib下。
cp /usr/lib64/libfastcommon.so /usr/lib/
1.3 安装FastDFS
进入local目录
cd /usr/local
点击下列地址,可获取下载FastDFS_v5.05.tar.gz文件:
https://sourceforge.net/projects/fastdfs/
下载文件后,上传FastDFS_v5.05.tar.gz
到/usr/local/
解压文件
tar -zxvf FastDFS_v5.05.tar.gz
进入解压文件夹
cd FastDFS
编译
./make.sh
安装
./make.sh install
安装成功后,将安装目录下的conf下的文件拷贝到/etc/fdfs/
下
cd conf/
拷贝
cp * /etc/fdfs/
1.4 配置Tracker
接下来进行配置,安装成功后进入/etc/fdfs
目录
cd /etc/fdfs/
修改tracker.conf
vim tracker.conf
把base_path=/home/yuqing/fastdfs
改为base_path=/home/fastdfs
编辑后保存退出,然后创建一个对应的fastdfs文件夹
mkdir /home/fastdfs
然后启动
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
设置开机启动
vim /etc/rc.d/rc.local
将运行命令行添加进文件
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
1.5 配置Storage
进入/etc/fdfs目录
cd /etc/fdfs
修改storage.conf
vim storage.conf
把base_path=/home/yuqing/fastdfs
改为base_path=/home/fastdfs
把store_path0=/home/yuqing/fastdfs
改为store_path0=/home/fastdfs/fdfs_storage
继续修改,设置tracker服务器:IP,tracker_server=Linux局域网ip:22122 ,设置好后保存退出
创建对应fdfs_storage文件夹
mkdir /home/fastdfs/fdfs_storage
然后启动
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
设置开机自动启动
vim /etc/rc.d/rc.local
将运行命令行添加到文件,然后保存
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
1.6 测试上传下载
FastDFS安装成功可通过/usr/bin/fdfs_test命令测试上传、下载等操作。
修改/etc/fdfs/client.conf
vim /etc/fdfs/client.conf
修改如下内容,然后保存:
base_path=/home/fastdfstracker_server=Linux局域网ip:22122
接下来测试上传文件,这里上传了一张图片到/usr/local
目录下,作为测试使用
FastDFS上传文件使用格式:
/usr/bin/fdfs_test /etc/fdfs/client.conf upload+ 上传文件的路径
然后按照格式,测试将test23.png图片上传到FastDFS中
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/local/test23.png
执行后,我们可以看到返回地址信息,表示成功,但是目前还访问不了,需要结合Nginx做访问下载
1.7 与Nginx整合
点击下载下面链接下载fastdfs-nginx-module_v1.16:
[https://sourceforge.net/projects/fastdfs/files/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz/download](https://sourceforge.net/projects/fastdfs/files/FastDFS Nginx Module Source Code/fastdfs-nginx-module_v1.16.tar.gz/download)
进入 /usr/local/文件夹下
cd /usr/local/
上传fastdfs-nginx-module_v1.16.tar.gz
解压fastdfs-nginx-module_v1.16.tar.gz
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
进入src,然后编辑配置文件
cd fastdfs-nginx-module/src/
修改config文件
vim config
修改这三个位置,将里面原本是/usr/local/的路径改为/usr/,然后保存退出
然后将FastDFS-nginx-module/src下的mod_FastDFS.conf拷贝至/etc/fdfs/下
cp mod_fastdfs.conf /etc/fdfs/
修改mod_FastDFS.conf的内容:
vim /etc/fdfs/mod_fastdfs.conf
修改内容如下:
base_path=/home/fastdfs
tracker_server=Linux局域网ip地址:22122
url_have_group_name=true #url中包含group名称
store_path0=/home/fastdfs/fdfs_storage #指定文件存储路径
接下来将libfdfsclient.so拷贝至/usr/lib下
cp /usr/lib64/libfdfsclient.so /usr/lib/
创建nginx/client目录即可
mkdir -p /var/temp/nginx/client
1.8 安装Nginx
首先安装系列环境
yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum -y install openssl openssl-devel
然后点击下载Nginx包:
nginx-1.16.1.tar.gz
上传到root目录下
解压,并进入解压文件夹
tar -zxvf nginx-1.16.1.tar.gz && cd nginx-1.16.
添加FastDFS-nginx-module模块,执行以下命令:
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--add-module=/usr/local/fastdfs-nginx-module/src
然后编译
make
安装
make install
1.9 配置Nginx
修改Nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
添加server,添加后保存退出:
server {listen 8089;#为了防止80端口,我们改成8089server_name 192.168.59.133;#这里需要使用你本机的局域网iplocation /group1/M00/{ngx_fastdfs_module;}
}
启动Nginx
/usr/local/nginx/sbin/nginx
如果启动nginx出现以下错误:
nginx: [emerg] open() “/var/run/nginx/nginx.pid” failed (2: No such file or directory)
可以执行如下命令,然后再次启动:
mkdir /var/run/nginx
设置开机自动启动。
vim /etc/rc.d/rc.local
将运行命令行添加进文件,然后保存退出:
/usr/local/nginx/sbin/nginx
关闭防火墙
service iptables stop
设置防火墙不自动启动
chkconfig iptables off
2. 局域网测试访问FastDFS
然后按照格式,测试将上面我们上传的test23.png图片上传到FastDFS中
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/local/test23.png
执行后,我们可以看到返回地址信息,表示成功
然后使用上面的地址,在浏览器访问,即可看到我们上传的图片,fastDFS搭建完成
3. 安装cpolar内网穿透
上面我们在本地Linux虚拟机安装了fastDFS分布式文件服务,下面我们安装cpolar内网穿透工具,通过cpolar的http公网地址,我们可以很容易远程也可以访问fastDFS里面上传的文件,而无需自己注册域名购买云服务器.下面是安装cpolar内网穿透步骤
cpolar官网:https://www.cpolar.com/
- 使用一键脚本安装命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
- token认证
登录cpolar官网后台,点击左侧的验证,查看自己的认证token,之后将token贴在命令行里:
cpolar authtoken xxxxxxx
- 向系统添加服务
sudo systemctl enable cpolar
- 启动cpolar服务
sudo systemctl start cpolar
4. 配置公网访问地址
成功启动cpolar服务后,我们在浏览器上访问Linux局域网ip地址+9200端口,登录cpolar web UI管理界面。
登录成功后,点击左侧仪表盘的隧道管理——创建隧道,创建一个http协议的隧道指向上面设置的Nginx8089端口:
- 隧道名称:可自定义,注意不要与已有的隧道名称重复
- 协议:http
- 本地地址:8089
- 域名类型:免费选择随机域名
- 地区:选择China VIP
点击创建
然后打开在线隧道列表,查看并且复制公网地址
然后打开浏览器,输入公网地址,访问我们上传在fastDFS里的文件,即可远程访问成功
5. 固定公网地址
由于刚刚创建隧道使用的是随机临时地址,该地址会在24小时内发生变化,为了长期和更稳定远程访问,我们接下来将这个公网地址配置为固定的,
5.1 保留二级子域名
需升级至基础套餐或以上才支持配置二级子域名,如有下载文件的需求,可以升级更高套餐以便获取更大的带宽,提高下载速度
登录cpolar官网后台,点击左侧仪表盘的预留
,找到保留二级子域名
,为http隧道保留一个二级子域名。
- 地区:选择服务器地区
- 名称:填写您想要保留的二级子域名(可自定义)
- 描述:即备注,可自定义填写
本例保留一个名称为fasttest
的二级子域名。子域名保留成功后,我们将子域名复制下来,接下来需要将其配置到隧道中去。
5.2 配置二级子域名
登录cpolar web ui管理界面。点击左侧仪表盘的隧道管理
——隧道列表
,找到需要配置二级子域名的隧道,点击右侧的编辑
修改隧道信息,将二级子域名配置到隧道中:
- 域名类型:改为选择
二级子域名
- Sub Domain:填写我们刚刚所保留的二级子域名(本例为
fasttest
)
修改完成后,点击更新
隧道更新成功后,点击左侧仪表盘的状态
——在线隧道列表
,可以看到隧道的公网地址,已经更新为二级子域名了,将公网地址复制下来。
6. 测试访问固定二级子域名
我们来测试一下访问配置成功的二级子域名,打开浏览器,输入公网地址加资源路径,访问我们上传在fastDFS里的文件,出现图片即可远程访问成功。现在,我们全网唯一的私有二级子域名,就创建好了。
而且这个地址也不会再随机变化,他是固定不变的,只要保持隧道在线,我们在外就可以通过这个公网地址,随时随地远程访问,无需公网IP,也不用设置路由器。
相关文章:
如何本地搭建FastDFS文件服务器并实现远程访问【内网穿透】
文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…...
spring基于Xml管理bean---Ioc依赖注入:对象类型属性赋值(2)----内部bean的引入(bean和bean之间的引入)、(3)级联方式注入
bean创建对象类型赋值方式 第一:外部bean的引入 第二:内部bean的引入 第三:级联属性赋值 文章目录 bean创建对象类型赋值方式对象类型内部bean赋值代码分析总结 对象类型属性级联方式的赋值扩展知识 对象类型内部bean赋值 代码分析 <b…...
Python电能质量扰动信号分类(二)基于CNN模型的一维信号分类
目录 前言 1 电能质量数据集制作与加载 1.1 导入数据 1.2 制作数据集 2 CNN-2D分类模型和训练、评估 2.1 定义CNN-2d分类模型 2.2 定义模型参数 2.3 模型结构 2.4 模型训练 2.5 模型评估 3 CNN-1D分类模型和训练、评估 3.1 定义CNN-1d分类模型 3.2 定义模型参数 …...
如何解决报错:Another app is currently holding yum lock?
在运行yum 相关命令的时候,不知道怎么回事无法进行下载安装,报出 Another app is currently holding the yum lock; waiting for it to exit... 的错误提示。 Another app is currently holding the yum lock. 意思是另外一个应用正在锁住进程锁。 …...
electron使用electron-builder进行MacOS的 打包、签名、公证、上架、自动更新
一、前言 由于electron在macOS下的坑太多,本文不可能把所有的问题都列出来,也不可能把所有的解决方案贴出来;本文也不太会讲解每一个配置点为什么要这么设置的原因,因为有些点我也说不清,我尽可能会说明的。所以&…...
RAD Studio 12 安装激活说明及常见问题
目录 RAD Studio 安装说明 RAD Studio 最新的修补程序更新 RAD Studio 产品相关信息 Embarcadero 产品在线注册步骤 单机版授权产品注册注意事项 Embarcadero 产品离线注册步骤 Embarcadero 产品安装次数查询 Embarcadero 序号注册次数限制 EDN账号 - 查询授权序号、下…...
JavaScript实现视频共享
1.视频共享webrtc-master index.html <!DOCTYPE html> <html> <head><script typetext/javascript srchttps://cdn.scaledrone.com/scaledrone.min.js></script><meta charset"utf-8"><meta name"viewport" cont…...
uniapp框架——vue3+uniFilePicker+fastapi实现文件上传(搭建ai项目第二步)
文章目录 ⭐前言💖 小程序系列文章 ⭐uni-file-picker 组件💖 绑定事件💖 uploadFile api💖 自定义上传 ⭐后端fastapi定义上传接口⭐uniapp开启本地请求代理devServer⭐前后端联调⭐总结⭐结束 ⭐前言 大家好,我是ym…...
一篇文章带你入门PHP魔术方法
PHP魔术方法 PHP 中的"魔术方法"是一组特殊的方法,它们在特定情况下自动被调用。这些方法的名称都是以两个下划线(__)开头。魔术方法提供了一种方式来执行各种高级编程技巧,使得对象的行为可以更加灵活和强大。以下是一…...
【数据库系统概论】第6章-关系数据库理论
真别看吧,抄ppt而已啊 文章目录 6.1 引言6.2 规范化6.2.1 函数依赖6.2.2 码6.2.3 范式(Normal Form)6.2.4 BC范式6.2.5 规范化小结 6.1 引言 我们有这样一张表: but 为啥这样设计呢?由此引出怎样设计一个关系数据库…...
算法设计与分析实验报告-贪心算法
校课程的简单实验报告。 算法设计与分析实验报告-递归与分治策略 算法设计与分析实验报告-动态规划算法 算法设计与分析实验报告-贪心算法 dijkstra迪杰斯特拉算法(邻接表法) 算法设计与分析实验报告-回溯法 算法设计与分析实验报告-分支限界法 …...
Unity读取服务器声音文件
Unity读取服务器声音文件 功能1.在网站的根目录放置一个声音文件Alarm01.wav(这个是window系统自带的找不到这个格式的可以直接在C盘搜索)2.在WebManager.cs脚本中添加clipPath、audio、m_downloadClip属性和DownloadSound()函数&…...
掌握ElasticSearch(一):Elasticsearch安装与配置、Kibana安装
文章目录 〇、简介1.Elasticsearch简介2.典型业务场景3.数据采集工具4.名词解释 一、安装1.使用docker(1)创建虚拟网络(2)Elasticsearch安装步骤 2.使用压缩包 二、配置1.目录介绍2.配置文件介绍3.elasticsearch.yml节点配置4.jvm.options堆配置 二、可视化工具Kibana1.介绍2.安…...
《剑指offer》Java版--13.机器人的运动范围(BFS)
剑指offer原题13:机器人的运动范围 地上有一个m行n列的方格。一个机器人从坐标(0,0)的格子开始移动,它每次可以向左、右、上、下移动一格,但不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格(35,37),因为353…...
基于流程挖掘的保险理赔优化策略实践
引言 在当今日益竞争的商业环境中,保险公司面临着日益增长的业务量和客户期望的挑战。特别是在理赔领域,理赔是保险行业的重要环节,也是保险公司和客户之间最直接的联系点。然而,长周期和繁琐的理赔流程常常给保险公司和投保人带来困扰。因此,如何提供准确且高效的理赔处…...
Docker五 | DockerFile
目录 DockerFile 常用保留字 FROM MAINTAINER RUN EXPOSE WORKDIR USER ENV VOLUME ADD COPY CMD ENTRYPOINT DockerFile案例 前期准备 编写DockerFile文件 运行DockerFile 运行镜像 DockerFile是用来构建Docker镜像的文本文件,是由一条条构建…...
2023年度总结:技术旅程的杨帆远航⛵
文章目录 职业规划与心灵成长 ❤️🔥我的最大收获与成长 💪新年Flag 🚩我的技术发展规划 ⌛对技术行业的深度思考 🤔祝愿 🌇 2023 年对我来说是一个充实而令人难以忘怀的一年。这一年,我在CSDN上发表了 1…...
SpringBoot+AOP+Redis 防止重复请求提交
本文项目基于以下教程的代码版本: https://javaxbfs.blog.csdn.net/article/details/135224261 代码仓库: springboot一些案例的整合_1: springboot一些案例的整合 1、实现步骤 2.引入依赖 我们需要redis、aop的依赖。 <dependency><groupId>org.spr…...
偷流量、端口占用、网络负载高、socket创建释放异常等Android高阶TCP/IP网络问题定位思路
一,背景 通常一些偷流量、端口占用、网络负载高、socket创建释放异常等Android网络相关问题,可以通过使用tcpdump抓tcp/ip报文,来定位。但是tcpdump无进程信息,也没有APK包名信息,无法确认异常的报文来自哪些Apk或者n…...
《人人都能用英语》学习笔记
https://github.com/xiaolai/everyone-can-use-english 核心: 用 What──它究竟是什么?Why──为什么它是那个样子?How──要掌握它、应用它,必须得遵循什么样的步骤? 在运行程序之前,要反复浏览代码&a…...
NFC与ZigBee技术在智慧农业物联网监测系统中的应用
近年来,我国农业物联网技术飞速发展,基于物联网技术的智能农业监测系统有望得到较大规模的推广应用。但传统的物联网农业监测系统其网络结构层次单一,多采用基于有线或无线结构的节点-上位机数据采集模式,节点数据访问模式缺乏灵活…...
k8s-cni网络 10
Flannel vxlan模式跨主机通信原理 在同一个节点上的pod 流量通过cni网桥可以直接进行转发; 在需要跨主机访问时,数据包通过flannel(隧道) 知道另一边的mac地址,就可以拿到另一边的ip地址,然后构建常规的以太网数据包,…...
听GPT 讲Rust源代码--src/tools(27)
File: rust/src/tools/clippy/clippy_lints/src/methods/suspicious_to_owned.rs 文件rust/src/tools/clippy/clippy_lints/src/methods/suspicious_to_owned.rs的作用是实施Clippy lint规则,检测产生潜在性能问题的字符转换代码,并给出相关建议。 在Rus…...
经济危机下,我们普通人如何翻身?2024创业新风口,适合普通人的创业项目
明年的商业环境会比今年更残酷,不是贩卖危机。旅游行业还在刺激性消费,再过几个月大家就没钱了,估计慢慢也消停。中小微企业资金链断裂,大部分公司倒闭,大批人失业,所以经济恢复需要一个周期。 30年河东&am…...
深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第五节 引用类型复制问题及用克隆接口ICloneable修复
深入浅出图解C#堆与栈 C# Heaping VS Stacking 第五节 引用类型复制问题及用克隆接口ICloneable修复 [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈](https://mp.csdn.net/mdeditor/101021023)[深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节…...
python中基本元素的pop函数
python中基本元素的pop函数 一、列表List二、元组Tuple三、字典dict四、集合set 一、列表List pop() 根据索引删除并返回被删除的元素,索引默认为-1 a [1, 2, 3, 2, 5] b a.pop() # b5,默认返回最后一个值 print(b) b a.pop(2) # b3,返回a[2] pri…...
MPLS动态协议LDP配置示例
一、预习: MPLS是一种根据报文中携带的标签来转发数据的技术,两台LSR必须在它们之间转的数据 的标签使用上“达成共识”。LSR之间可以运行LDP来告知其他LSR本设备上的标签绑定信息,从而实现标签报文的正确转发。 LSR:Label Switch…...
JS调用栈:为何会栈溢出
JS调用栈:为何会栈溢出 JS调用栈什么是函数调用什么是栈在开发中利用调用栈栈溢出 JS调用栈 JavaScript 经常会出现一个函数中调用另外一个函数的情况,调用栈就是用来管理函数调用关系的一种数据结构,首先你要先弄明白函数调用和栈结构 什么…...
代码随想Day52 | 300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组
300.最长递增子序列 这道题目的重点在于动态数组的定义 dp[i]:以nums[i]为结尾的最长递增子序列,因为这样定义可以进行递推; 递推:j从0-i进行对比,如果nums[i]大于nums[j],dp[i]dp[j]1; 初始化…...
使用 pytest 相关特性重构 appium_helloworld
一、前置说明 在 pytest 基础讲解 章节,介绍了 pytest 的特性和基本用法,现在我们可以使用 pytest 的一些机制,来重构 appium_helloworld 。 appium_helloworld 链接: 编写第一个APP自动化脚本 appium_helloworld ,将脚本跑起来 代码目录结构: pytest.ini 设置: [pyt…...
青岛做网站方案/宣传软文是什么
变量是什么? 变:变化,重在变字,量:计量,衡量,表示一种状态。 变量字面理解就是一个可能改变的量,也就是这个值是不固定的。 变量名: a.数字 b.字母 c.下划线 变量的定义 …...
新手如何搭建自己的网站/互联网营销师培训课程
一、Spring中Bean及Bean的理解[1] Bean在Spring和SpringMVC中无所不在,将这个概念内化很重要,下面分享一下我的想法: 一、Bean是啥 1、Java面向对象,对象有方法和属性,那么就需要对象实例来调用方法和属性(…...
成都网站建设优惠活动/网站友情链接交易平台
在浏览器支持的 CSS position: fixed (大多数的桌面浏览器, iOS5, Android 2.2, BlackBerry 6, 和其他)。工具栏使用“固定工具栏”插件将被固定在视图的顶部或底部,当页面自由滚动,固定栏始终浮动在屏幕的顶部或者底部。在浏览器不支持固定定位…...
icp备案查询站长工具/网络优化工作应该怎么做
网络与通信 N e t w o r k&C o mmu n i c a t i o n计算机网络技术的发展模式研究文/李祥龙研究、探索、试验以及考证,也伴随着新兴技2计算机网络技术快速发展模式分析计算机技术的发展模式对一个国家、地区和社会的成长有着十分重要的影响,其制度、…...
做党建需要关注网站/seo职业规划
是的,你没看错。我看“HTML5是Flash杀手”,“Flash过时了”之类的句子都看到想吐了。所以我在这里说说自己对“Apple vs Adobe”之间的口角,以及“Flash vs HTML5”谁更优秀的看法。并且解释一下,为什么在我看来,应是F…...
为什么用dw做的网站打不开/独立站建站平台有哪些
【题目链接】:click here~~ 时间限制:20000ms单点时限:1000ms内存限制:256MB描写叙述 且说上一周的故事里,小Hi和小Ho费劲心思最终拿到了茫茫多的奖券!而如今,最终到了小Ho领取奖励的时刻了。 小Ho如今手上有M张奖券,而…...