注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

永恒的遗失古都-亚特兰蒂斯

一个游戏开发者的个人博客。

 
 
 

日志

 
 

一些程序基础概念2 - 事务,TCP/UDP区别,线程调度算法,Hash和HashMap,排序建议  

2015-08-28 01:25:56|  分类: 程序相关 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
事务的定义:事务是一组逻辑操作单元。使数据从一种状态变化为另外一个状态,对数据的增删改查都是事务操作。
事务的使用标示:以为BEGIN TRANSACTION开始,以COMMIT或者ROLLBACK结束。
事务的四大特性:ACID
A原子性:事务是数据库的逻辑工作单元,事务中的众多操作要么全做,要么全部不做。不能只执行其中一部分。
C一致性:事务执行的结果必然是将数据库从一个状态转变成另一个状态。无论你对数据库建立多少链接,可以保证其获取的信息是绝对一致的。
I隔离性:一个事务的执行不允许被其他事务干扰。例如事务A读取了数据,然后事务B修改了数据,但事务A中并不了解事务B中的行为(互不干涉性),所以事务A读取的仍然书先前的数据,事务B的任何操作对事务A无影响。
D 永久性:一个事务一旦被提交,它对数据库的改变将是永久性的。事务操作均将直接写入磁盘,但注意,该写入操作并不保证是及时的,其时间不可确定。

-----------------
TCP和UDP的区别,TCP的三次握手和四次分手
区别
1:TCP是连接型协议,在数据传输前需要握手建立连接。UDP则是非连接型协议,每次数据传输时才直接发送。
2:TCP对系统资源较高,首先它要维护一个连接状态,有自己的拥挤控制算法,要维持一个连接状态表,还要自己进行包的拆分和合并,在消息报文中的信息较多,20字节。但UDP不需要这些,不维护状态表,不受算法控制,同时也不进行包的处理,直接报文发送,其消息包头只有8字节。
3:TCP包为流模式发送,UDP包为数据报模式。
4:TCP可以保证数据正确性和顺序性。UDP可能丢包,也不保证数据的顺序性。
ping就是UDP。我个人认为QQ聊天消息应该是UDP协议。
要保持长连接的就是TCP。
小记要点
TCP/IP协议是一个协议簇,包含了UDP和TCP协议以及IP协议。因为TCP和IP两个协议比较重要,所以如此命名。
所以“TCP/IP协议和UDP协议的区别?”这种问题是不恰当的。
另外,TCP和UDP协议不同,所以其端口号即使相同也是没有问题的。例如TCP的8080端口被占用,UDP的8080端口依然可以正常使用。

TCP三次握手:
1:A向B发送一个同步序列号SYN标示位的数据,请求链接。
2:B收到后,给A一个ACK应答和同步序列号SYN,回应收到链接,同时告知A“我的同步序列号SYN是什么”,
3:A收到后,最后给B一个收到确认。
TCP四次分手:
1:请求断开连接的主机A,在发送自己的最后一份数据之后,将控制位FIN修改为1(true),提出分手。
2:B收到A的FIN请求后,关闭自身链接,ACK设为1。
3:B将控制位FIN修改为1(true),向A提出分手确认。
4:A收到,将自身ACK设为1。
至此双方分手完毕。
(吐槽一句:牵手累,分手更累……)
------------------

线程调度算法:
1> 先到先服务算法。若多服务的占用时间不均,则很不公平。
2> 时间片轮转算法。处理器时间切分为多个时间片段,轮转的方式分配给每一个线程。当线程主动放弃或者时间段用尽,则轮转为下一个线程使用。简单高效。
3> 优先级调度算法。时间片轮转算法是假设所有线程重要级别一致。但通常前台线程要求更高优先级,所以需要对上述的线程队列进行一个排序调整,高优先级的线程执行顺序优先。
但部分高优先级线程可能霸占处理器不放,所以建议变种使用动态优先级。连续执行多个时间片的线程,调低其优先级;长时间没有得到时间片的线程提高其优先级。

Windows的调度算法是抢占式的,支持多处理器的优先级调度算法。每个处理器有自己的一个链表数组,相同优先级的线程在同一个链表中。
-----------------
Hash-map就是链式数组,比数组好增删,比链表好查找访问。
步骤:
1:得到Key:
2:对Key进行Hash
3:根据得到的Hash值与桶(数组)个数求模,找到数组桶,塞到数组里。
Hash的原理就是大数据转为小数据。
其核心问题有三:
1:冲突率和占用空间大小。
2:散列分布的均衡性。
3:哈希函数的执行效率。
---------------

说到排序,尽量全部优先使用shell希尔排序(时间复杂度O(n^2)属于插入排序的优化),之后发现速度不够的话,那就快速排序,要是数据太大,空间不足,就堆排序。这就是排序的"万能选择流程"。
  评论这张
 
阅读(32)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017