linux查找文件中的某个字符,并复制到另一个文件怎么做
linux文件替换某个字符是什么指令
tcp/ip协议四层模型:
应用层:http协议,ftp协议,smtp协议
传输层:tcp协议,udp协议
网络层:ip协议,arp协议
链路层:
HTTP的各种字段
https://blog.csdn.net/M1565385688/article/details/84076081
linux常用指令考察如sed,grep,touch,find,pwd,cat等
α测试与β测试的区别
α测试是指软件开发公司组织内部人员模拟各类用户对即将面市软件产品(称为α版本)进行测试,试图发现错误并修正。α测试的关键在于尽可能逼真地模拟实际运行环境和用户对软件产品的操作并尽最大努力涵盖所有可能的用户操作方式。经过α测试调整的软件产品称为β版本。
β测试是由软件的多个用户在实际使用环境下进行的测试,这些用户返回有关错误信息给开发者。测试时,开发者通常不在测试现场。因而,β测试是在开发者无法控制的环境下进行的软件现场应用。在β测试中,由用户记下遇到的所有问题,包括真实的以及主观认定的,定期向开发者报告。β测试主要衡量产品的FLURPS,着重于产品的支持性,包括文档,客户培训和支持产品生产能力。 只有当α测试达到一定的可靠程度时,才能开始β测试。它处在整个测试的最后阶段。同时,产品的所有手册文本也应该在此阶段完全定稿。
各种变量的存放处
一个类中主要有:常量、成员变量、静态变量、局部变量。
其中常量与静态变量位于方法区,
成员变量位于 Java 堆,
局部变量位于 Java 虚拟机栈。
StringBuffer和StringBuilder的区别
1、StringBuilder,StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
2、StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类,然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
引用类型和基本类型
一、基本数据类型:
byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0
short:短整型,在内存中占16位,即2个字节,取值范围-32768~32767,默认值0
int:整型,用于存储整数,在内在中占32位,即4个字节,取值范围-2147483648~2147483647,默认值0
long:长整型,在内存中占64位,即8个字节-263~263-1,默认值0L
float:浮点型,在内存中占32位,即4个字节,用于存储带小数点的数字(与double的区别在于float类型有效小数点只有6~7位),默认值0
double:双精度浮点型,用于存储带有小数点的数字,在内存中占64位,即8个字节,默认值0
char:字符型,用于存储单个字符,占16位,即2个字节,取值范围0~65535,默认值为空
boolean:布尔类型,占1个字节,用于判断真或假(仅有两个值,即true、false),默认值false
二、引用数据类型:
类、接口类型、数组类型、枚举类型、注解类型。
区别:
基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上。
引用数据类型在被创建时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。
查找平均分前五名的同学
select top 5 name from table group by name order by avg(score) asc
查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩
selet name from table group by name having avg(score) >= 60
select
b.s_id,
b.s_name,
round(avg(a.s_score), 2) as avg_score
from
student b
join score a on
b.s_id = a.s_id
group by
b.s_id,
b.s_name
having
round(avg(a.s_score), 2)>= 60;
HashCode是如何计算的,hashcode相等equals返回也相等吗
不同的类有不同的hashcode计算方法,比如Boolean:f?1:0、int:return f;
hashcode和equals并不关联,但常规规定:
1、两个对象用equals()比较返回true,那么两个对象的hashCode()方法必须返回相同的结果。
2、两个对象用equals()比较返回false,不要求hashCode()方法也一定返回不同的值,但是最好返回不同值,以提搞哈希表性能。
3、重写equals()方法,必须重写hashCode()方法,以保证equals方法相等时两个对象hashcode返回相同的值。
git命令
git clone [url]
git add . (添加当前目录下的全部文件到缓冲区)
git commit -m “备注”
git branch -a(查看所有分支)
git branch (查看本地分支)
git branch -r (查看远程分支)
git branch [name] (新建本地分支)
git checkout [name] (切换本地分支)
把远程分支的代码pull到本地分支:git pull <远程主机名> <远程分支名>:<本地分支名>
如:取回origin主机的xf分支,与本地的xf分支合并,输入命令:
git pull origin xf:xf
git push origin xf:xf (将本地分支推送到远程分支)
查看创建表的语句
show creat table tablename
DNS解析过程
1. 浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址,如果有,解析结束。同时域名被缓存的时间也可通过TTL属性来设置。
2. 如果浏览器缓存中没有(专业点叫还没命中),浏览器会检查操作系统缓存中有没有对应的已解析过的结果。而操作系统也有一个域名解析的过程。在windows中可通过c盘里一个叫hosts的文件来设置,如果你在这里指定了一个域名对应的ip地址,那浏览器会首先使用这个ip地址。
3. 如果至此还没有命中域名,才会真正的请求本地域名服务器(LDNS)来解析这个域名,这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了。
4. 如果LDNS仍然没有命中,就直接跳到Root Server 域名服务器请求解析
5. 根域名服务器返回给LDNS一个所查询域的主域名服务器(gTLD Server,国际顶尖域名服务器,如.com .cn .org等)地址
6. 此时LDNS再发送请求给上一步返回的gTLD
7. 接受请求的gTLD查找并返回这个域名对应的Name Server的地址,这个Name Server就是网站注册的域名服务器
8. Name Server根据映射关系表找到目标ip,返回给LDNS
9. LDNS缓存这个域名和对应的ip
10. LDNS把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程至此结束
sleep和wait的区别:
https://blog.csdn.net/qq_34490018/article/details/81609147
测试用例的设计方法:
等价类划分法、边界值分析法、错误推测法、判定表法、正交实验法。
软件测试方法:
静态测试和动态测试
黑盒测试、白盒测试和灰盒测试
不同阶段测试:
单元测试:满足软件覆盖率要求的逻辑测试要求
集成测试:一般采用的是白盒和黑盒结合的方法进行测试,验证这一阶段设计的合理性以及需求功能的实现性。
系统测试:常用黑盒测试进行,包括健壮性测试、性能测试、功能测试、安装或反安装测试、用户界面测试、压力测试、可靠性及安全性测试等。
验收测试(用户执行)
V模型(又叫快速应用开发模型(RAD模型))
用户需求、需求分析、概要设计、详细设计、软件编码、单元测试、集成测试、系统测试、验收测试
测试过程被加在开发过程的后半部分,仅把测试过程作为在需求分析、系统设计及编码后的一个阶段,忽视了测试对需求分析、系统设计的验证,一直到后期测试验收才发现。
W模型
局限性
在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临的困惑。
- 测试的活动与软件开发同步进行
- 测试的对象不仅仅是程序,还包括需求和设计
- 尽早发现软件缺陷可降低软件开发的成本
唯一索引和主键索引
- 一个表只能有一个主键索引,但是可以有多个唯一索引
- 主键索引一定是唯一索引,唯一索引则不一定是主键索引
- 主键索引可以与外键构成完整性约束,唯一索引不可以
- 唯一性索引列允许空值,而主键列不允许为空值
- 主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等
如何进行文件传输
commons-io
commons-fileupload
判断两个链表是否相交
https://blog.csdn.net/fengxinlinux/article/details/78885764
方法一:两个堆栈
方法二:哈希表
判断链表是否有环
方法一:用hashset
public boolean hasCycle(ListNode head) {
Set<ListNode> nodesSeen = new HashSet<>();
while (head != null) {
if (nodesSeen.contains(head)) {
return true;
} else {
nodesSeen.add(head);
}
head = head.next;
}
return false;
}
方法二:设置两个指针,一个fast每次前进2个节点,slow每次前进一个,如果在指针指向null之前fast=slow则证明有环。
线程的状态
https://www.cnblogs.com/zxfei/p/11074492.html
start和run有什么区别
start() 方法则是 Thread 类的方法,用来异步启动一个线程,然后主线程立刻返回。该启动的线程不会马上运行,会放到等待队列中等待 CPU 调度,只有线程真正被 CPU 调度时才会调用 run() 方法执行。
为什么要有两个方法,直接用一个 run() 方法不就行了吗!? 还真不行,如果直接调用 run() 方法,那就等于调用了一个普通的同步方法,达不到多线程运行的异步执行
linux下java命令
ps -ef| grep java #查看当前的Java进程信息
kill -9 [端口号] #强制杀掉
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
df是查看磁盘使用情况
du是查看文件或文件夹大小
ifconfig 查看网络接口,ip地址等
根据进程pid查端口:netstat -nap | grep pid
根据端口port查进程:netstat -nap | grep port
根据pid查找文件的启动位置 ps aux | grep 进程,把找到的pid在/proc/pid的下方有一个为cwd对应的路径就是程序启动的路径
jstack: jstack能得到运行java程序的java stack和native stack的信息。可以轻松得知当前线程的运行情况。
https://www.cnblogs.com/wuchanming/p/7766994.html
jmap:得到运行java程序的内存分配的详细情况。例如实例个数,大小等
https://www.jianshu.com/p/a4ad53179df3
Jstat:这是一个比较实用的一个命令,可以观察到classloader,compiler,gc相关信息。可以时时监控资源和性能
如何查看cpu占用高的问题所在
在linux环境下,可以通过
top
命令查看各个进程的cpu使用情况,默认按cpu使用率排序1、如果看出pid为23344的java进程占用了较多的cpu资源;
2、通过top -Hp 23344
可以查看该进程下各个线程的cpu使用情况;通过top命令定位到cpu占用率较高的线程之后,继续使用
jstack pid
命令查看当前java进程的堆栈状态jstack命令生成的thread dump信息包含了JVM中所有存活的线程,为了分析指定线程,必须找出对应线程的调用栈
在top命令中,已经获取到了占用cpu资源较高的线程pid,将该pid转成16进制的值,在thread dump中每个线程都有一个nid,找到对应的nid即可
网络编程总结
https://www.jianshu.com/p/e05632cea0c9
SQL
join、left join、right join、full join、oder by、desc、asc、sum、count、group by
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。
SELECT COUNT(*) FROM table_name
SELECT DISTINCT 列名称 FROM 表名称
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
DELETE FROM 表名称 WHERE 列名称 = 值