Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器 软件资源

软件开发小程序制作系统集成与运维空间租用硬件开发视频监控技术咨询与支持——联系电话:0311-88999002/88999003

首页 / 操作系统 / Linux

排序算法之三路划分的快速排序

排序算法之三路划分的快速排序

当待排序元素序列中有大量的重复排序码时,简单的快速排序算法的效率将会降到非常之低。一种直接的想法就是将待排序列分成三个子序列:一部分是排序码比基准元素排序码小的;一部分是与基准元素排序码等值的;一部分是比基准元素排序码大的,如下图所示:图1 快速排序的三路划分 但是,如果我们直接据此思想去编写实现算法的话,会让我们面临很大的困难。与基准元素等值的元素到底有多少?以及如何最快速有效地确定划分的边界?所以,完成这样的三路划分是非常困难的,甚至比两路划分过程更加...
iOS定位和位置信息获取

iOS定位和位置信息获取

要实现地图、导航功能,往往需要先熟悉定位功能,在iOS中通过Core Location框架进行定位操作。Core Location自身可以单独使用,和地图开发框架MapKit完全是独立的,但是往往地图开发要配合定位框架使用。在Core Location中主要包含了定位、地理编码(包括反编码)功能。定位是一个很常用的功能,如一些地图软件打开之后如果用户允许软件定位的话,那么打开软件后就会自动锁定到当前位置,如果用户手机移动那么当前位置也会跟随着变化。要实现这...
Yii2 实现修改密码功能

Yii2 实现修改密码功能

主要难点:1、密码加密 YII2对密码加密生成的结果是不同的,即用相同的初始密码在不同时间得到的加密结果不同,所以我们不能用常用的方法去验证密码是否正确(将密码加密后与数据库中的密码相比较)。YII2有自己的加密以及密码验证流程。 加密 $hash = Yii::$app->getSecurity()->generatePasswordHash("123456"]); 验证 Yii::$app->getSecurity()->...
Java数据结构-线性表之静态链表

Java数据结构-线性表之静态链表

静态链表的定义: 节点由一个一维数组和一个指针域组成,数组用来存放数据元素,而指针域里面的指针(又称游标)用来指向下一个节点的数组下标。这样的链表称之为静态链表。 链表中的数组第一个和最后一个位置需要特殊处理,不存数据。第一个位置(即数组0下标)的节点的指针用来存放备用链表的第一个节点的数组下标。最后一个位置(即数组长度MaxSize-1下标)的节点的指针用来存放指向有数值的第一个数据元素的数组下标,类似于单链表的头结点。静态链表的示例图: 下面举一个摘...
Java数据结构-线性表之循环链表

Java数据结构-线性表之循环链表

循环链表的定义:将单链表的尾节点的空指针改为指向头结点的指针,这样的单链表就变成单循环链表了,也叫循环链表。下面摘抄了《大话数据结构》中的一段分析。如下图: 解释: 循环链表里面的头结点和单链表里面的头结点是一样的,都是为了操作统一和方便而设定的,不是必须节点。这里为了方便操作还会进行一种改变,就是去掉循环链表的头指针,而增加一个指向循环链表尾部节点的尾指针。 这样相对来说可以通过O(1)时间访问到尾节点了,同时在进行循环链表合并操作时更加方便了。举一个在...
Java数据结构-线性表之双向链表

Java数据结构-线性表之双向链表

双向链表的定义:在单链表的基础上,给每个节点增加一个指针域,用来指向该节点的前驱节点,这样形成的链表称之为双向链表。 利用空间换时间。整个双向链表的形式如图所示:下面就摘了《大话数据结构》的插入操作演示: 需要注意的是保证链不要断掉,上述图中第3和第4步的顺序不要颠倒。 继续删除操作的演示: 双向链表也有循环链表,叫双向循环链表,介绍如下: 本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-07/120142.h...
Java数据结构-线性表之单链表LinkedList

Java数据结构-线性表之单链表LinkedList

线性表的链式存储结构,也称之为链式表,链表;链表的存储单元可以连续也可以不连续。 链表中的节点包含数据域和指针域,数据域为存储数据元素信息的域,指针域为存储直接后继位置(一般称为指针)的域。注意一个头结点和头指针的区别: 头指针:指向链表的第一个节点的指针,若链表有头结点,则是指向头结点的指针;头指针具有标识作用,所以常用头指针作为链表的名字;不论链表是否为空,头指针都不为空;是链表的必要元素。头结点:头结点是为了操作的统一和方便而设立的,放在第一个元素节...
Java数据结构-线性表之单链表应用

Java数据结构-线性表之单链表应用

