• Flask高级视图_蓝图模板,静态文件,url_for的实战


    Flask高级视图_蓝图模板,静态文件,url_for的实战

    一.介绍

    • 蓝图模板
      • 寻找规则
        • 如果项目中的templates文件夹中有相应的模版文件,就直接使 用了。
        • 如果项目中的templates文件夹中没有相应的模版文件,那么就 到在定义蓝图的时候指定的路径中寻找。
        • 并且蓝图中指定的路径可以为相对路径,相对的是当前这个蓝图文件所在的目录
      • 总结
        • 常规:蓝图文件在查找模版文件时,会以templates为根目录进行 查找
      • 注意
        • 只有确定templates目录下没有对应的 html文件名的时候, 才会去蓝图文件指定的目录下查找,指定才会生效!
        • 若templates目录下,有一个与蓝图文件指定的目录下同名 的一个 html文件时,优先走templates目录下的东西
    • 静态文件
      • 蓝图对象创建时不会默认注册静态目录的路由。需要我们在创建时 指定 static_folder 参数。
      • 总结
        • 查找方式1:查找静态文件时,正常情况下,会以 static为根目录进行查找
        • 查找方式2:查找静态文件时,非正常情况下,需要用 url_for(‘蓝图的名字.static’),然后会去蓝图对象在创建时指定的 静态文件夹目录下 去查找静态文件
    • url_for在蓝图中的使用:
      • 如果使用蓝图,那么以后想要反转蓝图中的视图函数为url,就应该 在使用url_for的时候指定这个蓝图名字。
      • app类中、模版中、同一个蓝图类中都是如此。否则就找不到这个 endpoint
      • 总结
        • url_for(‘蓝图名.static’,filename=‘相对路径/静态文件’)
        • 蓝图名.static会去找蓝图创建时,指定的装静态文件资源的静态文件夹,还会映射static_url_path(一个静态文件夹名称,如果在创建蓝图时设置了,这个静态文件夹名称将会取代static_folder所设置的静态文件夹名称,让static_folder所设置的静态文件夹名称失效,反正就是让static_folder退休!)

    二.实例

    图片资源:

    在这里插入图片描述
    在这里插入图片描述

    css资源:
    • style.css
      @charset "utf-8";
      /* Reset CSS */
      html, body, div, span, applet, object, iframe,
      h1, h2, h3, h4, h5, h6, p, blockquote, pre,
      a, abbr, acronym, address, big, cite, code,
      del, dfn, em, font, img, ins, kbd, q, s, samp,
      small, strike, strong, sub, sup, tt, var,
      b, u, i, center,
      dl, dt, dd, ol, ul, li,
      fieldset, form, label, legend,
      table, caption, tbody, tfoot, thead, tr, th, td {
      	margin: 0;
      	padding: 0;
      	border: 0;
      	outline: 0;
      	font-size: 100%;
      	vertical-align: baseline;
      	background: transparent;
      }
      body {
      	background: #DCDDDF ;
      	color: #000;
      	font: 14px Arial;
      	margin: 0 auto;
      	padding: 0;
      	position: relative;
      }
      h1{ font-size:28px;}
      h2{ font-size:26px;}
      h3{ font-size:18px;}
      h4{ font-size:16px;}
      h5{ font-size:14px;}
      h6{ font-size:12px;}
      h1,h2,h3,h4,h5,h6{ color:#563D64;}
      small{ font-size:10px;}
      b, strong{ font-weight:bold;}
      a{ text-decoration: none; }
      a:hover{ text-decoration: underline; }
      .clearfix:after,form:after {
      	content: ".";
      	display: block;
      	height: 0;
      	clear: both;
      	visibility: hidden;
      }
      .container { margin:75px auto 0 auto; position: relative; width: 900px; }
      #content {
      	background: #f9f9f9;
      	background: -moz-linear-gradient(top,  rgba(248,248,248,1) 0%, rgba(249,249,249,1) 100%);
      	background: -webkit-linear-gradient(top,  rgba(248,248,248,1) 0%,rgba(249,249,249,1) 100%);
      	background: -o-linear-gradient(top,  rgba(248,248,248,1) 0%,rgba(249,249,249,1) 100%);
      	background: -ms-linear-gradient(top,  rgba(248,248,248,1) 0%,rgba(249,249,249,1) 100%);
      	background: linear-gradient(top,  rgba(248,248,248,1) 0%,rgba(249,249,249,1) 100%);
      	/* filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f8f8f8', endColorstr='#f9f9f9',GradientType=0 ); */
      	-webkit-box-shadow: 0 1px 0 #fff inset;
      	-moz-box-shadow: 0 1px 0 #fff inset;
      	-ms-box-shadow: 0 1px 0 #fff inset;
      	-o-box-shadow: 0 1px 0 #fff inset;
      	box-shadow: 0 1px 0 #fff inset;
      	border: 1px solid #c4c6ca;
      	margin: 0 auto;
      	padding: 25px 0 0;
      	position: relative;
      	text-align: center;
      	text-shadow: 0 1px 0 #fff;
      	width: 400px;
      }
      #content h1 {
      	color: #7E7E7E;
      	font: bold 25px Helvetica, Arial, sans-serif;
      	letter-spacing: -0.05em;
      	line-height: 20px;
      	margin: 10px 0 30px;
      }
      #content h1:before,
      #content h1:after {
      	content: "";
      	height: 1px;
      	position: absolute;
      	top: 10px;
      	width: 27%;
      }
      #content h1:after {
      	background: rgb(126,126,126);
      	background: -moz-linear-gradient(left,  rgba(126,126,126,1) 0%, rgba(255,255,255,1) 100%);
      	background: -webkit-linear-gradient(left,  rgba(126,126,126,1) 0%,rgba(255,255,255,1) 100%);
      	background: -o-linear-gradient(left,  rgba(126,126,126,1) 0%,rgba(255,255,255,1) 100%);
      	background: -ms-linear-gradient(left,  rgba(126,126,126,1) 0%,rgba(255,255,255,1) 100%);
      	background: linear-gradient(left,  rgba(126,126,126,1) 0%,rgba(255,255,255,1) 100%);
          right: 0;
      }
      #content h1:before {
      	background: rgb(126,126,126);
      	background: -moz-linear-gradient(right,  rgba(126,126,126,1) 0%, rgba(255,255,255,1) 100%);
      	background: -webkit-linear-gradient(right,  rgba(126,126,126,1) 0%,rgba(255,255,255,1) 100%);
      	background: -o-linear-gradient(right,  rgba(126,126,126,1) 0%,rgba(255,255,255,1) 100%);
      	background: -ms-linear-gradient(right,  rgba(126,126,126,1) 0%,rgba(255,255,255,1) 100%);
      	background: linear-gradient(right,  rgba(126,126,126,1) 0%,rgba(255,255,255,1) 100%);
          left: 0;
      }
      #content:after,
      #content:before {
      	background: #f9f9f9;
      	background: -moz-linear-gradient(top,  rgba(248,248,248,1) 0%, rgba(249,249,249,1) 100%);
      	background: -webkit-linear-gradient(top,  rgba(248,248,248,1) 0%,rgba(249,249,249,1) 100%);
      	background: -o-linear-gradient(top,  rgba(248,248,248,1) 0%,rgba(249,249,249,1) 100%);
      	background: -ms-linear-gradient(top,  rgba(248,248,248,1) 0%,rgba(249,249,249,1) 100%);
      	background: linear-gradient(top,  rgba(248,248,248,1) 0%,rgba(249,249,249,1) 100%);
      	/* filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f8f8f8', endColorstr='#f9f9f9',GradientType=0 ); */
      	border: 1px solid #c4c6ca;
      	content: "";
      	display: block;
      	height: 100%;
      	left: -1px;
      	position: absolute;
      	width: 100%;
      }
      #content:after {
      	-webkit-transform: rotate(2deg);
      	-moz-transform: rotate(2deg);
      	-ms-transform: rotate(2deg);
      	-o-transform: rotate(2deg);
      	transform: rotate(2deg);
      	top: 0;
      	z-index: -1;
      }
      #content:before {
      	-webkit-transform: rotate(-3deg);
      	-moz-transform: rotate(-3deg);
      	-ms-transform: rotate(-3deg);
      	-o-transform: rotate(-3deg);
      	transform: rotate(-3deg);
      	top: 0;
      	z-index: -2;
      }
      #content form { margin: 0 20px; position: relative }
      #content form input[type="text"],
      #content form input[type="password"] {
      	-webkit-border-radius: 3px;
      	-moz-border-radius: 3px;
      	-ms-border-radius: 3px;
      	-o-border-radius: 3px;
      	border-radius: 3px;
      	-webkit-box-shadow: 0 1px 0 #fff, 0 -2px 5px rgba(0,0,0,0.08) inset;
      	-moz-box-shadow: 0 1px 0 #fff, 0 -2px 5px rgba(0,0,0,0.08) inset;
      	-ms-box-shadow: 0 1px 0 #fff, 0 -2px 5px rgba(0,0,0,0.08) inset;
      	-o-box-shadow: 0 1px 0 #fff, 0 -2px 5px rgba(0,0,0,0.08) inset;
      	box-shadow: 0 1px 0 #fff, 0 -2px 5px rgba(0,0,0,0.08) inset;
      	-webkit-transition: all 0.5s ease;
      	-moz-transition: all 0.5s ease;
      	-ms-transition: all 0.5s ease;
      	-o-transition: all 0.5s ease;
      	transition: all 0.5s ease;
      	background: #eae7e7 url(../images/8bcLQqF.png) no-repeat;
      	border: 1px solid #c8c8c8;
      	color: #777;
      	font: 13px Helvetica, Arial, sans-serif;
      	margin: 0 0 10px;
      	padding: 15px 10px 15px 40px;
      	width: 80%;
      }
      #content form input[type="text"]:focus,
      #content form input[type="password"]:focus {
      	-webkit-box-shadow: 0 0 2px #ed1c24 inset;
      	-moz-box-shadow: 0 0 2px #ed1c24 inset;
      	-ms-box-shadow: 0 0 2px #ed1c24 inset;
      	-o-box-shadow: 0 0 2px #ed1c24 inset;
      	box-shadow: 0 0 2px #ed1c24 inset;
      	background-color: #fff;
      	border: 1px solid #ed1c24;
      	outline: none;
      }
      #username { background-position: 10px 10px !important }
      #password { background-position: 10px -53px !important }
      #content form input[type="submit"] {
      	background: rgb(254,231,154);
      	background: -moz-linear-gradient(top,  rgba(254,231,154,1) 0%, rgba(254,193,81,1) 100%);
      	background: -webkit-linear-gradient(top,  rgba(254,231,154,1) 0%,rgba(254,193,81,1) 100%);
      	background: -o-linear-gradient(top,  rgba(254,231,154,1) 0%,rgba(254,193,81,1) 100%);
      	background: -ms-linear-gradient(top,  rgba(254,231,154,1) 0%,rgba(254,193,81,1) 100%);
      	background: linear-gradient(top,  rgba(254,231,154,1) 0%,rgba(254,193,81,1) 100%);
      	/* filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fee79a', endColorstr='#fec151',GradientType=0 ); */
      	-webkit-border-radius: 30px;
      	-moz-border-radius: 30px;
      	-ms-border-radius: 30px;
      	-o-border-radius: 30px;
      	border-radius: 30px;
      	-webkit-box-shadow: 0 1px 0 rgba(255,255,255,0.8) inset;
      	-moz-box-shadow: 0 1px 0 rgba(255,255,255,0.8) inset;
      	-ms-box-shadow: 0 1px 0 rgba(255,255,255,0.8) inset;
      	-o-box-shadow: 0 1px 0 rgba(255,255,255,0.8) inset;
      	box-shadow: 0 1px 0 rgba(255,255,255,0.8) inset;
      	border: 1px solid #D69E31;
      	color: #85592e;
      	cursor: pointer;
      	float: left;
      	font: bold 15px Helvetica, Arial, sans-serif;
      	height: 35px;
      	margin: 20px 0 35px 15px;
      	position: relative;
      	text-shadow: 0 1px 0 rgba(255,255,255,0.5);
      	width: 120px;
      }
      #content form input[type="submit"]:hover {
      	background: rgb(254,193,81);
      	background: -moz-linear-gradient(top,  rgba(254,193,81,1) 0%, rgba(254,231,154,1) 100%);
      	background: -webkit-linear-gradient(top,  rgba(254,193,81,1) 0%,rgba(254,231,154,1) 100%);
      	background: -o-linear-gradient(top,  rgba(254,193,81,1) 0%,rgba(254,231,154,1) 100%);
      	background: -ms-linear-gradient(top,  rgba(254,193,81,1) 0%,rgba(254,231,154,1) 100%);
      	background: linear-gradient(top,  rgba(254,193,81,1) 0%,rgba(254,231,154,1) 100%);
      /* 	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fec151', endColorstr='#fee79a',GradientType=0 ); */
      }
      #content form div a {
      	color: #004a80;
          float: right;
          font-size: 12px;
          margin: 30px 15px 0 0;
          text-decoration: underline;
      }
      .button {
      	background: rgb(247,249,250);
      	background: -moz-linear-gradient(top,  rgba(247,249,250,1) 0%, rgba(240,240,240,1) 100%);
      	background: -webkit-linear-gradient(top,  rgba(247,249,250,1) 0%,rgba(240,240,240,1) 100%);
      	background: -o-linear-gradient(top,  rgba(247,249,250,1) 0%,rgba(240,240,240,1) 100%);
      	background: -ms-linear-gradient(top,  rgba(247,249,250,1) 0%,rgba(240,240,240,1) 100%);
      	background: linear-gradient(top,  rgba(247,249,250,1) 0%,rgba(240,240,240,1) 100%);
      	/* filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f7f9fa', endColorstr='#f0f0f0',GradientType=0 ); */
      	-webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.1) inset;
      	-moz-box-shadow: 0 1px 2px rgba(0,0,0,0.1) inset;
      	-ms-box-shadow: 0 1px 2px rgba(0,0,0,0.1) inset;
      	-o-box-shadow: 0 1px 2px rgba(0,0,0,0.1) inset;
      	box-shadow: 0 1px 2px rgba(0,0,0,0.1) inset;
      	-webkit-border-radius: 0 0 5px 5px;
      	-moz-border-radius: 0 0 5px 5px;
      	-o-border-radius: 0 0 5px 5px;
      	-ms-border-radius: 0 0 5px 5px;
      	border-radius: 0 0 5px 5px;
      	border-top: 1px solid #CFD5D9;
      	padding: 15px 0;
      }
      .button a {
      	background: url(../images/8bcLQqF.png) 0 -112px no-repeat;
      	color: #7E7E7E;
      	font-size: 17px;
      	padding: 2px 0 2px 40px;
      	text-decoration: none;
      	-webkit-transition: all 0.3s ease;
      	-moz-transition: all 0.3s ease;
      	-ms-transition: all 0.3s ease;
      	-o-transition: all 0.3s ease;
      	transition: all 0.3s ease;
      }
      .button a:hover {
      	background-position: 0 -135px;
      	color: #00aeef;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
      • 45
      • 46
      • 47
      • 48
      • 49
      • 50
      • 51
      • 52
      • 53
      • 54
      • 55
      • 56
      • 57
      • 58
      • 59
      • 60
      • 61
      • 62
      • 63
      • 64
      • 65
      • 66
      • 67
      • 68
      • 69
      • 70
      • 71
      • 72
      • 73
      • 74
      • 75
      • 76
      • 77
      • 78
      • 79
      • 80
      • 81
      • 82
      • 83
      • 84
      • 85
      • 86
      • 87
      • 88
      • 89
      • 90
      • 91
      • 92
      • 93
      • 94
      • 95
      • 96
      • 97
      • 98
      • 99
      • 100
      • 101
      • 102
      • 103
      • 104
      • 105
      • 106
      • 107
      • 108
      • 109
      • 110
      • 111
      • 112
      • 113
      • 114
      • 115
      • 116
      • 117
      • 118
      • 119
      • 120
      • 121
      • 122
      • 123
      • 124
      • 125
      • 126
      • 127
      • 128
      • 129
      • 130
      • 131
      • 132
      • 133
      • 134
      • 135
      • 136
      • 137
      • 138
      • 139
      • 140
      • 141
      • 142
      • 143
      • 144
      • 145
      • 146
      • 147
      • 148
      • 149
      • 150
      • 151
      • 152
      • 153
      • 154
      • 155
      • 156
      • 157
      • 158
      • 159
      • 160
      • 161
      • 162
      • 163
      • 164
      • 165
      • 166
      • 167
      • 168
      • 169
      • 170
      • 171
      • 172
      • 173
      • 174
      • 175
      • 176
      • 177
      • 178
      • 179
      • 180
      • 181
      • 182
      • 183
      • 184
      • 185
      • 186
      • 187
      • 188
      • 189
      • 190
      • 191
      • 192
      • 193
      • 194
      • 195
      • 196
      • 197
      • 198
      • 199
      • 200
      • 201
      • 202
      • 203
      • 204
      • 205
      • 206
      • 207
      • 208
      • 209
      • 210
      • 211
      • 212
      • 213
      • 214
      • 215
      • 216
      • 217
      • 218
      • 219
      • 220
      • 221
      • 222
      • 223
      • 224
      • 225
      • 226
      • 227
      • 228
      • 229
      • 230
      • 231
      • 232
      • 233
      • 234
      • 235
      • 236
      • 237
      • 238
      • 239
      • 240
      • 241
      • 242
      • 243
      • 244
      • 245
      • 246
      • 247
      • 248
      • 249
      • 250
      • 251
      • 252
      • 253
      • 254
      • 255
      • 256
    • body.css
      @-webkit-keyframes animate-cloud {
        from {
          background-position: 600px 100%;
        }
        to {
          background-position: 0 100%;
        }
      }
      @-moz-keyframes animate-cloud {
        from {
          background-position: 600px 100%;
        }
        to {
          background-position: 0 100%;
        }
      }
      @-ms-keyframes animate-cloud {
        from {
          background-position: 600px 100%;
        }
        to {
          background-position: 0 100%;
        }
      }
      @-o-keyframes animate-cloud {
        from {
          background-position: 600px 100%;
        }
        to {
          background-position: 0 100%;
        }
      }
      
      html{
      	height: 100%;
      }
      body{
         background:url(../images/cloud.jpg) 0 bottom repeat-x  #049ec4;
        -webkit-animation: animate-cloud 20s linear infinite;
        -moz-animation: animate-cloud 20s linear infinite;
        -ms-animation: animate-cloud 20s linear infinite;
        -o-animation: animate-cloud 20s linear infinite;
        animation: animate-cloud 20s linear infinite;
        width: 100%;
        height: auto;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
      • 45
      • 46
    html源码:
    • 主页
      DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>{% block title %} 主页 {% endblock %}title>
      
      
      <link rel="stylesheet" type="text/css" href="{{url_for('user.static',filename='css/style.css')}}"/>
      <link rel="stylesheet" type="text/css" href="{{url_for('user.static',filename='css/body.css')}}"/> 
      head>
      <body>
      <div class="container">
      	<section id="content">
              {% block content %}
              <a href="{{ url_for('login') }}">登入a>     
              <a href="{{ url_for('register') }}">注册a>     
              {% endblock %}
      
      	section>
      div>
      
      <br><br>
      <hr>
      <h3 style="color: aqua;text-align: center;">{{ msg }}h3>
      body>
      html>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
    • 登入页面
      {% extends '主页.html' %}
      
      {% block title %}
          登录页面
      {% endblock %}
      
      {% block content %}
      <form action="" method="post">
          <h1>会员登录h1>
          <div>
              <input type="text" placeholder="邮箱" required="" id="username" name="uname"/>
          div>
          <div>
              <input type="password" placeholder="密码" required="" id="password" name="pwd"/>
          div>
           <div class="">
              <span class="help-block u-errormessage" id="js-server-helpinfo"> span>			div> 
          <div>
              
              <input type="submit" value="登录" class="btn btn-primary" id="js-btn-login"/>
              <a href="#">忘记密码?a>
              
          div>
      form>
      {% endblock %}
      <hr>
      <h3 style="color: aqua;text-align: center;">{{ msg }}h3>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
    • 登录成功页面
      {% extends '主页.html' %}
      
      {% block title %}
          登录成功页面
      {% endblock %}
      
      {% block content %}
          <h3 style="color: aquamarine;text-align: center;">欢迎{{ username }}回家啦~h3>
          <p style="color: blueviolet; text-align: center;">后续内容还会补充!p>
      {% endblock %}
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
    python源码:
    • main.py
      #coding=utf-8
      
      from flask import Flask
      
      app = Flask(__name__)
      
      
      from view import user_bp,item_bp
      
      
      app.register_blueprint(user_bp,url_prefix='/user')
      app.register_blueprint(item_bp,url_prefix='/item')
      
      if __name__ == '__main__':
          app.run(debug=True)
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
    • init.py
      from flask import Blueprint,render_template
      
      # 用户模块
      user_bp = Blueprint('user',__name__,template_folder='htmls',static_folder='static')
      
      from view import user
      
      #产品模块
      item_bp = Blueprint('item',__name__)
      
      from view import item
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
    • user.py
      from view import user_bp
      from flask import render_template,request
      
      info = 'NewBurLaSKing的博客又又又更新啦~'
      
      @user_bp.route('/login/',methods=['GET','POST'])
      def login():
          if request.method == 'GET':
              return render_template('登入页面.html',msg=info)
          elif request.method == 'POST':
              uname = request.form.get('uname')
              pwd = request.form.get('pwd')
              if uname == 'NewBurLaSKing' and pwd == '666':
                  return render_template('登录成功页面.html',msg=info)
              else:
                  return render_template('登入页面.html',msg=info)
      
      @user_bp.route('/register/')
      def register():
          return render_template('注册页面.html',msg=info)
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
    注:
    如果觉得笔记有些问题,麻烦在百忙之中在评论中指正,或提出建议!另外,如果觉得这份笔记对你有所帮助,麻烦动动发财的小手手点一波赞!
  • 相关阅读:
    python学习随笔3
    工程力学复习资料
    Arthas使用总结
    Spark系列之Spark体系架构
    加密货币崩盘后比特币的能源消耗下降了四分之一
    计算机组成原理——指令系统(课程笔记)
    java毕业设计恩施茶多芬网店系统设计与实现2021Mybatis+系统+数据库+调试部署
    居舍杂志居舍杂志社居舍编辑部2022年第27期目录
    『C语言进阶』qsort函数及模拟实现
    设计模式:策略模式(C++实现)
  • 原文地址:https://blog.csdn.net/qq_55961861/article/details/126548330