2013年2月19日
摘要: 首先从原理上解释一下采用Socket接口的网络通讯,这里以最常用的C/S模式作为范例,首先,服务端有一个进程(或多个进程)在指定的端口等待客户来连接,服务程序等待客户的连接信息,一旦连接上之后,就可以按设计的数据交换方法和格式进行数据传输。客户端在需要的时刻发出向服务端的连接请求。这里为了便于理解,提到了一些调用及其大致的功能。使用socket调用后,仅产生了一个可以使用的socket描述符,这时还不能进行通信,还要使用其他的调用,以使得socket所指的结构中使用的信息被填写完。在使用TCP协议时,一般服务端进程先使用socket调用得到一个描述符,然后使用bind调用将一个名字与socke 阅读全文
posted @ 2013-02-19 00:39 SamWang 阅读(1587) 评论(0) 推荐(1) 编辑
摘要: 最近浏览了几篇有关Socket发送消息的文章,发现大家对Socket Send方法理解有所偏差,现将自己在开发过程中对Socket的领悟写出来,以供大家参考。 (一)架构 基于TCP协议的Socket通信,架构类似于B/S架构,一个Socket通信服务器,多个Socket通信客户端。Socket通信服务器启动时,会建立一个侦听Socket,侦听Socket将侦听到的Socket连接传给接受Socket,然后由接受Socket完成接受、发送消息,当Socket存在异常时,断开连接。在实际开发项目中,往往要求Socket通信服务器能提供高效、稳定的服务,一般会用到以下技术:双工通信、完成端口、.. 阅读全文
posted @ 2013-02-19 00:02 SamWang 阅读(2607) 评论(1) 推荐(1) 编辑
  2013年2月18日
摘要: 1. 原始单据与实体之间的关系 可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体。这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。 〖例1〗:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表、社会关系表、工作简历表。这就是“一张原始单证对应多个实体”的典型例子。 2. 主键与外键 一般而言,一个实体不能既无主键又无外键。在E—R 图中, 处于叶子部位的实体, 可以定义主键,也可... 阅读全文
posted @ 2013-02-18 22:19 SamWang 阅读(768) 评论(1) 推荐(1) 编辑
摘要: 理解堆与栈对于理解.NET中的内存管理、垃圾回收、错误和异常、调试与日志有很大的帮助。垃圾回收的机制使程序员从复杂的内存管理中解脱出来,虽然绝大多数的C#程序并不需要程序员手动管理内存,但这并不代表程序员就无需了解分配的对象是如何被回收的,在一些特殊的场合仍需要程序员手动进行内存管理。在32位的处理器上,每个进程的虚拟内存为4GB,.NET会在这4GB的内存块中开辟出3块内存,分别作为栈、托管堆、和非托管堆堆(heap):堆是从下往上分配,所以已用的空间在自由空间下面,C#中所有引用类型的对象分配在托管堆上,托管堆在内存上是连续分配的,并且内存对象的释放受垃圾收集机制的管理,效率相对于栈来说要 阅读全文
posted @ 2013-02-18 21:59 SamWang 阅读(2416) 评论(1) 推荐(4) 编辑
摘要: .Net提供了接口,这个不同于Class或者Struct的类型定义。接口有些情况,看似和抽象类一样,因此有些人认为在.Net可以完全用接口来替换抽象类。其实不然,接口和抽象类各有长处和缺陷,因此往往在应用当中,两者要结合来使用,从而互补长短。 接下来先说说抽象类和接口的区别。 区别一,两者表达的概念不一样。抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于“是”的关系;而接口是定义行为规范,因此对于实现接口的子类来说,相对于接口来说,是“行为需要按照接口来完成”。这些听起来有些虚,举个例子。例如,狗是对于所有狗类动物的统称,京哈是狗,牧羊犬是狗,那么狗的一般特性.. 阅读全文
posted @ 2013-02-18 21:48 SamWang 阅读(617) 评论(0) 推荐(1) 编辑
  2013年2月17日
