细说PHP(第2版)(DVD光盘1)

( 经典畅销书升级版,全面覆盖 PHP 学习关键点, 150 小时超大容量视频教学 )
LAMP 兄弟连   组编
高洛峰编著
ISBN 978-7-121-18563-2
2012 10 月出版
定价: 109.00 元(含 DVD 光盘 1 张)
16
828
经典畅销书升级版,全面覆盖 PHP 学习关键点, 150 小时超大容量视频教学
PHP是开发Web应用系统最理想的工具,易于使用、功能强大、成本低廉、高安全性、开发速度快且执行灵活。全书以实用为目标设计,包含PHP开发最主流的各项技术,对每一个知识点都进行了深入详细的讲解,并附有大量的实例代码,图文并茂。系统地介绍了PHP的相关技术及其在实际Web开发中的应用。
全书共六个部分,分为30个章节,每一章都是PHP独立知识点的总结。内容涵盖了动态网站开发的前台技术(HTML+CSS)、PHP编程语言的语法、PHP的常用功能模块和实用技巧、MySQL数据库的设计与应用、PHP 面向对象的程序设计思想、数据库抽象层PDO、Smarty模板技术、Web开发的设计模式、自定义框架BroPHP、Web项目开发整个流程等目前PHP开发中最主流的技术。每一章中都有大量的实用示例,以及详尽的注释,加速读者的理解和学习,也为每章的技术点设置了大量的自测试题。最后以一个比较完整的、采用面向对象思想,以及通过MVC模式设计,并结合Smarty模板,基于BroPHP框架的CMS系统为案例,详细介绍了Web系统开发从设计到部署的各个细节,便于更好地进行开发实践。
对于PHP应用开发的新手而言,本书不失为一本好的入门教材,内容既实用又全面,所有实例都可以在开发中直接应用,并辅以大量的视频教程,使读者轻松掌握所学知识。另外,本书也适合有一定基础的网络开发人员和网络爱好者,以及大中专院校的师生阅读与参考。不仅可以作为PHP开发的学习用书,还可以作为从事Web开发的程序员的参考用书和必备手册。对于行家来说,本书也是一本难得的参考手册,读者必将从中获益。
作者简介
现任北京LAMP兄弟连(易第优教育)教学总监,五年软件开发工作经验,四年IT教学工作经验。曾在多家上市企业担任过技术总监、项目经理、高级软件工程师等职务,具有扎实的技术功底。国内资深的高级技术认证讲师,从事IT培训以来累计授课长达6000课时以上,培训近千名学员成功走向IT岗位,具有丰富的IT教学经验。熟悉掌握Unix/Linux/Windows等多种操作系统,一直从事嵌入式、C\C++、J2EE、J2ME、J2SE、PHP及Oracle数据库等技术研发工作。其中,对Web系统软件开发深有研究,近年来致力于推广LAMP开源平台系列软件。
名家推荐
本书内容充实,是作者多年丰富PHP授课经验的总结,为初学者首选教材。           
     ------ 腾讯开放平台副总经理/腾讯云平台负责人 陈磊
 
敏捷高效开发是PHP的一大特性,从书中掌握设计思想,学而实习,必将获益匪浅。
     ------ 盛大云北京研发部经理/PHPCMS负责人 王参加
 
此书对于PHP爱好者,可谓一本好书,内容详尽实用,结构组织符合实战需求,我诚挚推荐。                          
     ------ 北京4399轻电商团队技术总监 张宴
 
内容详尽,由浅入深,覆盖全面,藏经之作。
     ------ ThinkPHP框架创始人 刘晨
LAMP 兄弟连
无兄弟,不编程
《细说PHP(第2版)》是在第1版热销的基础上,与兄弟连六年教学实践的完美结合。
六年时间,兄弟连由一个名不见经传的小公司,成长为国内PHP培训领域翘楚,累计培训PHP程序员四千余人、论坛会员突破十万、技术视频下载量逾百万、电子杂志《草根》日渐成熟、《细说PHP(第1版)》图书销量更是名列PHP原创图书之首。《细说PHP(第2版)》的出版也是对兄弟连多年教学积累的梳理与总结,书中穿插了更多的教学案例、课后习题,辅以原创视频,加入了兄弟连课程体系中特级课的部分知识点,逻辑性更强,知识点更加完善。
第2版历时一年多,作者高洛峰对本书倾注了大量的心血,除延续第1版深入浅出、循序渐进、剖析细致等特点外,结合自身多年的教学经验,力求做到更精炼、更实用、更全面。
写作本书的初衷不仅是开发一本培训教材,更主要的原因是希望推广PHP技术。兄弟连的学员越来越多,但更多人不一定有时间和精力参加面授学习,一本专业、全面的技术书籍无疑是他们最需要的。本书使读者对PHP技术有更深刻、更系统的了解,掌握Web系统开发的完整思路,通过本书内容的学习足以完成动态网站的建设和一些常用的Web系统软件开发工作。
兄弟连还将陆续推出PHP、Linux、Java、Android、Python等各方面的图书,期望可以对开源技术在国内的推广做出贡献,也希望广大读者朋友继续支持我们,支持兄弟连。我们也将一直秉承兄弟连的口号“无兄弟,不编程!”,让众多的技术爱好者、从业者、创业者团结起来,拓展人脉、相互学习、相互帮助,为未来的职业发展打下良好的基础。
今天的兄弟连,不仅仅是一所培训学校,更是技术人的筑梦工场,我们秉承兄弟连的核心价值:一是优秀的教学;二是严格的管理;三是职业素质课贯穿始终。教书育人,成就英才,一直是我们的目标,愿本书的出版,让更多朋友进入PHP的领域,成就自己的职业梦想!
关注兄弟连微博:http://weibo.com/lampbrother
 
兄弟连创始人 李超
 
PHP是一种开源免费的开发语言,具有程序开发速度快、运行快、技术本身学习快等快捷性的特点,无疑是当今Web开发中最佳的编程语言。与JSP和ASP相比,PHP具有简易性、高安全性和执行灵活等优点,使用PHP开发的Web项目,在软件方面的投资成本较低、运行稳定。因此现在越来越多的供应商、用户和企业投资者日益认识到,使用PHP开发的各种商业应用和协作构建各种网络应用程序,变得更加具有竞争力,更加吸引客户。无论是从性能、质量还是价格上,PHP都将成为企业和政府信息化所必须考虑的开发语言。
本书包括六大部分+附录,作为PHP学习的七个阶段,从了解Web开发构件开始到可以完成一个标准化高质量的项目为止。所有内容皆为当今Web项目开发必用的内容,涵盖了PHP的绝大多数知识点,对于某一方面的介绍再从多角度进行延伸。全部内容围绕PHP的面向对象思想设计编写,帮助读者深刻理解PHP开发技术,一步一步引导读者从PHP面向过程的开发模式进入到面向对象的开发时代。本书全部技术点以PHP 5最流行的版本为主,详细地介绍了PHP及与其相关的Web技术,可以帮助读者在较短的时间内熟悉并掌握比较实用的PHP技术。其中包括当前比较流行的DIV+CSS标准化网页布局、PHP面向对象技术、数据库抽象层PDO和Smarty3模板引擎、学习型PHP框架BroPHP等主流技术,实用性非常强。本书所涉及的实例全部以特定的应用为基础,读者在学习和工作过程中,可以直接应用本书给出的一些独立模块和编程思想。
本书编写的宗旨是让读者能拥有一本PHP方面的学习和开发使用的最好书籍,章节虽然不是很多,但对所罗列出的每个知识点都进行了细化和延伸,并力求讲解到位,让读者可以轻松地读懂。所介绍的知识点是不需要借助其他任何书籍进行辅助和补充的。而且对于几乎每个知识点都有对应且详实的可运行的代码配套,对所有实例代码都附有详细注释、说明及运行效果图。在大部分章节的最后一节都结合一个实用的案例,把该章中涉及的零散知识点串在一起进行分析总结,步骤详细,可操作性强。另外在每个章节的最后还为读者安排了大量的和本章知识点配套的自测试题(附加在光盘中),能更好地帮助读者掌握理论知识点,提高实际编程能力,寓学于练。
本书的出版距离上一版发行整三年的时间,在第1版发行后的一年就开始筹划第2版。所有实例都经过了反复的测试,每一句话都进行了反复的推敲,在这两年时间里几乎占用了笔者的全部业余时间。为《细说PHP》(第2版)筹划的几个重要事件如下:
1.根据第1版读者的反馈,在第2版中对大部分内容进行重新整理和优化。
2.用一年时间为本书重新录制了长达150小时的视频教程,全面覆盖了书中的每个知识点。
3.专门为本书开发了一个学习型的PHP框架:BroPHP,这是目前国内唯一一个学习型的专用PHP框架。并用半年时间通过了几百个项目的测试和应用,已经非常成熟和稳定。
4.书中的每个应用实例都做到了最优,直接可以应用在实际项目开发中。
5.结合多家互联网公司的项目开发资料,总结出了一份标准的项目开发流程和几个重要的标准化项目开发文档。
超强资源配套学习,跟踪服务帮助读者提高
在本书所附的DVD光盘中,附书中所有开发实例的源代码,读者在开发中可以直接使用。本书部分章节及课后习题、附录由于书的容量限制,也附加到了光盘中。光盘中还赠送配套的教学视频,共计长达150个小时(由于光盘空间有限,部分视频需要读者到兄弟连论坛:bbs.lampbrother.net下载)。通过参考本书再结合视频教学光盘,可以加快对知识点的掌握,加快学习进度。
为了帮助读者学习到更多的PHP技术,在兄弟连论坛还可以下载常用的技术手册、安装LAMP环境所需要的开源软件和本书每章后面为读者安排的大量自测题配套答案。笔者及“LAMP兄弟连”的全体讲师和技术人员也会及时回答读者提问,与读者进行在线技术交流,并为读者提供各类技术文章,帮助读者提高开发水平,解决读者在开发中遇到的疑难问题。
本书适合读者
    接受PHP培训的学员
    Web开发爱好者
    网站维护及管理人员
    初级或专业的网站开发人员
    大中专院校的教师及培训中心的讲师
    进行毕业设计和对PHP感兴趣的学生
    从事ASP或JSP而想转向PHP开发的程序员
本书由高洛峰主笔编著,参加编写及审校工作的人员有李明、李超、李文凯、赵桐正、丛浩、闫海静、张礼军、李捷、张涛,在此一并表示感谢。
 
                                                                                                   高洛峰
2012年8月   
 
 
 
