201607-26 浅谈算法和数据结构: 十一 哈希表 56 VIEW 在前面的系列文章中,依次介绍了基于无序列表的顺序查找,基于有序数组的二分查找,平衡查找树,以及红黑树,下图是他们在平均以及最差情况下的时间复杂度: 可以看到在时间复杂度上,红黑树在平均情况下插入,查找以及删除上都达到了lgN的时间复杂度。 那么.... Read More >
201607-26 浅谈算法和数据结构: 十 平衡查找树之B树 60 VIEW 前面讲解了平衡查找树中的2-3树以及其实现红黑树。2-3树种,一个节点最多有2个key,而红黑树则使用染色的方式来标识这两个key。 维基百科对B树的定义为“在计算机科学中,B树(B-tree)是一种树状数据结构,它能够存储数据、对其进行排序并允许以O(log n).... Read More >
201607-26 浅谈算法和数据结构: 九 平衡查找树之红黑树 77 VIEW 前面一篇文章介绍了2-3查找树,可以看到,2-3查找树能保证在插入元素之后能保持树的平衡状态,最坏情况下即所有的子节点都是2-node,树的高度为lgN,从而保证了最坏情况下的时间复杂度。但是2-3树实现起来比较复杂,本文介绍一种简单实现2-3树的数据结构,即红黑树(Red-Black Tre.... Read More >
201607-26 浅谈算法和数据结构: 八 平衡查找树之2-3树 45 VIEW 前面介绍了二叉查找树(Binary Search Tree),他对于大多数情况下的查找和插入在效率上来说是没有问题的,但是他在最差的情况下效率比较低。本文及后面文章介绍的平衡查找树的数据结构能够保证在最差的情况下也能达到lgN的效率,要实现这一目标我们需要保证树在插入完成之后始终保持平衡状态,.... Read More >
201607-26 浅谈算法和数据结构: 七 二叉查找树 58 VIEW 前文介绍了符号表的两种实现,无序链表和有序数组,无序链表在插入的时候具有较高的灵活性,而有序数组在查找时具有较高的效率,本文介绍的二叉查找树(Binary Search Tree,BST)这一数据结构综合了以上两种数据结构的优点。 二叉查找树具有很高的灵活性,对其优化可以生成平.... Read More >
201607-26 浅谈算法和数据结构: 六 符号表及其基本实现 48 VIEW 前面几篇文章介绍了基本的排序算法,排序通常是查找的前奏操作。从本文开始介绍基本的查找算法。 在介绍查找算法,首先需要了解符号表这一抽象数据结构,本文首先介绍了什么是符号表,以及这一抽象数据结构的的API,然后介绍了两种简单的符号表的实现方式。 一符号表 .... Read More >
201607-26 浅谈算法和数据结构: 五 优先级队列与堆排序 48 VIEW 在很多应用中,我们通常需要按照优先级情况对待处理对象进行处理,比如首先处理优先级最高的对象,然后处理次高的对象。最简单的一个例子就是,在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话。 在这种情况下,我们的数据结构应该提供两个最基本的操作,一个是返回最高优先级.... Read More >
201607-26 浅谈算法和数据结构: 四 快速排序 51 VIEW 上篇文章介绍了时间复杂度为O(nlgn)的合并排序,本篇文章介绍时间复杂度同样为O(nlgn)但是排序速度比合并排序更快的快速排序(Quick Sort)。 快速排序是20世纪科技领域的十大算法之一 ,他由C. A. R. Hoare于1960年提出的一种划分交换排序.... Read More >
201607-26 浅谈算法和数据结构: 三 合并排序 87 VIEW 合并排序,顾名思义,就是通过将两个有序的序列合并为一个大的有序的序列的方式来实现排序。合并排序是一种典型的分治算法:首先将序列分为两部分,然后对每一部分进行循环递归的排序,然后逐个将结果进行合并。 合并排序最大的优点是它的时间复杂度为O(nlgn).... Read More >
201607-26 浅谈算法和数据结构: 二 基本排序算法 36 VIEW 本篇开始学习排序算法。排序与我们日常生活中息息相关,比如,我们要从电话簿中找到某个联系人首先会按照姓氏排序、买火车票会按照出发时间或者时长排序、买东西会按照销量或者好评度排序、查找文件会按照修改时间排序等等。在计算机程序设计中,排序和查找也是最基本的算法,很多其他的算法都是以排序算法为基础,在.... Read More >
201607-26 浅谈算法和数据结构: 一 栈和队列 36 VIEW 计算机程序离不开算法和数据结构,本文简单介绍栈(Stack)和队列(Queue)的实现,.NET中与之相关的数据结构,典型应用等,希望能加深自己对这两个简单数据结构的理解。 1. 基本概念 概念很简单,栈 (Stack)是一种后进先出(last in .... Read More >
201607-22 linux下shell编程:awk详解 58 VIEW 一.基本介绍 1.awk: awk是一个强大的文本分析工具,在对文本文件的处理以及生成报表,awk是无可替代的。awk认为文本文件都是结构化的,它将每一个输入行定义为一个记录,行中的每个字符串定义为一个域(段),域和域之间使用分割符分割。 .... Read More >
201607-21 linux中的文件描述符与打开文件之间的关系 56 VIEW 1. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调.... Read More >
201607-21 20条iptables防火墙规则用法! 61 VIEW 管理网络流量是系统管理员必需处理的最棘手工作之一,我们必需规定连接系统的用户满足防火墙的传入和传出要求,以最大限度保证系统免受攻击。很多用户把 Linux 中的 IPTables 当成一个防火墙,从严格意见上来说 IPTables 只是能够帮助管理员定义各种规则并与 Linux Kernel 进行沟通的一个命令行工具。它只是帮助管理员配置网络流量的传入、传出规则列表,具体的实现其实是在 Li.... Read More >
201607-21 linux下让进程在后台可靠运行的几种方法 36 VIEW 我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢? 下面举了一些例子, 您可以针对不同的场景选择不同的方式来处理这个问题。 nohup/setsid/& 场景: .... Read More >
201607-18 c语言的堆栈机制 58 VIEW 在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈。我身边的一些编程的朋友以及在网上看帖遇到的朋友中有好多也说不清堆栈,所以我想有必要给大家分享一下我对堆栈的看法,有说的不对的地方请朋友们不.... Read More >
201607-18 获取shell脚本自身所在目录的Shell脚本分享 51 VIEW 简单版 下面是一个最简单的实现,可以解决大多数问题,缺陷是对于软链接显示的是软链接所在的目录 代码如下: #!/bin/sh DIR=$(cd `dirname $0`; pwd) echo $DIR 完善版 这个版本解决了使用ln -s target linkName创造软.... Read More >
201607-16 守护进程(Daemon) 62 VIEW 守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待 处理某些发生的事件。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。 同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。 守护进.... Read More >
201607-16 《UNIX环境高级编程》文件共享及fork函数 54 VIEW UNIX系统支持在不同进程间共享打开文件。内核使用3种数据结构表示打开文件,它们之间的关系决定了文件共享方面一个进程对另一个进程可能产生的影响。 内核维持了3个表,即进程表,文件表和v节点表。具体如下: 1>每个进程在进程表中都有一个纪录项,记录项.... Read More >
201607-16 linux下安裝配置NFS4服務 307 VIEW 安装 NFS 服务器所需的软件包: # yum install nfs-utils 这会将所需要的关联软件包一并完成。 注意,NFS4不同于NFS3,不再需要安裝portmap。 配置 NFS 共享 编辑/etc/exports文件,此文件初始状态下什么内容都没有,自己加吧。 # vi /etc/exports .... Read More >
201607-16 linux常用网络服务端口一览表及详细分析 102 VIEW 下面的表格中列举了包括在红帽企业 Linux 中的服务、守护进程、和程序所使用的最常见的通信端口。该列表还可以在 /etc/services 文件中找到。要查看由互联网号码分派局(IANA)制定的“著名的已注册动态端口”官方列表,请参考以下 URL: http://www.iana.org/assignments/port-numb.... Read More >
201607-15 linux下用Wake On LAN实现远程开机 601 VIEW 在Linux下用Wake On LAN实现远程开机 请先确认满足以下环境要求: 操作机器与目标机器在同一局域网内 目标机器电源和网线已插好 目标机器网卡和主板均支持远程唤醒 具体操作步骤: 1. 在本机安装Wake On LAN。可从官方网站下载。 如果使用Fedora,则可以用y.... Read More >
201607-15 linux文件系统简介 56 VIEW 文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识。 本文将站在一个较高的视图来了解linux的文件系统,主要包括了linux磁盘分区和目录、挂载基本原理、文件存储结构、软链接.... Read More >
201607-15 TIOBE 2016年7月编程语言排行榜: 汇编语言再次排入前十 54 VIEW 本月的排名可能会有些出人意料:现存最低水平的编程语言再次进入了TIOBE排行榜的前十之列。这门编程语言相对于其他语言来说,水平与生产力如此低下,并且容易导致各种各样的编程语言错误,为什么还会有人用它来编写代码呢? 唯二合理的解释就是:首先仅能运行汇编语言的小型设备在数量上日益增.... Read More >
201607-14 linux下cp强制覆盖文件 89 VIEW Linux下cp命令是有别名(alias cp='cp -i')的,直接写在profile里,无法强制覆盖,即使你用 -f 参数也无法强制覆盖文件。 下面提供三种Linux下cp 覆盖方法. 1.取消cp的alias,放心这不是永久生效 unalias cp;cp abc /root/abc 或 alias cp='cp.... Read More >
201607-11 幽他一默–1 42 VIEW 1、“你们用盗版的时候有想过做出这款软件的程序员吗?!他们该如何养家糊口?” “哈哈哈,别逗了,程序员哪有家要养啊!” 2、程序员A:借我1000元吧。 程序员B:给你凑个整数,1024元吧。 3、当年刚学打篮球的时候,疯狂地迷恋上了乔丹,然后迷恋上了NIKE,更熟记了NIKE的那句广告语:J.... Read More >
201607-11 shell脚本调试方法 59 VIEW shell脚本的三种调试方法: -n 读一遍脚本中的命令但不执行,用来检查脚本中的语法错误 -v 一边执行脚本,一边将执行过的脚本命令打印到标准输出端 -x 提供跟踪执行信息,将执行的每一条命令和结果一次打印出来 使用这些选项有三种方法 1.在命令行提供参数.... Read More >
201607-08 四款后起编程语言能否成功挑战Python的王者地位 41 VIEW Swift、Go、Julia与R已经成为现任便捷性与功能性王者Python的潜在竞争对手。 王权没有永恒,编程语言自然也不例外。作为当前雄踞各大语言人气榜冠军的Python,其似乎也面临着同样的挑战。不过各类后起之秀也都凭借着自身设计证明,Python所拥有的.... Read More >
201607-08 应用环境下的TIME_WAIT和CLOSE_WAIT 49 VIEW 在服务器的日常维护过程中,会经常用到下面的命令: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) p.... Read More >
201607-08 linux下生成core dump文件方法及设置 187 VIEW 1.如何生成 coredump 文件 ? 登陆 LINUX 服务器,任意位置键入 echo "ulimit -c 1024" >> /etc/profile 退出 LINUX 重新登陆 LINUX 键入 ulimit -c 如果.... Read More >
201607-07 linux常用查看硬件设备信息命令 69 VIEW 1.系统 -------------------------------------------------- 1)uname -a # 查看内核/操作系统/CPU信息 2)head -n 1 /etc/issue .... Read More >
201607-06 linux下的程序调试——GDB 143 VIEW GDB 概述 ———— GDB 是 GNU 开源 组织发布 的一个强大的 UNIX 下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC 、 BCB 等 IDE 的调试,但如果你是在 UNIX .... Read More >
201607-06 linux设置mail邮件服务器 182 VIEW 1.vi /etc/mail.rc set from=xxx@163.com #默认对外发送邮件的用户邮箱地址 set smtp=smtp.163.com #选用默认发送邮件的公共邮件域名 set smtp-auth-user=aaa@163.com #默认对外.... Read More >
201607-06 关于fork函数中的内存复制和共享 47 VIEW 原来刚刚开始做Linux下面的多进程编程的时候,对于下面这段代码感到很奇怪, #include<unistd.h> #include<stdio.h> #include<string.h> #include<stdlib.h.... Read More >
201607-06 linux下shell编程:for&while 循环详细总结 50 VIEW #!/usr/bin/ksh #数字段形式 for i in {1..10} do echo $i done #详细列出(字符且项数不多) for File in 1 2 3 4 5 do echo $File done .... Read More >
201607-06 C程序的构成及动态内存分配 42 VIEW 对一个程序,通常的理解就是,源码编译成机器代码,然后通过机器解释运行。不过是怎样编译成机器代码,和怎样运行的,无疑是个值得探讨的问题。怎样编译成机器代码,过程就是源码的编译、链接,编译器做了这些事。而怎样运行,却不是哪个器件自己一己之力就可以做到的。机器代码要在机器上运行,就得要请求硬件资源。.... Read More >
201607-06 Unix下C程序的内存布局 46 VIEW 按照高位排序: 1.栈,自动变量存储,每次函数调用的信息如函数结束后返回到的地址,调用者的环境信息.新调用的函数会为其自动临时变量分配空间.这就是递归函数的重点,每一次递归函数自我调用,一个新的栈帧会创建,因此他们的数据不会互相干涉到. 2.堆,程序运行时动态分配的数据会被存储在此. 3.未初始化数据段,通常被称为"bss".... Read More >
201606-29 linux常用关机命令及其区别 79 VIEW 在linux下一些常用的关机/重启命令有shutdown、halt、reboot、及init,它们都可以达到重启系统的目的,但每个命令的内部工作过程是不同的,通过本文的介绍,希望你可以更加灵活的运用各种关机命令。 1.shutdown shutdown命令安全地将系统关机。 有些用户会使用直接断掉电源的方式来关闭linux,这是十分危险的.... Read More >
201606-27 linux脚本的执行方式解析 67 VIEW 当shell脚本具有可执行权限时,用sh filename与./filename执行脚本没有区别。./filename是因为当前目录没有在PATH中,"."是用来表示当前目录的。 sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变.... Read More >