- 博客(121)
- 资源 (7)
- 收藏
- 关注
原创 谷歌新Logo如何做到只有305字节
谷歌新旧Logo谷歌换logo已经有一段时间了,对于更换Logo的问题,大家讨论的最多的是到底新老Logo哪个更好看。但也有个别同学注意到了一个事实:谷歌的新Logo只有305字节那么大,而老的Logo则有14000字节。咳咳,按照谷歌的网络流量,单单一个Logo就能为整个互联网省下不少带宽啊。新Logo为什么就这么小呢?谷歌的旧Logo使用了serif字体,而这类
2015-09-13 09:53:41
1312
原创 程序员面试题集锦
谷歌面试官经典作品(CTCI)目录1.1 判断一个字符串中的字符是否唯一1.2 字符串翻转1.3 去除字符串中重复字符1.8 利用已知函数判断字符串是否为另一字符串的子串2.1 从链表中移除重复结点2.2 实现一个算法从一个单链表中返回倒数第n个元素2.3 给定链表中间某结点指针,删除链表中该结点2.4 求由两个链表结点组成的数之和
2015-09-06 23:23:48
8066
转载 程序员面试中常见10大算法汇总
以下是在编程面试中排名前10的算法相关的概念,我会通过一些简单的例子来阐述这些概念。由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍。本文将从Java的角度看问题,包含下面的这些概念:1. 字符串如果IDE没有代码自动补全功能,所以你应该记住下面的这些方法。toCharArray() // 获得字符串对应的char数组Arrays.sort() // 数组排序
2015-08-30 10:43:04
1106
转载 TCP-IP协议详解(2) 以太网与WiFi协议
在阅读“TCP-IP协议详解”系列文章之前,建议阅读以下两篇文章,以便对互联网协议有个快速的全局了解和把握!互联网协议入门(一)互联网协议入门(二)“小喇叭开始广播啦”,如果你知道这个,你一定是老一辈的人。“小喇叭”是五十年代到八十年代的儿童广播节目。在节目一开始,都会有一段这样的播音:“小朋友,小喇叭开始广播了!” 听到这里,收音机前的小朋友就兴奋起来,准备好听节目了:这一期
2015-08-30 00:36:31
5215
1
转载 TCP-IP协议详解(1)网络协议概观
在阅读“TCP-IP协议详解”系列文章之前,建议阅读以下两篇文章,以便对互联网协议有个快速的全局了解和把握!互联网协议入门(一)互联网协议入门(二)信号的传输总要符合一定的协议(protocol)。比如说长城上放狼烟,是因为人们已经预先设定好狼烟这个物理信号代表了“敌人入侵”这一抽象信号。这样一个“狼烟=敌人入侵”就是一个简单的协议。协议可以更复杂,比如摩尔斯码(Morse C
2015-08-30 00:34:29
760
转载 django开发博客(1) 入门
现在正式开始博客开发1、安装django1.4如果你使用的是fedoraDVD版,安装时选择了web开发组建,这一步可以省略,因为它自带django环境django下载地址 https://www.djangoproject.com/download/ 这里我们选择最新版然后在终端下打开下载目录tar xzvf Django-*.tar.gz 。cd
2015-08-30 00:30:45
924
转载 「专治不明觉厉」之“大数据”
大数据(Big Data)大数据,官方定义是指那些数据量特别大、数据类别特别复杂的数据集,这种数据集无法用传统的数据库进行存储,管理和处理。大数据的主要特点为数据量大(Volume),数据类别复杂(Variety),数据处理速度快(Velocity)和数据真实性高(Veracity),合起来被称为4V。大数据中的数据量非常巨大,达到了PB级别。而且这庞大的数据之中,
2015-08-30 00:29:02
702
原创 深夜随笔
好久没来优快云写博客了。看到最近一篇博文,已经是快两年前的事了。时间过得太快,从学校毕业来到一个陌生的城市,再从一个陌生的城市去到另一个陌生的城市。生活就是这样。身边的人来去匆匆,自己也是漂浮不定。女神,还是那么遥远。她依然是在梦里,穿着碎花洋裙,天真烂漫。问归期,未有期。我在西二旗。等你!
2015-08-30 00:22:58
612
原创 (十一)二叉查找树
一颗二叉查找树/*******************************************二叉查找树,支持的操作包括:SERACH、MINIMUM、MAXIMUM、PREDECESSOR、SUCCESSOR、INSERT、DELETE。定理:对于一个高度为h的二叉查找树,操作SERACH、MINIMUM、MAXIMUM、PREDECESSOR、SUCCESSOR的运行时间均为
2013-11-20 08:28:59
1843
转载 libxml2的编译与安装
1. 下载和安装LIBXML2 Libxml2是个C语言的XML程式库,能简单方便的提供对XML文件的各种操作,并且支持XPATH查询,及部分的支持XSLT转换等功能。Libxml2的下载地址是http://xmlsoft.org/,完全版的库是开源的,并且带有例子程式和说明文件。最佳将这个库先下载下来,因为这样能查看其中的文件和例子。由于我是在linux下用C语言进行研发的
2013-11-19 23:21:29
9341
原创 (十)哈希表
利用链表法解决冲突的构建的一个hash表,最终的示意图如下图所示。下面的代码实现的功能为:将一个网址进行hash,并存放于hash表中。链表节点包含三个元素:1)存放指向存放网址的指针。2)该网址出现的次数。3)指向下一个节点的指针。/*******************************************=================JJ日记=========
2013-11-17 20:40:50
1431
原创 (九)双链表
/*******************************************双链表操作:list_serach list_insert list_delete 相关伪代码://在链表L中查找具有关键字k的元素xlist_search(L,k) x=head[L] while x != NIL and key[x]!=k do x <—— next[x] retur
2013-11-16 16:42:45
1001
原创 Linux网络编程(六)
网络编程中,使用多路IO复用的典型场合:1.当客户处理多个描述字时(交互式输入以及网络接口),必须使用IO复用。2.一个客户同时处理多个套接口。3.一个tcp服务程序既要处理监听套接口,又要处理连接套接口,一般需要用到IO复用。4.如果一个服务器既要处理TCP,又要处理UDP,一般也需要用到IO复用。5.如果一个服务器要处理多个服务或者多个协议,一般需要用到IO复用。linux提供
2013-11-16 15:10:54
1354
原创 Linux网络编程(五)
/*Linux网络编程(五)——多路IO复用之select()网络编程中,使用IO复用的典型场合:1.当客户处理多个描述字时(交互式输入以及网络接口),必须使用IO复用。2.一个客户同时处理多个套接口。3.一个tcp服务程序既要处理监听套接口,又要处理连接套接口,一般需要用到IO复用。4.如果一个服务器既要处理TCP,又要处理UDP,一般也需要用到IO复用。5.如果一个服务器要处
2013-11-16 15:10:38
1233
原创 Linux网络编程(四)
在linux网络编程【1-3】中,我们编写的网络程序仅仅是为了了解网络编程的基本步骤,实际应用当中的网络程序并不会用那样的。实际网络程序多使用select、poll、epoll等多路IO复用。在进入主题之前,我们先来了解一下linux的IO模型。现有的linux IO模型有5种:阻塞式IO模型,非阻塞式IO模型,IO复用模型,信号驱动式IO模型,异步IO模型。关于阻塞、非阻塞、同步、异步,
2013-11-16 15:10:27
1601
原创 Linux网络编程(三)
Linux网络编程(三) wait()还是waitpid()Linux网络编程(二)存在客户端断开连接后,服务器端存在大量僵尸进程。这是由于服务器子进程终止后,发送SIGCHLD信号给父进程,而父进程默认忽略了该信号。为避免僵尸进程的产生,无论我们什么时候创建子进程时,主进程都需要等待子进程返回,以便对子进程进行清理。为此,我们在服务器程序中添加SIGCHLD信号处理函数。代码如下:
2013-11-16 15:10:15
1136
原创 (八)循环队列
/****************************************循环队列操作:用数组Q[0,n-1]来实现一个至多有n-1个元素的队列。队列的两个属性:head[Q] and tail[Q]head[Q]指向队列的头tail[Q]指向新元素将要被插入的地方。队列中各个元素的位置为:head[Q],head[Q]+1,...,tail[Q]-1.在最后一个位置要进行“
2013-11-16 14:31:50
1315
原创 (七)线性堆栈
/****************************************堆栈操作:用数组S[0,n-1]来实现一个至多有n个元素的栈。STACK_EMPYT(S) //判断栈是否为空 if top[S]=-1 then return ture else return falsePUSH(S,x) //将元素x压入栈中 if to
2013-11-16 14:31:15
1328
原创 (六)线性选择
/************************************************以期望线性时间做选择:返回数组A[p,r]中第i小的数算法通过分治递归划分,像快排那样,将数组划分成两边,然后根据情况,处理划分后的某一边,算法伪代码如下:select(A,p,r,i) if p=r then return A[p] q<——partion(A
2013-11-16 14:30:40
1357
原创 (五)使用最大堆实现优先级队列
/*******************************************利用最大堆实现最大优先级队列最大优先级支持的操作:1.insert(S,x) //将元素x插入集合S中2.maximum(S) //返回S中最大关键字的元素3.extract(S) //去掉并返回S中最大关键字的元素4.increase_key(S,x,k) //将元素x的关键字的值增加到k,
2013-11-16 14:29:58
1269
原创 (四)快速排序
/*****************************************快速排序伪代码:QUICK_SORT(A,p,r) if(p<r) then q <—— PARTITION(A,p,r) QUICK_SORT(A,p,q-1) QUICK_SORT(A,q+1,r)//核心函数,对数组A[p,
2013-11-16 14:29:18
1145
原创 (三)堆排序
/*******************************************堆排序,时间复杂度O(nlgn)伪代码:1.下标计算[为与程序对应,下标从0开始]Parent(i): return i/2Left(i): return 2*i+1Right(i): return 2*i+22.使下标i元素为根的的子树成为最大堆MAX_HEAPIFY(
2013-11-16 14:28:40
1056
原创 (二)合并排序
/*************************************分治策略:将原问题划分成n个规模较小而结构与原问题相似的子问题; 递归地解决这些子问题,然后再合并其结果,得到原问题的解。分治模式三部曲:分解、解决、合并。合并排序伪代码(使用哨兵):merge(A,p,q,r): n1 <—— q-p+1 n2 <—— r-q cre
2013-11-16 14:27:50
1124
原创 (一)插入排序
/*******************************************算法一:插入排序算法伪代码:insert_sort(A): for j <—— 1 to length[A]-1 do key <—— A[j] //insert A[j] into the sorted sequence A[1...j-1]
2013-11-16 14:27:02
1309
原创 Linux网络编程(二)
采用多进程的方式实现服务器的并发访问。程序实现功能:1.客户端从标准输入读入一行文字,发送到服务器 2.服务器接收到客户端发来的文字后,原样返回给客户端 3.客户端接收到服务器的发来的文字后,输出到标准输出。 服务器端过程:建立好监听套接字后,等待客户端的连接,接收到一个连接后,创建一个子进程来与客户端进行
2013-10-30 08:29:18
1079
原创 Linux内核中链表实现
关于双链表实现,一般教科书上定义一个双向链表节点的方法如下:struct list_node{stuct list_node *pre;stuct list_node *next;ElemType data; }即一个链表节点包含:一个指向前向节点的指针、一个指向后续节点的指针,以及数据域共三部分。但查看linux内核代码中的list实现时,会发现其与教科书上的方法有很
2013-10-29 09:05:03
1359
原创 linux网络编程(一)
一.概念介绍网络程序分为服务端程序和客户端程序。服务端即提供服务的一方,客户端为请求服务的一方。但实际情况是有些程序的客户端、服务器端角色不是这么明显,即互为客户端和服务端。我们编写网络程序时,一般是基于TCP协议或者UDP协议进行网络通信的。TCP:(Transfer Control Protocol)传输控制协议是一种面向连接的协议, 当我们的网络程序使用这个协议的时候,网络可以保
2013-10-26 13:13:11
1018
原创 2-5 求有环链表的环入口节点(证明及代码)
【链表】Q:Given a circular linked list, implement an algorithm which returns node at the begin-ning of the loop DEFINITION Circular linked list: A (corrupt) linked list in which a node’s next poi
2013-10-20 11:07:01
2185
原创 [google面试CTCI] 2-4 计算两个单链表所代表的数之和
【链表】Q:You have two numbers represented by a linked list, where each node contains a single digit. The digits are stored in reverse order, such that the 1’s digit is at the head of the list. Write a
2013-10-20 10:06:20
1225
原创 [google面试CTCI] 2-3 只给定链表中间节点指针,如何删除中间节点?
【链表】Q:Implement an algorithm to delete a node in the middle of a single linked list, givenonly access to that node EXAMPLEInput: the node ‘c’ from the linked list a->b->c->d->eResult: noth
2013-10-20 09:26:06
1051
原创 [google面试CTCI] 2-2 找出链表的倒数第n个节点元素
【链表】Q:Implement an algorithm to find the nth to last element of a singly linked list .题目:找出链表的倒数第n个节点元素。解答: 方法一:利用两个指针p,q,首先将q往链表尾部移动n位,然后再将p、q一起往后移,那么当q达到链表尾部时,p即指向链表的倒数第n个节点。node* f
2013-10-20 09:24:43
1455
原创 [google面试CTCI] 2-1.移除链表中重复元素
【链表】Q:Write code to remove duplicates from an unsorted linked list FOLLOW UP How would you solve this problem if a temporary buffer is not allowed?题目:编码实现从无序链表中移除重复项。 如果不能
2013-10-20 09:22:23
1404
原创 [google面试CTCI] 2-0.链表的创建
创建链表、往链表中插入数据、删除数据等操作,以单链表为例。 1.使用C语言创建一个链表:typedefstruct nd{ int data;struct nd* next; } node;//初始化得到一个链表头节点node* init(void){node* head=(node*)malloc(sizeof(node));if(head
2013-10-20 09:21:23
861
原创 [google面试CTCI] 1-8.判断子字符串
【字符串与数组】Q:Assume you have a method isSubstring which checks if one word is a substring of another Given two strings, s1 and s2, write code to check if s2 is a rotation of s1 usingonly one call t
2013-10-19 11:27:16
1056
原创 [google面试CTCI] 1-7.将矩阵中特定行、列置0
【字符串与数组】Q:Write an algorithm such that if an element in an MxN matrix is 0, its entire row andcolumn is set to 0.题目:写一个算法,如果一个 MxN矩阵中某个元素为0,则将该元素所在的行、列都置为0.解答:方法一:错误的解法,思维误区。依次遍历二维数组(矩
2013-10-19 11:20:05
1007
原创 [google面试CTCI] 1-6.图像旋转问题
【字符串与数组】Q:Given an image represented by an NxN matrix, where each pixel in the image is 4bytes, write a method to rotate the image by 90 degrees Can you do this in place?题目:假定一幅图像能用NxN的矩阵表示,每个
2013-10-19 11:19:46
1309
原创 [google面试CTCI] 1-5.替换字符串中特定字符
【字符串与数组】Q:Write a method to replace all spaces in a string with ‘%20’题目:写一个算法将一个字符串中的空格替换成%20解答:很直观的解法,首先统计出字符串中空格个数,然后分配新的内存空间,依次从头到尾复制原字符串到新字符串中,遇到空格,则复制%20这三个字符。还有没有其他更好点的方法呢??char* r
2013-10-19 11:19:23
943
原创 [google面试CTCI] 1-4.判断两个字符串是否由相同字符组成
【字符串与数组】Q:Write a method to decide if two strings are anagrams or not题目:写一个算法来判断两个字符串是否为换位字符串。(换位字符串是指组成字符串的字符相同,但位置不同)解答: 方法一:假设为ascii2码字符串,那么可以分配两个256大小的int数组,每个数组用于统计一个字符串各个字符出现的次数,
2013-10-19 10:38:17
1262
原创 [google面试CTCI]1-3.字符串去重
【字符串与数组】Q:Design an algorithm and write code to remove the duplicate characters in a stringwithout using any additional buffer NOTE: One or two additional variables are fineAn extra copy of
2013-10-19 10:30:09
4858
原创 [google面试CTCI] 1-2 逆转c风格字符串
【字符串与数组】Q:Write code to reverse a C-Style String (C-String means that “abcd” is represented asfive characters, including the null character )题目:将一个c风格字符串逆转(c风格字符串即以空字符结尾的字符串)。
2013-10-19 10:14:01
1163
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人