PHP基础以<?php开头,以?>结尾变量前加$,如定义变量$x打印echo函数
1234567<?php$my_name ="Bunny";function echo_name($name){ echo $name;}echo_name($my_name);?>
12345678<?php$x=1;$y=2;function calc($x,$y){ echo $x+$y;}calc($x,$y);?>
PHP面向对象OOP(面向对象程序设计):把事物封装成对象,然后操控对象完成各种行为
基础
类(Class):类是抽象的,是不具体的。例如新建一个名为Human的类,Human(人类)就是一个抽象的概念,是对世界上所有人的总称
对象(Object):具体的某个事物。对类进行实例化的一个实例123456789101112<?phpclass Person{//定义一个类 var $name ="李白";//定义成员变量(属性) ...
树树的基本概念$\emptyset$ 空树:结点数为0的树非空树的特性:
有且仅有一个根结点
没有后继的结点称为叶子结点(或终端节点)
有后继的结点称为分支结点(或非终端结点)
除了根结点外,任何一个结点都有且仅有一个前驱
树是n(n≥0)个结点的有限集合,n=0时,称为空树,这是一种特殊情况。在任意一棵非空树中应满足:
有且仅有一个特定的称为根的结点。
当n>1时,其余结点可分为m(m>0)个互不相交的有限集合 $T_{1}$,$T_{2}$..,$T_{m}$,其中每个集合本身又是一棵树,并且称为根结点的子树。
树是一种递归定义的数据结构
结点之间的关系描述
祖先结点
子孙结点
双亲结点(父结点)
孩子结点
兄弟结点
堂兄弟结点
两个结点之间的路径:只能从上往下
路径长度:经过了几条边
结点、树的属性描述
结点的层次(深度)——从上往下数(默认从1开始)
结点的高度——从下往上数
树的高度(深度)——总共多少层
结点的度——有几个孩子(分支)
树的度——各结点的度的最大值
有序树VS无序树
有序树——逻辑上看,树中结点的各子树从左至右是有 ...
CS学习
未读操作系统基础——LinuxLinux是开源的操作系统,定制性很强,有很多发行版,选择使用Kail Linux ,可以在清华大学开源软件镜像站下载具体操作在菜鸟教程学习在Linux中一切都是文件,在Linux里一切起源为/这个根目录。从/开始的路径称为绝对路径,知道绝对路径就可以精准定位文件。../形式的称为相对路径,.表示当前目录,..表示上一级目录。例如../load表示上一级目录load文件夹,../../load表示上上级目录下的load文件夹
重要的目录
/etc目录:存储系统文件。例如/etc/passwd
var目录:存储一些类似日志的东西
home目录:家目录,分隔每个用户的个人房间
root目录:root用户(系统根管理员用户)的单独房间
tmp目录:临时目录,存储一些杂七杂八的缓存内容
文件管理常用命令
pwd:查看当前在哪个目录
cd:加一个参数,会切换到指定目录
ls:列出指定目录下边有哪些文件,不指定参数的话默认当前文件夹
cat:打开指定文件
echo:打印字符
touch:创文件
可以在命令后加一个参数,例如ls /home同时可以用-开头 ...
开个新坑,看看能不能学下去吧本系列为参考B站up主黑兔由帝所做笔记
计算机基本原理计算机的分类粗略分为
个人设备(PC)
服务器
存储计算机需要存储数据,存储分为两种
外存:例如硬盘、光盘、u盘,特点是存储数据都比较慢(会被先放入内存,再由CPU处理),但是即使关机了,数据也还在,开机可以继续使用
内存:RAM(随机存储器),例如内存条,特点是存储容量小,存取速度极快,关机后数据消散写文档时需要保存就是因为需要将内存中的文档写入外存硬盘中
攻防领域的应用:无文件攻击:一段恶意代码不接触磁盘,只在内存中运行,那么常规扫描硬盘进行查杀的杀毒软件是没有效果的
在不同的操作系统中,在磁盘中删除文件的操作是不同的。在windows系统中,删除文件只是做了已删除的标记,让新数据可以覆盖到做了已删除标记的地方,如果没有被覆盖,那么还有可能恢复数据。
处理有了数据,由CPU(中央处理器)对数据进行处理。由于历史的遗留问题,处理器有很多架构,例如x86,arm,mips架构等,不同架构不能互通。跨平台只建立在有一个对应平台解释器的前提下。例如,在x86的计算机上写一段python代码可以 ...
字符串模式匹配的定义在主串中找出与模式串相同的子串,并返回其所在位置
朴素模式匹配算法思想主串长度为n,模式串长度为m将主串中所有与长度为m的子串与模式串一一比较 ,直到找到一个与模式串完全匹配的子串,或所有的子串都不匹配 (最多对比n-m+1个子串)若当前子串匹配失败,则主串指针i指向下一个子串的第一个位置,模式串指针j回到模式串的第一个位置i=i-j+2 j=1若j>T.length,则当前子串匹配成功,返回当前子串的第一个位置——i-T.length
代码1234567891011121314151617int Index(SString S,SString T){ int i=1,j=1; while(i<=S.length&&j<=T.length){ if(S.ch[i]==T.ch[j]){ i++; j++; } else { i=i-j+2; ...
串的定义串,即字符串(String),是由零个或者多个字符组成的有限序列。一般记为S=’$a_{1}$$a_{2}$···$a_{n}$’(n>=0)其中,S是串名,单引号括起来的字符序列是串的值;$a_{i}$可以是字母、数字或者其他字符;串中字符的个数n称为串的长度。n=0时的串称为空串(用$\emptyset$表示)
例:T=’iPhone 17 Pro Max?’
子串:串中任意个连续的字符组成的子序列
‘iPhone’,’Pro M’是串T的子串
主串:包含子串的串
T是子串’iPhone M’的主串
字符在主串的位置:字符在串中的序号
‘1’在T中的位置是8(第一次出现)
子串在主串的位置:子串的第一个字符在主串中的位置 (位序从1)
‘11 Pro’在T的位置是8
空串 VS 空格串:
M=’’ (空串)N=’ ‘ (空格串,由三个空格字符组成)
串 VS 线性表串是一种特殊的线性表,数据元素之间呈线性关系串的数据对象限定为字符集(如中文字符、英文字符、数 ...
CS学习
未读一维数组的储存结构C语言定义一维数组:ElemType a[10]各数组元素大小相同,且物理上连续存放数组元素a[i]的存放地址=LOC+i*sizeof(ELemType)(0<=i<=10)
二维数组的储存结构C语言定义二维数组:ElemType b[2][4]两种储存方式
行优先储存 M行N列的二维数组b[M][N],若按照行优先存储 则b[i][j]的存储地址=LOC+(i*N+j)*sizeof(ElemType)
列优先储存 M行N列的二维数组b[M][N],若按照列优先存储 则b[i][j]的存储地址=LOC+(i+j*M)*sizeof(ElemType)
普通矩阵的存储$\left(\begin{array}{cccccc}a_{1,1} & a_{1,2} & a_{1,3} & \cdots \cdots & a_{1, n-1} & a_{1, n} \\a_{2,1} & a_{2,2} & a_{2,3} & \cdots ...
括号匹配问题分析
( ( ( ( ) ) ) )
最后的左括号最先被匹配(LIFO)——可以用栈实现这个特性
( ( ( ) ) ( ) )
每出现一个右括号,就消耗一个左括号(出栈)遇到左括号就入栈,遇到右括号就消耗一个左括号,并且与右括号的大小进行比较
算法实现
代码12345678910111213141516171819202122232425262728293031323334353637383940#define MAXSIZE 10typedef struct{ char data[MAXSIZE]; int top;}SqStack;void InitStack(SqStack &S){ S.top=0;}bool Push(SqStack &S,char x){ S.data[S.top]=x; S.top++; return true;}bool Pop(SqStack &S,char &x){ ...
队列的概念队列(Queue)是指允许在一段插入,另一端删除的线性表
重要术语
队头:允许删除的一端
队尾:允许插入的一端
空队列:队列里没有任何数据元素
特点:先进先出(FIFO)First In First Out
队列的基本操作
队列的顺序实现队列的定义12345#define MAXSIZE 10typedef struct{ int data[MAXSIZE]; int front,rear;//队头指针和队尾指针}SqQueue;
队列的初始化1234void InitQueue(SqQueue &Q){ Q.front=0; Q.rear=0;}
判断队列是否为空1234bool QueueEmpty(SqQueue Q){ if(front==rear)return true; else return false;}
入队12345bool EnQueue(SqQueue &Q,int x){ if((Q.rear+1)%MAXSIZE==Q ...

















