自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1)
  • 资源 (18)
  • 收藏
  • 关注

原创 c++学习

2010-03-11 22:51:00 175

java面试题大全

String 和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。 5、运行时异常与一般异常有何异同? 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 6、说出Servlet的生命周期,并说出Servlet和CGI的区别。 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

2014-04-02

程序员面试题精选100题

程序员面试题精选 100 题(01)-把二元查找树转变成排序的 双向链表 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点, 只调整指针的指向。 程序员面试题精选 100 题(02)-设计包含min函数的栈 题目:定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。要求函数min、push 以及 pop 的时间复杂度都是O(1)。 分析:这是去年google 的一道面试题。 我看到这道题目时,第一反应就是每次push 一个新元素时,将栈里所有逆序元素排序。这样栈顶元素将 是最小元素。但由于不能保证最后push 进栈的元素最先出栈,这种思路设计的数据结构已经不是一个栈 了。 在栈里添加一个成员变量存放最小元素(或最小元素的位置)。每次push 一个新元素进栈的时候,如果 该元素比当前的最小元素还要小,则更新最小元素。

2014-04-02

任务栏修复

任务栏修复工具

2014-04-02

算法大全-面试题-数据结构

目录 1.单链表反转 2.找出单链表的倒数第4个元素 3.找出单链表的中间元素 4.删除无头单链表的一个节点 5.两个不交叉的有序链表的合并 6.有个二级单链表,其中每个元素都含有一个指向一个单链表的指针。写程序把这个二级链表称一级单链表。 7.单链表交换任意两个元素(不包括表头) 8.判断单链表是否有环?如何找到环的“起始”点?如何知道环的长度? 9.判断两个单链表是否相交 10.两个单链表相交,计算相交点 11.用链表模拟大整数加法运算 12.单链表排序 13.删除单链表中重复的元素

2013-10-30

编程珠玑-程序员

基础的重要性(程序员之路) 学习编程有几年了,感觉走了不少弯路,而不少的学弟学妹又在重蹈我当初的覆辙,不免有些痛心。最近在网 上也看了许多前辈们的经验建议,再结合自己的学习经历在这里谈谈基础的重要性,希望帮助大家少走些弯 路。 什么是基础呢?就是要把我们大学所学的离散数学,算法与数据结构,操作系统,计算机体系结构,编译原理 等课程学好,对计算机的体系,CPU本身,操作系统内核,系统平台,面向对象编程,程序的性能等要有深层次的掌握。 初学者可能体会不到这些基础的重要性,学习jsp,donet,mfc,vb的朋友甚至会对这些嗤之以鼻,但是一开始没学 好基础就去学jsp或donet会产生很坏的影响,而且陷入其中不能自拔。 我上大二的时候还对编程没什么概念,就上了门C++也不知道能干什么,老师说MFC也不知道是什么东西, 看别的同学在学asp.net就跟着学了,然后就了解到.net,j2ee,php是什么了,就觉得软件开发就是用这些了,而上 的那些专业课又与我们学的sqlserver啊,css啊,ajax啊,毫无关系,就感慨啊,还不如回家自学去就为一个文凭吗? 还不如去培训,浪费这么多钱.于是天天基本上没去上什么课,天天就在做网站,几个学期就做了三个网站。感觉做 这些网站就是学到些技巧,没什么进步,这些技巧就好比别人的名字,告诉你你就知道了,网上也都可以搜到。那时 候就觉得把.net学好就行了,搞j2ee的比较难,搞api编程就别想了,操作系统更是望尘莫及了。后来随着学习 的深入和看了网上许多前辈们的建议才对这些基础的重要性有所体会。 虽然.net或java的开发并不直接用到汇编,操作系统这些,但是不掌握这些基础是有很大问题的,因为你只知 其然不知其所有然,在mfc和.net里面控件一拖什么都做好了,很方便,但是出了问题可能就解决不了,有些在 网上搜都搜不到。这就是基础没打好,不知道它的原理就不知道出错的原因。在学.net的时候常会讨论那些控件 该不该用别人说尽量别用也不知道为什么?不让用是因为你在高层开发,你不知道它的原理出错了你可能解决不 了,但其实是应该用的,不然人家开发它干嘛,但要在了解它的原理后去用就会很方便。 要编写出优秀的代码同样要扎实的基础,如果数据结构和算法学的不好,怎么对程序的性能进行优化,怎样 从类库中选择合适的数据结构。如果不了解操作系统,怎样能了解这些开发工具的原理,它们都是基于操作系统 的。不了解汇编,编译原理,怎么知道程序运行时要多长时间要多少内存,就不能编出高效的代码。 如果没有学好基础一开始就去学.net,java这些越往后就会觉得越吃力,它们涉及的技术太多了,而且不但 在更新,对于三层啊,mvc,orm这些架构,你只会用也不明白为什么用,就感觉心里虚,感觉没学好。而你把 面向对象,软件工程,设计模式这些基础学好了再去看这些就可以一不变应万变。 大家不要被新名词、新技术所迷惑.NET、XML等等技术固然诱人,可是如果自己的基础不扎实,就像是在 云里雾里行走一样,只能看到眼前,不能看到更远的地方。这些新鲜的技术掩盖了许多底层的原理,要想真正 的学习技术还是走下云端,扎扎实实的把基础知识学好,有了这些基础,要掌握那些新技术也就很容易了。 开始编程应该先学C/C++,系统api编程,因为它们更接近底层,学习他们更能搞清楚原理。学好了c/C++ 编程和基础,再去学习mfc,.net这些就会比较轻松,而且很踏实。假设学习VB编程需要4个月,学习基础课程和 VC的程序设计需要1年。那么如果你先学VB,再来学习后者,时间不会减少,还是1年,而反过来,如果先学习 后者,再来学VB,也许你只需要1个星期就能学得非常熟练。

