数学建模社区-数学中国

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

作者: 杨利霞    时间: 2020-5-5 14:53
标题: HTML 知识点(未完)
HTML 知识点(未完)( [0 F5 ~* a7 h6 l

% x7 T4 q8 \  z4 yHTML 知识点7 L2 W! o+ S. n! y" M+ k9 a

! X# N5 }3 Q* g0 F  e( v三列布局- (高度已知,左右宽度固定,中间自适应)
% U+ d; E% V2 A5 W' j+ ?- Z1 E  K$ w  q0 J! L% M
布局方案        优点        缺点/ s8 M7 G! l9 N5 ~* a3 _: E* C2 C+ s0 j
浮动        兼容性好        脱离文档流,需清除浮动
2 _) ]& c6 y! ?8 K% _, t绝对定位        比较快捷。        因为其本身脱离了文档流,导致了其子元素都脱离了文档流,使用性较差。1 Q3 \# R+ ]6 X% L2 C" r/ ^5 p1 ~
flex布局        目前是比较完美的方案。        只兼容到ie9。- N. ~0 p/ R: h2 q% X5 j/ {
表格布局        兼容性好,当需要兼容ie8时可以用表格布局。        多栏布局时,某栏高度增加,会使其他栏高度一起增加。
( @' n& y; p% A. t6 b) w1 U网格布局        新技术,代码量少        : o4 a# }; r3 c$ v/ y7 t
<!-- 网格布局 -->
6 p2 Q  x% e8 f. c' T% y<body>
& c+ N; {; u% p    <section class="layout grid"> 8 ?4 F3 Z7 W7 F" s# Q- d. y5 e
        <style media="screen">
2 L! J+ V8 q& K3 N. V7 F* \            .layout.grid .left-right-center{4 q/ C4 \; U4 q8 C9 f4 V8 F
                display: grid;% I& d6 _% O; v1 l& i/ i0 L
                width: 100%;
+ d+ ~" e/ z( e+ Y0 f% q                grid-template-rows: 100px; // 设置行高4 }- y. w: D# }) w# Q
                grid-template-columns: 300px auto 300px; // 设置每列的宽度3 l: p0 j) u9 T6 |+ U
, x$ f! G5 i) \
        </style>
! m0 o+ e6 S: j5 d9 G+ F: H            <article class="left-right-center">
5 Y6 Y) R8 M7 \( z9 c& _+ i            <div class="left"></div>3 @9 h1 c6 @- y, t
            <div class="center"></div>
1 _3 |4 i9 o. v1 @& F/ R            <div class="right"></div>7 F# c! C; E5 n2 a' ], L
        </article>  @4 }( n( j5 Y. @( w
    </section>0 ^4 G( g- k% c4 D; i
</body>2 [+ I( J8 i1 R9 u5 @
1 M. _9 ~$ T5 C9 Q
css盒模型
4 \; q' X( ^5 i1 j5 }
% j6 b) ]( e; E$ _- D) l" vCSS盒模型的认识8 d& r1 p: y( I8 e" X+ b* V, [& X
/ v  q* p* e# ~6 a" k5 F; l6 Z! r& V
css属性: content padding border margin# I/ g  I- G% P$ l
9 F( g, T7 d; M
两种模型:IE盒模型(怪异盒模型)和 标准盒模型
, o7 c" F0 r5 }% j& M, K. [4 @, U; w, p' w, r. o( ?8 q; a; `
两种模型的区别:计算高度和宽度的不同$ C$ l; \, K6 K$ n

# C) }1 ]- Q1 S5 ]7 W7 F! `+ P两种模型如何设置:box-sizing: content-box(标准盒模型); box-sizing: border-box(IE盒模型)
+ ^; U8 t3 B8 M. l- \6 z3 g1 B
) D  i# x' L3 I, p6 B  Q! w$ O6 tJS如何设置获取盒模型对应的宽和高
' K5 e7 U( Y3 X$ h+ n
" g2 t5 O( f, v& v获取方式        优缺点
" f0 d: S9 z/ {9 k9 Gdom.style.width/height        只能获取内联样式设置的宽和高
, z2 D+ ^3 i! e* Q! T$ O, kdom.current style.width        获取浏览器渲染后的宽和高,只支持ie
; u6 Z9 s1 H  F- C7 xwindow.getcomputedstyle(dom).width        兼容性更好
2 K8 [9 M$ H; {$ m* n1 xdom.getboundingclentreact().width        适用于取元素的绝对位置。能取到 left top width height 四个属性 。// 获取浏览器渲染后的宽和高一般用于获取元素绝对位置
6 `9 y3 X6 k* ?$ @7 W实例题 (根据盒模型解释边距重叠)子元素边距成了父元素边距# `% f5 ^) r& i4 D; F  v7 c

3 Y$ U& o  V# l8 B+ ?% u块级元素包含了子块级元素,子元素是100像素! {) ?; v7 l5 ^& `: f, n: f
子元素与父元素上边距是10像素
5 o/ |) q, e* U7 H, d4 ]% S父元素是110px还是100px (100px, 设置了overflow:hidden就成了110px)
/ @) `4 n- `* P6 o3 z另一种兄弟块级元素-6 b9 Z0 _! u, w" d$ V
; O1 [) u  T1 q& x& z* E1 c
挨着每个都有上边距或每个都有下边距。-! \% ^* M: M( a3 r; Q2 I& k
该重叠的原则就是取最大值) H7 O4 s9 q9 O9 O( u
空元素的边距-取margin-top和margin-bottom的最大值9 r' P+ I! e2 P
解决方案:; C, V/ I4 m2 H) L! n1 l

8 N  W+ k* {! h) D父元素创建成一个BFC (无论父子,兄弟情况)
, n% L/ u# ~2 E/ E7 j( C% o+ l. l+ _; i( S! D
4. BFC (边距重叠解决方案)
" e* z, {- A* {6 U5 y6 }( F! P/ n2 l  ?% Z2 K& x
BFC(边距重叠解决方案)
8 E' l8 E7 o# b$ v: j! o
- e/ J8 W: _9 Q2 Q2 _8 V+ ?, U1、BFC的基本概念: 块级格式化上下文;
' h' m5 n8 Q: _1 @0 G4 T7 h) V' A6 t
2、BFC的原理:BFC的渲染规则。
8 |- W, u+ h+ ?
% P8 Z" O: z# U  h& j①:在BFC这个元素的垂直方向的边距会发生重叠。(同一个BFC下外边距会发生重叠); G- F6 Q6 n2 \/ {

2 @, ?6 L) i/ l1 M②:BFC的区域不会与浮动元素的box重叠。(清除浮动)8 e0 Q; a, X! X4 L

- e3 R5 Y$ U: k, ~, B7 z, `③:BFC在页面上是一个独立的容器,外面的元素不会影响里面的元素,里面的元素也不会影响外面的元素。
; b8 s& J7 A  e! X/ ~/ r3 O- r9 u' n9 ?
2 a8 `- i6 U/ h0 E④:计算BFC高度时,浮动元素也会参与计算  T% o- Q9 N- }, R. E
% F4 v6 n2 T* B4 N
3、如何创建BFC6 d- T' g9 u; ^! `; u
$ ?5 A- D. D# P
①:float不为none。
1 e" P; x# F# o, `( F& B5 u, m7 L  v$ G( L% H2 i
②:position不为static或者relative。
# K, w+ F' ]' U8 ?4 ?5 L+ J) }8 Z
* e/ i* R* L3 t1 s③:display为inline-block或者是table相关的。
3 [- q5 ^9 G3 Z4 g9 L" b# }) o7 H. ~
" k7 @% C' y( \( _8 o- Q2 _2 Y9 s④:overflow不为visible。
( r1 W: x- g! j. t1 t- p# S0 L9 r( L" n% V; h" e3 f! s- K9 D
⑤ : body 根元素
9 W- P  @. y1 C" p- S6 I. j3 ^0 ?$ Y$ e+ F1 p+ |' N
应用场景: " R/ i% ^3 j( U$ D* u. p: V9 z: Q
左右布局时,float $ {- F/ V! B6 O1 C; d# N( }
相邻div使用margin产生边距重叠
, x3 V6 A  R- u. p7 D' l5 E% Adom事件
; a! o, T" x; n' Y* O; Y
3 _2 u0 A! v9 a0 W9 L! Z8 ?" |8 a基本概念: DOM事件的级别$ ]$ P! U: M" h

7 l. r1 G0 J* A& a3 k+ s5 pDOM0: element.οnclick=function(), G' p! f7 r2 p

; j5 S' p1 P# |8 N% mDOM2: element.addEventListener(‘click’, function(){}, false)
0 B, ?, j+ m" T1 ~5 e
$ ?2 P( q6 x: S3 s3 O* `DOM3: element.addEventListener(‘keyup’, function(){}, false)
/ Z) w+ E, x  q0 o" _( o! o, d. Z: j2 U1 p
DOM事件模型5 ], I7 W6 Q3 w2 E) Q" h

* s. o4 T. w# \$ Oevent.target 2. event.currentTarget/ _) F7 b; y3 Y  c2 }; p
event.target指向引起触发事件的元素,而event.currentTarget则是事件绑定的元素
9 v5 b* K4 E2 U- G: ^9 PDOM事件流; f0 i" M$ l' r  G/ K  X+ Z  ?6 ]6 R  n) K

# J. f3 J( p  I: P/ ?" I; ^- T事件流 -->《捕获》 2. 目标阶段 3. 冒泡
7 ^0 u1 Q* E0 N, y! M! R. j; O描述DOM事件捕获的具体流程$ L% {! R! w* J0 T0 t6 n" s  E) Z

# ]3 J" O3 _" D# `, A4 Hwindow 2. document 3. html 4. body 5. 按html结构 6. 目标元素# T1 u: D6 O9 C0 s* n3 ]
Event对象的常见应用
" z* _; M7 a2 G- w. {
- i* d+ X/ O2 |) N8 T# X6 ee.preventDefault() 2. e.stopPropagation() 3. e.stopImmediatePropagation() 4. e.currentTarget() 5. e.target()
! m( t. s- |$ B$ C自定义事件
, s+ V4 {7 S: i7 r, f7 `% c5 a" P' j+ _' ]9 U1 o% i8 n
var eve = new Event('custome');
; G5 w8 I% G3 Xev.addEventListener('custome', function() {
9 n: _3 D+ i+ C    console.log('custome');
3 U2 x) _: y+ J1 \$ N4 }  c; A) s});
; Q- K7 a% N: T6 ~9 K) w+ oev.dispatchEvent(eve);' G: M" M) ^' O* T
1
" v- p$ S6 [: `4 ~+ |2* [& c0 O: v2 a7 t
3
% G0 K" k7 r5 Q" b/ q  ?0 E4. U8 f% C7 W% d4 ~( l1 c1 j
5: \5 ], ]+ [/ o9 J: ~3 u1 L' ^
http协议
) \- S! ~2 }0 d; X1 u. F4 s/ U# Y( M* S1 I6 @6 ~/ }
HTTP协议的主要特点  q) y* _) c+ U. ^
1 r) V8 P0 x, n
简单快速(资源的URI是固定的,输入URI)、灵活(头部分有不同数据类型,一个http协议不同传输)、
, ?- G4 q0 W+ v5 e6 a* X
9 E: e' N) A: Q0 t3 h! K1 m' ^无连接(连接一次就断掉)
# P' m+ ?" c9 X1 R- u" W无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。' B* H+ u* \1 }; r- ~# @$ F
无状态(两次连接身份)) P( G; h" \1 Q) ~8 }
是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传
7 L$ R7 h$ {2 g. U  P. f; yHTTP报文的组成部分% W; X7 V+ \; @* \0 ~9 I+ h

6 T0 f& _8 ~/ i3 C请求报文3 h5 C5 Q5 o( ~$ r2 {, N3 M
* }% D9 W5 s/ r
请求行 请求头 空行 请求体
  v) P9 t  H1 ~3 E* U0 V' e6 J4 M8 j6 D! b9 n9 w. {) n: S
响应报文
; _6 {% p3 [' n/ Y& `7 z5 h0 M
! S  t& g$ G: L1 U$ a. X. Q+ I2 J- p- s状态行 响应头 空行 响应体% k! v4 }, u4 ?" i3 G

7 }, X- x4 a3 V  K3 v5 m6 m) ?HTTP方法  Q: Z$ h# n1 A: S2 E
5 q7 s3 R& Z8 l8 d  Q& m) G+ q. x
方法名        方法作用        注意" I: q% _* u7 H# d/ q
GET        获取资源        : `$ D% h& d# @; d" k: a: A0 A
POST        传输资源        ) s$ W& U! g& O, Y) n5 A5 \
PUT        更新资源        0 V5 ]- a4 T; S
DELETE        删除资源       
% a; F% R$ a/ MHEAD        获得报文首部        " l. L% b  M! \+ R4 W' s
POST和GET的区别+ N# L' r6 R( i4 K+ t5 E; G4 D- o
0 c9 l) e  j" r% @# W
get        post
9 L9 [+ m. N. _$ {9 W* V6 P% Z2 x在浏览器回退时是无害的        会再次提交请求
8 o# I  @  N' c产生的URL地址可以被收藏        post不可以
5 V2 d3 `) v4 \) v$ H" b* s请求会被浏览器主动缓存        不会,除非手动设置' W/ p- }, F( `8 d: w
只能进行url编码        支持多种编码方式
0 k5 |. f3 H1 f4 }( [/ g4 Q请求参数会被完整保留在浏览器历史记录里        参数不会被保留* [1 @, s# e) }3 S# Y1 M
请求在URL中传送的参数是有长度限制的        没有限制
  s% E. F* R* g对参数的数据类型,get只接受ASCII字符        没有限制4 r5 f* {! u( m% z" N
更不安全,因为参数直接暴露在URL上,所以不能咏柳传递敏感信息        没暴露# \* ^, |* h# z9 P- b
参数通过URL传递        放在Request body中) v  b4 m" y  D: L3 R
HTTP状态码
9 K5 d3 y( W# _
- x3 f& S& T' ^6 p1 X状态码        意义7 m0 M! E8 G  q) f
1xx        指示信息 - 表示请求已接收,继续处理。/ E+ k9 t0 ~( d
2xx        成功 - 表示请求已被成功接收。
7 C* r$ G4 j5 L% g# K3xx        重定向 - 要完成请求必须进行更进一步的操作。/ E5 t3 a5 j$ v( a; C" K+ V
4xx        客户端错误 - 请求有语法错误或请求无法实现。3 K5 A& ]' {2 A: e5 z: y
5xx        服务器错误 - 服务器未能实现合法的请求。* a" B% A: W; t2 q' v8 P, a
状态码        意义" G) a9 N6 j; V' ?+ x; J4 v& @% G
200 OK        客户端请求成功; M. [4 s& B# d0 h) Z/ N
206 Parital Content        客户发送了一个带有Range头的GET请求,服务器完成了它
$ U9 {9 m! O6 I3 S+ L0 [% p301 Moved Permanently        所请求的页面已经转移至新的url% [! y3 S6 u& P# s5 Q3 d' p2 X
302 Found        所请求的也么已经临时转移至新的url5 Y" j6 X0 K# g+ I5 K
304 Not Modified        客户端有缓冲的文档并发出了一个条件性的请求, 服务器告诉客户,原来缓冲的文档还可以继续使用
0 `$ O) S) w. X: \: c400 Bad Request        客户端请求有语法错误,不能被服务器所理解. N  H& O, g- J! {# q" T+ U
401 Unanthorized        请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
' B5 V  u: d/ }2 F403 Forbidden        对被请求页面的访问被禁止/ L5 Y, ^, R( |
404 Not Found        请求资源不存在  y1 d6 y! q8 |( r% [9 M) s6 b
500 Internal Server Error        服务器发生不可预期的错误原来缓冲的文档还可以继续使用
5 U' s% Y6 |# R: @- p2 }0 X' `503 Server Unavaliable        请求未完成, 服务器临时过载或当机,一段时间后可能恢复正常
5 s6 B5 M# V# e. k) b& U什么是持久连接
7 f' R. ~: G8 ?7 H
, r) x, T/ O; x. u2 Z4 z# z5 O! @HTTP协议采用“请求-应答”模式,当使用普通模式,即非Keep-Alive模式时, 每个请求/应答客户和服务器都要新建一个连接,完成之后立即断开连接(HTTP协议为无连接的协议)
- K$ p+ T: ]9 {- P: I6 a! [, F* x1 I$ W6 V* h# o$ N  E& C
当使用Keep-Alive模式(又称持久连接、连接重用)时, Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。! j1 K0 U' ^. @" V, @4 n6 Y6 W

2 N9 W8 \& g  x, C使用了持久连接
( ^: F) q: E5 ^9 P8 Q' K+ A, O5 m# E0 Y( O3 N  U8 p0 G* D, ^
请求1->响应1->请求2->响应2->请求3->响应3& A. R6 `1 T" Z4 H
1 r8 l0 D( W* L
变成了
% f$ I+ b& u+ @# w! r; ~: e2 C" L! z0 X5 l7 ]' C/ q, N( e
请求1->请求2->请求3->响应1->响应2->响应3* t5 T1 h# K1 ~: ]
; H9 N! {* e( r* c' W
什么是管线化
- B% x( P1 ^: K3 t9 s. |2 j/ e9 C" K2 ~
管线化通过持久连接完成,仅http/1.1 支持此技术) y+ w8 W" D! e
只有get和head请求可以进行管线化,而post则有所限制
2 b9 A4 a/ A- v( S  `初次创建连接不应启动管线机制,因为对方(服务器)不一定支持HTTP/1.1版本的协议1 f: o0 S/ b$ i

+ n1 ~& g) T8 E/ j( z8 X. O+ C- C安全
8 Z; A4 M1 K9 u+ k; w9 k8 Q; A8 G3 }+ B
CSRF" s( w, o5 R# t6 K4 g0 H8 Q9 L
基本概念和缩写
9 x, E$ p# Y6 ^' v/ V! ~& w! }CSRF, 通常称为跨站请求伪造,英文名Cross-site request forgery 缩写CSRF。% B& J" a* L2 o: B9 f7 f8 H  x
攻击原理8 @3 ]$ q0 ]' B* ?% @$ p
访问网站B时,网站B引诱点击链接,用户浏览器携带的cookie就被网站B的某些代码访问了。
5 h2 M1 |2 o' S9 C+ Z- ?这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
7 P  o* I! ]( h( z  yXSS5 P1 H  m- b- J; b( Y. z
基本概念和缩写
4 h; \% M& M# a+ |4 ?XSS, 跨站脚本攻击, 英文名Cross Site Scripting 缩写XSS。) L; S9 L7 x% j2 g; [: k
攻击原理
! x! |7 [# D8 f' i1 {7 j1 f* O输出脚本code( I0 n7 Z( U1 {3 L8 H  E6 X
跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
4 O1 Y6 T! e& [$ P( K  n/ Dxss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。
- a! ?/ }4 r$ t  v; [渲染机制类
2 |! W. D" o/ v: U) C4 S/ T. |2 e9 _4 C- ^; T0 a- t5 H
什么是DOCTYPE及作用
) ]' M( s, V1 j8 N$ c8 T# V2 s  F6 r2 q7 N* \$ W
DTD (document type definition, 文档类型定义)是一系列的语法规则,用来定义XML或HTML的文件类型。
7 w$ _& x, L% {! ?# y$ x作用:浏览器会使用它来判断文档类型, 决定使用何种协议来解析,以及切换浏览器模式。1 q8 e& }& F: G9 n0 Y
DOCTYPE是用来声明文档类型和DTD规范的,$ R# l. H( R% u* U6 C& N+ i
作用:一个主要的用途便是文件的合法性验证。如果文件代码不合法, 那么浏览器解析时便会出一些差错。
# k9 b4 z( q- R+ T! M3 c+ H5 _HTML5的DOCTYPE:
  h0 p% c, C( H6 W6 R
- L7 b5 ]& U, w: w: G* ?, ^HTML4有严格模式和传统模式
- P2 N$ `4 E- L' E; U
' b, E6 |+ [& k( x# L; Y- S浏览器渲染过程) ]# w9 ?+ R+ K- H2 c3 j" K( \. y

, ?4 X4 G; D5 [0 t% w9 _一些概念  F! E5 R$ I0 L
) o5 x% |1 z: F% o+ k7 a  m# B
名称        概念
9 I1 n( @5 X4 e) p+ \; z# ^DOM Tree        浏览器将HTML解析成树形的数据结构。3 c  J3 D' c4 a& T7 B; o. T$ f4 ]
CSS Rule Tree        浏览器将CSS解析成树形的数据结构。
7 A# n2 @4 ^* e* X3 Q0 vRender Tree        DOM和CSSOM合并后生成Render Tree。% [* P& ^8 _% y
layout        有了Render Tree,浏览器已经能知道网页中有哪些节点、各个节点的CSS定义以及他们的从属关系,从而去计算出每个节点在屏幕中的位置。3 v( L! Z- O) k& F, L
painting        按照算出来的规则,通过显卡,把内容画到屏幕上。
6 L% U0 U) H! l8 m1。当用户输入一个URL,浏览器就会发送一个请求,请求URL对应的资源
3 j1 |/ r2 F: q$ ]; R! x2。HTML解析器会将这个文件解析,构建成一棵DOM树
& R: g, }& i# E6 u9 r9 u8 @- w: n3。构建DOM树时,遇到JS和CSS元素,HTML解析器就将控制权转让给JS或者CSS解析器: Q! W+ ~6 v: ~  P7 |! \
4。JS或者CSS解析器解析完这个元素时候,HTML又继续解析下个元素,直到整棵DOM树构建完成( m( T4 C7 C/ z
5。DOM树构建完之后,浏览器把DOM树中的一些不可视元素去掉,然后与CSSOM合成一棵render树
9 _# ?+ V. I& y/ P6。接着浏览器根据这棵render树,计算出各个节点(元素)在屏幕的位置。这个过程叫做layout,输出的是一棵layout树1 L$ z- `2 Q: a
7。最后浏览器根据这棵layout树,将页面渲染到屏幕上去$ u: \2 ?4 W. F- k3 }* F: I
1
: @; Z6 R, _! ^* `2$ r' c2 n7 H! h5 B& z% w0 \
3' b- w7 P. E& ?$ C6 N6 I6 r
4
6 z% K, R$ w7 T! C9 g2 e+ d58 P. C: x# M3 P6 w$ C4 g6 \2 {# \
6' q# \" R+ P' H# O/ f; k
76 [5 k7 H, j2 Z$ p
重排Reflow
, E* }7 K- a3 T1 `/ _* T: `1 N5 C
定义:当浏览器发现某个部分发生了变化影响了布局,需要倒回去重新渲染,内行称这个回退的过程叫 reflow。
9 r# n- l) n) n% b7 U0 v触发Reflow:" v. i- @0 b; [
当你增加、删除、修改dom节点时,会导致Reflow或Repaint
3 u0 b5 E3 c" |$ V  B* {当你移动DOM的位置,或是搞个动画的时候- O1 v- z- Q7 C- w
当你修改CSS样式的时候
) ~( U6 P. p! u8 i1 Y3 N3 @当你Resize窗口的时候(移动端没有这个问题),或是滚动的时候( t% c" P. X4 }! q9 J
当你修改网页的默认字体时
  }, O$ _0 b% ~重绘Repaint: G2 f% U' d+ ?& a' d

2 f# N0 K5 F- J) U* y定义: 改变某个元素的背景色、文字颜色、边框颜色等等不影响它周围或内部布局的属性时,屏幕的一部分要重画,但是元素的几何尺寸没有变。& h5 @$ \' @  J7 \* c
) C' A$ R. f7 ]( B0 q& t
触发Repaint:
8 }% z* g- x7 J& v' E: o( Y* l' n6 V2 D
DOM改动4 C; b( H2 K$ w
CSS改动
6 ?0 f' E% ?1 G% @+ x- g! ^————————————————
! r1 b1 W; M% S6 F版权声明:本文为CSDN博主「ton365」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
7 S9 ]6 c: \8 Q/ }' @, ~原文链接:https://blog.csdn.net/u012015672/article/details/105931291) P6 L, e5 ^. k. g5 Y* T) m
4 R% T" V( G- ?' k/ y

7 I' z) X: d  q. F0 z' Z4 k5 ^2 v




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