- 🎓毕业于安阳工学院计算机科学与技术学院软件工程专业
- 🧪 一名前端攻城狮,目前已有4年工作经验
- 💬 欢迎来向我提问或者交流前端技术!
- 📫 如果有工作机会,您可以通过以下链接来联系我,感谢!
gdyg / blog Goto Github PK
View Code? Open in Web Editor NEW博客存储处
博客存储处
样式初始化: body, h1, h2
body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; } body, button, input, select, textarea { font:12px/1.5tahoma, arial, \5b8b\4f53; } h1, h2, h3, h4, h5, h6{ font-size:100%; } address, cite, dfn, em, var { font-style:normal; } code, kbd, pre, samp { font-family:couriernew, courier, monospace; } small{ font-size:12px; } ul, ol { list-style:none; } a { text-decoration:none; } a:hover { text-decoration:underline; } sup { vertical-align:text-top; } sub{ vertical-align:text-bottom; } legend { color:#000; } fieldset, img { border:0; } button, input, select, textarea { font-size:100%; } table { border-collapse:collapse; border-spacing:0; }
1.babel是将es6转换成es5,转换后的代码遵循COMMONJS规范,浏览器是不能识别的,直接运行会报错;但是babel编译之后的代码体积较小;
2.借助webpack编译打包,可以实现代码在浏览器上运行但打包体积较大。
综上个人认为:直接用bable编译的代码大部分是一些公共方法之类,不单独使用需其他文件引入;而webpack打包的文件是直接运行的文件。
Babel是代码转换器,比如将ES6转成ES5,或者将JSX转成JS等。借助Babel,开发者可以提前用上新的JS特性,实现Babel代码转换功能的核心,就是Babel插件(plugin)。
Babel插件一般尽可能拆成小的力度,开发者可以按需引进。比如对ES6转ES5的功能,Babel官方拆成了20+个插件。
这样的好处显而易见,既提高了性能,也提高了扩展性。比如开发者想要体验ES6的箭头函数特性,那他只需要引入transform-es2015-arrow-functions插件就可以,而不是加载ES6全家桶。
但很多时候,逐个插件引入的效率比较低下。比如在项目开发中,开发者想要将所有ES6的代码转成ES5,插件逐个引入的方式令人抓狂,不单费力,而且容易出错。这个时候,可以采用Babel Preset。可以简单的把Babel Preset视为Babel Plugin的集合。比如babel-preset-es2015就包含了所有跟ES6转换有关的插件。
为解决项目每次都要重写babel配置文件问题, 可以尝试自定义Babel Preset
可以自定义文件
// mypreset.js
module.exports = {
presets: [
require("babel-preset-es2015"),
],
plugins: [
require("babel-plugin-transform-react-jsx"),
]
}
修改.babelrc文件, 引入自定义文件
{
"presets": [
"./mypreset.js"
]
}
用户可以把自定义的babel配置文件上传到npm上面, 直接在.babelrc中引入npm包名
Plugin/Preset配置项
{
"presets": [
presetName01, // 没有配置
[ presetName02, presetOptions02 ] // 有配置
]
}
不同的plugin/preset插件配置项可能不同, 具体参考插件的配置文档
(使用docker在centos上部署的gitlab)
原因:
gitlab磁盘空间不足造成的
1、docker进入容器:docker exec -it gitlab /bin/bash
2、查看磁盘空间大小:df -h 磁盘占用100%,确实是磁盘空间不足造成的
3、查看容器占用空间大小:du -sh显示空间总大小
4、查看具体文件占用大小:du -sh *显示每个文件的大小,以此进行查看下去,找到占用较大的文件.
5、可以找到/var/log/gitlab/gitlab-rails目录下有较大的日志文件,
6、使用rm -rf xxxxxxxx.log或者xxxx.log.gz删除较大文件
7、还可以查看var目录下的大文件,找到/var/opt/gitlab/backups备份文件较大,可以把备份文件转移到宿主机上或者你本地的硬盘里,然后删除(转移宿主机上:docker cp gitlab:/var/opt/gitlab/backups 宿主机目录)
8、现在只是删除了容器内的日志、一般容器文件会存在挂载卷挂载在宿主机上,
需要退出容器在宿主机上查看磁盘空间情况
9、在宿主机上执行df -h查看磁盘情况
,找到gitlab对应的目录,cd到该目录下,使用du -sh * 以此查找到日志文件,发现很大,将其删除.
10、将gitlab容器重启:docker restart gitlab
11、解决
gitlab使用命令:
1、gitlab-ctl restart\start\stop:在容器中重启\启动\停止gitlab
2、gitlab-ctl tail 服务名后者不加:查寻该服务运行情况
3、gitlab-ctl status:查看gitlab运行状态,便于找到错误
4、vim /etc/gitlab/gitlab.rb:修改配置文件
5、git_data_dirs({ "default" => { "path" => "/home/data/gitlab/git-data" } }):修改默认的gitlab存放数据地址,如果本来里面有数据,需要rsync -av /var/opt/gitlab/git-data/repositories /home/data/gitlab/git-data.将之前的转移到指定目录
6、gitlab-ctl reconfigure:刷新配置文件
7、chmod -R 777 目录名: 修改权限
8、chmod -R 0700 目录名 : 取消修改权限
9、find / -size +100M 查找大文件
10、du -h --max-depth=1 /home/wwwroot/ : 查看文件具体大小
11、free -m : 查看内存使用情况
12、gitlab-rake gitlab:backup:create : gitlab备份
13、find . -type f -regex ".*.(c|h)" : 查找当前目录下指定后缀的文件
14、ls -lSh find / -type f -name "*.log"
| head -n 5 : find / -type f -name *.conf | xargs ls -lSh | head -n 1 查找指定后缀文件,并显示最大的文件
mysql启动报错 : mysql_install_db --user=mysql --ldata=/var/lib/mysql/
update user set authentication_string=password('my_password') where user='root';
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your password';
1、rpm -qa|grep -i mariadb : 查看mariadb安装情况
2、rpm -qa|grep mariadb|xargs rpm -e --nodeps : 卸载安装的mariadb
3、wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm : 下载安装包文件
4、yum -y install mysql57-community-release-el7-10.noarch.rpm
5、 yum -y install mysql-community-server : yum install mysql-server
6、启动 mysql 服务 。
systemctl start mysqld.service #启动 mysql
systemctl restart mysqld.service #重启 mysql
systemctl stop mysqld.service #停止 mysql
systemctl enable mysqld.service #设置 mysql 开机启动
7、mysql常用文件路径:
/etc/my.cnf 这是mysql的主配置文件
/var/lib/mysql mysql数据库的数据库文件存放位置
/var/logs/mysqld.log 数据库的日志输出存放位置
8、grep "A temporary password" /var/logs/mysqld.log : 查看初始密码
参考链接: https://juejin.cn/post/6939691851746279437
HTTP 缓存又分为强缓存和协商缓存:
首先通过 Cache-Control 验证强缓存是否可用,如果强缓存可用,那么直接读取缓存
如果不可以,那么进入协商缓存阶段,发起 HTTP 请求,服务器通过请求头中是否带上 If-Modified-Since 和 If-None-Match 这些条件请求字段检查资源是否更新:
若资源更新,那么返回资源和 200 状态码
如果资源未更新,那么告诉浏览器直接使用缓存获取资源
1xx:表示目前是协议的中间状态,还需要后续请求
2xx:表示请求成功
3xx:表示重定向状态,需要重新请求
4xx:表示请求报文错误
5xx:服务器端错误
常用状态码:
101 切换请求协议,从 HTTP 切换到 WebSocket
200 请求成功,有响应体
301 永久重定向:会缓存
302 临时重定向:不会缓存
304 协商缓存命中
403 服务器禁止访问
404 资源未找到
400 请求错误
500 服务器端错误
503 服务器繁忙
GET: 通用获取数据
HEAD: 获取资源的元信息
POST: 提交数据
PUT: 修改数据
DELETE: 删除数据
CONNECT: 建立连接隧道,用于代理服务器
OPTIONS:列出可对资源实行的请求方法,常用于跨域
TRACE:追踪请求-响应的传输路径
应用层 -> 表示层 -> 会话层 -> 传输层 -> 网络层 -> 数据链路层 -> 物理层
HTTPS 是在 HTTP 和 TCP 之间建立了一个安全层,HTTP 与 TCP 通信的时候,必须先进过一个安全层,对数据包进行加密,然后将加密后的数据包传送给 TCP,相应的 TCP 必须将数据包解密,才能传给上面的 HTTP。
三次握手的主要流程:
一开始双方处于 CLOSED 状态,然后服务端开始监听某个端口进入 LISTEN 状态
然后客户端主动发起连接,发送 SYN,然后自己变为 SYN-SENT,seq = x
服务端收到之后,返回 SYN seq = y 和 ACK ack = x + 1(对于客户端发来的 SYN),自己变成 SYN-REVD
之后客户端再次发送 ACK seq = x + 1, ack = y + 1给服务端,自己变成 EASTABLISHED 状态,服务端收到 ACK,也进入 ESTABLISHED
SYN 需要对端确认,所以 ACK 的序列化要加一,凡是需要对端确认的,一点要消耗 TCP 报文的序列化
一开始都处于 ESTABLISH 状态,然后客户端发送 FIN 报文,带上 seq = p,状态变为 FIN-WAIT-1
服务端收到之后,发送 ACK 确认,ack = p + 1,然后进入 CLOSE-WAIT 状态
客户端收到之后进入 FIN-WAIT-2 状态
过了一会等数据处理完,再次发送 FIN、ACK,seq = q,ack = p + 1,进入 LAST-ACK 阶段
客户端收到 FIN 之后,客户端收到之后进入 TIME_WAIT(等待 2MSL),然后发送 ACK 给服务端 ack = 1 + 1
服务端收到之后进入 CLOSED 状态
客户端这个时候还需要等待两次 MSL 之后,如果没有收到服务端的重发请求,就表明 ACK 成功到达,挥手结束,客户端变为 CLOSED 状态,否则进行 ACK 重发
为什么需要等待 2MSL(Maximum Segement Lifetime):
因为如果不等待的话,如果服务端还有很多数据包要给客户端发,且此时客户端端口被新应用占据,那么就会接收到无用的数据包,造成数据包混乱,所以说最保险的方法就是等服务器发来的数据包都死翘翘了再启动新应用。
1个 MSL 保证四次挥手中主动关闭方最后的 ACK 报文能最终到达对端
1个 MSL 保证对端没有收到 ACK 那么进行重传的 FIN 报文能够到达
为什么是四次而不是三次?
** 如果是三次的话,那么服务端的 ACK 和 FIN 合成一个挥手,那么长时间的延迟可能让 TCP 一位 FIN 没有达到服务器端,然后让客户的不断的重发 FIN
1、tar解压后撤回操作: tar -tf xx.tar | xargs rm -rf
2、zip解压后撤回操作: zipinfo -1 path/xx.zip | xargs rm -rf
3、ps -ef | grep ora : 查看是否安装oracle数据库
4、ll /proc/7929/cwd : 查看进程所在位置 : ps aux| grep 端口号
5、netstat -tunlp|grep 8087
6、ps -aux | grep 2407
7、rsync -avzu --progress 目录 目标目录
8、date.timezone = Asia/Shanghai : /etc/php.ini文件
9、sync; echo 3 > /proc/sys/vm/drop_caches : 释放内存空间
10、rm -rf ~/.cache/pip : 清除pip缓存
11、cd /home/eln/.cache : 缓存文件
docker环境下mysql数据库的备份
DATE=date +%Y%m%d%H%M%S
BACK_DATA=erp-${DATE}.sql
#导出表结构,不包括表数据
#docker exec -i xin-mysql-pro mysqldump -d erp-dq-pro -u root -p123456 --tables sys_user > /data/mysql/data/backup/${BACK_DATA}
#导出表数据,xin-mysql为数据库名
#docker exec -i xin-mysql-pro mysqldump -t erp-dq-pro -u root -p123456 > /data/mysql/data/backup/${BACK_DATA}
#导出表结构及数据,xin-mysql为数据库名
docker exec -i xin-mysql-pro mysqldump erp-dq-pro -u root -p123456 > /data/mysql/data/backup/${BACK_DATA}
docker exec -i [容器id/名称] mysqldump [数据库名称] -u root -p[密码] > /data/mysql/backup/solo-20200618.sql
link: https://github.com/polestarHui
cover: //i.loli.net/2018/12/15/5c14f329b2c88.png
avatar: //i.loli.net/2018/12/15/5c14f3299c639.jpg
rpm -qa|grep vsftpd: 查看是否安装过ftp
rpm -e vsftpd-2.2.2-24.el6.x86_64: 可以卸载ftp
yum -y install vsftpd: yum安装ftp : 也可以使用docker安装ftp,具体去搜索教程
vi /etc/vsftpd/vsftpd.conf: 修改配置文件
将anonymous_enable=YES,修改为 anonymous_enable=NO
service vsftpd restart: 重启ftp 如果不行换这个语句执行:systemctl restart vsftpd.service
ftp用户名:testftp,密码testftp,并将用户绑定到 /var/ftp/testftp
useradd -d /var/ftp/testftp testftp
passwd testftp
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT : 开启防火钱21端口
service iptables save: 保存
service iptables restart: 重启
如果建新文件夹时出现 550 Create directory operation failed. (550报错)时,或者切换目录出错,应该是没有权限导致的!
vi /etc/selinux/config
打开配置将 SELINUX的值设为disabled
ls :: 添加开机自启动 : chkconfig vsftpd on
不确定是否已经加入了开机启动项可以运行chkconfig –list进行查看
设置FTP用户账号。设置成功后,即可通过该账号登录FTP服务器。
(1)设置FTP用户的账号,例如账号为“ftpuser1”,目录为/home/ftpuser1,且设置不允许通过ssh登录。
useradd -d /home/ftpuser1 -s /sbin/nologin ftpuser1
(2)设置账号对应的密码,例如密码为“ftpuser1”。
passwd ftpuser1
修改pam配置
修改vsftpd的pam配置,使用户可以通过自己设置的FTP用户帐号和密码连接到云服务器。
(1)修改pam。
vim /etc/pam.d/vsftpd
内容修改为:
#%PAM-1.0
auth required /lib64/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
auth required /lib64/security/pam_unix.so shadow nullok
auth required /lib64/security/pam_shells.so
account required /lib64/security/pam_unix.so
session required /lib64/security/pam_unix.so
(2)确认修改后的文件是否正确。
[root@VM_250_202_tlinux ~]# cat /etc/pam.d/vsftpd #%PAM-1.0
auth required /lib64/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
auth required /lib64/security/pam_unix.so shadow nullok
auth required /lib64/security/pam_shells.so
account required /lib64/security/pam_unix.so
session required /lib64/security/pam_unix.so
(3)重启vsftpd服务,使修改生效。
service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
配置vsftpd服务器中chroot
在vsftpd服务器的默认设置中,本地用户可以切换到主目录以外的目录进行浏览访问,这样对于服务器来说是不太安全的,因为任何用户可以随时浏览到别的用户的私有信息,下面介绍如何使用chroot选项来防止这种情况的发生。
与该功能相关的选项主要包括:
chroot_local_user
chroot_list_enable
chroot_list_file
可以通过如下两种方法来设置chroot,从而杜绝上述不安全的情况发生:
(1)设置所有的本地用户执行chroot,只要将/etc/vsftpd/vsftpd.con文件中的chroot_local_ user值置为YES,即chroot_local_user=YES。
(2)设置指定的用户执行chroot,按照如下方法进行设置:
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
设置后,只有/etc/vsftpd.chroot_list文件中指定的用户才能够执行chroot命令。
author: 阮一峰
published: 2017-09-01
progress: 正在阅读...
rating: 5,
postTitle: ES6 标准入门
postLink: //gdyg.github.io/#/post/5
cover: //cdn.jsdelivr.net/gh/chanshiyucx/yoi@latest/book/ES6-%E6%A0%87%E5%87%86%E5%85%A5%E9%97%A8.jpg
link: //www.duokan.com/book/169714
description: 柏林已经来了命令,阿尔萨斯和洛林的学校只许教 ES6 了...他转身朝着黑板,拿起一支粉笔,使出全身的力量,写了两个大字:“ES6 **!”(《最后一课》)。
1、vim /usr/lib/systemd/system/nginx.service : 新增文件
2、
Unit
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target
3、文件内容解释
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径
[Install]服务安装的相关设置,可设置为多用户
4、systemctl daemon-reload
5、以754的权限保存在目录:/usr/lib/systemd/system
6、命令集合
今日は幸せな気分
three.js是基于原生WebGL封装运行的三维引擎,在所有WebGL引擎中,Three.js是国内文资料最多、使用最广泛的三维引擎。
既然Threejs是一款WebGL三维引擎,那么它可以用来做什么想必你一定很关心。所以接下来内容会展示大量基于Threejs引擎或Threejs类似引擎开发的Web3D应用,以便大家了解。
在人与人之间联系的互联网时代,主要是满足人与人之间的交流,Web页面的交互界面主要呈现为2D的交互效果,比如按钮、输入框等。
随着物联网的发展,工业、建筑等各个领域与物联网相关Web项目网页交互界面都会呈现出3D化的趋势。物联网相比较传统互联网更强调的是人与物、物与物的联系,当人与物进行交互的时候,比如你通过网页页面远程控制工厂中的一台机器启动或关停,你可以在网页上通过div元素写一个按钮,然后表示机器设备的开关,当然你也可以把该设备以3D的形式展示在网页上,然后就像玩游戏一样直接点击模型上的开关按钮,这两种方式肯定是3D的方式更为直观,当然开发成本也比较大。
在浏览器不支持WebGL技术的时代,如果你想在网页上展示一款产品往往是通过2D图片的形式实现。如果想3D展示一个产品,往往依赖于OpenGL技术,比如通过unity3D或ue4开发一个桌面应用,这样做往往很难随意传播,需要用户下载程序很麻烦,如果是通过Web的方式展示产品的三维模型,一个超链接就可以随意传播。
随着WebGL技术的持续推广,5G技术的持续推广,各种产品在线3D展示将会变得越来越普及,比如一家汽车公司的新款轿车可以在官网上在线预览,也许有一天一些电商平台会通过3D模型取代2D图片,现在你朋友推荐推荐给你一款新衣服,你会说发一张图片看看,也许将来你会说发来一个3D模型链接看看。
与webgl相关的数据可视化主要是两方面,一方面是海量超大数据的可视化,另一方面是与3D相关的数据可视化。对于超大的海量数据而言,基于canvas、svg等方式进行web可视化,没有基于WebGL技术实现性能更好,对于3D相关的数据可视化基于WebGL技术,借助3D引擎Threejs可以很好的实现。
解析GeoJOSN数据**GDP数据可视化:http://www.yanhuangxueyuan.com/3D/geojsonChina/index.html
阿里云centos扩容后ssh远程连接失败解决
1、使用本地ssh和Workbench和云助手都连接不上,使用vnc连接
2、在vnc里面使用fdisk -l查看磁盘情况,看有几个分区.
3、使用df -h查看文件系统挂载情况
4、使用blkid查看分区列表和挂载文件系统信息
5、如果发现分区缺少只有一个主分区/dev/vda1这种情况,那么恭喜你和我的情况是一样的,可以往下继续进行
6、新建文件系统
mkfs.ext4 /dev/vda2(新建文件系统的名称和原先保持一致)
将新建文件系统挂载到原有目录上
mount /dev/vda2 /data
7、修改分区表,运行fdisk -lu命令查看分区信息,并记录旧分区的起始和结束的扇区位置。
8、mount | grep "/dev/vdb" : 查看数据盘的挂载路径,根据返回的文件路径卸载分区,直至完全卸载已挂载的分区。查看挂载(mount)信息
9、取消挂载(umount)数据盘 : umount /dev/vdb1
10、查看操作结果。
mount | grep "/dev/vdb"
11、使用fdisk工具删除旧分区(如果你是想扩容原有的两个数据盘,都要把它们删除) :
运行fdisk -u /dev/vdb:分区数据盘。
输入p:打印分区表。
输入d:删除分区。
输入p:确认分区已删除。
输入w:保存修改并退出。
12、使用fdisk命令新建分区 :
运行fdisk -u /dev/vdb:分区数据盘。
输入p:打印分区表。
输入n:新建分区。
输入p:选择分区类型为主分区。
输入<分区号>:选择分区号(根据提示选取号,一般是1)。
设置新分区的起始位置和结束位置。
输入w:保存修改并退出。
13、运行以下任一命令通知内核更新分区表 :
partprobe /dev/vdb
partx -u /dev/vdb1
14、运行以下命令确保分区表已经增加:
lsblk /dev/vdb
15、运行以下命令再次检查文件系统,确认扩容分区后的文件系统状态为clean(如果运行命令后未显示文件系统状态为clean,您可以尝试用e2fsck -n /dev/vdb1检查)。
e2fsck -f /dev/vdb1
16、扩容文件系统。
ext文件系统(例如ext3和ext4):依次运行以下命令调整ext文件系统大小并重新挂载分区。调整ext*文件系统大小(如果你的是xfs文件系统,请参照xfs的扩容文件系统和分区挂载的方法.链接:https://help.aliyun.com/document_detail/25452.htm?spm=a2c4g.11186623.2.31.138b4eb7Br0APo#section-gg7-ilv-h3j)。
resize2fs /dev/vdb1
17、分区挂载到/mnt。
mount /dev/vdb1 /mnt
aliyun可删除的文件
1、tm/server/ocean-run下nohup日志
2、查看下阿里云服务器/tm/server/ocean-thr-adaptor文件夹下的application.unless文件内容,看下ftp 链接配置
3、for i in ls *.log*
do
cat /dev/null >$i
done
4、cat /dev/null > filename
5、只输出错误信息到日志文件
nohup ./program >/dev/null 2>log &
什么信息也不要
nohup ./program >/dev/null 2>&1 &
git常用操作命令
git rm -r --cached '文件夹名'
git commit -m '删除一个文件夹'
git push -u origin master
先把路由改成哈希路由,在package.json中添加"homepage": "./"
把项目提交到GitHub上,在忽略文件中注释掉打包的文件,或者之后使用git add -f build强制提交
git branch gh-pages // 新建本地分支
git checkout gh-pages // 切换到本地分支
git add -f build //强制提交build文件
git subtree push --prefix=build origin gh-pages
新建远程分支并把主分支上的build文件夹添加到gh-pages分支上
git push origin --delete gh-pages
git branch -d gh-pages
git reset --hard commitid
git push -f
git reset HEAD^
git reset --hard origin/master
git checkout develop
git merge --no-ff develop_name -m 'xxx'//显示Already up-to-date.说明合并成功
git push origin develop//上传分支
git branch -d 分支名
git checkout master
git merge --no-ff develop -m 'xxx'//显示Already up-to-date.说明合并成功
git push origin master//上传主干
linux常用操作指令
1、firewalld的基本使用
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
查看所有打开的端口: firewall-cmd --list-ports
添加
firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
查看
firewall-cmd --zone=public --query-port=80/tcp
删除
firewall-cmd --zone=public --remove-port=80/tcp --permanent
2、netstat -anp |grep 端口号
ssh连接Linux服务器
将本地文件上传到Linux服务器上
下载文件夹
scp -r 远程登录服务器用户名@远程服务器ip地址:/下载文件夹的目录 本地目录
下载文件
scp 远程登录服务器用户名@远程服务器ip地址:/下载文件的目录 本地目录
上传文件夹
scp -r 本地目录 远程登录服务器用户名@远程服务器ip地址:/下载文件夹的目录
上传文件
scp 本地目录 远程登录服务器用户名@远程服务器ip地址:/下载文件的目录
scp -r /mac/test/ [email protected]:/var/test/
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.