web
1、
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body><body/>
</html>
2、
其实JSON数据就是一段字符串而已,只不过有不同意义的分隔符将其分割开来而已,符号,里面有[] ,{}等符号,其中
1 []中括号代表的是一个数组;
2 {}大括号代表的是一个对象
3 双引号“”表示的是属性值
4 冒号:代表的是前后之间的关系,冒号前面是属性的名称,后面是属性的值,这个值可以是基本数据类型,也可以是引用数据类型。
3、
没有本质上的不同都是http协议
使用上有不同
- GET在浏览器回退时是无害的,而POST会再次提交请求。
- GET产生的URL地址当书签,而POST不可以。
- GET请求会被浏览器主动cache,而POST不会,除非手动设置。
- GET请求只能进行url编码,而POST支持多种编码方式。
- GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
- GET请求在URL中传送的参数是有长度限制的,而POST么有。
- 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
- GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
- GET参数通过URL传递,POST放在Request body中。
- 语义不同
-
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)
4、
- 存储位置不同 cookie的数据信息存放在客户端浏览器上 session的数据信息存放在服务器上
- 存储容量不同 单个cookie保存的数据<=4KB,一个站点最多保存20个Cookie 对于session来说并没有上限,对服务器端的性能考虑,session内不要存放过多的东西,并且设置session删除机制。
- 存储方式不同 cookie中只能保管ASCII字符串,并需要通过编码方式存储 Unicode字符或者二进制数据。 session中能够存储任何类型的数据,包括且不限于string,integer,list,map等
- 隐私策略不同 cookie对客户端是可见的,别有用心的人可以分析存放在本地的cookie并进行cookie欺骗,所以它是不安全的。session存储在服务器上,对客户端是不透明,不存在敏感信息泄漏的风险
-
有效期上不同 开发可以通过设置cookie的属性,达到使cookie长期有效的效果 session依赖于名为JSESSIONID的cookie,而cookie JSESSIONID的过期时间默认为-1,只需关闭窗口该session就会失效,因而session不能达到长期有效的效果。
-
服务器压力不同 cookie保管在客户端,不占用服务器资源。对于并发用户十分多的网站,cookie是很好的选择。session是保管在服务器端的,每个用户都会产生一个session。假如并发访问的用户十分多,会产生十分多的session,耗费大量的内存。
-
浏览器支持不同: cookie既能够设为本浏览器窗口以及子窗口内有效,也能够设为一切窗口内有效。session只能在本窗口以及子窗口内有效。
5 、 var arr = [1,2,3,4,5,6,7,8,9]
头部添加 unshift arr.unshift(10) 尾部添加 push arr.push (10)
头部删除 shift arr.shift() 尾部删除 pop arr.pop (10) , 删除指定元素 delete arr[1]
splice 使用方法 通过 第三个以及后续参数 替换 来 插入 , 仅仅两个参数来删除
C#
1、
值类型传递和引用类型传递 可以细分为
按照值类型传递就是平常的 值传递方式,
引用类型传递 需要在 形参和实参 前加 ref (传参前需要赋值) 或者 out (return 前需要赋值)
- 值类型按值类型传递:复制一个副本
- 值类型按引用类型传递 :传递参数地址
- 引用类型按值类型传递:传递复制的参数地址地址
- 引用类型按引用类型传递:传递参数地址
2、引用类型传递 需要在 形参和实参 前加 ref (传参前需要赋值) 或者 out (return 前需要赋值)
3、
因为 string 在C# 中是个特殊的 引用类型 具有不变性 一旦复制就不能修改 ,所以我们肉眼可见的 再次赋值其实是底层做了工作
每次 system.string 下的方法或者 赋值时 都是 再new了一个string 再把之前的 对象删除掉
大量拼接用 stringBuilder
少量拼接可以 使用 +=
4、
virtual:虚方法 修饰方法时可以有方法体 可以子类中 用 overide 重写
sealed:封闭,不允许继承 也可以用于 override 前面 防止后续子类再次重写方法
override:重写父级中用 virtual 或者 abstract 修饰的 方法
abstract:抽象 修饰方法时不可以有方法体 可以子类中 用 overide 重写 , abstract 修饰方法时 所在类也必须由 abstract 修饰
5 用 关键字 static
静态类中只能有静态成员 ,非静态类 中可以有普通成员也可以有静态成员
静态方法中只可以调用静态成员,且非静态方法中既可以调用非静态也可以调用静态
静态类不可以实例化
静态方法调用方法是 类名.方法名 普通类方法的调用方式 new 类名().方法名
静态类会占用资源尽量少用
数据库:
1
select * from tt left join t on t.xh = tt. xh
2
select * from tt left join t on t.xh = tt. xh where t.xh is not null
3
select sum(score) total ,tt.xh,xm from tt left join t on t.xh = tt. xh where t.xh is not null
group by tt.xh,xm having sum(score) >250
4
with ranks as(
select score, '第'+ cast( row_number() over( order by score desc ) as nvarchar) ++ '名' as rank from (
select distinct top 5 score from tt left join t on t.xh = tt. xh
where t.xh is not null
and t.kc= '英语' order by score desc
) base
)
select tt.xh,tt.xm,tt.sex,tt.age,t.kc,t.score,ranks.rank ,
case (select count(1) from t mt where mt.score = t.score and mt. kc = t.kc )
when 1 then ''
else '并列'
end type
from tt
left join t on t.xh = tt. xh
left join ranks on t.score = ranks.score
where t.xh is not null
and t.kc= '英语' and ranks.score is not null order by rank
效果: