Skip to content
翔工作室2018夏天后端组培训
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore
LICENSE
README.md

README.md

BE-Summer-Camp-2018

翔工作室2018夏天后端组培训

本次培训的所有内容,相关资源代码均会放在本仓库。培训交流群(qq):783657445。


往届培训汇总


培训内容

  • WEB前端基础
  • Git
  • Python
  • Linux
  • MySQL
  • 实战练习

准备工作(必看)

1. 编辑器/IDE

因为本次后端培训讲解的语言是Python,所以推荐使用Pycharm,它是jetbrains公司推出的一款用于Python开发的IDE。并且jetbrains公司推出了JetBrains Toolbox 专业开发工具学生免费授权计划,只需要用矿大邮箱进行注册即可免费使用。

当然你可以用其他IDE,又或者其他编辑器比如sublime,这里就不做过多介绍。如果你和我一样,不喜欢折腾,那就用Pycharm吧。如果你本身是多门语言开发者,那或许考虑下使用Vim.

2. Github

你需要注册一个Github账号,这在我们的后续课程可能会用到

3. 其他

培训时,不会演示python,git等或者操作系统的安装之类的工作,自行百度即可。希望可以自己提前安装好。


WEB前端基础

去年夏天,做了翔工作室2017年夏令营前端技术培训。今年就以去年讲解的内容挑出部分就行讲解。

资源
推荐书籍

Git

知识点
  • 分支管理

    • 查看(本地)分支 git branch
    • 查看(远程)分支 git branch -r
    • 查看本地和远程分支 git branch -a
    • 删除分支
      • 删除远程分支
        • git push origin --delete remote-branch-name
        • git push [远程名] :[分支名]
      • 删除本地分支
        • git branch -d local-branch-name
        • 若分支有修改还未合并,会提示还没合并。
      • 强行删除本地分支
        • git branch -D local-branch-name
    • 创建分支
      • 本地从当前所在分支上创建一个新分支
        • git branch branchName
        • git checkout -b newBranchName
      • 提交新分支
        • git push origin newBranchName
    • 拉取远程某个分支到本地
      • git checkout -b local-branch-name origin/remote-branch-name
  • 版本回退

    • git reset
      • Git中,用HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
    • 这个命令的难点在于理解这三个参数:soft,mixed(默认),hard
      • soft 就是只动repo
      • mixed 就是动repo还有staging
      • hard 就是动repo还有staging还有working
    • 这里又涉及了三个概念,分别是Working Tree,Index,Repository
      • Working Tree (工作目录): Git管理的目录,也就是我们实际操作的目录
      • Index (系统索引): 存放一堆需要被commit的(异动)文件内容集合,把档案加入索引称Stage 或Cache。
      • Repository (仓库): 是Git存放文件的位置,许多commit结点(版本)记录于此。
      • 工作区和暂存区
      • git reset hard/soft/mixed区别
  • 冲突解决

  • 与github结合

    • Git和Github简单教程
    • 善用 --help
    • git init    初始化一个Git仓库
    • git remote add origin git_repo_address 关联远程仓库
    • git pull
    • git fetch
    • touch / vim   创建文件
    • git add file   添加文件
      • git add .
      • git add -u
    • git commit -m "xxx" 提交修改
      • git commit --amend
    • git push 推送到远程仓库
    • git status 仓库当前的状态
    • git log 提交日志
      • git log --pretty=oneline
      • git log --pretty=short
      • git log --pretty=full
      • git log --pretty=fuller
    • git reflog 记录你的每一次命令

Python

知识点
  • 编码规范
  • 变量
    • 整数 浮点数 字符串 布尔值 空值(None)
  • 条件判断
  • 循环
  • list
  • tuple
  • dict
  • set
  • 函数
  • 迭代器
  • 切片
  • 列表生成式

Linux

如果你喜欢折腾,可以把自己电脑的操作系统换成ubuntu,又或者安装成win10和ubuntu的双系统。如果你不想装系统,可以使用vmware安装ubuntu的虚拟机。当然如果你是win10,在win10的较新的版本当中,已经内置了linux子系统,使用WSL就可以了

我自己的话,是固态装的ubuntu,然后机械装的win10。后来为了学习hadoop,就在ubuntu里面用了虚拟机,顺便也装了一个win10的虚拟机。现在我的机械硬盘一个月也不一定会使用一次。

当然在你安装了git过后,会带有git-bash,在里面也是写bash的。有或者你可以安装cmder


知识点
  • Linux命令实例练习
  • Shell 脚本实现 Linux 系统监控
  • vim
  • alias 命令别名设置 unalias
  • history
  • ctrl + r
  • linux中一些有趣的命令
  • Linux基本命令
    • man

    • cd   改变文件目录

    • ls  查看文件与目录的命令

      • -l
      • -d 仅列出目录本身
        • ls -ld 显示文件夹信息
        • ls -lhd
      • ls -a
      • ls -lh 将文件容量以较易读的方式列出来
      • -R 连同子目录的内容一起列出(递归列出)
      • ls -t 最近修改的文件显示在最上面。
    • grep grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来

      • -v 反转查找
      • -i 忽略字符大小写的差别
      • -c 计算符合范本样式的列数
      • -n 在显示符合范本样式的那一列之前,标示出该列的编号
    • find

      • find . 列出当前目录及子目录下所有文件和文件夹
      • find /home -name "*.txt" 在/home目录下查找以.txt结尾的文件名
      • find /home -iname "*.txt" 同上,但忽略大小写
    • cp 用来将一个或多个源文件或者目录复制到指定的目的文件或目录

      • cp file /usr/men/tmp/file1 将文件file复制到目录/usr/men/tmp下,并改名为file1
      • cp -r /usr/men /usr/zh 将目录/usr/men下的所有文件及其子目录复制到目录/usr/zh中
    • mv mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中

    • rm rm命令可以删除一个目录中的一个或多个文件或目录

      • -f:强制删除文件或目录;
      • -i:删除已有文件或目录之前先询问用户;
      • -r或-R:递归处理,将指定目录下的所有文件与子目录一并处理
    • ps ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。

      • ps -aux
    • kill

      • netstat -tunlp netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况
      • kill不掉mysqld
    • file file命令用来探测给定文件的类型

      • file name
    • tar tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。

      • 压缩 tar -czvf ***.tar.gz aim-file-name
      • 查阅上述tar包内有哪些文件 tar -ztvf log.tar.gz
      • 解压缩 tar -xzvf ***.tar.gz
      • tar打包后中文文件名乱码的问题
      • -t或--list:列出备份文件的内容;
      • -z或--gzip或--ungzip:通过gzip指令处理备份文件;
      • -f<备份文件>或--file=<备份文件>:指定备份文件;
      • -v:显示操作过程
      • -c或--create:建立新的备份文件
      • -x或--extract或--get:从备份文件中还原文件
    • cal cal命令用于显示当前日历,或者指定日期的日历

      • cal -y
    • shutdown shutdown命令用来系统关机命令

      • shutdown now
      • shutdown +5 "System will shutdown after 5 minutes" 指定5分钟后关机,同时送出警告信息给登入用户:
    • chmod

    • time


MySQL

