5七、Linux 的基本命令(重点,如今多数服务器都是Linux 系统)php
答:arch 显示机器的处理器架构html
uname -m 显示机器的处理器架构前端
uname -r 显示正在使用的内核版本vue
dmidecode -q 显示硬件系统部件node
- (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性mysql
hdparm -tT /dev/sda 在磁盘上执行测试性读取操做web
cat /porc/cpuinfo 显示 CPU info 的信息redis
cat /porc/interrupts 显示中断算法
cat /porc/meminfo 校验内存使用sql
cat /porc/swaps 显示哪些 swap 被使用
cat /porc/verion 显示内核的版本
cat /porc/net/dev 显示网络适配器及统计
cat /porc/mounts 显示已加载的文件系统
date 显示系统日期
cal 2007 显示 2007 年的日历表
date 061212352018.00 设置日期和时间 -月日时分年.秒
clock -w 将时间修改保存到 BIOS
文件搜索:
find / -name file1 从 '/'开始进入根文件系统搜索文件和目录
locate *.ps 寻找以 '.ps'结尾的文件-先运行'updatedb'命令
whereis halt 显示一个二进制文件、源码或 man 的位置
which halt 显示一个二进制文件或可执行文件的完整路径
挂载一个文件系统:
mount /dev/hda2 /mnt/hda2 挂载一个叫作 hda2 的盘- 肯定目录'/ mnt/hda2' 已经存在
umount /dev/hda2 卸载一个叫作 hda2 的盘- 先从挂载点'/ mnt/hda2' 退出
追加命令:
一、sudo cat /etc/aaa >>/usr/bbb 把文件/etc/aaa 中的内容追加到/usr/bbb 中的内容的后面
二、sudo chmod apache:apache /etc/index.html 更改/etc/index.html 的文件全部者为 apache,文件群组为 apache
三、sudo chmod 744 /etc/index.html4 更改/etc/index.html 的全部者权限为读取、写入、执行。群组权限为读取。其余权限为读取
sudo rm /etc/index.html 删除/etc 下名为 hello 的文件
固然,若是你是以 orot 用户执行以上操做,能够去掉前边的 sudo
df -hl 查看磁盘剩余空间
df -h 查看每一个根路径的分区大小
du -sh [目录名] 返回该目录的大小
du -sm [文件夹] 返回该文件夹总 M 数
shutdown -h now 关机 (系统的关机、重启以及登出)
关闭系统
init 0 关闭系统
telinit 0 关闭系统
shutdown -h hour:minutes & 按预约时间关闭系统
shutdown -c 取消按预约时间关闭系统
shutdown -r now 重启
reboot 重启
logout 注销文件和目录
pwd 显示工做路径
ls 查看目录中的文件
ls -F 查看目录中的文件
ls -l 显示文件和目录的详细资料
ls -a 显示隐藏文件
ls *[0-9]* 显示包含数字的文件名和目录名
tree [文件夹] 显示文件和目录由根目录开始的树形结构
lstree [文件夹] 显示文件和目录由根目录开始的树形结构
mkdir dir1 建立一个叫作 'dir1'的目录' 磁盘空间
df -h 显示已经挂载的分区列表
ls -lSr |more 以尺寸大小排列文件和目录
du -sh dir1 估算目录 'dir1'已经使用的磁盘空间'
下载、解压
一、对于.tar 结尾的文件 tar -xf all.tar
二、对于.gz 结尾的文件 gzip -d all.gz
gunzip all.gz
# zip all.zip *.jpg 这条命令是将全部.jpg 的文件压缩成一个 zip 包
# unzip all.zip 这条命令是将 all.zip 中的全部文件解压出来下载命令
wget + 空格 +要下载文件的 url 路径=====================================
Shell 脚本:必须以 #!/bin/sh 开头简单例子:判断这个目录下有没有文件(File)
#!/bin/bash
Num=`ls -al /opt |grep "^-"|wc -l `
if [ $Num != 0 ]
then echo "/opt has $Num files"
else echo "/opt has none file"
fils -al /opt |grep "^-"|wc -l 这个命令可以统计文件个数 为 0 就是没有文件 非零就是有文件
5八、memache 通常用来缓存什么数据?
答:一、常常被读取而且实时性要求不强能够等到自动过时的数据。例如网站首页最新文章列表、某某排行等数据。
二、常常被读取而且实时性要求不强的数据。好比用户的好友列表,用户文章列表,用户阅读记录等。
三、统计类缓存,好比文章浏览数、网站 PV 等。
四、活跃用户的基本信息或者某篇热门文章。
五、session 数据
5九、魔术方法和魔术常量
答:魔术方法:
一、__construct() 实例化对象时被调用,当 __construct 和以类名为函数名的函数同时存在时,__construct 将被调用,另外一个不被调用。
二、__destruct() 当删除一个对象或对象操做终止时被调用。
三、__call() 对象调用某个方法,若方法存在,则直接调用;若不存在,则会去调用 __call 函数。
四、__get() 读取一个对象的属性时,若属性存在,则直接返回属性值;若不存在,则会调用 __get 函数。__get()方法有一个参数,表示要调用的变量名
五、__set() 设置一个对象的属性时,若属性存在,则直接赋值;若不存在,则会调用 __set 函数。__set()方法包含两个参数,分别表示变量名称和变量值,两个参数都不可省略
六、__toString() 打印一个对象的时被调用。如 echo obj;或 printobj;
七、__clone() 克隆对象时被调用。如:t=newTest();t1=clone $t;
八、__sleep() serialize 以前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。
九、__wakeup() unserialize 时被调用,作些对象的初始化工做。
十、__isset() 检测一个对象的属性是否存在时被调用。如:isset($c->name)。十一、__unset() unset销毁指定的变量时被调用。如:unset($c->name)。
十二、__set_state() 调用 var_export 时,被调用。用 __set_state 的返回值作为 var_export 的返回值。
var_export ( mixed $expression
[,bool $return
] )此函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 相似,不一样的是其返回的表示是合法的 PHP 代码。第二个参数设置为 TRUE
,从而返回变量的表示。
1三、__autoload()实例化一个对象时,若是对应的类不存在,则该方法被调用。
魔术常量:
一、__LINE__ 返回文件中的当前行号。
二、__FILE__ 返回文件的完整路径和文件名。若是用在包含文件中,则返回包含文件名。自 PHP 4.0.2 起,__FILE__ 老是包含一个绝对路径,而在此以前的版本有时会包含一个相对路径。
三、__FUNCTION__ 返回函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值老是小写字母的。
四、__CLASS__ 返回类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值老是小写字母的。
五、__METHOD__ 返回类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
六、__DIR__ 当前文件的目录
60、接口 interface 和抽象类 abstract class 的区别?
答:抽象类是一种不能被实例化的类,只能做为其余类的父类来使用。抽象类是经过关键字 abstract 来声明的。抽象类与普通类类似,都包含成员变量和成员方法,二者的区别在于,抽象类中至少要包含一个抽象方法,抽象方法没有方法体,该方法天生就是要被子类重写的。抽象方法的格式为:abstract function abstractMethod();
接口是经过 interface 关键字来声明的,接口中的成员常量和方法都是 public 的,方法能够不写关键字 public,接口中的方法也是没有方法体。接口中的方法也天生就是要被子类实现的。抽象类和接口实现的功能十分类似,最大的不一样是接口能实现多继承。在应用中选择抽象类仍是接口要看具体实现。子类继承抽象类使用 extends,子类实现接口使用 implements。
接口是一种特殊化的抽象类
6一、什么是队列?排它锁,Myisam 死锁如何解决?
答:在默认状况下 MyIsam 是表级锁,因此同时操做单张表的多个动做只能以队列的方式进行。
排它锁又名写锁,在 SQL 执行过程当中为排除其它请求而写锁,在执行完毕后会自动释放。
死锁解决:先找到死锁的线程号(从数据字典里面分析,mysql>
SELECT
*
FROM
information_schema.INNODB_TRX\G
),而后杀掉线程 ID(kill 线程ID)。
6二、Myisam 与 Innodb 的区别?
Innodb引擎
Innodb引擎提供了对数据库ACID事务的支持,而且实现了SQL标准的四种隔离级别。 该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它自己其实就是基于MySQL后台的完整数据库系统,MySQL运行时Innodb会在内存中创建缓冲池,用于缓冲数据和索引。 可是该引擎不支持FULLTEXT类型的索引(全文索引),并且它没有保存表的行数,当SELECT COUNT(*) FROM TABLE时须要扫描全表。 当须要使用数据库事务时,该引擎固然是首选。因为锁的粒度更小,写操做不会锁定全表,因此在并发较高时,使用Innodb引擎会提高效率。 可是使用行级锁也不是绝对的,若是在执行一个SQL语句时MySQL不能肯定要扫描的范围,InnoDB表一样会锁全表。
MyIASM引擎
MyIASM是MySQL默认的引擎,可是它没有提供对数据库事务的支持,也不支持行级锁和外键,所以当INSERT(插入)或UPDATE(更新)数据时即写操做须要锁定整个表,效率便会低一些。 不过和Innodb不一样,MyIASM中存储了表的行数,因而SELECT COUNT(*) FROM TABLE 时只须要直接读取已经保存好的值而不须要进行全表扫描。 若是表的读操做远远多于写操做且不须要数据库事务的支持,那么MyIASM也是很好的选择
主要区别:
一、MyIASM是非事务安全的,而InnoDB是事务安全的
二、MyIASM锁的粒度是表级的,而InnoDB支持行级锁
三、MyIASM支持全文类型索引,而InnoDB不支持全文索引(5.6.24之后支持)、
四、MyIASM相对简单,效率上要优于InnoDB,小型应用能够考虑使用MyIASM
五、MyIASM表保存成文件形式,跨平台使用更加方便
六、MyIASM不支持外键约束,而InnoDB 支持外键约束(可实现表的联动操做,一删多删)
应用场景:
一、MyIASM管理非事务表,提供高速存储和检索以及全文搜索能力,若是再应用中执行大量select操做,应该选择MyIASM
二、InnoDB用于事务处理,具备ACID事务支持等特性,若是在应用中执行大量insert和update操做,应该选择InnoDB
6三、bootstrap 框架有哪些优势?
答:bootstrap 是一款 web 开发框架,它由 CSS,JavaScript,Html,三部分构成,它简洁灵活,使得 web 开发更加的快捷
优势:
①节省时间: 使用 bootstrap 框架,能够大大的节省项目开发时间,它包含了不少现成的代码,若是须要使用,只须要找到合适的代码,插入合适的位置便可,此外,CSS 是使用 LESS 编写,不少样式和设计都已经设计完成了
②定制化: bootstrap 能够根据本身的项目,留取框架中本身须要的部分
③设计合理:
6四、简述下node.js的认识?
中文文档参考:http://nodejs.cn/api/
简单的说 Node.js 就是运行在服务端的 JavaScript。一个新兴的前端框架,后台语言。
Node.js 是一个基于Chrome JavaScript 运行时创建的一个平台。 用于方便地搭建响应速度快、易于扩展的网络应用。
Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度很是快,性能很是好。很是适合在分布式设备上运行数据密集型的实时应用。
优势:
6四、简述下vue.js的认识?
答:
Vue.js(读音 /vjuː/, 相似于 view) 是一套构建用户界面的渐进式框架。
Vue 核心库只关注视图层, 采用自底向上增量开发的设计。
Vue 的目标是经过尽量简单的 API 实现响应的数据绑定和组合的视图组件。
Vue 学习起来很是简单。
Vue.js的特性以下:
1.轻量级的框架
2.双向数据绑定
3.指令
4.插件化
6五、Mysql 高并发解决方案?
答:参考:https://blog.csdn.net/qiuweihong/article/details/78751466
正常的优化方案以下:
一、代码中sql语句优化
二、数据库字段优化,索引优化
三、加缓存,redis/memcache等
四、主从,读写分离
五、分区表
六、垂直拆分,解耦模块
七、水平切分
6六、InnoDB和MyIsam分别使用的什么索引,如何实现的?
参考:https://blog.csdn.net/z702143700/article/details/46049101
MyISAM索引实现:
MyISAM引擎使用B+Tree做为索引结构,叶节点的data域存放的是数据记录的地址。所以,MyISAM中索引检索的算法为首先按照B+Tree搜索算法搜索索引,若是指定的Key存在,则取出其data域的值,而后以data域的值为地址,读取相应数据记录。
MyISAM的索引方式也叫作“非汇集”的,之因此这么称呼是为了与InnoDB的汇集索引区分。
InnoDB索引实现:
InnoDB也使用B+Tree做为索引结构,但具体实现方式却与MyISAM大相径庭。
区别:
一、InnoDB的数据文件自己就是索引文件。MyISAM索引文件和数据文件是分离的,索引文件仅保存数据记录的地址。而在InnoDB中,表数据文件自己就是按B+Tree组织的一个索引结构,这棵树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,所以InnoDB表数据文件自己就是主索引。
二、叶节点包含了完整的数据记录,这种索引叫作汇集索引。
三、由于InnoDB的数据文件自己要按主键汇集,因此InnoDB要求表必须有主键(MyISAM能够没有),若是没有显式指定,则MySQL系统会自动选择一个能够惟一标识数据记录的列做为主键,若是不存在这种列,则MySQL自动为InnoDB表生成一个隐含字段做为主键,这个字段长度为6个字节,类型为长整形。
四、InnoDB的全部辅助索引都引用主键做为data域。
五、汇集索引这种实现方式使得按主键的搜索十分高效,可是辅助索引搜索须要检索两遍索引:首先检索辅助索引得到主键,而后用主键到主索引中检索得到记录。
总结:
一、InnoDB不建议使用过长的字段做为主键。由于全部辅助索引都引用主索引,过长的主索引会令辅助索引变得过大。
二、非单调(不是自增或自减的均为非单调)的字段做为主键在InnoDB中不是个好作法,由于InnoDB数据文件自己是一颗B+Tree,非单调的主键会形成在插入新记录时数据文件为了维持B+Tree的特性而频繁的分裂调整,十分低效,而使用自增字段做为主键则是一个很好的选择。
参考资料:
https://blog.csdn.net/Px01Ih8/article/details/80823381