数学建模社区-数学中国

标题: HTML 知识点(未完) [打印本页]

作者: 杨利霞    时间: 2020-5-5 14:53
标题: HTML 知识点(未完)
HTML 知识点(未完), p0 D" X, A9 d. N, C

( \5 D5 P6 ]* c' T) |0 `0 ^HTML 知识点2 Q  _$ ?! j# k5 k

( `4 d# w& d0 C, J: J" P9 H三列布局- (高度已知,左右宽度固定,中间自适应)
$ y* W; g, |) [6 f+ o8 u7 [* i, g: r( D& a8 ]( M
布局方案        优点        缺点) O) h# F, ]+ @4 O0 ?
浮动        兼容性好        脱离文档流,需清除浮动
7 A3 W1 h$ x4 s. N9 d绝对定位        比较快捷。        因为其本身脱离了文档流,导致了其子元素都脱离了文档流,使用性较差。, n& H9 x" N- `# v
flex布局        目前是比较完美的方案。        只兼容到ie9。9 u' K: B- A/ c" ?! \% h+ S
表格布局        兼容性好,当需要兼容ie8时可以用表格布局。        多栏布局时,某栏高度增加,会使其他栏高度一起增加。
8 _. S3 V4 B$ F网格布局        新技术,代码量少        ( x3 L* r! |+ t0 f% w
<!-- 网格布局 -->
) {! b5 D6 H( ^& p1 b; G<body>2 H3 J+ o4 S. r$ z* Z2 \  M$ T
    <section class="layout grid"> # `) I6 K0 x' {
        <style media="screen">) i' ?6 ], c6 M
            .layout.grid .left-right-center{1 r1 A! \, g. m+ e' q- T' K) I
                display: grid;* F5 [' Z, }7 @3 L$ a
                width: 100%;
" r/ ]( }) n, ~' Z5 h- O6 ]" ?0 P                grid-template-rows: 100px; // 设置行高, S* _' K2 n9 k" m
                grid-template-columns: 300px auto 300px; // 设置每列的宽度# t9 m7 \4 c  M1 s

) {' @4 w7 C5 _3 h" \        </style>( @  w3 N, U3 P1 D
            <article class="left-right-center">
  h* Y  y) l  |# V8 h3 O# ~            <div class="left"></div>
( ~1 a: i, \+ E/ j% F3 w- T, n            <div class="center"></div>+ _, s# ^* U7 u: X
            <div class="right"></div>
8 G) ], d- B, j        </article>; a* n0 f  X! u7 i( q/ N
    </section>
; h' O8 H1 @* o2 p: q  l- Z7 k6 H& b</body>, y# B' n$ e% A# |2 n8 _7 h
$ p% W3 X7 V. N) z9 Q5 U. s
css盒模型7 i* l& K! O$ B- ?7 R
9 S6 }6 A% I2 v" u1 p% v
CSS盒模型的认识0 I* z' u' b* v  H  \

