• linux学习笔记


    基础命令

    网络相关的基础命令

     ifconfig  // 查看ip地址
     ip addr   // 如何不支持,那个可以使用
     vi /etc/sysconfig/network-scripts/ifcfg-xx   // 比如lo eth0 什么的,把ONBOOT=no 改成yes就开始网卡
     yum install net-tools  // 安装就可以用ipconfig了
    

    替换默认yum源地址

    http://mirrors.163.com/.help/centos.html 教程

    第一步首: 先备份/etc/yum.repos.d/CentOS-Base.repo

    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    

    第二步: 下载对应版本repo文件, 放入/etc/yum.repos.d/

    cd /etc/yum.repos.d/
    ls
    wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
    
    

    第三步: 运行以下命令生成缓存

    yum clean all
    yum makecache
    

    SSH

    SSH是什么

    image

    • SSH: Secure Shell 安全外壳服务
    • 建立在应用层基础上的安全协议
    • 可靠,专为远程登录会话和其他网络服务提供安全性的协议

    服务器安装SSH服务

    安装SSH

    yum install openssh-server
    

    启动

    service sshd start
    

    设置开机启动

    chkconfig sshd on
    

    客户端安装SSH客户端

    SSH是典型的客户端与服务端的交互模式,客户端广泛的支持各个平台

    • windows有很多的工具可以支持shh的连接功能,比如xShell,Putty,secureCRT
    • linux yum install openssh-clients

    SSH客户端连接服务器

    ssh root@140.143.244.18 就登录了  账号@ip
    

    SSH config用法详解

    • config为了方便我们批量管理多个ssh
    • config存放在~/.ssh/config
    • config配置语法
      image
      vim ~/.ssh/config
    host "jia"
        HostName 192.168.0.106
        User root
        Port 22
    host "jia2"
        HostName 192.168.0.106
        User root
        Port 22    
    
    ssh jia 就可以直接登录了jia那个ip的服务器
    

    免密码登 方案只SSH key

    • ssh key使用非对称加密方式生成公钥和私钥
    • 私钥存放在本地~/.ssh 目录

    生成

    ssh-keygen -t rsa
    ssh-keygen -t dsa
    
    authorized_keys  那个文件新建在.ssh 下面加上公钥就可以免密登录
    在linex上需要ssh-add ~/.ssh/imooc_rsa 添加到空间
    

    SSH端口安全

    默认端口22
    避免被别人利用,改默认端口

    修改/etc/ssh/shh_config的配置 Port 2222
    然后重启 service sshd restart
    

    常用命令

    软件操作

    安装的软件:yum
    安装:yum install xxx
    卸载:yum remove xxx
    搜索:yum search xxx
    清理缓存:yum clean packages
    列出已安装:yum list
    软件包信息:yum info xxx
    

    服务器强件资源和磁盘操作

    内存:free -m 用m来展示g就是g
    硬盘:df -h 可以看懂的形式
    负载:w/top 
    cpu个数和核数 cat /proc/cpuinfo
    fdisk命令用于观察硬盘实体使用情况,也可对硬盘分区
    
    文件的操作命令
    ls
    touch
    mkdir  mkdir -p c/d/s 就可以循环创建
    cd
    rm 删除文件和目录 rm -rf 删除非空文件
    cp 复制
    mv 移动 mv ./chen.log ~/ 移动到家目录
    重命名 mv ./chen.log ./j.log
    pwd
    

    文件和文件夹操作命令

    根目录 /
    家目录 /home
    当前用户的家目录  ~
    临时目录 /tmp
    配置目录 /etc
    用户程序目录 /usr
    

    vim

    
    

    用户权限421rwx 读写执行

    chmod
    

    文件搜索、查找、读取

    tail 从文件尾部开始读
    head 从文件头部读
    cat  读取整个文件
    more 分页读取
    less 可控分页
    grep  搜索关键词  grep "a" j.log 在文件中搜索 -n就是统计
    find 查找文件
    
        find . -name "*.vue"  
        将目前目录及其子目录下所有延伸档名是vue的文件列出来
        
        find . -type f  
        将目前目录其其下子目录中所有一般文件列出  d: 目录c: 字型装置文件b: 区块装置文件p: 具名贮列f: 一般文件l: 符号连结s: socket
        
        find . -ctime -20 
        将目前目录及其子目录下所有最近 20 天内更新过的文件列出
        
        find /var/log -type f -mtime +7 -ok rm {} ;
        查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们,可以用于目录操作
        
        find . -type f -perm 644 -exec ls -l {} ;
        查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件
        
        find / -type f -size 0 -exec ls -l {} ;
        为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径
        
    wc  统计个数   cat j.log | wc -l 统计出行数    grep "a" j.log | wc -l
    

    压缩命令

    -c: 建立压缩档案 
    -x:解压 
    -t:查看内容 
    -r:向压缩归档文件末尾追加文件 
    -u:更新原压缩包中的文件
    
    -z:有gzip属性的 
    -j:有bz2属性的 
    -Z:有compress属性的 
    -v:显示所有过程 
    -O:将文件解开到标准输出 
    
    参数 -f 是必须的:
    -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
    
    压缩
    
    tar –cvf jpg.tar *.jpg       // 将目录里所有jpg文件打包成 tar.jpg 
    tar –czf jpg.tar.gz *.jpg    // 将目录里所有jpg文件打包成 jpg.tar 后,并且将其用 gzip 压缩,生成一个 gzip 压缩过的包,命名为 jpg.tar.gz 
    tar –cjf jpg.tar.bz2 *.jpg   // 将目录里所有jpg文件打包成 jpg.tar 后,并且将其用 bzip2 压缩,生成一个 bzip2 压缩过的包,命名为jpg.tar.bz2 
    tar –cZf jpg.tar.Z *.jpg     // 将目录里所有 jpg 文件打包成 jpg.tar 后,并且将其用 compress 压缩,生成一个 umcompress 压缩过的包,命名为jpg.tar.Z 
    rar a jpg.rar *.jpg          // rar格式的压缩,需要先下载 rar for linux 
    zip jpg.zip *.jpg            // zip格式的压缩,需要先下载 zip for linux
    解压
    
    tar –xvf file.tar         // 解压 tar 包 
    tar -xzvf file.tar.gz     // 解压 tar.gz 
    tar -xjvf file.tar.bz2    // 解压 tar.bz2 
    tar –xZvf file.tar.Z      // 解压 tar.Z 
    unrar e file.rar          // 解压 rar 
    unzip file.zip            // 解压 zip 
    总结
    
    1、*.tar 用 tar –xvf 解压 
    2、*.gz 用 gzip -d或者gunzip 解压 
    3、*.tar.gz和*.tgz 用 tar –xzf 解压 
    4、*.bz2 用 bzip2 -d或者用bunzip2 解压 
    5、*.tar.bz2用tar –xjf 解压 
    6、*.Z 用 uncompress 解压 
    7、*.tar.Z 用tar –xZf 解压 
    8、*.rar 用 unrar e解压 
    9、*.zip 用 unzip 解压
    

    系统用户操作命令

    useradd 添加用户
    adduser 添加用户
    userdel 删除用户
    passwd  设置密码
    

    防火墙设置

    iptables命令是Linux上常用的防火墙软件
    
    安装 yum install firewalld
    启动 service firewalld start
    检查状态 service firewalld status
    关闭或禁用防火墙 service firewalld stop/disable
    
    iptables(选项)(参数)
    -t<表>:指定要操纵的表;
    -A:向规则链中添加条目;
    -D:从规则链中删除条目;
    -i:向规则链中插入条目;
    -R:替换规则链中的条目;
    -L:显示规则链中已有的条目;
    -F:清楚规则链中已有的条目;
    -Z:清空规则链中的数据包计算器和字节计数器;
    -N:创建新的用户自定义规则链;
    -P:定义规则链中的默认目标;
    -h:显示帮助信息;
    -p:指定要匹配的数据包协议类型;
    -s:指定要匹配的数据包源ip地址;
    -j<目标>:指定要跳转的目标;
    -i<网络接口>:指定数据包进入本机的网络接口;
    -o<网络接口>:指定数据包要离开本机所使用的网络接口。
    

    提权操作sudo和文件传输操作

    提权:sudo    visudo编辑
    下载 wget curl
    文件上传  scp   scp j.log chenjinxinlove@192.168.0.106:/tmp/  上传到那个目录了
    

    webServer

    apache

    安装 yum install httpd
    启动 service httpd start
    停止 service httpd stop
    
    配置文件  /etc/httpd/conf
    

    nginx 详情看nginx的配置

    数据库服务

    mysql

    CentOS7默认安装mariadb数据库
        yum remove mariadb-libs.x86_64
    下载MYsql源
        https://dev.mysql.com/downloads/repo/yum/
        
        cd /tmp/
        wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
    安装源
        yum localinstall mysql57-community-release-el7-8.noarch.rpm
    安装服务器
        yum install mysql-community-server
    默认密码查找
        cat /var/log/mysqld.log | grep "password"
    启动 
        service mysqld start/restart
    停止
        service mysqld stop
    连接
        mysql -uroot -p 密码
    远程连接
    开启Genelog
        set global general_log_file="/tmp/genetal.log";//设置文件路径
        set global general_log="on";// 开启
    新建用户和权限操作
    忘记root密码怎么办
        
    

    缓存服务

    memcached

    安装  yum install memcached
    启动  memcached -d(守护进行) -l(支持的ip) -m(分配多少内存) -p (端口号11211)
    停止  kill pid
    

    redis

    安装 源码编译安装
    
    启动 redis-server start/restart
    停止 redis-server stop
    客户端 redis-client
    
    // 下载到/tmp目录
    获取源码 wget http://download.redis.io/releases/redis-4.0.11.tar.gz
    解压 tar xvfz redis-4.0.11.tar.gz
    cd src && ls
    启动 ./redis-server
    

    git

    安装 yum install git
    git 命令自动补全设置
    

    php

    java

    java的安装

    yum -y isntall java-1.8.0 -openjdk
    java -version 查看版本
    

    tomcat安装

    官网下载,源码编译安装
    https://tomcat.apache.org/
    wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.10/bin/apache-tomcat-9.0.10.tar.gz
    
    启动到tomcat的目录sh start.sh
     cd /tmp/apache-tomcat-9.0.10/bin/
     
     
     bootstrap.jar       ciphers.bat                   configtest.bat  digest.sh         shutdown.sh      tomcat-native.tar.gz  version.sh
    catalina.bat        ciphers.sh                    configtest.sh   setclasspath.bat  startup.bat      tool-wrapper.bat
    catalina.sh         commons-daemon.jar            daemon.sh       setclasspath.sh   startup.sh       tool-wrapper.sh
    catalina-tasks.xml  commons-daemon-native.tar.gz  digest.bat      shutdown.bat      tomcat-juli.jar  version.bat
    

    maven安装

    官网下载,源码编译安装
    https://maven.apache.org/
    wget http://mirrors.shu.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
    
    解压  tar xvfz apache-maven-3.5.4-bin.tar.gz
    
    建立软连接
    
    ln -s /tmp/apache-maven-3.5.4/bin/mvn /usr/local/bin/
    或   但是要使用绝对路径
    ln -s /tmp/apache-maven-3.5.4/bin/mvn /usr/bin/
    

    python

    软件包管理 pip

    yum install python2-pip
    
    换成豆瓣源
    
    mkdir ~/.pip
    vim ~/.pip/pip.conf
    [global]
    timeout=60
    index-url = https://pypi.tuna.tsinghua.edu.cn/simple
    

    虚拟环境 virtualenv

    pip install virtualenv
    

    重要的服务

    crontab 定时任务

    ntpdate日期同步

    ntpdate cn.pool.ntp.org
    

    logrotate 日志切割

    /etc/logrotate.d 目录下
    
    [root@VM_0_4_centos logrotate.d]# ls
    2017-08-29  bootlog  chrony  httpd  mysql  nginx  ppp  syslog  wpa_supplicant  yum
    [root@VM_0_4_centos logrotate.d]# cat nginx
    /var/log/nginx/*.log {
            daily
            missingok
            rotate 52
            compress
            delaycompress
            notifempty
            create 640 nginx adm
            sharedscripts
            postrotate
                    if [ -f /var/run/nginx.pid ]; then
                            kill -USR1 `cat /var/run/nginx.pid`
                    fi
            endscript
    }
    [root@VM_0_4_centos logrotate.d]# pwd
    

    supervisor 进程管理

    pip install supervisor
    

    监控系统zabbix

    官网 https://www.zabbix.com/

    安装 https://www.zabbix.com/download

    其他学习

    linux服务

    RPM包默认安装的服务

    独立服务

    启动
        使用/etc/init.d/ 目录中脚本启动服务如:/etc/init.d/httpdstart/stop/restart
        使用servide命令启动服务如:service httpd start|stop|restart
    自启动
        使用chkconfig命令来管理自启动如:chkconfig --level 2345 httpd on | off
        修改/etc/rc.local文件,如vi/etc/rc.d/rc.local 加入 /etc/init.d/httpd  start
        使用ntsysv命令管理服务自启动
    

    源码包安装的服务

    启动
    	使用源码包启动脚本启动服务:如 /usr/local/apache2/bin/apachect| start
    自启动
    	自能修改/etc/rc.loacl文件
    

    系统管理

    进程管理

    进程查看

    ps aux
    	USER:该进程属于那个使用者账号的?
    	• PID :该进程的进程ID号。
    	• %CPU:该进程使用掉的 CPU 资源百分比;
    	• %MEM:该进程所占用的物理内存百分比;
    	• VSZ :该进程使用掉的虚拟内存量 (Kbytes)
    	• RSS :该进程占用的固定的内存量 (Kbytes)
    	• TTY :该进程是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
    	• STAT:该程序目前的状态,主要的状态有:
    		   R :该程序目前正在运作,或者是可被运作;
    		   S :该程序目前正在睡眠当中 (可说是 idle 状态啦!),但可被某些讯号(signal) 唤醒。
    		   T :该程序目前正在侦测或者是停止了;
    		   Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
    	• START:该进程被触发启动的时间;
    	• TIME :该进程实际使用 CPU 运作的时间。
    	• COMMAND:该程序的实际指令为什么?
    ps -le
    pstree
    	-p   显示进程pid
    	-u  显示进程的所属用户
    

    查看系统监控健康状态

    选项
    	-d读秒:指定top命令每隔几秒更新,默认3秒
    	-b :使用批处理模式输出。一般和-n选项合用
    	-n 次数:指定top命令执行的次数。一般和-b一起使用
    top命令的交互模式当中可以执行的命令
    	h帮助
    	P: 以cpu使用频率排序,是默认的
    	M:以内存的使用率排序
    	N:以pid排序
    	q:退出top
    杀死进程
    kill【选项】【信号】进程名
    	选项
    		-t  
    信号:kill -l
    	SIGHUP  1
    		重新读取配置文件,然后重启
    	SIGKILL 9
    		强制杀死
    killall/pkill
    	根进程名 来杀死全部进程
    		-i 交互氏
    pkill -t 可以根据终端号,只有root可以踢用来提出终端用户
    	w   命令来查看登录那些用户,然后在提出
    修改进程的优先级
    

    工作管理

    命令后面很 &可以放入后台,但是绑定终端号,不能有交互的命令,使用jobs命令查看
    使用ctrl + z是在后台暂定的
    jobs [-l] -l是查看工作的pid的。+是最近一个放入的后台的程序,-是倒数第二个
    	fg  % 工作号 恢复到前台
    	bg % 工作号   回到后台去
    后台命令脱离登录终端执行的方法
    	第一种,把执行的命令加倒入/etc/rc.local文件中开机自启动
    	加入到定时任务中
    	使用nohup命令
    	系统资源查看
    

    系统定时任务

    at一次性定时任务

    确定at安装
    	chkconfig --list | grep atd
    		at服务是否安装
    	service atd restart
    		at服务的启动
    at的访问控制
    	如果系统中有/etc/at.allow文件,那么只有写入/etc/at.allow文件(白名单)中的用户可以使用at命令(/etc/at.deny文件会被忽略)
    	如果系统中没有/etc/at.allow文件,只有/etc/at.deny文件,那么写入/etc/at.deny(黑名单)中的用户不能使用at命令。对root不起作用
    	如果都不存在,只能root用户来操作
    at命令
    	一般直接加时间
    		HH:MM  02:30
    		HH:MM YYYY-MM-DD   02:30 2013-07-25
    		HH:MM[am|pm] [month] [date] 02:30 july 25
    		HH:MM[am|pm]+[minutes|hours|days|weeks]
    例子1
    	at now +2 minutes
    	在两分钟之后执行hello.sh脚本
    	at> /root/hello.sh 
    atq:查看正在允许的at命令
    例子2:
    	at 02:00 2013-07-26
    	在指定的时间重启
    	at> /bin/sync
    	at> /sbin/shutdown -r now
    

    crontab循环定时任务

    也存在cron.allow和cron.deny的白黑名单
    	选项
    		-e  编辑crontab定时
    		-l  查询crontab任务
    		-r  删除当前用户所有的crontab任务
    系统的crontab设置
    	crontab -e 进入编辑界面,
    	*****   执行的任务
    		第一个*    一小时当中第几分钟   0-59
    		第二个*  一天当中的第几个小时  0-23
    		第三个* 一个月当中的第几天   1-31
    		第四个 *  一年当中的第几个月   1-12
    		第五个*     一周当中的星期几   0-7 (0和7都代表星期日)
    	特殊符合
    		*代表任意时间,第一个*就是一个小时每分钟都执行一次的意思
    		,  代表不连续的时间,比如“0, 8,12,16 ***” ,就代表在每天的8点0分,12点0分,16点0分都执行一次
    		-   代表连续的时间范围,比如“0 5 * * 1-6” 代表在周一到周六的凌晨5点0分执行命令
    		*/n  代表每个多久执行一次   比如 */10 * * * *  ,代表每隔10分钟就执行一遍命令
    	例子:
    		45 22 * * *    代表在22点45分执行
    		0 17 * * 1   代表每周一的17点0分执行
    		0 5 1,15  * * 代表每月1号和15号的凌晨5点0分执行命令
    		*/10 4 * * * 代表  每天的凌晨4点,每隔十分钟执行一次
    		0 0 1,15 * 1 代表1号15号,每周1的0点0分都会执行:注意周不要和月混在一起
    	设置
    		有些定时任务需要系统执行,这时我们就需要编辑/etc/crontab这个配置文件
    	系统定时任务
    		第一种是需要定时执行的脚本复制到/etc/cron.{daily,weekly,monthly}目录下
    		第二种修改/etc/crontab配置文件
    anacron配置
    	由于服务器等原因,没有执行定时任务,开机之后会在次执行定时任务
    	anacron会使用一天,七天,一个月作为检测周期
    	在系统的/var/spool/anacron/目录中存在cron.{daily,weekly,monthly}文件,用于记录上次执行cron的时间
    	和当前时间做比较,若两个时间的插值超过了anacron的指定时间差,证明有cron任务错过执行
    	配置文件
    		 /etc/anacrontab
    

    系统管理

    vmstat[刷新延时 刷新次数] 命令监控系统资源: 例如vmstat 1 3
    	r 表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。
    	b 表示阻塞的进程,这个不多说,进程阻塞,大家懂的。
    	swpd 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。
    	free   空闲的物理内存的大小,我的机器内存总共8G,剩余3415M。
    	buff   Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存,加速读取
    	cache cache直接用来记忆我们打开的文件,给文件做缓冲, 加速写入
    	si  每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常。
    	so  每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。
    	bi  块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒
    	bo 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。
    	in 每秒CPU的中断次数,包括时间中断
    	cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。
    	us 用户CPU时间,我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。
    	sy 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。
    	id  空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。
    	wt 等待IO CPU时间
    		
    dmesg  看内核自检测信息
    
    dmesg grep | CPU  查看cpu的信息。可以用来查看硬件信息
    
    free[-b|-k|-m|-g] 以b、k、m、g来显示,显示内存状态
    			             total       used       free     shared    buffers     cached
    Mem:          7872       1806       6066          0        172       1177
    -/+ buffers/cache:        456       7416
    Swap:            0          0          0
    
    cat  /proc/cpuinfo  查看cpu的信息
    uptime查看系统当前时间等,就是top的第一行
    10:31:42 up 54 days, 15:48,  1 user,  load average: 0.00, 0.00, 0.00
    
    查看内核相关的信息
    uname
    	-a  查看系统所有相关信息
    	-r  查看内核版本
    	-s 查看内核名称
    file /bin/ls  来查看系统位数
    	/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
    lsb_release -a 查看发行版本
    	LSB Version:	:base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch
    	Distributor ID:	CentOS
    	Description:	CentOS release 6.8 (Final)
    	Release:	6.8
    	Codename:	Final
    lsof命令
    	lsof | more
    		查看系统中所有进程调用的文件
    	lsof /sbin/init
    		查询摸个文件被那个进程调用
    	lsof -c httpd
    		查看httpd进程调用了那些文件
    	lsof -u root
    		根据用户名,查询某用户的进程调用的文件名
    
  • 相关阅读:
    【转】JS对Cookie的读写删除
    【转】【Python】 python中的编码问题报错 'ascii' codec can't decode 及 URL地址获取中文
    【转】【Python】Python中的__init__.py与模块导入(from import 找不到模块的问题)
    【转】【Centos】nginx配置:location配置方法及实例详解
    【转】【Html】Vuejs2.0学习之二(Render函数,createElement,vm.$slots,函数化组件,模板编译,JSX)
    【Html】Vue动态插入组件
    【HTML】div居中显示
    神奇的bug,退出时自动更新时间
    curl Array to string conversion 错误
    PHP可变参数
  • 原文地址:https://www.cnblogs.com/chenjinxinlove/p/9505662.html
Copyright © 2020-2023  润新知