摘要: 现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP...为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各个环节,主要目的有两个,一个是进行知识的总结,另外一个是觉得网上很多学习资料的讲述方式让初学者不太容易理解;所以我决定写一篇扫盲性的博文,同时试着也与园内的朋友一起分享交流一下,希望对初学者有帮助。什么是敏捷开发?敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。怎么理解呢?首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指 阅读全文
posted @ 2013-02-17 19:57 SamWang 阅读(1604) 评论(4) 推荐(1) 编辑
  2013年2月16日
摘要: 在实际的项目中,我们可能随时面对各种不同的需求,它的各个方面的要素决定了我们所采用的开发模式。比如,它的复杂度如何?所有的需求是否足够清晰?开发人员对相关的业务是否足够了解?项目的工期是否合理?种种问题,不一而足。这也决定了我们可能面对不同的需求可能需要采用不同的开发模式。下面大概说几种。1. TDDTDD指的是Test Drive Development,很明显的意思是测试驱动开发,也就是说我们可以从测试的角度来检验整个项目。大概的流程是先针对每个功能点抽象出接口代码,然后编写单元测试代码,接下来实现接口,运行单元测试代码,循环此过程,直到整个单元测试都通过。这一点和敏捷开发有类似之处。TD 阅读全文
posted @ 2013-02-16 15:29 SamWang 阅读(10272) 评论(1) 推荐(5) 编辑
摘要: 一、SoftwareArchitecture篇这个领域没有什么"畅销书",可能读者中本来就是开发设计人员与项目经理占了多数,真正定位为架构师而且做的也是架构师工作的不多吧。1.《SoftwareArchitectBootcamp--软件架构师教程》架构师新手训练营,可惜常以Corba做例子。第2版国内还没有翻译,只好看完中文的第一版再去看电子版了。2.《Large-ScaleSoftwareArchitecture-APracticalGuideusingUML--大型软件体系结构:使用UML实践指南》如果看不惯上一本,可以改以这本作为入行指南。3.《TheArtofSof 阅读全文
posted @ 2013-02-16 15:27 SamWang 阅读(1786) 评论(3) 推荐(1) 编辑
  2012年12月10日
摘要: 标记类型译名或意义作 用备注文件标记●文件声明让浏览器知道这是 HTML 文件●开头提供文件整体资讯●标题定义文件标题,将显示于浏览顶端●本文设计文件格式及内文所在排版标记○说明标记为文件加上说明,但不被显示○段落标记为字、画、表格等之间留一空白行○换行标记令字、画、表格等显示于下一行○水平线插入一条水平线●居中令字、画、表格等显示于中间反对●预设格式令文件按照原始码的排列方式显示●区隔标记设定字、画、表格等的摆放位置●不折行令文字不因太长而绕行●建议折行预设折行部位字体标记●加重语气产生字体加粗 Bold 的效果●粗体标记产生字体加粗的效果●强调标记字体出现斜体效果●斜体标记字体出现斜体效果 阅读全文
posted @ 2012-12-10 10:06 SamWang 阅读(539) 评论(0) 推荐(0) 编辑
  2012年11月28日
摘要: 嵌套SELECT语句也叫子查询,一个 SELECT 语句的查询结果能够作为另一个语句的输入值。子查询不但能够出现在Where子句中,也能够出现在from子句中,作为一个临时表使用,也能够出现在select list中,作为一个字段值来返回。1、单行子查询 :单行子查询是指子查询的返回结果只有一行数据。当主查询语句的条件语句中引用子查询结果时可用单行比较符号(=, >, <, >=, <=, <>)来进行比较。例:select ename,deptno,salfrom empwhere deptno=(select deptno from dept where 阅读全文
posted @ 2012-11-28 10:33 SamWang 阅读(99272) 评论(0) 推荐(2) 编辑