上一页 1 ··· 5 6 7 8 9 10 11 下一页
摘要: 一个重要概念:Socket与TCP、UDP之间的关系?SOCKET是API,而TCP/UPD是通信协议,即:SOCKET是TCP、UDP的实现方式,用SOCKET编程可以实现TCP、UDP的通信。 SOCKET就像一个管子,连接两端。而TCP、UDP就像管子中的东西。是液体还是气体。也就是传送的协议 语言表达的例子: 用SOCKET实现TCP(或者UDP)通信。 (相反,TCP或者UDP通信也可以不使用SOCKET实现)一、TCP协议(传输层)二、UDP协议(传输层)三、Http协议(应用层) a)关于端口 Server端:强制使用的标准端口 80;还可绑定更多其它端口,eg:800... 阅读全文
posted @ 2011-08-03 00:02 edisonfeng 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 一、VC程序调用VC编写的导出函数 a)定义 1)创建dll工程 2)在工程下添加源程序文件,并编写代码 源代码如下:1 _declspec(dllexport) int IntPlus(int a,int b)2 {3 return a+b;4 } 编译运行生成dll b)调用 1)创建普通的控制台工程并将要使用dll和lib文件拷贝至工程目录下 2)工程设置中,生命要使用的lib文件 3)编写源代码 1 #include<iostream> 2 using namespace std; 3 4 extern int IntPlus(int a,int b); 5 6 int m 阅读全文
posted @ 2011-08-02 10:23 edisonfeng 阅读(1195) 评论(1) 推荐(0) 编辑
摘要: 一、Server端 使用的indy控件:idtcpsrvr1: TIdTCPServer; a)设置默认端口1 begin2 Self.btn1.Enabled:=False;3 idtcpsrvr1.DefaultPort:=2001;4 idtcpsrvr1.Active:=True;5 end; b)对客户端连接事件响应1 procedure TForm1.idtcpsrvr1Connect(AThread: TIdPeerThread);2 var3 ipStr:string;4 begin5 ipStr:=AThread.Connection.Socket.Binding.PeerI 阅读全文
posted @ 2011-07-29 16:39 edisonfeng 阅读(9855) 评论(1) 推荐(0) 编辑
摘要: 一、触发器 触发器的两张虚拟表: Tickets表原始数据: TicketsOrders表原始数据: 1.插入触发器 创建: 1 create trigger ticketsOrdersInsert 2 on edisondb..ticketsOrders 3 after insert 4 as 5 begin 6 if (select t.currentAmount from tickets as t,inserted 7 where t.ticketid=inserted.ticketid)< 8 (select amount from inserted) 9 begin10 pri 阅读全文
posted @ 2011-07-11 00:28 edisonfeng 阅读(589) 评论(0) 推荐(0) 编辑
摘要: ---- 人们在使用SQL时往往会陷入一个误区,即太关注于所得的结果是否正确,而忽略了不同的实现方法之间可能存在的性能差异,这种性能差异在大型的或是复杂的数据库环境中(如联机事务处理OLTP或决策支持系统DSS)中表现得尤为明显。笔者在工作实践中发现,不良的SQL往往来自于不恰当的索引设计、不充份的连接条件和不可优化的where子句。在对它们进行适当的优化后,其运行速度有了明显地提高!下面我将从这三个方面分别进行总结:---- 为了更直观地说明问题,所有实例中的SQL运行时间均经过测试,不超过1秒的均表示为(< 1秒)。---- 测试环境------ 主机:HP LH II---- 主频 阅读全文
posted @ 2011-07-09 17:34 edisonfeng 阅读(349) 评论(0) 推荐(0) 编辑
摘要: 一、视图 本质上相当于一张“虚拟表”,可当作独立的一张表进行操作(增、删、改、查) 作用: a)可通过权限控制,只将“表中的少数列”暴露给数据库用户,而不让该用户直接操纵数据库中“实际表” b)可将常用的,较复杂的SQL在数据库中预先定义好,使得外部调用不用每次都编写复杂的SQL语句,直 接当作一张“虚拟表”来调用即可 Customers表中原始数据: Orders表中的原始数据: 创建“查找运费在40到60之间的客户信息”的视图: 1 use edisondb; 2 3 if object_id('FortyToSixtyFreightCusts')is not null 4 阅读全文
posted @ 2011-07-06 02:09 edisonfeng 阅读(484) 评论(0) 推荐(0) 编辑
摘要: 一、范式 1.第一范式:略 2.第二范式:不存在部分依赖 关键字为“组合关键字”时,不能有非关键字属性部分依赖于组合键 反例: (学号,科目号) 学分 分数 由于“科目号——>学分”,有部分依赖的情况,故不符合第二范式 3.第三范式:不存在传递依赖 不能有非主关键字传递依赖于主关键字 反例:(科目号) 科目名 学分 由于:“科目号——>科目名——>学分”,存在传递依赖的情况,故不符合第三范式 注:一般只要有“非主属性X——>非主属性Y”的情况就不满足第三范式二、主外键 1.添加主键 a)为StaffInfo表设置主键 主键设置完成: b)为Tasks表设置联合主键 同时 阅读全文
posted @ 2011-07-03 15:27 edisonfeng 阅读(931) 评论(0) 推荐(0) 编辑
摘要: 一、独立子查询 子查询独立于外部查询:可以把子查询代码独立出来单独运行 Customers表中原始数据如下: Orders表中原始数据如下: 1.独立单值子查询(独立标量子查询) 子查询返回的是单个值,而不是数据集1 use edisondb;2 select * 3 from customers as C4 where C.custid=(5 select O.custid6 from Orders as O7 where O.orderid=102488 ); 查询结果为:注:使用单值独立子查询时,一定要保证子查询返回的是单个值,而不是数据集; 若返回的是数据集,则会出现如下状况:1 us 阅读全文
posted @ 2011-07-02 18:23 edisonfeng 阅读(7278) 评论(0) 推荐(0) 编辑
摘要: 一、交叉联接(纯粹的联接查询) 只进行笛卡尔积操作 Customers表中的原始数据: Employees表中的原始数据: 进行交叉联接:1 use edisondb;2 select C.custid as '顾客号', E.empid as '售货员号'3 from customers as C 4 CROSS JOIN employees as E 5 ; 查询结果如下: 重要习惯:在使用联接查询时,尽可能使用“表别名.列名”的形式,这样可有效区分不同表中列名相同的列二、内联接=交叉联接+条件过滤1.简单内联接1 use edisondb;2 select 阅读全文
posted @ 2011-06-28 01:45 edisonfeng 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 一、SQL语句中各子句的执行顺序 1. from 2. where 3. group by 4. having 5. select 6. order by注:a)每一步操作都会返回一个数据集,下一个子句的操作对象是:上一个子句返回的数据集 b)由上述原理也可看出,select子句中自定义的别名,只能在order by子句中使用1 use edisondb;2 selectdistinct custid as'顾客号'3 from orders4 orderby'顾客号'desc5 ;输出结果为:二、group by与having子句的使用Orders表中的所有数 阅读全文
posted @ 2011-06-26 21:34 edisonfeng 阅读(366) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 下一页