自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

逆水行舟,不进则退

一定要吸取教训!

  • 博客(30)
  • 收藏
  • 关注

转载 python中文输出问题

今天准备将某SQLite数据库的内容导出到文本文档(*.txt)中,设计的Python程序如下:12345678910111213141516171819# -*- coding: UTF-8 -*-import sqlite3 def gsel(cur): cur.execute("SELECT * FROM

2015-04-15 19:57:27 501

转载 Jsp/servlet/cgi的区别

1.jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)2.jsp更擅长表现于页面显示,servlet更擅长于逻辑控制.3.Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse

2015-04-14 13:08:44 686

转载 关键字restrict

简介  restrict是c99标准引入的,它只可以用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式.即它告诉编译器,所有修改该指针所指向内存中内容的操作都必须通过该指针来修改,而不能通过其它途径(其它变量或指针)来修改;这样做的好处是,能帮助编译器进行更好的优化代码,生成更有效率的汇编代码.如 int *restrict ptr, ptr 指向的内存单元只能被 ptr 访问

2012-11-17 09:52:32 309

转载 用C语言实现面向对象的开发

C语言的对象化模型面向对象的特征主要包括:.封装,隐藏内部实现.继承,复用现有代码.多态,改写对象行为采用C语言实现的关键是如何运用C语言本身的特性来实现上述面向对象的特征。1.1 封装封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接

2012-11-15 23:47:21 615

转载 c语言实现面向对象编程

介简:       Redy的开发语言是C,但在源码中,有很多地方都使用到了面向对象编程的方法,例如:在基本数据类型这一个模块,所有的数据类型都继承robject;在抽象语法树模块,所有的节点都继承astobjct。在linux内核中,也有很多是使用的面向对象方法,在虚拟文件系统,驱动模型中都可以看到。c语言是一种结构化编程语言,以模块工能和处理过程设计为主,实现数据与代码分隔化。面向

2012-11-15 23:46:54 615

转载 重载和覆盖

