-
Linux部署nodejs web项目
2016-11-28 14:52:11Linux部署nodejs web项目 首次部署需安装nodejsnpmpm2 直接部署项目安装依赖包 使用PM2运行及配置Nginx Linux部署nodejs web项目1. 首次部署需安装nodejs、npm、pm2sudo apt-get update sudo apt-get install nodejs...Linux部署nodejs web项目
1. 首次部署需安装nodejs、npm、pm2
Ubuntu: sudo apt-get update sudo apt-get install nodejs sudo apt-get install npm sudo npm install pm2 -g centos: yum install nodejs yum install npm npm install pm2 -g
2. 直接部署项目,安装依赖包
cd 项目目录 npm install
3. 使用PM2运行及配置Nginx
cd 项目目录 pm2 start bin/www 查看服务
重启服务
pm2 list pm2 restart 0
-
Linux新手捣鼓NodeJS部署
2018-11-22 15:52:41本文记录如何完成把NodeJS Web应用部署到Linux服务器的任务。 工作环境 我自己的工作机是Windows系统,因此需要使用mRemoteNG远程到Linux服务器来执行命令行指令,使用WinSCP拷贝文件到Linux服务器。 Linux系统下...本文记录如何完成把NodeJS Web应用部署到Linux服务器的任务。
工作环境
我自己的工作机是Windows系统,需要在一个公司内部的Linux服务器上部署NodeJS应用。我使用mRemoteNG远程到Linux服务器来执行命令行指令,因为这台机器不能访问外网,因此使用WinSCP从本地拷贝文件到该机器上去。
Linux系统下安装Node
- 查看当前机器上是否已经安装过Node。
node -v
如果已经安装了Node,则会返回Node版本号。
- 下载Node安装包
Node官方下载地址:https://nodejs.org/en/download/
选择Linux(x64)下载安装包
然后通过WinSCP上传文件到Linux机器。执行以下命令:# 解压压缩包 tar -xvf node-v6.10.0-linux-x64.tar.xz # 重命名 mv node-v6.10.0-linux-x64 nodejs #建立软连接,使node和npm变为全局命令 ln -s /app/software/nodejs/bin/npm /usr/local/bin/ ln -s /app/software/nodejs/bin/node /usr/local/bin/
注意,如果当前账号没有root权限,需要先进行切换,之后再执行建立软连接的操作。
# 切换到root账号 sudo -i #建立软连接,使node和npm变为全局命令 ln -s /app/software/nodejs/bin/npm /usr/local/bin/ ln -s /app/software/nodejs/bin/node /usr/local/bin/
部署本地html网页为Node Web应用
如果要将本地html发布为Node Web Application,需要增加一个node文件,一般命名为server.js或者app.js。文件内容如下:
const express = require('express'); const app = express(); const path = require('path'); const port = 3000; // 设置js、css等静态文件的访问路径为绝对路径 app.use(express.static(__dirname)); app.get('/', function(req, res){ // path.join的作用是设置html的访问路径为绝对路径 res.sendFile(path.join(__dirname + '/index.html')); }); // 设置监听端口,以及服务器启动后的回调函数 app.listen(port, ()=> console.log(`listening on port ${port}!`));
在server.js所在的目录下,执行node server.js,启动node服务。
node server.js
在浏览器的地址栏中输入: localhost:3000,测试是否可以访问到Web应用程序。
将Node应用部署到Linux上
用WinSCP上传project到Linux上,然后执行以下命令。
# cd 到server.js所在的目录下 cd myProject # 使用nohup,使得node服务可以在后台长时间运行,否则当命令行窗口关闭时,node服务也会随即关闭。 # 注意:执行nohup命令需要root权限 nohup node server.js &
在浏览器的地址栏中输入:http://10.51.46.134:3000/ ,测试部署是否成功。注:10.51.46.134为Linux机器的IP地址。
Node服务后台运行的方法
- nohup
本文在上一章部署应用的时候使用的就是此方法,nohup的作用是禁止进程挂起,它和&配合使用,&指的是进程在后台运行。
更多细节:https://www.cnblogs.com/baby123/p/6477429.html- screen
由于node server.js在命令行窗口关闭后,就会被kill掉,所以可以通过screen命令,另起一个窗口,并detach(分离)这个窗口。
只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。
更多细节: http://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html
- forever
forever 是一个npm包,可以实现脚本不间断运行。
# 注意:必须在root权限下运行 npm install forever -g
注:执行的npm install命令的时候,如果出现一直停留在rollbackFailedOptional这个状态,最后连接超时导致失败,应首先考虑网络连接的问题。
这台Linux机器是公司的内部测试机,无法直接访问internet,所以必须配置代理。# 注: 必须在root权限下执行 npm config set proxy http:10.40.14.44:80
安装完forever包,就可以启动app了。
# 在server.js目录下执行 forever start server.js
更多细节:
https://www.npmjs.com/package/forever
https://www.jianshu.com/p/669a618f3212【完】
-
Linux安装Nodejs并访问数据库+部署到web
2020-05-03 21:55:33Linux安装Nodejs并进行数据库访问下载Nodejsnodejs访问数据库nodejs部署到WebNodejs定时器PromiseError: Cannot enqueue Handshake after invoking quit.Error: Cannot enqueue Query after invoking quit.部署到...Linux安装Nodejs并访问数据库
下载Nodejs
wget https://nodejs.org/dist/v12.16.3/node-v12.16.3-linux-x64.tar.xz
解压
tar -xvf node-v12.16.3-linux-x64.tar.xz #移动 mv node-v12.16.3-linux-x64 /usr/local/node
建立软链接
ln -s /usr/local/node/bin/node /usr/sbin/node
node -v
安装成功!参考自https://www.cnblogs.com/sirdong/p/11447739.html
nodejs访问数据库
新建工作目录
mkdir $HOME/node cd $HOME/node
安装驱动
/usr/local/node/bin/npm install mysql
新建all.js
vim $HOME/node/all.js
内容如下
var mysql = require('mysql'); //创建连接 var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : 'root', port : '3306', database : 'database' }); //连接 connection.connect(); var sql = 'select * from table'; //开始查询 connection.query(sql,function(err,result){ if(err){ console.log('[select error] -',err.message); return; } console.log(result); }); connection.end();
效果如下
nodejs部署到Web
对上面的代码稍作修改
var http=require('http'); var url = require('url'); var mysql = require('mysql'); //创建连接 var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : 'miao', port : '3306', database : 'book_library' }); //准备sql var sql = 'select * from book'; //创建服务器 server = http.createServer(function(request,response) { //解析请求,包括文件名 var pathname= url.parse(request.url).pathname; //console.log(pathname); if(pathname !="/all.js"){ //HTTP 状态码 404 : NOT FOUND //Content Type:text/plain response.writeHead(404,{'Content-Type': 'text/html'}); response.end("<p1>error</p1>"); return; } //HTTP 状态码 200 : OK //Content Type:text/plain response.writeHead(200,{'Content-Type': 'text/html'}); //向客户端输出 //开始查询 connection.query(sql,function(err,result){ if(err){ console.log('[select error] -',err.message); return; } //console.log(result); response.write( '<!DOCTYPE html>'+ '<html lang="en">'+ '<head>'+ '<meta charset="utf-8"/>'+ '</head>'); response.write("这个是Nodejs实现的页面"); //打印表头 response.write("<table border='1'><tr>"); response.write("<th>书号</th>"); response.write("<th>书名</th>"); response.write("<th>作者</th>"); response.write("<th>出版社</th>"); response.write("<th>价格</th></tr>"); //遍历结果集输出 result.forEach(r =>{ response.write("<tr>"); response.write("<td>"+r.book_id+"</td>"); response.write("<td>"+r.title+"</td>"); response.write("<td>"+r.author+"</td>"); response.write("<td>"+r.publisher+"</td>"); response.write("<td>"+r.price+"</td>"); response.write("</tr>"); }) //发送响应数据 response.end(); }); }); server.listen(9003);
结果如下
注意的几点:
- connection.query是一个回调函数。在nodejs中,回调函数都是异步执行的。所以response.end()需要放在回调函数里面,不然就会出现write
after end的错误。 - 不用自己手动建立数据库连接。由query隐式的连接数据库,它可以创建或者复用空闲的数据库连接。
- response.write输出到客户端的时候需要加载html头部,声明其字符集,不然会出现乱码。
Nodejs定时器Promise
promise中有一个then方法能确保在回调函数结束后执行
Error: Cannot enqueue Handshake after invoking quit.
https://www.cnblogs.com/zaifeng0108/p/7224991.html
Error: Cannot enqueue Query after invoking quit.
https://blog.csdn.net/qq_39045645/article/details/95726315
部署到nginx
利用nginx的反向代理
后台执行all.js node $HOME/node/all.js&
修改nginx配置文件,添加如下片段,即可通过nginx的端口访问到
location ~/all.js$ { proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:9003; }
- connection.query是一个回调函数。在nodejs中,回调函数都是异步执行的。所以response.end()需要放在回调函数里面,不然就会出现write
-
(小白指南)在 Linux 服务器上安装 Nodejs、Nginx 以及部署 Web 应用
2019-12-13 14:00:59安装 Nodejs 安装 Nodejs 有两种方法,分别是下载源码编译和下载软件包,在 Nodejs 官网的下载页面(https://nodejs.org/en/download/)能可以看到两个不同的包,查看链接地址就能获取到对应版本的下载链接。 在...安装 Nodejs
安装 Nodejs 有两种方法,分别是下载源码编译和下载软件包,在 Nodejs 官网的下载页面(https://nodejs.org/en/download/)能可以看到两个不同的包,查看链接地址就能获取到对应版本的下载链接。
在写这篇文章时,Nodejs 的最新稳定版本是
v8.9.1
,所以以下步骤将以这个版本为例进行安装。1、编译安装
首先下载源码到本地:
wget -c https://nodejs.org/dist/v8.9.1/node-v8.9.1.tar.gz
下载完毕,提取 tar 文件:tar -zxvf node-v8.9.1.tar.gz
进入文件夹:cd node-v8.9.1
在编译代码之前,还需要在机器上安装一些软件包,使得编译可以正常运行:sudo yum install gcc gcc-c++
对源代码进行配置:./configure
进行编译:make
安装:sudo make install
安装完成后,可以输入命令
node -v
来检查 Nodejs 是否安装成功:$ node -v v8.9.1 # 如果出现了对应的版本号信息,说明安装成功
然而 Nodejs 在编译的时候往往需要花费较多的时间,在配置较低的服务器上编译则需要更久。所以对于配置较低的服务器,我更推荐下面的方法,利用已编译的二进制文件安装 Nodejs 。
2、直接安装编译好的 Nodejs(推荐)
这种方法相比第一种节省了编译安装的时间,所以安装起来更快。
第一步仍然需要下载对应的二进制文件:wget -c https://nodejs.org/dist/v8.9.1/node-v8.9.1-linux-x64.tar.xz
提取文件:tar -xvf node-v8.9.1-linux-x64.tar.xz
解压之后得到的文件夹就是已经安装好的 Nodejs 了,为了方便我们可以把它重命名一下(在这里我把它放到了
用户根目录下面的 app 的文件夹里,你也可以换成其他路径):mv node-v8.9.1-linux-x64 ~/app/nodejs
然而,这种方式安装的 Nodejs 并不完美。首先,Nodejs 的命令
node
和npm
并不能在全局使用。为了解决这个问题,我们需要建立两个软链接:sudo ln -s ~/app/nodejs/bin/node /usr/local/bin/node
sudo ln -s ~/app/nodejs/bin/npm /usr/local/bin/npm
其中,~/app/nodejs
是我们刚才安装的 Nodejs 的路径,在建立软链接的时候要注意区别。
现在,node
和npm
可以在全局使用了,同样输入命令node -v
来检查 Nodejs 是否安装成功:$ node -v v8.9.1 # 出现了对应的版本号信息,说明安装成功
还有一个问题,在 npm 下全局安装的模块无法直接在 bash 中执行。例如,我们要在 npm 中安装 yarn:
$ npm install -g yarn $ yarn bash: yarn: command not found...
为了解决这个问题,我们需要在 Linux 上手动配置环境变量。编辑
/etc/profile
文件:sudo vi /etc/profile
在文件的底部,添加下面两行代码:export NODE_HOME=~/app/nodejs/bin
export PATH=$NODE_HOME:$PATH
跟刚才一样,~/app/nodejs
是我们安装的 Nodejs 的路径。现在,npm 全局安装的模块也可以使用了:
$ yarn yarn install v1.3.2 info No lockfile found. [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh packages... info Lockfile not saved, no dependencies. Done in 0.09s.
至此,Nodejs 的安装已经顺利完成,我们可以在服务器上对 Nodejs 为所欲为了!
3、通过 yum 进行安装
我们也可以通过系统的 yum 来直接安装 Nodejs。这种方式安装时需要先确保能访问到官方库:
sudo yum install epel-release
然后我们就可以安装 Nodejs 了:sudo yum install nodejs
然而这种方法并不能确保安装的 Nodejs 为最新版本。在最新稳定版本为
v8.9.1
的情况下,我用这种方法安装的 Nodejs 的版本是v6.12.0
,升级过程也屡遭波折,所以这种方法也不推荐采用。Nginx 的安装与配置
安装 Nginx
CentOS 上安装 Nginx 比较简单,步骤跟 Nodejs 的编译安装非常类似,网上也有很多安装 Nginx 的帖子。我参考的是 CentOS 7 下安装 Nginx 这篇帖子,安装过程也非常顺利,没有出现任何问题,故在这里不再赘述。
配置 Nginx
安装完成并启动 Nginx 后,我们在本地的浏览器访问服务器,却发现无法连接:
然而,我们在终端运行命令
curl http://127.0.0.1
,却能看到 HTML 代码:说明 Nginx 启动正常,并且本地是能成功访问的!
这个问题困扰了我一段时间。后来百度的时候才发现,原来是被 CentOS 的防火墙拦截了(CentOS 7 的防火墙改为 firewall ,而 7 以下是 iptables,具体修改的命令请参考 Centos 7 开放查看端口 防火墙关闭打开 这篇文章)。于是修改服务器的防火墙,让它通行 80 端口:sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
这条命令的几个含义:–zone # 作用域 –add-port=80/tcp # 添加端口,格式为:端口/通讯协议 –permanent # 永久生效,没有此参数重启后失效
设置完还需要重启一下防火墙:
sudo firewall-cmd --reload
我们再用浏览器访问一下服务器,现在发现能成功访问了:
哈哈!渐入佳境了!
部署 Web 应用
现在的前端项目基本是围绕 Webpack 搭建的,而经过 Webpack 打包后会产生一系列 HTML 静态文件。我们的目的是要将 Webpack 打包后的文件放到 Nginx 上,让用户能够访问我们的项目。在这里,我们以 vue-cli 脚手架生成的项目为例子来进行讲解。
首先,生成一个打包后的项目文件:$ npm install -g vue-cli # 安装 vue-cli 脚手架 $ vue init webpack my-vue # 初始化项目 my-vue $ cd my-vue && npm install # 安装项目所需模块 $ npm run build # 对项目文件进行 Webpack 打包
这样一来,
my-vue
里面的dist
文件夹就是我们打包后的项目文件了。
为了方便,我们在根目录新建一个nginx
文件夹,并把my-vue
里面的dist
文件夹放到nginx
文件夹里,再重命名为vue
文件夹:$ mkdir ~/nginx $ mv ~/my-vue/dist ~/nginx/vue
然后我们需要对 Nginx 做一些配置,运行
sudo /usr/local/nginx/sbin/nginx -t
来确定 nginx 的配置文件:$ sudo /usr/local/nginx/sbin/nginx -t # 下面这行代码说明 nginx 的配置文件是 /usr/local/nginx/conf/nginx.conf nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
运行命令
sudo vim /usr/local/nginx/conf/nginx.conf
,对配置文件添加下面代码:http { ... // 其他配置代码 server { listen 8080; // 监听的端口 server_name localhost; root /home/shoufu/nginx/vue; // 项目文件的根目录 location / { index index.html index.htm; } } }
其中,
/home/shoufu
是我在服务器的用户根目录(~
)
修改完毕,保存退出。运行以下命令来重启 Nginx,让配置生效:sudo /usr/local/nginx/sbin/nginx -s reload
别忘了让防火墙开放 8080 端口,允许用户访问:sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
这时我们打开浏览器访问服务器的 8080 端口,却意外地得到了 403 Forbidden 的错误:赶紧到服务器下执行命令
$ curl http://127.0.0.1:8080
,发现也是 403 :恍然大悟!原来是 Nginx 还没设置好!
那究竟是什么问题?转战百度,才发现是 Nginx 的权限不足。为了保证文件能正确执行,Nginx 既需要文件的读权限,又需要文件所有父目录的可执行权限。因此运行以下命令,把vue
文件夹及所有父文件夹都加上读写权限:$ sudo chmod 755 ~ $ sudo chmod 755 ~/nginx $ sudo chmod 755 ~/nginx/vue
此时我们再打开浏览器访问服务器的 8080 端口:
大吉大利!!
至此,前端项目的部署已经基本完成!终于可以暂时抛去配置的烦恼,开开心心的回去修 Bug 了!
总结
如客官所见,这是一篇非常入门的关于 Nginx 的配置文章,没有任何技术难点。文章有意将浏览器不能访问服务器的两个问题写出来,是因为作者在排查问题的时候,发现在服务器直接访问 Nginx 的页面,能很好地检查、排除问题;在百度寻找问题答案的时候,发现这种做法也得到了不少人的肯定。因此我把它记录下来,希望能给后来搭建 Nginx 服务器的新人一些启发。由于篇幅所限,本文没有对 Nginx 的特性做深入讲解,还请有需要的客官查阅百度;如果时间允许,我也会尽量做好 Nginx 文章的更新。若您读完后发现没有任何收获,那很可能说明您已经不在小白的行列了:D(若您读完后能收获几张表情包那也是极好的)
最后,如果您读完后觉得这篇文章对您有所收获,欢迎点个赞或者点个收藏,这会鼓励我写出更多更好的文章出来的!:D
参考资料
- CentOS下nodejs最简单的安装方法:https://segmentfault.com/a/11...
- 解决linux下node.js全局模块找不到的情况:http://blog.csdn.net/y3530275...
- CentOS 7 下安装 Nginx:http://www.linuxidc.com/Linux...
- Centos 7 开放查看端口 防火墙关闭打开:http://blog.csdn.net/jack8598...
- 解决Nginx服务器中403 forbidden的错误:https://www.server110.com/ngi...
-
nodejs开发的web项目怎么打包部署
2020-12-05 09:32:07<div><p>之前没有使用过nodejs开发web项目,请问在linux环境进行部署的时候需要什么环境?pm2可以吗?还有web项目开发完以后怎么进行打包以及更新部署好一点?</p><p>该提问来源于开源项目&... -
阿里云服务器的web项目发布之路:(五)nodejs的安装和项目部署详细步骤
2018-11-01 09:16:29Nodejs如何部署在云服务上 第一步:下载nodejs安装包,并解压压缩包[解压后默认在root下面] wget命令下载Node.js安装包,该安装包是编译好的文件,解压之后,无需重复编 命令行:wget ... -
nodejs+mongodb于linux(centos 6.6 64bit)部署项目全过程
2017-08-04 18:30:35root下mkdir webroot 作安装目录 cd webroot 1.搭建node npm/cnpm环境 1.1安装npm,node下载: wget https://nodejs.org/dist/v4.5.0/node-v4.5.0-linux-x86.tar.gz 解压: tar xvzf node-v4.5.0-linux-... -
linux如何卸载nodejs_解决Linux无法正常安装与卸载Node.js的方法
2020-12-19 17:05:56前言Node.js是一个事件...实际生产环境,Node.js一般部署于Linux环境。自从买了VPS后就没闲着,总想要充分利用起来倒腾点东西。于是决定安装nodejs搭建web服务器等,如今nodejs稳定版本已经更新到8.x了,因此我就试... -
阿里云部署nodejs服务器(windows)
2019-10-07 18:00:28考虑到自己不是很适应ubuntu的命令行界面,于是买了个windows的,上网搜了一下,似乎都是用linux来部署nodejs的,所以只能自己摸索着来,所幸的是nodejs本身就相当于web服务器,所以不需要apache之类的额外配置 ... -
(总结)Linux利用动态开发语言访问数据库+部署到web
2020-05-05 15:28:40下面是一些安装+访问数据库+部署到web的实况,仅供参考 安装MySQL8.0.20 安装Java14+Tomcat9.0.34 ...Linux利用动态开发语言访问数据库+部署到web下载、安装动态开发语言编译(不需要编译安装就跳过... -
nodejs vuejs npm cnpm
2020-07-26 22:10:10NPM是随同NodeJS一起安装的包管理工具 类似于linux apt 等包管理器,直接安装包 如 npm install vue 等,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包... -
定位到Web,iOS,Android,Windows,OSX和Linux。 使用Angular 4,Ionic 3,Electron,NodeJS,Squirrel,...
2021-02-03 19:13:31端到端(to-to-end)解决方案,涵盖了移动应用,网络应用,桌面应用, restapi服务器,更新服务器,docker,kuberneters和部署脚本。 实施: 角4打字稿Web应用程序 ionic 3打字稿移动应用程序 电子角4打字稿桌面... -
如何部署一个本地的web项目到服务器-搭建linux环境(1)?
2019-10-08 04:32:45首先声明需要配置的软件:VirtualBox(linux客户端软件),centos (minimal iso版本,没有内置软件,自己折腾折腾),SFTP软件(加密文本传输软件),nodejs,nginx,yum里面的一些工具,这些软件安装过程大多数都... -
node.js 微信小程序 部署服务器_微信小程序开发入门(一),Nodejs搭建本地服务器...
2021-01-12 07:02:24在搭建web服务器之前,需要先安装node.js(安装版本最好为6.9.x)安装后node.js,接下来就需要安装http的镜像文件npm install http-server -g(windows下)sudo npm install http-server -g(linux和mac下)接下来在桌面... -
koa2-vue:nodejs + vuejs全栈最佳实践-源码
2021-02-03 17:32:46小前端从无到有实战系列 包含前一级数据库及...koa2 nodejs Web开发框架 mongodb数据库 猫鼬数据库模型 木偶爬虫实现 七牛上传 开发模式包含前预期分离和服务端渲染 Linux的ubuntu16 Nginx的 自动化发布部署 笔记: -
linux安装idea_mall前端项目的安装与部署
2020-11-30 10:18:49本文主要讲解mall前端项目mall-admin-web的在Windows和Linux环境下的安装及部署。Windows下的安装及部署下载nodejs并安装下载地址:https://nodejs.org/dist/v8.9.4/node-v8.9.4-x64.msi下载mall-admin-web的代码... -
nodejs中执行Shell命令(koa+vue)
2019-06-28 18:25:00nodejs中怎么执行系统命令...需要发送请求到web后台,web后台中来执行Linux命令实现重启或者升级服务的功能。刚好在工作中遇到了这样的问题,做一个简要记录。 先查了一部分资料http://nodejs.cn/api/child_proc...
-
基于java的学生管理系统
-
梯度带隙AlGaAs / GaAs导线光电阴极的光发射特性
-
MySQL 主从复制 Replication 详解(Linux 和 W
-
安卓app开发框架!分享两道阿里P7究极难度算法题,已开源
-
c#采集摄像头图像源码
-
使用vue搭建微信H5公众号项目
-
LitePalDemo3.2.3.zip
-
Oracle体系结构:内存结构和进程结构-体系架构
-
基音周期提取 matlab
-
Vue3教程
-
基于自适应模糊滑模的PMSM无速度传感控制研究
-
安卓app开发自学!15分钟的字节跳动视频面试,赶快收藏备战金九银十!
-
安卓开发教程pdf!请谈下Android消息机制,知乎上转疯了!
-
springcloud系列(零)之父项目搭建(非parent方式)
-
Ultimate 2021-03-02 16-12-43.zip
-
sql、xlsx格式的食谱大全.rar
-
MySQL 索引
-
Windows Server 2012无法安装 .NET3.5,找不到源文件
-
k-源码
-
基于java的web聊天系统