使用开源库时的疑惑:Linux下的两种库:动态库和静态库(共享库)

库:程序代码的集合,是共享程序代码的一种方式(库分为开源库和闭源库)

为什么c/c++开源库使用前需要编译:直接将第三方库的源代码包含到当前程序的代码中编译是效率非常低下的方式,实际中除非极特殊情况,不会考虑使用这种方式,而是将开源库源代码编译成二进制的动态链接库,其他程序要使用其中的API时,只需要指定动态链接库的入口点,程序运行时加载动态链接库 并找到其中的函数入口点就可以调用开源库API。

闭源库:不公开源代码,只公开接口,看不到具体实现,比如高德地图,环信即时通讯等的SDK.(闭源库分为静态库和动态库)

静态库:以".a"或".framework"为文件后缀名,静态库链接时会被完整的复制到可执行文件中,被多次使用就有多次拷贝

动态库:以".dylib"或".framework"为文件后缀名,动态库链接时不复制,程序运行时由系统动态加载到内存,供程序调用。而且系统只加载一次,多个程序共用,节省内存。

 

去网上找了第三方开源库。可是下载下来里面都是源码,没有动态库或者静态库,所以就需要自己去编译生成。源码库中只有一个configure的可运行得配置脚本,首先让我们先来了解一下configure这个文件的作用。Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后再安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Configure脚本配置工具就是基础之一,它是autoconf的工具的基本应用。即利用 GNU Autoconf 及 Automake 这两套工具来协助我们自动产生 Makefile 文件, 并且让开发出来的软件可以像大多数源码包那样,只需"./configure", "make","make install" 就可以把程序安装到系统中。automake设置了默认的安装路径:默认安装路径为:$(prefix) = /usr/local用户自己编译的软件默认会安装到这个目录下。这里主要存放那些手动安装的软件,即不是通过“新立得”或apt-get安装的软件。,可以通过./configure --prefix=<new_path>的方法来覆盖。对于安装的情况,库将会安装到$(prefix)/lib目录下,可执行文件将会安装到${prefix}/bin。我们编译安装一个由 GNU Autoconf 配置的程序是采用如下的步骤:

./configure && make && make install

Linux下有两种库:动态库和静态库(共享库)

二者不同点在于代码被载入的时刻不同。静态库的代码在编译过程中已被载入可执行程序(二进制文件)(编译时库文件需通过-L参数传递给编译器)因此拥有静态函数库的软件较为庞大。程序运行时将不再需要该静态库,因为所有使用的函数都已经被编译进去了,即拥有静态函数库的软件可以独立运行。如果静态函数库改变了,那么你的程序必须重新编译才能正常使用。  这是非常麻烦的!     动态库(共享库)的代码在可执行程序运行时才载入内存,函数库没有被整合进你的程序,因此程序的运行环境还需要提供动态库,在编译时仅仅将函数库的路径整合到软件的二进制文件中去。由于软件中包含的是函数库的路径(动态库链接时,它只是保留接口,这样可提高代码的可复用度。),因此该软件无法独立运行,且函数库的路径不能发生变化,一旦变化,该软件将无法找到函数库,从而无法运行!这是动态函数库的最大缺点。但当动态函数库更新时,软件无需重新编译,因此更新较为方便,这是动态函数库的最大优点。目前大部分软件均使用动态函数库,就是因为动态函数库在更新时体现出的优势。

静态库名字一般是libxxx.a

动态库名字一般是libxxx.so

 

 

 

 

 

linux上可以选择从源代码安装和只安装库文件两种方式。从源代码安装是指从OpenCV官网中下载相应版本的OpenCV源码,然后使用cmake命令中编译安装,好处是可以选择的版本比较丰富,而且可以看到源代码;只安装库文件,是指安装由Ubuntu社区人员编译好的库文件,这样就无需重新编译一遍。

源码包的缺点:因为是编译安装,安装过程中一旦报错新手很难解决源码包的优点是开源,如果有足够的能力,可以修改源代码。软件是编译安装,所以更加适合自己的系统。

二进制包(RPM包、系统默认包)缺点:经过编译,不再可以看到源代码

Yum安装可以自动解决库依赖问题,所以推荐使用。

source code 是程序员跑的码, binary code 是机器跑的代码。 source code 得经过 compile 才能成為 binary code 。

CentOS7主要有rpm和yum这两种包软件的管理。RPM 有分兩种:binary rpm 跟 source rpm 。 前者是編好的 binary ,安裝就可用。 后者是还沒編好的 source ,需 rebuild 之後才能安裝。rpm格式很好区分,二进制格式的包名字很长,都带有版本号、适应平台、适应的硬件类型等,而源码格式仅仅就是一个版本号的tar包。mysql-5.0.45.tar.gz 是 源码包    像这样的 mysql-5.0.45-linux-x86_64-glibc23.tar.gz   是二进制包。

