qt和php
1. 用QT怎么打开一个已经做好了的 php网页
方法不止一个
1、使用QWebView
QWebView *view = new QWebView();
view->load(QUrl("网址"));
view->show();
另外.pro文件中要加一行:
QT += webkit
2、使用WinAPI中的WinExec函数:
WinExec("explorer.exe 网址",SW_SHOW);
2. 使用QT做界面该怎么下手呀 我从来没用过QT 希望你帮忙指点一下,真的谢谢了
首先你要熟悉C++,如果你不熟悉C++,那么看Qt会异常的吃力。
我假设你已经熟悉C++与面向对象的知识了,用Qt做界面的话,可以使用代码编写界面,也可以使用Qt软件自带的designer直接把所需要的控件拖进去,然后可以通过编译器自动生成所相应的代码,生成的代码会把你所需要使用的指针传给你,这样你就可以操作界面上的控件了。
推荐阅读Qt自带的assistant,如果对阅读英语感觉吃力,可以买《精通Qt4编程》阅读,但是其实上面都是翻译的assistant文档。
Qt中文论坛不错,可以去学习很多基础知识与技巧:http://www.qtcn.org/bbs/index.php?m=bbs
3. 常见的文件格式有哪些
常见的文件格式有:
A
AAC:MPGE-4高级音频编码
ACC:苹果设备的专属音乐格式
ACE:Ace压缩档案格式
ACT:Microsoft office助手文件
AIF,AIFF:音频互交换文件,Silicon Graphic and Macintosh应用程序的声音格式
ANI:Windows系统中的动画光标
APK:AndroidPackage /Android(安卓)安装包,APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装
APS:开发环境使用的资源文件,若要修改资源需要修改3个文件,.aps文件.rc文件 Resource.h
ARC:LH ARC的压缩档案文件
ARJ:Robert Jung ARJ压缩包文件
ASD:Microsoft Word的自动保存文件;Microsoft高级流媒体格式(microsoft advanced streaming
format,ASF)的描述文件;可用NSREX打开 Velvet Studio例子文件
ASF:Microsoft高级流媒体格式文件
ASM:汇编语言源文件,Pro/E装配文件
ASP:动态网页文件;ProComm Plus安装与连接脚本文件;Astound介绍文件
AST:Astound多媒体文件;ClarisWorks“助手”文件
avi:Windows视频文件
Axx:ARJ压缩文件的分包序号文件,用于将一个大文件压至几个小的压缩包中(xx取01-99的数字)
A3L:Authorware 3.x库文件
A4L:Authorware 4.x库文件
A5L:Authorware 5.x库文件
A3M,A4M:Authorware Macintosh未打包文件
A3W,A4W,A5W:未打包的Authorware Windows文件
B
BAK:备份文件
BAS:Visual Basic Mole VB6模块文件
BAT:批处理文件
BDICT:网络输入法词库文件
BIN:二进制文件,其用途依系统或应用而定
BINHex:苹果的一种编码格式
BMP:Windows或OS/2位图文件
BOOK:Adobe FrameMaker Book文件
BOX:Lotus Notes的邮箱文件
BPL:Borlard Delph 4打包库
BPS:网络输入法皮肤文件
BSP:Quake图形文件
BUN:CakeWalk 声音捆绑文件(一种MIDI程序)
C
C:C代码文件
C0l:台风波形文件
CAB:Microsoft压缩档案文件
CAD:Softdek的Drafix CAD文件
CAM:Casio照相机格式
CAP:压缩音乐文件格式
CAS:逗号分开的ASCⅡ文件
CCB:Visual Basic动态按钮配置文件
CCH:Corel图表文件
CCO:CyberChat数据文件
CCT:Macromedia Director Shockwave投影
CDA:CD音频轨道
CDF:Microsoft频道定义格式文件
CDI:Philip的高密盘交互格式
CDM:Visual dBASE自定义数据模块文件
CDR:CorelDRAW绘图文件;原始音频CD数据文件
CDT:CorelDRAW模板
CDX:CorelDRAW压缩绘图文件;Microsoft Visual FoxPro索引文件
CFG:配置文件
CGI:公共网关接口脚本文件
CGM:计算机图形元文件
CH:OS/2配置文件
CHI:.CHM文件的一个索引,用来支持对应的.CHM文件中的搜索功能,要和同名的.CHM文件放到一起用
CHK:由Windows磁盘碎片整理器或磁盘扫描保存的文件碎片
CHM:HTML格式的帮助文档
CHP:Ventura Publisher章节文件
CHR:字符集(字体文件)
CHT:ChartViem文件;Harvard Graphics矢量文件
CIF:Adaptec CD 创建器 CD映像文件
CIL:Clip Gallery下载包
CIM:SimCity 2000文件
CIN:OS/2改变控制文件用于跟踪INI文件中的变化
CLASS:java类文件
CLP:Windows 剪贴板文件
CLL:Crick Software Clicker文件
CLS:Visual Basic类文件
CMD:Windows NT,OS/2的命令文件;DOS CD/M命令文件;dBASEⅡ程序文件
COM:操作系统中的二进制可执行文件,可执行文件分两种一种是后辍名为.COM另一种就是.EXE 了,.COM一般用于DOS。
CPI:Microsoft MS-DOS代码页信息文件
CPL:控制面板扩展名,Corel颜色板
CPP:C++代码文件
CPR:Corel提供说明书文件
CPT:Corel 照片-绘画图像
CSS:层叠样式表文档,配合HTML使用,单独专门定义样式表
CST:Macromedia Director Cast文件
CSV:Comma Separated Value逗号分隔值,通常都是纯文本文件
CTL:Visual Basic User Control VB6.0用户自定义控件
CTX:Visual Basic User Control Binary FileVB6.0用户自定义控件二进制缓存文件
CUR:Windows光标文件
D
DAT:数据流格式,DAT文件也是MPG格式的,是VCD刻录软件将符合VCD标准的MPEG-1文件自动转换生成的。也有数据文件的后缀名为.DAT,文件格式不确定,任何文件的后缀名都可以设为.DAT,因为读取数据不是从后缀名判断的,而是从文件格式判断
DB:数据库文件,Thumbs.db是缩略图缓存
DBF:dBASE文件,一种由Ashton-Tate创建的格式,可以被ACT!、Lipper、FoxPro、Arago、Wordtech、Xbase和类似数据库或与数据库有关产品识别;可用数据文件(能被Excel
97打开);Oracle 8.1.x表格空间文件
DBX:DataBearn图像;Microsoft Visual FoxPro表格文件
DCF:数码照相机统一记录格式,DCF 也有音频格式
DCT:Microsoft Visual FoxPro数据库容器
DCU:Delphi编译单元文件
DCX:Microsoft Visual FoxPro数据库容器;基于PCX的传真图像;宏
DIR:MacromediaDirector文件
DLF:一种INI配置文件格式的语言文件
DLL:动态链接库
DOC: Microsoft Word 2003文档文件
DOCX:Microsoft Word 2007文档文件
Perfect文档、Microsoft:Word文档;DisplayWrite文档
DOT:Microsoft Word文档模板
DPL:Borland Delph 3压缩库
DRV:驱动程序
DRW:Micrografx Designer/Draw;Pro/E绘画文件
DSF:Micrografx Designer VFX文件
DSG:DOOM保存的文件
DSM:Dynamic Studio音乐模块(MOD)文件
DSP:Microsoft Developer Studio工程文件
DSQ:Corel QUERY(查询)文件
DST:刺绣机图形文件
DSW:Microsoft Developer Studio工作区文件
DTA:World Bank(世界银行)的STARS数据文件
DTD:SGML文档类型定义(DTD)文件
DTED:地面高度数字数据(图形的数据格式)文件
DTF:Symantec Q&A相关的数据库数据文件
DTM:DigiTrakker模块文件
DUN:Microsoft拔号网络导出文件
DV:数字视频文件(MIME)
DWG:AutoCAD工程图文件;AutoCAD或Generic CADD老版本的绘图格式
DXR:Macromedia Director受保护(不可编辑)电影文件
E
E:易语言代码源文件
EC:易语言模块文件
EDA:Ensoniq ASR磁盘映像
EDD:元素定义文档(FrameMaker+SGML文档)
EDE:Ensoniq EPS磁盘映像
EDK:Ensoniq KT磁盘映像
EDQ:Ensoniq SQ1/SQ2/Ks32磁盘映像
EDS:Ensoniq SQ80磁盘映像
EDV:Ensoniq VFX-SD磁盘映像
EFA:Ensoniq ASR文件
EFE:Ensoniq EPS文件
EFK:Ensoniq KT文件
EFQ:Ensoniq SQ1/SQ2/Ks32文件
EFS:Ensoniq SQ80文件
EFV:Ensoniq VFX-SD文件
EMD:ABT扩展模块
EMF:Windows增强元文件
EML:Microsoft Outlook Express邮件消息(MIME RTC822)文件
EOT:是一种压缩字库,目的是解决在网页中嵌入特殊字体的难题,目前只有微软的IE浏览器支持
EXE:可执行文件(程序)
F
FAV:Microsoft Outlook导航条
FAX:传真类型图像
FCD:虚拟CD-ROM
FDF:Adobe Acrobat表单文档文件
FLA:Macromedia Flash动画源文件
FLAC:无损音频压缩编码
FLV:Flash视频文件
FNE:易语言的其中一种支持库文件,用于在易语言中装载和提供对应的命令和方法,易语言支持库还有FNR格式、NPK格式以及LPK文件包等。
FND:Microsoft Explorer保存的搜索文件(Find applet)
FNR:FNR文件是易语言的其中一种支持库文件,用于在易语言中装载和提供对应的命令和方法,但是与FNE格式支持库不同的是,FNR不带编辑信息,有运行支持代码的支持库。
FON:系统字体
FRM:Visual Basic Form File VB6.0窗体文件
FRT:Microsoft FoxPro报表文件
FRX:Visual Basic表单文本;Microsoft FoxPro报表文件
FXP:经Microsoft FoxPro编译的源文件
G
GDM:铃声、口哨声和声音板模块格式
GetRight:GetRight未完成的下载文件
GHO:Norton 克隆磁盘映像
GID:Windows 95全局索引文件(包括帮助状态)
GiF:动态图片文件
GL:动画格式
GRP:程序管理组
H
H:C/C++ Header 头文件
HEX:Macintosh BinHex2.0文件
HLP:帮助文件;Date CAD Windows帮助文件
HPP:C++程序头文件
HQX:Macintosh BinHex 4.0文件
HT:HyperTerminal(超级终端)
HTM,HTML:超文本文档
HTT:Microsoft超文本模板
HTX:扩展HTML模板
I
ICO:Windows图标
IDX:Microsoft FoxPro相关数据库索引文件;Symantec Q&A相关数据库索引文件;Microsoft Outlook
Express文件
IMG:GEM映像
INC:Include File 引用文件,ASP中也会用到
INF:Windows操作系统下用来描述设备或文件等数据信息的文件
INI:配置文件,ini文件格式适合程序记录一些基本的配置设置
INP:Oracle 3.0版或早期版本的表单源代码
INRS:INRS远程通信声频
INS:InstallShield安装脚本;X-Internet签字文件;Ensoniq EPS字簇设备;Cell/ⅡMAC/PC抽样设备
INT:中间代码,当一个源程序经过语法检查后编译产生一个可执行代码
IOF:Findit文档
IQY:Microsoft Internet查询文件
ISO:根据ISD 9660有关CD-ROM文件系统标准列出CD-ROM上的文件
ISP:X-Internet签字文件
ISS:Inno Setup 项目脚本文件 (Inno Setup 是一种安装包生成工具)
IST:数字跟踪设备文件
ISU:InstallShield卸装脚本
IT:脉冲跟踪系统音乐模块(MOD)文件
ITI:脉冲跟踪系统设备
ITS:脉冲跟踪系统抽样,Internet文档位置
IV:Open Inventor中使用的文件格式
IVD:超过20/20微观数据维数或变量等级文件
IVP:超过20/20的用户子集配置文件
IVT:超过20/20表或集合数据文件
IVX:超过20/20微数据目录文件
IW:Idlewild屏幕保护程序
IWC:Install Watch文档
J
J62:Ricoh照相机格式
JAR:Java档案文件(一种用于applet和相关文件的压缩文件)
JAVA:Java源文件
JAVA:Java源文件
JFF,JFIF,JIF:JPEG文件
JPE,JPEG,JPG:JPEG图形文件
JS:javascript源文件
JSP:HTML网页,其中包含有对一个Java servlet的参考
K
KAR:卡拉OK MIDI文件(文本+MIDI)
KEY:授权文件
L
LAB:Visual dBASE标签文件
LBT,LBX:Microsoft FoxPro标签文件
LDB:Microsoft Access加锁文件
LHA:LZH更换文件后缀
LIB:Windows系统中的库文件,分为两种,静态库与动态库
LIC:License 用户许可证书文件
LNK:快捷方式文件
LOG:日志文件
LPK:LPK文件是易语言的其中一种支持库安装包,包含".FNE"、".FNR"、相关例程和文档的全部或部分文件。用于在易语言中装载和提供对应的命令和方法
LST:列表文件 /MASM Listing
LUA:LUA脚本语言文件
LZH:LH ARC压缩档案
M
M1V:MPEG相关文件(MIME"mpeg"类型)
M3D:Corel Motion 3D动画文件
M3U:MPEG URL(MIME声音文件)
MAM:Microsoft Access宏
MAQ:Microsoft Access查询文件
MAR:Microsoft Access报表文件
MBX:Microsoft Outlook保存email格式;Eudora邮箱
MCW:Microsoft Word的Macintosh文档
MDB:Microsoft Access数据库
MDN:Microsoft Access空数据库模板
MDW:Microsoft Access工作组文件
MID:MIDI音乐
MKV:视频文件
MMM:Microsoft多媒体电影
MOV:QuickTime for Windows视频文件
MP2:第二层MPEG音频文件
MP3:第三层MPEG音频文件
MP4:视频或音频文件
MPA:MPEG相关文件,MIME“mpeg类型”
MPE,MPEG,MPG:MPEG动画文件
MPP:Microsoft工程文件;CAD绘图文件格式
MPR:Microsoft FoxPro菜单(已编译)
MSI:Windows 安装器包
MSN:Microsoft 网络文档;Descent Mission文件
N
NPK:NPK属于易语言COM包装支持库,该支持库是引用COM包装库生成的,例如WebBrowser、Windows媒体播放器。该扩展名格式支持库可用记事本打开。
O
OBD:Microsoft Office活页夹
OBJ:对象文件
OBZ:Microsoft Office活页夹向导
OCX:Microsoft对象链接与嵌入定制控件
ODS:Microsoft Outlook Express邮箱文件
OFT:Microsoft Outlook模板
OPX:OPL扩展DLL(动态链接库)
OSS:Microsoft Office查找文件
OST:Microsoft Exchange / Outlook 离线文件
P
PAL:压缩文件
PART:Go!Zilla部分下载文件
PAS:Pascal源代码
PCS:PICS动画文件
PDF:Adobe Acrobat
可导出文档格式文件(可用Web浏览器显示);Microsoft系统管理服务器包定义文件;NetWare打印机定义文件
PEM:OpenSSL 使用 PEM 文件格式存储证书和密钥。PEM 实质上是 Base64 编码的二进制内容,再加上开始和结束行BEGIN CERTIFICATE、ENDCERTIFICATE,在这些标记外面可以有额外的信息,如编码内容的文字表示。文件是 ASCII 的,可以用任何文本编辑程序打开
PHP,PHP3:包含有PHP脚本的HTML网页
PHTML:包含有PHP脚本的HTML网页;由Perl分析解释的HTML
PM5:Pagemaker 5.0文件
PM6:Pagemaker 6.0文件
PNG:可移植图像文件
PPS:Microsoft Powerpoint幻灯片放映
PPT:Microsoft Powerpoint演示文稿
PRF:Windows系统文件,Macromedia导演设置文件
PSD:Adobe photoshop位图文件
PSM:Protracker Studio模型格式;Epic游戏的源数据文件
PST:Microsoft Outlook个人文件夹文件
PWL:Windows 95口令列表文件
Q
QIF:QuickTime相关图像(MIME);Quicken导入文件
QPYD:QQ拼音输入法词库文件
QPYS:QQ拼音输入法皮肤文件
QT,QTM:QuickTime电影
QTI,QTIF:QuickTime相关图像
QTP:QuickTime优先文件
QTS:Mac PICT图像文件;QuickTime相关图像
QTX:QuickTime相关图像
R
RA:RealAudio声音文件
RAM:RealAudio元文件
RAR:Windows RAR压缩文件
RC:Resource Script开发环境使用的资源文件,若要修改资源需要修改3个文件,.aps文件.rc文件 Resource.h
REC:录音机宏;RapidComm声音文件
REG:注册表文件
REP:Visual dBASE报表文件
RES:Microsoft Visual Studio资源文件
RM:RealAudio视频文件
RMF:Rich Map格式(3D游戏编辑器使用它来保存图)
ROM:基于盒式磁带的家庭游戏仿真器文件(来自Atari 2600、Colecovision、Sega、Nintendo等盒式磁带里的ROM完全拷贝,在两个仿真器之间不可互修改)
RTF:Rich Text Format 富文本格式(也有称为多文本格式)
Rxx:多卷档案上的RAR压缩文件(xx=1~99间的一个数字)
S
SAV:游戏保存文件
SB:原始带符号字节(8位)数据
SBK:Creative Labs的Soundfont 1.0 Bank文件;(Soundb laster)/EMU SonndFont v1.x Bank文件
SBL:Shockwave Flash对象文件
SCC:Microsoft SourceSafe Status 在VB6.0中是管理记录文件
SCF:Windows Explorer命令文件
SCH:Microsoft Schele+1
SCP:拨号网络脚本文件
SCR:Windows屏幕保护;传真图像;脚本文件
SFX:RAR自解压档案
SHTML:含有服务器端包括(SSI)的HTML文件
SKN:皮肤文件,QQ拼音输入法的皮肤源文件也是.skn
SLN:Microsoft Visual Studio Solution VS开发环境的解决方案文件
SPL:Shockwave Flash对象;DigiTrakker抽样
sql:Informix SQL查询;通常被数据库产品用于SQL查询(脚本、文本、二进制)的文件扩展名
STF:Microsoft 安装文件
STM:.shtml的短后缀形式,含有一个服务端包括(SSI)的HTML文件;Scream Tracker V2音乐模块(MOD)文件
STR:屏幕保护文件
SVG:一种用XML定义的语言,用来描述二维矢量及矢量/栅格图形
SWA:在Macromedia导演文件(MP3文件)中的Shockwave声音文件
SWF:Flash动画文件
SYS:系统文件
T
T64:Commodore 64仿真器磁带映像文件
TDF:Text Design File 是一个文字格式,或者是一个字幕文件格式
THEME:Windows 95桌面主题文件
TIF,TIFF:标签图像文件格式(TIFF)位图
TLB:类似于.ocx,是一种ActiveX文件
TMP:Windows临时文件
TORRENT:BT种子文件
TRM:终端文件
TTF:TrueTypeFont是Apple公司和Microsoft公司共同推出的字体文件格式
TXT:Windows文本文档
TZ:老的压缩格式文件
V
VBA:VBase文件
VBP:Microsoft Visual Basic工程文件
VBW:Microsoft Visual Basic工作区文件
VBX:Microsoft Visual Basic用户定制控件
VCXPROJ:VC++ Project / C++ 工程文件
VCXPROJ.FILTERS:VC++ Project Filters File / C++项目文件虚拟目录
VCXPROJ.USER:Visual Studio Project User Options file / 项目用户配置
VOB:DVD视频文件
VQE,VQL:Yamaha Sound-VQ定位器文件
VQF:Yamaha Sound-VQ文件(可能出现标准)
VRF:Oracle 7配置文件
VSL:下载列表文件(GetRight)
W
WAB:Microsoft Outlook文件
WAD:包含有视频、玩家水平和其他信息的DOOM游戏的大文件
WAL:Quake 2正文文件
WAV:Windows波形声形
WBK:Microsoft Word备份文件
WFM:Visual dBASE Windows表单
WFN:在CorelDRAW中使用的符号
WIZ:Microsoft Word向导
WOFF:Web Open Font Format Web开放字体格式,是一种网页所采用的字体格式标准
WRL:虚拟现实模型
WWL:Microsoft Word内插器文件
X
XLK:Microsoft Excel备份
XLL:Microsoft Excel内插器文件
XLM:Microsoft Excel宏
XLS:Microsoft Excel 2003电子表格
XLSB:Microsoft Excel 二进制电子表格
XLSX:Microsoft Excel 2007电子表格
XLT:Microsoft Excel模板
XLV:Microsoft Excel VBA模块
XLW:Microsoft Excel工作簿/工作区
XML:可扩展标记语言
Z
ZAP:Windows软件安装配置文件
zip:Windows RAR 压缩文件
000-999:用于为老版本(或备份)文件编号(比如:被安装程序改变的CONFIG.SYS文件);又可用于为小范围的PC应用程序的多个用户相关数据文件编号
12M:Lotus 1-2-3 97 SmartMaster文件
123:Lotus 1-2-3 97文件
2D:VersaCAD的2维绘画文件
2GR,3GR:在Windows之下的VGA图形驱动程序/配置文件
386:在386或更高级处理器上使用的文件
3D:VersaCAD的3维绘画文件
3DM:3D NURBS建模器,Rhino
3DS:3D Studio(DOS下)格式文件
4GE:Informix 4GL编译后代码
4GL:Informix 4GL源代码
4. QT好像只能和c++结合应用是嘛能不能和php结合
这个啊。。。QT是基于c++的图形开发工具。。不知道能不能和PHP喔
5. Qt+MySQL和Html+CSS+Javascript+Apache+PHP+MySQL 哪种开发难度低一点
个人建议用qt,会Python的话可以用pyqt5,走前端要学的东西是不是太多了?如果只是开发界面的话,用csharp也比较简单。
6. qt里的text browser 控件,我想每隔一段时间输出一段文本,怎么实现每段文本后的自动换行
编写读取数据的程序:
建立一个文本文件,命名为english.dat,加入源代码如下:
<?php
$filename = ’english.dat’; //数据文件名
$refresh = 900; //更新周期(以秒为单位,可根据需要自行调整)
$data = file($filename); //将数据文件装入一个数组
$num_lines = count($data); //数据文件行数,也就是记录条数 mt_srand(floor(time() / $refresh));
$id = mt_rand(0, $num_lines - 1); //随机选择一条记录号
$content = chop($data[$id]); //根据记录号选择相应的数据,并截去最后的换行符
echo "document.write("$content");"; //用javascript形式输出数据
?>
将english.dat和english.php存盘,上传至服务器的同一个目录下。
最后一道工序就是让你的网页调用这个php程序来显示内容了。因为php运行的结果是以javascript形式输出的,我们只要把这段php当成一段javascrupt来调用即可,方法是:用记事本或网页编辑软件打开你要修改的html文件,在你想让动态内容显示的位置加入以下代码:
<script language="javascript" src="english.php"></script>
注意,如果你修改的html文件和english.php不在一个目录下,要在src="..."里注明english.php的相对路径。
把这个修改后的html文件上传至服务器,在浏览器中打开。如果你每一步做得都正确,应该就可以看到数据文件中的内容显示出来了!过15分钟刷新一下页面看看,是不是显示的内容变化了?而你并没有为更新这些内容做什么额外的劳动,php程序为你做了。
7. 请问,C,C++,PHP, VB,这些语言的区别,可以简明扼要说一下么
这些都是编写应用程序的语言
C在
C/C++/PHP/JAVA/C#/J#/QT等语言中有着"祖先"的地位,他们的语法结构也不仅相同,最大的不同是C是面向过程的编程语言,而C++/C#/JAVA等是面向对象的
(PHP我不太了解)
你给这4样当中,C/C++通常用来做底层开发
C++也可以用来做桌面应用程序(如VC++)
,PHP用来做WEB应用程序(也就是网站),VB用来做桌面应用程序(VB.NET桌面\WEB都可以)
8. 求一点PHP对TXT文件和文章的操作教程
PHP教程.安装PHP
安装PHP
本章将按下列步骤编译安装以下软件:
* Apache v.1.3.4 -- 世界上最流行的Web服务器。
* gcc v.2.8.1 -- 来源于GNU的C和C++编译器。
* MySQL v.3.22.16b-gamma -- 世界范围内许多人使用的数据库。
* PHP v.3.0.11 -- 本书所主要介绍的软件。从http://www.php.net(或此站点的镜象站点)直接下载可以得到较新的版本。本章的其它步骤仍然适用。
* expact -- 用于读取和处理XML文档的函数库。
* phplib -- 用于进行会话管理的PHP函数库。
* libiodbc -- 主要用于存取在非UNIX计算机中数据库的ODBC函数库。
* MyODBC -- PHP、iODBC和MySQL之间的函数库。
即便如此,本章也并不是介绍编译应用程序所需要的那些指令,而只是简单的进行描述。总之,本书的重点是介绍PHP语言,而不是c语言。每一个应用程序的编译对我来说都十分清楚,希望每个读者也能没有困难的进行编译。假如你确实碰到了一些问题,可以在某个IRC频道中有礼貌的询问,或者可以尝试使用新闻组(可以从http://www.dejanews.com访问)得到帮助来解决问题。然而,最好的帮助还是来自http://www.php.net 上的PHP邮件列表。
在开始编译过程之前,让我们先讨论一下如何从错误中恢复。在得到有关错误的帮助以后,可以采用以下的命令重新初始化源码目录:
* rm config.cache--几乎所有的linux应用程序都使用configure命令来检查自己的系统,以寻找有关如何剪裁编译过程的信息。检查的结果将存贮在一个名为config.cache的文件中。如果移走此文件,将迫使配置程序从头开始重新检查系统。
* make distclean--所有的用C语言编写的Linux应用程序都是用make程序编译的。make程序会寻找每一个源文件,以确认是需要编译还是已经编译过的。make distclean命令可以“重置”所有的源程序,以便能重新编译它们。
* make clean--有的应用程序不支持make distclean命令,而用make clean命令来代替。make clean命令“重置”所有的源程序,以便能重新编译它们。
即使要安装的一些应用程序不支持以上的每个命令,但是试一下这些命令也不会有什么害处。
注意:Red Hat v5.2使用glibc库。如果用户从互联网中下载或更新在本章中安装的程序时,必须知道glibc的信息。使用者可以使用rpm -q glibc命令来查出已经安装的glibc库的版本号。在作者的系统中,使用rpm -q glibc命令将显示glibc-2.0.7.29。
2.1 基本概念
也许读者以前从没有编译过Linux应用程序,在这里介绍一些基本概念,以便在出现问题时有可能诊断出问题所在。
tar
tar,即tape archiver,它可以把几个文件组合成一个文件,并可以选择是否进行压缩。这个命令过去通常用来进行备份,以便使数据存储在磁带中。当tar文件被压缩时,它们有一个.gz的后缀;当tar文件没有压缩时,它们有一个.tar的后缀。
gcc
gcc 是GNU的C编译器。它的工作是把人可以看懂的源代码文件编译成机器可以读懂的目标文件。C源文件通常有.c的后缀名,目标文件通常有.o的后缀名。如果编译工作不能正常进行,就是碰到了一个编译期的错误,或者说:语法错误。在大多数情况下,不彻底的编译通常是编译器找不到一个或几个包含文件而产生的。包含文件都有一个.h的扩展名,通常用来定义不同的系统信息,以及将多个不同的.c文件所共有的信息收集在一起。
make
make是一个常用的工具程序,是用来帮助进行编译的。它的工作是用来只编译那些还没有编译过的源文件。编译.c文件将生成一个.o文件,如果.c文件比.o文件更新,也就是说到上次编译之前,源文件被编辑过,那么make将会重新编译.c文件。make指令一般是寻找一个Makefile文件,在这个文件中包含有一个或多个能执行的目标,例如,make clean会告诉make执行清除目标。
ld
ld是GNU的链接程序。它的工作是把所有的目标文件和库链接起来,创建一个单一的可执行文件。幸运的是,基本上不用手工运行这个程序,因为Makefile将会考虑到所有的编译细节。
ldconfig
ldconfig会为在多个库目录(在/etc/ld.so.conf中指定)中寻找共享库。共享库常被多个的应用程序使用,它们的文件名中的某个地方有.so,例如,libqt.so.1.42是一个共享库。在编译完毕之后,有可能需要在/etc/ld.so.conf文件中增加一个目录,并且运行ldconfig -v命令。
./configure
configure将会在计算机中寻找一些关键信息,例如,安装的是哪一种C编译器,包含文件在哪里等等。然后,configure将会按照所用的计算机配置重新修改Makefile文件。应该使用./configure来在当前目录下运行程序,以避免偶然运行$PATH环境变量中的目录下的其他程序。
符号连接
符号连接允许使用者可以为一个已经现有的文件指定另一个不同的名字。例如,使用者有可能想把一个名为libqt.so.1.42的文件称为libqt.so.1。符号连接基本上可以使用户把一个文件复制到另一个不同的目录下面,但事实上并没有真正复制此文件。第二个文件实例只是简单地指向第一个文件实例。使用符号连接至少可以有两点好处,第一点是符号连接可以节省硬盘空间,少到只有16字节;第二点有一点微妙,让我们先看一下一个名为libqt.so.1且指向libqt.so.1.42的符号连接。如果需要升级到libqt.so.1.88,该怎么办呢?用户只要简单地改变符号连接,使libqt.so.1指向libqt.so.1.88,而非libqt.so.1.42即可。这意味着涉及到libqt.so.1的程序将自动地使用这个库的新版本。按照惯例,符号连接常用于完整的发布版本号。换句话说,libqt.so.1.88和libqt.so.2.32应该有两个不同的动态连接(分别为libqt.so.1和libqt.so.2)。
2.2 编译前的准备工作
以下步骤将为系统做好编译前的准备工作。
1. mkdir /usr/local/src -- 我选用/usr/local树作为所安装应用程序的根目录。其他人可能选用/usr/opt、/opt或/var目录。为了更方便的按照本章中的指令操作,请选用/usr/local目录作为根目录。当编译完成以后,用户可以把这些文件复制到不同的目录中。
注意:为了能完成本章中的其它步骤,使用者必须具备root权限。
2. cd /usr/local/src--转到源文件目录下。
3. 下载以下文件(可以从http://www.mtolive.com/phpbook站点下载),或者从本书随机附带的光盘中,复制这些文件到/usr/local/src目录下:
. apache_1.3.4.tar.gz
. gcc-2.8.1.tar.gz
. mysql-3.22.16b-gamma.tar.gz
. php-3.0.11.tar.gz
. expat.tar.gz
. phplib.tar.gz
. libiodb-2.50.3
. myodbc-2.50.24-src
4. 使用tar命令解压缩以上文件。tar的x选项为解开选项,v选项将在屏幕上显示文档中解出来的文件名,z选项为解压缩选项,f选项用于在命令行中指定.tar文件名。
tar xvzf apache_1.3.4.tar.gz
tar xvzf gcc-2.8.1.tar.gz
tar xvzf mysql-3.22.16b-gamma.tar.gz
tar xvzf php-3.0.11.tar.gz
tar xvzf expat.tar.gz
tar xvzf phplib.tar.gz
5. gcc -v
确定系统中现有gcc的版本。如果你的系统不是v2.7.2.3,在下面的操作步骤中采用你的gcc版本号替换v.2.7.2.3。
6. cp `which gcc` /usr/bin/gcc-2.7.2.3
如果需要,把现有的gcc备份,以便以后使用。Linux的另一个优点是可以很容易在目录下存储一个程序的多个版本。
7. httpd -v
确定系统中的Apache的版本号。如果你的系统中的Apache不是v1.3.4,在下面的操作步骤中使用你的版本号替换v1.3.4。
8. mv `which httpd` /usr/sbin/httpd-1.3.4
如果需要,把现有的Apache备份,以便以后使用。
2.3 编译C编译器gcc
使用者应该安装、编译程序的第一个程序就是C编译器。随Red Hat v5.2附带的C编译器是gcc v2.7.2.3,由于它的版本比较低,以至于不能正确的编译PHP。然而gcc v.2.7.3可以用来编译版本较高的gcc v2.8.1。
编译新版本的gcc需要执行:
1. cd /usr/local/src/gcc-2.8.1
转到gcc的顶级目录下。
2. ./configure -prefix=/usr/local/gcc
运行配置程序,强制安装程序在后面的安装过程中使用/usr/local/gcc作为gcc的安装目录。
3. make bootstrap LANGUAGES="c c++" BOOT_CFLAGS="-g -02"
编译新的C和C++编译器。
4. make install LANGUAGES="c c++" BOOT_CFLAGS="-g -02"
安装新的C和C++编译器。
5. mv /usr/local/gcc/bin/gcc /usr/local/gcc/bin/gcc-2.8.1
把新的gcc编译器重新命名,使它的名字中含有版本号。
6. ln -s \
/usr/local/gcc/bin/gcc-2.8.1 \
/usr/bin/gcc-
给新编译过的gcc可执行文件创建一个符号连接/usr/bin/gcc。
7. gcc -v
显示gcc的版本号。如果编译和安装都正常的话,将显示v.2.8.1。
2.3 编译MySQL
现在来编译MySQL。在编译工作完成之后,就可以使用MySQL的应用程序来测试安装。
1. cd /usr/src/mysql-3.22.16a-gamma
转到MySQL的顶级目录下。
2. ./configure --prefix=/usr/local/mysql
运行配置程序,强制安装程序在后面的安装过程中使用/usr/local/mysql作为MySQL的安装目录。
3. make
编译MySQL。
4. make install
安装MySQL。
5. echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
将MySQL库所在的目录添加进配置文件中。这样,当Linux启动或者执行ldconfig命令时,将会在该配置文件中的目录里搜索库文件。
6. ldconfig -v | grep libmysqlclient
ldconfig命令能读取/etc/ld.so.conf文件中列出的目录,并对在那些目录里找到的库文件进行缓冲。grep命令在ldconfig命令的大量输出结果中查找MySQL库文件,并限定文本以类似下面方式进行显示:
libmysqlclient.so.6 => libmysqlclient.so.6.0.0.
7. echo "/usr/local/mysql/bin/safe_mysqld > /dev/null &" >> /etc/rc.d/rc.local
将MySQL启动指令添加到/etc/rc.d/rc.local文件中,这样每次启动Linux后就会自动运行MySQL。
8. ./scripts/mysql_install_db
初始化数据库。
9. /usr/local/mysql/bin/safe_mysqld > /dev/null &
启动MySQL服务器作为后台程序,为了测试安装,MySQL服务器必须启动。
10. ln -s \
/usr/local/mysql/bin/mysql \
/usr/bin/mysql
我比较喜欢在/usr/bin目录下为安装目录建立符号链接。这一方法减少了PATH环境变量中的目录数量,还可以将不希望其他人运行的MySQL工具程序隐藏起来,(例如,mysqladmin命令)。另一方法是将命令PATH="$PATH:/usr/local/mysql/bin"放在/etc/profile文件中。以上两种方法都很可以采用。
11. ln -s\
/usr/local/mysql/bin/mysqlshow \
/usr/bin/mysqlshow
该指令是让一般用户都可以运行mysqlshow命令。
2.4 测试MySQL
在继续Apache和PHP编译之前,首先来测试MySQL的安装是否成功。正式发布的MySQL带有许多有用的工具,这里我们只使用mysql和mysqlshow命令来进行测试。(如果对数据库不熟悉,请不用担心,诸如用户、表、记录等数据库的概念将在第六章“数据库和SQL”中加以介绍。)
mysqladmin的作用是建立和删除数据库、检查SQL的状态,以及其他一些用途。首先,通过检查版本号以确认是否已经正确安装了MySQL:
>PATH="usr/local/mysql/bin:$PATH"
>mysqladmin version
Ver 7.8 Distrib 3.22.16a-gamma, for pc-linux-gun on i686 TCX Datakonsult AB, by Monty
Server version 3.22.16a-gamma
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /tmp/mysql.sock
Uptime: 2 hours 30 min 39 sec
Threads: 1 Questions: 7 Slow queries: 0
Opens: 6 Flush tables: 1 Open tables: 2
可以用以下命令观看mysqladmin的所有功能.
mysqladmin --help | less
也许mysqlshow是更让人激动的工具,它能够列出数据库、表和字段名,如下所示:
清单2.1 mysqlshow--显示数据库,表和字段名清单
Page 18(第13行)-19(倒数第10行) , 清单 2.1
最后要介绍的MySQL工具是mysql,这个程序将深入到MySQL的中心,并且可以使你可以立刻在Linux命令行提示下执行SQL语句。在shell模式下运行mysql。
Page 19(倒数第5行)-20(倒数第5行)
小心:设置密码要使用password()函数。如果需要进一步了解,请查阅MySQL文档。
小心:在系统进入正常工作模式的时候,请选用一个比“password”更好的root密码。
2.5 编译iODBC和MyODBC
iODBC是一个实现开放性数据库互连(Open Database connectivity)协议的函数库。它主要用于连接运行于Microsoft Windows的数据库引擎。
1. cd /usr/local/src/libiodbc-2.50.3
转到iODBC目录。
2. ./configure \
--prefix=/usr/local/iodbc \
--with-iodbc-inidir=/usr/local/etc
运行配置程序,并强制设置iODBC为安装到目录/usr/local/iodbc下。此外,应确认odbc的初始化文件为/etc/odbc.ini。
3. make
4. make install
把库文件复制到目录/usr/local/iodbc/lib下,并且把包含文件复制到目录/usr/local/iodbc/include下。
5. cd /usr/local/src/myodbc-2.50.24
转到MyODBC目录下。
6. ./configure \
--prefix=/usr/local/myodbc \
--with-mysql-sources=/usr/local/mysql-3.22.16a-gamma \
--with-odbc-ini=/etc/odbc.ini \
--with-iodbc=/usr/local/iodbc
运行MyODBC配置程序。
7. make
8. make install
把库复制到目录/usr/local/myodbc/lib下。
2.6 编译PHP
编译PHP比编译以前的应用程序更复杂,这是因为编译PHP事实上是expat、Apache和PHP的组合。编译的结果将生成一个带有PHP的Apache版本。为了要编译PHP,可以采用以下步骤:
1. cd /usr/local/src/expat
转到expat目录。
2. make
编译expat源文件。
3. 把以下命令加到Makefile文件中,必须保证在输入ar和ralib之前使用的是Tab键。
libexpat.a: $(OBJS)
ar -rc $@ $(OBJS)
ranlib $@
4. make libexpat.a
把expat目标文件组合成库文件。
5. mv libexpat.a /usr/local/lib
PHP配置文件在/usr/local/lib目录下寻找libexpat.a文件。把libexpat.a文件移到PHP配置文件已知的目录下,可以为以后的操作减少麻烦。
6. cd /usr/local/src/php-3.0.11
转到PHP的顶级目录下。
7. mkdir /usr/local/include/xml
确认/usr/local/include/xml目录是存在的。
8. ln -s \
/usr/local/src/expat/xmltok/xmltok.h \
/usr/local/include/xml/xmltok.h
当能创建符号连接时,为什么还要复制呢?
9. ln -s \
/usr/local/src/expat/xmlparse.h \
/usr/local/include/xml/xmlparse.h
这是PHP为了能够正确地被编译所需要的另一个包含文件。
10. cd /usr/local/src/apache_1.3.4
转到Apache的顶级目录下。
11. ./configure -prefix=/usr/local/apache
运行配置程序,强制设置Apache安装目录为/usr/local/apache。
12. cd /usr/local/src/php-3.0.11
转到PHP的顶级目录下。
13. ./configure \
--with-apache=../apache_1.3.4 \
--with-iodbc=/usr/local/iodbc \
--with-mysql=/usr/local/mysql \
--with-xml
运行配置程序,并且告诉配置程序支持Apache、MySQL和XML。
14. make
编译PHP源文件。
15. make install
安装已编译的文件。PHP库文件会被放在Apache的模块目录下,这样可以在编译Apache时能找到它们。
16. cd /usr/local/src/apache_1.3.4
转到Apache的顶级目录下。
17. ./configure \
--prefix=/usr/local/apache \
--active-mole=src/moles/php3/libphp3.a
再一次配置Apache,这次告诉Apache要加载PHP模块。
18. make
编译Apache源文件。
19. make install
安装已编译的文件。
20. mv \
/usr/local/apache/bin/httpd \
/usr/local/apache/bin/httpd-1.3.4
重新命名新创建的httpd可执行文件,这样就能够安装多种版本。
21. ln -s \
/usr/local/apache/bin/httpd-1.3.4 \
/usr/sbin/httpd
建立一个指向新的可执行文件的符号链接。
22. httpd -v
证实可以访问新的可执行文件。该命令的执行结果将显示版本1.3.4,而且建立日期也应该正确无误。
23. 编辑/usr/local/apache/conf/http.conf文件,搜索AddType并确认下列行未加注释。
AddType application/x-httpd-php3 .phtml
AddType application/x-httpd-php3 .php3
AddType application/x-httpd-php3-source .phps
24. 接着编辑/usr/local/apache/conf/http.conf文件,搜索DirectoryIndex并将index.php3放在行尾。
25. 创建一个名为/usr/local/local/php3.ini的文件,该文件应包含如下的命令行:
include_path=.:/usr/local/apache/php/
auto_prepend_file=/usr/local/apache/php/prepend.php3
track_vars = on
magic_quotes_gpc = on
sendmail_path /usr/sbin/sendmail -t
26. ln -s \
/usr/local/src/php-3.0.11/doc/manual.html \
/usr/local/src/php-3.0.11/doc/index.html
建立一个符号链接,这样绝大多数Web浏览器就会正确地自动显示PHP文件起始页。
27. ln -s \
/usr/local/src/php-3.0.11/doc \
/usr/local/apache/htdocs/phpdocs
建立一个符号链接,这样就可以通过http://localhost/phpdocs/, 来访问PHP文档。
28. 创建一个叫做/usr/local/apache/htdocs/robots.txt的文件,这样就可避免搜索引擎为PHPLIB,phpMyAdmin和PHP文件建立索引,新创建的文件应包括如下设置行:
#robots.txt for (hostname)
User-agent *
Disallow: /phpdocs/
Disallow: /php/
Disallow:/phpMyAdmin/
2.7 安装PHPLIB
在阅读第15章“处理并发的访问”之前,应先安装PHPLIB,可以按照下列步骤进行安装:
1. 以root用户或其他任何可以在/usr/local/apache目录下写文件的用户注册。
2. cd /usr/local/apache/
在开始下载文件之前,进入到Web服务器的顶级目录下。
3. 从如下Web网址下载最新版本的文件,注意gz后缀的文件名,以免它的文件名phplib.tar.gz被改动。
http://phplib.shonline.de/
4. tar xv2f phplib.tar.gz
解压缩PHPLIB模块。
5. 编辑/usr/local/lib/php3.ini文件,应包括下列设置内容:
include_path=.:/usr/local/apache/phplib-6.1/php
auto_prepend_file = /usr/local/apache/phplib-
6.1/php/prepend.php3
track_vars = on
magic_quotes_gpc = on
sendmail_path /usr/sbin/sendmail -t
6. 建立一个名为poe_sessions的mysql数据库。我一般使用phpMyAdmin,如果愿意,也可以使用SQL命令创建数据库。
7. cd /usr/local/apache/phplib-6.1/stuff
进入建表目录下。
8. mysql php_book --user=root --password <
create_database.mysql
创建PHPLIB所需要的数据库表。
9. 使用以下值在mysql数据库表中增加一条新记录:
host: %
password: <-- no password.
select_priv: Yes
insert_priv: Yes
update_priv: Yes
delete_priv: Yes
for users named "kris","user01",and "user02".
注意:也可以使用如下SQL语句:
INSERT INTO
user
(
Host
,User
,Password
,Select_priv
,Insert_priv
,Update_priv
,Delete_priv
)
VALUES (
'%'
, 'kris'
, ''
, 'Y', 'Y', 'Y', 'Y'
)
10. 使用以下值在mysql数据库的db表中增加一条新记录:
host: %
db: poe_sessions
select_priv: Yes
insert_priv: Yes
update_priv: Yes
delete_priv: Yes
for users named "kris","user01",and "user03".
注意:也可以使用如下SQL程序。
INSERT INTO
db
(
Host
,Db
,User
,Select_priv
,Insert_priv
,Update_priv
,Delete_priv
)
VALUES (
'%'
, 'poe_sessions '
, 'kris'
, 'Y', 'Y', 'Y', 'Y'
)
11. /usr/local/mysql/bin/mysqladmin -u root -p reload
重新装载MySQL权限表。
12. 在php_book数据库中创建两个PHPLIB已认证的用户(user01和user02),可以使用如下SQL语句:
INSERT INTO
auto_user
(
uid
,username
,password
,perms
) VALUES (
''
,'user01'
,'test'
,'admin'
)
INSERT INTO
auth_user
(
uid
,username
,password
,perms
) VALUES (
''
,'user02'
,'test'
,'admin'
)
13. mv\ /use/local/apache/phplib-6.1/pages \
/use/local/apach/htdocs
将演示子目录置于Web服务器的根目录下,这样就可以用浏览器访问它。
14. 编辑文本文件/usr/local/apache/htdocs/robots.txt,使它包括如下内容:
Disallow: /phplib/
15. 使用Web浏览器访问http://localhost/phplib/。将会看到如图2.1所示页面。
Page 29 图2.1
图2.1 重新装载两次以后出现的PHPLIB演示页面
2.8 测试Linux环境下的ODBC
对所装软件进行基本测试是很重要的,特别是需要手工编辑配置文件时。如下的测试可确保你的MySQL驱动程序运行正常,并且编译的iODBC库文件也是正确无误的。
1. 使用清单2.1所列的内容,建立一个名为/usr/local/etc/odbc.ini的文件。
清单 2.2 /usr/local/etc/odbc.ini- 系统ODBC 配置文件
;
;odbc.ini
;
[ODBC Data Sources]
mysql = mysql
[php_book]
driver = /usr/local/myodbc/lib/libmyodbc.so
host = localhost
database = mysql
user = root
2. cd /usr/local/src/libiodbc-2.50.3/samples
3. ./odbctest
运行ODBC测试程序。
4. DSN=mysql;PWD=password
告诉测试程序要访问的数据源。
5. select host,user from user
在提示符下执行一个SQL语句,如果有回应,说明iODBC和MySQL已经可以使用了。
现在,在计算机中已经安装好了ODBC,由于它的安装步骤不太清晰而且文档又很少,所以本章中讲述了其安装和测试指令,然而鉴于ODBC主要是一项Microsoft技术,且很少在Linux中用到,所以这里是本书中最后一次有关介绍。
2.9 总结:
本章讲述了如何获取PHP,及在计算机中进行安装所需要的步骤,编译了内建PHP的特定版本Apache 服务器。同时,还安装了将在第15章“中场四:处理并发访问”中用所到的PHPLIB。
9. C++学习。。。
大一学习的c++,工作之后也一直用的c++。
1. 涵盖c++入门到精通的图书列表
《The C programming language》必读
《C++ Primer》,号称是一本可以让你从C或JAVA程序员转为一个真正的C++程序员的入门参考书,必读。
《The C++ programming language》,C++之父,人称B教主着作,在看过C++ primer后,应该可以跳章选读。
《Think in c++》,网上说此书的中文版翻译质量奇差,推荐看影印版,选读。
《Effective c++》,类似 Effective java,讲的是最佳实践,程序员必读。
《More effective c++》,上书的补充。
《The C++ standard library》,会写C,不会用标准库怎么行。这就跟java程序员不会用java.util包一样,必读。
《Effective STL》,STL库的最佳实践。Effective C++作者又一力作,必读。
《The annotated STL source》,STL源码分析,这本书应该算是深入/精通类了,选读。
《Generic programming and STL》,号称C++编程里,就是跟模板,泛型打交道,那么精通泛型是势在必行。
《C++ Template》,C++模板编程,代码复用的经验之道,必读。
《Exceptional C++》,跟Effective C++类似,属于最佳实践和难题解析,书中列出了许多应用场景和实例代码供读者揣摩,选读。
《More Exceptional C++》,上书的补充。
《Exceptional C++ Style》,上上书的补充
《Inside The C++ Object Model》,有了上面这些书做铺垫,那么终于可以读此神书了。它会带你游览C++对象模型的底层实现机制。读完此书,任何C++代码看起来如同行云流水,必读。
2. 优秀的C/C++开源项目(阅读代码)
OS:Linux kernel LVS、Linux应用程序
DB:Mysql、PostgreSQL
Complier:VM、GCC
Framework:OpenSip、SipProxy、
Net:ACE(Java Mina、Netty)、TCP/IP、HTTP协议栈
Cache:Memcached、Redis、
Library:STL(java util package)、Boost、Qt(UI)、
balance:Apache、Nginx
GSL
地址:https://github.com/microsoft/GSL
Boost文档
地址:https://www.boost.org/doc/libs/
wxWidgets官网
地址:http://wxwidgets.org/
gtkmm
地址:https://www.gtkmm.org/en/
CopperSpice
地址:https://www.copperspice.com/
Qt
地址:https://www.qt.io/Eigen
地址:http://eigen.tuxfamily.org/index.php?title=Main_Page#Documentation
Plot utils
地址:https://www.gnu.org/software/plotutils/
Asio
地址:https://think-async.com/Asio/
POCO
地址:https://pocoproject.org/
abseil
地址:https://abseil.io/
C++开源库汇总列表
地址:https://en.cppreference.com/w/cpp/links/libs
除了这些开源项目,也可以找一些免费的公开课,那这里也推荐一个ACM金牌大佬讲授的免费C++课程,可以去体验一下:
学好C++才是入职大厂的敲门砖! 当年要是有这课,我的C++也不至于这样
已失效
3.C++语法讲解
语言基础
详细介绍变量、表达式、语句、指针、数组、流程控制、函数、文件组织等。抽象机制 - 面向对象编程
深入讲解C++的抽象机制,封装(类)、继承、多态;操作符重载、函数对象、异常处理等。模板 - 泛型编程
详细介绍C++的模板机制,类模板、函数模板、模板特化等方面的内容。引用和指针:为什么引用很重要
const关键字:为什么const很重要
名字空间 (namespace)
关于C++对象
内置类型的对象,如int、double对象,自定义类型的对象对象类型的定义
关键字class和struct
类成员:成员函数和数据成员
静态数据成员
成员的访问控制
对象的size
关于this指针
onst成员函数、const究竟修饰什么
mutable数据成员
4种特殊成员函数:constructor、destructor、 constructor、operator=
对象的构造、初始化列表
对象的析构
对象的复制
什么情况下有必要显式定义4种特殊函数
C++对象生命周关于C++中操作符重载机制
重要操作符重载
算术运算:+, -, *, /, %, ++, --, ...
关系运算:>, <, ==, !=
下标存取:[ ]
函数调用:(),函数对象
类型转换、单参数构造函数与隐式转换、阻止隐式转换 -- explicit关键字友元与成员
基类与派生类
再谈对象的构造与析构
虚函数、纯虚函数
派生类的内存布局、虚函数表
多态、多态类型、如何体现多态
虚析构、为什么虚析构很重要
多继承
虚继承与虚基类
对基类的访问、public / protected / private继承
Down cast:static_cast<>和dynamic_cast<>
运行期类型识别 (RTTI)
C++语言机制提供了完整的OOP支持
超越继承
OOP若干法则和设计模式
《C++ Primer》
最新版本:第三版(第四版国外已上架, 国内一些网上书店也在预订中)
适合有丰富C经验,缺乏C++经验的。不过我个人一直认为此书带着过于强烈的C语言的痕迹,对于C++的学习未必是 好事。
《The C++ Programming Language》/《C++程序设计语言》
最新版本:第三版特别版
简称 TC++PL,有其他语言的丰富经验的。(也有人简称之为“TCPL”,但需与另一本《The C Programmer Language》区分开来)
《Essential C++》
《Accelerated C++》
这两本薄一些,都是不错的选择。《Accelerated C++》本人没有读过,从各方面的评价来看,完全值得推荐。
以上几本书都有相应的中文版,而且翻译的质量都不错。上面的书未必都需要读一遍,但无论如何,TC++PL是应该阅读的。
《Effective C++》
最新版本:第二版(第三版国外已上架,国内一些网上书店也在预订中)
简称EC。C++程序员必读!很多时候,我们说C++圣经不是指TC++PL,而是这一本。《The Pragmatic Programmer》一书中写到:“一旦你发现自己要参与C++项目的开发,赶快跑(不要走)到书店去购买Scott Mayer的《Effective C++》,可能还要《More Effective C++》”。
《C++ Coding Standards: 101 Rules, Guidelines, and Best Practices》/《C++ 编程规范》
个人认为此书应为C++程序员必备的案头书。几乎Effective系列和Exceptional系 列都在这里得到了总结。最新的模版、异常的业界经验都在这里的到了体现。可能的唯一缺陷就是对一个新手而言,关于“为什么这么做”的问题,解释的不够。
我 的看法是:如果你不理解其中的条款,记忆,并且照做;如果你理解其中的条款,我猜你一定会同意书中的观点。我认为这本书中的内容至少在2009年以前都不 会过时,人们将广为传诵它制定的101条戒律。
还不知道他的简称,也许“101”会成为一个候选者?
提到《Effective C++》,那么另外三本书一一浮出水面:
《More Effective C++》
《Exceptional C++》
《More Exceptional C++》。
新书《Exceptional C++ Style》也是值得一看的好书。
上 述几本书,一本也不应该放过。
个人建议上述书籍按顺序阅读。并且,在将来反复阅读这几本书。
4.深入c++面向对象
4.1、从C到C++
4.2、深入C++对象
4.3、操作符重载
4.4、面向对象基础 -- 继承
4.5、关于继承更多的话题
4.6、C++与面向对象设计
5.C++泛型编程与STL
5.1、C++ 模板机制
5.2、STL 概要
5.3、STL容器
5.4、STL迭代
5.5、STL算法
5.6、预与定义STL数对象
5.7、STL适配器
6. C++进阶
《Thinking in C++》/《C++编程思想》
这本书及其中文版传言好坏都有,没有认真看过,不做评价,如果确有兴趣,不妨尝试 一下该书。
以下几本书基本上涉及的都是语言本身,大体上可以按照以下的顺序阅读。
《C++必知必会》
如果早一年,这本书将是重量级的,然而它被101和《Exceptional C++ Style》盖过一头。
《C++ Gotchas: Avoiding Common Problems in Coding and Design》/《C++程序设计陷阱》
这又是一本我未曾读过,而且广受好评的书。
《STL 源码剖析》
这本书我刚到手,就被人"借"走,以至于到现在也没有看过。看过这本书的朋友,可以给一个合适的评价。
7. C++进阶之数据结构基础
这是所有编程语言中最应该学习的部分,程序组成的基础之一。
顺序存储、链式存储、循环链表;
双向链表、栈(顺序和链式)、队列(顺序和链式);
栈的应用、树基本概念及遍历、二叉树;
排序算法、并归算法、选择、插入、快速、希尔。
以上这些内容你知道吗?
8. C++进阶之UI界面开发
掌握QT类库构架,图形界面开发模型;
掌握QT开发技巧,消息机制,图形处理;
掌握QT网络编程,UDP,TCP使用方式;
掌握QT文件处理方式,序列化;
掌握QT在windows,linux,ios,android不同平台下的移植技术。
9. C++进阶之Unix/Linux网络服务器
掌握Unix/Linux平台开发方式;
熟练使用系统调用;
熟练Unix/Linux内存管理,进程,线程调度;
熟悉网络服务器开发方式,熟练编写TCP,UCP网络服务程序;
掌握同步/异步IO模型在网络编程中的使用方式。
10.C++进阶之数据库开发
掌握SQL语言的实用技巧。Oracle,MySQL数据库的使用方式。
如果你能熟练掌握以上列出的技能,具备解决复杂问题和技术难点的能力,而且你能独立开发一些比较复杂的功能模块,那么很荣幸地告诉你,你已经达到中级水平,薪资过万对你来说简直是小菜一碟。
11.C++标准参考
C++ reference
地址:https://en.cppreference.com/w/
C++ Coding Standard
地址:http://www.possibility.com/Cpp/CppCodingStandard.html
Standard C++
地址:https://isocpp.org/
State of C++ Evolution
地址:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2597.html
The C++ Resources Network
地址:http://www.cplusplus.com/
Draft C++ Standard: Contents
地址:http://eel.is/c++draft/
关注一些公众号,比如c语言与cpp编程
10. qt入门 急急急!!!
上官网下载,要玩的时候叫上我呀!我保你局局赢!老子开最大号“三个问号”,就是QQT最高等级“???”懂不?