9 A" g3 U: K+ G" Z: ^css属性: content padding border margin( _; e0 t, L) }  _0 R0 c$ O- f2 g1 `. g$ |

& v8 V9 |( t8 Q. R$ a1 H两种模型:IE盒模型(怪异盒模型)和 标准盒模型2 q/ M2 l" E* x% p. f0 z$ O

% q" n. Z5 W3 l$ v5 |# x两种模型的区别:计算高度和宽度的不同+ E* Y4 h/ z8 ]8 `( M
% {. q( ?% \7 o) U5 N6 }! d7 y
两种模型如何设置:box-sizing: content-box(标准盒模型); box-sizing: border-box(IE盒模型)* |& @- u0 b0 |% K. e
" N. k) |( V( O- ~$ p8 _4 t9 B! o
JS如何设置获取盒模型对应的宽和高: {& d3 n& y. Q6 B3 H+ }! _

6 Z( ^! y. r; v1 C2 R8 x获取方式        优缺点
2 q6 r( I; C. F* z# q3 Zdom.style.width/height        只能获取内联样式设置的宽和高) e; K( [! o1 @+ K3 t
dom.current style.width        获取浏览器渲染后的宽和高,只支持ie
2 e3 N) T$ {& e1 r. ~window.getcomputedstyle(dom).width        兼容性更好& P& @; k, k/ ]# \/ V, t% ?
dom.getboundingclentreact().width        适用于取元素的绝对位置。能取到 left top width height 四个属性 。// 获取浏览器渲染后的宽和高一般用于获取元素绝对位置
( T; @. y! @2 I. R& {实例题 (根据盒模型解释边距重叠)子元素边距成了父元素边距
3 e* h; m! R9 U# P$ S) m
1 ~/ e: G, _  L0 l块级元素包含了子块级元素,子元素是100像素! @, a# M0 b9 U' S; ^$ j! I
子元素与父元素上边距是10像素
4 o, E7 r) r8 u/ `" a& w父元素是110px还是100px (100px, 设置了overflow:hidden就成了110px)2 Y. h+ w( @* m$ V* O" D* \, y9 ~8 z- D
另一种兄弟块级元素-
6 i5 [# a+ U8 a8 @6 Z
' |. p' W# h6 F, z/ s6 i挨着每个都有上边距或每个都有下边距。-
+ g! b" S6 a+ l  M+ `8 l该重叠的原则就是取最大值9 D( j; J4 Z5 B* }
空元素的边距-取margin-top和margin-bottom的最大值% ]! C7 x5 J, q# q' C
解决方案:
; O& S7 f, D" v2 _+ _4 a8 e' `3 |( {+ d) J1 _2 x0 y5 k# o) {" ?) Q; M
父元素创建成一个BFC (无论父子,兄弟情况)" F! s0 W, l. A. ^8 o8 o4 m0 I
1 f1 t4 c- c1 `4 L8 v
4. BFC (边距重叠解决方案). u, O2 O* x4 O2 x+ E
! I7 k+ M, r# p) [) J. d* Z3 t; V1 n
BFC(边距重叠解决方案)! P6 i# J" v9 j+ m9 F1 y% E% b
) [4 Q# R$ R; U) H! ], j2 D
1、BFC的基本概念: 块级格式化上下文;9 F2 U) V( o% X0 i4 n
- p3 G% B+ I+ D* d% F! A
2、BFC的原理:BFC的渲染规则。
: h, W3 i4 B6 X* w% f
+ f7 B  J9 E& E+ O6 P( z" b①:在BFC这个元素的垂直方向的边距会发生重叠。(同一个BFC下外边距会发生重叠)- F4 p/ h& p" @* @

9 b) r$ g/ E% b" F3 K! \1 }②:BFC的区域不会与浮动元素的box重叠。(清除浮动)
( G  Q. A4 `' _) m: ^( K7 ^" ~9 j# f4 o& d" L; z, q7 v. C- f
③:BFC在页面上是一个独立的容器,外面的元素不会影响里面的元素,里面的元素也不会影响外面的元素。9 z! H& |" c& {6 h2 e' E7 Y5 w1 q6 l
: o, \* V" @+ q: z! x$ H0 R
④:计算BFC高度时,浮动元素也会参与计算
. n$ L5 m. p, S* m
+ D6 g( c1 Y& L7 R3 t3、如何创建BFC6 h  M. [; s0 {% W2 L5 K

" w: f9 ~: H" v+ e/ E4 O2 d①:float不为none。
7 [! p# x1 m! N3 `! }& U  I3 \6 c4 D& U- @: g& b4 r
②:position不为static或者relative。
% b! v; e/ w/ \1 b1 o8 z! u& L' B9 i: E3 ~
③:display为inline-block或者是table相关的。7 N9 f& r! e9 \, M8 X7 }

% M' `. Y) L& ]0 X* D) U! D④:overflow不为visible。7 @- M6 L5 F4 [8 z: z2 Z% N

0 h9 R$ H6 U+ r, k  v. n" m' o) c⑤ : body 根元素
0 T: ^/ w: m' C/ a: t( `( ?8 W9 @  ]: U3 h  D; Z$ h& I
应用场景:
' ?* ^/ K5 ~, ?1 v% F1 O% Y6 B, c1 N* }左右布局时,float
% C$ f4 u8 x8 g相邻div使用margin产生边距重叠
* Y) L4 u- J) g. P* T' ndom事件
! }0 z  d* c3 N1 D/ n5 b5 D
5 G6 U! A8 n9 N4 q% i/ t基本概念: DOM事件的级别
3 R$ K3 o2 K& H( |1 R; {3 `$ F' |# D" y- J0 Y7 ?4 }+ m2 b
DOM0: element.οnclick=function(): z! l& j* k9 |1 X& ?7 w9 M1 L

- a! ]1 {) s, @1 j, b3 iDOM2: element.addEventListener(‘click’, function(){}, false)
8 z( E1 e3 ^" {/ N! I3 }3 @% S; ?, p
DOM3: element.addEventListener(‘keyup’, function(){}, false)
4 g9 B  m" V4 F& P; z8 J- A  M. p4 P( ?9 L6 t
DOM事件模型
7 m9 f' M9 @& l$ E
/ N/ j% G$ l1 Z1 sevent.target 2. event.currentTarget
+ D5 O$ g/ F/ c# z! L+ e8 ?( devent.target指向引起触发事件的元素,而event.currentTarget则是事件绑定的元素: _. r' }6 l5 y4 X" P* s
DOM事件流
1 W0 Q! Q' w' b5 M. k8 ], {$ ]# R, S$ s. j6 ]
事件流 -->《捕获》 2. 目标阶段 3. 冒泡
  r' z( _# \2 {: w描述DOM事件捕获的具体流程* c" e  a$ d. [
7 z0 l4 D3 A4 P& M. S
window 2. document 3. html 4. body 5. 按html结构 6. 目标元素7 }' g3 m# Y+ ]: `
Event对象的常见应用7 y* p# _6 U8 d% p. a& S/ N) K
8 P* t2 h2 @9 J7 {  m1 |2 |
e.preventDefault() 2. e.stopPropagation() 3. e.stopImmediatePropagation() 4. e.currentTarget() 5. e.target()
7 h! L9 ?# l/ Q+ o  g自定义事件! h, A2 f$ y$ q$ p8 A9 U- Z5 x
; b8 X$ c( H7 _4 c- U7 p
var eve = new Event('custome');  }4 e7 f' I1 {- z
ev.addEventListener('custome', function() {# R2 @  r: Y5 x5 @
    console.log('custome');4 [% w! T2 z% ~. I9 u7 W) S
});
9 _& U) J7 C1 X& M( yev.dispatchEvent(eve);( s( w8 b: y; P
1; H. T) C: v: i; X- _
22 D( @" a/ t; \
3
8 w7 Q+ {; W+ N8 b43 i& T$ U* z; o  p3 ^$ \
5: W# T, O* Y: ~$ L0 e4 E
http协议
$ k. _* ]3 h& |/ H
1 g$ B6 O  d  k% y7 DHTTP协议的主要特点
! ^* M$ O, e3 G, G( _  p, K" n/ ]8 ~3 z5 F/ n/ V  V, j$ M
简单快速(资源的URI是固定的,输入URI)、灵活(头部分有不同数据类型,一个http协议不同传输)、8 T5 @$ ]; `: T# c1 k0 h3 @

% t4 @1 p3 \% C8 X/ Y9 h9 m3 Q无连接(连接一次就断掉)
9 z5 g8 _5 n+ s3 ]- O, `无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。  B* M; G3 w( i6 n' p3 B; e+ f4 G
无状态(两次连接身份)
6 v% k3 ?& s7 k7 x) L& i+ B  B7 U是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传
' F2 f; Y' [! l* F  @HTTP报文的组成部分
, w4 E( \6 y8 W. Y' r  E9 u2 c) X" r0 u! c: s9 i8 M* g, W
请求报文! G/ X7 c( t' n
! F# D3 z7 h; b
请求行 请求头 空行 请求体' H5 ]3 Z- g5 u/ U" t' y/ [* M

$ t* Y% g! z# l( {- K: U0 g响应报文/ s; d* _* @8 H# b+ k$ b( U
1 ^: g" ^, H6 b7 f3 k! M& h9 z
状态行 响应头 空行 响应体- Y( h. V& h/ ]# e! ]
' C& t- [) a7 Z% h+ ^' d7 P4 S  p
HTTP方法8 l0 O, f" l; U" b5 o
) U2 K+ ~3 Z/ L, @0 t7 Y
方法名        方法作用        注意3 z2 J, j7 T7 s; [
GET        获取资源        1 X% q# O9 Y% g' D+ H' h
POST        传输资源       
, a. I- ?# `: S0 gPUT        更新资源        2 u, e/ P! o0 u
DELETE        删除资源        / \7 {9 L/ ~% K( ^8 q. g3 |
HEAD        获得报文首部       
  A( }* O6 J3 f2 k: h% q$ M& [& h' EPOST和GET的区别
* A  }1 I: `" t* w" g/ v) E6 s6 K' G# h9 e& t
get        post8 R, P  P) _) A: L2 ?. N2 ?
在浏览器回退时是无害的        会再次提交请求
. l) s( B  m% z4 h5 W) h  N产生的URL地址可以被收藏        post不可以
4 X) B5 j' f+ z+ P) b请求会被浏览器主动缓存        不会,除非手动设置1 t; |+ @) a7 d+ a7 ?
只能进行url编码        支持多种编码方式, V3 x4 P& D# G
请求参数会被完整保留在浏览器历史记录里        参数不会被保留* H3 J. ?) O0 a# f0 [
请求在URL中传送的参数是有长度限制的        没有限制2 j' {& w" H. }8 `4 ~' s& n
对参数的数据类型,get只接受ASCII字符        没有限制
8 r7 C, T# J; d更不安全,因为参数直接暴露在URL上,所以不能咏柳传递敏感信息        没暴露
2 q* w9 K0 }2 G7 L2 v% X参数通过URL传递        放在Request body中
* t! l: ?, B# O0 u* v4 xHTTP状态码
/ S6 r& r$ S" G
- O9 ~! @: g5 L/ U* l, A+ O# D5 Y状态码        意义: ]; O% k# d7 a8 M6 \8 ]
1xx        指示信息 - 表示请求已接收,继续处理。
6 U4 j0 f9 d. b" C/ v2xx        成功 - 表示请求已被成功接收。
: [1 ?. C  t, Y* I) T4 }* Y3xx        重定向 - 要完成请求必须进行更进一步的操作。
7 O) {: a1 Z, }1 A% |4xx        客户端错误 - 请求有语法错误或请求无法实现。, R/ D6 D- r6 a8 [( r$ A; _0 y
5xx        服务器错误 - 服务器未能实现合法的请求。+ |* |( |, o5 e  T  w
状态码        意义/ s7 u# V- _0 U6 `2 {6 K) n, c5 p
200 OK        客户端请求成功5 A0 _1 g1 E# K/ g" Z/ Q, x
206 Parital Content        客户发送了一个带有Range头的GET请求,服务器完成了它
: \! h6 b2 N& V1 N8 k" Y301 Moved Permanently        所请求的页面已经转移至新的url; N* ?" g+ }( B; W. ^3 c3 x+ e
302 Found        所请求的也么已经临时转移至新的url
  W( t' l5 x( S$ ~+ L2 @3 P304 Not Modified        客户端有缓冲的文档并发出了一个条件性的请求, 服务器告诉客户,原来缓冲的文档还可以继续使用  S5 [1 _5 n9 m
400 Bad Request        客户端请求有语法错误,不能被服务器所理解8 U' Q& Y, }& U0 K
401 Unanthorized        请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
: }" G; M" ]  R. \# q403 Forbidden        对被请求页面的访问被禁止. n$ U7 S, P- d! J# i+ {, `
404 Not Found        请求资源不存在
  Q) v( w9 i1 k# c) _500 Internal Server Error        服务器发生不可预期的错误原来缓冲的文档还可以继续使用  b/ u: g& `% r) V8 s
503 Server Unavaliable        请求未完成, 服务器临时过载或当机,一段时间后可能恢复正常
2 `& ~% Z# n% b( X什么是持久连接7 N0 q+ }7 R/ T) Y! q

( v$ Z; g2 H. h/ s, x/ tHTTP协议采用“请求-应答”模式,当使用普通模式,即非Keep-Alive模式时, 每个请求/应答客户和服务器都要新建一个连接,完成之后立即断开连接(HTTP协议为无连接的协议)
; J$ E/ ?4 z3 o( c% Q; S; T3 f  B
当使用Keep-Alive模式(又称持久连接、连接重用)时, Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。
( i% [% h- z+ {3 G+ P4 `/ `- \: K5 M. d( [# K
使用了持久连接
- M# a" J3 d% B% @
1 X, o) d) T; Z8 G请求1->响应1->请求2->响应2->请求3->响应3
! J1 j! x7 U; z/ n1 b8 x5 R  J. z' w1 l. {$ n! Y( w: j) A6 u
变成了0 {4 d/ o( t  F5 y3 R7 S1 c' I4 i9 D

- ^5 w$ F% n0 u请求1->请求2->请求3->响应1->响应2->响应3
$ k4 T. ~: h5 K5 ?$ {, }- S) K/ _3 k; D6 L$ w4 x
什么是管线化
& H8 \' G1 {5 H. V( f: x
" w, a: b1 C0 \4 _  Q管线化通过持久连接完成,仅http/1.1 支持此技术
- Y/ G; A8 M0 G3 H. u( D( y只有get和head请求可以进行管线化,而post则有所限制
' J% ?2 x  r$ j) ^: M, ^初次创建连接不应启动管线机制,因为对方(服务器)不一定支持HTTP/1.1版本的协议
) Q% N! |6 [+ ], x+ e: ]. y4 W, `2 R. T: K7 D
安全. H2 w9 i2 t+ g! a8 Y
6 N9 I9 |7 p/ o/ u+ q7 v. n4 d. P
CSRF
2 K: b& [, O: f1 g2 ^基本概念和缩写4 o; N# X' C0 k( Q, m6 x
CSRF, 通常称为跨站请求伪造,英文名Cross-site request forgery 缩写CSRF。2 @8 L2 _) W9 F0 O( z+ p
攻击原理
. b- C7 _$ |- B. v( V访问网站B时,网站B引诱点击链接,用户浏览器携带的cookie就被网站B的某些代码访问了。
' u/ i  V- V1 U, d7 W: p这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
* R: J/ g0 t; K! N( wXSS
* b, v0 `2 e: t1 y$ K- o  K基本概念和缩写
6 A$ W  W) l5 uXSS, 跨站脚本攻击, 英文名Cross Site Scripting 缩写XSS。
/ X6 |* D7 I# _0 J+ M攻击原理0 y& x1 t( h6 M: }9 ?
输出脚本code
/ X3 ]" F2 ~8 B跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。% _9 N+ v  Y& m& n
xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。
7 C2 N4 [' a* b# F渲染机制类
4 u  K" Y. v$ B% B
4 R0 [* T3 a+ ~0 g; I- P; x什么是DOCTYPE及作用" T; k% f& a  V0 N, M$ {) F; w
; z# a, E4 x1 K
DTD (document type definition, 文档类型定义)是一系列的语法规则,用来定义XML或HTML的文件类型。
+ s  |4 E, j9 M; j8 ~: A, D0 r作用:浏览器会使用它来判断文档类型, 决定使用何种协议来解析,以及切换浏览器模式。  @! w' e/ ?3 `/ y
DOCTYPE是用来声明文档类型和DTD规范的,
" `2 ~6 N' Y% m9 S/ h作用:一个主要的用途便是文件的合法性验证。如果文件代码不合法, 那么浏览器解析时便会出一些差错。
; `4 ]* k: q: U: wHTML5的DOCTYPE:0 A' c3 n0 a0 s9 _! K9 l; {" [
3 D& D# n7 y1 |& b- ]
HTML4有严格模式和传统模式
6 c9 E* Q7 b6 K! \
- S( T* F/ c) K5 C) b浏览器渲染过程/ n) ^; O7 V( S( Q6 Z0 x: J. d2 y
7 L. e8 N6 E4 \7 R: z4 W
一些概念
; E& `; E! g: `, n& O( A# w: s9 H+ N0 V7 @% H- e% R; J' p
名称        概念
  C3 n5 P5 r1 o, \DOM Tree        浏览器将HTML解析成树形的数据结构。) a* M5 [5 R0 V- }  C
CSS Rule Tree        浏览器将CSS解析成树形的数据结构。6 ^2 b6 z8 e: q; E7 |
Render Tree        DOM和CSSOM合并后生成Render Tree。
4 y5 G) ~+ v' U6 l5 g+ m0 Flayout        有了Render Tree,浏览器已经能知道网页中有哪些节点、各个节点的CSS定义以及他们的从属关系,从而去计算出每个节点在屏幕中的位置。. u2 a* ], z; ?$ e% C
painting        按照算出来的规则,通过显卡,把内容画到屏幕上。4 ?: L7 O* |. C1 ?& s+ w6 i" j( I
1。当用户输入一个URL,浏览器就会发送一个请求,请求URL对应的资源0 _* Z" |! E/ |, y, V
2。HTML解析器会将这个文件解析,构建成一棵DOM树) K. p/ p7 `( K9 D& [9 u0 |
3。构建DOM树时,遇到JS和CSS元素,HTML解析器就将控制权转让给JS或者CSS解析器! ]' I" P9 G5 A& Z1 Z
4。JS或者CSS解析器解析完这个元素时候,HTML又继续解析下个元素,直到整棵DOM树构建完成% \$ Q7 l7 u, N8 J" Z; b
5。DOM树构建完之后,浏览器把DOM树中的一些不可视元素去掉,然后与CSSOM合成一棵render树
( b0 [  I6 M) ^6 h6。接着浏览器根据这棵render树,计算出各个节点(元素)在屏幕的位置。这个过程叫做layout,输出的是一棵layout树
' y+ ?2 F" M0 s/ N  e% h. S4 }+ `7。最后浏览器根据这棵layout树,将页面渲染到屏幕上去
8 H. a% z9 Z2 [& i1
$ o& ], c7 U5 X4 `) T2
: R) t7 V. s0 x8 o33 ~. l0 d% q8 N* B3 H. Q
4
: Y$ F/ o  C  G+ g/ V; L53 J( c- ^2 _' k8 f
6
2 T; O1 u. A+ P6 m0 Z9 ?1 ?7
1 R; l! ~; c( ?8 n5 T重排Reflow7 K+ w$ J, F  b$ }; i

+ d1 j3 l8 x. U# l2 L" P定义:当浏览器发现某个部分发生了变化影响了布局,需要倒回去重新渲染,内行称这个回退的过程叫 reflow。
& E) Q0 \/ t$ z$ Q7 G触发Reflow:, k! [3 H8 X& c! s6 n8 G# v
当你增加、删除、修改dom节点时,会导致Reflow或Repaint7 a7 T& i  y: D1 c
当你移动DOM的位置,或是搞个动画的时候
' X  @; l5 a( R" Z当你修改CSS样式的时候
) b  a- _, I. ^: a6 r当你Resize窗口的时候(移动端没有这个问题),或是滚动的时候
# C8 a7 b9 ]. J0 q( E当你修改网页的默认字体时
# ]0 @$ q+ b6 j/ {( y$ |重绘Repaint
1 T1 @7 @  f; Y8 f# R" e' ^; K
- u& d$ `/ T$ \0 W1 l3 b定义: 改变某个元素的背景色、文字颜色、边框颜色等等不影响它周围或内部布局的属性时,屏幕的一部分要重画,但是元素的几何尺寸没有变。# T; P  Y1 [- O! ~

" \$ q8 R& i! k% k$ F触发Repaint:
( K$ B9 {4 [7 ^0 y) u) `5 v" K, m* l3 V: ^6 s9 _* g
DOM改动
" x7 g! D8 ^& q1 m1 ?! TCSS改动
: q4 p' i( \7 T9 {$ y; c! i" u————————————————, Z& w, k3 I' y" \- t; F
版权声明:本文为CSDN博主「ton365」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。) i+ q' \$ S( `0 J* o" @+ c6 C5 y
原文链接:https://blog.csdn.net/u012015672/article/details/105931291
) b# o$ H" J$ P$ x8 _! Q: Y4 I/ g0 \# T
& T6 ^/ g9 z* n) ]+ M& ?; r) R





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5