数学建模社区-数学中国
标题:
HTML 知识点(未完)
[打印本页]
作者:
杨利霞
时间:
2020-5-5 14:53
标题:
HTML 知识点(未完)
HTML 知识点(未完)
0 o7 l" r' ]+ V, x5 n
* r& L4 e& U: K/ T
HTML 知识点
: ^" l5 r, w8 V+ k: @( x
% D) T" m" j. b" a" C; v
三列布局- (高度已知,左右宽度固定,中间自适应)
2 N& v, F! Z ?. t5 }8 z% T6 ?" S
3 D6 C7 z0 I2 i* Y5 |
布局方案 优点 缺点
2 I8 V* @/ B! z6 e6 C( z% G
浮动 兼容性好 脱离文档流,需清除浮动
$ Q& z1 z; H3 _2 S
绝对定位 比较快捷。 因为其本身脱离了文档流,导致了其子元素都脱离了文档流,使用性较差。
; K+ g' k4 l$ Q+ W+ C
flex布局 目前是比较完美的方案。 只兼容到ie9。
. f% A) ?' A( }! E; o
表格布局 兼容性好,当需要兼容ie8时可以用表格布局。 多栏布局时,某栏高度增加,会使其他栏高度一起增加。
0 m+ o1 [- ?7 z2 D7 R
网格布局 新技术,代码量少
/ A7 @1 d0 k- C5 g
<!-- 网格布局 -->
* c. p3 p/ [ S Q1 U9 a& X3 _
<body>
& e. T7 j5 s* K
<section class="layout grid">
- \4 a3 s; ]! t! K" r4 a+ ~( _. _
<style media="screen">
7 ~6 T5 f, Z5 u+ n: X( x V/ R
.layout.grid .left-right-center{
( O+ U3 D% b8 b4 }
display: grid;
" k+ q' W. r( W1 G ^9 n- j' M- @( T6 o
width: 100%;
. w! K+ U9 m, t$ v% e# s
grid-template-rows: 100px; // 设置行高
5 M( y1 U' p0 J
grid-template-columns: 300px auto 300px; // 设置每列的宽度
! }" b1 b! O' }/ S* q
, g2 b4 C- z+ m. J
</style>
+ n# d4 w( c5 I) M6 k N1 J9 V
<article class="left-right-center">
+ y2 e ` g N0 S% [
<div class="left"></div>
A# [: J X; B& `1 v& b; R* @
<div class="center"></div>
" c) [# d& n: @! G" U" M
<div class="right"></div>
# ^8 x" f! ^3 z D! `& v
</article>
9 @+ `3 k5 x4 E0 }% O, X# p6 }, {; Q& D
</section>
+ {9 Z, D2 k* d* R4 b
</body>
$ a& M4 q, f# o6 v& H+ F6 N9 H( K1 U
9 Z0 U5 u% b. e; e
css盒模型
1 `% F* @3 D! _4 k1 A5 u
& [9 Z, y0 x% v. H* U* G
CSS盒模型的认识
- u0 \' r/ @4 V6 z1 u* ^" Y
" b3 J0 _- U7 ^
css属性: content padding border margin
+ N* ~! L8 B# x8 j& E
4 @' D7 J0 {: B/ q4 C9 F
两种模型:IE盒模型(怪异盒模型)和 标准盒模型
/ \3 I$ {( J2 `" F2 C8 [; M
- I0 f2 M; E s; t, A; Y
两种模型的区别:计算高度和宽度的不同
* N8 b1 F# W; W: L
4 F7 B) u2 A& O E& H
两种模型如何设置:box-sizing: content-box(标准盒模型); box-sizing: border-box(IE盒模型)
" C( e, T8 \& d
! l) D# ?* @1 {, e7 x- n
JS如何设置获取盒模型对应的宽和高
4 P8 p* D% G+ l" O: Z
0 w" M5 P( V2 ]0 @
获取方式 优缺点
8 P6 r2 ~- \# k% N t. d
dom.style.width/height 只能获取内联样式设置的宽和高
; ]. m0 L/ N$ X H
dom.current style.width 获取浏览器渲染后的宽和高,只支持ie
7 k4 ]% r% ^2 U/ ]7 k/ {3 {
window.getcomputedstyle(dom).width 兼容性更好
3 j" W8 O$ `' |% [
dom.getboundingclentreact().width 适用于取元素的绝对位置。能取到 left top width height 四个属性 。// 获取浏览器渲染后的宽和高一般用于获取元素绝对位置
/ }, \- e4 w; K1 ~ H- H
实例题 (根据盒模型解释边距重叠)子元素边距成了父元素边距
" N- n' {" o2 [7 ^; p
# D- u3 b% |) E V# x9 e0 F
块级元素包含了子块级元素,子元素是100像素
" z: y9 O D! G7 @
子元素与父元素上边距是10像素
# s! e1 b8 n, o2 X& ]
父元素是110px还是100px (100px, 设置了overflow:hidden就成了110px)
; J, |9 L: W% n' _0 E
另一种兄弟块级元素-
7 D5 Q6 z) z$ Y( p0 ~2 h) | ?3 D
0 P% x) x5 M5 o7 `3 C) o
挨着每个都有上边距或每个都有下边距。-
9 H8 h( O) z7 m: F* x# g* Q4 e
该重叠的原则就是取最大值
% q& Y# ~" _1 s! w" A
空元素的边距-取margin-top和margin-bottom的最大值
6 L3 j" `$ O& ]( w6 r
解决方案:
6 K/ u3 J7 o# V! K
4 g# K3 }) Y6 ~ z2 K% U
父元素创建成一个BFC (无论父子,兄弟情况)
/ w5 ]" x" B. P+ S9 \; e4 s, p
; y: C& {# ]5 x7 x' y" D
4. BFC (边距重叠解决方案)
. ?; ?* A3 w3 [% q
, l3 B E( r" G" T9 n
BFC(边距重叠解决方案)
& r9 X, M& H. B; ]* j0 i" U
) F+ i8 m: S. U) k: z/ d' E
1、BFC的基本概念: 块级格式化上下文;
3 J! Z V0 {8 X
! Q d9 U' h/ U J( t8 s# E% P" l
2、BFC的原理:BFC的渲染规则。
1 f2 V4 d7 }3 i. C: E
% K. q( F5 a; c& v5 @! ^
①:在BFC这个元素的垂直方向的边距会发生重叠。(同一个BFC下外边距会发生重叠)
1 B. y8 T7 u& X4 y: H
5 c2 T9 Z" l3 s8 r8 B6 h6 n) o
②:BFC的区域不会与浮动元素的box重叠。(清除浮动)
5 p' p' W1 ~ T" X* b8 [/ _- L9 o# q6 n
l6 f3 s Y/ u" B( l3 \: ]9 P
③:BFC在页面上是一个独立的容器,外面的元素不会影响里面的元素,里面的元素也不会影响外面的元素。
& }* K) t! }* K2 \! {
- `% Z% J7 ]& [
④:计算BFC高度时,浮动元素也会参与计算
0 [' F; z# B4 K
; o3 O& @; P& {0 ^, _) s N+ [2 j
3、如何创建BFC
j+ |4 R: Q2 H6 r$ H0 z. O7 e
# Z1 a) v, y) o! t7 K
①:float不为none。
( }/ g. J) c: X7 V8 V
9 G# a6 U) [- ^8 X$ ?
②:position不为static或者relative。
1 P' y2 u$ @& _) h
6 f9 d; [5 V, t( J& X' s/ c; Y6 s
③:display为inline-block或者是table相关的。
5 t/ g: ^( W- u& t- ]- p6 ]
. f5 o* e* S. b* I. Z6 l
④:overflow不为visible。
3 ?6 C/ |7 U# a) z
) T/ E/ z o0 l8 n' A. u; w
⑤ : body 根元素
% ?/ v* N2 u, k
+ b: |1 D) M" o1 D
应用场景:
5 w7 ?. }' a9 u# K/ o8 u
左右布局时,float
1 `: h( A2 E9 d, |" O+ I9 |" N
相邻div使用margin产生边距重叠
! ]0 F q- a+ ~
dom事件
& C" v% V0 V: F& V2 t& M
' M5 F: F* ~3 X+ l* u/ R
基本概念: DOM事件的级别
# ?; c. s! Y! Z- x! P- z, d
X: [2 Q8 ~7 X7 t
DOM0: element.οnclick=function()
" x# V: a- f9 x1 e2 J g( F
7 G7 t a1 K) A- `
DOM2: element.addEventListener(‘click’, function(){}, false)
2 s; x9 X& Z' q# K" C/ B$ F3 l3 s: G
4 o2 s2 U0 v. E( M8 n
DOM3: element.addEventListener(‘keyup’, function(){}, false)
* U4 F. s9 N% u2 Z1 l7 l4 K; x/ S
/ D5 v( p( _( ^7 l0 I0 v7 N+ O
DOM事件模型
5 G. M' @+ V P% {* U6 X
/ `! Q, \5 A' Q' E
event.target 2. event.currentTarget
6 y8 @1 i$ g7 \3 N$ Q' U: Q
event.target指向引起触发事件的元素,而event.currentTarget则是事件绑定的元素
2 _2 g- I( i8 ~2 E9 E
DOM事件流
. `! O8 ^3 v1 W2 D9 k) d* H
' P. l. K9 q8 v: b
事件流 -->《捕获》 2. 目标阶段 3. 冒泡
- m: p4 @ K4 I2 q u1 R7 m
描述DOM事件捕获的具体流程
- o9 `" w! h0 y. b" N( X
# k& D" l( e: X3 Y
window 2. document 3. html 4. body 5. 按html结构 6. 目标元素
, o1 }7 C9 ]" |* j t
Event对象的常见应用
5 R$ i* ^+ y0 Y8 {% V" B
7 H, h: K$ E9 R s
e.preventDefault() 2. e.stopPropagation() 3. e.stopImmediatePropagation() 4. e.currentTarget() 5. e.target()
# m* Y. a8 D7 i6 c& t
自定义事件
6 [! b3 o1 e& _' Z6 `0 Z
% \7 L' J' p$ b5 L. B) l3 F' ]
var eve = new Event('custome');
; V9 ^/ P# G5 \# p
ev.addEventListener('custome', function() {
1 X% x; R2 q4 C& a+ a
console.log('custome');
/ a! v% \0 C u' {3 y
});
( {# z. R/ f- _9 d
ev.dispatchEvent(eve);
9 q, s" b+ @# `8 y H- I
1
5 e1 \8 j! N' S8 U( \# P- I
2
2 w! f9 @ ^$ l" B! I8 X
3
, L. F) w$ v" D4 b' |* ]- ]4 ^
4
. p$ G+ W1 h' q: o. M
5
* ?" L, ^2 |3 n1 n3 m2 k: Q
http协议
. s; E# j1 @9 o& c: Z7 a
7 j6 [; I1 d1 j, w* ?
HTTP协议的主要特点
& T6 y& _$ k# k# v2 a
% H2 Q7 P/ o" F6 ]* \* _8 h6 T
简单快速(资源的URI是固定的,输入URI)、灵活(头部分有不同数据类型,一个http协议不同传输)、
4 A: M/ y; X3 _
& e. V5 y! i) X" F
无连接(连接一次就断掉)
# g% n; m: w' d& E, i4 p9 h
无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。
: _9 C6 z% ^& L: l. k0 J& X G
无状态(两次连接身份)
* M/ K# V4 @; ?: h
是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传
[2 b! r' E( j
HTTP报文的组成部分
/ z. d: a) \5 H: R* M5 D7 ^; F
# r1 j6 Y s; B# m
请求报文
/ @) u3 E/ T& L+ o2 c( u
1 V! [$ u+ u: x1 Q
请求行 请求头 空行 请求体
! l; ~" G) T. D. Q) w
" H; F: T3 |7 Q" a- {! m
响应报文
# U$ Y# X" |: m
| z& i# C5 q+ \" S _
状态行 响应头 空行 响应体
9 w7 w- n8 J5 J9 O
* ~' W& L6 @0 L5 T6 X( a
HTTP方法
% }# b7 J0 D7 ?# n ^0 c
h9 o% o! u4 l$ w/ y
方法名 方法作用 注意
6 }: s. F0 Y E$ m2 p. C
GET 获取资源
: R; m5 @& @% Y% B; E1 Y8 U: E
POST 传输资源
# c# a: a' z$ |8 Q9 {
PUT 更新资源
* Q" V7 g8 L6 p8 X, E
DELETE 删除资源
9 q& I+ P" d9 }* {, E
HEAD 获得报文首部
! c( ?# j5 P0 A( Q9 k5 \; h2 @
POST和GET的区别
* o# f; E8 q. c+ a
- X: k5 | n& r8 t. d
get post
0 ~, B4 G% A7 k5 \' @; i" G# L
在浏览器回退时是无害的 会再次提交请求
. R6 f8 ^- Z4 f7 e `
产生的URL地址可以被收藏 post不可以
# n- N& }. T! {. _4 M' D: R% R
请求会被浏览器主动缓存 不会,除非手动设置
: b* A5 B2 O, m& }. N2 B2 U5 a: v
只能进行url编码 支持多种编码方式
% B) e. [$ X4 H
请求参数会被完整保留在浏览器历史记录里 参数不会被保留
7 ?4 q9 E4 q" i3 u8 V9 [
请求在URL中传送的参数是有长度限制的 没有限制
! @3 p6 |8 D3 ~& L3 H H
对参数的数据类型,get只接受ASCII字符 没有限制
7 r6 H6 y- ~% _
更不安全,因为参数直接暴露在URL上,所以不能咏柳传递敏感信息 没暴露
# t( W o! E [ d {
参数通过URL传递 放在Request body中
: |2 m& o, m. L+ o5 G+ X2 L
HTTP状态码
% q$ C% p, ?- i- ^7 H8 T
) T' W) ]& L# i& g5 m3 q4 ~" {
状态码 意义
5 O) Y% {1 `. y# M2 b9 n
1xx 指示信息 - 表示请求已接收,继续处理。
+ E) y# h( i- ?& u: ~
2xx 成功 - 表示请求已被成功接收。
- f0 ^* Y2 h9 m2 _! }
3xx 重定向 - 要完成请求必须进行更进一步的操作。
( Q1 _4 k; [' }0 I% S, C, |
4xx 客户端错误 - 请求有语法错误或请求无法实现。
0 i3 ^7 P ]. s; V4 f
5xx 服务器错误 - 服务器未能实现合法的请求。
7 p$ I' I$ ^8 t# ^" c) p
状态码 意义
9 r/ Z9 l1 O) ]2 Y0 j4 s' M
200 OK 客户端请求成功
: M8 a" n5 X# W O
206 Parital Content 客户发送了一个带有Range头的GET请求,服务器完成了它
+ g0 ] d- |; |. f4 ?$ Z0 I+ h
301 Moved Permanently 所请求的页面已经转移至新的url
* Q2 i: Y5 Z. N$ W/ i5 b* _
302 Found 所请求的也么已经临时转移至新的url
1 n. {9 i+ a- a7 D( ^) \
304 Not Modified 客户端有缓冲的文档并发出了一个条件性的请求, 服务器告诉客户,原来缓冲的文档还可以继续使用
! u5 \# B. D, V( G8 T/ X& V H
400 Bad Request 客户端请求有语法错误,不能被服务器所理解
3 {( }' ]2 [, U
401 Unanthorized 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
1 W. D, J7 ]4 d
403 Forbidden 对被请求页面的访问被禁止
8 V9 O% G4 D& L% E$ _. o% v7 U P. x
404 Not Found 请求资源不存在
- l8 o2 @7 P4 u& W$ \1 a
500 Internal Server Error 服务器发生不可预期的错误原来缓冲的文档还可以继续使用
! Z8 R2 N( S" I/ e% t( G9 Q
503 Server Unavaliable 请求未完成, 服务器临时过载或当机,一段时间后可能恢复正常
4 ] r- g z! B5 @. ?; ?
什么是持久连接
1 Z" W6 L9 v& L% _+ t3 q
7 @" V& @( D; E, O2 h
HTTP协议采用“请求-应答”模式,当使用普通模式,即非Keep-Alive模式时, 每个请求/应答客户和服务器都要新建一个连接,完成之后立即断开连接(HTTP协议为无连接的协议)
4 m5 o9 h2 a5 `1 z+ ?4 q
( ?. \3 w7 v( Q& x8 `$ r' h
当使用Keep-Alive模式(又称持久连接、连接重用)时, Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。
* ]" X8 p" S& J
( e0 A! e( J* s4 m) d1 W2 Q p0 v
使用了持久连接
; y B3 [7 S/ A6 F! k! T/ n% u
! v$ D: D( W2 O/ n& n4 M
请求1->响应1->请求2->响应2->请求3->响应3
( _1 \$ n4 h( m5 Y; S. u% f
2 |3 i# O! e$ M8 a
变成了
9 G- J) y9 h j d4 g0 F
1 Y# Y* ?! v" i- v: x6 w
请求1->请求2->请求3->响应1->响应2->响应3
+ c' W$ ]$ @$ m, X: L8 \, K/ _( \
: N/ I2 _' c" Q* d% n) X
什么是管线化
) }! ?% H7 {! d; \
Z- N" ~! G I8 j$ X0 T/ g3 [
管线化通过持久连接完成,仅http/1.1 支持此技术
. u) I; {1 J8 K, t
只有get和head请求可以进行管线化,而post则有所限制
, w2 [( H+ `" I" m, ?
初次创建连接不应启动管线机制,因为对方(服务器)不一定支持HTTP/1.1版本的协议
. K6 P+ M' {& d, A9 H
…
8 {9 Q0 o7 M+ B: c; I
安全
- E7 y$ O4 Z- v8 A
5 C3 H' F1 Z, Y: |" X4 w+ t
CSRF
% i0 n$ e" a- m0 P8 k, b! x5 Y
基本概念和缩写
& h1 r8 @: B; I: U
CSRF, 通常称为跨站请求伪造,英文名Cross-site request forgery 缩写CSRF。
% B- Q, E3 K7 ?) M3 V4 y
攻击原理
! F1 J/ r* M+ s
访问网站B时,网站B引诱点击链接,用户浏览器携带的cookie就被网站B的某些代码访问了。
, z1 C0 p4 y! {0 \' T3 D; c
这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
& E) e' R7 |+ R! q) z3 C
XSS
; p W& d! n. p9 E8 R
基本概念和缩写
, \' ?) }6 a; y) Z! f! D& O
XSS, 跨站脚本攻击, 英文名Cross Site Scripting 缩写XSS。
& V+ C& W* k* ?
攻击原理
4 M' c/ a. }; P# A. G
输出脚本code
! I, O) }1 a# M
跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
5 D: X! F, Z' q
xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。
: Q( V$ V" z' D- [! V8 z+ g
渲染机制类
4 I2 ~- [6 }; w* `! q; A& R7 {5 q/ J
% P6 r- Z _( i* T: G, F
什么是DOCTYPE及作用
; {" _" w0 O7 W6 B1 t5 K
/ K& ^$ w& w2 r0 D1 i3 ^
DTD (document type definition, 文档类型定义)是一系列的语法规则,用来定义XML或HTML的文件类型。
/ e U: f, C' @" k
作用:浏览器会使用它来判断文档类型, 决定使用何种协议来解析,以及切换浏览器模式。
) s+ s7 P* J$ Q
DOCTYPE是用来声明文档类型和DTD规范的,
$ u' Q8 D: g+ N6 S6 G4 T* j
作用:一个主要的用途便是文件的合法性验证。如果文件代码不合法, 那么浏览器解析时便会出一些差错。
( e K0 }( \; h8 T0 ~) `
HTML5的DOCTYPE:
3 J( A! E7 Y1 i$ u& i
/ T' E( y( O9 L4 c! j7 ]' @
HTML4有严格模式和传统模式
% g- o; X7 _' S$ V
) U* v( Y; d/ n; W! q8 |" ?- }
浏览器渲染过程
& S( U- f& L1 o0 v$ o+ D
) A: b9 ^: N H2 B4 T, ]
一些概念
; r# k |; r P1 c+ `$ E
: U+ P# {4 e4 b; |, X
名称 概念
0 V, ?( r( P# t& ]$ h/ D
DOM Tree 浏览器将HTML解析成树形的数据结构。
: c$ p: v* a+ c. Q# c9 E9 R
CSS Rule Tree 浏览器将CSS解析成树形的数据结构。
6 |/ ?1 B, D; `: H
Render Tree DOM和CSSOM合并后生成Render Tree。
1 ~/ L0 ^# G+ m
layout 有了Render Tree,浏览器已经能知道网页中有哪些节点、各个节点的CSS定义以及他们的从属关系,从而去计算出每个节点在屏幕中的位置。
: K$ ]5 I- T3 q* S
painting 按照算出来的规则,通过显卡,把内容画到屏幕上。
) R- R' N6 L, ?' R! z* g
1。当用户输入一个URL,浏览器就会发送一个请求,请求URL对应的资源
: J. N! E; A% |. T5 ~* V# G+ z
2。HTML解析器会将这个文件解析,构建成一棵DOM树
g( l* ]" ^! Q( O
3。构建DOM树时,遇到JS和CSS元素,HTML解析器就将控制权转让给JS或者CSS解析器
% B) ~. `; b: d) G
4。JS或者CSS解析器解析完这个元素时候,HTML又继续解析下个元素,直到整棵DOM树构建完成
8 f1 ~3 k8 v' o* z O
5。DOM树构建完之后,浏览器把DOM树中的一些不可视元素去掉,然后与CSSOM合成一棵render树
0 ?6 w/ s7 t% v% Q; f
6。接着浏览器根据这棵render树,计算出各个节点(元素)在屏幕的位置。这个过程叫做layout,输出的是一棵layout树
9 r9 E" w1 F& I6 z, i, X- t
7。最后浏览器根据这棵layout树,将页面渲染到屏幕上去
& X: \$ D# m2 V0 y8 q. R% n) c# U* L
1
4 b+ }. A( _0 l5 ^
2
' ]$ v6 z7 M5 {
3
* F6 a' I1 n1 T9 ^- q
4
) s' j% Q% ]. G4 d
5
6 S0 ?9 y# E j1 X6 k/ N' ?$ p
6
- b: g$ p# o! a; W( m
7
( v; k6 l2 z0 T4 D9 y" q9 Z
重排Reflow
' K J" V f* x8 u6 ?2 x. j/ C, @ z
# `9 N$ ~+ [- o+ U
定义:当浏览器发现某个部分发生了变化影响了布局,需要倒回去重新渲染,内行称这个回退的过程叫 reflow。
: S# c( W3 Q- D U# d+ }" a" `
触发Reflow:
6 S% A* l/ f `/ O
当你增加、删除、修改dom节点时,会导致Reflow或Repaint
5 J% D4 a! v* K$ `; d: G
当你移动DOM的位置,或是搞个动画的时候
$ Y& h0 @ f/ X1 U) H. [3 V( Q
当你修改CSS样式的时候
. z3 W( y% |& [0 b
当你Resize窗口的时候(移动端没有这个问题),或是滚动的时候
& o7 D& ]0 h$ R% j* m! _
当你修改网页的默认字体时
9 z! q9 v/ M% c8 g, f
重绘Repaint
& ?, ]" ]4 h3 g+ e7 l8 D( b, G
6 _" e0 M C8 q6 W$ l
定义: 改变某个元素的背景色、文字颜色、边框颜色等等不影响它周围或内部布局的属性时,屏幕的一部分要重画,但是元素的几何尺寸没有变。
, f' n# b O4 z: u
9 e' u% f8 a% S; K, F
触发Repaint:
; e) N$ D) Q* [- G* L& _
3 v) A6 {2 l' o3 O
DOM改动
; L0 ^8 h8 `/ I1 _0 I
CSS改动
# h( F' V" U% [3 I" \& E
————————————————
7 U7 M% B. e% l8 G
版权声明:本文为CSDN博主「ton365」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
9 E2 b9 Y' q8 d5 H/ e
原文链接:https://blog.csdn.net/u012015672/article/details/105931291
% g3 ?) D, U3 Y! h, h
9 |+ @( L4 p ` M& Q* W" M
9 ]. `5 W; }* N
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5