一、什么是c/s和b/s
要想对“c/s”和“b/s”技术发展变化有所了解,首先必须搞清楚三个问题。
第一、什么是c/s结构。
c/s(client/server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到client端和server端来实现,降低了系统的通讯开销。目前大多数应用软件系
统都是client/server形式的两层结构,由于现在的软件应用系统正在向分布式的web应用发展,web和client/server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。
传统的c/s体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是client端还是server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,c/s结构的软件需要针对不同的操作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高,效率低。
第二、什么是b/s结构。
b/s(browser/server ......
前几天公司让我做C语言和MySQL数据库的交互操作,费了九牛二虎之力之后总算做出来了,今天特地把源代码贴出来供大家学习;如有人想要打包项目可以加我QQ260990509,注明技术交流,即可获得打包之后的项目!
#if defined(_WIN32) || defined(_WIN64) //为了支持windows平台上的编译
#include <windows.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include "mysql.h"
#include <winsock.h>
#include <iostream.h>
#include <string.h>
MYSQL mysql,*sock; //定义数据库连接的句柄,它被用于几乎所有的MySQL函数
MYSQL_RES *res; //查询结果集,结构类型
MYSQL_FIELD *fd ; //包含字段信息的结构
MYSQL_ROW row ; //存放一行查询结果的字符串数组
char qbuf[300]; //存放查询sql语句字符串
//定义数据库操作的宏,也可以不定义留着后面直接写进代码
#define MAX_STRING_LENGTH 256
//定义元素个数
#define MAX_ELEMENT_LENGTH ......
前几天公司让我做C语言和MySQL数据库的交互操作,费了九牛二虎之力之后总算做出来了,今天特地把源代码贴出来供大家学习;如有人想要打包项目可以加我QQ260990509,注明技术交流,即可获得打包之后的项目!
#if defined(_WIN32) || defined(_WIN64) //为了支持windows平台上的编译
#include <windows.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include "mysql.h"
#include <winsock.h>
#include <iostream.h>
#include <string.h>
MYSQL mysql,*sock; //定义数据库连接的句柄,它被用于几乎所有的MySQL函数
MYSQL_RES *res; //查询结果集,结构类型
MYSQL_FIELD *fd ; //包含字段信息的结构
MYSQL_ROW row ; //存放一行查询结果的字符串数组
char qbuf[300]; //存放查询sql语句字符串
//定义数据库操作的宏,也可以不定义留着后面直接写进代码
#define MAX_STRING_LENGTH 256
//定义元素个数
#define MAX_ELEMENT_LENGTH ......
在当今嵌入式“武林”中,流传着几本人人都想偷学几招的C语言的武功秘籍。这些秘籍都是旷世武学奇才耗尽毕生精力所著,部分秘籍流经数十载仍经久不衰,让它的无数实习者受益匪浅。 今天,承蒙武林大会所拖,在这公布这几本关于C的“经书”,让更多人实习之,练就一身绝世的嵌入式C语言好功夫。武功秘籍排行榜: 1. The C programming language 《C程序设计语言》 2. Pointers on C 《C和指针》 3. C traps and pitfalls 《C陷阱与缺陷》 4. Expert C Lanuage 《专家C编程》 5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs 《编程精粹--Microsoft 编写优质无错C程序秘诀》 6. Programming Embedded Systems in C and C++ 《嵌入式系统编程》 7.《C语言嵌入式系统编程修炼》 8.《高质量C++/C编程指南》林锐 转自:http://www.kuqin.com/shuping/20090215/35008.html ......
1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
我在这想看到几件事情:
1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)
2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。
3). 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。
4). 如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。
2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。
#define MIN(A,B) ((A) <= (B) (A) : ))
这个测试是为下面的目的而设的:
1). 标识#define在宏中应用的基本知识。这是很重要的,因为直到嵌入(inline)操作符变为标准C的一部分,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。
2). 三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的 ......
http://www.devdiv.net/blog/space-14481-do-blog-id-458.html
以下分析基于:
Developer Platform :S60 3rd Edition, Feature Pack 2 SDK
Operating System :Symbian OS v9.3
一,为什么要使用Client/Server架构
在Symibian OS中所有的异步服务都是Server通过C/S架构来实现的。Client是利用Server提供的特定服务的程序,Server接受来至Client的请求消息并同步或异步的处理他们。C/S架构有如下的优点:
1,可扩展性
2,有效性:相同的Server可以服务多个Client。
3,安全性:Server和Client存在于单独的进程中,并且通过消息传递进行通信。具有错误行为Client不会使他的Server崩溃(但是,Server可以通过客户线程的句柄来是具有错误行为的Client产生严重错误)。
4,异步性:在服务器完成请求的时候使用AO机制来通知他的Client。通过AO来挂起线程而不是轮询请求的状态,SymbianOS减少了处理该请求的处理器周期,从而节约了电源,这对于移动设备来说是非常重要的。
二,Client/Server架构的处理流程
Clinet和Server处于不同的进程中,他们无法访问彼此的虚地址空间,所以他们使用消息传递协议来通信,这种通信的渠道就称为会话。会话由内核创建,同时内核还 ......
GDB
是
GNU
开源组织发布的一个强大的
UNIX
下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像
VC
、
BCB
等
IDE
的调试,但如果你是在
UNIX
平台下做软件,你会发现
GDB
这个调试工具有比
VC
、
BCB
的图形化调试器更强大的功能。所谓
“
寸有所长,尺有所短
”
就是这个道理。
一般来说,
GDB
主要帮忙你完成下面四个方面的功能:
1
、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
2
、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
3
、当程序被停住时,可以检查此时你的程序中所发生的事。
4
、动态的改变你程序的执行环境。
从上面看来,
GDB
和一般的调试工具没有什么两样,基本上也是完成这些功能,不过在细节上,你会发现
GDB
这个调试工具的强大,大家可能比较习惯了图形化的调试工具,但有时候,命令行的调试工具却有着图形化工具所不能完成的功能。让我们一一看来。
一个调试示例
——————
源程序:
tst.c
&nbs ......
GDB
是
GNU
开源组织发布的一个强大的
UNIX
下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像
VC
、
BCB
等
IDE
的调试,但如果你是在
UNIX
平台下做软件,你会发现
GDB
这个调试工具有比
VC
、
BCB
的图形化调试器更强大的功能。所谓
“
寸有所长,尺有所短
”
就是这个道理。
一般来说,
GDB
主要帮忙你完成下面四个方面的功能:
1
、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
2
、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
3
、当程序被停住时,可以检查此时你的程序中所发生的事。
4
、动态的改变你程序的执行环境。
从上面看来,
GDB
和一般的调试工具没有什么两样,基本上也是完成这些功能,不过在细节上,你会发现
GDB
这个调试工具的强大,大家可能比较习惯了图形化的调试工具,但有时候,命令行的调试工具却有着图形化工具所不能完成的功能。让我们一一看来。
一个调试示例
——————
源程序:
tst.c
&nbs ......
GDB
是
GNU
开源组织发布的一个强大的
UNIX
下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像
VC
、
BCB
等
IDE
的调试,但如果你是在
UNIX
平台下做软件,你会发现
GDB
这个调试工具有比
VC
、
BCB
的图形化调试器更强大的功能。所谓
“
寸有所长,尺有所短
”
就是这个道理。
一般来说,
GDB
主要帮忙你完成下面四个方面的功能:
1
、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
2
、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
3
、当程序被停住时,可以检查此时你的程序中所发生的事。
4
、动态的改变你程序的执行环境。
从上面看来,
GDB
和一般的调试工具没有什么两样,基本上也是完成这些功能,不过在细节上,你会发现
GDB
这个调试工具的强大,大家可能比较习惯了图形化的调试工具,但有时候,命令行的调试工具却有着图形化工具所不能完成的功能。让我们一一看来。
一个调试示例
——————
源程序:
tst.c
&nbs ......