方法的重载(overload)和覆盖(override) 有的时候,类的同一种功能有多种实现方式,到底采用哪种实现方式,取决于调用者给定的参数。例如我们最常用的System.out.println()能够打印出任何数据类型的数据,它有多种实现方式。运行时,Java虚拟机先判断给定参数的类型,然后决定执行哪个println()方法。 重载(overload):对于类的方法(包括从父类

2012-11-14 22:37:58 225

转载 程序员面试题精选100题(33)-在O(1)时间删除链表结点[数据结构]

题目:给定链表的头指针和一个结点指针,在O(1)时间删除该结点。链表结点的定义如下:struct ListNode{      int        m_nKey;      ListNode*  m_pNext;};函数的声明如下:void DeleteNode(ListNode*pListHead, ListNode*pToBeDeleted);分析:这

2012-11-12 22:39:32 552

转载 程序员面试题精选100题(57)-O(n)时间的排序[算法]

题目:某公司有几万名员工,请完成一个时间复杂度为O(n)的算法对该公司员工的年龄作排序,可使用O(1)的辅助空间。分析:排序是面试时经常被提及的一类题目,我们也熟悉其中很多种算法,诸如插入排序、归并排序、冒泡排序,快速排序等等。这些排序的算法,要么是O(n2)的,要么是O(nlogn)的。可是这道题竟然要求是O(n)的,这里面到底有什么玄机呢?                题目特别强调是

2012-11-11 23:11:14 733

转载 程序员面试题精选100题(02)-设计包含min函数的栈[数据结构]

题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。分析:这是去年google的一道面试题。我看到这道题目时,第一反应就是每次push一个新元素时,将栈里所有逆序元素排序。这样栈顶元素将是最小元素。但由于不能保证最后push进栈的元素最先出栈,这种思路设计的数据结构已经不是一个栈了。在栈里添加一个成员变量存放

2012-11-11 23:07:59 242

转载 程序员面试题精选100题(31)-从尾到头输出链表[数据结构]

题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:struct ListNode{      int       m_nKey;      ListNode* m_pNext;};分析:这是一道很有意思的面试题。该题以及它的变体经常出现在各大公司的面试、笔试题中。看到这道题后,第一反应是从头到尾输出比较简单。于是很自然地想到把链表中链接结点的

2012-11-11 23:01:54 264

转载 程序员面试题精选100题(09)-链表中倒数第k个结点[数据结构]

题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。链表结点定义如下:struct ListNode{      int       m_nKey;      ListNode* m_pNext;};分析:为了得到倒数第k个结点,很自然的想法是先走到链表的尾端,再从尾端回溯k步。可是输入的是单向链表,只有从前往后的指针而没有从后往前的指针

2012-11-11 22:59:15 491

转载 程序员面试题精选100题(19)-反转链表[数据结构]

题目:输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。链表结点定义如下:struct ListNode{      int       m_nKey;      ListNode* m_pNext;};分析:这是一道广为流传的微软面试题。由于这道题能够很好的反应出程序员思维是否严密,在微软之后已经有很多公司在面试时采用了这道题。为了正确地反转一个链表,需要调

2012-11-11 22:51:09 470

转载 程序员面试题精选100题(34)-数组中只出现一次的数字[算法]

题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。分析:这是一道很新颖的关于位运算的面试题。首先我们考虑这个问题的一个简单版本:一个数组里除了一个数字之外,其他的数字都出现了两次。请写程序找出这个只出现一次的数字。这个题目的突破口在哪里?题目为什么要强调有一个数字出现一次,其他的出现两次?我

2012-11-11 22:37:07 518

转载 海量数据搜索算法优化-

海量数据库的应用,如国家的人口管理系统,户籍档案管理系统,在这样的海量数据库应用中,数据库的存储设计和结构优化(如索引优化)、数据库的查询优化及分页算法尤为重要!     随着互联网的日益普及,海量信息的增长,网格运算的到来,海量数据存储产品和海量数据存储技术方案的需求更为市场所需。     同时,实际的海量数据处理,更是涉及很多细节,包括海量数据存储(物理存储、逻辑存储、海量数据

2012-11-10 14:35:46 421

转载 段和页区别

1、页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率;或者说,分页仅仅是由于系统管理的需要,而不是用户的需要。段是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好的满足用户的需要。分页的作业地址空间是维一的,即单一的线性空间,程序员只须利用一个记忆符,即可表示一地址。 2、 分段的作业地址空间是二维的,程序员在标识一个地址时,既需给出

2012-11-10 14:32:07 2106

转载 二叉树的遍历非递归算法

1、先序遍历的非递归实现Staus PreOrderTraverse(BiTree T, (* Visit)(TElemType e)){InitStack(S); p = T;while(p || !StackEmpty( S ) ){/*   if(p)   {    if ( !Visist(p->data) )     return ERROR;

2012-11-10 14:31:00 340

转载 排序算法的稳定性比较

首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj, Ai原来在位置前,排序后Ai还是要在Aj位置前。        其次,说一下稳定性的好处。排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。基数排序就是这样,先按低位

2012-11-10 14:27:40 307

转载 堆与栈区别

在C语言中,内存分为栈、堆、未初始化的数据、初始化的数据、正文。在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。    栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。    堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一

2012-11-10 14:26:15 233

转载 内存分配的对齐问题

现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。其他平台可能没有这种情况,但

2012-11-10 14:25:01 243

转载 BSS段,数据段,代码段,堆内存和栈

转自:http://hi.baidu.com/%C6%BF%D6%D0%B5%C4%C5%AE%CE%D7/blog/item/5043d08e741075f3503d922c.htmlld 时把所有的目标文件的代码段组合成一个代码段,把所有的数据段组合成一个数据段.##############################################################

2012-11-10 14:20:40 317

转载 深信服的笔试题

软件工程师题:NO1、平衡二叉树和哈希表哈希表主要可以在O(1)时间内对查找对象定位,但是事实上,如果输入集合不确定的情况下,可能出现大量的冲突,虽然有很多好的哈希函数,但是随着随机输入,大量冲突还是不可避免,可能出现最差情况。所以,哈希表如果用在输入集合确定(即以后只会做查询操作)的情况下,选择合适的函数函数和解决冲突的方法(perfect hash)可以在O(1)时间内完成查找

2012-11-10 14:18:21 1466

转载 Linux下高性能网络编程中的几个TCP/IP选项

转自:http://blog.chinaunix.net/u/12592/showart.php?id=2064847最近在新的平台上测试程序,以前一些没有注意到的问题都成为了性能瓶颈,通过设置一些TCP/IP选项能够解决一部分问题,当然根本的解决方法是重构代码,重新设计服务器框架。先列出几个TCP/IP选项:选项man 7 socket:SO_REUSEADDRSO_

2012-11-10 14:15:50 346

转载 宏定义中的 "#" 和 "##" 的区别

转自 http://blog.sina.com.cn/s/blog_5623cddb0100bdi3.html"#" 代表和一个字符串相连接"##" 代表和一个符号连接,符号可以是变量,或另一个宏符号。举例如下:宏定义如下(1)#define DEV_FILE_NAME "/dev/test_kft"#define OPEN_FILE(fd,

2012-11-10 14:14:53 308

转载 sizeof与#pragma预编译指令

#pragma pack(push) //保存#pragma pack(n)//n 可取1,2,4,8#pragma pack(pop)(g++中, #pragma pack(push)与#pragma pack(n)应合并为#pragma pack(push,n)sizeof的计算分2步1、结构体中变量域偏移对齐n规定了结构体中变量域偏移对齐的位置默认为当前变量类型的

2012-11-10 13:46:12 781

转载 Epoll模型

http://www.cppblog.com/Khan/archive/2008/04/02/46013.htmlLinux 2.6内核中提高网络I/O性能的新方法-epoll I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。1、为什么select落后    首先,在Linux内核中,select所用到的FD_SET是有限的,即内核中有个参数_

2012-11-10 13:43:49 291

转载 Linux内核 hlist_head/hlist_node结构解析

内核中的定义:struct hlist_head {    struct hlist_node *first;};struct hlist_node {    struct hlist_node *next, **pprev;};这个数据结构与一般的hash-list数据结构定义有以下的区别:1) 首先,hash的头节点仅存放一个指针,也就是first指针,

2012-11-10 13:32:44 3375

转载 内存拷贝函数

转帖自周立功博客http://blog.sina.com.cn/s/blog_5e8facd20100eorv.html  编者按:我们知道,优秀的运动员除了自身的天赋和努力之外,出色的教练必不可少。一个成功的企业除了拥有出类拔萃的员工之外,同样需要一位出色的教练,那就是企业的CEO。由此可见,如果我们要想成为一位优秀的程序员,毫无疑问卓越的教练是致关重要的。无数事实告诉我们,成功者之所以

2012-04-22 12:04:21 421

转载 C/C++位域(Bit-fields)

转载:很早想说说这个问题了,经常也会有很多公司拿位域出来考人,呵呵要真的想弄清楚还要一点点的分析。这里先看看网宿的一道笔试题目,这道题目我之前是复制网上的,结果不对,修改了一下,可以正确运行了,谢谢(imafish_i )提醒://假设硬件平台是intel x86(little endian) typedef unsigned int uint32_t;void ine

2012-04-22 11:56:04 362

转载 inittab文件诠释

转自:http://hi.baidu.com/52hack/blog/item/50242d2daf9f813c359bf75f.html欲说inittab,还得从init说起,init是所有进程的父进程,他的一个主要的角色就是从/etc/inittab这个文件来读取脚本信息并建立进程。下边这个文件是Asianux 3.0的inittab文件,下面就此文件作一简单的注释,并在最后将man

2012-04-22 09:07:15 260

转载 堆与栈区别

在C语言中,内存分为栈、堆、未初始化的数据、初始化的数据、正文。在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。    栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。    堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一

2012-04-22 09:03:33 160

空空如也

空空如也

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

TA关注的人

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