自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 后缀数组的DC3构造法

本文的大部分内容都是在理解了这篇文章的大部分内容后而写:http://www.cppblog.com/superKiki/archive/2010/05/15/115421.aspx在字符串相关的问题中,后缀数组是一种很有效的武器。后缀数组至少可以解决如下一些问题(当然并不一定是所有下列问题的最优解法):1. 在一个字符串中找出一个子串,这个子串出现至少2次(或者指定出现k次)

2013-07-11 23:22:15 3727

原创 mysql优化之查询优化

大部分内容由mysql官方文档复制粘帖而来。优化where子句包括:1. 去除不必要的括号、常量叠加、去除常量条件和索引使用的常量表达式只用一次;            2. 对于MyISAM和HEAP表,在一个单个表上的没有一个WHERE的COUNT(*)直接从表中检索信息。当仅使用一个表时,对NOT NULL表达式也这样做。(这条我没看懂)            3.

2013-07-02 18:31:15 782

原创 一道矩阵输出题

在论坛上看到有人提出这么一个问题,输入数字n,输出对应的矩阵。例如,输入:1输出:1输入:2输出:1     2            4     3输入3:输出:7     8     9            6     1     2            5     4     3要求:尽可能占用较少空间,时间复杂度尽量低,且对于n较大时(如:n=1

2013-07-02 10:40:57 619

原创 mysql优化之explai

本来想把explain关键字简单的作为一个章节放在某一篇文章里,但是发现要完全介绍清楚,需要不少的篇幅。因此单独作为一篇文章吧。宁可罗嗦一点,也要务求详尽。explain的语法为:explain 。例如:mysql> explain select id,name from user where id=1;+----+-------------+-------+-------+---

2013-07-01 16:38:08 885

原创 mysql优化

本文介绍一些mysql的复杂语句,也介绍一些优化相关的东西。关键字:unionunion和union allUNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。如:select * from gc_dfys union sel

2013-06-30 22:55:04 474

原创 最大乘积子数组

《编程之美》上有一道关于在长度为n的数组中找到n-1个元素乘积最大的题目,不过这并不是本文要讨论的。本文讨论的是另一种情况,给定一个长度为n的浮点数组,找一个长度任意的子数组(子数组的元素在原数组中是连续存放的),这个子数组的乘积最大。通常,找一个满足指定条件子数组都会使用动态规划。递归缩小问题规模的同时,保持问题的数目不会指数增长。不过,本文的这个问题中,情况稍复杂一些,由于

2013-06-29 22:31:49 631

原创 java的一些高级特性总结

本文对java里的一些高级特性进行非深度的总结,理解了本文所讲的内容,仅仅足够应付面试。我对于每个特性都列出了一些比较深入的介绍文章地址,想要深入研究的朋友可以参考。桥方法桥方法的主要作用是支持泛型的方法重写。考虑下面这个类:class A { public A() { } public void test(T t) {

2013-06-25 17:44:21 662

转载 深圳的一些IT公司

华为技术有限公司中兴通讯股份有限公司腾讯科技(深圳)有限公司深圳迈瑞生物医疗电子股份有限公司国际商业机器科技(深圳)有限公司深圳市腾讯计算机系统有限公司金蝶软件(中国)有限公司深圳市同洲电子股份有限公司深圳市怡化电脑有限公司深圳市南凌科技发展有限公司宇龙计算机通信科技(深圳)有限公司深圳市南瑞科技有限公司深圳市紫金支点技术股份有限公司深圳市大族激

2013-06-13 11:04:48 8409 1

原创 重温KMP算法

最近面试时被问到了有关字符串查找的问题,在此回顾一下《算法导论》上介绍的KMP算法。KMP算法是一个用来解决在一个字符串里查找特定子字符串的算法,这个算法不需要回溯,因为它会对子字符串(下面称为模式串)进行一个预处理。根据预处理得到的信息可以在进行模式串匹配时获取下一个跳转匹配位置,具体如下。比如我们有模式串:P=abcabd,有目标串:T=aaabcabgccdddd(P

2013-06-06 22:32:54 523

原创 AMAZON面试题

问题描述: n个字符串,如何快速判断这n个字符串是否可以组成一个链,两个字符串可以组成链的条件是第一个字符串的开头或者结尾字母与第二个字符串的开头或结尾字母一样。思路:这是一个图的遍历问题,举例说明,有字符串:abcd,dcbb,deag,ak47,7b4b将这组字符串组成一个图:上图中,每条边有权值,遍历中经过该边一次,权值减一

2013-06-04 22:44:34 1000

原创 原地归并排序--2013-06-02

问题描述:数组a[n],a[0]~a[m]和a[m+1]~a[n-1]两个子数组分别是有序的,其中m源地址:http://www.geeksforgeeks.org/forums/topic/amazon-interview-question-for-software-engineerdeveloper-about-algorithms-arrays-28/我的思路:由于要

2013-06-02 23:33:39 506

转载 位运算实现加法--2013-06-01

用位运算实现加法也就是计算机用二进制进行运算,32位的CPU只能表示32位内的数,这里先用1位数的加法来进行,在不考虑进位的基础上,如下1 + 1 = 01 + 0 = 10 + 1 = 10 + 0 = 0很明显这几个表达式可以用位运算的“^”来代替,如下1 ^ 1 = 01 ^ 0 = 10 ^ 1 = 10 ^ 0 = 0这样我们就完成了简

2013-06-01 21:35:31 556

原创 hamcrest matchers 介绍

地址:http://www.jarvana.com/jarvana/view/org/hamcrest/hamcrest-library/1.2.1/hamcrest-library-1.2.1-javadoc.jar!/org/hamcrest/Matchers.html

2012-11-05 12:29:22 668

转载 Linux sed命令实例详解

Linux sed命令实例详解 功能说明:利用script来处理文本文件。 语  法:sed [-hnV][-e][-f][文本文件] 补充说明:sed可依照script的指令,来处理、编辑文本文件。 参  数: -e或—expression=   以选项中指定的script来处理输入的文本文件。 -f或—file=   以选项中指定的script文件来处理输入

2012-11-05 12:15:27 361

原创 JMS入门

在不同系统之间交换信息的一大障碍是如何在精确交换和格式化数据方面取得一致。Java Message Service( Java消息服务,简称JMS)通过提供一种与J2EE应用程序或传统系统交互的方法部分的解决了这个问题。较详细的介绍在:http://java.sun.com/developer/technicalArticles/Ecommerce/jms/在此将英文翻译为中文

2012-08-27 21:14:15 586

转载 tomcat server.xml配置详解

from:http://dcbjavaeye.iteye.com/blog/254193重新编辑了表格tomcat server.xml配置详解元素名属性解释serverport指定一个端口,这个端口负责监听关闭tomcat的请求shutdown指定向端口

2012-08-23 14:23:24 420

转载 http缓存介绍

from:http://hi.baidu.com/webvsky/item/4ec84a8a1ef1ee56e63d1998 HTTP 缓存介绍2种方式来提升你的web 应用程序的速度:1、减少请求和响应的往返次数2、减少请求和响应的往返字节大小HTTP缓存是最好的减少客户端服务器端往返次数的办法。缓存提供了提供一种机制来保证客户端 或者代理能够存储一些东西

2012-08-21 15:36:05 1346

转载 http get和post的区别

from:http://www.yining.org/2010/05/04/http-get-vs-post-and-thoughts/在推特上抱怨面试时问HTTP GETE和POST的区别得到回答都不满意,有人不清楚,当时只回复了看 RFC2616。趁有空说说面试时得到的回答大多是:POST是安全的,因为被提交的数据看不到,或者被加密的,其它的还有GET的时候中文出现

2012-08-21 15:21:21 460

转载 Android推送通知指南

原博客地址:http://blog.csdn.net/joshua_yu/article/details/6563587在开发Android和iPhone应用程序时,我们往往需要从服务器不定的向手机客户端即时推送各种通知消息,iPhone上已经有了比较简单的和完美的推送通知解决方案,可是Android平台上实现起来却相对比较麻烦,最近利用几天的时间对Android的推送通知服务进行初步

2012-08-14 15:44:05 384

转载 Linux 内核编译详解

新内核可以在http://www.kernel.org下载。先把linux-2.6.18.2.tar.bz2 复制到/usr/src/ 的下面tar –jxvf  linux-2.6.18.2.tar.bz2cd linux-2.6.18.2 make mrproper 把原来编译产生的垃圾删除 配置内核可以根据需要与爱好使用下面命令中的一个:#make confi

2012-08-12 10:14:34 424

转载 LINUX查看硬件配置 命令

系统# uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostname # 查看计算机名 # lspci -tv # 列出所有PCI设备 # lsusb -tv # 列出所有USB设备 # lsmod # 列出加载的内核模块 #

2012-08-12 09:32:12 488

原创 二叉树非递归使用常数存储空间遍历

主要使用了一个方向值orien,记录在二叉树中搜索时的路径方向,比如由父节点到左子树时orien值为1,这样按照严格的行走规则,在一个while循环里就能遍历整棵树。    一个简单的例子:    一棵树为:            8                  4             12              2       6     10       14             1 3     5 7   9  11   13  15    那么程序将采用一个相当于后序遍历的顺序对树

2011-04-13 23:52:00 1081 2

转载 C++模板元编程

<br /> <br /><br />作者:荣耀<br /><br />摘要<br /><br />本文描述了模板元编程技术的起源、概念和机制,并介绍了模板元编程技术在Blitz++和Loki程序库中的应用。 <br /><br />关键字<br /><br />编译期计算  模板元编程  Blitz++  Loki <br /><br />导言 <br /><br />1994年,C++标准委员会在圣迭哥举行的一次会议期间Erwin Unruh展示了一段可以产生质数的代码。这段代码的特别之处在于质数产生于

2011-03-21 22:05:00 585

转载 C++ traits初探

<br /><br />traits是一种特性萃取技术,它在Generic Programming中被广泛运用,常常被用于使不同的类型可以用于相同的操作,或者针对不同类型提供不同的实现.traits在实现过程中往往需要用到以下三种C++的基本特性:<br />enum<br />typedef<br />template (partial) specialization<br />其中:<br />enum用于将在不同类型间变化的标示统一成一个,它在C++中常常被用于在类中替代define,你可以称enum

2011-03-21 16:00:00 472

原创 effective C++ 读书笔记(下)

条款42:了解typename的双重意义      C++里在模板定义中“typename”和“class”可以互换。但是有时候,必须使用typename:templatevoid print2nd(const C& container){ if (container.size()>=2) { C::const_iterator iter(container.begin()); ++iter; int value = *iter; std::cout      上面的代码

2011-03-20 23:22:00 447

原创 effective C++ 读书笔记(中)

条款33:避免遮掩继承而来的名称      看下面的例子:class Base{private: int x;public: virtual void mf1() = 0; virtual void mf1(int); virtual void mf2(); void mf3(); void mf3(double); //...};class Derived: public Base{public: virtual void mf1(); void m

2011-03-19 17:48:00 453

原创 转载:C++程序的存储空间布局

C++程序的存储空间布局 作者:JuKevinC++程序是由一下几部分组成:(1) 正文段 (.text)程序代码就存储咋text 段,这是由C P U执行的机器指令部分。通常,正文段是可共享的,所以即使是经常执行的程序(如文本编辑程序、C编译程序、s h e l l等)在存储器中也只需有一个副本,另外,正文段常常是只读的,以防止程序由于意外事故而修改其自身的指令。当你在链接定位文件中将该符号放置在代码段 后,那么该符号表示的值就是代码段大小,编译连接时,该符号所代表的值会自动代入到源程序中。(2) 只读数

2011-03-18 12:39:00 665

原创 effective C++ 读书笔记(上)

条款05:了解C++默默编写并调用那些函数      在类的声明中,没有声明而会由编译器声明的有:一个拷贝构造函数,一个拷贝赋值运算符和一个构造函数。也就是说,如果声明了一个带参的构造函数,那么编译器将不会为你声明一个无参的构造函数,因此在声明类的对象时必须调用含参数的构造函数,否则将会编译出错。如果没有声明这个带参的构造函数,反而不会出现这样的错误,这必须十分注意。拷贝赋值运算符使用时,如果类的成员里有引用变量或者常量,那么由于构造函数已经为类的这些成员初始化了,这些成员不能再被赋值,此时编译器就会拒绝生

2011-03-16 23:05:00 491

原创 linux套接字编程

      套接字是用来进行主机间通讯的,linux的socket和windows差不多,虽然有一定的区别,但是其基本原理与结构是一样的,因此,一台windows的主机可以和一台linux的主机通过套接字进行通讯。socket采用客户端与服务器端的模式使两台主机进行通讯。首先,服务器端调用函数socket新建一个套接字,该套接字只能由该进程所有。然后服务器段进程对socket进行命名,本地套接字将被赋予一个文件名,该文件通常保存在/tmp或者/usr/tmp下。对于网络套接字,名字将是一个与所连接的网络有关

2011-03-02 22:30:00 2325

原创 POJ1025

这题主要是比较麻烦,要考虑的比较全面。题目大意是:有一栋楼,楼有10层,每层有10个房间,层与层之间用电梯连接,电梯每五秒搭载一个人。有序号为A到Z的26个人可能要来访问这栋楼,每个人可以访问一个或多个房间,并以房间号的升序对房间进行访问。然而每个房间里同一时刻只能有一个人,若有多个人要访问同一房间,则以字母升序的优先级进行访问,编号为A的人有最高的优先级,Z的优先级最低。不能立即访问房间的人在房间门前以字母升序优先级排成队列进行等待。对于电梯的使用也是一样的按字母优先级。我的思路是以优先级降序的顺序对每个

2011-03-02 21:10:00 1694

原创 linux下的进程间通讯

      管道的概念就不说了,相信学习过操作系统知识的人都应该知道。管道的功能就是进行进程间的通讯,就像它的名字,管道不只是在进程间传递一两个数那么简单。闲话不多说,以下是两个能在进程间传输数据的函数:      FILE *popen(const char *command, const char *open_mode);      int pclose(FILE *stream_to_close);      函数popen通过执行参数command指向的字符串来调用另一个程序,open_mode是‘

2011-03-02 21:07:00 1010

原创 linux多线程编程

      线程的概念就不赘述了,下面先讲讲线程和进程相终结有比具有那些优点或者缺点:      1.线程能够使一个程序看起来在同一时间干了两件或者多件事,这样的功能有时候是非常有用的。      2.线程适用与一个具有几部分相对独立的工作的进程,这样在一个线程阻塞的时候另一个线程的运行不会被中断。      3.由于多核CPU的广泛应用,将一个进程分解为多个线程可以更有效的利用硬件资源。      4.多线程比多进程需要更少的资源,同时更具实用性。      5.多线程程序的设计需要非常小心,一些变量共享

2011-03-02 14:20:00 766

原创 linux进程编程

 创建一个新进程   1.可以使用system函数在程序里创建一个新的进程,函数定义如下:        int system (const char *string);      string代表运行的命令。  2.可以使用以exec开头的一系列函数来开始一个新进程,这些函数有:     int execl(const char *path, const char *arg0, ..., (char *)0);       int execlp(const char *file, const char *

2011-03-02 10:53:00 490

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除