2013-10-30

程序员面试题精选

程序员面试题精选,里面大概总共有40道题。很经典。

2013-10-30

软件测试基础(经典测试面试题答案)

测试的分类: 从测试方法的角度可以分为手工测试和自动化测试。 手工测试:不使用任何测试工具,根据事先设计好的测试用例来运行系统,测试各功能模块。 自动化测试:利用测试工具,通过编写测试脚本和输入测试数据,自动运行测试程序。目前最常用的自动化测试工具是基于GUI的自动化测试工具,基本原理都是录制、回放技术。 从整体的角度可以分为单元测试、集成测试、系统测试、确认测试。 单元测试:是针对软件设计的最小单位—程序模块,进行正确性检验的测试工作。一般包括逻辑检查、结构检查、接口检查、出错处理、代码注释、输入校验、边界值检查。 单元测试的依据是系统的详细设计;一般由项目组开发人员自己完成。 集成测试:在单元测试的基础上,将所有模块按照设计要求组装进行测试。一般包括逻辑关系检查、数据关系检查、业务关系检查、模块间接口检查、外部接口检查。 系统测试:系统测试是在所有单元、集成测试后,对系统的功能及性能的总体测试。 确认测试:模拟用户运行的业务环境,运用黑盒测试方法,验证软件系统是否满足用户需求或软件需求说明书中指明的软件特性(功能、非功能)上的。 从测试原理上分为:白盒测试、黑盒测试和灰盒测试。

2013-06-17

LINUX常用命令详解

1. cd 2. pwd 3. ls 4. passwd 5. who 6. cat 7. mkdir 8. rmdir 9. chmod 10. chown 11. chgrp 12. touch 13. cp 14. mv 15. rm 16. find 17. grep 18. more 19. less 20. head 21. tail 22. cut 23. at 24. crontab 25. sleep 26. kill 27. ps pstree 28. top 29. expr 30. locate 31. split 33. man,info 34. alias 35. unalias 36. clear

2013-06-17

中国象棋Java源码 v2.1

中国象棋Java源码 v2.1 适合java初学者

2013-03-14

IOS游戏开发入门代码 一款中国象棋的棋牌类iOS游戏.zip

IOS游戏开发入门代码 一款中国象棋的棋牌类iOS游戏.zip

2013-03-14

