阅读笔记

**

设计模式

**

1.设计模式原则:
	开闭原则:实现方法:定义一个抽象层(抽象类或者接口),然后不同的子类去实现
	
	里氏替换原则:子类可以扩展父类的功能,但不能改变父类原有的功能。即尽量不要重写父类的方法。
	
	依赖倒置原则:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依
赖抽象(抽象指的是接口或者抽象类,而细节是指具体的实现类)。核心思想是:要面向接口编程,不要面向实
现编程。比如顾客类的函数中用到商店类,那么商店类最好是一个抽象类,而不是具体的商店类。

	单一职责原则

	接口隔离原则:将臃肿庞大的接口拆分成更小的和更具体的接口。要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。

	迪米特法则:如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度

**

数据结构

排序复杂度:
在这里插入图片描述
**
希尔排序
一共15个元素,第一次增量为15/2=7(每组2个)
第二次增量为7/2=3
第三次增量为3/2=1
在这里插入图片描述
基数排序:
参考:
https://www.jianshu.com/p/486c4b03c8b5
在这里插入图片描述

**

数据库

**

1.事务隔离级别:读未提交,读已提交,可重复读,串行化

  并发问题:脏读,不可重复读,幻读
  
  
  读未提交:读不加锁,写加X锁,事务结束释放。会导致脏读,不可重复读,幻读。
  
  读以提交:读加S锁,读完释放,写加X锁,事务结束释放。会导致不可重复读,幻读。解决了脏读
  
  可重复读:读加S锁,事务结束释放,写加X锁,事务结束释放,会导致幻读。解决了不可重复读
  
  串行化:读加表级S锁,事务结束释放,写加X锁,事务结束释放,解决幻读。解决了幻读

**

Linux命令

**

1. awk 命令:(文本分析工具,按行处理,字符分割)
		awk '{print $1,$4}' log.txt  #每行按空格或TAB分割,输出文本中的1、4项
		awk -F, '{print $1,$2}'   log.txt   #每行按逗号分割

2. sort 命令:(文本排序,默认ASCII排序)
		-u 去掉重复行
		-n 按数字排序
		-k 选那一片段进行排序
参考:https://www.cnblogs.com/fulucky/p/8022718.html

3. uniq 命令:uniq 可检查文本文件中重复出现的行列,一般与sort一起用
		uniq testfile     #删除重复行后的内容  
		uniq -c testfile      #删除重复行后的内容,并在第一列显示重复的次数
		sort testfile1 | uniq -c  #统计各行在文件中出现的次数

面试命令:

5. 历史命令里使用频率最高的10条命令

history | awk '{print $2}' | sort | uniq -c | sort -k1,1nr | head -10
history      	查看命令历史记录
awk         	用awk工具切割,以空格为分隔符,打印第二个,
sort         		对命令进行排序
uniq -c       	重复的只显示一行,并在每行行首加上本行在文件中出现的次数
sort -k1,1nr   	按照第一个字段(数值)进行逆序排序,即从大到小。(k1,1 表示从第1字段开始以第1字段结束)
head  10      	输出前10个记录

参考:https://blog.csdn.net/fujianfafu/article/details/80301446

**

计算机网络

**

MTU  最大传输单元,是数据段+TCP首部+IP首部之和,不包括数据链路层数据帧的帧头
参考:https://baike.baidu.com/item/mtu/508920?fr=aladdin(百度百科)
IP包分片的原理。以太网的MTU值是1500 bytes,假设发送者的协议高层向IP层发送了长度
为3008 bytes的数据报文,则该报文在添加20 bytes的IP包头后IP包的总长度是 3028 
bytes,因为3028 > 1500,所以该数据报文将被分片,
注意:分片时仅仅对上层的数据进行分片,不需要对原来的IP首部分片,所以要分片的数据
长度只有3008,而不是3028. 这特别容易出错。
分片过程如下:
1 首先计算最大的IP包中IP净荷的长度 =MTU-IP包头长度=1500-20= 1480 bytes。
2 然后把3008 bytes按照1480 bytes的长度分片,将要分为3片,3008= 1480+1480+48
3 最后发送者将为3个分片分别添加IP包头,组成3个IP包后再发送,3个IP包的长度分别
为1500 bytes、1500 bytes和 68 bytes。

IP分片过程:
参考:https://baike.baidu.com/item/IP%E5%88%86%E7%89%87%E6%8A%80%E6
%9C%AF/422762?fr=aladdin (百度百科)
IP分片发生在IP层,不仅源端主机会进行分片,中间的路由器也有可能分片,因为不同的
网络的MTU是不一样的
分片数据的重组只会发生在目的端的IP层。

参考:(为什么分片引起效率低)https://www.jianshu.com/p/9d589928d749
应用层程序往TCPIP协议栈写数据的时候都做了些什么事。在应用层程序中,我们可以有自
己的发送缓冲区,而TCP层本身也有自己的一个发送缓冲区,默认情况下一般是8k大小,
可以通过SO_SNDBUF设置或读取。 当我们在应用层往TCP层写数据的时候,实际上是将应用
层发送缓冲区的数据拷贝到TCP层的发送缓冲区中。当TCP层的发送缓冲区满或者网络空闲
时,TCP层就 会将其缓冲区中的数据通过IP层传到链路层的发送队列中。如果TCP层的发
送缓冲区满而且应用层的数据没有写完时,内核会将write系统调用挂起,并不返回给
应用层程序,直到应用层的数据全部拷贝到TCP层的缓冲区中。而由于TCP层要保证数据包的
可靠性,即数据包丢失时要进行重传,那么TCP层在往网络发送TCP分组后,需要在其发送缓
冲区中暂时保存发出的TCP分组数据用于后续可能的重传。在这样的前提下,如果IP对来自
TCP层的数据进行了分片, 那么就有可能使得应用层程序一直在write系统调用处挂起
等待,引起性能的下降。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值