Linux安装方式有两种,YUM安装(yum方式安装:(安装rpm包)rpm最早由RedHat公司提出的软件包标准,后来随着rpm的不断发展而又增加许多功能,逐渐的成为linux公认的软件包管理标准。  Yum(全称为 Yellow dogUpdater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。而且现在的发行版都有自己的包管理器,比如apt(apt方式安装:(安装deb包)rpm 只能安装已经下载到本地机器上的rpm 包. yum能在线下载并安装rpm包,能更新系统, 且还能自动处理包与包之间的依赖问题,这个是rpm 工具所不具备的。)或yum,一个命令就可以从源下载软件,还可以自动解决依赖问题。)和源代码安装方式。推荐使用YUM安装方式。众做周知RedHat Linux使用RPM包管理器安装rpm包,但是RPM包是由红帽编译打包的,通常相对于最新版落后了很多,甚至可能缺少我们所要使用的功能。如果你需要定制想要的软件功能、自定义安装路径、体验最新版等,你就需要自己动手编译安装源码包了。

而且对于Linux初学者来说,安装 软件是一件很让人头疼的事情。由于很多Linux应用软件都是以源代码的形式发布的,这就要求用户根据自己系统的实际情况和自身的需要来配置,编译源程序 后,才能使用这些软件,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。目前流行的软件包有两种比较常见的形式,一种是以 RPM、deb包为代表的智能软件包,另一种是file.tar.gz形式的压缩。本文将讨论file.tar.gz的安装方法以及智能软件包在文本环境和图形环境下的安装方法。  

一.源代码安装(查看INSTALL与README文件,这两个文件中详细介绍了本软件的安装方法和注意事项其实在解压完一个包后,打开文件夹可以找到INSTALL 或者README 文件 里面才是详细的安装步骤!!!):应用软件的源代码一般是file.tar.gz或者file.tgz格式,进入解压完成之后新建立的目录,一般的应用软件中都有一个用来配置软件的可执行文件——configure,Configure脚本配置工具就是基础之一,它是autoconf的工具的基本应用。源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)。Configure是一个可执行脚本(./configure的作用是检测系统配置,生成makefile文件),它有很多选项(参数),当 然,安装不同的软件参数也不相同,具体有些什么参数,在待安装的源码路径下使用命令./configure –-help输出详细的选项列表。例如./configure --prefix=/usr/local/mysql(表示设置软件的安装目录为:/usr/local/mysql,可以把所有资源文件放在/usr/local/mysql的路径中,不会杂乱。)。其中--prefix选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《Android高级编程》的源代码 对应的书籍资料见: Android高级编程 基本信息 原书名: Professional Android Application Development 原出版社: Wrox 作者: (英)Reto Meier 译者: 王鹏杰 霍建同 出版社:清华大学出版社 ISBN:9787302228448 上架时间:2010-7-1 出版日期:2010 年6月 开本:16开 页码:398 版次:1-1 内容简介   android提供一个开放的开发环境,为针对移动设备编写创新应用程序带来了激动人心的新机遇。作为使用androidsdk构建这些应用程序的实用指南书籍,《android高级编程》从始至终穿插了一系列示例项目,每个项目都引入android的新功能和新技术,以助您达到最圆满的学习效果。书中介绍android的所有基本功能,并通过简明扼要的示例引导您使用高级功能。    《android高级编程》首先简要介绍android软件栈,接着陈述为手机创建稳定可靠、赏心悦目的应用程序的基本原理。通过学习,您可以打下牢固的理论根基,了解使用当前android 1.0 sdk编写定制移动程序所需的知识,还能灵活快捷地运用未来的增强功能构建最前沿的解决方案。    主要内容    ◆android移动开发的最佳实践    ◆简要介绍活动、intent、清单和资源    ◆如何使用布局和定制view创建用户界面    ◆存储和共享应用程序数据的技术    ◆如何创建基于地图的应用程序,如何使用gps和地理编码位置等基于位置的服务    ◆如何创建和使用后台服务及notification    ◆使用加速计、指南针和摄像头硬件    ◆与电话和网络硬件相关的所有内容,如电话api、sms和网络管理等    ◆高级开发主题,包括安全、ipc以及一些高级图形和用户界面技术    读者对象    本书面向希望在android手机平台上创建应用程序的所有人员。不管是经验丰富的移动开发人员,还是初出茅庐的新手,都能从本书提供的宝贵信息中获益。 作译者   Reto Meier出生于澳大利西南的珀斯市,现居伦敦。 Reto是一位经验丰富的软件开发人员,拥有逾10年的GUI程序架构、设计和开发经验。他在涉足IT行业前曾从事过海洋石油和天然气开发以及金融工作。 Reto始终不渝地追求掌握新技术,从2007年Android发布之初Reto就迷恋上了此项技术。他利用业余时间研究包括WPF在内的多种开发平台以及Google的各种开发工具。 详情请访问Reto的个人网站RadioactiveYak,网址是http://blog.radioactiveyak.com。 目录 封面 -14 封底 -13 扉页 -12 版权 -11 作者简介 -10 前言 -9 目录 -4 第1章 Android简介 1 1.1 一些背景信息 2 1.1.1 不远的过去 2 1.1.2 未来的前景 2 1.2 对Android的误解 3 1.3 开放的移动开发平台 3 1.4 自带的Android应用程序 4 1.5 Android SDK功能 5 1.5.1 对包括摄像头、GPS和加速计在内的硬件的访问 5 1.5.2 自带的Google地图、地理编码和基于位置的服务 6 1.5.3 后台服务 6 1.5.4 SQLite 数据存储和检索数据 6 1.5.5 共享数据和应用程序间通信 7 1.5.6 使用Google Talk的P2P服务 7 1.5.7 扩展的数据支持和2D/3D图形 7 1.5.8 优化的内存和进程管理 8 1.6 开放手机联盟简介 8 1.7 运行Android的环境 8 1.8 从事Android开发的原因 9 1.8.1 推动Android普及的因素 9 1.8.2 Android的独到之处 10 1.8.3 改变移动开发格局 10 1.9 开发框架简介 11 1.9.1 开发包中的资源 11 1.9.2 理解Android软件栈 12 1.9.3 Dalvik虚拟机 13 1.9.4 Android应用程序架构 14 1.9.5 Android 14 1.9.6 高级Android 15 1.10 小结 16 第2章 开始入手 17 2.1 Android开发 18 2.1.1
众所周知,WSTMall是在thinkphp 3.2基础上进行优化开发的, TP 3.2是thinkphp最经典的一个版本,正所谓站在巨人的肩膀上,WSTMall V1.0继承了thinkphp大道致简的理念,继承了thinkphp以下的优点: 良好的缓存机制:WSTMall V1.0支持包括文件方式、APC、Db、Memcache、Shmop、Eaccelerator和Xcache在内的多种动态数据缓存类型,以及可定制的静态缓存规则,并提供了快捷方法进行存取操作。 高质量的模板引擎:WSTMall 1.0基于XML的编译型模板引擎,支持两种类型的模板标签,融合了Smarty和JSP标签的思想,支持标签扩展。通过驱动还可以支持Smarty、EaseTemplate、TemplateLite、Smart等第三方模板引擎。 优秀的理念和创新的模式: WSTMall V1.0采用 MVC(Model View Controller)开发模式,解决了程序扩展时在原程序上进行修改导致程序不能升级的问题,使页面样式与程序彻底分离的灵活模板解析引擎,便于模板风格的优化与制作。 良好的扩展机制:WSTMall V1.0支持包括类扩展、驱动扩展、应用扩展、模型扩展、控制器扩展、标签扩展、模板引擎扩展、Widget扩展、行为扩展和模式扩展在内的强大灵活的扩展机制,让你不再受限于核心的不足和无所适从,随心DIY自己的框架和扩展应用。 URL重写技术:WSTMall V1.0继承了thinkphp的URL重写技术,支持普通模式、PATHINFO模式、REWRITE模式和兼容模式的URL方式,支持不同的服务器和运行模式的部署,配合URL路由功能,使搜索引擎更容易方便地收录网页。 支持跨平台部署: WSTMall采用Lamp架构,无任何额外成本支出。当然,也适用于Linux/FreeBSD/Unix及微软Windows 2000/2003/2008/XP/NT等多种操作系统,初学者推荐WAMP一键搭建WSTMall所需要环境。 先进的动态模型:WSTMall完全继承thinkphp的CURD机制,无需创建任何对应的模型类,轻松完成CURD操作,支持多种模型之间的动态切换,让你领略数据操作的无比畅快和最佳体验。 分组模块机制:在WSTMall上进行二次开发不用担心大项目的分工协调和部署问题,分组模块帮你解决跨项目的难题。 AJAX支持:WSTMall继承了thinkphp内置AJAX数据返回方法,支持JSON、XML和EVAL格式返回客户端,WSTMall不绑定任何AJAX类,可随意使用自己熟悉的AJAX类进行操作。 多语言支持:系统支持语言包功能,项目和模块都可以有单独的语言包,并且可以自动检测浏览器语言自动载入对应的语言包。 安全性十分好:WSTMall鼓励代码共享和尊重原作者的著作权与版权,在保留版权情况下允许修改代码,WSTMall将代码开源使用者完全掌握源代码,使使用者完全无后顾之忧。
独立打包,保证可解压,内含大量源码,网上搜集而来。 Visual.C++编程技巧精选500例源代码 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件文件夹属性操作、文件文件夹系统操作、系统控制操作、程序版权信息、系统软件信息、 系统硬件信息、存储设备管理、鼠标及键盘、声音和视频、图形和图像、网络、数据) 《远程控制编程技术》源代码 内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++加密解密(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库动态库方法。 JSCalls_demo js调用的演示源码 树控件拖动 演示了在树控件中来回拖动文件的操作 MyPlayer 音乐播放器 内含歌词显示实现源码 ActiveXDemo 演示了装载以及卸载atl控件的操作以及注册操作 ado 登录模块的制作 ado,dao,odbc数据连接vc代码 演示了不同的数据的各种操作(连接、删除、添加……等等) ATL开发指南源码 内部包含了atl控件的开发以及如何应用,演示了COM的包容与集合、自动化、事件和连接点、枚举器和集合以及线程管理等等。 ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 autoplaysnd mp3 播放器源码 重载了自带的控件进行播放 aviplayer avi播放器源码 引用了atl控件播放 beautifulskin 源码 演示了各种控件方法 Browser.Net源码 C#的一个网页游览的例子 C++自绘窗体的完整代码 注释非常详细,相信会帮助大家设计好自己的个性窗体。 C++_Primer_第4版_中文+英文 原书源码+课后习题答案。 CameraController(云界面) 实现了自绘控件,云端控制主要在CnComm类多线程串口通讯, camerads-DirectShow使用示例 演示了摄像头的使用 CatListBoxDemo ListBox控件与其它控件阙套使用方法 CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 CctryLog(web拦截网页帐号密码) 实现了一个控件去获得IHTMLDocument2接口,然后读取内容,匹配用户名与密码等。 CFile64_src 操作大文件,自定义了一个操作大文件的类,并进行了测试。 chapter7 实现了声音录制等功能。 CHtmlViewProjV2 详细演示了HtmlView的使用与HtmlView事件站点拦截的实现、js调用。 CIVStringSet_Demo 自定义了一个类似STL容器的类,并进行了测试。 ClearHistory 实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除"运行"中的自动匹配历史记录、清除"文档"中的历史记录、清除上次登陆用户记录、清除"查找文件"自动匹配历史记录、清除"查找计机"自动匹配历史记录、清除网络联接历史记录、清除远程登录历史记录、清除浏览网址历史记录。实现的代码很简单。 CListCtrl 阙套其它控件 自绘了CListCtrl 控件,实现了其它控件阙套到List中并自绘等。主要的实现在CListReport类中。 CListCtrlTest 演示了重载CListCtrl后的使用方法。 CListItem Drawing 演示了其它控件(全部)阙套到List中并自绘等,学习自绘以及阙套CListCtrl 控件的好实例。 ColorStatic 自绘了CStatic控件,实现了标题字符滚动效果。 CSDN免积分下载工具 源码 演示了使用CInternetSession去下载资源。 CStatic文字滚动 如题,此实例非常适合学习,重载并自绘了Wnd类,效果是上下文字、图片、文字由大到小和星星闪烁等滚动效果。实例使用了加载类似xml文件读取信息,然后显示。 COM_ATL_Tutorial 简单的atl控件演示 COM接口挂钩及其应用 如题。 CSkinSlier CSliderCtrl自绘 Cursor 生成图标,运行到鼠标图标。 cutscene win32下实现视频播放。 C视频源代码 视频教程步骤源码 DDraw DirectX 实例 DES加密法源代码 Detected memory leaks 检查内存泄漏源码 DigiStatic_src 自绘CStatic实现数字效果。 DirectShow开发指南pdf附属代码 DirectShow开发指南源码 directUI_D DirectUI界面 DOM应用---遍历网页中的元素 dshowplayer 媒体播放器的实现,实现了VMR7、VMR9、EVR方式。 DSoundManager 实现了声音管理。 Excel文件的导入和导出操作 主要的实现在CMyExcel类中。 expclass_src dll的演示。 fge.1.1.alpha.sdk 精灵系统,一套MFC渲染引擎,含2D/3D等渲染,效果看源码,IFEngine是整个引擎接口,IFSystem是硬件查询系统,IFApplication是应用程序对象基类。 FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可聊天+传文件) 该实例可进行局域网的聊天、一对多、多对一、和多对多的传送和续传,理论上这是我本人的实现目的,而且目前经测试已基本实现了上述功能,而且网速一般有几M/S。另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 gdiplus应用实例2 GetFileVersion 这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理单元的源码文件。完成端口通讯模块内存管理。 haisanidsV1.2-网络连接监控 IP实时数据。自绘了很多控件。自绘CTabCtrl、CToolBar、CMenu、CButton、CHtmlCtrl、CListCtrl。 hyperlink 自绘CStatic,实现超链接。 iconbutton_demo 演示了多种自绘Button。 IDocHostUIHandler Extended CHtmlView IM_毕业设计 聊天系统,操作了数据,有服务端和客户端。 ini文件的类适合VC使用 Inline Hook(ring3) 简单源码 代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,外加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的模型,服务端运行后会自动发送本机信息到客户端,客户端采用IOCP重叠机制。 IOCP封装类(DLL)发布 主要是CIocpSrv"伪类",实际上还是调用的DLL, IOCP完成端口 IP所在地查询器 jpeglib_demo 处理Jpeg图片。 KeyHook 键盘钩子,截获键盘信息。 Kugou7+UI 界面设计。学习界面的好实例,强烈推荐。 自绘button 自绘MENU 自绘tab 自绘Tree 自绘按钮button源代码 自绘编辑框 自绘窗体界面 自绘对话框 listbox-6 重载CListBox,演示了拖动功能。 Mail_Report 演示了发送邮箱的功能。 MD5法 MediaPlayer 视频播放的实现。 MFC 对话框 MP3 内部包含:mp3播放器Lrc歌词同步源程序代码分析、mp3播放器+支持歌词同步显示哦、简单音乐播放器。 mfc 解码 视频音频解码部分。 MFC_MultiSender_OVER 文件传送,多文件(超大文件)传送功能的实现,含文档。 MFC+DLL的编写和调用示例 MFC换肤完全贴图实现 Smile简体版 Linux内核完全注释附 MFC+消息循环贴图---金山毒霸界面 自绘控件实现。 MFCDemo DirectUI移植到MFC中实现。 MFCHtml 调用脚本 MFC使用COM加载WMI服务,另类获取系统服务详细 大家都知道,现在流行的检测硬件软件视乎很神秘,我们要获得各种信息好像比较难.但大多数这种软件或多或少的使用了WMI,如果我们能熟练掌握相信你也做的处理.另外WMI除了查询还能修改,比如3389端口,账号,密码,服务启动与关闭只要你想做的几乎都可以,因为WMI代替我们去与硬件打交到了,甚至是系统底层! MiniPlayer 源代码 媒体播放实现。 MP3解码 代码 内部包含多种实例实现MP3解码,有开发文档。 MP3解压程序源代码 MPEG4播放器源代码 MSN 仿真界面全部源代码 如题,非常好的界面设计实例,自绘控件的实现。 Mufan MP3播放的实现。 MYICQ 0.8 alpha1 (仿腾讯QQ整套聊天系统) 老版qq系统的实现。 MyIE3.0浏览器源代码 如题。完整的代码,重载控件实现,非常适合初学者。 MyPhpServer(原创,有实现的主要代码) microcai-ibus-t9-输入法源码 如题,主要源码就几个,详细见代码。 MzfHips主动防御 主要在MzfHipsDlg中,程序分析进程数据、驱动数据、注册表数据从而实现主动防御。 超级下载 不过不是c++源码 Notepad++ V5.6.8 源码! OA精灵代码 c++版 一套oa系统。 ocxdlgtest dll的一个实例。 OD反汇编引擎(带VC修改版和原版) 如题。主要文件就4个,非常适合学习,详细见源码。 OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端服务器端。 redui_src_v0.9.130(DirectUI 3D) DirectUI 3D界面。 sdk(界面) RINGSDK包含界面和图象。 绘MFC基本控件 PlayerDrectShow win32情况下实现媒体播放。 preemptivepopupkiller C#源码,实现简单游览器。 RangeScan扫描器源代码 ip地址扫描,发送邮箱。 ResizableLib 测试开源界面Resizable。 RsPicture 自定义了一个图片,然后引用测试。 SimplePlayer 简单的媒体播放源码。 Skin_Combo_Box_demo 自绘Combox控件的实例。 SkinList_Demo 自绘List控件的实例。 Smile 自绘List控件的实例。 SOCK登录SSL加密网站 调用ie接口。主要的代码在IEComCtrlSink中。 sqlite3使用 引用了Splayer中的Sqlite3,进行了测试。 SrcFirstProg 简单的窗口程序。 SuperGrid - 特别的 listview 控件 网格形式的视图,自绘了CComboBox、CEdit、CSuperGridCtrl实现。 tab 演示了CTabCtrl控件的使用方法。 tabcontrol_demo 自绘了CTabCtrl的实现。 To Create A COOL Desktop Lyrics Demo 歌词显示,效果非常好。对话框实现。 TopMost 自绘CListCtrl的实现。 Trace程序 演示了输出信息。 TransparentStatic 自绘CStatic控件。 TreeView控件 自绘CTreeView控件。 VC 创建向导模式 VC 精品源码打包下载(解) CatListBox_src.zip CatListBox_demo.zip 这个程序模仿Outlook建立分类列表框。 CClockST_src.zip CClockST_demo.zip 一个简单的数字时钟程序,其中的date类派生于MFC CStatic 基类。 CIVStringSet_Demo.zip CIVStringSet_Source.zip 基于MFC和STL平台的字符串类,可以实现在快速字符串搜索。 enum_display_modes_demo.zip enum_display_modes_src.zip 列出所有的显示模式并列表出来,通过单击列表来改变显示分辨率。 iconbutton_demo.zip iconbutton_src.zip 创建一个按钮,并在上面显示图标。 jpeglib_demo.zip jpeglib_src.zip 利用Delphi的代码在VC中显示JPG图片,不使用动态连接。 Mail_Report.zip 一个邮件报告程序。 SrcFirstProg.zip 解释了最基本的MFC程序流程。 tabcontrol_demo.zip tabcontrol_src.zip 自定义的标签控件对话框。 Undo_demo.zip undo_src.zip 在VC中实现Undo和Redo功能。 VC 利用底层键盘钩子屏蔽任意按键MaskKey 动态链接实现钩子,然后程序调用。 VC 透明窗口效果的电子标尺源代码 实现了屏幕绘图操作,实现电子标尺数据计以及显示,有数据操作保存数据。 VC++ ini文件读写操作类实例 VC++版源代码统计工具 内含自绘CMenu、CButton、CDialog、CStatic、CListCtrl等。 VC++6.0 控制摄像头 一个视频捕捉类对摄像头的操作。 VC+++暴风影音(Media+Player+Classic)源码 知道的人不多,但提起国内的暴风影音,我想知道的人就多了,其实暴风影音就是Media Player Classic,暴风影音只是同我一样从Gabest官方下载到了Media Player Classic的源码,不同的是,暴风影音将Media Player Classic改成了自己的名字并加入了许多的解码器,打包成自己的产品,其实这也无可厚非,关键就在于其作者老爱把里面捆绑一些我们用不到的软件. TT--仿qq+p2p通讯(nat穿透) VC++遍历文件夹自动生成目录树 对CTree控件的操作。 vc++动态链接(dll)编程深入浅出 内含开发文档。主要是对动态链接的教程。 vc++动态链接编程之DLL典型实例源代码下载 VC++仿Dreamweaver取色器源代码 VC++挂机锁屏系统源程序 VC++建立桌面或开始菜单快捷方式 VC++界面编程 SkinMagic 2.21 动态库版本的使用和 Skin++动态库静态库版本的使用。 VC++精仿QQ2008窗体及分类菜单 VC++卡通风格气泡提示源码 VC++实现任务管理器源码 任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++视频捕捉系统 win32下 视频操作。 VC++视频会议系统(完整)有开发文档。使用了系统自带的视频。 Windows核心编程(第五版)随书源代码 vc-ftp 多线程操作多文件传输的操作。 VC版下载者 源码 非常简单的一个实例,使用了URLDownloadToFile下载文件。 VC断点续传源代码 从fnMyDownload开始,程序首先解析输入的url,拆分为地址,路径,文件名等。然后获取文件头,得到文件大小,然后再下载。重点函数是ThreadDownLoad。下载完之后用FileCombine合并文件。Mydownload.cpp底端的fnMyDownload函数是下载器的关键函数。 点对点多线程断点续传软件《传圣》源代码 多任务多线程断点续传DLL 多线程文件下载 多线程查找文件(功能增强版) 自定义了一个文件搜索类。多线程实现。 多线程高速文件搜索程序源码 VC++视频聊天系统源代码 实例简单,有用户登录、传输文件、视频、画质调节、禁音检测、回音消除、自动增益、噪音抑制、视频控制等、 VC++搜索指定文件夹中的文件 VC++文件分割、合并工具 自绘了Button、CProgressCtrl、CAutoFont。主要操作在CFileSpltDlg中。 vc++写的音乐播放器 VC++制作3D效果的旋转文字特效 VC++注册码加密源程序(含注册机、解密机) 压缩包内有两个源码包,一个是注册机源程序,另一个是解密机的源程序,一套完整的参考实例。 VC+MapX源码含GPS跟踪演示 VC3D 利用VC编程在界面上实现3D文字 在MFC应用程序中浏览PDF、Word文档文件 vcdialog 自绘对话框。 vc编程:自动停靠窗体,吸附窗体 OnMoving事件处理。 vc基于HTTP协议断点续传和多线程下载源代码 VC满屏开满玫瑰花 VC然输入框出现气球提示 调用系统自带的提示显示。 VC实现创建模态对话框 VC释放EXE资源文件 vc网络 网络系列使用教程。 VC星号密码探测显示程序 vc网络通信编程实用案例精选 局域网网络通信编程实例、IE编程实例、基本网络编程实例、网络通信协议编程、Modem /串口通信编程、代理服务器编程实例、高级网络通信编程实例。 Visual_C++网络高级编程 TCP/IP协议、Winsock网络编程接口、Visual C 与网络编程、基本网络编程技术、Telnet协议的实现、HTTP协议的实现、 FTP协议的实现、文件下载、UDP协议的实现、ICMP协议的实现、PPP协议的实现、代理服务器的实现、 ATL DCOM和ActiveX技术、网络安全。 vld-10-src 内存泄漏检测源码。 vmrplayer 简单播放器的实现,集成到了一个类中。 ATL开发Gif的ActiveX控件 如题。使用控件显示gif文件。 weather(天气预报界面) 通过soso网站获得城市以及天气信息。 WebBrowser-Httprequest(http请求捕捉) Win32多线程程序设计 有文档以及源码。 Windows Media Player界面的实现 Windows Shell扩展 实现文件拷贝。 windows设计 源码 书本源码。1.VC++的基本使用 2.一个简单的HelloWorld程序 3.进程的创建 4.进程控制 5.控制其他进程 6.游戏内存修改器1 7.游戏内存修改器2 8.多线程 9.线程的优先级 10.线程同步 11.第一个窗口程序 WINDOWS网络编程技术-附源码 如题。内有文档以及源码。 WM调用DrectShow例子 wm播放器。 XFileDialog_demo xml文件操作。 xml 树控件的使用,以及ChtmlView或站点拦截调用等。 XML文件读取及管理工具VC++源码 重写了很多控件,重要功能源码集合到了CXML类中。 暴风压力测试2010(V7.0)源码 如题,演示了攻击服务端的源码,tcp多连接攻击、cc攻击等等……。 播放器 MM ARM_流媒体、暴风影音源码用于编解码分析。 超清晰播放器源代码 超旋的音乐播放器 含歌词……,效果看源码。 穿还原的下载者 C++源码 驱动程序可以穿透还原卡,并且可以修改系统文件,这里是通过修改系统文件userinit.exe来实现的。userinit.exe的功能很简单,就是启动explorer.exe。这里就是通过替换uerinit.exe,伪造一个userinit.exe。这个伪造的程序可以实现uerinit.exe的原始功能,并可以实现自定义的功能,比如下载执行,发送数据。 窗体透明、窗体上控件和DC绘图不透明 从dll中动态装载类的源程序 大型多媒体视频会议服务器端和客户端源码VC 基于H323格式。 发一个界面skin#全集合 SkinH_VC使用帮助(含源码)、Skinsharp V1.0.6.6各种语言全破解、vc全部函数各自独立的demo、制作皮肤工具。 仿360杀毒软件界面源码 MFC重载控件实现了360界面效果。 仿QQ、MSN信息提示窗口 重载CWnd实现了动画显示。 仿QQ2011界面的源码 仿QQ信息提示窗口 仿金山词霸界面 仿制金山毒霸专杀工具界面 重载CEdit实现自绘。 实现QQ界面绝对经典 用户界面多线程 多线程的使用。 搞基控件 List Ctrl 演示了List Ctrl控件的使用方法。 搞基控件 ListBox 演示了ListBox控件的使用方法。 搞基控件 Tab Ctrl 演示了Tab Ctrl控件的使用方法。 搞基控件 TreeCtrl 演示了TreeCtrl控件的使用方法。 带加密功能的SQLite3.3.6封装类 第12章+DLL开发与系统编程 创建导出浮点数四则运函数的Win32 DLL、使用显式方式调用DLL实现浮点数的四则运使用隐式方式调用DLL实现浮点数的四则运、创建Win32 DLL导出一个全局变量、调用DLL,获取其导出的全局变量值、创建Win32 DLL导出一个计长方体表面积和体积的类、调用DLL,使用其导出类计长方体的表面积和体积、创建MFC常规DLL,通过导出函数显示颜色信息对话框、调用MFC常规DLL,显示颜色信息对话框、创建MFC扩展DLL,实现圆形按钮类、调用MFC扩展DLL,创建圆形按钮、创建记录键盘动作的全局钩子DLL、调用键盘钩子DLL,实现监视系统的键盘操作、创建记录当前鼠标所在窗口标题信息的鼠标钩子DLL、调用鼠标钩子DLL,显示鼠标所在窗口的标题、获取当前操作系统的版本信息、获取系统CPU信息、获取系统内存的相关信息、获取当前系统所有安装的硬件设备、调用系统关机对话框、编码实现关闭和重启计机、实现休眠计机,并创建快捷键、显示并设置系统的显示属性、隐藏显示系统的任务条、改变系统的桌面壁纸。 对磁盘下任意目录的动作进行监控 创建线程不断的监视。 多功能小闹钟 不规则窗体效果显示,实现了多功能的小闹钟。 仿QQ和飞秋的局域网聊天程序(文件+语音) 这个程序用的协议是UDP,socket是CAsyncSocket,这是我在这个网站看到了qq也优先用UDP来连接服务器,连上服务器,能获得服务器上的人员列表,客户端的人员列表随用户上下线改变,服务器掉线了 也能收到通知,双击用户名字可以聊天,聊天窗口上有个文件传输,在我电脑上能传输一些小文件,但在别人电脑上就会使程序崩溃。 工具栏画到标题栏上 关联文件 自动恢复系统文件关联,以及文件关联操作的代码。使用注册表防止多次运行。 基于CDialogBar的IE多标签栏的实现 基于IE内核的多进程浏览器Raptor 基于WTL控件实现了多进程。 极速FTP客户端程序(VC++版) 截屏mfc和dll程序 进程防杀的实现 Hook TerminateProcess()函数,每次TerminateProcess()被调用的时候先判断企图结束的进程是否是我的进程,如果是的话就简单地返回一个错误码就可以了。 精美挂机锁源码 局域网视频监控 客户端和服务器 考虑到作为服务器的一端一般来说是固定的,所以当开启服务器后,一般服务器是不能停止的,所以在正式的软件里面,作为客户端让输入的服务器端IP的那一项是可以省略的,因为在制作安装程序的时候可以将服务器IP直接固定,但是这个作为简单的功能演示版本考虑到作为服务器的一端可以为任意电脑,所以在客户端设置了填写服务器IP。运行时:首先是运行Sever.exe服务器端,然后是“开启服务器”,“产生新的随机码” ,然后运行Client.exe客户端,输入用户名和密码,然后输入服务器端IP地址,然后登陆服务器,如果密码或者登陆号不正确会有提示,也可以选择试用版的软件。 快捷键 演示了快捷键设置的代码。 类似QQ截屏的屏幕取色器 主要功能在CColorPickerDlg中。 两款拼音输入法源代码 拼音输入法、AboutWiz_src。 枚举进程 系统监视 有磁盘监视、系统目录监视,任务栏监视、端口监视、流量监视等等。 媒体播放器 如题。音乐播放器的实现,内有文档以及总结。 模仿QQ抖动 闹钟软件V1.0 (带VC++源码) 基于MFC窗体的闹钟。 能弹出复选框组合列表的combobox 屏幕放大镜源代码 屏幕监控+远程控制+mfc+vc 屏幕录像模块程序设计 屏幕录像源代码 屏幕小精灵 七彩泡泡屏保代码 轻松实现类VC界面 两个窗口的实现类是从CControlBar派生出来的,我们并不需要从头到尾实现该类,因为Cristi Posea先生已经为我们实现了一个称为CSizingControlBar的类,而且做得相当完美!我们所要做的便是好好地利用该类,为了尽可能地简洁,笔者将CSizingControlBar类修改了一下并命名为CCoolBar,接下来我们将详细介绍如何利用该类实现我们所需的界面。 全屏幕播放AVI文件的启动界面程序 全屏幕播放flash的动画启动界面 任务栏终级编程 三种方法来检索处理器信息 获取CPU的信息,以及判断是否支持MMX SSE SSE2 3DNOW等等操作。 深入解剖远程管理软件编写 教程,如题。 深入解析ATL(第二版)源代码资源大小 附带书籍源码。 深入体验VC开发源码 附带书籍源码。 十进制、十六进制、二进制互相转换的VC++程序 实现DLL拦截 在windows下当一个可执行文件运行时,Windows加载器将可执行模块映射到进程的地址空间中,加载器分析可执行模块的输入表,并设法找出任何需要的DLL,并将它们映射到进程的地址空间中。由于输入表是根据DLL名来进行查找,首先是查找当前目录下有没这文件,没有话在去查找系统目录C:\\Windows\\system32有没这文件,所以我们可以完全趁这个机会去劫持DLL,把他劫持下来后就可以在里面进行我们要做的事情。 实现DLL内存补丁,DLL劫持技术([Symanli原创]) 实现EDIT控件自绘 使用VC编写的文件加解密操作类 自定义封装了一个文件加解密类,对文件加解密。lzari.c提供了lzari压缩法的实现。 视频+语音+播放器源代码(不断更新内容) H.323 开发包与源码、P2P视频技术源码、TopPlayerSrc、VOD核心源码、大型多媒体视频会议服务器端和客户端源码、屏幕截取制作avi的源代码、视频会议系统、视频聊天源代码、优秀的IP网络语音通讯软件Speak Fleely源代码。源码与上面的有些重复。 手机远控电脑源码 分两个模式:一个是短信模式,一个浏览器模式。只要你遵循数据包的格式发送数据就一定可以成功的。不过不是源码。 手写输入法源码 太简单的实例。有利于对输入法开发的入门和深入学习。 鼠标钩子 钩子的实现。如题。 完全自绘软件更换皮肤例子 完整源码 统计后台([源码信息] 梦者 绿色下载器 流量商必备 ) 本统计后台无须安装数据。可直接使用。 可多用户登录,多用户统计,顶级防刷,一键扣量,等等强大功能。 网络电视软件源码 网络电台收听助手V3.0(VC源码) 文件(文件夹)加密解密工具源码 源码实现了主要功能:1 文件(夹)加密解密 2 文件夹伪装保护解除伪装 3 右键关联加密解密到系统菜单 4 开机最小化启动到托盘(气球提示) 5 支持文件(文件夹)拖动 6 支持WIN2000,XP,VISTA,WIN7。非常好的一个实例。 文件加密程序 自绘了很多控件,使用了多线程加密以及解密,支持换肤,非常好的一个实例。详细见源码啦。 文件夹加密小程序 简单的加密源码。 文件捆绑器源代码 文件操作的实例,主要功能在BindFileDlg。 文字图象识别OCR系统开发包 引用了第三方OcrWencui.lib 来识别。 显示网络流量 监听了端口显示了网络流量,使用了绘图显示了出来。学习流量监控的好例子。是使用了自绘按钮实现的。 线程池的一种实现 相当不错的一个挂机锁 写日志log的类 封装了一个类Log,使用它输出信息。 循序渐进实现仿QQ界面 六个步骤实现了QQ类似界面、仿QQ界面上的各种自绘控件。 迅雷资源搜索 阳历阴历转换 封装了一个CLunar实现阳历阴历转换。 一个服务端只有7k大小的后门 RegOpenKeyEx和RegCreateKeyEx函数由于电脑经常会关闭,或者应用程序也会经常关闭,但有一些参数是经常需要保存。比如当你打开程序,并设置了窗口的大小,想每次打开时都设置窗口为上次打开的大小。这样就需要保存窗口的大小,那么窗口大小的参数保存到那里呢?其实在Windows里最方便的做法,就是保存到注册表里。又比如游戏登录时,总是想保存最后一个登录的用户,那么也需要保存这个用户到注册表里。其实注册表是Windows保存系统配置的数据,比如不同的语言设置,不同的时区设置,不同的用户登录,不同的权限等等。下面就来学习怎么样使用函数RegOpenKeyEx来打开注册表里的键和用函数RegCreateKeyEx来创建新的键。 一个可以获取硬件信息源代码 一个轻量级网络通信开发源码 音乐播放器 音频录入mfc源码 用C写的播放器,超强 引用了libmad、ogg、Zlib等等,强烈推荐学习。 自绘右键菜单。 在ToolBar上添加控件 在工具栏上添加COMBOBOX,EditBox,ProgressCtrl,Slider控件,根据相同的道理您还可以添加其他控件复选框、单选按钮等等 注册表监控程序 该程序的作用是记录系统发生的注册表操作,(只记录成功的,忽略失败的) 自己动手写操作系统 自由更改文件对话框的外观 自绘对话框。 应用程序与驱动通信(DeviceIoControl ) VC++系统开发实例精粹 光驱控制程序、枚举当前所有窗体、硬件信息查看器、注册表操作程序、USB编程、目录浏览器、资源管理器、二进制浏览器、日历管理器、字体设置对话框、任意形状窗体、自动停靠窗体、带图像的下拉列表框、实时曲线显示、OutLooK风格界面、屏幕保护系统、MP3播放器、MIDI音乐演奏器、VFW视频捕捉系统、256色转换灰度图、对比度拉伸、二值化变换、反色、亮度增减、取对数、取指数、直方图均衡、灰度均衡、阈值变换、图像镜像、图像平移、图像缩放、图像旋转、高斯平滑、均值滤波、拉普拉斯边缘检测、梯度锐化、中值滤波、离散余弦变换、傅立叶变换、Walsh变换、方块编码、图像细化、Canny子提取边缘、Hough变换、逆滤波处理、维纳滤波处理、文字、图像特效显示、带预览的图像选择框、图像浏览器、聊天室、CRC循环冗余检测、ICMP系统、能够发送附件的邮件程序、获取多个IP地址、获取计机基本网络设置、获取计机安装的各种网络协议、远程监控系统、FTP客户端、类似MSN的即时通信工具、文件共享系统、考试成绩管理系统、学生管理信息系统、二进制数据编程、多线程实例、动态链接(DLL)实例、消息循环重载实例、进程查看程序、文件关联实例、剪贴板查看器、键盘发声系统、运行后自销毁的程序、文件查找系统 、屏幕拷贝实例、文件分割器、密码探测器、带微调和滑动条控件的工具栏、透明窗体实例、状态栏动画、圆盘式和数字式时钟实例、Windows XP风格菜单、 Office XP风格菜单、Windows XP风格标题栏、Windows XP风格对话框、Windows XP风格按钮和滚动条、基于DirectSound的声音播放器、AVI视频制作实例、电影播放器、仿Winamp多媒体播放器、BMP图片浏览器、小波法的VC++实现、基因法的VC++实现、细胞识别统计系统、基于神经网络的文字识别系统、车牌定位与识别系统、点对点文件传输、Sniff网络嗅探器、基于UDP的网段扫描器、网络流量监控系统、网络语音电话、HTTP服务器实例、数据浏览器、数据查询器、报表打印实例、课程管理信息系统、存管理信息系统、医院管理信息系统。 VC++餐厅餐饮管理系统 这是一个毕业课程设计,含论文,简单明了,全部引用了MFC控件实现,主要是操作数据的部分。 VC++开发的仓管理系统设计文档和源码 如题,含论文,简单明了,全部引用了MFC控件实现,主要是操作数据的部分。 VC++存管理系统(毕业设计) 如题,含论文,简单明了,全部引用了MFC控件实现,主要是操作Access数据的部分。 VC++图书管理系统完整版 一个简单的客户端操作数据的程序。 餐饮管理系统(全程开发) 餐饮管理系统 超市进销存管理系统 基本功能:前台销售结帐、基本信息管理、基本信息查询、日结查询、超市小票打印。操作ORACLE数据。 局域网监控系统 主要功能:系统采用人机交互的方式,界面美观友好、屏幕信息需要时时显示,网络延时不能大于1秒、服务器端可以随时运行,只要客户端运行,就能够显示屏幕信息、系统运行时占用内存不能大于10MB,以免影响系统性能、客户端运行时需要隐藏显示窗口,起其感觉不到在运行。 存管理信息系统 在运行系统前,首先要安装SQL Server数据,注意要设定用户名为“sa”,密码为空。 可以有两种方法创建该数据:1.使用SQL server查询分析器运行Database目录下的sql.txt中的sql语句,这样会创建stock数据。2.使用SQL Server的企业管理器直接附加“附加数据文件”目录下的Stock.mdf文件。系统默认帐号:admin 密码:888888 企业办公管理系统 这个源码不错,自定义了很多类,适合学习。 企业电话语音录音管理系统 主要功能:采用人机对话的操作方式,界面设计美观友好、操作灵活、方便、快捷、准确、数据存储安全可靠。系统可以进行来电显示和来电接听等功能。提供电话拨出功能,可以通过程序拨出电话。提供客户管理功能,记录客户信息,并可以在拨出电话时以电话簿的形式显示客户信息。提供电话录音功能,当电话接通时开始录音,当电话挂断时结束录音。提供录音管理功能,可以通过程序修改录音文件的存储位置。系统最大限度地实现了易维护性和易操作性。系统运行稳定、安全可靠。适合学习。 企业短信群发管理系统 主要功能:电话簿管理。常用语管理。短信息发送。短信息接收。短信猫设置。不过使用了第三方实现发送接受等功能。 人力资源管理系统 主要功能:系统界面设计美观、友好;智能化程度高、操作灵活、方便;系统运行稳定、安全可靠;反应快速、计准确;实现新员工入职登记、查询修改及入职合同的录入、编辑;登记并可以浏览日常考勤信息;记录公司定期的员工考核成绩;实现部门用人申请的登记;实现应聘者信息备档;实现工资单自动录入及缺勤原因的扣资计。 社区视频监控系统 本程序有三个实例,msado15(数据)、Autodlg(操作文件)、Capture(主要的程序)。本实例是天敏VC4000监控卡,其中使用了MPG4c32.dll、MediaTransmit.dll、MediaTransmit.lib、MediaTransmit.h、Sa7134Capture.dll、Sa7134Capture.lib和Sa7134Capture.h几个文件,在运行程序前,需要将这些文件添加到当前工程中。程序中没有提供这些文件。 物流综合管理系统VC源码+毕业设计 学生管理系统 学生考试系统
第一章 绪论 1.1. 选题背景 这几年,许多新名词涌入我们的视野:博客、圈子、播客、WAP等。这些都预示着我们进入了一个新的互联网阶段web 2.0,它是相对web 1.0的新的一类互联网应用的总称,是一次从核心内容到外部应用的革命[10]。这个阶段发展迅速,互联网应用趋于多样化,其中变化最大的是由web 1.0网站创造内容的时代变为由用户创造内容的web 2.0时代。 在web 2.0应用中,博客(Blog)是web 2.0核心应用中最典型、最流行的代表之一,也是web 2.0技术应用的最直观的表现,是web 2.0精神和理念的具体体现。 1.2. 问题的提出 Blog记载了日常发生的事情和自己的兴趣爱好,把自己的思想和知识和他人分享、交流,同时又通过“六度空间”结识了更多志趣相投的朋友;而越来越多专业知识的 Blog 的出现,让我们看到了 Blog 更多所蕴涵的巨大的信息价值:不同的 Blog 选择不同的内容,收集和整理成为很多人关注的专业 Blog ——目前越来越多的人获取信息的来源是一些固定的 Blog 。随着博客人数的增加, Blog 作为一种新的生活方式、新的工作方式、新的学习方式已经被越来越多的人所接受,并且在改变传统的网络和社会结构:网络信息不再是虚假不可验证的,交流和沟通更有明确的选择和方向性,单一的思想和群体的智慧结合变的更加有效,个人出版变成人人都可以实现的梦想—— Blog 正在影响和改变着我们的生活。 1.3. 系统的开发目标 管理员通过前台页面进入后台管理模块后,可对注册的博客用户进行维护,包括对注册用户的添加、查找、修改和删除。 管理员进入登录后,可对帐户进行管理,包括添加管理员帐户、修改管理员帐户、删除管理员帐户和对帐户进行权限设置。 博客用户通过前台登录后,可对自己的博客空间进行管理,包括发布自己的网络日志、收藏个人图片、和相关人员进行交流和沟通以及删除访问者发表的评论等。 因此,在具体设计实现该博客网站时,主要考虑了主流博客网站的几个主要功能:(1)博客的注册、登录验证功能(2) 网络用户通过关键字搜索博文功能(3) 最热门博客页面推荐浏览(4) 文章详细内容及相关评论显示(5) 博客页面访问量统计(6) 博客个人文章管理维护功能(7) 博客个人文章分类管理维护功能(8) 博客个人友情链接维护功能(9) 博客个人基本信息管理维护功能(10) 博客图片上传及个人相册管理(11) 网络用户写留言,博主查看留言。 第二章 系统设计 2.1. 系统分析 在整个blog进行开发之前,要确定出整个项目的整体架构,包括系统的选型、运行环境的确定及系统结构设计。下面对这进行详细介绍。 在进行软件系统开发的最初环节,一般都需要进行系统的选型,即根据系统功能的实际需求,选择合适的开发工具及软件架构。 blog对系统的可靠性、稳定性有比较高的要求。本系统设计时,比较主流的B/S设计有基于JSP、ASP、PHP、CGI及J2EE等模式。相比较而言PHP的功能相对简单,不适合做大程序;而CGI效率相对较低,所以也不考虑。由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的吞吐量,提高并发处理客户请求数量,系统采用了IBM服务器作为主机。在数据处理方面,不需要在数据层借助存储过程及数据服务器端函数封装过多的业务逻辑,因此数据系统采用相对精巧的MySQL[6]。 该在线博客系统服务器端如果需要布置到其他主机上,则该主机必备条件如下: 1. 服务器端操作系统:独立于操作系统的跨平台系统,客户端MicroSoft Windows 2000及以上; 2. 数据:MySQL 5.0.27版本; 3. Web服务器:Tomcat 5.5及以上版本,配合MVC设计模式及 Hibernate开发架构; 4. 客户端运行环境:能运行IE 5以上或Netscape 5以上浏览器的操作系统,配合使用Ajax技术; 5. 客户端运行工具:目前的系统采用浏览器作为客户端,为了支持Ajax开发框架,应该选择使用IE 5以上版本浏览器。 本网站以xp为Web平台,JSP+Ajax+Servlet+JavaBean+Hibernate为网站实现技术,建立基于MySQL数据系统的核心动态网页,实现博客网站前台及博客个人维护管理等功能模块。 1、 系统处理的准确性和及时性:系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足信息处理的需求。 2、 系统的开放性和系统的可扩充性:系统在开发过程中,应该充分考虑以后的可扩充性。例如数据表中用户选择字段方式的改变,用户查询的需求也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。 3、 系统的易用性和易维护性:要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。 4、 系统的数据要求:1、数据录入和处理的准确性和实时性。2、数据的一致性与完整性。3、数据的共享与独立性。 2.2. 系统的可行性分析 2.2.1. 技术可行性 技术上的可行性分析要考虑将来要采用的硬件和软件技术能否满足用户(这里是服务器,网速)提出的要求(如计机的容量、速度等)。此外,还要考虑开发人员的水平,学习了两年的jsp开发,对于这个系统的编写,我想完整的之需要两个月就可以写出程序,再花上几天的调试,计划两个月左右就可以完成投入使用了。 我们掌握了数据及其应用技术、数据原理、计机网络技术等课程,对数据的设计、应用、维护及局域网的组成有了深刻的认识与一定的动手实践能力,考取了信息处理、程序设计、数据技术等国家IT认证。从一定程度上具备了开发一个小型系统的能力。再有就! 2.2.2. 经济可行性 主要从对项目的经济上进行分析评价,一方面是支出的费用,包括设备购置费、管理和维护费用、人员工资和培训费等,另一个是取得的收益。这是个小型的系统,从投入的人力,财力与物力来讲是非常小的,发布出去之需要注册域名就可以了,从节省人力方面,可以让管理人员从繁与复杂的工作中解脱出来,做更多的工作。 2.2.3. 管理可行性 有IP地址、用户名与密码等,可以下载一个FTP上传工具(cure)上传更新后的内容.可以在http://www.skycn.com/soft/683.html下载到. 下载以后,通过"站点管理"-->"新建站点".输入IP,用户名,密码.然后连接即可. 当然也可用FTP工具.直接在IE浏览器地址栏输入ftp://www.域名/然后输入用户名和密码.同样可以上传.随时更新文件! 第三章 开发环境的说明与安装 3.1. 开发语言的选择 3.1.1. JAVA简介 Java是Sun公司推出的新的一代面向对象程序设计语言,特别适合于Internet应用程序开发。Java的产生与流行是当今Internet发展的客观要求,Java是一门各方面性能都很好的编程语言,它的基本特点是简单、面向对象、分布式、解释的、健壮的、安全的、结构中立的、可移植的、性能很优异的、多线程的、动态的,特别适合在Internet环境上开发的应用系统。 3.1.2. Web应用程序开发环境—JSP技术 JSP的全称是Java Server Pages,它是SUN推出的一种动态网页技术标准。它在传统的静态页面文件(*.html,*.htm)中加入JAVA程序片段和JSP标记,就构成了JSP页面。JSP具有以下的优点: 1、将业务层与表示层分离:使用JSP技术,网络开发人员可充分使用HTML来设计页面显示部分(如字体颜色等),并使用JSP指令或者JAVA程序片段来生成网页上的动态内容; 2、能够跨平台:JSP支持绝大部分平台,包括现在非常流行的LINUX系统,应用非常广泛的Apache服务器也提供了支持JSP的服务; 3、组件的开发和使用很方便:如ASP的组件是由C++,VB等语言开发的,并需要注册才能使用;而JSP的组件是用Java开发的,可以直接使用; 4、一次编写,处处运行:作为JAVA开发平台的一部分,JSP具有JAVA的所有优点,包括Write once , Run everywhere. 3.2. 数据的选择 3.2.1. Web应用程序开发环境—SQLserver数据 SQL Server是由Microsoft开发和推广的关系数据管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的。SQL Server 2000是Microsoft公司于2000年推出的最新版本。 SQL Server 特点:   1.真正的客户机/服务器体系结构。   2.图形化用户界面,使系统管理和数据管理更加直观、简单。   3.丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。   4.SQL Server与Windows NT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。SQL Server也可以很好地与Microsoft BackOffice产品集成。   5.具有很好的伸缩性,可跨越从运行Windows 95/98的膝上型电脑到运行Windows 2000的大型多处理器等多种平台使用。   6.对Web技术的支持,使用户能够很容易地将数据中的数据发布到Web页面上。   7.SQL Server提供数据仓功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。   SQL Server 2000与以前版本相比较,又具有以下新特性 :   1.支持XML(Extensive Markup Language,扩展标记语言)   2.强大的基于Web的分析   3.支持OLE DB和多种查询   4.支持分布式的分区视图   安装、运行SQL Server 2000的硬件需求   (1)计机   Inter及其兼容计机,Pentium 166Mz或者更高处理器或DEC Alpha和其兼容系统。   (2)内存(RAM)   企业版最少64MB内存,其他版本最少需要32MB内存,建议使用更多的内存。   (3)硬盘空间   完全安装(Full)需要180MB的空间,典型安装(Typical)需要170MB的空间,最小安装(Minimum)需要65MB的空间。 3.3. 开发工具的选择 MyEclipse,Deamweare,选择SQLserver作为后台的数据,选择JAVA、JSP、JavaScript、Html作为应用程序开发工具,运用Tomcat服务器技术,整个系统完全基于B/S (Browser/Server)模式进行设计。 1、Tomcat应用服务器 目前支持JSP的应用服务器是较多的,Tomcat是其中较为流行的一个Web服务器,被JavaWorld杂志的编辑选为2001年度最具创新的Java产品,可见其在业界的地位。 Tomcat是一个免费的开源的Serlvet容器,在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。 Tomcat也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如Apache。我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet。Tomcat是一个很好的工具,不仅仅因为其免费,功能强大,更因为其开放性,越来越受到人们的重视。 2、 B/S 开发模式 伴随着Internet的迅速发展,计机技术正在由基于C/S(client/ Server)模式的应用系统转变为基于B/S模式的应用系统。 过去,网络软件的开发都采用C/S(client)模式,在这种模式下,主要的业务逻辑都集中于客户端程序,因此,必然导致以下问题: 系统安装、调试、维护和升级困难。由于客户端的硬件配置可能存在差异,软件环能各不相同,因此,在安装时,必须对每一个客户端分别进行配置,同样,在软件升级时也要对客户端分别处理。 B/S模式带来了巨大的好处: 开发成本及维护成本降低。由于B/S架构管理软件只安装在服务器端(Server)上,即应用程序在部署、升级、维护时,只需要在服务器端进行配置就可以了,网络管理人员只需要管理服务器就行了,用户界面主要事务逻辑在服务器(Server)端完全通过WWW浏览器实现,极少部分事务逻辑在前端(Browser)实现,所有的客户端只有浏览器,网络管理人员只需要做硬件维护。 良好的安全性能,防火墙技术可以保证后台数据的安全性。所有的配置工作都集中在服务器端且所有客户端请求都是通过DBMS来访问数据,从而大大减少了数据直接暴露的风险。 第四章 系统设计 4.1开发框架技术介绍 对于框架技术,我们采用Struts+ajax的整合! Struts是应用比较广泛的一种表现层框架 1、 Struts是一个为开发基于模型(Model)-视图(View)-控制器(Controller)(MVC)模式的应用架构的开源框架,是利用Servlet,JSP和custom tag library构建Web应用的一项非常有用的技术。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速。它使用服务层框架可以将JavaBeans从Jsp/Servlet中分离出来,而使用表现层框架则可以将Jsp中剩余的JavaBeans完全分离,这部分JavaBeans主要负责显示相关信息,一般是通过标签(Taglib)实现,不同框架有不同自己的标签,Struts是应用比较广泛的一种表现层框架。 2、 Ajax我们主要应用就是xmlhttprequest,回调函数实现局部刷新达道数据更新! 4.2需求分析 Blog网站主要是实现注册用户登录、管理相关信息、博文及相关评论、查看留言、友情链接、及图片的上传和图像的播放而为上网用户提供按博文主题搜索,查看注册用户的博文及提出相关评论,并为注册用户写留言,游览注册用户的相册、注册等功能的系统。下面就以两种不同的用户来分析博客网站的需求。 4.2.1注册博友 首先必须在博客首页中登录填写用户名和密码,这样才能执行一些相关操作,不然就是普通用户只能查看一些信息,而不能发表博文。可以在管理页面上添加博文的分类,可以上传图片和游览自己的相册,在上传过程中可以将一张图片定义为自己的签名,在个人管理页面中注册用户还可以修改自己的个人信息。博文管理,友情链接管理及博文分类管理,用例图2。 图2 博客管理页面的用例图 在博客主界面中发表博文时可以选择博文类型,这样可以更好管理自己的博文。并查看和删除网友对自己的博文的一些评论、查看和删除网友留下的一些留言,提供与其他网友交流的空间。更好交流,在信息时代人们通过个人空间沟通也用来但不能在自己的博客主页面中提交评论和留言。。这样在本系统中就可以为博友提供更多的个人色彩。在管理页面中添加和删除友情连接。这样博友可以在自己空间中快速定位自己的关心的网站。这样还可以让网友看到自己的一些信息。友情链接及网页访问量统计显示:在博客的个人页面中还提供了推荐给普通网络用户的相关友情链接,此外,对个人页面的访问量也在随时进行统计,并在个人页面中进行直观的显示。 博客主页面的用例图如图3所示: 图3 博客主页面的用例图 4.2.2 普通用户 在博客注册页面注册成为博客的注册用户,才可以拥有自己独立的空间,进入某一博客页面查看相关文章信息时,可以随时对自己所感兴趣的文章发表评论,同时也可以查看到其他人针对该博文的评论。普通用户在阅读博文时可以在最后留下自己的一些评论。他也可以留下更多的信息。这样他可以写留言。这样他留下的信息就更快地被博友所看到。普通用户进入博友的用例图如图4所示: 图4上网博友在博客主页面的用例图 普通网友可以搜索自己关心的一些数据。并且在搜索结果中提供在结果范围内再次搜索。这样就可以将范围缩小。首页向注册用户提供登陆模块,注册用户在博客网站首页跟上网网友一样可以查看博客和博文推荐。上网网友可以注册成为博客用户,拥有自己独立的空间。这一模块的用例图如图5所示: 图5 博客首页的用例图 4.3 功能模块介绍 4.3.1 博客注册登录管理模块 博客注册登录管理模块用于建立博客网站固定的客户群体,通过记录对应的博客档案,实现对博客信息的后台维护及管理,同时也便于通过博客档案将网站最新动态及相关企业的信息方便地传达给每一位潜在的客户。 该功能模块实现了以下几个子功能。 (1)新博客在线注册。 (2)博客登录管理。 (3)跳转到博客主页。 只有进行登录并通过身份验证的用户,才可以在个人博客页面发表日志,并借助个人设置实现对个人博客相关信息的管理维护。对于没有经过身份验证的网络用户不允许在博客页面中发表日志,更不允许对博客页面信息进行管理维护。 该模块实现新博客的注册及登录验证功能。其中,注册新博客时会对用户输入的注册信息进行有效性验证,包括基本数据格式的有效性以及逻辑有效性,例如,用户名被占用时将及时给出提示。注册成功的博客登录时,会随时根据博客输入的登录信息进行提示,如用户名错误或者密码错误。 4.3.2 博客及文章检索查询模块 博客及文章检索查询模块为网络用户提供便捷的搜索,以及日志阅读浏览等功能,同时对日志的评论信息、博客推荐也能够及时反馈给网络用户。 该功能模块实现了以下几个子功能。 (1)热门博客页面推荐。 (2)最新博客日志推荐。 (3)日志信息关键字搜索。 该模块能够在网页中随时提供在线的最新日志信息。该信息需要定期更新,网络用户可以随时获得最新日志以及最热门的博客推荐。在客户选择了某个博客或者某个感兴趣的日志后,可以方便地跳转到对应博客页面进行日志的阅读,并和博客进行交流互动。 为了使网络用户尽快定位到所需的博客资料及日志信息,本模块提供了搜索功能,用户可以对所关注的日志信息按照标题进行关键字搜索,以避免用户浏览多个页面来寻找所需的日志信息。 4.3.3博客页面显示模块 当网络用户进入某个人博客主页后,在该页面中将提供博客日志列表的显示,同时为了方便用户浏览,在该模块中提供根据分类名进行日志列表的显示,也提供日志评论的浏览,此外还允许用户在博客页面中发表评论及留言。 该功能模块实现了如下几个子功能。 (1)用户可以分页查看对应的日志内容及评论信息。 (2)用户可以针对日志内容发表评论。 (3)用户可以针对博客进行留言。 (4)用户可以分类查看日志内容。 在该模块中还提供了博客页面统计信息,日志、评论及留言信息分页显示等方便用户的显示效果。 4.3.4 博客个人维护管理模块 博客个人维护管理模块用于实现用户对博客个人主页及相关信息的动态管理。 该功能模块实现了如下几个子功能: (1)日志及日志分类管理。 (2)评论及留言管理。 (3)个人基本信息维护管理。 借助该模块,用户可以随时对个人博客主页中的内容进行增加或修改,包括日志分类信息的更新、评论及留言管理等功能,也允许用户对博客的个人信息进行维护及其管理。 4.4 系统分析 本系统采用严格的J2 EE 应用结构,主要有如下几个分层。 1. 表现层:由JSP 页面组成。 2. MVC 层:使用Struts框架。 3. 业务逻辑层:主要由Spring loC 容器管理的业务逻辑组件组成。 4. DAO 层:由7 个DAO 组件组成,实现类必须继承Spring提供的HibernateDaoSupport。 5. Hibernate 持久层:由7 个PO 组成,并在Hibernate Session 管理下,完成数据访问。 6. 数据服务层:使用MySQL 数据存储持久化数据。 系统的具体分层如图5 所示。 图6 系统结构图 在图6 黑色大方框内的MVC 控制层、Service 层及DAO 组件层的组件,都由Spring IOC 容器负责生成,并管理组件的实例(实例必须是单身模式的,本系统中的bean基本上是单身的)。 4.3.1系统架构说明 本系统不仅严格按MVC 模式设计,还按J2 EE 分层设计,将中间层严格分成业务逻辑层、DAO 层及数据持久层等。MVC 层的控制器绝对禁止持久层访问,甚至不参与业务逻辑的实现。表现层采用传统JSP 技术。 本系统采用的是典型的J2EE 三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据交互,而是通过组件与中间层建立连接,再由中间层与数据交互。Jsp广泛的应用和稳定的表现,为其作为表现层技术打下了坚实的基础。中间层采用的是流行的Spring+Hibernate ,为了将控制层与业务逻辑层分离,又细分为以下几种。 Web 层,就是MVC 模式里面的C,负责逻辑层和表现层的交互。调用业务逻辑层,并将业务数据返回给表现层作组织表现,该系统的MVC采用Struts框架。 Service 层(就是业务逻辑层),负责实现业务逻辑。业务逻辑层以DAO 层为基础,通过对DAO 组件的正面模式包装,完成系统所要求的业务逻辑。 DAO 层,负责与持久化对象交互。该层封装了数据的增、删、查、改的操作。 PO ,持久化对象。通过实体关系映射工具将关系型数据的数据映射成对象,很方便地实现以面向对象方式操作数据,该系统采用Hibernate 作为ORM 框架。Spring 的作用贯穿了整个中间层,将Web 层、Service 层、DAO 层及PO 无缝整合,其数据服务层用来存放数据。 通过使用Hibernate 持久层,可以避免使用传统的JDBC 操作数据,对JDBC近一步包装,从而更好地使用面向对象的方式来操作数据。保证了整个软件开发过程以面向对象的方式进行,即面向对象分析、设计及编程,透过Hibernte 对PO对象持久化操作,不管插入还是查询都是通过PO。 4.3.2实现DAO 层 DAO 还有助于提升系统的可移植性。独立的DAO 层使得系统能在不同的数据之间轻易切换,底层的数据实现对于业务逻辑组件是透明的。数据移植时仅仅影响DAO 层,不同数据的切换不会影响业务逻辑组件,因此提高了系统的可复用性。 对于不同的持久层技术, Spring 的DAO 提供一个DAO 模板,将通用的操作放在模板里完成,而对于特定的操作,则通过回调接口完成。Spring 为Hibernate 提供的DAO 支持类是: HibernateDaoSupport。 4.3.3 DAO组件的定义 DAO 组件提供了各持久化对象的基本的CRUD 操作。而在DAO 接口里则对DAO组件包含的各种CRUD 方法提供了声明,但有一些IDE 工具也可以生成基本的CRUD方法。使用DAO 接口的原因是:避免业务逻辑组件与特定的DAO组件藕合。由于DAO 组件中的方法不是开始就设计出来的,其中的很多方法可能会随着业务逻辑的需求而增加,但以下几个方法是通用 的。 • get: 根据主键加载持久化实例。 • saveor update: 保存或更新持久化实例。 • remove: 删除持久化实例。 上面涉及了7个PO,这样我们必须设计7个对应的PODao 7个Dao必须继承BaseDao 这个BaseDao 有对接口的一些基本的CURD操作。7个Dao 如下。LinksDao ,BlogDao、FeedBackDao、ArticleDao、MessageDao、SortDao、PictureDao。这7个Dao 分别封装对自己的持久化对象的一些操作。 4.3.4 部署DAO 层 HibernateDaoSupport类只需要一个SessionFactory 属性,即可完成数据访问。SessionFactroy创建Session,而数据的CRUD操作都是有Session 完成,并将查询结果保存在一级缓存中,每次用户提交一次会话,可能需要Session完成一些数据的操作而实际的数据访问由模板类HibernateTemplate完成,该模板类提供了大量便捷的方法,简化了数据的访问。 第五章 数据设计 5.1定义(数据词典) 1、数据表名的定义使用:重点字_table;重点字可以是多个英文单词的组合,从组合的第二单词起首字母大写,字段命名是能表达字段内容的英文单词的组合,组合方式同表名重点字相同。 2、NN 表示not null 不填表可为空。 3、数据类型不使用固定数据的类型,标识大众类型,如字符串、字符、数字等。这样在更改数据库时需求的数据是可移植的 4、输写数据表在数据中的物理名称,可用自己熟悉的语言再定义表名称,方便沟通。 5、长度定义又数据类型决定:如字符串可选8000以下,数字可在50位之间,字符只允许一位。 6、输入方式表示数据的来源:生成表由程序或数据的索引自动生成,而不需人工录入;输入表示通过文本框等输入的数据;选择表单选框、复选框、下拉列表等通过选择输入的数据;自定获取是为外码的输入设定的,它由程序自动获取。 5.2主要表结构如下 1. 表[blogs]日志数据表 字段名 类型 说明 blogid Int(10) 日志的ID title text 日志标题 pubtime Int(11) 日志发表时间 authorid Int(8) 日志作者的UID replies Int(8) 日志的评论数 tbs Int(8) 日志的trackback数 views Int(8) 日志的查看次数 category Int(3) 日志所属的分类的ID content mediumtext 日志正文内容 property Int(1) 日志的属性 0 公开日志 1 锁定日志 2 隐藏日志 3 一般草稿 2.表[user]博友登陆信息表 字段名 类型 说明 userid Int(10) 博友ID nicheng Text 博友在博客里的称呼 username text 登陆时的用户名 password text 登陆密码 3.表[register]用户数据表 字段名 类型 说明 userid Int(8) 登陆时需要用到的用户名 username text 用户昵称 userpwd Int(8) 登陆密码 regtime Int(11) 注册时间 usergroup Int(2) 所属的用户组ID email text 用户email qq text Qq号 msn text 用户msn gender text 用户性别 第六章 主要功能的实现 6.1 登录控制: if(this.session().getAttribute("rand")!=null){//检验随机数是否为空 if(this.checkCode.equals(this.session().getAttribute("rand").toString())){//比较随机数 uservo=userbo.queryUserByINfo(uservo);//检验用户信息并将信息返回 if(uservo!=null){//看用户是否存在 this.setUserpurview(uservo.getPurviewId());//设置用户权限 this.session().setAttribute("user", uservo);//将用户信息放在session中 return SUCCESS;//返回用户主界面页面 }else{ return ERROR;返回到失败页面} }else{return ERROR; }}else{ return ERROR; } 6.2 Ajax 读取txt格式数据 function ajax_function(var1,var2){ var xmlHttp = null; //创建xmlhttprequest try { // Firefox, Opera 8.0+, Safari 对不同浏览器常见不同对象 xmlHttp=new XMLHttpRequest(); } catch (e) { try { // Internet Explorer xmlHttp=new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { xmlHttp=new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) { alert('Your browser does not support AJAX!'); return false; } } } xmlHttp.onreadystatechange=function() { if(xmlHttp.readyState == 4 && xmlHttp.status == 200) { var someDiv = document.getElementById('someDiv'); someDiv.innerHTML=xmlHttp.responseText; } } xmlHttp.open('GET','www/index.jsp?param1='+var1+'¶m2='+var2,true); xmlHttp.send(null); } 6.3 系统架构与数据的连接 由于我们开发时是利用MVC的设计模式,所以在此我们的数据连接是封存在M中的,即只要我们和M层连接上,就已经连接上数据了。 Hibernate使用数据和配置信息来为应用程序提供持久化服务(以及持久的对象)。我们只需在hibernate.cfg.xml中配置以下语句即可: sa jdbc:microsoft:sqlserver://localhost:1035;DatabaseName=webexamine org.hibernate.dialect.SQLServerDialect sqlserver2000 aaaaaaaa com.microsoft.jdbc.sqlserver.SQLServerDriver org.hibernate.dialect.HSQLDialect true 其实我们在这里配置了一个数据连接,以保证系统的正常运行,我们需要使用proxool连接池,我们经测试,分别用proxool、tomcat JNDI、Hibernate自带的连接池进行配置之后分别执行以上的10000条数据插入和读取,结果显示proxool的性能要优于tomcat JNDI,而Hibernate自带的就更不用提了,差很远。依次为:39265毫秒/10000条、26013毫秒/10000条、50029毫秒/10000条。 6.4数据的备份与还原 我们根据Mysql数据提供的backup(备份)命令及restore(恢复)命令,进行数据的备份与还原,在连接数据后,我们在需要备份和还原的地方加入以下语句: backup database to disk='备份文件名' restore database from disk='备份文件名' 然后发送给数据的管理对象进行数据还原与备份。 在知道了数据备份与还原的接口后,用JAVA进行具体的连接,这里采用JAVA直连的方 法,部分代码如下: try{ String user="sa";//连接sqlserver2000数据登陆名 String password="aaaaaaaa";//连接sqlserver2000数据密码 String sDBDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";//连接数据的驱动字符串 String connStr="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=webexamine";//注册连接字符串 Connection con=null; Class.forName( sDBDriver);//注册数据驱动 con = Driver Manager.getConnection(connStr ,user,password);//获取数据连接 String sql="backup database xncsims to disk='d:\\xncback.dat'";//备份数据,还原数据和着类似,只是将这句变为还原的语句 st=con.createStatement();//创建发送对象 rs=st.executeQuery(sql);//这里就是把你的SQL语句发到数据执行 }catch(SQLException e){ System.out.println(e.toString());} catch(Exception e){ System.out.println(e.toString());} 6.4部分效果预览图 主页 留言界面

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_36973999

你的鼓励是我对你的帮助的回报

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值