说点啥吧
嗯...搬家了,以后不来这了,告下别
引用css文件到html的方法
html引用css方法:
1、内联样式表:在HTML元素标签中直接使用style属性内联。
如:<h1 style="color:blue">hello </h1>
缺点:代码量大,不利于更新。
2、嵌入样式表:通过HTML的<style>标签将CSS嵌入到HTML中。
可以控制当前页面样式。
如:<style>
样式选择器{
属性1:值;
属性2:值;
}
</style>
3、外部样式表:将样式单独定义在一个后缀名为.css的文档中,并在HTML中通过link元素链接到HTML中。
多个页面都可以使用。
如:
<link rel="stylesheet" type="text/css" href="css/demo.css"/>
4、输入样式表:可以将一个样式输入到另外一个样式文件中,或将一个样式文件输入到<style>元素中。
如: @import url(css 文件)
ubuntu下安装LNMP
LNMP:Linux+Nginx+Mysql+PHP
1、安装Nginx
安装nginx: apt-get install nginx
修改网站默认目录:
server {
面向对象的理解
过程化编程首先要确定计算机应采取的操作,然后使用编程语言来实现这些操作。c语言理念是将大型程序分解成小型、便于管理的任务。过程性编程强调算法,OOP强调数据。面向对象最重要的是类。在c++中,类是一种规范,它描述了这种新型数据格式,对象是根据这种规范构造的特定数据结构。例如类可以描述公司员工的基本特征(姓名、职位、工资等),而对象则代表特定的员工(小王、工程师、5000¥)。类规定了可以使用哪些数据来表示对象以及可以对这些数据执行哪些操作。 OOP程序设计方法首先设计类,类表示了程序要处理的东西。类定义描述了对每个类可执行的操作。OOP编程不是将重点放在任务上,而是放在表示概念上。 OOP编程不仅是数据和方法合并为类定义,还有助于创建可重用的代码。
面向对象包括3个特征:继承、封装、多态。
面向对象的主要目的之一就是提供可重用的代码。类继承,它能够从已有的类(基类)派生出新类,而派生类继承了基类的特征,包括方法。可以通过继承完成的工作:1、可以在已有类的基础上添加功能;2、可以给类添加数据;3、可以修改类方法的行为。
封装是指类把所有的操作都封闭起来,仅仅提供接口供他人使用。使用的人没必要弄清楚类里面的操作,只需懂得操作接口就可以了。 信息隐藏可以保护数据,使其免受不当的访问。
多态可以为操作符和函数创建多个定义,通过上下文确定使用哪个定义。旨在能够用同名的函数来完成相同的基本操作。多态与重载指的是同一回事,通常使用重载。
面向对象设计的原则:
1、“开闭”原则:
一个软件实体应该对扩展开放,对修改关闭。即设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。在面向对象中,不允许更改的是系统的抽象层,而允许扩展的是系统的实现层。实现开闭原则的关键步骤是抽象化,基类和子类之间的继承关系就是抽象化的体现。
2、里氏代换原则:
如果对每一个类型为T1的对象O1,都有类型为T2的对象O2,使得以T1定义的所有程序P在所有的对象O1都替换为O2时,程序P的行为没有变化,那么类型T2是类型T1的子类型。也就是说,在软件里面,把基类都替换成它的子类,程序的行为没有变化。反过来不成立,如果一个软件实体使用的是一个子类的话,那么它不一定适用于基类。里氏代换原则是对实现抽象化的具体步骤的规范。
3、依赖倒转原则:
依赖倒转原则就是依赖于抽象,不要依赖于实现。要针对接口编程,不要针对实现编程。传统的过程性编程的设计方法倾向于使高层次的模块依赖于低层次的模块,抽象层次依赖于具体层次。倒转原则就是把这个错误的依赖关系倒转过来。
4、合成/聚合复用原则:
在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用这些对象的目的。聚合表示整体和部分的关系,表示“拥有”,合成是一种更强的拥有,部分和整体的生命周期一样。
5、迪米特法则:
一个软件实体应当尽可能少的与其他实体发生相互作用,这样,当一个模块修改时,就会尽量少的影响其他模块。
6、接口隔离原则:
使用多个专门的接口比使用单一的总接口好,也就是说,一个类对另外一个类的依赖性应当使建立在最小的接口上。
对面向对象设计的原则的理解还不是很深刻,以后在实践中慢慢理解^_^
函数参数传递规则
1、函数参数传递规则
函数接口的两个要素是参数和返回值,c中传递方式:值传递和地址传递(即指针传递);c++中:值传递,地址传递和引用传递。
规则一:不论是函数的原型还是定义,都要明确写出每个参数的类型和名字,如果函数没有参数,那么使用void而不要空着。因为标准c把空的参数列表解释为可以接受任何类型和个数的参数,而标准c++则把空的参数列表解释为不可以接受任何参数。在移植c/c++程序时尤其要注意这方面的不同。
规则二:参数命名要恰当。输入参数与输出参数的顺序要合理,参数的顺序遵循程序员的习惯。一般,输出放在前面,输入参数放在后面,并且不要交叉出现输入输出参数。
规则三:如果参数是指针,且仅做输入用,则应在类型前加const,以防止该指针指向的内存单元在函数体内无意中被修改。
2、返回值规则
规则一:不要省略返回值类型,如果没有返回值,则应声明为void类型。
规则二:函数名字与返回值类型在语义上不可冲突。例外:getchar();返回类型是int,而不是char。
3、函数内部实现规则
1)、在函数体的“入口处”,对参数的有效性进行检查。断言assert。
2)、在函数体的“出口处”,对return语句的正确性和效率进行检查。如果函数有返回值,那么函数的“出口处”是return语句。
注意:1、return语句不可返回指向堆栈内存的指针或引用,因为该内存单元在函数体结束时被自动释放。
2、要搞清楚返回的究竟是对象的值、对象的指针还是对象的引用。
3、如果函数返回值是一个对象,要考虑return语句的效率。return string(s1+s2);与string result(s1+s2);return result;不等价。前者提高了效率。
4、函数堆栈用途
1)、在进入函数前保存环境变量和返回地址;
2)、在进入函数时保存参数的拷贝;
3)、在函数体内保存局部变量。