程序开发
文章平均质量分 87
踏雪无痕大黄蜂
高度决定视野,角度改变观念,尺度把握人生。
展开
-
《微服务的那些事儿》学习思维导图大纲
最近集中学习了《微服务的那些事儿》,让我对微服务有了初步的了解,先将整理的思维导图大纲分享给大家。原创 2019-08-16 08:01:19 · 298 阅读 · 0 评论 -
用JAVA实现排序算法之二:直接插入排序
本篇介绍直接插入排序算法的JAVA实现。 直接插入排序算法的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。把a[i]插入到a[0],a[1],...,a[i-1]之中的具体实施过程为:先把...原创 2010-11-22 14:40:00 · 3115 阅读 · 0 评论 -
用JAVA实现排序算法之一:冒泡排序
最近一段时间在努力学习回顾JAVA方面的相关知识,这其中涉及到了几种常用的排序算法。笔者虽知用JAVA实现简单的排序算法早已不是什么新鲜事,类似的实现更是多如牛毛,而笔者在这里之所以老调重弹,最基本的出发点无非就是巩固已学知识,夯实基础罢了。所以,在这里,笔者将不厌其烦地使用JAVA实现几种常用的排序算法,包括冒泡排序、插入排序、选择排序、快速排序和希尔排序等。本篇文章介绍的是冒泡排序算法...原创 2010-11-22 14:33:00 · 2539 阅读 · 0 评论 -
值得研究的J2EE开源项目推荐
【特别说明】本篇文章来源于互联网,笔者读完后深有感触,在此特别转载出来与大家分享。【文章来源】http://www.searchsoa.com.cn/showcontent_38792.htm# 导读:笔者在学习J2EE的过程中发现了一些很有用,而且很值得学习的开源项目,在此推荐给大家。关键词:J2EE 开源项目 J2SE JBoss SOA EJB 这篇文章写在...转载 2011-03-17 19:43:00 · 6366 阅读 · 0 评论 -
SharpStreaming项目开发纪实:项目源码发布
很遗憾,由于近期忙着换工作,未能继续SharpStreaming项目的开发工作,而本人现所从事的新工作也逐渐远离了C#和流媒体技术。至此,SharpStreaming项目宣告流产了! 虽然,这是一件很不幸的事情,但秉着负责任的态度,笔者认为很有必要将SharpStreaming项目的源代码发布出来,即使笔者本人几乎没机会去做后续开发和更新,也可以寄希望于流媒体技术的编程爱好者和朋友去完成。 在这里,再次说明一下SharpStreaming项目的相关信息。该项所使用的开发环境为:Micro原创 2010-12-01 20:29:00 · 4081 阅读 · 11 评论 -
SharpStreaming项目开发纪实:客户端请求获取流的大致过程
本篇文章将简要介绍一个客户端是如何请求获取视频流的这么一个过程。对于服务器与客户端而言,要建立通信、要传输数据都少不了网络通信模块的支持。在本项目中,通过TCP协议来建立并维护服务器与客户端之间的连接,并传输通信指令,就是在前面系列文章中提到的RTSP协议和SDP协议,不过在本项目中采用的RTSP协议和SDP协议均是笔者在标准的RTSP协议和SDP协议的基础上做了适当的改造。通过UDP协议来进...原创 2010-09-26 19:44:00 · 2173 阅读 · 1 评论 -
SharpStreaming项目开发纪实:项目架构二次调整
本篇文章将介绍SharpStreaming项目架构的二次调整。在本系列的文章中,笔者曾经有一篇关于项目工程结构调整的文章,里面比较粗略地谈到了该项目大致划分。今天这里要谈的是该项目架构的二次调整,并将在下一篇文章中简要介绍一个客户端是如何请求并获得所需要的音视频数据流的。首先来看此次架构都做了哪些方面的调整,归结起来大概涉及到以下几个方面:1、从项目工程角度来看,对项目解决方案中的项目工程...原创 2010-09-26 19:39:00 · 2082 阅读 · 1 评论 -
利用DirectShow开发C#版的视频播放器
<br /> 今天这里要给各位朋友介绍的是本人利用业余时间使用C#编写的一个视频播放器,开发环境为Microsoft Visual Studio 2008/C#、Microsoft DirectX 9.0 SDK。要实现的功能也非常简单,打开视频文件并播放、播放、暂停、停止、全屏及播放进度条的拖动等。<br /> 在编写这个小实例的过程中参考了Microsoft DirectX 9.0 SDK中自带的Sample,同时使用了一个开源控件ColorSlider作为播放进度条。<br /> 在原创 2010-09-19 19:58:00 · 11075 阅读 · 10 评论 -
关于Windows下文件及文件夹扫描的简单实现(C#与C++)
关于文件及文件夹遍历的实现,这个话题对很多朋友来说早已经不是什么新鲜事,特别是Google/百度一下,相关资源更是多如牛毛。然而,笔者今天还是不厌其烦地重拾这个话题,究其主要原因是,这个话题对笔者而言却是相对新鲜的事情。因此,笔者花了一个晚上的功夫去编写这么一个有关于文件及文件夹扫描的小程序,当然这是针对Windows操作系统而言的。 首先,这个小程序包含两种语言实现,分别是C+...原创 2010-08-21 22:13:00 · 6822 阅读 · 1 评论 -
SharpStreaming项目开发纪实:构建基于RTSP协议的服务器及客户端应用(三)——客户端的业务代码实现
本篇文章简要介绍客户端有关RTSP的业务代码实现。原创 2010-08-19 21:11:00 · 5311 阅读 · 0 评论 -
VC中关于字符串处理问题小结
在Visual C++中,对字符串的处理是编程中经常遇到的问题。笔者在实际的工作中就经常性地碰到这类问题,且常常游走于CString、char及其相互之间转换的情形当中,因笔者在C++方面也是刚刚起步,对字符串的处理还真给笔者出了不少难题。不过,借助MSDN及相关网络资源,笔者对字符串的处理渐渐熟悉起来。现在此对VC中字符串的处理做一个阶段小结。 我们都知道,在C++中处理字符串可...原创 2010-06-14 20:56:00 · 2252 阅读 · 0 评论 -
使用Visual Basic 6.0开发程序的一些方法技巧收集之三:重启计算机
有时候,特别是像安装更新时,因为某些文件正在被使用,致使安装完更新时需要重启计算机才能完成。通常我们希望在检测到需要重启计算机时给用户一个提示并让用户选择是否立即重启计算机。在VB中,可以通过API来完成重启计算机的操作,方法有很多,这里介绍两种方法。1、利用命令行执行重启计算机操作,可以使用Shell函数来执行操作,具体如下所示:Shell "cmd.exe /c shutdown...原创 2009-12-19 19:26:00 · 926 阅读 · 0 评论 -
使用Visual Basic 6.0开发程序的一些方法技巧收集之二:进程操作
当我们使用Visual Basic 6.0 开发时,很多时候,我们需要对进程进行操作,这是Windows的API就帮了不少忙。请看看下面从网络收集并经过整理的一些方法:1、判断某一进程是否正在运行(通过任务管理器)' ********************************************************************' 函数名称:CheckApp...原创 2009-12-19 18:52:00 · 1249 阅读 · 0 评论 -
利用InstallShield12制作安装包之一:认识InstallShield12
进入公司以来,头一件工作就是接手了公司所有系统平台的打包安装工作,从做这件工作到现在已经有一段时间了,趁着晚上这点闲暇时间,总结一下。 记得刚开始听到InstallShield时,竟不知其为何物!后来缠着InstallShield过了差不多一周时间,才渐渐有了入门的感觉。而今,打包安装工作已经成为日常工作之一了,每天花上不到半个小时的时间即可完成多个安装包的制作及相应升级包的制作。...原创 2009-11-24 18:58:00 · 4906 阅读 · 4 评论 -
利用InstallShield12制作安装包之二:利用InstallScript脚本进行最基本的编程
在公司负责打包安装这份日常工作,同时还负责系统或平台的升级,鉴于公司产品在升级方面要求的特殊性(在B/S上升级C/S程序),本人经过将近一个月的努力,完成了公司产品从最原始的手动升级到半自动化的升级工作,这其中除了需要自己编写升级程序之外,同时还需要结合升级包做相应的工作。 在做安装包或升级包的过程中,很大一部分工作靠InstallScript脚本完成,在这里作简单的总结。 ...原创 2009-11-25 20:20:00 · 8870 阅读 · 1 评论 -
利用InstallShield12制作安装包之三:判断操作系统类型的多种方法
用InstallShield制作安装包时,有时候需要判断操作系统的类型(如Windows XP或者是Windows Vista等),本人通过上InstallShield的官方社区(http://community.flexerasoftware.com/)找到了一些解决办法,现将本人整理过的方法晒出来,与各位一起分享。方法一:采用注册表的方式进行判断,例程如下:NUMBER nOS,...原创 2009-11-25 21:25:00 · 4926 阅读 · 0 评论 -
利用InstallShield12制作安装包之四:隐藏准备安装界面
使用InstallShield12制作安装包、升级包的这段时间以来,一直希望能够在安装界面上做点工作,使得安装界面能够更加符合产品应用的实际需求,不过因为资料少及经验不足等原因,一直未能如愿。这两天,在打包过程中,终于发现了一点符合应用的小技巧,特别拿出来分享。 安装包、升级包的要求中有这么一条:需要将准备安装界面隐藏。在查看了InstallShield12的帮助文档及相关资料后...原创 2009-11-29 09:53:00 · 7057 阅读 · 22 评论 -
利用InstallShield12制作安装包之五:常见系统DLL/OCX控件信息汇集
利用InstallShield制作安装包/升级包时,常常需要对控件进行分类,如划分为系统需要注册的控件、系统不需要注册的控件等类别,这就对打包安装开发人员提出了较高的要求,需要自己去判断哪些文件需要注册而哪些文件不需要注册等等。在这里,结合本人在打包安装工作中遇到的问题,将一些常见的与系统相关的或第三方DLL/OCX控件信息整理了一下,与各位朋友分享,如果有错误之处,欢迎指出。 ...原创 2009-11-30 22:28:00 · 3914 阅读 · 2 评论 -
用JAVA实现排序算法之三:直接选择排序
本篇文章介绍直接选择排序算法的JAVA实现。 直接选择排序算法的基本思想是:n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果: ①初始状态:无序区为R[1..n],有序区为空。 ②第1趟排序 在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2....原创 2010-11-22 14:45:00 · 4015 阅读 · 0 评论 -
用JAVA实现排序算法之四:快速排序
本篇文章介绍快速排序算法的JAVA实现。 快速排序算法的基本思想是:设当前待排序的无序区为R[low..high],利用分治法可将快速排序的基本思想描述为: ①分解:在R[low..high]中任选一个记录作为基准(Pivot),以此基准将当前无序区划分为左、右两个较小的子区间R[low..pivotpos-1)和R[pivotpos+1..high],并使左边子区间中...原创 2010-11-22 14:49:00 · 1182 阅读 · 0 评论 -
用JAVA实现排序算法之五:希尔排序
本篇文章介绍希尔排序算法的JAVA实现。 希尔排序算法的基本思想是:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排...原创 2010-11-22 14:59:00 · 1435 阅读 · 1 评论 -
使用Visual Basic 6.0开发程序的一些方法技巧收集之一:注册表操作
前一段时间在负责开发公司产品的安装升级项目过程中,采用了Visual Basic 6.0开发了几个安装升级管理的辅助程序,其中使用了一些方法,这其中有些方法或技巧由网友提供,并经过本人作了修改,现采用分类的方式,依次将这些用到的方法或技巧贴出来,跟各位分享一下。 这篇文章讲述一些关于Visual Basic 6.0 操作注册表的方法或技巧。在Windows环境下,对注册表操作是较...原创 2009-12-19 18:14:00 · 1107 阅读 · 0 评论 -
SharpStreaming项目开发纪实:构建基于RTSP协议的服务器及客户端应用(二)——服务器的业务代码实现
本篇文章简要介绍服务器部分与RTSP协议实现相关的业务代码实现。 正如前一篇文章中所提到的那样,在代码上实现RTSP协议的简单应用还是相对简单的。在参考了live555开源项目中关于RTSP协议的实现代码之后,针对本项目,笔者将只对其中的几个重要会话状态OPTIONS、DESCRIBE、SETUP、PLAY、PAUSE、TEARDOWN作初步的代码实现,同时在本项目中将不考虑用户验证的问题。以下是关于上述会话状态和若干状态码的代码实现,其中的SETUP和PLAY方法还有待进一步完善,这些代码均原创 2010-08-15 16:16:00 · 4417 阅读 · 12 评论 -
SharpStreaming项目开发纪实:构建基于RTSP协议的服务器及客户端应用(一)——准备知识(RTSP协议)
本篇文章简要介绍RTSP协议的相关知识。 在RTSP协议文档中有这样的描述:实时流协议(RTSP)建立并控制一个或几个时间同步的连续流媒体。尽管连续媒体流与控制流有可能交叉,但RTSP 本身通常并不发送连续媒体流。换言之,RTSP 充当多媒体服务器的网络远程控制。 正因为如此,我们经常可以看到,RTSP协议的内容当中,在请求串中均带有会话状态,如SETUP、PLAY、PAUSE等,这就是RTSP的状态。虽然RTSP 中很多方法与状态无关,但下列方法在定义服务器流资源的分配与应用上起着重要原创 2010-08-02 23:02:00 · 3822 阅读 · 9 评论 -
使用C#和VS2008开发时的技巧和诀窍
<br /> 使用C#和VS2008编写程序有一定的时间了,为了尽可能地提高效率,也不时从网上搜索一些技巧,前不久从MSDN blog上看到一篇关于提到开发速度和效率的技巧文章,并尝试着这样去做,效果还真不错。<br /> 比如,通过使用GhostDoc,写C#代码时,在注释方面帮了不少忙,通过自动生成的注释,有些只需稍加修改即可。<br /> 又比如,属性自动完成功能,使用起来亦是非常地方便。<br /> 再比如,快捷键的使用,经常性地使用它并逐渐形成习惯,对编码速度着实有益。为此原创 2010-08-01 13:21:00 · 1785 阅读 · 0 评论 -
利用C#实现条形图、饼图的绘制(一)
近日,在编写一个统计程序的时候,希望通过条形图、饼图的形式形象地展现统计数据,为此,专门到sourceforge、codeproject等开源网站阅读查找有关资料,在这过程当中,阅读了一份源码,感觉很多东西都可以借鉴,只不过,其最多只支持10个条形图的显示,因为画布仅有200*200,每个条形图占了10,间距又占了10。对于这一点,笔者感觉不甚满意,于是决定在参考借鉴原有代码的基础上,做一原创 2010-05-10 23:14:00 · 10868 阅读 · 2 评论 -
C#WinForm国际化的简单实现
软件行业发展到今天,国际化问题一直都占据非常重要的位置,而且应该越来越被重视。对于开发人员而言,在编写程序之前,国际化问题是首先要考虑的一个问题,也许有时候这个问题已经在设计者的考虑范围之内,但终归要开发人员去做实现的。因此,如何实现国际化,是开发人员必须掌握的一项基本技能。 今天,这里要讲的就是,在利用C#进行WinForm开发时,国际化是怎么实现的。鉴于时间及篇幅关系,这里仅仅介原创 2010-04-29 23:25:00 · 9017 阅读 · 3 评论 -
使用Windows API实现两个进程间(含窗体)的通信
在Windows下的两个进程之间通信通常有多种实现方式,在.NET中,有如命名管道、消息队列、共享内存等实现方式,这篇文章要讲的是使用Windows的API来实现简单的进程间通信,这两个进程既可以都是基于C#开发,也可以都是基于C++开发,也可以是一个C#开发而另一个为C++开发,在C++开发方面,不需要额外调用Windows的API,而是可以直接使用相关方法即可。所以,这里重点要讲的就是原创 2010-04-21 22:34:00 · 7950 阅读 · 8 评论 -
利用DirectShow开发C#版的音频文件播放器(三)
前面曾经讲到了利用利用DirectShow开发C#版的MP3播放器,这篇文章是对前面两篇文章的补充与升华。首先,大家不难发现,这篇文章的标题已经修改为音频文件播放器,而不仅仅是针对MP3一种格式,支持多种音频格式,如*.wav; *.mpa; *.mp2; *.mp3; *.au; *.aif; *.aiff; *.snd; *.wma。其次是原有的MP3播放器都是使用了Quazt.dll文件原创 2010-03-22 13:39:00 · 3772 阅读 · 6 评论 -
利用DirectShow开发C#版的MP3播放器(二)
继上一次利用DirectShow编写了一个C#版的简单MP3播放器之后,这两天利用空余时间对其作了初步的完善,主要工作如下: 1、对原有的代码进行拆分,主要拆分成五个类,包括一个Form类FrmPlayer、一个播放核心类MediaPlayCore、一个媒体文件信息类MediaFileInfo、一个基础类Utils(包含各种公共的静态方法)、一个由多个枚举类型组成的枚举类。原创 2010-02-23 19:18:00 · 4242 阅读 · 3 评论 -
利用DirectShow开发C#版的MP3播放器(一)
因工作需要,近期开始接触DirectShow开发的相关技术,由于本人较青睐于C#,因此从网上找了一些关于.NET版的DirectShow库及实例,之后参考相关源码编写了一个用于测试的MP3播放器,源码主要参考了SourceForge(http://sourceforge.net/)上的一份关于DirectShow的源码实例。 这篇文章展示的是一个初步的不完善的MP3播放器Demo原创 2010-02-21 19:19:00 · 3033 阅读 · 0 评论 -
利用C#进行Socket通信编程之二:一个实例
利用晚上这点闲暇时间,写了一个Socket通信的小实例,该实例包含服务器端和客户端。其基本工作流程是:当服务器启动服务以后,客户端进行连接,如果连接成功,则用户可以在发送消息框中输入待发送的消息,然后点击“Send”按钮后向服务器发送消息,服务器在收到消息后立即向该客户端发送接收成功消息。其基本效果如图1.1和图1.2所示(注:下面两幅图于次日补上):图1.1 服务器运行效果图图1.2原创 2009-12-08 21:50:00 · 54107 阅读 · 35 评论 -
提高C#编程水平的50个要诀[转载]
一篇旧时的文章,看后觉得还可以,特别贴出来。提高C#编程水平的50个要点:1.总是用属性 (Property) 来代替可访问的数据成员2.在 readonly 和 const 之间,优先使用 readonly3.在 as 和 强制类型转换之间,优先使用 as 操作符4.使用条件属性 (Conditional Attributes) 来代替条件编译语句 #if5.总是为自定转载 2009-12-08 12:39:00 · 2456 阅读 · 0 评论 -
利用C#进行Socket通信编程之一
这段时间,开始接触服务器编程,因未做过这方面的相关工作,翻看了不少资料,又因本人相对较熟悉.NET(C#)编程,故采用了C#进行编写。在开始正式的服务器编程前,我是从Socket编程开始的。鄙人知道,关于Socket编程的相关资料(含实例)在网上多如牛毛,而我写这篇文章的初衷仅仅是为了记录自己的一些心得体会。 Socket提供了这样一个接口,可以方便地使程序员通过其来发送和接收网络上原创 2009-12-07 20:32:00 · 7886 阅读 · 3 评论 -
利用C#实现条形图、饼图的绘制(二)
继前一篇文章提到关于使用C#绘制条形图的思路之后,这里接着介绍绘制饼图的思路。本篇文章所涉及的源代码是在前面的基础上完成的,在本文的最后,将会提供本实例的完整代码下载地址,有兴趣的朋友可以下载。 言归正传,开始介绍饼图的绘制。其实,饼图的绘制跟条形图的绘制有颇多相似之处,其大体亦经过以下几个步骤: (1)创建Graphics对象实例; (2)设置图形及文本属性; (原创 2010-05-13 21:37:00 · 3934 阅读 · 7 评论 -
SharpStreaming项目开发纪实:概述
从本月开始,笔者将利用工作之余使用C#开发一套基于流媒体技术的服务器与客户端。之所以有这个想法,主要是基于以下几点原因: 1、半年多以前,笔者开始致力于流媒体技术的研究,并充分了解了开源流媒体服务器live555的架构及若干开发细节,同时在其基础上使用C++进行了二次开发。经过这半年多来的艰苦努力,笔者虽不敢说对流媒体技术有全面的了解或掌握,但亦对流媒体的基本流程有了相对清晰的认识,并能够将其运用于实际的项目开发当中。为此,编写一个小型项目,对进一步理清流媒体的开发思路应该大有裨益。 2原创 2010-07-09 20:20:00 · 2037 阅读 · 4 评论 -
SharpStreaming项目开发纪实:构建基本的服务器及客户端应用(二)——准备知识(事件编程)
本篇文章将简要介绍事件编程的相关基本知识。在开发程序时,事件对我们而言是经常接触的一个概念,比如鼠标事件、键盘事件等等。在这里要介绍的不仅仅是局限于一些系统定义的事件,更应该关注利用事件返回一些自定义数据。 在MSDN中对事件的定义是这样的:事件是对象发送的消息,以发信号通知操作的发生。操作可能是由用户交互(例如鼠标单击)引起的,也可能是由某些其他的程序逻辑触发的。引发事件的对象称为事件发送方。捕获事件并对其作出响应的对象叫做事件接收方。 显然,很多时候,我们需要事件生成事件数据,这时候原创 2010-07-12 20:19:00 · 1265 阅读 · 0 评论 -
SharpStreaming项目开发纪实:项目工程结构调整
<br /> 在前面的文章中提到了本项目的总体结构,将服务器和客户端划分为两个解决方案,同时服务器包括了UI处理(SharpStreamingServer)和核心类库(SharpStreamingServer.Core),客户端包括了UI处理(SharpStreamingClient)和核心类库(SharpStreamingClient.Core)。虽然这样的方案并无非常大的问题,但考虑到代码的重用性,服务器和客户端共用了其中一些代码,如日志记录、配置文件等,因此非常有必要将其中的一些公共代码提取出来原创 2010-08-01 11:12:00 · 1229 阅读 · 0 评论 -
SharpStreaming项目开发纪实:构建基本的服务器及客户端应用(八)——客户端初步实现
<br /> 本篇文章介绍客户端的初步实现。<br /> 客户端由两个项目工程组成,分别为SharpStreamingClient(用于客户端UI处理)和SharpStreamingClient.Core(用于客户端核心类处理)。<br /> 通过构建RtspClient类作为客户端的核心类,其功能包括连接服务器、断开连接、打开流、播放流、暂停流、停止流等。其中连接服务器与断开连接的代码片段如下:<br /> /// <summary> /// Connec原创 2010-07-27 20:11:00 · 1405 阅读 · 0 评论 -
SharpStreaming项目开发纪实:构建基本的服务器及客户端应用(七)——服务器界面实现
<br /> 本篇文章简要介绍服务器的界面设计及实现。<br /> 界面部分的设计一切从简,提供启动服务器、停止服务器、设置等操作,同时提供两个列表,一个用于展示服务器的运行信息,一个用于展示客户端会话的基本信息等。<br /> 服务器提供的设置功能用于允许的最大用户连接数、会话超时时间等,采用模态对话框来实现,通过TreeView控件来动态载入设置节点,通过用户控件来实现对应每一个节点的内容切换。<br /> 在代码实现方面,初始化ServerForm时,一并初始化Settings原创 2010-07-24 23:23:00 · 1279 阅读 · 1 评论