单链表的逆置,就是将现有单链表中的元素的顺序倒置过来。之前提过单链表的整表创建,那里曾说过两种方法:头插法和尾插法; 在我的Java版本的LinkedList中,添加方法使用的是尾插法。 而单链表的逆置正好是利用头插法来进行。 下面看看演示: 下面是我的Java代码实现,建立在之前的代码的基础上/** * @TODO 单链表添加元素,头插法 * @param e 数据元素 * @return true */public boolean addFirst(...
Java并发编程实战(使用synchronized实现同步方法)

Java并发编程实战(使用synchronized实现同步方法)

本文介绍Java最基本的同步方式,即使用synchronized关键字来控制一个方法的并发访问,如果一个对象已用synchronized关键字声明,那么只有一个执行线程允许去访问它,其它试图访问这个对象的线程将被挂起,直到第一个线程访问完毕。还有一篇:Java并发编程:synchronized http://www.linuxidc.com/Linux/2015-07/120169.htm 下面通过一个小例子来学习这个概念,公司向银行存钱,取钱场景。 ...
Java并发编程:synchronized

Java并发编程:synchronized

虽然多线程编程极大地提高了效率,但是也会带来一定的隐患。比如说两个线程同时往一个数据库表中插入不重复的数据,就可能会导致数据库中插入了相同的数据。今天我们就来一起讨论下线程安全问题,以及Java中提供了什么机制来解决线程安全问题。 以下是本文的目录大纲: 一.什么时候会出现线程安全问题? 二.如何解决线程安全问题? 三.synchronized同步方法或者同步块 若有不正之处,请多多谅解并欢迎批评指正。一.什么时候会出现线程安全问题? 在单线程...
HTML5 应用程序缓存

HTML5 应用程序缓存

使用 HTML5,通过创建 cache manifest 文件,可以轻松地创建 web 应用的离线版本。什么是应用程序缓存(Application Cache)?HTML5 引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问。应用程序缓存为应用带来三个优势:离线浏览 - 用户可在应用离线时使用它们速度 - 已缓存资源加载得更快减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源。浏览器支持所有主流浏览器均支持应用...
给 Lisp 程序员的 Python 简介

给 Lisp 程序员的 Python 简介

这是一篇为Lisp程序员写的Python简介(一些Python程序员告诉 我,这篇文章对他们学习Lisp也有帮助,尽管这不是我的本意)。基本上,Python可以看作一个拥有“传统”语法(Lisp社区称之为“中缀”或者 “m-lisp”语法)的Lisp方言。一个来自comp.lang.python的帖子说到“我一直不明白为什么LISP是一个不错的想法,直到我开始 玩上了Pyt...
Java网络编程之TCP通信

Java网络编程之TCP通信

阅读目录一、概述二、什么是TCP? 三、TCP通信四、Socket在浏览上的应用一、概述 Socket类是Java执行客户端TCP操作的基础类,这个类本身使用代码通过主机操作系统的本地TCP栈进行通信。Socket类的方法会建立和销毁连接,设置各种Socket选项。 ServerSocket类是Java执行服务器端操作的基础类,该类运行于服务器,监听入站TCP连接,每个socket服务器监听服务器的某个端口,当远程主机的客户端尝试连接此端口时,服务器...
Java网络编程之查找Internet地址

Java网络编程之查找Internet地址

阅读目录一、概述二、什么是IP地址?三、InetAddress类一、概述 连接到Internet上计算机都有一个称为Internet地址或IP地址的唯一的数来标识。由于IP很难记住,人们设计了域名系统(DNS),DNS可以将人们可以记忆的主机名与计算机可以记忆的IP地址联系在一起。通常一台主机映射一个IP地址。有时一个主机名映射多个IP。这时就由DNS负责随机选择一台机器来响应请求,例如业务流量很大的Web网站,它将负载分到多个系统上。二、什么是IP地址...
Java集合系列

Java集合系列

阅读目录一、ArrayList简介二、ArrayList源码分析三、ArrayList遍历方式一、ArrayList简介 ArrayList是可以动态增长和缩减的索引序列,它是基于数组实现的List类。 该类封装了一个动态再分配的Object[]数组,每一个类对象都有一个capacity属性,表示它们所封装的Object[]数组的长度,当向ArrayList中添加元素时,该属性值会自动增加。如果想ArrayList中添加大量元素,可使用ensureCa...
红黑树的原理分析和算法设计

红黑树的原理分析和算法设计

红黑树是60年代中期计算机科学界找寻一种算法复杂度稳定,容易实现的数据存储算法的产物。在优先级队列、字典等实用领域都有广泛地应用,更是70年代提出的关系数据库模型--B树的鼻祖。在Linux kernel中,高精度定时器也工作在红黑树之上。为便于初学者掌握其基本算法,本文一步一步地演示了红黑树的创建过程。首先回顾一下红黑树的基本性质:1. 红黑树本质上是一个二叉查找树(BST),但是它从根到最远叶子的长度不会超过到最近叶子长度的两倍,因此是近似平衡的。2....
浅析Java过滤器

浅析Java过滤器

阅读目录一、过滤器概述二、一个简单过滤器的实现过程三、过滤器的部署四、过滤器的应用举例一、过滤器概述 过滤器是Java Web三大组件之一,它与Servlet很相似。对于Web应用程序来说,过滤器是一个驻留在服务器端的Web组件,它可以截取客户端和资源之间的请求和响应信息并对这些信息进行过滤。本文将对过滤器的和实现机制和应用进行简单的总结。 当Web容器接收到一个对资源的请求时,它将判断是否有过滤器与这个资源相关联,如果有那么容器将请求交给过滤器进行处...
<< 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 >>