一、linux常用的30个命令:
(1)目录操作:cd , cp , mv ,mkdir ,ls ,ll ,find ./ -name “*” , pwd ,history, rm -rf (强制) ,rm -r(递归)
(2)文本处理:
查看:head,less,more,cat, tail -f ,
du -sh (文件)(sh查看总的大小,h查看每个的子文件大小),
(3)过滤:grep ,
(4)编辑修改:vi /vim ,
(5)统计:awk,sort,uniq
awk适合对于有规律的列数据进行处理
sed适合对于行数据进行处理,包括增删改查
grep适合对文本数据进行过滤处理
(6)解压缩:
tar: 解压:tar zxvf 包(解压.tar/.tar.gz类型的压缩包),
压缩:tar -zcvf 包
zip: 解压:unzip 包 压缩:zip 包
gz: 解压:gzip -d 包 /gunzip 包 压缩:gzip 包
对于.tar.gz和.tgz包的解压见tar的解压,压缩是tar zcvf 包
还有bz,bz2,Z命令等
(7)日常运维:
su ,chmod(改文件的访问权限) ,
chown(改文件的所属用户和所属组),
shutdown ,yum(或apt-get),
(8)系统状态及监控:
top(CPU),free -m/g/k (内存),
iostat -x -k(磁盘,最后一列的 util),
查看系统磁盘使用量:df -h
综合性能查看:vmstat
查看进程:ps -ef|grep java
查看ip:ifconfig
查看端口被占用:netstat -ant (netstat -anp|grep 8080 ),ping,lsof -i
查看Linux系统内核信息:uname -a()
(9)工作常用:
export,date,whereis(例whereis Nginx.conf)
文件传输:scp 例scp aa.txt ip:/tmp/aa.txt
可直接进行下载并传输:wget -c http://oracle.fuck/jdk2019.bin
查看linux网络的状态:netstat -anp |more
查找文件:find / -name nginx.conf find . -name config|grep ext
查看正在运行的端口的路径:ps aux|grep 1043 //ps是显示当前状态处于running的进程,grep表示在这些里搜索,而ps aux是显示所有进程和其状态。
然后cd 进入对应的路径
(10)脚本执行的方式:
1.bash hello.sh 使用bash调用脚本,此方式不是很规范
2.赋予执行权限,直接运行
chmod 755 hello.sh
./hello.sh 或者绝对路径/hello.sh
3.alias命令是查看系统里所有生效的别名的命令
格式:alias 命令= '
二、Mysql数据库:
- limit
like “%张” 和“张_”
regrep “张|白”
select * from table where .date < date_sub(date(), interal 1 year )
2、查询所有成绩都在80分以上的学生1
select distinct name from a where name not in(select name form a where fenshu<=80)
三、Java基础知识:
1、final,finally,finalize的区别:
final是Java中定义常量的,final类不能被继承,不能重写,定义属性后,要初始化。
finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块,在执行了try语句后,表示这段语句最终一定会被执行(不管有没有抛出异常),经常被用在需要释放资源的情况下。当try语句块中执行了 System.exit (0) 语句,或者当一个线程在执行 try 语句块或者 catch 语句块时被打断(interrupted)或者被终止(killed),或者在线程运行 try 语句块或者 catch 语句块时,突然死机或者断电,finally 语句块肯定不会执行了
finalize:finalize()是在java.lang.Object里定义的,也就是说每一个对象都有这么个方法。这个方法在gc启动,该对象被回收的时候被调用。其实gc可以回收大部分的对象(凡是new出来的对象,gc都能搞定,一般情况下我们又不会用new以外的方式去创建对象),所以一般是不需要程序员去实现finalize的。
特殊情况下,需要程序员实现finalize,当对象被回收的时候释放一些资源,比如:一个socket链接,在对象初始化时创建,整个生命周期内有效,那么就需要实现finalize,关闭这个链接。
使用finalize还需要注意一个事,调用super.finalize();
一个对象的finalize()方法只会被调用一次,而且finalize()被调用不意味着gc会立即回收该对象,所以有可能调用finalize()后,该对象又不需要被回收了,然后到了真正要被回收的时候,因为前面调用过一次,所以不会调用finalize(),产生问题。 所以,推荐不要使用finalize()方法,它跟析构函数不一样。且不能二次赋值
2、线程和进程:
每个进程中有多个线程,一个线程默认占1M的空间,这样最大线程数在2000多个
线程即并发,涉及的有线程池,锁,控制,tomcat调优
线程的状态:新建(new),就绪(start),运行(run),阻塞(run方法出问题),关闭(线程结束)
实现方式:1》继承thread类 2》实现Runable接口。
线程的启动是调用start()方法
业务意义在于:批量插入数据库数据,分页算法
3、反射:
反射解决的问题是动态的获取到一个类,然后实例化对象,即newInstance(),然后可以拿到类所有的属性,方法,属性注解或类注解,也可以操作所属性的具体对象。
获取class的方式:类路径,通过对象getclass,类.class
4、java面像对象是由什么组成的:类及类的定义,属性,方法,注解
5、sleep和wait的区别
(1)属于不同的Java类下的方法,sleep属于线程Thread下的类,wait是object类
(2)调用sleep方法时,一般在规定时间内,就能自动唤醒,wait需要调用唤醒方法来唤醒
(3)使用sleep的时候,一般会有异常,需要捕获,wait不需要
(4)sleep可以在任何地方使用,wait只能在同步控制方法或块儿里使用
6、操作系统进程间的通信方式:
管道(无名管道--内存,有名管道--文件系统,高级管道),
消息队列,
共享内存,
信号,
信号量,
7、进程间的调度方式:剥夺式,非剥夺式
8、进程间调度算法:
优先调度法(先来先服务FCFS,短作业SJ(P)F,短作业即运行时间短的)
高优先权优先调度(优先权调度(非抢占式的,抢占式),
高响应比优先调度(计算比例))
时间片轮转调度(多级反馈队列调度(公认最好的))
9、浅拷贝和深拷贝的区别
数据类型分为两种基础类型和引用类型
(1)基础类型:像Number、String、Boolean等这种为基本类型
(2)引用类型:Object和Array
浅拷贝只是复制了对象的引用地址,两个对象指向同一个内存地址,所以修改其中任意的值,另一个值都会随之变化,这就是浅拷贝(例:assign())
深拷贝是将对象及值复制过来,两个对象修改其中任意的值另一个值不会改变,这就是深拷贝
四、自动化
- testNG:Annotation介绍,Assert断言,testng.xml配置,高级传参,运行方式,测试执行结果,自动重运行,自定义监听,数据驱动(csv,Excel),测试报告
- 测试框架:
web端:selenium QTP
移动端:appium
接口:httpclient
单元测试:junit testng
性能:loadrunner,jmeter
代码扫描:sonar
五、性能接口--jmeter准备
jmeter接口测试
jmeter组件:线程组,属性和变量,计时器,http采样器(jdbc取样器,http取样器),前置处理器,后置处理器,提取器和断言,常用函数讲解,jmeter配置,http cookie,header
jmeter高级功能:beanshell编程,接口签名算法,控制器,测试用例执行顺序控制,java request,jmeter插件开发,开发jmeter函数,跳过登录测试
jmeter参数化测试:csv文件参数化,jdbc参数化测试,自定义参数化测试,随机参数化测试
jmeter数据提取:xpath提取xml响应数据,jsonpath提取json响应数据,编程方式提取响应数据,正则表达式提取响应数据,cookie数据 的提取