智商超高的中国象棋游戏C++版

智商超高的中国象棋游戏C++版 运行环境:Windows/Visual C/C++

2013-03-14

五子棋(java编写).doc

五子棋(java编写).doc public class FivChese extends JFrame{ CheseGame CG; FivChese () { this.CG= new CheseGame(); addMouseListener(CG); add(CG); } public static void main(String[] args) { FivChese fivechese= new FivChese (); fivechese.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fivechese.setSize(900, 700); fivechese.setTitle("五子棋"); fivechese.setVisible(true); fivechese.setResizable(true); } }

2013-03-14

黑白多页面html5-CSS3网页模板

黑白多页面html5-CSS3网页模板,

2013-03-14

iPhone开发书籍大全

iPhone开发书籍大全 ios learn objective-c on the Mac

2013-03-14

无线通信原理与应用

无线通信原理与应用 国外电子信息科学教材系列,theodore s.rappaport著

2013-03-13

BT工作原理简述与Linux下BT客户端的设计.doc

BitTorrent系统简介,BitTorrent系统中的术语,BitTorrent系统的构成

2012-02-28

飞鸽传书 源代码(MFC)

#include "stdafx.h" CString UdpMsgToString(UDPMSG &msg){ CString str="";//msg.verion CString strVerion,strId,strCommend; strVerion.Format("%d",msg.verion); strId.Format("%d",msg.id); strCommend.Format("%d",msg.commend); str+=strVerion+SPLIT; str+=strId+SPLIT; str+=msg.name+SPLIT; str+=msg.hostName+SPLIT; str+=strCommend+SPLIT; str+=msg.content; return str; } UDPMSG StringToUdpMsg(CString str){ const int COUNT=6; UDPMSG msg; CString tmp[COUNT]; for(int i=0;i<COUNT;i++){ int index=str.Find(SPLIT); int len=str.GetLength(); if(i==COUNT-1||index==-1){ tmp[i]=str; if(index==-1) break; } else tmp[i]=str.Left(index); str=str.Right(len-index-1); } msg.verion=atol(tmp[0]); msg.id=atol(tmp[1]); msg.name=tmp[2]; msg.hostName=tmp[3]; msg.commend=atol(tmp[4]); msg.content=tmp[5]; // ::AfxMessageBox(tmp[0]+"*"+tmp[1]+"*"+tmp[2]+"*"+tmp[3]+"*"+tmp[4]+"*"+tmp[5]); return msg; } CString FileMsgToString(LPFILEMSG lpFileMsg){ CString fileMsg=""; CString str; fileMsg+=lpFileMsg->fileName+SPLIT;//1 str.Format("%d",lpFileMsg->port); fileMsg+=str+SPLIT; //2 str.Format("%d",lpFileMsg->size); fileMsg+=str+SPLIT; //3 str.Format("%d",lpFileMsg->id); fileMsg+=str; //4 return fileMsg; } LPFILEMSG StringToFileMsg(CString fileMsg){ const int COUNT=4; LPFILEMSG lpFileMsg=new FILEMSG; CString tmp[COUNT]; for(int i=0;i<COUNT;i++){ int index=fileMsg.Find(SPLIT); int len=fileMsg.GetLength(); if(i==COUNT-1||index==-1){ tmp[i]=fileMsg; if(index==-1) break; } else tmp[i]=fileMsg.Left(index); fileMsg=fileMsg.Right(len-index-1); } lpFileMsg->fileName=tmp[0]; lpFileMsg->port=atol(tmp[1]); lpFileMsg->size=atol(tmp[2]); lpFileMsg->id=atol(tmp[3]); lpFileMsg->fullPath=""; lpFileMsg->sock=NULL; lpFileMsg->srSize=0; // ::AfxMessageBox(tmp[0]+"*"+tmp[1]+"*"+tmp[2]); return lpFileMsg; } bool SaveBitmapToFile(HBITMAP hBitmap, LPSTR lpFileName) { // HBITMAP hBitmap; HDC hDC; //设备描述表 int iBits; //当前显示分辨率下每个像素所占字节数 WORD wBitCount; //位图中每个像素所占字节数 DWORD dwPaletteSize=0, //定义调色板大小, 位图中像素字节大小 ,位图文件大小 , 写入文件字节数 dwBmBitsSize, dwDIBSize, dwWritten; BITMAP Bitmap; //位图属性结构 BITMAPFILEHEADER bmfHdr; //位图文件头结构 BITMAPINFOHEADER bi; //位图信息头结构 LPBITMAPINFOHEADER lpbi; //指向位图信息头结构 HANDLE fh, hDib, hPal,hOldPal=NULL; //定义文件,分配内存句柄,调色板句柄 //计算位图文件每个像素所占字节数 // hBitmap = (HBITMAP)*bitmap; hDC = CreateDC("DISPLAY",NULL,NULL,NULL); iBits = GetDeviceCaps(hDC, BITSPIXEL) * GetDeviceCaps(hDC, PLANES); DeleteDC(hDC); if (iBits <= 1) wBitCount = 1; else if (iBits <= 4) wBitCount = 4; else if (iBits <= 8) wBitCount = 8; else if (iBits <= 24) wBitCount = 24; else if ( iBits <= 32 ) wBitCount = 32; //计算调色板大小 if (wBitCount <= 8) dwPaletteSize = (1 << wBitCount) * sizeof(RGBQUAD); //设置位图信息头结构 GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&Bitmap); bi.biSize = sizeof(BITMAPINFOHEADER); bi.biWidth = Bitmap.bmWidth; bi.biHeight = Bitmap.bmHeight; bi.biPlanes = 1; bi.biBitCount = wBitCount; bi.biCompression = BI_RGB; bi.biSizeImage = 0; bi.biXPelsPerMeter = 0; bi.biYPelsPerMeter = 0; bi.biClrUsed = 0; bi.biClrImportant = 0; dwBmBitsSize = ((Bitmap.bmWidth * wBitCount+31)/32) * 4 * Bitmap.bmHeight ; //为位图内容分配内存 hDib = GlobalAlloc(GHND,dwBmBitsSize+dwPaletteSize+sizeof(BITMAPINFOHEADER)); lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDib); *lpbi = bi; // 处理调色板 hPal = GetStockObject(DEFAULT_PALETTE); if (hPal) { hDC = ::GetDC(NULL); hOldPal = ::SelectPalette(hDC, (HPALETTE)hPal, FALSE); RealizePalette(hDC); } // 获取该调色板下新的像素值 GetDIBits(hDC, hBitmap, 0, (UINT) Bitmap.bmHeight, (LPSTR)lpbi + sizeof(BITMAPINFOHEADER) +dwPaletteSize, (LPBITMAPINFO ) lpbi, DIB_RGB_COLORS); //恢复调色板 if (hOldPal) { SelectPalette(hDC, (HPALETTE)hOldPal, TRUE); RealizePalette(hDC); ::ReleaseDC(NULL, hDC); } //创建位图文件 fh = CreateFile(lpFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL); if (fh == INVALID_HANDLE_VALUE) return FALSE; // 设置位图文件头 bmfHdr.bfType = 0x4D42; // "BM" dwDIBSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + dwPaletteSize + dwBmBitsSize; bmfHdr.bfSize = dwDIBSize; bmfHdr.bfReserved1 = 0; bmfHdr.bfReserved2 = 0; bmfHdr.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) + (DWORD)sizeof(BITMAPINFOHEADER) + dwPaletteSize; // 写入位图文件头 WriteFile(fh, (LPSTR)&bmfHdr, sizeof(BITMAPFILEHEADER), &dwWritten, NULL); // 写入位图文件其余内容 WriteFile(fh, (LPSTR)lpbi, dwDIBSize, &dwWritten, NULL); //清除 GlobalUnlock(hDib); GlobalFree(hDib); CloseHandle(fh); return TRUE; } MFC实现飞鸽传书

2011-11-01

组合理论及其应用答案

计算机科学与技术,组合理论及其应用答案 李凡长,康宇等著

2011-09-18

空空如也

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

TA关注的人

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