第一章 .NET基础-C#基础
一.1.1. 基础语法
一.1.1.1. 注释符
一.1.1.1.1. 注释符的作用
l 注释
l 解释
一.1.1.1.2. C#中的3中注释符
l 单行注释 //
l 多上注释 /* 要注释的内容 */
l 文档注释 ///用来解释类或者方法
如下:
namespace _注释符的使用
{
class Program
{
static void Main(string[] args)
{
//这行代码的作用是将Hello World打印到控制台当中
// Console.WriteLine("Hello World");
//这行代码的作用是暂停当前这个程序
// Console.ReadKey();
/*
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");*/
}
/// <summary>
/// 这个方法的作用就是求两个整数之间的最大值
/// </summary>
/// <param name="n1">第一个整数</param>
/// <param name="n2">第二个整数</param>
/// <returns>返回比较大的那个数字</returns>
public static int GetMax(int n1, int n2)
{
return n1 > n2 ? n1 : n2;
}
}
一.1.1.1.3. 波浪线
l 如果你代码中出现了红色的波浪线,意味着你的代码出现了语法错误。
l 如果你代码中出现了绿色的波浪线,说明了你的代码语法并没有错误,只不过提示你有可能会出现错误,属于警告线。
一.1.1.2. 变量
一.1.1.2.1. C#中常用的数据
l int: (整数)
n 1,250,520
l double: (小数)
n 3.1415926,1.4142135623731
l char : (字符)
n ‘A’ ‘b’ ‘a’ ‘钱 '
l string : (字符串)
n “老赵” ,“HelloWorld” "a"
l decimal:(金钱小数)存储金钱
n 5.62m
l decimal d=5.55m;
l double和decimal都是小数 但是精度不同
l float;
一.1.1.2.2. 变量的声明方法
l 数据类型 变量名称;
n int age;
n 变量的赋值 age=18;
l 定义时赋值,数据类型 变量名称=值;
n int age = 18;
l 如果一次要声明多个相同类型的变量可用逗号分隔.
n string zsName,lsName;
l 变量一定要先声明,再赋值,才能使用.
一.1.1.2.3. 变量的命名
l 命名规则:
n 必须以“字母”_或@符号开头.--不要以数字开头
n 后面可以跟任意“字母”、数字、下划线.
l 注意:
n 你起的变量名不要与c#系统中的关键字重复.
n 在c#中,大小写是敏感的.
n 同一个变量名不允许重复定义(先这么认为,不严谨)
l 定义变量时,变量名要有意义
l C# 变量命名编码规范——Camel 命名法:
n 首个单词的首字母小写,其余单词的首字母大写。
l Pascal命名命名规范:每一个单词第一字母都大写
l 如果使用到英文单词的缩写,全部用大写!
一.1.1.2.4. 变量的命名规则
l Pascal 规则
每个单词开头的字母大写(如 TestCounter).
l Camel 规则
除了第一个单词外的其他单词的开头字母大写. 如. testCounter.
l Upper 规则
仅用于一两个字符长的常量的缩写命名,超过三个字符长度应该应用Pascal规则.
例如:
代码如下:
public class Math
{
public const PI = ...
public const E = ...
public const FeigenBaumNumber = ...
}
l 具体的规则总结如下:
- 类命名指导
n - 类名应该为名词及名词短语,尽可能使用完整的词.
n - 使用Pascal规则
n - 不要使用类前缀 - 不要使用下划线字符 (_)。
n - 有时候需要提供以字母 I 开始的类名称,虽然该类不是接口。只要 I 是作为类名称组成部分的整个单词的第一个字母,这便是适当的。例如,类名称 IdentityStore 就是适当的。
n - 在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的名称。例如,ApplicationException 对于从名为 Exception 的类派生的类是适当的名称,原因是 ApplicationException 是一种 Exception。请在应用该规则时进行合理的判断。例如,Button 对于从 Control 派生的类是适当的名称。尽管按钮是一种控件,但是将 Control 作为类名称的一部分将使名称不必要地加长。
- 接口命名规则
n - 接口名称应该为名词及名词短语或者描述其行为的形容词,尽可能使用完整的词. (Example IComponent or IEnumberable)
n - 使用Pascal规则
n - 使用字符I为前缀,并紧跟一个大写字母(即接口名的第一个字母大写)
例如:
代码如下:
interface ICompare
{
int Compare();
}
- 枚举命名规则
n - 对于 Enum 类型和值名称使用 Pascal 大小写。
- 少用缩写。
n - 不要在 Enum 类型名称上使用 Enum 后缀。
n - 对大多数 Enum 类型使用单数名称,但是对作为位域的 Enum 类型使用复数名称。
n - 总是将 FlagsAttribute 添加到位域 Enum 类型。
- 变量命名
n - 在简单的循环语句中计数器变量使用 i, j, k, l, m, n
n - 使用 Camel 命名规则
- 方法命名
n - 使用Pascal规则
n - 对方法名采用一致的动词/宾语或宾语/动词顺序。例如,将动词置于前面时,所使用的名称诸如 InsertWidget 和 InsertSprocket;将宾语置于前面时,所使用的名称诸如 WidgetInsert 和 SprocketInsert。
n - 推荐名称应该为动词或动词短语.例如Save,SaveCustomer,而不要使用CustomerSave
n - 不要在方法中重复类的名称。例如,如果某个类已命名为 Book,则不要将某个方法称为 Book.CloseBook,而可以将方法命名为 Book.Close。
- 属性命名
n - 名称应该为名词及名词短语
n - 使用Pascal规则
n - 对于bool型属性或者变量使用Is(is)作为前缀,不要使用Flag后缀,例如应该使用IsDeleted,而不要使用DeleteFlag
- 集合命名
n - 名称应该为名词及名词短语
n - 使用Pascal规则
n - 名称后面追加“Collection”
- 事件命名
n - event handlers命名使用 EventHandler 后缀.
n - 两个参数分别使用 sender 及 e
n - 使用Pascal规则
n - 事件参数使用EventArgs 后缀
n - 事件命名使用语法时态反映其激发的状态,例如 Changed,Changing.
n - 考虑使用动词命名. 变量命名
n - 在简单的循环语句中计数器变量使用 i, j, k, l, m, n
n - 使用 Camel 命名规则
自定义的属性以Attribute结尾
代码如下:
public class AuthorAttribute : Attribute
{
}
自定义的异常以Exception结尾
代码如下:
public class AppException : Exception
{
}
- 其它常用的编码规则
n 代码的缩进。要用Tab,而不要用space.
n 局部变量的名称要有意义。不要用x,y,z等等(除用于For循环变量中可使用i,j,k,l,m,n)。
n 所有的成员变量声明在类的顶端,用一个换行把它和方法分开。
n 用有意义的名字命名namespace,如:产品名、公司名。
n 始终使用"{ }"包含if下的语句,即使只有一条语句。
n 把相似的内容放在一起,比如数据成员、属性、方法、事件等,并适当的使用#region…#endregion。
命名规范的总结用表格表示如下:
² 与类相关
标识符 |
大小写 |
示例 |
类/结构 |
Pascal |
AppDomain |
枚举类型 |
Pascal |
ErrorLevel |
枚举值 |
Pascal |
FatalError |
事件 |
Pascal |
ValueChange |
异常类 |
Pascal |
WebException 注意 总是以 Exception 后缀结尾。 |
只读的静态字段 |
Pascal |
RedValue |
接口 |
Pascal |
IDisposable 注意 总是以 I 前缀开始。 |
集合 |
Pascal |
CustomerCollection 注意 总是以Collection结束 |
方法 |
Pascal |
ToString |
命名空间 |
Pascal |
System.Drawing |
参数 |
Camel |
typeName |
属性 |
Pascal |
BackColor |
受保护的实例字段 |
Camel |
redValue 注意 很少使用。属性优于使用受保护的实例字段。 |
公共实例字段 |
Pascal |
RedValue 注意 很少使用。属性优于使用公共实例字段。 |
变量和方法参数命名:根据不同的数据类型前缀+首字母大写的变量描述 |
² 与变量名相关
类型 |
前缀 |
示例 |
Array |
arr |
arrShoppingList |
Boolean |
bln |
blnIsPostBack |
Byte |
byt |
bytPixelValue |
Char |
chr |
chrDelimiter |
DateTime |
dtm |
dtmStartDate |
Decimal |
dec |
decAverageHeight |
Double |
dbl |
dblSizeofUniverse |
Integer |
int |
intRowCounter |
Long |
lng |
lngBillGatesIncome |
Object |
obj |
objReturnValue |
Short |
shr |
shrAverage |
Single |
sng |
sngMaximum |
String |
str |
strFirstName |
² 与ADO.NET相关
数据类型 |
数据类型简写 |
标准命名举例 |
Connection |
con |
conNorthwind |
Command |
cmd |
cmdReturnProducts |
Parameter |
parm |
parmProductID |
DataAdapter |
dad |
dadProducts |
DataReader |
dtr |
dtrProducts |
DataSet |
dst |
dstNorthWind |
DataTable |
dtbl |
dtblProduct |
DataRow |
drow |
drowRow98 |
DataColumn |
dcol |
dcolProductID |
DataRelation |
drel |
drelMasterDetail |
DataView |
dvw |
dvwFilteredProducts |
² 与页面控件相关
数据类型 |
数据类型简写 |
标准命名举例 |
Label |
lbl |
lblMessage |
LinkLabel |
llbl |
llblToday |
Button |
btn |
btnSave |
TextBox |
txt |
txtName |
MainMenu |
mmnu |
mmnuFile |
CheckBox |
chk |
chkStock |
RadioButton |
rbtn |
rbtnSelected |
GroupBox |
gbx |
gbxMain |
PictureBox |
pic |
picImage |
Panel |
pnl |
pnlBody |
DataGrid |
dgrd |
dgrdView |
ListBox |
lst |
lstProducts |
CheckedListBox |
clst |
clstChecked |
ComboBox |
cbo |
cboMenu |
ListView |
lvw |
lvwBrowser |
TreeView |
tvw |
tvwType |
TabControl |
tctl |
tctlSelected |
DateTimePicker |
dtp |
dtpStartDate |
HscrollBar |
hsb |
hsbImage |
VscrollBar |
vsb |
vsbImage |
Timer |
tmr |
tmrCount |
ImageList |
ilst |
ilstImage |
ToolBar |
tlb |
tlbManage |
StatusBar |
stb |
stbFootPrint |
OpenFileDialog |
odlg |
odlgFile |
SaveFileDialog |
sdlg |
sdlgSave |
FoldBrowserDialog |
fbdlg |
fgdlgBrowser |
FontDialog |
fdlg |
fdlgFoot |
ColorDialog |
cdlg |
cdlgColor |
PrintDialog |
pdlg |
pdlgPrint |
ValidationSummary |
vals |
valsFormErrors |
XML |
xmlc |
xmlcTransformResults |
一.1.1.3. 字符串中的转义
l 能在字符串中输出双引号吗?
n 在屏幕上显示: c#中的字符串用” ”号包含起来
l \+一个字符,组成转译字符.一般用于表示特殊符号
l @字在字符串前面表示不转译
l 常用的转译符:\n \b \\ \t \”
一.1.1.4. 算术运算符及算术表达式
l 算术运算符: + - * / %(取余数 取模)
l 算术表达式:由算术运算符连接起来的式子.
n 如:1+1 a-b(变量ab前面已声明并赋初值)
l 优先级:先乘除,后加减,有括号先算括号里的,相同级别的从左至右运算 int a=((1+5)+3)*2
l 小括号可以无限制的套用,但一定要成对出现.
一.1.1.5. 类型自动转换规则
l 参与运算(算术运算和赋值运算)的操作数和结果类型必须一致. 当不一致时,满足下面条件时,系统自动完成类型转换 (隐式转换)
l 两种类型兼容
n 例如:int 和 double 兼容(都是数字类型)
n 目标类型大于源类型
u 例如:double > int
l 对于表达式
n 如果一个操作数为double型,则整个表达式可提升为double型
n 比如前面打8.8折的练习题.
n 求10/3商(Remainder)要想得到3.333的处理.
一.1.1.6. 强制类型转换
l 语法:
n (数据类型名)待转换的值;
l 如:
n int b = (int)3.14;
l 强制类型转换,数据类型一定要相兼容 下面的写法对吗?
n int number = (int)”3.14”;(错误)
l 谨记:
n int 转double 隐式转换,多小数,
n double转int显示转换,丢精度.
一.1.1.7. 类型转型
l Convert不再仅是内存级别的转换,而是考虑数据意义的转换。Convert是一个加工、改造的过程。
l 通过 Convert.ToInt32(能转换成int类型的数据)来把其他类型数据转换成int类型。
l 一切类型都可以转换为string类型。
l int.Parse(“3”);
一.1.2. 运算符
一.1.2.0.1. 算术运算符和复合赋值运算符
l ++ 自加一 有前加和后加
l -- 自减一 有前减和后减
n 一元运算符++/-- 比二元的 +- 优先级高
l += -= *= /= %=
l 对于+-*/%=都需要两个操作数才能进行运算的这些运算符,我们叫做二元运算符
l 对于像++ -- 这样的只需要一个操作数就能进行运算的运算符,我们叫做一元运算符.
一.1.2.0.2. 关系运算符
l >,<
l ==(等于,相等),!=(不等)
l >=(大于等于,包含),<=(小于等于,包含)
l 布尔(bool)类型:
n bool值只有两个
u 真:true
u 假:false
l 关系运算的结果是布尔类型的
一.1.2.0.3. 逻辑运算符
l &&(逻辑与) ||(逻辑或) !(逻辑非)
l 表达式1&&表达式2:当表达式1、2全为true时,其表达式的结果为true
l 表达式1||表达式2:当表达式1、2有一个为true时,其结果为true
l !表达式:如果表达式的结果为true,则取反后为false,反之为true
l 优先级(画个表格)
表达式1&&表达式2
表达式1 |
表达式2 |
表达式1&&表达式2 |
True |
True |
True |
False |
True |
False |
True |
False |
False |
False |
False |
false |
逻辑或 ||
表达式1||表达式2
表达式1 |
表达式2 |
表达式1||表达式2 |
True |
True |
True |
True |
False |
True |
False |
True |
True |
False |
False |
false |
逻辑非 !
!表达式
表达式 |
!表达式 |
True |
False |
False |
true |
一.1.2.0.4. If| if else | if else if语法结构
一.1.2.0.4.1. if结构的基本语法:
if(条件)
{
语句1;语句2;......
}
用一对大括号来组成语句块
一.1.2.0.4.2. If else结构的基本语法:
if(条件)
{
语句1;
}
else
{
语句2;
}
一.1.2.0.4.3. If else if 结构的基本语法
if(条件)
{
语句1;
}
else if(条件)
{
语句2;
}
一.1.3. 流程控制
一.1.3.1. 循环结构
一.1.3.1.1. While循环
l 语法:
while(循环条件)
{
循环体;
}
l 特点:先判断,再执行,循环一次都不执行
一.1.3.1.2. do while 循环
l 语法
do{循环体;}
while(条件);
l 特点:为先执行,再判断,循环会执行一次
一.1.3.1.3. For循环
l 语法:
for(表达式1;表达式2;表达式3)
{
循环体;
};
一.1.3.2. Continue和break
l Continue立即结束本次循环,判断循环条件,如果成立,则进入下一次循环,否则退出循环.
l Breatk用于循环中,退出当前循环.
一.1.3.3. 三元表达式
C#中有一个三元运算符“?:”,语法为:条件表达式?表达式1:表达式2;
该操作首先求出条件表达式的值(bool类型),为true时调用表达式1,为flase时调用表达式2。其逻辑为:“如果为真执行第一个,否则执行第二个。”
例如:
a=3>4?3:4;输出为4。
a=3<4?3:4;输出为3。
一.1.3.4. try-catch的使用
try
{
有可能出现错误的代码;
}
catch
{
如果try中的代码出现异常,则进去catch中
}
finally
{
最后执行的代码
}
在 try 块中获取并使用资源,在 catch 块中处理异常情况,并在 finally 块中释放资源。
throw:
注意:
关于 try catch finally 与 return 的使用关系,可以参照一下链接
https://blog.csdn.net/u010533180/article/details/53064257
一.1.4. 复杂数据类型
一.1.4.1. 常量\枚举\结构的运用
一.1.4.1.1. 理论:
l 常量:
const 类型 常量名 = 常量值
确定数量、确定值的几个取值:东西南北、男女、上中下。
l 枚举:
enum Gender{male,female}
字符串与枚举的转换:(Gender)(Enum.Parse( typeof(Gender),“male”));每一个值都对应一个数字
l 结构体:
访问修饰符struct结构名
{
定义结构成员
}
一.1.4.1.2. 实操:
l const
tatic void Main(string[] args)
{
const int PI = 3.14;
PI = 3.20;
}
l enum
enum QQStatus{online,offline,hidden}
QQStatus status = QQStatus.online;
l 结构体和枚举的运用
•定义一个结构类型Person,有三个成员,分别为姓名,性别,年龄 性别用枚举类型
–声明两个Person类型的变量,分别表示 张三 男 18岁/ 小兰 女 16岁
class Program
{
public enum Gender {femal,meal};
public struct person { public string name; public int age; public Gender gender;}
static void Main(string[] args)
{
//定义一个结构类型Person,有三个成员,分别为姓名,性别,年龄 性别用枚举类型
//声明两个Person类型的变量,分别表示 张三 男 18岁/ 小兰 女 16岁
person p1 = new person();
p1.name = "张三";
p1.gender = Gender.femal;
p1.age = 18;
person p2 = new person();
p2.name = "小兰";
p2.gender = Gender.meal;
p2.age = 16;
Console.WriteLine("大家好,我是{0},是个{1}生,今年{2}岁",p1.name,p1.gender,p1.age);
Console.WriteLine("大家好,我是{0},是个{1}生,今年{2}岁", p2.name, p2.gender, p2.age);
Console.ReadKey();
}
}
一.1.4.2. 数组
一.1.4.2.1. 理论
保存多个值;几乎任意类型都可以声明数组; int[] nums = new int[3];int[] nums = {5,3,8};
in[]nums=new int[3]{1,2,3};int[]nums=new int[]{2,3,5};
int[] nums = new int[3]{5,3,8}//个数和声明数必须一致
int[] nums = new int[5]{5,3,8}//错误
int[] nums = new int[]{5,3,8}//正确,可以省略数组个字
数组的声明:以上四种
使用索引器访问指定编号位置的元素,访问数组元素:nums[0]、nums[1]。索引从0开始。取到的元素的类型就是数组元素的类型。还可以对数组元素进行赋值。
常见问题:求平均值,求最大值,求和,排序
Array排序 和反序
一.1.4.2.2. 实操
数组里面都是人的名字,分割成:例如:老杨|老苏|老邹…”
string names = "";
string[] name = new string[8] { "老杨", "老苏", "老邹", "老虎", "老牛", "老蒋", "老王", "老马" };
for (int i = 0; i < name.Length - 1; i++)
{
names += name[i] + "|";
}
Console.Write(names + name[name.Length - 1]);
Console.ReadKey();
将一个整数数组的每一个元素进行如下的处理:如果元素是正数则将这个位置的元素的值加1,如果元素是负数则将这个位置的元素的值减1,如果元素是0,则不变。
for (int i = 0; i < num.Length; i++)
{
Console.WriteLine(num[i]);
}
Console.WriteLine("----------------------------");
for (int i = 0; i < num.Length; i++)
{
if(num[i]<0)
{
num[i]--;
}
else if (num[i] > 0)
{
num[i]++;
}
else
{
}
<br> Console.WriteLine("现在的值是:{0}",num[i]);
}<br> Console.ReadKey();
将一个字符串数组的元素的顺序进行反转。{“我”,“是”,”好人”} {“好人”,”是”,”我”}。第i个和第length-i-1个进行交换
string [] str = {"我","是","好人" };
for (int i = 0; i < str.Length/2; i++)
{
string temp = str[i];
str[i] = str[str.Length - 1 - i];
str[str.Length - 1 - i] = temp;
}
for (int i = 0; i < str.Length; i++)
{
Console.Write(str[i]);
}
Console.ReadKey();
从一个整数数组中取出最大的整数,最小整数,总和,平均值
int[] num = { 51, 21, 82, 41, 10, -5 };
int max = 0;
int min = 0;
int sum = 0;
for (int i = 0; i < num.Length; i++)
{
if (num[i] > max)
{
max = num[i];
}
else if (num[i] < min)
{
min = num[i];
}
sum = sum + num[i];
}
Console.WriteLine("最大的整数是:{0},最小的整数是:{1}", max, min);
Console.WriteLine("总和是{0},平均值是:{1}", sum, sum /num.Length);
Console.ReadKey();
一.1.5. 函数
一.1.5.1. 语法介绍
一.1.5.1.1. 为什么使用函数?
l 如果想要重复执行某段代码,那就需要写重复的代码
l 目前我们写的代码越来越多,结构非常混乱,不容易阅读
所以函数就来了,函数就是方法
一.1.5.1.2. 函数体介绍
一.1.5.1.3. 函数的定义和使用
一.1.5.1.4. 带参和无参
一.1.5.1.5. 参数不确定长度的方法
一.1.5.1.6.
一.1.5.1.7. 结构函数
一.1.5.1.8. 函数的重载(Overload):函数名相同,参数不同,返回值无所谓
一.1.5.1.9. 委托
一.1.5.2. 函数实践
using System;
namespace 函数定义使用
{
/// <summary>
/// 结构体函数
/// </summary>
struct CalculatDistance
{
public float x;
public float y;
public float z;
/// <summary>
/// 计算向量长度
/// </summary>
/// <returns></returns>
public double Distance()
{
return Math.Sqrt(x * x + y * y + z * z);
}
}
delegate double myDelegate(double par1, double par2);
class Program
{
static void Main(string[] args)
{
OutPutLog();//无法无返回值
int num1 = PlusNum(3, 4);//带固定长度参带返回值
Console.WriteLine("调用PlusNum函数的结果是:" + num1);
//带不固定参数长度带返回值
int[] tempArr = new int[] { 32, 5, 866, 23, 9, 76 };
int num2 = Sum(23, 5436, 547, 235, 658);
Console.WriteLine("调用Sum函数直接传参的结果是:" + num2);
int num3 = Sum(tempArr);
Console.WriteLine("调用Sum函数传递数组的结果是:" + num3);
//结构体函数实践
CalculatDistance calculatDistance;
calculatDistance.x = 3;
calculatDistance.y = 4;
calculatDistance.z = 5;
Console.WriteLine("使用结构体函数计算向量的结果是:" + calculatDistance.Distance());
//重载
OverMath(2.3f, 34);
OverMath(4, 5);
//委托
double do1 = 13.45;
double do2 = 23.67;
myDelegate de;
de = Delegate1;
de(do1, do2);
de = Delegate2;
de(do1, do2);
//递归调用
int mNum = F(40);
Console.WriteLine("递归调用40的结果是:" + mNum);
Console.ReadKey();
}
/// <summary>
/// 不带参数没有返回值的方法
/// </summary>
static void OutPutLog()
{
Console.WriteLine("这是一个无参的空方法体");
}
/// <summary>
/// 返回值为int,参数类型和参数数量确定的方法
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
static int PlusNum(int a, int b)
{
return a + b;
}
/// <summary>
/// 参数为参数数组类型,可用于不确定长度的参数传递
/// </summary>
/// <param name="array"></param>
/// <returns></returns>
static int Sum(params int[] array)
{
int temp = 0;
for (int i = 0; i < array.Length; i++)
{
temp += array[i];
}
return temp;
}
static void OverMath(int a, int b)
{
Console.WriteLine("这个是两个int类型的数字相乘的结果:" + (a * b));
}
static void OverMath(float a, double b)
{
Console.WriteLine("这个是一个float 一个double类型的数字相乘的结果:" + (a * b));
}
static double Delegate1(double dou1, double dou2)
{
Console.WriteLine("计算两个数相乘的结果是:" + dou1 * dou2);
return dou1 * dou2;
}
static double Delegate2(double dou1, double dou2)
{
Console.WriteLine("计算两个数相除的结果是:" + dou1 / dou2);
return dou1 / dou2;
}
/// <summary>
/// 递归调用
/// </summary>
/// <param name="n"></param>
/// <returns></returns>
static int F(int n)
{
//递归终止条件
if (n == 0) return 2;
if (n == 1) return 3;
//返回值
return F(n - 1) + F(n - 2);
}
}
}
第一章 .NET基础-C#基础的更多相关文章
- 16第一章 ASP.Net编程基础知识
第一章 ASP.Net编程基础知识 第一章 ASP.Net编程基础知识 本章首先介绍用ASP.Net技术编制服务器端动态网页所需的网络和HTML标记语言方面的有关知识.然后 ...
- 第一章使用JSP/Server技术开发新闻发布系统第一章动态网页开发基础
一:为什么需要动态网页 由于静态网页的内容是固定的,不能提供个性化和定制化得服务,使用动态网页可真正地与用户实现互动. 二:什么是动态网页 ①:动态网页是指在服务器端运行的,使用程序语言设 ...
- 第一章:HTML5的基础
HTML5基础 1.DoctYpe声明 <!DCTYPE html>必须放在第一行. <title> <title> 百度</title> <me ...
- JSP第一章动态网页的基础
什么是动态网站(dynamic website)? 动态网站: 误区:初学者一般认为动态网页,就是会动的网页,但实际上不是这样的. 动态网页是指在服务器端运行的,使用程序语言设计的交互式网页,它们会根 ...
- jsp第一章 动态网页开发基础
动态网站可以实现交互功能,如用户注册.信息发布.产品展示.订单管理等等: 动态网页并不是独立存在于服务器的网页文件,而是浏览器发出请求时才反馈网页: 动态网页中包含有服务器端脚本,所以页面文件名常以a ...
- 笔记-Python基础教程(第二版)第一章
第一章 快速改造:基础知识 01:整除.乘方 (Python3.0之前 如2.7版本) >>> 1/2 ==>0 1/2整除,普通除法: 解决办法1: 1.0/2.0 ==& ...
- C++PRIMER第五版练习题答案第一章
C++PRIMER第五版练习题答案第一章 应该有很多小伙伴和我一样,闲来无事买了本C++的书自己啃,课后的练习题做的很揪心,这里我分享下我写的答案,希望能帮助到你,提供源码,就不跑了哈,毕竟现在是第一 ...
- JAVA 入门第一章(语法基础)
本人初学java 博客分享记录一下自己的学习历程 java我的初步学习分为六章,有c和c++的基础学起来也简便了很多. 第一章 语法基础 第二章 面向对象 第三章 常用工具类 第四章 文件操纵 第五章 ...
- .net架构设计读书笔记--第一章 基础
第一章 基础 第一节 软件架构与软件架构师 简单的说软件架构即是为客户构建一个软件系统.架构师随便软件架构应运而生,架构师是一个角色. 2000年9月ANSI和IEEE发布了<密集性软件架构建 ...
- Laxcus大数据管理系统2.0(2)- 第一章 基础概述 1.1 基于现状的一些思考
第一章 基础概述 1.1 基于现状的一些思考 在过去十几年里,随着互联网产业的普及和高速发展,各种格式的互联网数据也呈现爆炸性增长之势.与此同时,在数据应用的另一个重要领域:商业和科学计算,在各种新兴 ...
随机推荐
- 【带着canvas去流浪(12)】用Three.js制作简易的MARVEL片头动画(上)
目录 一. 大作业说明 二.基本思路 三.视频纹理表面修复--UV映射 3.1 问题描述 3.2 纹理贴图的基本原理-UV映射 3.3 关键示例代码 四.小结 示例代码托管在:http://www.g ...
- 小米OJ 12. 找出可能的合的组合
利用dfs解决,从给出的数组左边或右边开始遍历,对每一个数字进行判断,有三种情况: 1. 加上当前数字的值,遍历下一个数字 2. 加上当前数字的值,继续遍历该数字 3. 不加上当前的数字的值,遍历下一 ...
- 盘一盘 synchronized (一)—— 从打印Java对象头说起
Java对象头的组成 Java对象的对象头由 mark word 和 klass pointer 两部分组成, mark word存储了同步状态.标识.hashcode.GC状态等等. klass ...
- python面向对象的继承-组合-02
*面向对象(OOP)的三大特征:**# 封装.继承.多态 继承 什么是继承 继承:# 是一种关系,描述两个对象之间什么是什么的什么的关系 例如:麦兜.佩奇.猪猪侠.猪刚鬣,都是猪 为什么要使用继承 继 ...
- .net持续集成sonarqube篇之项目管理与用户管理
系列目录 删除项目 在学习阶段,我们可能需要经常删除已构建的项目,在sonarqube中想要删除一个项目有两个入口,都在Administration导航栏内. 在项目内部的管理界面删除 如果项目处于打 ...
- [填坑] ubuntu检测不到外接显示器
笔记本是win10+ubuntu18双系统,今天ubuntu(开启nivida独显状态)突然无法连外接屏幕,但切换win10就可以显示. 贴吧找到的简单解决方法,不需要重装驱动,记录分享在这里: su ...
- <表格>
一.列表 信息资源的一种展示形式 二.列表的分类 1.有序列表 <ol> <li>列表项1</li> <li>列表项2</li> </ ...
- .NET Core CSharp 中级篇 2-1 装箱与拆箱
.NET Core CSharp 中级篇 2-1 本节内容为装箱与拆箱 简介 装箱和拆箱是一个相对抽象的概念.你可以想象一下一堆满载货物的大卡车,他是由许多工人将货物集中堆放装入的,对于我们而言在没有 ...
- Linux零拷贝技术,看完这篇文章就懂了
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复 「1024」 即可领取,欢迎大家关注,二维码文末可以扫. 本文讲解 ...
- Zabbix编译安装(全)
一.前言 (一).概述 Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案,Zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系 ...