课程视频等
推荐阅读
工具
知识点
  • 简介
    • 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,可以很方便地对所记录的数据进行增、删、改、查等操作。
    • 结构化查询语言(Structured Query Language)简称 SQL,是上世纪 70 年代由 IBM 公司开发,用于对数据库进行操作的语言。更详细地说,SQL 是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名。
  • 登录MySQL
    • mysql -u root -p
  • 查看数据库
    • show databases;
  • 删除数据库
    • drop database <数据库名>
  • 选择数据库
    • use database-name
  • 查看数据库中有那些表
    • show tables
  • 退出数据库
    • quit
    • exit
  • 创建数据库
    • CREATE DATABASE dbname;
  • SQL 用于各种数据库的数据类型
  • 创建数据表
    CREATE TABLE table_name
    (
    column_name1 data_type(size),
    column_name2 data_type(size),
    column_name3 data_type(size),
    ....
    );
    
    • 实例
    CREATE TABLE Persons
    (
    PersonID int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
    );
    
    CREATE TABLE IF NOT EXISTS `runoob_tbl`(
     `runoob_id` INT UNSIGNED AUTO_INCREMENT,
     `runoob_title` VARCHAR(100) NOT NULL,
     `runoob_author` VARCHAR(40) NOT NULL,
     `submission_date` DATE,
     PRIMARY KEY ( `runoob_id` )
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    • column_name 参数规定表中列的名称。data_type 参数规定列的数据类型(例如 varchar、integer、decimal、date 等等)。size 参数规定表中列的最大长度。
    • MySQL 创建数据表
    • 删除数据表
      • DROP TABLE table_name ;
    • 插入数据
      INSERT INTO table_name ( field1, field2,...fieldN )
      VALUES
      ( value1, value2,...valueN );
      
      • 如果数据是字符型,必须使用单引号或者双引号,如:"value"。
    • 查询数据
      SELECT column_name,column_name
      FROM table_name
      [WHERE Clause]
      [LIMIT N][ OFFSET M]
      
      • 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
      • SELECT 命令可以读取一条或者多条记录。
      • 可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
      • 可以使用 WHERE 语句来包含任何条件。
      • 可以使用 LIMIT 属性来设定返回的记录数。
      • 可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
    • 修改数据
      UPDATE table_name SET field1=new-value1, field2=new-value2
      [WHERE Clause]
      
      • 可以同时更新一个或多个字段。
      • 可以在 WHERE 子句中指定任何条件。
      • 可以在一个单独表中同时更新数据。
      • 需要更新数据表中指定行的数据时 WHERE 子句是非常有用的
    • 删除数据
      DELETE FROM table_name [WHERE Clause]
      
      • 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
      • 可以在 WHERE 子句中指定任何条件
      • 可以在单个表中一次性删除记录。
      • 你想删除数据表中指定的记录时 WHERE 子句是非常有用的。
    • 主键
      • PRIMARY KEY 约束唯一标识数据库表中的每条记录。
      • 主键必须包含唯一的值。
      • 主键列不能包含 NULL 值。
      • 每个表只能有一个主键。
    • JOIN
      • INNER JOIN:如果表中有至少一个匹配,则返回行
      • LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
      • RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
      • FULL JOIN:只要其中一个表中存在匹配,则返回行
    • 函数
      • AVG() - 返回平均值
      • COUNT() - 返回行数
      • FIRST() - 返回第一个记录的值
      • LAST() - 返回最后一个记录的值
      • MAX() - 返回最大值
      • MIN() - 返回最小值
      • SUM() - 返回总和
Python与MySQL交互
#!usr/bin/python
# -*- coding:utf-8 -*-

import pymysql.cursors
import pymysql


def get_connection():
    connection = pymysql.connect(host='127.0.0.1',
                                 user='root',
                                 password='sail',
                                 db='test',
                                 charset='utf8mb4',
                                 cursorclass=pymysql.cursors.DictCursor)
    return connection


def handle_db_select():
    connection = get_connection()
    try:
        with connection.cursor() as cursor:
            sql_exist = "SELECT * from test"
            cursor.execute(sql_exist)
            answer = cursor.fetchall()
            for ans in answer:
                for i,ele in ans.items():
                    print(i, ele)
        connection.commit()
    finally:
        connection.close()



def handle_db_insert():
    connection = get_connection()
    try:
        with connection.cursor() as cursor:
            sql_exist = "INSERT INTO `test` (`num`) values (%s)"
            value = input('enter your value: ')
            cursor.execute(sql_exist, value)

        connection.commit()
    finally:
        connection.close()



handle_db_insert()
handle_db_select()

You can’t perform that action at this time.