`
文章列表
不久前,byvoid面阿里星计划的面试结果截图泄漏,引起无数IT屌丝的羡慕敬仰。看看这些牛人,NOI金牌,开源社区名人,三年级开始写Basic...在跪拜之余我们不禁要想,和这些牛人比,作为绝大部分技术屌丝的同学们,是否真的与国内IT巨头遥不可及呢? 当你打开这个帖子的时候,我已经默认你是此文的目标读者,也就是想进入国内一流互联网企业的非牛人应届生。 你不需要拿NOI的奖,无需是开源社区名人,也用不着发过牛逼的SCI论文。(没错,笔者就是这样的技术屌丝) 请记住,校园招聘,应聘的绝大部分人都只是才出象牙塔的毛头小子。企业需要的是你们的潜力与激情。牛人总是凤毛麟角的。程序员笔试面 ...
1. 算法的复杂度: 算法的复杂度分为时间复杂度和空间复杂度,时间复杂度是指衡量算法执行时间的长短;空间复杂度是指衡量算法所需存储空间的大小。 2. 时间复杂度:2.1 时间频度:一个算法中语句执行次数称为时间频度,计为T(n)。 2.2 时间复杂度:算法的时间复杂度描述的是T(n)的变化规律,计作:T(n) = O(f(n))。 用大写O( )来体现算法复杂度的记法称为大O记法,一般情况下随着n的增大,T(n)增长最慢的算法为最优算法。 时间频度不同,但时间复杂度可能相同。如:
1. BM算法简介: KMP算法其实并不是效率最高的字符串匹配算法,实际应用的并不多,各种文本编辑器的“查找”功能大多采用的是BM算法(Boyer Moore)。BM算法效率更高,更容易理解。 2. BM算法分析: (1)假定字符串为"HERE IS A SIMPLE EXAMPLE",搜索词为"EXAMPLE"。
深入分析 Java 中的中文编码问题 编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换较多。本文将向你详细介绍 Java 中编码问题出现的根本原因,你将了解到:Java 中经常遇到的几种编码格式的区别;Java 中经常需要编码的场景;出现中文问题的原因分析;在开发 Java web 程序时可能会存在编码的几个地方,一个 HTTP 请求怎么控制编码格式?如何避免出现中文问题?
1. KMP算法简介: kmp算法是一种改进的字符串匹配算法,相比朴素算法,KMP算法预先计算出了一个哈希表,用来指导在匹配过程中匹配失败后尝试下次匹配的起始位置,以此避免重复的读入和匹配过程。这个哈希表被称为"部分匹配值表"(Particial match table),这种设计是KMP算法最精妙之处。
1. BF算法简介: BF(Brute Force)算法是普通的模式匹配算法,又称为朴素匹配算法或蛮力算法,该算法最大缺点就是字符匹配失败指针就要回溯,所以性能很低。 2. BF算法思想: BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和P的第一个字符,依次比较下去,直到得出最后的匹配结果。
因工作需要在Linux下开发,所以,本人今天安装了个虚拟机,在虚拟机上安装了Centos 6.2 32位系统。安装好之后,遇到的第一个问题就是不能联网。     在Windows环境下,公司是通过代理来联网的,于是乎,我先是在firefox中设置了代理的IP地址和端口号。设置完了之后,就可以打开网页了。然后用yum安装中文输入法,发现居然报错。细看之下,原来是因为yum需要联网去获取下载的包,然后由于系统中未设置代理IP。所以,切换到root用户之后。做如下操作: 1、在profile文件中设置相关环境变量 # vi /etc/profile http_proxy=http://192 ...
网络爬虫(web crawler)又称为网络蜘蛛(web spider)是一段计算机程序,它从互联网上按照一定的逻辑和算法抓取和下载互联网的网页,是搜索引擎的一个重要组成部分。一般的爬虫从一部分start url开始,按照一定的策略开始爬取 ...
1.链队列的特点: 链队列其实就是单链表,只不过它是先进先出的单链表,为了实现方便,程序中设置了队头(front),队尾(rear)两个指针。 2. Java使用链表实现队列: //结点类,包含结点的数据和指向下一个节点的引用 public class Node<E> { private E data; // 数据域 private Node<E> next; // 指针域保存着下一节点的引用 public Node() { } public Node(E data) { this.data = data; } p ...
1.什么是队列? 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 2. 队列的特点: 队列是一种先进先出(First In First out)的线性表,允许插入的一端称为队尾,允许删除的一端称为队头。 3. 队列顺序存储有什么不足?
1. 为什么要使用双向栈? 通过上一篇博客 -特殊的线性表(栈),不难知道栈的顺序存储(数组实现)性能相对较好,因为它不存在插入和删除时移动元素的问题,但是它有一点缺陷:要事先确定数组存储容量的大小,万一不够,就需要扩充数组容量。这时双向栈就派上用场了,它可以最大限度的利用事先开辟的存储空间。 2. 双向栈有什么特点? 数组有两个端点,两个栈有两个栈底,让一个栈的栈底为数组的始端,即下标为0处,另一个栈为数组的末端,即下标为数组长度M-1处。这样,两个栈如果增加元素,就会从两端点向中间延伸(如下图)。
在开发RCP程序运行中,Run as Eclipse Application的时候,显示的时候经常达不到预期的效果。修改了Plugin.xml和代码,保存之后,完全看不到效果。这个时候,可能是需要Clear里面整个工程。因为默认都从本地存储数据中提取数据,导致有时候,数据不能刷新。 修改默认设置如下: 菜单:Run>Run configuration >在左边选择运行的项目 > 右边Main面板中勾选Clear>OK   这样每次运行都清空了本地存储,用系统最新的代码。   本人在开发过程中就遇到过因为没有清空本地存储而代码更新后运行还是前代码的效果。   ...
1. 什么是栈? 栈(stack)是限定仅在表尾进行插入和删除操作的线性表。 2. 栈的特点: 1.) 栈又称为后进先出(Last In First out)的线性表,栈元素具有线性关系,即前驱后继关系。 2.) 栈的特殊之处在于:它的栈底是固定的,只允许在栈顶进行插入和删除操作。 3. 栈的顺序存储结构(Java数组实现): // 栈的数组实现, 底层使用数组: public class ArrayStack<T> { private Object[] arr; // 数组首元素作为栈底,因为它变化小 private int length; // ...
1. 双向链表:在单链表的每个结点中,再设置一个指向其前驱结点的指针域,那么在双向链表中的结点都有两个指针域,一个指向直接后继,另一个指向直接前驱。 2. 单链表和双向链表比较: 单链表:总是要从头到尾找结点,只能正遍历,不能反遍历。 双向链表: 可以从头找到尾,也可以从尾找到头,即正反遍历都可以,可以有效提高算法的时间性能,但由于每个结点需要记录两份指针,所以在空间占用上略多一点,这就是通过空间来换时间。 3. Java实现双向链表: // 双向链表 public class DoubleLinkedList<E> { private Node<E&g ...
1. 单向循环链表:将单链表尾结点的指针端由空指针改为指向头结点,使整个单链表形成一个环,这种头尾相接的单链表称为单向循环链表。 2. 单向循环链表和单链表实现的区别: 1.)添加一个结点到单向循环链表末尾时,必须使其最后一个结点的指针指向表头结点,而不是象单链表那样置为null。 2.)判断是否到达表尾时,单向循环链表可以判断该结点是否指向头结点,单链表只需要知道是否为null。
Global site tag (gtag.js) - Google Analytics