笔试回忆总结
感觉做的不好,还是要多刷题,巩固基础!
- 如果只提交事务中的部分更新操作,这违背了事务的哪一个特性(C)
A.持久性B.隔离性C.原子性D.一致性
事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子性。 - 域名
- 协作图(通信图,UML2.0后的名称)是一种交互图,强调的是发送和接受消息的对象之间的组织结构。一个协作图显示了一系列的对象和在这些对象之间的联系以及对象间发送和接收的消息。
部署图(deployment diagram)用来显示系统中软件和硬件的物理架构。从部署图中,可以了解到软件和硬件组件之间的物理关系以及处理节点的组件分布情况。是物理方面进行建模的两种图之一。
顺序图(sequence diagram)是一种交互图(interaction diagram),交互图展现了一种交互,它由一组对象或角色以及它们之间可能发生的消息构成。交互图专注于系统的动态视图。顺序图是强调消息的时间次序的交互图。
状态图(state chart diagram)状态图用来描述一个特定对象的所有可能状态及引起状态转移的事件。它由状态、转移、事件和活动组成。状态图给出了对象的动态视图。
UML学习 - MySQL查看SQL性能分析(explain关键字)
- 序列化和反序列化的定义:
(1)Java序列化就是指把Java对象转换为字节序列的过程
Java反序列化就是指把字节序列恢复为Java对象的过程。
(2)序列化最重要的作用:在传递和保存对象时.保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。
反序列化的最重要的作用:根据字节流中保存的对象状态及描述信息,通过反序列化重建对象。
总结:核心作用就是对象状态的保存和重建。(整个过程核心点就是字节流中所保存的对象状态及描述信息) - 网络OSI七层
- A类网络的IP地址范围为:1.0.0.1-126.255.255.254;
B类网络的IP地址范围为:128.1.0.1-191.255.255.254;
C类网络的IP地址范围为:192.0.1.1-223.255.255.254 - 可查看Linux系统负载的命令:
w :查看系统整体负载的命令,主要关注load average的值,分别表示1分钟、5、15内系统的平均负载值,一般小于服务器的CPU数就OK;uptime也可以查看系统负载,得出的结果和w命令的第一行一致;
cat /proc/cpuinfo :即可查看CPU信息,几个processor即为几个CPU;
vmstat :主要查看哪里负载了,打印结果主要有进程相关的procs、内存memory、内存交换情况swap、磁盘使用情况io、采集间隔内发生的中断次数system、CPU的使用状态CPU六个信息,主要关注运行和等待cpu时间片的进程数r、等待资源的进程数b、由交换区写入到内存的数据量si、由内存写入到交换区的数据量so、以及从块设备读取数据的量bi、从块设备写入数据的量bo、表示I/O等待所占用cpu时间的百分比wa;
top:动态监控进程所占用资源,把占用系统资源最高的放在前边,可以查看内存、CPU的百分比;
sar:可以监控系统所有资源状态,sar -n DEV查网卡流量历史、sar -q 查看历史负载,最有用的就是查网卡流量,流量过大:rxpck/s大于4000,或者rxKB/s大于5000,则很有可能被攻击了,需要抓包分析;
free:查看当前系统的总内存大小以及使用内存的情况;
ps:查看进程,ps aux 或者 ps -elf,常和管道符一起使用,查看某个进程或者它的数量;
netstat:查看端口,netstat -lnp用于打印当前系统启动了哪些端口,netstat -an用于打印网络连接状况;
tcpdump:抓包工具分析数据包,知道有哪些IP在攻击;可以将内容写入指定文件1.cap中,显示包的内容,不加-w屏幕上显示数据流向;
wireshark:抓包工具,可以临时用该命令查看当前服务器上的web请求 - 排序时间复杂度
算法
- 两个升序链表合并成一个升序链表
struct ListNode
{
int val;
ListNode* next;
ListNode(int x):val(x),next(NULL){}
};
class Solution
{
public:
ListNode* mergeList(ListNode* l1, ListNode* l2)
{
if(l1==NULL) return l2;
if(l2==NULL) return l1;
ListNode* head;
if(l1->val < l2->val)
{
head=l1;
head->next=mergeList(l1->next, l2);
}
else
{
head=l2;
head->next=mergeList(l1, l2->next);
}
return head;
}
}