第1部分 Web开发入门篇
第1章 LAMP网站构建     2
1.1 介绍网站给你认识       2
1.1.1 Web应用的优势        3
1.1.2 Web 2.0时代的互联网      4
1.1.3 Web开发标准    5
1.1.4 认识脚本语言    6
1.1.5 了解HTTP协议        6
1.2 动态网站开发所需的Web构件 10
1.2.1 客户端浏览器    10
1.2.2 超文本标记语言HTML     12
1.2.3 层叠样式表CSS        13
1.2.4 客户端脚本编程语言JavaScript      13
1.2.5 Web服务器        14
1.2.6 服务器端编程语言    15
1.2.7 数据库管理系统        16
1.3 几种主流的Web应用程序平台 17
1.3.1 Web应用程序开发平台对比分析    17
1.3.2 动态网站开发平台技术比较    18
1.4 Web的工作原理    19
1.4.1 情景1:服务器不带应用程序服务器和
数据库     19
1.4.2 情景2:带应用程序服务器的Web服务器     20
1.4.3 情景3:浏览器访问服务器端的数据库 21
1.5 LAMP网站开发组合概述    22
1.5.1 Linux操作系统 22
1.5.2 Web服务器Apache    22
1.5.3 MySQL数据库管理系统 23
1.5.4 PHP后台脚本编程语言    23
1.5.5 LAMP发展趋势        25
1.6 学PHP需要学习什么内容 26
1.6.1 学PHP之前的准备 26
1.6.2 学PHP时需要了解或掌握的内容 27
1.6.3 优秀的Web程序员是怎样练成的    28
1.7 小结       29
本章必须掌握的知识点        29
本章需要了解的内容     29
第2章 HTML的设计与应用     30
2.1 网页制作概述       30
2.1.1 HTML基础        30
2.1.2 简单HTML实例制作       31
2.2 HTML语言的语法       32
2.2.1 HTML标签和元素     32
2.2.2 HTML语法不区分字母大小写        32
2.2.3 HTML标签属性        33
2.2.4 HTML颜色值的设置        33
2.2.5 HTML文档注释        33
2.2.6 HTML代码格式        33
2.2.7 HTML字符实体        34
2.3 HTML文件的主体结构       34
2.4 HTML文档头部元素       35
2.4.1 元素 <span> 35</span> </div> <div> 2.4.2 <base>元素 <span>       35</span> </div> <div> 2.4.3 <link>元素 <span> 36</span> </div> <div> 2.4.4 <meta>元素 <span>       36</span> </div> <div> 2.5 HTML文档主体标记 <span>   37</span> </div> <div> 2.6 文字版面的编辑 <span>   37</span> </div> <div> 2.6.1 格式标签 <span>   38</span> </div> <div> 2.6.2 文本标签 <span>   39</span> </div> <div> 2.7 创建图像和链接 <span>   41</span> </div> <div> 2.7.1 插入图片 <span>   41</span> </div> <div> 2.7.2 建立锚点和超链接 <span>   42</span> </div> <div> 2.8 使用HTML表格 42 </div> <div> 2.9 HTML框架结构 <span>   45</span> </div> <div> 2.10 HTML表单设计 <span> 47</span> </div> <div> 2.11 小结 <span>     51</span> </div> <div> 本章必须掌握的知识点 <span>       51</span> </div> <div> 本章需要了解的内容 <span>    51</span> </div> <div> 本章需要拓展的内容 <span>    51</span> </div> <div> 本章的学习建议 <span>    52</span> </div> <div> 第3章 层叠样式表CSS <span>    53</span> </div> <div> 3.1 CSS简介 <span>      53</span> </div> <div> 3.2 CSS规则的组成 <span>   54</span> </div> <div> 3.2.1 CSS注释 <span>   55</span> </div> <div> 3.2.2 长度单位 <span>   56</span> </div> <div> 3.2.3 颜色单位和URL值 56 </div> <div> 3.3 在HTML文档中放置CSS的几种方式 <span>     57</span> </div> <div> 3.3.1 内联样式表 <span>       57</span> </div> <div> 3.3.2 嵌入一个样式表 <span>       57</span> </div> <div> 3.3.3 连接到一个外部的样式表 <span>       57</span> </div> <div> 3.4 CSS选择器 <span>   58</span> </div> <div> 3.4.1 HTML选择器 <span>    58</span> </div> <div> 3.4.2 类选择器 <span>   58</span> </div> <div> 3.4.3 ID选择器 59 </div> <div> 3.4.4 关联选择器 <span>       59</span> </div> <div> 3.4.5 组合选择器 <span>       59</span> </div> <div> 3.4.6 伪元素选择器 <span>   60</span> </div> <div> 3.5 CSS常见的样式属性和值 <span>   60</span> </div> <div> 3.5.1 字体属性 <span>   60</span> </div> <div> 3.5.2 颜色属性 <span>   61</span> </div> <div> 3.5.3 背景属性 <span>   61</span> </div> <div> 3.5.4 文本属性 <span>   62</span> </div> <div> 3.5.5 边框属性 <span>   62</span> </div> <div> 3.5.6 鼠标光标属性 <span>   64</span> </div> <div> 3.5.7 列表属性 <span>   64</span> </div> <div> 3.5.8 综合示例 <span>   65</span> </div> <div> 3.6 小结 <span>      67</span> </div> <div> 本章必须掌握的知识点 <span>       67</span> </div> <div> 本章需要了解的内容 <span>    67</span> </div> <div> 本章需要拓展的内容 <span>    67</span> </div> <div> 本章的学习建议 <span>    68</span> </div> <div> 第4章 DIV+CSS网页标准化布局 <span>   69</span> </div> <div> 4.1 DIV+CSS对页面布局的优势 <span>     69</span> </div> <div> 4.2 “无意义”的HTML元素div和span <span>      70</span> </div> <div> 4.3 W3C盒子模型 <span>     70</span> </div> <div> 4.4 和页面布局有关的CSS属性 <span>     72</span> </div> <div> 4.5 盒子区块框的定位 <span>      74</span> </div> <div> 4.5.1 相对定位 <span>   74</span> </div> <div> 4.5.2 绝对定位 <span>   74</span> </div> <div> 4.6 使用盒子模型的浮动布局 <span>   75</span> </div> <div> 4.6.1 设置浮动 <span>   75</span> </div> <div> 4.6.2 行框和清理 <span>       76</span> </div> <div> 4.7 DIV+CSS的兼容性问题 <span>     78</span> </div> <div> 4.7.1 不同浏览器解释盒子模型的差异 <span>   79</span> </div> <div> 4.7.2 设置浏览器去遵循W3C标准 80 </div> <div> 4.8 使用盒子模型设计页面布局 <span>      81</span> </div> <div> 4.8.1 居中设计 <span>   81</span> </div> <div> 4.8.2 设置两列浮动的布局 <span>       82</span> </div> <div> 4.8.3 设置三列浮动的布局 <span>       83</span> </div> <div> 4.8.4 设置多列浮动的布局 <span>       84</span> </div> <div> 4.9 DIV+CSS网站首页面布局实例 <span> 85</span> </div> <div> 4.9.1 HTML文件的设计 <span>    85</span> </div> <div> 4.9.2 CSS文件设计 <span>   87</span> </div> <div> 4.10 小结 <span>    89</span> </div> <div> 本章必须掌握的知识点 <span>       89</span> </div> <div> 本章需要了解的内容 <span>    89</span> </div> <div> 本章需要拓展的内容 <span>    89</span> </div> <div> 本章的学习建议 <span>    89</span> </div> <div> 第2部分 PHP基础篇 </div> <div> 第5章  从搭建你的PHP开发环境开始 <span>   92</span> </div> <div> 5.1 几种常见的PHP环境安装方式 92 </div> <div> 5.1.1 Linux系统下源代码包方式安装环境 <span>     92</span> </div> <div> 5.1.2 在Windows系统上安装Web工作环境 93 </div> <div> 5.1.3 搭建学习型的PHP工作环境 93 </div> <div> 5.2 环境安装对操作系统的选择 <span>      93</span> </div> <div> 5.2.1 选择网站运营的操作系统 <span>       93</span> </div> <div> 5.2.2 选择网站开发的操作系统 <span>       94</span> </div> <div> 5.3 安装集成PHP开发环境 <span>     94</span> </div> <div> 5.3.1 安装前准备 <span>       94</span> </div> <div> 5.3.2 安装步骤 <span>   95</span> </div> <div> 5.3.3 环境测试 <span>   96</span> </div> <div> 5.4 phpMyAdmin的配置与应用 <span>       98</span> </div> <div> 5.4.1 HTTP身份验证模式 <span> 99</span> </div> <div> 5.4.2 cookie身份验证模式 <span>       99</span> </div> <div> 5.4.3 config身份验证模式 <span> 100</span> </div> <div> 5.5 小结 <span>      101</span> </div> <div> 本章必须掌握的知识点 <span>       101</span> </div> <div> 本章需要了解的内容 <span>    101</span> </div> <div> 本章需要拓展的内容 <span>    101</span> </div> <div> 第6章 PHP的基本语法 <span>    102</span> </div> <div> 6.1 PHP在Web开发中的应用 102 </div> <div> 6.1.1 就从认识PHP开始吧 <span>      102</span> </div> <div> 6.1.2 PHP都能做什么 <span>       103</span> </div> <div> 6.2 第一个PHP脚本程序 105 </div> <div> 6.3  PHP语言标记 <span>      108</span> </div> <div> 6.3.1 将PHP代码嵌入HTML中的位置 109 </div> <div> 6.3.2 解读开始和结束标记 <span>       109</span> </div> <div> 6.4 指令分隔符“分号” <span>       111</span> </div> <div> 6.5 程序注释 <span>      111</span> </div> <div> 6.6 在程序中使用空白的处理 <span>   113</span> </div> <div> 6.7 变量 <span>      113</span> </div> <div> 6.7.1 变量的声明 <span>       114</span> </div> <div> 6.7.2 变量的命名 <span>       115</span> </div> <div> 6.7.3 可变变量 <span>   116</span> </div> <div> 6.7.4 变量的引用赋值 <span>       116</span> </div> <div> 6.8 变量的类型 <span>   117</span> </div> <div> 6.8.1 类型介绍 <span>   118</span> </div> <div> 6.8.2 布尔型(boolean) <span>   118</span> </div> <div> 6.8.3 整型(integer) <span> 119</span> </div> <div> 6.8.4 浮点型(float或double) <span>       120</span> </div> <div> 6.8.5 字符串(String) <span>     120</span> </div> <div> 6.8.6 数组(Array) 122 </div> <div> 6.8.7 对象(Object) <span> 123</span> </div> <div> 6.8.8 资源类型(Resource) <span>     123</span> </div> <div> 6.8.9 NULL类型 <span> 124</span> </div> <div> 6.8.10 伪类型介绍 <span>     124</span> </div> <div> 6.9 数据类型之间相互转换 <span>      125</span> </div> <div> 6.9.1 自动类型转换 <span>   125</span> </div> <div> 6.9.2 强制类型转换 <span>   126</span> </div> <div> 6.9.3 类型转换细节 <span>   126</span> </div> <div> 6.9.4 变量类型的测试函数 <span>       127</span> </div> <div> 6.10 常量 <span>    128</span> </div> <div> 6.10.1 常量的定义和使用 128 </div> <div> 6.10.2 常量和变量 <span>     129</span> </div> <div> 6.10.3 系统中的预定义常量 <span>     129</span> </div> <div> 6.10.4 PHP中的魔术常量 <span> 129</span> </div> <div> 6.11 PHP中的运算符 <span> 130</span> </div> <div> 6.11.1 算术运算符 <span>     131</span> </div> <div> 6.11.2 字符串运算符 133 </div> <div> 6.11.3 赋值运算符 <span>     133</span> </div> <div> 6.11.4 比较运算符 <span>     134</span> </div> <div> 6.11.5 逻辑运算符 <span>     135</span> </div> <div> 6.11.6 位运算符 136 </div> <div> 6.11.7 其他运算符 <span>     139</span> </div> <div> 6.11.8 运算符的优先级 <span>     140</span> </div> <div> 6.12 表达式 <span> 141</span> </div> <div> 6.13 小结 <span>    142</span> </div> <div> 本章必须掌握的知识点 <span>       142</span> </div> <div> 本章需要了解的内容 <span>    142</span> </div> <div> 本章需要拓展的内容 <span>    142</span> </div> <div> 第7章 PHP的流程控制结构 <span>    143</span> </div> <div> 7.1 分支结构 <span>      143</span> </div> <div> 7.1.1 单一条件分支结构(if) <span> 144</span> </div> <div> 7.1.2 双向条件分支结构(else从句) <span>    145</span> </div> <div> 7.1.3 多向条件分支结构(elseif子句) 145 </div> <div> 7.1.4 多向条件分支结构(switch语句) <span> 147</span> </div> <div> 7.1.5 巢状条件分支结构 <span>   148</span> </div> <div> 7.1.6 条件分支结构实例应用(简单计算器) <span>       149</span> </div> <div> 7.2 循环结构 <span>      151</span> </div> <div> 7.2.1 while语句 152 </div> <div> 7.2.2 do…while循环 154 </div> <div> 7.2.3 for语句 <span>     155</span> </div> <div> 7.3 特殊的流程控制语句 <span>   157</span> </div> <div> 7.3.1 break语句 157 </div> <div> 7.3.2 continue语句 <span>     158</span> </div> <div> 7.3.3 exit语句 <span>    159</span> </div> <div> 7.4 小结 <span>      160</span> </div> <div> 本章必须掌握的知识点 <span>       160</span> </div> <div> 本章需要了解的内容 <span>    160</span> </div> <div> 第8章 PHP的函数应用 <span>    161</span> </div> <div> 8.1 函数的定义 <span>   161</span> </div> <div> 8.2 自定义函数 <span>   162</span> </div> <div> 8.2.1 函数的声明 <span>       162</span> </div> <div> 8.2.2 函数的调用 <span>       164</span> </div> <div> 8.2.3 函数的参数 <span>       165</span> </div> <div> 8.2.4 函数的返回值 <span>   166</span> </div> <div> 8.3 函数的工作原理和结构化编程 <span>   168</span> </div> <div> 8.4 PHP变量的范围 168 </div> <div> 8.4.1 局部变量 <span>   169</span> </div> <div> 8.4.2 全局变量 <span>   170</span> </div> <div> 8.4.3 静态变量 <span>   171</span> </div> <div> 8.5 声明及应用各种形式的PHP函数 <span>     171</span> </div> <div> 8.5.1 常规参数的函数 <span>       173</span> </div> <div> 8.5.2 伪类型参数的函数 <span>   173</span> </div> <div> 8.5.3 引用参数的函数 <span>       173</span> </div> <div> 8.5.4 默认参数的函数 <span>       175</span> </div> <div> 8.5.5 可变个数参数的函数 <span>       176</span> </div> <div> 8.5.6 回调函数 <span>   177</span> </div> <div> 8.6 递归函数 <span>      181</span> </div> <div> 8.7 使用自定义函数库 <span>      182</span> </div> <div> 8.8 小结 <span>      183</span> </div> <div> 本章必须掌握的知识点 <span>       183</span> </div> <div> 本章需要了解的内容 <span>    183</span> </div> <div> 本章需要拓展的内容 <span>    183</span> </div> <div> 第9章 PHP中的数组与数据结构 <span>    184</span> </div> <div> 9.1 数组的分类 <span>   184</span> </div> <div> 9.2 数组的定义 <span>   186</span> </div> <div> 9.2.1 直接赋值的方式声明数组 <span>       186</span> </div> <div> 9.2.2 使用array()语言结构新建数组 <span>       188</span> </div> <div> 9.2.3 多维数组的声明 <span>       188</span> </div> <div> 9.3 数组的遍历 <span>   190</span> </div> <div> 9.3.1 使用for语句循环遍历数组 <span>     191</span> </div> <div> 9.3.2 使用foreach语句遍历数组 <span>     193</span> </div> <div> 9.3.3 联合使用list( )、each( )和while循环 </div> <div> 遍历数组 <span>       195</span> </div> <div> 9.3.4 使用数组的内部指针控制函数遍历数组 <span>       198</span> </div> <div> 9.4 预定义数组 <span>   199</span> </div> <div> 9.4.1 服务器变量:$_SERVER <span> 200</span> </div> <div> 9.4.2 环境变量:$_ENV <span>   200</span> </div> <div> 9.4.3 URL GET变量:$_GET <span>   200</span> </div> <div> 9.4.4 HTTP POST变量:$_POST <span>    201</span> </div> <div> 9.4.5 request变量:$_REQUEST <span>     202</span> </div> <div> 9.4.6 HTTP文件上传变量:$_FILES <span>      202</span> </div> <div> 9.4.7 HTTP Cookies:$_COOKIE <span>     202</span> </div> <div> 9.4.8 Session变量:$_SESSION <span>      203</span> </div> <div> 9.4.9 Global变量:$GLOBALS <span>       203</span> </div> <div> 9.5 数组的相关处理函数 <span>   203</span> </div> <div> 9.5.1 数组的键/值操作函数 <span>      203</span> </div> <div> 9.5.2 统计数组元素的个数和唯一性 <span>       206</span> </div> <div> 9.5.3  使用回调函数处理数组的函数 <span>       208</span> </div> <div> 9.5.4 数组的排序函数 <span>       211</span> </div> <div> 9.5.5 拆分、合并、分解和接合数组 <span>       215</span> </div> <div> 9.5.6 数组与数据结构 <span>       218</span> </div> <div> 9.5.7 其他有用的数组处理函数 <span>       220</span> </div> <div> 9.6 操作PHP数组需要注意的一些细节 221 </div> <div> 9.6.1 数组运算符号 <span>   221</span> </div> <div> 9.6.2 删除数组中的元素操作 <span>   222</span> </div> <div> 9.6.3 关于数组下标的注意事项 <span>       222</span> </div> <div> 9.7 小结 <span>      223</span> </div> <div> 本章必须掌握的知识点 <span>       223</span> </div> <div> 本章需要了解的内容 <span>    223</span> </div> <div> 本章需要拓展的内容 <span>    223</span> </div> <div> 第10章 PHP面向对象的程序设计 224 </div> <div> 10.1 面向对象的介绍 <span> 224</span> </div> <div> 10.1.1 类和对象之间的关系 <span>     225</span> </div> <div> 10.1.2 面向对象的程序设计 <span>     225</span> </div> <div> 10.2 如何抽象一个类 <span> 226</span> </div> <div> 10.2.1 类的声明 226 </div> <div> 10.2.2 成员属性 227 </div> <div> 10.2.3 成员方法 228 </div> <div> 10.3 通过类实例化对象 <span>    229</span> </div> <div> 10.3.1 实例化对象 <span>     229</span> </div> <div> 10.3.2 对象类型在内存中的分配 <span>     230</span> </div> <div> 10.3.3 对象中成员的访问 232 </div> <div> 10.3.4 特殊的对象引用“$this” 234 </div> <div> 10.3.5 构造方法与析构方法 <span>     235</span> </div> <div> 10.4 封装性 <span> 238</span> </div> <div> 10.4.1 设置私有成员 239 </div> <div> 10.4.2 私有成员的访问 <span>     240</span> </div> <div> 10.4.3 __set()、__get()、__isset()和__unset() </div> <div> 四个方法 <span>       242</span> </div> <div> 10.5 继承性 <span> 247</span> </div> <div> 10.5.1 类继承的应用 247 </div> <div> 10.5.2 访问类型控制 249 </div> <div> 10.5.3 子类中重载父类的方法 251 </div> <div> 10.6 常见的关键字和魔术方法 <span> 253</span> </div> <div> 10.6.1 final关键字的应用 <span> 253</span> </div> <div> 10.6.2 static关键字的使用 <span> 254</span> </div> <div> 10.6.3 单态设计模式 255 </div> <div> 10.6.4 const关键字 <span>    257</span> </div> <div> 10.6.5 instanceof关键字 <span>    257</span> </div> <div> 10.6.6 克隆对象 257 </div> <div> 10.6.7 类中通用的方法__toString() 259 </div> <div> 10.6.8 __call()方法的应用 <span> 259</span> </div> <div> 10.6.9 自动加载类 <span>     261</span> </div> <div> 10.6.10 对象串行化 <span>   262</span> </div> <div> 10.7 抽象类与接口 <span>    265</span> </div> <div> 10.7.1 抽象类 <span>     265</span> </div> <div> 10.7.2 接口技术 266 </div> <div> 10.8 多态性的应用 <span>    268</span> </div> <div> 10.9 面向对象版图形计算器 <span>    270</span> </div> <div> 10.9.1 需求分析 270 </div> <div> 10.9.2 功能设计及实现 <span>     271</span> </div> <div> 10.9.3 类的组织架构 276 </div> <div> 10.10 小结 <span>   277</span> </div> <div> 本章必须掌握的知识点 <span>       277</span> </div> <div> 本章需要了解的内容 <span>    278</span> </div> <div> 本章需要拓展的内容 <span>    278</span> </div> <div> 第11章 字符串处理 279 </div> <div> 11.1 字符串的处理介绍 <span>     279</span> </div> <div> 11.1.1 字符串的处理方式 279 </div> <div> 11.1.2 字符串类型的特点 280 </div> <div> 11.1.3 双引号中变量解析总结 280 </div> <div> 11.2 常用的字符串输出函数 <span>     281</span> </div> <div> 11.3 常用的字符串格式化函数 <span> 284</span> </div> <div> 11.3.1 去除空格和字符串填补函数 284 </div> <div> 11.3.2 字符串大小写的转换 <span>     285</span> </div> <div> 11.3.3 和HTML标签相关的字符串格式化 <span>     286</span> </div> <div> 11.3.4 其他字符串格式化函数 290 </div> <div> 11.4 字符串比较函数 <span> 291</span> </div> <div> 11.4.1 按字节顺序进行字符串比较 291 </div> <div> 11.4.2 按自然排序进行字符串比较 292 </div> <div> 11.5 小结 <span>     293</span> </div> <div> 本章必须掌握的知识点 <span>       293</span> </div> <div> 本章需要拓展的内容 <span>    293</span> </div> <div> 第12章 正则表达式 294 </div> <div> 12.1 正则表达式简介 <span> 294</span> </div> <div> 12.1.1 选择PHP正则表达式的处理函数库 <span>    294</span> </div> <div> 12.2 正则表达式的语法规则 <span>    295</span> </div> <div> 12.2.1 定界符 <span>     296</span> </div> <div> 12.2.2 原子 296 </div> <div> 12.2.3 元字符 <span>     298</span> </div> <div> 12.2.4 模式修正符 <span>     301</span> </div> <div> 12.3 与Perl兼容的正则表达式函数 <span> 302</span> </div> <div> 12.3.1 字符串的匹配与查找 <span>     302</span> </div> <div> 12.3.2 字符串的替换 305 </div> <div> 12.3.3 字符串的分割和连接 <span>     310</span> </div> <div> 12.4 文章发布操作示例 <span>    312</span> </div> <div> 12.5 小结 <span>    317</span> </div> <div> 本章必须掌握的知识点 <span>       317</span> </div> <div> 本章需要了解的内容 <span>    317</span> </div> <div> 本章需要扩展的内容 <span>    317</span> </div> <div> 第3部分 PHP常用功能模块篇 </div> <div> 第13章 PHP的错误和异常处理 <span>     320</span> </div> <div> 13.1 错误处理 <span>    320</span> </div> <div> 13.1.1 错误报告级别 321 </div> <div> 13.1.2 调整错误报告级别 321 </div> <div> 13.1.3 使用trigger_error()函数来替代die() <span>    323</span> </div> <div> 13.1.4 自定义错误处理 <span>     323</span> </div> <div> 13.1.5 写错误日志 <span>     325</span> </div> <div> 13.2 异常处理 <span>    327</span> </div> <div> 13.2.1 异常处理实现 328 </div> <div> 13.2.2 扩展PHP内置的异常处理类 <span> 328</span> </div> <div> 13.2.3 捕获多个异常 330 </div> <div> 13.3 小结 <span>    332</span> </div> <div> 本章必须掌握的知识点 <span>       332</span> </div> <div> 本章需要了解的内容 <span>    332</span> </div> <div> 第14章 PHP的日期和时间 <span>     333</span> </div> <div> 14.1 UNIX时间戳 <span>     333</span> </div> <div> 14.1.1 将日期和时间转变成UNIX时间戳 <span>     333</span> </div> <div> 14.1.2 日期的计算 <span>     335</span> </div> <div> 14.2 在PHP中获取日期和时间 <span>       335</span> </div> <div> 14.2.1 调用getdate()函数取得日期/时间信息 <span> 335</span> </div> <div> 14.2.2 日期和时间格式化输出 336 </div> <div> 14.3 修改PHP的默认时区 <span>       337</span> </div> <div> 14.4 使用微秒计算PHP脚本执行时间 <span>   338</span> </div> <div> 14.5 日历类 <span> 339</span> </div> <div> 14.6 小结 <span>    343</span> </div> <div> 本章必须掌握的知识点 <span>       343</span> </div> <div> 本章需要了解的内容 <span>    343</span> </div> <div> 本章需要拓展的内容 <span>    343</span> </div> <div> 本章的学习建议 <span>    343</span> </div> <div> 第15章 文件系统处理 <span>      344</span> </div> <div> 15.1 文件系统概述 <span>    344</span> </div> <div> 15.1.1 文件类型 344 </div> <div> 15.1.2 文件的属性 <span>     345</span> </div> <div> 15.2 目录的基本操作 <span> 348</span> </div> <div> 15.2.1 解析目录路径 348 </div> <div> 15.2.2 遍历目录 349 </div> <div> 15.2.3 统计目录大小 351 </div> <div> 15.2.4 建立和删除目录 <span>     352</span> </div> <div> 15.2.5 复制目录 352 </div> <div> 15.3 文件的基本操作 <span> 353</span> </div> <div> 15.3.1 文件的打开与关闭 353 </div> <div> 15.3.2 写入文件 355 </div> <div> 15.3.3 读取文件内容 356 </div> <div> 15.3.4 访问远程文件 358 </div> <div> 15.3.5 移动文件指针 359 </div> <div> 15.3.6 文件的锁定机制 <span>     360</span> </div> <div> 15.3.7 文件的一些基本操作函数 <span>     363</span> </div> <div> 15.4 文件的上传与下载 <span>    364</span> </div> <div> 15.4.1 文件上传 364 </div> <div> 15.4.2  处理多个文件上传 367 </div> <div> 15.4.3 文件下载 368 </div> <div> 15.5 设计经典的文件上传类 <span>    369</span> </div> <div> 15.5.1 需求分析 369 </div> <div> 15.5.2 程序设计 370 </div> <div> 15.5.3 文件上传类代码实现 <span>     370</span> </div> <div> 15.5.4 文件上传类的应用过程 375 </div> <div> 15.6 小结 <span>    376</span> </div> <div> 本章必须掌握的知识点 <span>       376</span> </div> <div> 本章需要了解的内容 <span>    377</span> </div> <div> 本章需要拓展的内容 <span>    377</span> </div> <div> 本章的学习建议 <span>    377</span> </div> <div> 第16章 PHP动态图像处理 <span>     378</span> </div> <div> 16.1 PHP中GD库的使用 <span> 378</span> </div> <div> 16.1.1 画布管理 380 </div> <div> 16.1.2 设置颜色 380 </div> <div> 16.1.3 生成图像 381 </div> <div> 16.1.4 绘制图像 381 </div> <div> 16.1.5 在图像中绘制文字 383 </div> <div> 16.2 设计经典验证码类 <span>    386</span> </div> <div> 16.2.1 设计验证码类 386 </div> <div> 16.2.2 应用验证码类的实例对象 <span>     389</span> </div> <div> 16.2.3 表单中应用验证码 389 </div> <div> 16.2.4 实例演示 390 </div> <div> 16.3 PHP图片处理 <span>    390</span> </div> <div> 16.3.1 图片背景管理 390 </div> <div> 16.3.2 图片缩放 392 </div> <div> 16.3.3 图片裁剪 393 </div> <div> 16.3.4 添加图片水印 395 </div> <div> 16.3.5 图片旋转和翻转 <span>     396</span> </div> <div> 16.4 设计经典的图像处理类 <span>    398</span> </div> <div> 16.4.1 需求分析 398 </div> <div> 16.4.2 程序设计 399 </div> <div> 16.4.3 图像处理类代码实现 <span>     399</span> </div> <div> 16.4.4 图像处理类的应用过程 404 </div> <div> 16.5 小结 <span>    406</span> </div> <div> 本章必须掌握的知识点 <span>       406</span> </div> <div> 本章需要了解的内容 <span>    406</span> </div> <div> 本章需要拓展的内容 <span>    406</span> </div> <div> 第4部分 数据库开发篇 </div> <div> 第17章 MySQL数据库概述 <span>    408</span> </div> <div> 17.1 数据库的应用 <span>    408</span> </div> <div> 17.1.1 数据库在Web开发中的重要地位 <span> 409</span> </div> <div> 17.1.2 为什么PHP会选择MySQL作为自己 </div> <div> 的黄金搭档 <span>    409</span> </div> <div> 17.1.3 PHP和MySQL的合作方式 <span>   409</span> </div> <div> 17.1.4 结构化查询语言SQL <span>     410</span> </div> <div> 17.2 MySQL数据库的常见操作 <span>      411</span> </div> <div> 17.2.1 MySQL数据库的连接与关闭 <span>       411</span> </div> <div> 17.2.2 创建新用户并授权 412 </div> <div> 17.2.3 创建数据库 <span>     412</span> </div> <div> 17.2.4 创建数据表 <span>     413</span> </div> <div> 17.2.5 数据表内容的简单管理 414 </div> <div> 17.3 小结 <span>    416</span> </div> <div> 本章必须掌握的知识点 <span>       416</span> </div> <div> 第18章 MySQL数据表的设计 <span> 417</span> </div> <div> 18.1 数据表(Table) <span>       417</span> </div> <div> 18.2 数据值和列类型 <span> 418</span> </div> <div> 18.2.1 数值类的数据列类型 <span>     418</span> </div> <div> 18.2.2 字符串类数据列类型 <span>     419</span> </div> <div> 18.2.3 日期和时间型数据列类型 <span>     420</span> </div> <div> 18.2.4 NULL值 421 </div> <div> 18.2.5 类型转换 421 </div> <div> 18.3 数据字段属性 <span>    421</span> </div> <div> 18.4 数据表对象管理 <span> 422</span> </div> <div> 18.4.1 创建表(CREATE TABLE) <span> 422</span> </div> <div> 18.4.2 修改表(ALTER TABLE) <span>    423</span> </div> <div> 18.4.3 删除表(DROP TABLE) <span>     424</span> </div> <div> 18.5 数据表的类型及存储位置 <span> 425</span> </div> <div> 18.5.1 MyISAM数据表 <span>     425</span> </div> <div> 18.5.2 InnoDB数据表 <span>       425</span> </div> <div> 18.5.3 如何选择InnoDB还是MyISAM表 </div> <div> 类型 <span>       425</span> </div> <div> 18.5.4 数据表的储存位置 426 </div> <div> 18.6 数据表的默认字符集 <span> 426</span> </div> <div> 18.6.1 字符集 <span>     427</span> </div> <div> 18.6.2 字符集支持原理 <span>     427</span> </div> <div> 18.6.3 创建数据对象时修改字符集 428 </div> <div> 18.7 创建索引 <span>    428</span> </div> <div> 18.7.1 主键索引(PRIMARY KEY) <span>      428</span> </div> <div> 18.7.2 唯一索引(UNIQUE) 429 </div> <div> 18.7.3 常规索引(INDEX) <span>     430</span> </div> <div> 18.7.4 全文索引(FULLTEXT) <span>      430</span> </div> <div> 18.8 规范化 <span> 431</span> </div> <div> 18.8.1 起点 431 </div> <div> 18.8.2 第一范式 432 </div> <div> 18.8.3 第二范式 432 </div> <div> 18.8.4 第三范式 434 </div> <div> 18.8.5 规范化理论 <span>     435</span> </div> <div> 18.9 数据库的设计技巧 <span>    436</span> </div> <div> 18.9.1 数据库设计要求 <span>     436</span> </div> <div> 18.9.2 起名字的技巧 436 </div> <div> 18.9.3 数据库具体设计工作中的技巧 <span>     436</span> </div> <div> 18.10 小结 <span>   437</span> </div> <div> 本章必须掌握的知识点 <span>       437</span> </div> <div> 本章需要了解的内容 <span>    437</span> </div> <div> 本章需要拓展的内容 <span>    437</span> </div> <div> 第19章 SQL语句设计 <span>     438</span> </div> <div> 19.1 操作数据表中的数据记录(DML) <span>       438</span> </div> <div> 19.1.1 使用INSERT语句向数据表中添加 </div> <div> 数据 <span>       438</span> </div> <div> 19.1.2 使用UPDATE语句更新数据表中已 </div> <div> 存在的数据 <span>    439</span> </div> <div> 19.1.3 使用DELETE语句删除数据表中不 </div> <div> 需要的数据记录 <span>    440</span> </div> <div> 19.2 通过DQL命令查询数据表中的数据 <span>      441</span> </div> <div> 19.2.1 选择特定的字段 <span>     441</span> </div> <div> 19.2.2 使用AS子句为字段取别名 <span>   442</span> </div> <div> 19.2.3 DISTINCT关键字的使用 <span>      442</span> </div> <div> 19.2.4 在SELECT语句中使用表达式的列 <span>     443</span> </div> <div> 19.2.5 使用WHERE子句按条件检索 <span>     444</span> </div> <div> 19.2.6 根据空值(NULL)确定检索条件 <span>       445</span> </div> <div> 19.2.7 使用BETWEEN AND进行范围比较 </div> <div> 查询 <span>       445</span> </div> <div> 19.2.8 使用IN进行范围比对查询 <span>   445</span> </div> <div> 19.2.9 使用LIKE进行模糊查询 <span>      446</span> </div> <div> 19.2.10 多表查询(连接查询) <span>       446</span> </div> <div> 19.2.11 嵌套查询(子查询) <span>    449</span> </div> <div> 19.2.12 使用ORDER BY对查询结果排序 <span>     449</span> </div> <div> 19.2.13 使用LIMIT限定结果行数 <span>   450</span> </div> <div> 19.2.14 使用统计函数 <span>       450</span> </div> <div> 19.2.15 使用GROUP BY对查询结果分组 <span>      451</span> </div> <div> 19.3 查询优化 <span>    452</span> </div> <div> 19.4 小结 <span>    454</span> </div> <div> 本章必须掌握的知识点 <span>       454</span> </div> <div> 本章需要拓展的内容 <span>    454</span> </div> <div> 本章的学习建议 <span>    454</span> </div> <div>   </div> <div> 第20章 PHP访问MySQL的扩展函数 <span>   455</span> </div> <div> 20.1 PHP访问MySQL数据库服务器的 </div> <div> 流程 <span>       455</span> </div> <div> 20.2 在PHP脚本中连接MySQL服务器 <span> 457</span> </div> <div> 20.2.1 在PHP程序中选择已创建的数据库 <span>    458</span> </div> <div> 20.2.2 执行SQL命令 <span> 458</span> </div> <div> 20.2.3 在PHP脚本中处理SELECT查询 </div> <div> 结果集 <span>    460</span> </div> <div> 20.3 设计完美分页类 <span> 462</span> </div> <div> 20.3.1 需求分析 462 </div> <div> 20.3.2 程序设计 462 </div> <div> 20.3.3 完美分页类的代码实现 463 </div> <div> 20.3.4 分页类的应用过程 468 </div> <div> 20.4 管理books表实例 <span>     470</span> </div> <div> 20.4.1 需求分析 470 </div> <div> 20.4.2 程序设计 471 </div> <div> 20.5 PHP的mysqli扩展介绍 <span>    477</span> </div> <div> 20.5.1 启用mysqli扩展模块 <span>     478</span> </div> <div> 20.5.2 mysqli扩展接口的应用概述 479 </div> <div> 20.6 小结 <span>    480</span> </div> <div> 本章必须掌握的知识点 <span>       480</span> </div> <div> 本章需要了解的内容 <span>    480</span> </div> <div> 本章需要拓展的内容 <span>    480</span> </div> <div> 本章的学习建议 <span>    480</span> </div> <div> 第21章 数据库抽象层PDO <span>     481</span> </div> <div> 21.1 PDO所支持的数据库 <span>       481</span> </div> <div> 21.2 PDO的安装 <span>       482</span> </div> <div> 21.3 创建PDO对象 <span>   483</span> </div> <div> 21.3.1 以多种方式调用构造方法 <span>     484</span> </div> <div> 21.3.2 PDO对象中的成员方法 <span> 486</span> </div> <div> 21.4 使用PDO对象 <span>   487</span> </div> <div> 21.4.1 调整PDO的行为属性 <span>    487</span> </div> <div> 21.4.2 PDO处理PHP程序和数据库之间的 </div> <div> 数据类型转换 <span>       487</span> </div> <div> 21.4.3 PDO的错误处理模式 <span>    488</span> </div> <div> 21.4.4 使用PDO执行SQL语句 <span>      489</span> </div> <div> 21.5 PDO对预处理语句的支持 <span>       491</span> </div> <div>   </div> <div>   </div> <div> 21.5.1 了解PDOStatement对象 <span>       491</span> </div> <div> 21.5.2 准备语句 492 </div> <div> 21.5.3  绑定参数 493 </div> <div> 21.5.4 执行准备好的查询 494 </div> <div> 21.5.5 获取数据 495 </div> <div> 21.5.6 大数据对象的存取 499 </div> <div> 21.6 PDO的事务处理 <span>       499</span> </div> <div> 21.6.1 MySQL的事务处理 <span>       500</span> </div> <div> 21.6.2 构建事务处理的应用程序 <span>     500</span> </div> <div> 21.7 小结 <span>    502</span> </div> <div> 本章必须掌握的知识点 <span>       502</span> </div> <div> 本章需要了解的内容 <span>    502</span> </div> <div> 本章需要拓展的内容 <span>    502</span> </div> <div> 第5部分 PHP开发高级篇 </div> <div> 第22章 MemCache管理与应用 <span>       504</span> </div> <div> 22.1 MemCache概述 504 </div> <div> 22.1.1 初识MemCache <span>      504</span> </div> <div> 22.1.2 MemCache在Web中的应用 505 </div> <div> 22.2 memcached的安装及管理 <span> 507</span> </div> <div> 22.2.1 Linux下安装MemCache软件 <span>       507</span> </div> <div> 22.2.2 Windows下安装memcached软件 <span> 507</span> </div> <div> 22.2.3 memcached服务器的管理 <span>     508</span> </div> <div> 22.3 使用Telnet作为memcached的客户端 </div> <div> 管理 <span>       509</span> </div> <div> 22.3.1 连接memcached服务器 <span> 509</span> </div> <div> 22.3.2 基本的memcached客户端命令 <span>     509</span> </div> <div> 22.3.3 查看当前memcached服务器的运行 </div> <div> 状态信息 <span>       510</span> </div> <div> 22.3.4 数据管理指令 510 </div> <div> 22.4 PHP的memcached管理接口 <span>    511</span> </div> <div> 22.4.1 安装PHP中的MemCache应用程序 </div> <div> 扩展接口 <span>       512</span> </div> <div> 22.4.2 MemCache应用程序扩展接口 <span>      513</span> </div> <div> 22.4.3 MemCache的实例应用 <span>   518</span> </div> <div> 22.5 memcached服务器的安全防护 <span> 519</span> </div> <div> 22.6 小结 <span>    519</span> </div> <div> 本章必须掌握的知识点 <span>       519</span> </div> <div> 本章需要了解的内容 <span>    520</span> </div> <div> 本章需要拓展的内容 <span>    520</span> </div> <div> 第23章 会话控制 <span>      521</span> </div> <div> 23.1 为什么要使用会话控制 <span>    521</span> </div> <div> 23.2 会话跟踪的方式 <span> 522</span> </div> <div> 23.3 Cookie的应用 <span>    523</span> </div> <div> 23.3.1 Cookie概述 <span>     523</span> </div> <div> 23.3.2 向客户端计算机中设置Cookie <span>     524</span> </div> <div> 23.3.3 在PHP脚本中读取Cookie的资料 </div> <div> 内容 <span>       525</span> </div> <div> 23.3.4 数组形态的Cookie应用 <span> 525</span> </div> <div> 23.3.5 删除Cookie <span>     526</span> </div> <div> 23.3.6 基于Cookie的用户登录模块 <span> 526</span> </div> <div> 23.4 Session的应用 <span>    528</span> </div> <div> 23.4.1 Session概述 <span>    528</span> </div> <div> 23.4.2 配置Session <span>    529</span> </div> <div> 23.4.3 Session的声明与使用 <span>    530</span> </div> <div> 23.4.4 注册一个会话变量和读取Session <span> 531</span> </div> <div> 23.4.5 注销变量与销毁Session <span> 531</span> </div> <div> 23.4.6 Session的自动回收机制 <span> 533</span> </div> <div> 23.4.7 传递Session ID <span>       533</span> </div> <div> 23.5 一个简单的邮件系统实例 <span> 536</span> </div> <div> 23.5.1 为邮件系统准备数据 <span>     536</span> </div> <div> 23.5.2 编码实现邮件系统 537 </div> <div> 23.5.3 邮件系统执行说明 539 </div> <div> 23.6 自定义Session处理方式 <span>   540</span> </div> <div> 23.6.1 自定义Session的存储机制 <span>    540</span> </div> <div> 23.6.2 使用数据库处理Session信息 <span>       543</span> </div> <div> 23.6.3 使用memcached处理Session信息 <span>       546</span> </div> <div> 23.7 小结 <span>    549</span> </div> <div> 本章必须掌握的知识点 <span>       549</span> </div> <div> 本章需要了解的内容 <span>    549</span> </div> <div> 本章需要拓展的内容 <span>    549</span> </div> <div> 第24章 PHP的模板引擎Smarty <span>     550</span> </div> <div> 24.1 什么是模板引擎 <span> 550</span> </div> <div> 24.2 自定义模板引擎 <span> 552</span> </div> <div> 24.2.1 自定义模板引擎类 552 </div> <div> 24.2.2 使用自己的模板引擎 <span>     554</span> </div> <div> 24.2.3 应用自定义模板引擎的示例分析 556 </div> <div> 24.3 选择Smarty模板引擎 <span>       559</span> </div> <div> 24.4 安装Smarty及初始化配置 <span>       560</span> </div> <div> 24.4.1 安装Smarty <span>     561</span> </div> <div> 24.4.2 初始化Smarty类库的默认设置 <span>    561</span> </div> <div> 24.4.3 第一个Smarty的简单示例 <span>    564</span> </div> <div> 24.5 Smarty的基本应用 <span>    566</span> </div> <div> 24.5.1 PHP程序员常用和Smarty相关的 </div> <div> 操作 <span>       567</span> </div> <div> 24.5.2 模板设计时美工的常用操作 568 </div> <div> 24.6 Smarty模板设计的基本语法 <span>    569</span> </div> <div> 24.6.1 模板中的注释 569 </div> <div> 24.6.2 模板中的变量应用 569 </div> <div> 24.6.3 模板中的函数应用 572 </div> <div> 24.6.4 忽略Smarty解析 <span>    574</span> </div> <div> 24.7 在Smarty模板中的变量应用 <span>   574</span> </div> <div> 24.7.1 从配置文件中读取变量 575 </div> <div> 24.7.2 在模板中使用保留变量 578 </div> <div> 24.8 在Smarty模板中的变量调解器 <span>       580</span> </div> <div> 24.8.1 变量调解器函数的使用方式 580 </div> <div> 24.8.2 Smarty默认提供的变量调解器 <span>     581</span> </div> <div> 24.8.3 自定义变量调解器插件 582 </div> <div> 24.9 Smarty模板中自定义函数 <span>       585</span> </div> <div> 24.9.1 为Smarty模板扩充函数插件 <span>       585</span> </div> <div> 24.9.2 为Smarty模板扩充块函数插件 <span>    586</span> </div> <div> 24.10 Smarty模板中的内置函数 <span>      587</span> </div> <div> 24.10.1 变量声明 <span>       588</span> </div> <div> 24.10.2 流程控制 <span>       589</span> </div> <div> 24.10.3 声明和调用模板函数 <span>   592</span> </div> <div> 24.10.4 数组遍历 <span>       593</span> </div> <div> 24.10.5 Smarty提供的其他内置函数 <span>      598</span> </div> <div> 24.11 Smarty的模板继承特性 599 </div> <div> 24.11.1 使用{extends}函数实现模板继承 <span>       599</span> </div> <div> 24.11.2 在子模板中覆盖父模板中的部分 </div> <div> 内容区域 <span>       600</span> </div> <div> 24.11.3 合并子模板和父模板的{block}标签 </div> <div> 内容 <span>       601</span> </div> <div> 24.12 Smarty的缓存控制 602 </div> <div> 24.12.1 在Smarty中控制缓存 603 </div> <div> 24.12.2 每个模板多个缓存 <span>       604</span> </div> <div> 24.12.3 为缓存实例消除处理开销 <span>   605</span> </div> <div> 24.12.4 清除缓存 <span>       605</span> </div> <div> 24.12.5 关闭局部缓存 <span>       606</span> </div> <div> 24.13 小结 <span>   606</span> </div> <div> 本章必须掌握的知识点 <span>       606</span> </div> <div> 本章需要了解的内容 <span>    606</span> </div> <div> 本章需要拓展的内容 <span>    607</span> </div> <div> 第25章 MVC模式与PHP框架 <span>       608</span> </div> <div> 25.1 MVC模式在Web中的应用 <span>      608</span> </div> <div> 25.1.1 MVC模式的工作原理 <span>    608</span> </div> <div> 25.1.2 MVC模式的优缺点 <span>       609</span> </div> <div> 25.2 PHP开发框架 <span>    610</span> </div> <div> 25.2.1 什么是框架 <span>     611</span> </div> <div> 25.2.2 为什么要用框架 <span>     611</span> </div> <div> 25.2.3 框架和MVC设计模式的关系 <span>      612</span> </div> <div> 25.2.4 比较流行的PHP框架 <span>    612</span> </div> <div> 25.3 划分模块和操作 <span> 614</span> </div> <div> 25.3.1 为项目划分模块 <span>     614</span> </div> <div> 25.3.2 为模块设置操作 <span>     615</span> </div> <div> 第26章 超轻量级PHP框架BroPHP <span>      616</span> </div> <div> 26.1 BroPHP框架概述 <span>      616</span> </div> <div> 26.1.1 系统特点 616 </div> <div> 26.1.2 环境要求 617 </div> <div> 26.1.3 BroPHP框架源码的目录结构 <span>       617</span> </div> <div> 26.2 单一入口 <span>    618</span> </div> <div> 26.2.1 基于BroPHP框架的单一入口编写 </div> <div> 规则 <span>       618</span> </div> <div> 26.3 部署项目应用目录 <span>    619</span> </div> <div> 26.3.1 项目部署方式 620 </div> <div> 26.3.2 URL访问 <span> 622</span> </div> <div> 26.4 BroPHP框架的基本设置 623 </div> <div> 26.4.1 默认开启 623 </div> <div> 26.4.2 配置文件 623 </div> <div> 26.4.3 内置函数 624 </div> <div> 26.5 声明控制器(Control) <span>    625</span> </div> <div> 26.5.1 控制器的声明(模块) 625 </div> <div> 26.5.2 操作的声明 <span>     626</span> </div> <div> 26.5.3 页面跳转 627 </div> <div> 26.5.4 重定向 <span>     628</span> </div> <div> 26.6 设计视图(View) <span>    629</span> </div> <div> 26.6.1 视图与控制器之间的交互 <span>     629</span> </div> <div> 26.6.2 切换模板风格 630 </div> <div> 26.6.3 模板文件的声明规则 <span>     630</span> </div> <div> 26.6.4 display()用新用法 <span>   631</span> </div> <div> 26.6.5 在模板中的几个常用变量应用 <span>     631</span> </div> <div> 26.6.6 在PHP程序中定义资源位置 <span> 632</span> </div> <div> 26.7 应用模型(Model) 632 </div> <div> 26.7.1 BroPHP数据库操作接口的特性 <span>   632</span> </div> <div> 26.7.2 切换数据库驱动 <span>     633</span> </div> <div> 26.7.3 声明和实例化Model <span>      634</span> </div> <div> 26.7.4 数据库的统一操作接口 637 </div> <div> 26.8 自动验证 <span>    654</span> </div> <div> 26.9 缓存设置 <span>    656</span> </div> <div> 26.9.1 基于memcached缓存设置 <span>     656</span> </div> <div> 26.9.2 基于Smarty的缓存机制 <span>       657</span> </div> <div> 26.10 调试模式 <span>   658</span> </div> <div> 26.11 内置扩展类库 <span>   659</span> </div> <div> 26.11.1 分页类Page <span>   659</span> </div> <div> 26.11.2 验证码类Vcode <span>    660</span> </div> <div> 26.11.3 图像处理类Image <span> 661</span> </div> <div> 26.11.4 文件上传类FileUpload <span> 662</span> </div> <div> 26.12 自定义功能扩展 <span>      664</span> </div> <div> 26.12.1 自定义扩展类库 <span>   664</span> </div> <div> 26.12.2 自定义扩展函数库 <span>       664</span> </div> <div> 26.13 小结 <span>   664</span> </div> <div> 本章必须掌握的知识点 <span>       664</span> </div> <div> 本章需要了解的内容 <span>    665</span> </div> <div> 第6部分 项目开发篇 </div> <div> 第27章 B/S结构软件开发流程 <span>       668</span> </div> <div> 27.1 软件开发过程的划分 <span> 668</span> </div> <div> 27.2 需求开发 <span>    669</span> </div> <div> 27.2.1 需求分析流程 670 </div> <div> 27.2.2 需求分析说明 670 </div> <div> 27.2.3 输出 671 </div> <div> 27.3 系统设计 <span>    671</span> </div> <div> 27.3.1 系统设计流程 672 </div> <div> 27.3.2 系统设计说明 672 </div> <div> 27.4 编码测试 <span>    674</span> </div> <div> 27.4.1 编码与测试流程 <span>     675</span> </div> <div> 27.4.2 编码说明 675 </div> <div> 27.4.3 结果测试说明 676 </div> <div> 27.5 试运行 <span> 678</span> </div> <div> 27.5.1 软件试运行流程 <span>     678</span> </div> <div> 27.5.2 软件试运行说明 <span>     679</span> </div> <div> 27.6 实施 <span>    679</span> </div> <div> 27.6.1 软件实施流程 680 </div> <div> 27.6.2 软件实施说明 680 </div> <div> 27.7 验收 <span>    681</span> </div> <div> 27.7.1 软件验收流程 681 </div> <div> 27.7.2 软件验收说明 682 </div> <div> 27.7.3 验收标准 683 </div> <div> 27.8 服务与维护 <span> 683</span> </div> <div> 27.8.1 责任人 <span>     683</span> </div> <div> 27.8.2 收集信息 683 </div> <div> 27.8.3 维护分析 684 </div> <div> 27.8.4 软件维护 684 </div> <div> 27.8.5 改进 684 </div> <div> 27.8.6 输出 684 </div> <div> 27.9 项目管理 <span>    684</span> </div> <div> 27.9.1 软件项目的计划 <span>     685</span> </div> <div> 27.9.2 软件项目的组织 <span>     687</span> </div> <div> 27.9.3 项目小组组织形式 687 </div> <div> 27.10 项目参考 <span>   688</span> </div> <div> 第28章 需求分析说明书 689 </div> <div> 28.1 文档介绍 <span>    689</span> </div> <div> 28.1.1 编写说明 690 </div> <div> 28.1.2 项目背景 690 </div> <div> 28.1.3 读者对象 690 </div> <div> 28.1.4 参考资料 690 </div> <div> 28.1.5 术语与缩写解释 <span>     691</span> </div> <div> 28.2 任务概述 <span>    691</span> </div> <div> 28.2.1 产品的描述 <span>     691</span> </div> <div> 28.2.2 系统目标 692 </div> <div> 28.2.3 系统功能结构 692 </div> <div> 28.2.4 系统流程图 <span>     692</span> </div> <div> 28.3 业务描述 <span>    694</span> </div> <div> 28.3.1 后台登录管理 694 </div> <div> 28.3.2 后台操作界面管理 695 </div> <div> 28.3.3 常规管理 698 </div> <div> 28.3.4 公告管理 700 </div> <div> 28.3.5 友情链接管理 702 </div> <div> 28.3.6 相册管理 705 </div> <div> 28.3.7 图片管理 708 </div> <div> 28.3.8 栏目管理 710 </div> <div> 28.3.9 文章管理 713 </div> <div> 28.3.10 幻灯片管理 <span>   716</span> </div> <div> 28.3.11 用户组管理 <span>    719</span> </div> <div> 28.3.12 用户管理 <span>       721</span> </div> <div> 28.3.13 前台首页管理 <span>       724</span> </div> <div> 28.3.14 栏目列表管理 <span>       725</span> </div> <div> 28.3.15 文章内容管理 <span>       727</span> </div> <div> 28.3.16 文章搜索管理 <span>       728</span> </div> <div> 28.3.17 登录注册管理 <span>       730</span> </div> <div> 28.3.18 个人空间管理 <span>       731</span> </div> <div> 28.3.19 消息管理 <span>       736</span> </div> <div> 28.3.20 动态管理 <span>       739</span> </div> <div> 28.4 系统运行环境 <span>    743</span> </div> <div> 28.4.1 硬件环境 743 </div> <div> 28.4.2 软件环境 743 </div> <div> 28.5 需求设计评审 <span>    744</span> </div> <div> 第29章 数据库设计说明书 <span>      745</span> </div> <div> 29.1 引言 <span>    745</span> </div> <div> 29.1.1 编写目的 746 </div> <div> 29.1.2 背景 746 </div> <div> 29.1.3 定义 746 </div> <div> 29.1.4 参考资料 746 </div> <div> 29.2 外部设计 <span>    746</span> </div> <div> 29.2.1 标识符和状态 747 </div> <div> 29.2.2 使用它的程序 747 </div> <div> 29.2.3 约定 747 </div> <div> 29.2.4 支持软件 747 </div> <div> 29.3 结构设计 <span>    748</span> </div> <div> 29.4 逻辑结构设计 <span>    754</span> </div> <div> 29.4.1 ER图向关系模型的转化 <span>       754</span> </div> <div> 29.4.2 确定关系模式 754 </div> <div> 29.4.3 消除冗余 755 </div> <div> 29.5 物理结构设计 <span>    755</span> </div> <div> 29.5.1 设计数据表结构 <span>     755</span> </div> <div> 29.5.2 创建数据表 <span>     760</span> </div> <div> 29.5.3 数据表记录的输入 764 </div> <div> 29.6 安全保密设计 <span>    764</span> </div> <div> 29.6.1 完整性 <span>     764</span> </div> <div> 29.6.2 数据库设计的其他问题 765 </div> <div> 第30章 程序设计说明书 766 </div> <div> 30.1 引言 <span>    766</span> </div> <div> 30.1.1 编写目的 766 </div> <div> 30.1.2 背景 767 </div> <div> 30.1.3 定义 767 </div> <div> 30.1.4 使用技术 767 </div> <div> 30.1.5 参考资料 767 </div> <div> 30.2 系统的结构 <span> 767</span> </div> <div> 30.2.1 项目的目录结构 <span>     768</span> </div> <div> 30.2.2 模块结构 768 </div> <div> 30.2.3 程序结构 769 </div> <div> 30.3 用户管理模块设计说明 <span>    774</span> </div> <div> 30.3.1 功能 774 </div> <div> 30.3.2 流程逻辑 774 </div> <div> 30.3.3 接口 775 </div> <div> 30.3.4 存储分配 775 </div> <div> 30.3.5 注释设计 775 </div> <div> 30.3.6 限制条件 775 </div> <div> 30.3.7 测试计划 776 </div> <div> 30.3.8 尚未解决的问题 <span>     776</span> </div> <div> 30.3.9 获取添加用户的界面操作add() <span>    776</span> </div> <div> 30.3.10 用户数据入库的操作insert() <span>      777</span> </div> <div> 30.3.11 查询用户列表操作index() <span>   778</span> </div> <div> 30.3.12 获取修改用户的界面操作mod() <span> 779</span> </div> <div> 30.3.13 用户数据修改的操作update() <span>     780</span> </div> <div> 30.3.14 删除用户操作del() <span>      781</span> </div> <div> 附 录 </div> <div> 附录A 编码规范 <span> 784</span> </div> <div> A.1 绪论 <span>     784</span> </div> <div> A.1.1 适用范围 <span>   784</span> </div> <div> A.1.2 目标 <span>   784</span> </div> <div> A.1.3 开发工具 <span>   785</span> </div> <div> A.2 PHP的文件格式 785 </div> <div> A.2.1 PHP开始和结束标记 <span>      785</span> </div> <div> A.2.2 注释规范 <span>   786</span> </div> <div> A.2.3 空行和空白 <span>      786</span> </div> <div> A.2.4 字符串的使用 <span>   787</span> </div> <div> A.2.5 命名原则 <span>   788</span> </div> <div> A.2.6 语言结构 <span>   791</span> </div> <div> A.2.7 其他规范细节 <span>   793</span> </div> <div> A.3 MySQL设计规范 <span>       794</span> </div> <div> A.3.1 数据表的设计 <span>   794</span> </div> <div> A.3.2 索引设计原则 <span>   795</span> </div> <div> A.3.3 SQL语句设计 796 </div> <div> A.4 模板设计 <span>     796</span> </div> <div> 附录B PHP的安全和优化 <span>       798</span> </div> <div> B.1 网站安全Security <span>       798</span> </div> <div> B.1.1 安全配置PHP <span>   799</span> </div> <div> B.1.2 隐藏配置细节 <span>   802</span> </div> <div> B.1.3 隐藏敏感数据 <span>   803</span> </div> <div> B.1.4 清理用户数据 <span>   804</span> </div> <div> B.1.5 数据加密 <span>   806</span> </div> <div> B.2 网站优化Optimize <span>      807</span> </div> <div> B.2.1 PHP脚本级优化 <span>      807</span> </div> <div> B.2.2 使用代码优化工具 <span>   809</span> </div> <div> B.2.3 缓存加速 <span>   810</span> </div> <div> B.2.4 HTTP加速 <span> 810</span> </div> <div> B.2.5 启用GZIP内容压缩 <span> 810</span> </div> <div> 附录C、附录D见本书光盘 </div> <div>   </div> </div> </div> <p>转载于:https://blog.51cto.com/bvbroadview/1064481</p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1277094420864319488"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(《细说PHP(第2版)(含DVD光盘1张)》图书信息)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1943993659481452544.htm" title="guava loadingCache代码示例" target="_blank">guava loadingCache代码示例</a> <span class="text-muted">IM 胡鹏飞</span> <a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E5%85%B7%E7%B1%BB%E4%BB%8B%E7%BB%8D/1.htm">工具类介绍</a> <div>publicclassTest2{publicstaticvoidmain(String[]args)throwsException{LoadingCachecache=CacheBuilder.newBuilder()//设置并发级别为8,并发级别是指可以同时写缓存的线程数.concurrencyLevel(8)//设置缓存容器的初始容量为10.initialCapacity(10)//设置缓存</div> </li> <li><a href="/article/1943993533169987584.htm" title="C++11堆操作深度解析:std::is_heap与std::is_heap_until原理解析与实践" target="_blank">C++11堆操作深度解析:std::is_heap与std::is_heap_until原理解析与实践</a> <span class="text-muted"></span> <div>文章目录堆结构基础与函数接口堆的核心性质函数签名与核心接口std::is_heapstd::is_heap_until实现原理深度剖析std::is_heap的验证逻辑std::is_heap_until的定位策略算法优化细节代码实践与案例分析基础用法演示自定义比较器实现最小堆检查边缘情况处理性能分析与实际应用时间复杂度对比典型应用场景与手动实现的对比注意事项与最佳实践迭代器要求比较器设计C++标</div> </li> <li><a href="/article/1943993281092317184.htm" title="为什么会出现“与此站点的连接不安全”警告?" target="_blank">为什么会出现“与此站点的连接不安全”警告?</a> <span class="text-muted"></span> <div>当浏览器弹出“与此站点的连接不安全”的红色警告时,不仅会让访客感到不安,还可能直接导致用户流失、品牌信誉受损,甚至引发数据泄露风险。作为网站运营者,如何快速解决这一问题?一、为什么会出现“与此站点的连接不安全”警告?浏览器提示“不安全连接”,本质上是检测到当前网站与用户之间的数据传输未经过加密保护。以下是触发警告的常见原因:1.未安装SSL证书SSL(SecureSocketsLayer)证书是网</div> </li> <li><a href="/article/1943992776169418752.htm" title="Flask框架入门:快速搭建轻量级Python网页应用" target="_blank">Flask框架入门:快速搭建轻量级Python网页应用</a> <span class="text-muted">「已注销」</span> <a class="tag" taget="_blank" href="/search/python-AI/1.htm">python-AI</a><a class="tag" taget="_blank" href="/search/python%E5%9F%BA%E7%A1%80/1.htm">python基础</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%AB%99%E7%BD%91%E7%BB%9C/1.htm">网站网络</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/flask/1.htm">flask</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>转载:Flask框架入门:快速搭建轻量级Python网页应用1.Flask基础Flask是一个使用Python编写的轻量级Web应用框架。它的设计目标是让Web开发变得快速简单,同时保持应用的灵活性。Flask依赖于两个外部库:Werkzeug和Jinja2,Werkzeug作为WSGI工具包处理Web服务的底层细节,Jinja2作为模板引擎渲染模板。安装Flask非常简单,可以使用pip安装命令</div> </li> <li><a href="/article/1943992397344075776.htm" title="驱动程序为什么要做 WHQL 认证?" target="_blank">驱动程序为什么要做 WHQL 认证?</a> <span class="text-muted">GDCA SSL证书</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>驱动程序进行WHQL(WindowsHardwareQualityLabs)认证的核心价值在于解决兼容性、安全性和市场准入三大关键问题,具体必要性如下:️‌一、规避系统拦截,保障驱动可用性‌消除安装警告‌未认证的驱动在安装时会触发Windows的‌红色安全警告‌(如“无法验证发布者”),甚至被系统强制拦截。通过WHQL认证的驱动获得微软数字签名,用户可无阻安装‌。满足系统强制要求‌Windows1</div> </li> <li><a href="/article/1943992396924645376.htm" title="WHQL签名怎么申请" target="_blank">WHQL签名怎么申请</a> <span class="text-muted">GDCA SSL证书</span> <a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a> <div>WHQL(WindowsHardwareQualityLabs)签名是微软对硬件和驱动程序进行认证的一种方式,以确保它们与Windows操作系统的兼容性和稳定性。以下是申请WHQL签名的基本步骤,供您参考:1.准备阶段准备硬件设备和驱动程序:确保您的硬件设备已经准备好,并且对应的驱动程序已经经过充分的测试,能够在各种配置和环境下正常工作。获取EV代码签名证书:根据微软的要求,驱动程序进行WHQL认</div> </li> <li><a href="/article/1943992018892025856.htm" title="JSON 与 AJAX" target="_blank">JSON 与 AJAX</a> <span class="text-muted">Auscy</span> <a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/ajax/1.htm">ajax</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>一、JSON(JavaScriptObjectNotation)1.数据类型与语法细节支持的数据类型:基本类型:字符串(需用双引号)、数字、布尔值(true/false)、null。复杂类型:数组([])、对象({})。严格语法规范:键名必须用双引号包裹(如"name":"张三")。数组元素用逗号分隔,最后一个元素后不能有多余逗号。数字不能以0开头(如012会被解析为12),不支持八进制/十六进制</div> </li> <li><a href="/article/1943992018111885312.htm" title="发票合并工具" target="_blank">发票合并工具</a> <span class="text-muted">小朋的软件园</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a> <div>"发票合并工具"是一款专为高效整理票据设计的实用工具,支持将来自不同渠道的发票文件(如PDF文档、各类图片格式)快速整合为排版规范的PDF文件,尤其适用于财务报销场景下的批量票据处理需求。核心功能亮点多格式兼容:无缝导入PDF文件及常见图片格式(.png/.jpg/.jpeg/.bmp),适配多来源发票整合需求。智能布局配置:提供灵活的页面布局选项(每页2/3/4张发票),其中"2合1"模式针对报</div> </li> <li><a href="/article/1943991261279088640.htm" title="C++ 11 Lambda表达式和min_element()与max_element()的使用_c++ lamda函数 min_element((1)" target="_blank">C++ 11 Lambda表达式和min_element()与max_element()的使用_c++ lamda函数 min_element((1)</a> <span class="text-muted">2401_84976182</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上CC++开发知识点,真正体系化!由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新如果你需要这些资料,可以戳这里获取#include#include#includeusingnamespacestd;boolcmp(int</div> </li> <li><a href="/article/1943991262029869056.htm" title="C++ 11 Lambda表达式和min_element()与max_element()的使用_c++ lamda函数 min_element(" target="_blank">C++ 11 Lambda表达式和min_element()与max_element()的使用_c++ lamda函数 min_element(</a> <span class="text-muted"></span> <div>网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以添加戳这里获取一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!intmain(){vectormyvec{3,</div> </li> <li><a href="/article/1943990630690648064.htm" title="【LeetCode 热题 100】24. 两两交换链表中的节点——(解法一)迭代+哨兵" target="_blank">【LeetCode 热题 100】24. 两两交换链表中的节点——(解法一)迭代+哨兵</a> <span class="text-muted">xumistore</span> <a class="tag" taget="_blank" href="/search/LeetCode/1.htm">LeetCode</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E9%93%BE%E8%A1%A8/1.htm">链表</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>Problem:24.两两交换链表中的节点题目:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。文章目录整体思路完整代码时空复杂度时间复杂度:O(N)空间复杂度:O(1)整体思路这段代码旨在解决一个经典的链表操作问题:两两交换链表中的节点(SwapNodesinPairs)。问题要求将链表中每两个相邻的节点进行交换</div> </li> <li><a href="/article/1943990125864218624.htm" title="JavaScript 树形菜单总结" target="_blank">JavaScript 树形菜单总结</a> <span class="text-muted">Auscy</span> <a class="tag" taget="_blank" href="/search/microsoft/1.htm">microsoft</a> <div>树形菜单是前端开发中常见的交互组件,用于展示具有层级关系的数据(如文件目录、分类列表、组织架构等)。以下从核心概念、实现方式、常见功能及优化方向等方面进行总结。一、核心概念层级结构:数据以父子嵌套形式存在,如{id:1,children:[{id:2}]}。节点:树形结构的基本单元,包含自身信息及子节点(若有)。展开/折叠:子节点的显示与隐藏切换,是树形菜单的核心交互。递归渲染:因数据层级不固定,</div> </li> <li><a href="/article/1943989244456398848.htm" title="冒泡、选择、插入排序:三大基础排序算法深度解析(C语言实现)" target="_blank">冒泡、选择、插入排序:三大基础排序算法深度解析(C语言实现)</a> <span class="text-muted">xienda</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95/1.htm">排序算法</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>在算法学习道路上,排序算法是每位程序员必须掌握的基石。本文将深入解析冒泡排序、选择排序和插入排序这三种基础排序算法,通过C语言代码实现和对比分析,帮助读者彻底理解它们的差异与应用场景。算法原理与代码实现1.冒泡排序(BubbleSort)工作原理:通过重复比较相邻元素,将较大元素逐步"冒泡"到数组末尾。voidbubbleSort(intarr[],intn){  for(inti=0;iarr[</div> </li> <li><a href="/article/1943988865945628672.htm" title="Leetcode 148. 排序链表" target="_blank">Leetcode 148. 排序链表</a> <span class="text-muted"></span> <div>文章目录前引题目代码(首刷看题解)代码(8.9二刷部分看解析)代码(9.15三刷部分看解析)前引综合性比较强的一道题,要求时间复杂度必须O(logn)才能通过,最适合链表的排序算法就是归并。这里采用自顶向下的方法步骤:找到链表中点(双指针)对两个子链表排序(递归,直到只有一个结点,记得将子链表最后指向nullptr)归并(引入dummy结点)题目Leetcode148.排序链表代码(首刷看题解)c</div> </li> <li><a href="/article/1943988487875260416.htm" title="python_虚拟环境" target="_blank">python_虚拟环境</a> <span class="text-muted">阿_焦</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>第一、配置虚拟环境:virtualenv(1)pipvirtualenv>安装虚拟环境包(2)pipinstallvirtualenvwrapper-win>安装虚拟环境依赖包(3)c盘创建虚拟目录>C:\virtualenv>配置环境变量【了解一下】:(1)如何使用virtualenv创建虚拟环境a、cd到C:\virtualenv目录下:b、mkvirtualenvname>创建虚拟环境nam</div> </li> <li><a href="/article/1943988486428225536.htm" title="全面触摸屏输入法设计与实现" target="_blank">全面触摸屏输入法设计与实现</a> <span class="text-muted">长野君</span> <div>本文还有配套的精品资源,点击获取简介:触摸屏输入法是针对触摸设备优化的文字输入方案,包括虚拟键盘、手写、语音识别和手势等多种输入方式。本方案通过提供主程序文件、用户手册、界面截图、示例图、说明文本和音效文件,旨在为用户提供一个完整的、多样的文字输入体验。开发者通过持续优化算法和用户界面,使用户在无物理键盘环境下也能高效准确地进行文字输入。1.触摸屏输入法概述简介在现代信息技术飞速发展的今天,触摸屏</div> </li> <li><a href="/article/1943988486843461632.htm" title="LeetCode 148. 排序链表:归并排序的细节解析" target="_blank">LeetCode 148. 排序链表:归并排序的细节解析</a> <span class="text-muted">进击的小白菜</span> <a class="tag" taget="_blank" href="/search/2025/1.htm">2025</a><a class="tag" taget="_blank" href="/search/Top100/1.htm">Top100</a><a class="tag" taget="_blank" href="/search/%E8%AF%A6%E8%A7%A3/1.htm">详解</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E9%93%BE%E8%A1%A8/1.htm">链表</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>文章目录题目描述一、方法思路:归并排序的核心步骤二、关键实现细节:快慢指针分割链表1.快慢指针的初始化问题2.为什么选择`fast=head.next`?示例1:链表长度为偶数(`1->2->3->4`)三、完整代码实现四、复杂度分析五、总结题目描述LeetCode148题要求对链表进行排序,时间复杂度需为O(nlogn),且空间复杂度为O(logn)。由于链表的特殊结构(无法随机访问),归并排序</div> </li> <li><a href="/article/1943987856808669184.htm" title="前端项目架构设计要领" target="_blank">前端项目架构设计要领</a> <span class="text-muted"></span> <div>1.架构设计的核心目标在设计前端项目架构时,核心目标是模块化、可维护、可扩展、可测试,以及开发效率的最大化。这些目标可以通过以下几个方面来实现:组件化:将UI功能封装为可复用的组件。模块化:将业务逻辑分解为独立的模块或服务。自动化构建与部署:实现自动化构建、测试和部署流程,减少人为操作的错误。代码规范化与检查:确保团队协作时,代码风格和质量一致。2.项目目录结构设计一个清晰合理的目录结构对大型项目</div> </li> <li><a href="/article/1943987101301272576.htm" title="精通Canvas:15款时钟特效代码实现指南" target="_blank">精通Canvas:15款时钟特效代码实现指南</a> <span class="text-muted">烟幕缭绕</span> <div>本文还有配套的精品资源,点击获取简介:HTML5的Canvas是一个用于绘制矢量图形的API,通过JavaScript实现动态效果。本项目集合了15种不同的时钟特效代码,帮助开发者通过学习绘制圆形、线条、时间更新、旋转、颜色样式设置及动画效果等概念,深化对Canvas的理解和应用。项目中的CSS文件负责时钟的样式设定,而JS文件则包含实现各种特效的逻辑,通过不同的函数或类处理时间更新和动画绘制,提</div> </li> <li><a href="/article/1943986975048527872.htm" title="高效批量单词翻译工具的设计与应用" target="_blank">高效批量单词翻译工具的设计与应用</a> <span class="text-muted"></span> <div>本文还有配套的精品资源,点击获取简介:在信息技术飞速发展的今天,批量单词翻译工具通过计算机的数据处理能力,大大提高了语言学习和文字处理的效率。用户通过简单输入单词列表到一个文本文件,并运行翻译程序,即可获得翻译结果并保存至指定文件。该工具集成了内置或外部翻译引擎,利用自然语言处理技术实现快速准确的翻译,并可能提供词性识别等附加功能。尽管机器翻译无法完全取代人工校对,但它为用户提供了一种高效的翻译解</div> </li> <li><a href="/article/1943986471220342784.htm" title="嵌入式系统LCD显示模块编程实践" target="_blank">嵌入式系统LCD显示模块编程实践</a> <span class="text-muted"></span> <div>本文还有配套的精品资源,点击获取简介:本文档提供了一个具有800x480分辨率的3.5英寸液晶显示模块LW350AC9001的驱动程序代码,以及嵌入式系统中使用C/C++语言进行硬件编程的实践指南。该模块的2mm厚度使其适用于空间受限的便携式设备。内容包括驱动程序源代码、硬件控制接口使用方法,以及如何在嵌入式系统中进行图形处理、电源管理与性能优化。1.嵌入式系统原理1.1嵌入式系统概念嵌入式系统是</div> </li> <li><a href="/article/1943986344934043648.htm" title="深入剖析OpenJDK 18 GA源码:Java平台最新发展" target="_blank">深入剖析OpenJDK 18 GA源码:Java平台最新发展</a> <span class="text-muted">想法臃肿</span> <div>本文还有配套的精品资源,点击获取简介:OpenJDK18GA作为Java开发的关键里程碑,提供了诸多新特性和改进。本文章深入探讨了OpenJDK18GA源码,揭示其内部机制,帮助开发者更好地理解和利用这个版本。文章还涵盖了PatternMatching、SealedClasses、Records、JEP395、JEP406和JEP407等特性,以及HotSpot虚拟机、编译器、垃圾收集器、内存模型</div> </li> <li><a href="/article/1943985463522029568.htm" title="Android 开源组件和第三方库汇总" target="_blank">Android 开源组件和第三方库汇总</a> <span class="text-muted">gyyzzr</span> <a class="tag" taget="_blank" href="/search/Android/1.htm">Android</a><a class="tag" taget="_blank" href="/search/Android/1.htm">Android</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90%E6%A1%86%E6%9E%B6/1.htm">开源框架</a> <div>转载1、github排名https://github.com/trending,github搜索:https://github.com/search2、https://github.com/wasabeef/awesome-android-ui目录UIUI卫星菜单节选器下拉刷新模糊效果HUD与Toast进度条UI其它动画网络相关响应式编程地图数据库图像浏览及处理视频音频处理测试及调试动态更新热更新</div> </li> <li><a href="/article/1943985461995302912.htm" title="22、文档:Google Docs的强大与易用性" target="_blank">22、文档:Google Docs的强大与易用性</a> <span class="text-muted">pear55</span> <a class="tag" taget="_blank" href="/search/%E6%8E%A2%E7%B4%A2%E4%BA%91%E6%8A%80%E6%9C%AF%E7%9A%84%E6%97%A0%E9%99%90%E5%8F%AF%E8%83%BD/1.htm">探索云技术的无限可能</a><a class="tag" taget="_blank" href="/search/Google/1.htm">Google</a><a class="tag" taget="_blank" href="/search/Docs/1.htm">Docs</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E7%AB%AF%E6%96%87%E6%A1%A3/1.htm">云端文档</a><a class="tag" taget="_blank" href="/search/%E8%AF%AD%E9%9F%B3%E8%BE%93%E5%85%A5/1.htm">语音输入</a> <div>文档:GoogleDocs的强大与易用性1.GoogleDocs简介GoogleDocs是Google提供的在线办公套件的一部分,它是一个基于云端的文字处</div> </li> <li><a href="/article/1943985462716723200.htm" title="docker-compose方式搭建lnmp环境——筑梦之路" target="_blank">docker-compose方式搭建lnmp环境——筑梦之路</a> <span class="text-muted">筑梦之路</span> <a class="tag" taget="_blank" href="/search/linux%E7%B3%BB%E7%BB%9F%E8%BF%90%E7%BB%B4/1.htm">linux系统运维</a><a class="tag" taget="_blank" href="/search/%E5%9B%BD%E4%BA%A7%E5%8C%96/1.htm">国产化</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/adb/1.htm">adb</a> <div>docker-compose.yml文件#生成docker-compose.ymlcat>docker-compose.ymlnginx/conf.d/default.conf">www/index.phpecho"开始启动服务..."docker-composeup-d#获取本机ipip_addr=$(hostname-I|awk'{print$1}')echo"部署完成!"echo"访问测试页</div> </li> <li><a href="/article/1943985208218939392.htm" title="Python爱心光波" target="_blank">Python爱心光波</a> <span class="text-muted"></span> <div>系列文章序号直达链接Tkinter1Python李峋同款可写字版跳动的爱心2Python跳动的双爱心3Python蓝色跳动的爱心4Python动漫烟花5Python粒子烟花Turtle1Python满屏飘字2Python蓝色流星雨3Python金色流星雨4Python漂浮爱心5Python爱心光波①6Python爱心光波②7Python满天繁星8Python五彩气球9Python白色飘雪10Pyt</div> </li> <li><a href="/article/1943985208697090048.htm" title="Python流星雨" target="_blank">Python流星雨</a> <span class="text-muted">Want595</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>文章目录系列文章写在前面技术需求完整代码代码分析1.模块导入2.画布设置3.画笔设置4.颜色列表5.流星类(Star)6.流星对象创建7.主循环8.流星运动逻辑9.视觉效果10.总结写在后面系列文章序号直达链接表白系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4Python李峋同款可写字版跳动的爱心5Python流星雨代码6Python</div> </li> <li><a href="/article/1943983696184930304.htm" title="基于链家网的二手房数据采集清洗与可视化分析" target="_blank">基于链家网的二手房数据采集清洗与可视化分析</a> <span class="text-muted">Mint_Datazzh</span> <a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE/1.htm">项目</a><a class="tag" taget="_blank" href="/search/selenium/1.htm">selenium</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB/1.htm">网络爬虫</a> <div>个人学习内容笔记,仅供参考。项目链接:https://gitee.com/rongwu651/lianjia原文链接:基于链家网的二手房数据采集清洗与可视化分析–笔墨云烟研究内容该课题的主要目的是通过将二手房网站上的存量与已销售房源,构建一个二手房市场行情情况与房源特点的可视化平台。该平台通过HTML架构和Echarts完成可视化的搭建。因此,该课题的主要研究内容就是如何利用相关技术设计并实现这样</div> </li> <li><a href="/article/1943983191836651520.htm" title="【超硬核】JVM源码解读:Java方法main在虚拟机上解释执行" target="_blank">【超硬核】JVM源码解读:Java方法main在虚拟机上解释执行</a> <span class="text-muted">HeapDump性能社区</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a> <div>本文由HeapDump性能社区首席讲师鸠摩(马智)授权整理发布第1篇-关于Java虚拟机HotSpot,开篇说的简单点开讲Java运行时,这一篇讲一些简单的内容。我们写的主类中的main()方法是如何被Java虚拟机调用到的?在Java类中的一些方法会被由C/C++编写的HotSpot虚拟机的C/C++函数调用,不过由于Java方法与C/C++函数的调用约定不同,所以并不能直接调用,需要JavaC</div> </li> <li><a href="/article/1943983064304644096.htm" title="算法学习笔记:17.蒙特卡洛算法 ——从原理到实战,涵盖 LeetCode 与考研 408 例题" target="_blank">算法学习笔记:17.蒙特卡洛算法 ——从原理到实战,涵盖 LeetCode 与考研 408 例题</a> <span class="text-muted"></span> <div>在计算机科学和数学领域,蒙特卡洛算法(MonteCarloAlgorithm)以其独特的随机抽样思想,成为解决复杂问题的有力工具。从圆周率的计算到金融风险评估,从物理模拟到人工智能,蒙特卡洛算法都发挥着不可替代的作用。本文将深入剖析蒙特卡洛算法的思想、解题思路,结合实际应用场景与Java代码实现,并融入考研408的相关考点,穿插图片辅助理解,帮助你全面掌握这一重要算法。蒙特卡洛算法的基本概念蒙特卡</div> </li> <li><a href="/article/110.htm" title="强大的销售团队背后 竟然是大数据分析的身影" target="_blank">强大的销售团队背后 竟然是大数据分析的身影</a> <span class="text-muted">蓝儿唯美</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a> <div>Mark Roberge是HubSpot的首席财务官,在招聘销售职位时使用了大量数据分析。但是科技并没有挤走直觉。 大家都知道数理学家实际上已经渗透到了各行各业。这些热衷数据的人们通过处理数据理解商业流程的各个方面,以重组弱点,增强优势。 Mark Roberge是美国HubSpot公司的首席财务官,HubSpot公司在构架集客营销现象方面出过一份力——因此他也是一位数理学家。他使用数据分析 </div> </li> <li><a href="/article/237.htm" title="Haproxy+Keepalived高可用双机单活" target="_blank">Haproxy+Keepalived高可用双机单活</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1/1.htm">负载均衡</a><a class="tag" taget="_blank" href="/search/keepalived/1.htm">keepalived</a><a class="tag" taget="_blank" href="/search/haproxy/1.htm">haproxy</a><a class="tag" taget="_blank" href="/search/%E9%AB%98%E5%8F%AF%E7%94%A8/1.htm">高可用</a> <div>我们的应用MyApp不支持集群,但要求双机单活(两台机器:master和slave): 1.正常情况下,只有master启动MyApp并提供服务 2.当master发生故障时,slave自动启动本机的MyApp,同时虚拟IP漂移至slave,保持对外提供服务的IP和端口不变 F5据说也能满足上面的需求,但F5的通常用法都是双机双活,单活的话还没研究过 服务器资源 10.7</div> </li> <li><a href="/article/364.htm" title="eclipse编辑器中文乱码问题解决" target="_blank">eclipse编辑器中文乱码问题解决</a> <span class="text-muted">0624chenhong</span> <a class="tag" taget="_blank" href="/search/eclipse%E4%B9%B1%E7%A0%81/1.htm">eclipse乱码</a> <div>使用Eclipse编辑文件经常出现中文乱码或者文件中有中文不能保存的问题,Eclipse提供了灵活的设置文件编码格式的选项,我们可以通过设置编码 格式解决乱码问题。在Eclipse可以从几个层面设置编码格式:Workspace、Project、Content Type、File 本文以Eclipse 3.3(英文)为例加以说明: 1. 设置Workspace的编码格式: Windows-&g</div> </li> <li><a href="/article/491.htm" title="基础篇--resources资源" target="_blank">基础篇--resources资源</a> <span class="text-muted">不懂事的小屁孩</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>最近一直在做java开发,偶尔敲点android代码,突然发现有些基础给忘记了,今天用半天时间温顾一下resources的资源。 String.xml    字符串资源   涉及国际化问题  http://www.2cto.com/kf/201302/190394.html   string-array</div> </li> <li><a href="/article/618.htm" title="接上篇补上window平台自动上传证书文件的批处理问卷" target="_blank">接上篇补上window平台自动上传证书文件的批处理问卷</a> <span class="text-muted">酷的飞上天空</span> <a class="tag" taget="_blank" href="/search/window/1.htm">window</a> <div> @echo off : host=服务器证书域名或ip,需要和部署时服务器的域名或ip一致 ou=公司名称, o=公司名称 set host=localhost set ou=localhost set o=localhost set password=123456 set validity=3650 set salias=s</div> </li> <li><a href="/article/745.htm" title="企业物联网大潮涌动:如何做好准备?" target="_blank">企业物联网大潮涌动:如何做好准备?</a> <span class="text-muted">蓝儿唯美</span> <a class="tag" taget="_blank" href="/search/%E4%BC%81%E4%B8%9A/1.htm">企业</a> <div>物联网的可能性也许是无限的。要找出架构师可以做好准备的领域然后利用日益连接的世界。 尽管物联网(IoT)还很新,企业架构师现在也应该为一个连接更加紧密的未来做好计划,而不是跟上闸门被打开后的集成挑战。“问题不在于物联网正在进入哪些领域,而是哪些地方物联网没有在企业推进,” Gartner研究总监Mike Walker说。 Gartner预测到2020年物联网设备安装量将达260亿,这些设备在全</div> </li> <li><a href="/article/872.htm" title="spring学习——数据库(mybatis持久化框架配置)" target="_blank">spring学习——数据库(mybatis持久化框架配置)</a> <span class="text-muted">a-john</span> <a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a> <div>Spring提供了一组数据访问框架,集成了多种数据访问技术。无论是JDBC,iBATIS(mybatis)还是Hibernate,Spring都能够帮助消除持久化代码中单调枯燥的数据访问逻辑。可以依赖Spring来处理底层的数据访问。 mybatis是一种Spring持久化框架,要使用mybatis,就要做好相应的配置: 1,配置数据源。有很多数据源可以选择,如:DBCP,JDBC,aliba</div> </li> <li><a href="/article/999.htm" title="Java静态代理、动态代理实例" target="_blank">Java静态代理、动态代理实例</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/Java%E9%9D%99%E6%80%81%E4%BB%A3%E7%90%86/1.htm">Java静态代理</a> <div> 采用Java代理模式,代理类通过调用委托类对象的方法,来提供特定的服务。委托类需要实现一个业务接口,代理类返回委托类的实例接口对象。 按照代理类的创建时期,可以分为:静态代理和动态代理。 所谓静态代理: 指程序员创建好代理类,编译时直接生成代理类的字节码文件。 所谓动态代理: 在程序运行时,通过反射机制动态生成代理类。   一、静态代理类实例: 1、Serivce.ja</div> </li> <li><a href="/article/1126.htm" title="Struts1与Struts2的12点区别" target="_blank">Struts1与Struts2的12点区别</a> <span class="text-muted">asia007</span> <a class="tag" taget="_blank" href="/search/Struts1%E4%B8%8EStruts2/1.htm">Struts1与Struts2</a> <div>1) 在Action实现类方面的对比:Struts 1要求Action类继承一个抽象基类;Struts 1的一个具体问题是使用抽象类编程而不是接口。Struts 2 Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制的服务成为可能。Struts 2提供一个ActionSupport基类去实现常用的接口。即使Action接口不是必须实现的,只有一个包含execute方法的P</div> </li> <li><a href="/article/1253.htm" title="初学者要多看看帮助文档 不要用js来写Jquery的代码" target="_blank">初学者要多看看帮助文档 不要用js来写Jquery的代码</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/js/1.htm">js</a> <div>解析json数据的时候需要将解析的数据写到文本框中,  出现了用js来写Jquery代码的问题;   1, JQuery的赋值  有问题    代码如下: data.username 表示的是:  网易            $("#use</div> </li> <li><a href="/article/1380.htm" title="经理怎么和员工搞好关系和信任" target="_blank">经理怎么和员工搞好关系和信任</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/%E5%9B%A2%E9%98%9F/1.htm">团队</a><a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/1.htm">项目管理</a><a class="tag" taget="_blank" href="/search/%E7%AE%A1%E7%90%86/1.htm">管理</a> <div>        产品经理应该有坚实的专业基础,这里的基础包括产品方向和产品策略的把握,包括设计,也包括对技术的理解和见识,对运营和市场的敏感,以及良好的沟通和协作能力。换言之,既然是产品经理,整个产品的方方面面都应该能摸得出门道。这也不懂那也不懂,如何让人信服?如何让自己懂?就是不断学习,不仅仅从书本中,更从平时和各种角色的沟通</div> </li> <li><a href="/article/1507.htm" title="如何为rich:tree不同类型节点设置右键菜单" target="_blank">如何为rich:tree不同类型节点设置右键菜单</a> <span class="text-muted">sunjing</span> <a class="tag" taget="_blank" href="/search/contextMenu/1.htm">contextMenu</a><a class="tag" taget="_blank" href="/search/tree/1.htm">tree</a><a class="tag" taget="_blank" href="/search/Richfaces/1.htm">Richfaces</a> <div>组合使用target和targetSelector就可以啦,如下: <rich:tree id="ruleTree" value="#{treeAction.ruleTree}" var="node" nodeType="#{node.type}" selectionChangeListener=&qu</div> </li> <li><a href="/article/1634.htm" title="【Redis二】Redis2.8.17搭建主从复制环境" target="_blank">【Redis二】Redis2.8.17搭建主从复制环境</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a> <div>开始使用Redis2.8.17 Redis第一篇在Redis2.4.5上搭建主从复制环境,对它的主从复制的工作机制,真正的惊呆了。不知道Redis2.8.17的主从复制机制是怎样的,Redis到了2.4.5这个版本,主从复制还做成那样,Impossible is nothing! 本篇把主从复制环境再搭一遍看看效果,这次在Unbuntu上用官方支持的版本。   Ubuntu上安装Red</div> </li> <li><a href="/article/1761.htm" title="JSONObject转换JSON--将Date转换为指定格式" target="_blank">JSONObject转换JSON--将Date转换为指定格式</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/JSONObject/1.htm">JSONObject</a> <div>项目中,经常会用JSONObject插件将JavaBean或List<JavaBean>转换为JSON格式的字符串,而JavaBean的属性有时候会有java.util.Date这个类型的时间对象,这时JSONObject默认会将Date属性转换成这样的格式:   {"nanos":0,"time":-27076233600000,</div> </li> <li><a href="/article/1888.htm" title="JavaScript语言精粹读书笔记" target="_blank">JavaScript语言精粹读书笔记</a> <span class="text-muted">braveCS</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a> <div>【经典用法】:   //①定义新方法 Function .prototype.method=function(name, func){ this.prototype[name]=func; return this; } //②给Object增加一个create方法,这个方法创建一个使用原对</div> </li> <li><a href="/article/2015.htm" title="编程之美-找符合条件的整数 用字符串来表示大整数避免溢出" target="_blank">编程之美-找符合条件的整数 用字符串来表示大整数避免溢出</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B9%8B%E7%BE%8E/1.htm">编程之美</a> <div> import java.util.LinkedList; public class FindInteger { /** * 编程之美 找符合条件的整数 用字符串来表示大整数避免溢出 * 题目:任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0 * * 假设当前正在搜索由0,1组成的K位十进制数</div> </li> <li><a href="/article/2142.htm" title="读书笔记" target="_blank">读书笔记</a> <span class="text-muted">chengxuyuancsdn</span> <a class="tag" taget="_blank" href="/search/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/1.htm">读书笔记</a> <div>1、Struts访问资源 2、把静态参数传递给一个动作 3、<result>type属性 4、s:iterator、s:if c:forEach 5、StringBuilder和StringBuffer 6、spring配置拦截器 1、访问资源 (1)通过ServletActionContext对象和实现ServletContextAware,ServletReque</div> </li> <li><a href="/article/2269.htm" title="[通讯与电力]光网城市建设的一些问题" target="_blank">[通讯与电力]光网城市建设的一些问题</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E9%97%AE%E9%A2%98/1.htm">问题</a> <div>       信号防护的问题,前面已经说过了,这里要说光网交换机与市电保障的关系       我们过去用的ADSL线路,因为是电话线,在小区和街道电力中断的情况下,只要在家里用笔记本电脑+蓄电池,连接ADSL,同样可以上网........     </div> </li> <li><a href="/article/2396.htm" title="oracle 空间RESUMABLE" target="_blank">oracle 空间RESUMABLE</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E7%A9%BA%E9%97%B4%E4%B8%8D%E8%B6%B3/1.htm">空间不足</a><a class="tag" taget="_blank" href="/search/RESUMABLE/1.htm">RESUMABLE</a><a class="tag" taget="_blank" href="/search/%E9%94%99%E8%AF%AF%E6%8C%82%E8%B5%B7/1.htm">错误挂起</a> <div>空间RESUMABLE操作  转 Oracle从9i开始引入这个功能,当出现空间不足等相关的错误时,Oracle可以不是马上返回错误信息,并回滚当前的操作,而是将操作挂起,直到挂起时间超过RESUMABLE TIMEOUT,或者空间不足的错误被解决。 这一篇简单介绍空间RESUMABLE的例子。 第一次碰到这个特性是在一次安装9i数据库的过程中,在利用D</div> </li> <li><a href="/article/2523.htm" title="重构第一次写的线程池" target="_blank">重构第一次写的线程池</a> <span class="text-muted">dieslrae</span> <a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B%E6%B1%A0+python/1.htm">线程池 python</a> <div>最近没有什么学习欲望,修改之前的线程池的计划一直搁置,这几天比较闲,还是做了一次重构,由之前的2个类拆分为现在的4个类. 1、首先是工作线程类:TaskThread,此类为一个工作线程,用于完成一个工作任务,提供等待(wait),继续(proceed),绑定任务(bindTask)等方法 #!/usr/bin/env python # -*- coding:utf8 -*- </div> </li> <li><a href="/article/2650.htm" title="C语言学习六指针" target="_blank">C语言学习六指针</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/c/1.htm">c</a> <div>初识指针,简单示例程序: /* 指针就是地址,地址就是指针 地址就是内存单元的编号 指针变量是存放地址的变量 指针和指针变量是两个不同的概念 但是要注意: 通常我们叙述时会把指针变量简称为指针,实际它们含义并不一样 */ # include <stdio.h> int main(void) { int * p; // p是变量的名字, int * </div> </li> <li><a href="/article/2777.htm" title="yii2 beforeSave afterSave beforeDelete" target="_blank">yii2 beforeSave afterSave beforeDelete</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/delete/1.htm">delete</a> <div>public function afterSave($insert, $changedAttributes) { parent::afterSave($insert, $changedAttributes); if($insert) { //这里是新增数据 } else { //这里是更新数据 } }  </div> </li> <li><a href="/article/2904.htm" title="timertask" target="_blank">timertask</a> <span class="text-muted">shuizhaosi888</span> <a class="tag" taget="_blank" href="/search/timertask/1.htm">timertask</a> <div>java.util.Timer timer = new java.util.Timer(true); // true 说明这个timer以daemon方式运行(优先级低, // 程序结束timer也自动结束),注意,javax.swing // 包中也有一个Timer类,如果import中用到swing包, // 要注意名字的冲突。 TimerTask task = new</div> </li> <li><a href="/article/3031.htm" title="Spring Security(13)——session管理" target="_blank">Spring Security(13)——session管理</a> <span class="text-muted">234390216</span> <a class="tag" taget="_blank" href="/search/session/1.htm">session</a><a class="tag" taget="_blank" href="/search/Spring+Security/1.htm">Spring Security</a><a class="tag" taget="_blank" href="/search/%E6%94%BB%E5%87%BB%E4%BF%9D%E6%8A%A4/1.htm">攻击保护</a><a class="tag" taget="_blank" href="/search/%E8%B6%85%E6%97%B6/1.htm">超时</a> <div>session管理 目录   1.1     检测session超时 1.2     concurrency-control 1.3     session 固定攻击保护         </div> </li> <li><a href="/article/3158.htm" title="公司项目NODEJS实践0.3[ mongo / session ...]" target="_blank">公司项目NODEJS实践0.3[ mongo / session ...]</a> <span class="text-muted">逐行分析JS源代码</span> <a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/session/1.htm">session</a><a class="tag" taget="_blank" href="/search/nodejs/1.htm">nodejs</a> <div>    http://www.upopen.cn   一、前言         书接上回,我们搭建了WEB服务端路由、模板等功能,完成了register 通过ajax与后端的通信,今天主要完成数据与mongodb的存取,实现注册 / 登录 /</div> </li> <li><a href="/article/3285.htm" title="pojo.vo.po.domain区别" target="_blank">pojo.vo.po.domain区别</a> <span class="text-muted">LiaoJuncai</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/VO/1.htm">VO</a><a class="tag" taget="_blank" href="/search/POJO/1.htm">POJO</a><a class="tag" taget="_blank" href="/search/javabean/1.htm">javabean</a><a class="tag" taget="_blank" href="/search/domain/1.htm">domain</a> <div>  POJO = "Plain Old Java Object",是MartinFowler等发明的一个术语,用来表示普通的Java对象,不是JavaBean, EntityBean 或者 SessionBean。POJO不但当任何特殊的角色,也不实现任何特殊的Java框架的接口如,EJB, JDBC等等。      即POJO是一个简单的普通的Java对象,它包含业务逻辑</div> </li> <li><a href="/article/3412.htm" title="Windows Error Code" target="_blank">Windows Error Code</a> <span class="text-muted">OhMyCC</span> <a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a> <div>0 操作成功完成. 1 功能错误. 2 系统找不到指定的文件. 3 系统找不到指定的路径. 4 系统无法打开文件. 5 拒绝访问. 6 句柄无效. 7 存储控制块被损坏. 8 存储空间不足, 无法处理此命令. 9 存储控制块地址无效. 10 环境错误. 11 试图加载格式错误的程序. 12 访问码无效. 13 数据无效. 14 存储器不足, 无法完成此操作. 15 系</div> </li> <li><a href="/article/3539.htm" title="在storm集群环境下发布Topology" target="_blank">在storm集群环境下发布Topology</a> <span class="text-muted">roadrunners</span> <a class="tag" taget="_blank" href="/search/%E9%9B%86%E7%BE%A4/1.htm">集群</a><a class="tag" taget="_blank" href="/search/storm/1.htm">storm</a><a class="tag" taget="_blank" href="/search/topology/1.htm">topology</a><a class="tag" taget="_blank" href="/search/spout/1.htm">spout</a><a class="tag" taget="_blank" href="/search/bolt/1.htm">bolt</a> <div>storm的topology设计和开发就略过了。本章主要来说说如何在storm的集群环境中,通过storm的管理命令来发布和管理集群中的topology。   1、打包 打包插件是使用maven提供的maven-shade-plugin,详细见maven-shade-plugin。 <plugin> <groupId>org.apache.maven.</div> </li> <li><a href="/article/3666.htm" title="为什么不允许代码里出现“魔数”" target="_blank">为什么不允许代码里出现“魔数”</a> <span class="text-muted">tomcat_oracle</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>  在一个新项目中,我最先做的事情之一,就是建立使用诸如Checkstyle和Findbugs之类工具的准则。目的是制定一些代码规范,以及避免通过静态代码分析就能够检测到的bug。   迟早会有人给出案例说这样太离谱了。其中的一个案例是Checkstyle的魔数检查。它会对任何没有定义常量就使用的数字字面量给出警告,除了-1、0、1和2。   很多开发者在这个检查方面都有问题,这可以从结果</div> </li> <li><a href="/article/3793.htm" title="zoj 3511 Cake Robbery(线段树)" target="_blank">zoj 3511 Cake Robbery(线段树)</a> <span class="text-muted">阿尔萨斯</span> <a class="tag" taget="_blank" href="/search/%E7%BA%BF%E6%AE%B5%E6%A0%91/1.htm">线段树</a> <div> 题目链接:zoj 3511 Cake Robbery 题目大意:就是有一个N边形的蛋糕,切M刀,从中挑选一块边数最多的,保证没有两条边重叠。 解题思路:有多少个顶点即为有多少条边,所以直接按照切刀切掉点的个数排序,然后用线段树维护剩下的还有哪些点。 #include <cstdio> #include <cstring> #include <vector&</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>