算法:Insert Sort
站内链接:
算法(1)-检索-简介
算法(2)-检索-散列检索
算法(3)-检索-顺序检索
算法(4)-检索-树检索
算法(5)-排序-简介
算法(6)-排序-分配排序
算法(7)-排序-插入排序
算法(8)-排序-选择排序
算法(9)-排序-交换排序
算法(10)-排序-外排序
Introduction插入排序, 将新的未排序值插入到已排序的队列中, 重复以上流程. 插入排序分类如下:
直接插入排序: 通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入.插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间.
希尔排序: 缩小增量排序, 记录按下标的一定增量分组,对每组使用直接插入排序算法排序, 随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止.
直接插入排序Anaylysis本质上,一种比较类-非线性-插入类-排序. 民主自由的制度,不到最后,谁都不能确定村长是谁!(其实吧,结果还不是一样,选择的方向不同而已). 对比过程如下:
1234567你,就是你, ...
算法:交换排序
站内链接:
算法(1)-检索-简介
算法(2)-检索-散列检索
算法(3)-检索-顺序检索
算法(4)-检索-树检索
算法(5)-排序-简介
算法(6)-排序-分配排序
算法(7)-排序-插入排序
算法(8)-排序-选择排序
算法(9)-排序-交换排序
算法(10)-排序-外排序
Introduction根据排序算法中说明,可以了解, 基于交换的排序目前有两大类: bubble-sort, quick-sort. 所有交换排序, 受方法本身的限制, 最低的时间复杂度为 O(nlogn). 其中基于交换的排序, 都是在原有空间基础上, 进行两个数值的比较和交换工作, 所有的交换排序步骤:
比较两个值, 判断大小
如果发现逆置, 则交换两个元素
不断地进行上述的操作
维基百科: 冒泡排序, 快速排序, 冒泡排序和快速排序的动画演示.
冒泡排序Analysis本质上,一种比较类-非线性时间-交换类-排序. 冒泡排序是一种简单的排序算法, 重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来, 走访数列的工作是重复地进行直到没有再需要交换.这个算法的名字由来是 ...
算法:排序介绍
站内链接:
算法(1)-检索-简介
算法(2)-检索-散列检索
算法(3)-检索-顺序检索
算法(4)-检索-树检索
算法(5)-排序-简介
算法(6)-排序-分配排序
算法(7)-排序-插入排序
算法(8)-排序-选择排序
算法(9)-排序-交换排序
算法(10)-排序-外排序
分类比较类-非线性时间-排序
交换类排序:快速排序、冒泡排序
插入类排序:简单插入排序、希尔排序
选择排序:简单选择排序、堆排序
归并排序:二路归并排序、多路归并排序
非比较类-线性时间-排序
计数排序: O(n), 特殊的桶排序, 此时桶的个数最大, 创建 maxvalue-minxvalue+1 的数组
基数排序: 利用位数从低位到高位, 不断的进行数值排序
桶排序: 将数组分配到有限数量的桶中, 之后再对桶分别排序.
索引排序: 在排序过程中, 如果数据元素本身很大, 不断的赋值移动消耗资源, 则可将数据移动更改为索引移动, 减少复杂度
内存排序
内存排序
内存排序是指将待排序的数据存储在计算机的内存中,并在内存中进行排序操作,而不涉及外部存储介质(如硬盘)的读写,上面讲解的这几个排序一般情况 ...
算法:Sequence Search
站内链接:
算法(1)-检索-简介
算法(2)-检索-散列检索
算法(3)-检索-顺序检索
算法(4)-检索-树检索
算法(5)-排序-简介
算法(6)-排序-分配排序
算法(7)-排序-插入排序
算法(8)-排序-选择排序
算法(9)-排序-交换排序
算法(10)-排序-外排序
IntroductionIntro线性搜索或顺序搜索是一种寻找某一特定值的搜索算法,指按一定的顺序检查数组中每一个元素,直到找到所要寻找的特定值为止。是最简单的一种搜索算法.线性搜索在物理上可以顺序, 也可以连接, 但是逻辑上是顺序存储的. 相比哈希检索, 线性检索的数据没有任何限定, 没有额外的键值空间消耗, 没有唯一值的限定.
Classify
无序表查找: 数据本身没有经过排序, 通过暴力遍历查找数据
有序表查找: 二分查找, 差值查找, 斐波那契查找, 线性索引查找
Order SearchAnalysis检索过程: 针对线性表里的所有记录,逐个进行关键码和给定值的比较
若某个记录的关键码和给定值比较相等,则检索成功
否则检索失败
物理存储: 在物理上可以顺序, 也可以链表存储, 但在逻辑上 ...
算法:Hash Search
站内链接:
算法(1)-检索-简介
算法(2)-检索-散列检索
算法(3)-检索-顺序检索
算法(4)-检索-树检索
算法(5)-排序-简介
算法(6)-排序-分配排序
算法(7)-排序-插入排序
算法(8)-排序-选择排序
算法(9)-排序-交换排序
算法(10)-排序-外排序
IntroductionIntro参考搜索算法的介绍.
散列检索, 用以提高检索效率, 大部分情况下是面向用户的操作, 根据用户的输入来进行快速的检索, 并尽可能快速的给出结果. 在这种要求下, 如何存储数据? 以怎样的结构来构造?如何避免冲突?如何解决检索的唯一性? 这些都是散列检索需要解决的问题.
Classify
静态索引: 在初始阶段, 索引结构已经固定下来, 整个存储结构是固定的
动态索引: 在系统运行过程, 索引本身会一直在变化
性能分析平均检索长度: 决定了查找的性
负载因子: a = N/M, 其中 N 表示源数据, M 表示散列表存储空间, 其中 a 越大, 则表示发生冲突的可能性越高, 很多记录偏离基地址的可能性越大.
B-treeIntroB-tree 的提出基 ...
算法:搜索算法
站内链接:
算法(1)-检索-简介
算法(2)-检索-散列检索
算法(3)-检索-顺序检索
算法(4)-检索-树检索
算法(5)-排序-简介
算法(6)-排序-分配排序
算法(7)-排序-插入排序
算法(8)-排序-选择排序
算法(9)-排序-交换排序
算法(10)-排序-外排序
搜索分类在一组记录集合中找到关键码值等于给定值的某个记录, 或者找到关键码值符合特定条件的某些记录的过程. 一般而言, 检索的数据对象都是大量的数据, 所以对检索的效率要求非常, 为了提高检索效率, 需要在数据存储时做一些特殊的存储预处理, 以便在之后检索时更加快速. 当然, 若预处理的性能损耗比较大, 则每次新插入数据都需要一定的时间进行重新预处理流程.
基本概念搜索算法中的一些基本概念:
预排序: 在数据进行存储时, 进行一定的预处理, 以便检索更加快捷, 比如二分法查找就要求数据本身逻辑上是一棵树结构.
建立索引: 以空间换时间, 充分利用索引来加快索引速度
散列或搜索技术: 将数据组织到表中, 根据关键码来确定表中每一个记录的位置
ASL: 平均检索长度(Average Search Leng ...
操作系统:内核相关术语
站内链接:
操作系统环境-shell 分类介绍
操作系统环境-操作系统术语
操作系统环境-远程登录模式
操作系统内核-同步编程到异步编程的技术演进
操作系统内核-术语
操作系统内核-会话
并发和并行
python 多线程多进程
IO 相关术语
内存相关术语
内核态,用户态,内核空间,用户空间内核空间地址范围:3G-4G, 0XC000 0000 ~ 0XFFFF FFFF, 这是一个虚拟地址哦,大端和小端,实际映射到物理内存低地址, 在 32 位机上面,所有的进程内都是 4G 的虚拟地址,见程序员自我修养)
存放对象:内核代码,内核数据
用户空间地址范围:0-3G
存放对象:用户代码,用户数据
附加:空间是一种内存的概念哦!
内核态执行内核代码以及获取内核数据时所处的状态
用户态在用户空间中进行操作时所处的状态称为用户态
内核态,用户态分级的意义
限权:限制不同程序的访问能力,防止非法获取其他程序的数据和外部设备的数据
内核态指令:访问内存中所有数据,外围设备,网卡(管控中心,CPU 资源-top 命令中的%sy)
用户态指令:只能访问自己的进程空间中的内存地址 ...
Subnet-mask
IntroductionSummarize
子网掩码是一个应用于TCP/IP网络的32位二进制值,每节8位,必须结合IP地址对应使用.
子网掩码32位都与IP地址32位对应,如果某位是网络地址,则子网掩码为1,否则为0.
子网掩码可以通过与IP地址”与”计算,分离出IP地址中的网络地址和主机地址,用于判断该IP地址是在局域网上,还是在广域网上.
子网掩码一般用于将网络进一步划分为若干子网,以避免主机过多而拥堵或过少而IP浪费.
Why?子网掩码可以分离出IP地址中的网络地址和主机地址,那为什么要分离呢?
具体原因, 在两台设备通信过程中:
首先要判断是否处于同一个广播域内,即网络地址是否相同.
如果网络地址相同,表明接受方在本网络上,那么可以把数据包直接发送到目标主机
否则就需 要路由网关将数据包转发送到目的地.
例如:在A类IP地址中,每个A类网络 可能有16,777,214台主机,它们处于同一广播域.
在同一广播域中有这么多主机是不可能的,网络会因为广播通信而饱和.
IP地址资源越来 越少.为实现更小的广播域,就需要进一步分成更小的网络.
划分子网后,通过使用掩码 ...
Security Same Origin
IntroductionIntro同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互.这是一个用于隔离潜在恶意文件的重要安全机制.
同源策略是一种安全性和可用性的一种平衡, 在遵循”同源”的基础上, 实现”可控”的跨域操作.
源的定义文档的来源包含协议, 主机, 载入文档的 URL, 端口, 浏览器根据这四者来判断两个不同的域是否同源. 示例如下:
1234567// 同http://store.company.com/dir/page.html同源的例子http://store.company.com/dir2/other.html // 同源http://store.company.com/dir/inner/another.html // 同源https://store.company.com/secure.html // 不同源, 不同协议(https和http)http://store.company.com:81/dir/etc.html // 不同源, 不同端口(81和80)http://news.company.co ...
Xss
IntroductionIntro跨站”脚本”攻击(Cross Site Scripting), 为了避免同(Cascading Style Sheet)区别, 命名为 XSS.
XSS 攻击, 黑客通过” HTML 注入”篡改网页, 插入恶意的脚本, 从而在用户浏览网页的时候,控制用户的浏览器.
注意, XSS 的重点在于篡改网页, 根据网页的漏洞获取某些重要信息, 这个和csrf有一个非常重要的区别,后者无需寻找网页的漏洞, 仅仅通过”跨站请求伪造”就可以完成.
在一开始, XSS 攻击是跨网站的, 但是随着 WEB 前端应用的复杂化, 是否跨域已经不一定,但是 XSS 仍旧延续下来.
Classify
反射型 XSS: 简单的用户的输入(点击)反射给浏览器, 需要诱使用户”点击”恶意链接
存储型 XSS: 用户的输入会存储在 DB 中, 之后任何用户浏览该页面都会执行恶意脚本
DOM Based XSS: 反射型 XSS, 更改 DOM 结构从而产生攻击
Simple Attack反射型 XSSAttack-1 向有漏洞网站 WEB-1 注入恶意代码(js),User-1 访问 ...