目录结构如下

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAASYAAAILCAIAAADKfKb4AAAgAElEQVR4nO2d63sUVb7v+3847/bL/ZyD4zCeOQjbYKuICSA6SABn5KKMGLY9RnCrXOQSIAZICCGQhiTcbyYQQgjh3gqIiBhgJCiiYKSDISGapNMJEAKpQLTOi+rLqqq1qqq7q+vS/f089fCkK7VWVUJ9Uqur17d+Dh4AYCAOsw8AgOQiVuW27jpwr+c+uaa1697rKw7E2C0AiUpkyv0pY/247L08z4/L3vunjPU8z9dfvVy8qZzcpqWjO+2jcnp7AJKeiJX7U8b6GcWfCl/wPO87u3jTygVzFxXMXVSwdEVxu69Tf+W8bqfD6fbq2aXOWP8IgWWIWLn0JXuFa52gHH/3q8Dye+/vjx7cvn0XykXR2to/HtCTiJXb++W1P2Wsr/n6p4ByXScDC88Lb+GSe2DpdTsdLk9EmzscDov/RQF6EvMdS9+hwPLH72kflR+vu5G35+u3Cg/rcWx2JCLlAhdHjwvKJRFS5U6fPp2fn8/aesacT/hfK4Tl91u7Tx7Y9fHyyvdnl78/u/zaT78ePn99+OyyUfN3/7v+15pD38mbB/+mOxyB01I4QT0u8VrReqfbGz6NPS6H0+0ObE6cpqEenG438/yV7Z1sSO3N4XR7RRKFv6YeYbihw+lykWNNRaugXFIhUu7UqVMDBw4cMGAAa+uprp1801a+aWvv9W2Ll1YWH7x6qOl3YTna/Hsn94ew2bX23n/N2i9tTLkACBYEV3pcpIpSAYNbEJsIJ2q4WaAh9fyl7J081UPf9rgkHbCVox0hsTXRvceldOmDcklFWDnBt0mTJrGUq09Nly9VP/VJli1n/W/P8dz69a6sA+EiQJ5dEg9CL8XrJVe5sCROt1d2wjLPX9neiWtS+Jomb650lZNvQ64P9aVsHJRLLgLKhXybPHmygnINf592Y8rb9anpN6a83fD3afWp6WV1PeRS/Fn7lPdPNLV0s/coXB+Ec8xI5WR7p26pp3KBQ1R9ewflkgoHL/ZNWTl/+V6e573jp/7R39+xbVd9avrmL++ElhV7m1+YcqTxFsM3r9stPXO9bqdkUKh8QtOU0zywlO2dbMh7XOGxa+gy5Q68lwv0qOEIZeudLpfaRwBQLqlw8Dyfn58/gCAvL4+6qTCS7Kyo7r9zt3VVsfDyyXGfDR736eDxnz07+cS4dz7zd/Uq7Ex2n8TrdjpcLtndk8iUI2+MKN0+kd+lod5RIVYSRxm+J6KsXHBj4l2cqk9QLqmI4EMCwTF/+d7f7/W0rd0kvIxt7xF+iqUFi52/FjscYD6RKddesvWP/v6GiRl/9Pe3rVlvDeW8bqfopn/wjZoIncXWfmi0DyTMPCRgNpEp1+j6oPnDrPrU9OYPsxpdH1hDOdH40DqXFMEweAUkRDywlCzxOzIAEhJEVAEwFCgHgKFAOQAMBcoBYCjmK7dt+SKzD4FBRMFT6+dogTUwTrkHnbe+3T7z4qbpFzdN/37XnDnjR2SmpWSmpWSOSBG+WPJ6HO5/xvIxhEaLhF1AOaAN45Q7syr9bvOlnrZrPW3XOq6enJs+rOFssffMusy0lIavihvOrMtMS9F9pwY84wCPUQARYZByD/yNZ3NTfjuXdftK3r0ry+/UZX80btj1L9z1n6/JTEv5+Yuin08VxUE5A6ZbYUYXiAzdlFOOk59bPart8pY7N6q6G6u7G6sXThwZGFWKl6JZmdTmSnHywAlPy3eHdfC4HE63J9CLyxPePLyxfIqzehqd2IU040N2JRp0hl9QJ1WDREcf5VTj5CezB3PtHnKZN+GFhq+KvV+uFQaWXoWBpWqcnDFfn0iGEnKSE7HI0I0r2D4U31FJo4t3odxVWH4iuCTfDCQBOiinGifnef7TrEHcr/uE5f7N3TdOzPXkpZ3bOPbcxrHHcofXbhhbu2Hs0eXDL37yZl1Zhqy1WpycOriTTil2Eic49WvqxUk1NCRPr9K6CvWgshlIfGJVTkucnOf5w/P+yt3cyd3c2fV90bkNY1rr1nCth7jWw1zrEa7tKNd2lGs7xrV7uurLTq0czuiDHSenKcfegvY1GW2lZNPpykkT4ETsVr6F0IW4MWUzkPDEpJzGODnP8zWzn+AaSjvrck+vTu28XMQ1lXFN5VzTLq55N9e8m2uu4G7t6bxSeqJgpL/xW2ljRpycOEllUW7KBorKEevC0W8V5RgpVWpXvCwhztoMJDoxKacxTs7z/N4P/uI/v+hk/vP+b5Zy3mLOW8J5S7mGUq5hPdewgbux0V+X78lN7fjlErU5PU5OnqSSKLf0zr3qwJIIloei38rKSXYhffiXJEXOy8xibQYSHIM+JNg988/HslM6audyV5dzV3O5q7nctTzu2gruWj7300pfbdaRZam+G3TfosCEDwcwOATaMEi5SzUry2cOrJozaN9HQ6rnP7V/wdCaBUNrFgzdv+DpI8tGni+ff/92q357M8k4fD4HNGD+HEvbExj14hIHNAHlADAUKAeAoUA5AAwFygFgKFAOAEOxpXK57/xT24YqJW8AMB57KHe2IOOrlRlfCf+uzJiRNph8eX7tu4x2UA5YDnsodyo34/uaJT95cn84kH1+87v5U9K+r1lc78n94UB27cZ3v8idxmgH5YDlsIdyxz9+s+mbzR31Fbfqtn63b2H5rH80/XtTR33FrUtb6yrmncyZymgH5YDlMF855Ti5wLFFb1w/7W6+uKXhzLpvds0t/u+XAy+/Kr6wc9ani6cw2pHKiatwBKuAayznDYBemKycapxc4NC8yRfK59dVLbmwa8GptW8v/cfw8+Xz66qW/Hv3gs/XTD+6YBKjXUg5SfVGIiGurZw3AHphpnJa4uQ8z8+e8OK7LwzOnTh8x/9MKHrzxezxzy1MH549/rmPJwwrmjZ6+3sTMocPYtzDDHrELG6stZw3AHphmnIa4+Q8z3f89uuOf42tq1l27cSabw/mfV48Y8n4YRf3L/3es+ryobwvit/d8a8xne1ttKaqymkt5w2AXpijnPY4ucCud9Obvtkk3D6p2zM/e/yw0O2T8ztm757xCqMddWAprieurZw3AHphjnLa4+QCO98eE7p9cn7n7KJpo0O3T77a/H6Z62VGO+kzvgJ3TsT1xLWU8wZAL8y/Y6mFrW+9dKF8/qV92f/evfDk6uk7/ufV0MvPVkzbPn10ZN15pMrBOGAY9lBu0xsjNrwxMrQsfU30cttboyLrTvIoE7yNAwZiD+W47q6ejpbQMit9BPmy7353ZN0Rz/VCnBsYjD2Uk8C4PwmADbClcgDYFygHgKFAOQAMJcGVO1zw/+TLZ8XDujvwqQAwhwRX7sDKQX0P+yVLXdW0I2ue8d/6zoQDwiNmk54EV27fiid7+/olS8PpJRf3Tjuw+pkOpnWyj8f1Kk8M5ZKeBFduT+7gnt7+0DJ28Z5pBQd++Trf+8WSb/ZOq1rpZLSLm3Ig6bGfcrW1tT09PRo3Ll82pPvBo9Dy1MzNT83cHHpZvmwIox2UA/HCfspVVFRUVlb6/X4tG+/I+a87PY9Ci6Bc6OWOnP9itFNSjlb6VF6pXF7NnFjNUztCSfGkwJbK+Xy+LVu2tLS0qG68NfupznsPQ4ugXOjl1uynGO3YylHmZFKnbEqqmRP9oKR4cmNL5Xie9/v9brf7+vXryhtvXJLScfehsDS29zw1c3PqnJ2hNRuXpDDaKVzlZIXLxQ9VCX6PMV0aJcWTHrsqx/N8a2trTk5OV1eXwsYli4a233koLN9c9z01c3N69p7QmpJFQxntZMLQ6sk5ZEWPlXqQrEZJ8WTFrsp1dnZqucq5Fz7d2tX32cWbhfsuvLRw11MzN+ftqW3t6hMW98KnWQ3FVYaJFCulcLnkWUbh8sXi65T48oWS4smKLZXr6OjQ+F6ucL6zpbPv5LfNT83cPGp++cIdXza09rR09glL4XzWhwQ8Lx4wSp6cIh3lUUZ+asqhpHiyYkvltN+xzP/omeYOjrXkf/RMvI9WCgaHSY/9lIvoc7nlc5696eNYy/I5z8b1UOVg8gmwn3IR8fGs55QX4w4FJcUBz/MJrxwAVgPKAWAoUA4AQ0lG5Q7sufLPMbteH10+9W/lZ082mH04ILlIcOXkkfCc/35v4ogdvrZ7wjJp5E5YB4wkwZWTp8InjvrktRE730qv6PTdnzmletrYXW+N3W32YZoEPrIwgwRXTp4KnzSqbOLIndPH7fH7emZM2Td93J7XR5fJ2umelyPmZEp3ZF5FBChnBgmunDwV/tqInf9I2z5l1M6OtntvvPTJpJE7philnNMp7SMwmwunfTJhP+ViTIW/kr79tbRPfG33+vv/+PnH9okjd5ZvvChrFxflXG7JbC+v2yktAwQSHvspF3sq/OPZx9+bWj3zjf3vTt6zZc15WjvdU+GBuZWifoUX0oArdXq0fCo1a72WgyF+KETUDceWyumSCm/r6jUwFR5cHw76EGtCuSBKAFzcj/p6RNStji2V4+2XChed/U63V1SlnOhMdhVR6oeyHhF1y2NX5XibpcKlwe/wO7hQc3oAPHLlEFG3NnZVzmapcNFLcVk72uWO2Ls0Mq62HhF1q2NL5eyXChe/FL0Qv2UK7C4cAPe6nQ6Xi75L2npE1K2OLZWzcSo8YlgDOD0GdhgcmoH9lLN1Kjxy4qgcJp+Ygv2UiwgLpcKjJD7KIaJuHgmuHABWA8oBYCiJptyAndexJOdi9qmnlQRU7mLbAyzJtkA505AoR60V7lk37Hz9j6afJVh0XKCcaUiUY9UKP7z6ma+/vxCH//uDExwZa80+/4xdQj9yVD/7hYInHENnXYj1MKCcaUiUU6gVXrP6mbMM69ZOdTimHgy9PLB0qGNIwQHGS8b5Z9jpHoQ4YGMXKBcZCa6ccq3wvSud9P/CigxCqh9mDXE4iNNi7VTHE0t/UDv/4r9UZDgcjgkV4Zfso9K+/DBrCNGnpiU25XRaoFwcUZ59IlFOtVY4/b9Q9Kf34ARHxoSpoRPxh1lDFP4qG3baHZzgiNQNLQuUizv2U055jqVEOdVa4epnXkWGY+rBA0uHBkZuFwqeCJ9Y4XFd8ApDnnbU74YgNxs6q6LgCYcjcNWqyBC3onUlug5TbKTvZam05wNLhxJbEg2HFBwI/BIOTgi8VOhZrpz8Z5f39kD6+7wQ+CUEr94/zBoiPlShoXQzKBdnlFPhEuVUa4Wz/mqGHFsrXN8uFDwh/H9XZATfNR2cEL4ShhQlzz/J+FO8piLDQWzpCHUeelcWPhdpO2Iqp7iXcM9DZ12Q/PmQ/a0JjKhFFjF6ln8h/81IepMr98OsqcGfKNR5+Mck+pFvBuXiinIqXKKcaiqcOVYJOBYaRga+CL+RC16LHKI/58HTTq6EdA1pKTmIlX1N3RFLOU17Cf1QwrWIHCdLlSPfK7J7FitH/80whqxi7cVXXeKwVTaDcvFEORUuUU41Fc5UTjiBQhe3wOWOeCNHP+kjUi503qspR98R7S2lpr1I3o6S94ciUi7Us0w5ygGrKXeh4InQVZQQTPgbd2DpUOJblM2gXBxRToVLlFNNhbOVe7B2qmPC1AzRUGpqxoTwySS6gbF2qnxwFfruwVmBC6B4YBZ+g6SoHH1Hwl96wpzAHUstewnacqFgltQutnJKPSv87KEDFvcmH9wSoh5YOtRBvsEbkjGB9peO3AzKxRHlVLhEOdVUuIJy0rvw5Nuh8HkjeR9P3EIIf5dyU0F6Y0NJOfoNg9ARBggfmOpewle5tVOlzQNjtvDtE/J3ovn2CeWA1ZQLXGwdDofjiakZxDDyh1lDyJ+OvhmUiyMR3bFUTYUrKYfFgIVyCyeaBcrFkYg+l1NNhZt/ziX3ojiVJ4IFypmGRDnVVLjp51zyLoFRsT6fnkM500B4JzkXKGcapgclsZi1mH3qaSXRlAPA4kA5AAwlwZU77cmnLmYfF0heEly5z48VyFPhPx7OtJV1HhceOJlAJLhyxw8XypW7fmrRVRXrdK+iGgtQLqFIcOWOHSzi+vqFpbfvEdfX39vXf/NC0fVTi348/I7n4BpGOygH4kWCK3dw/7r73KP73KPHR8+YkbPpfm//jJxNj4+ecZ/rf8D1H65Zx2gH5UC8SHDl9u1df+/Bo3sPHuZt3Pf46BndDx49PnpG3sZ99x48uvfg0f59pYx2utcKD3cTahWsBOdxOZxuT6BTshIqUdYNyiUOCa7c7j2bgo9deCjI9vjoGXd6HgprKis3MtrpXitctrWHLKPqCFd1dMgrFkO5hCLBldtRvrWz+6GwCL7lbdzX2d0nrCnbtYXRTvda4ZLOyR7IfVG/hnIJRYIrt3nnTt+dPmEJXeV8dx4Ka7aX7WC0071WOAmUS2oSXLnSbbuEALggW2sXJ4gnrNy4vYzVUOda4UT1xFDNe/GK0I6gXIKT4Mq5N+9p8XO/+vuEO5Yt/j7hjmVLJ9fi50q27lZoq2et8KBhInedxO0TKJc0JLhyqzdUNfu4Zh/X5OOaO7hmX29zR2+Tj2vq6G3ycUWbKs0+QJB0JLhy+eurG9t7heVme+/N9t7Gdi70snB9ldkHCJKOBFcur6Qmr7gmt7gmr6Qmt0T494CwMq+4ZmVJtdkHCJKOBFcOAKsB5QAwFCgHgKFAOQAMBcoBYCjmK7dt+SKzD4EBMUMEAL0wTrkHnbe+3T7z4qbpFzdN/37XnDnjR2SmpWSmpWSOSBG+WPJ6uv57VZjqqKmtBuVi2QVIPoxT7syq9LvNl3rarvW0Xeu4enJu+rCGs8XeM+sy01IavipuOLMuMy1F950akCw1M7wKbIhByj3wN57NTfntXNbtK3n3riy/U5f90bhh179w13++JjMt5ecvin4+VRQH5eiT/O22C5BQ6Kbc6dOn8/OZD/A5t3pU2+Utd25UdTdWdzdWL5w4MjCqFC9FszKpzWXThuWZa3kum9RBNXlNm5osCok63W5ZE9EuNB2ScqKcPik6/LWWXWjcKTANfZQ7derUwIEDBwwYwNrgZPZgrt1DLvMmvNDwVbH3y7XCwNKrMLCkvFmSZK6JCfoExAx81eS11+0iZvCHg90h5cgmIqlJM8SHJIuK0xPl4u6ku5Yqp/hTa9wpMBMdlBN8mzRpkoJyn2YN4n7dJyz3b+6+cWKuJy/t3Max5zaOPZY7vHbD2NoNY48uH37xkzfryjJkrWVBbMl5RB3ciTZRDcgEW5BXA8lVLnwqi59vwjokSlScliiXJV+lnkivcuyfWuNOganEqlzIt8mTJysod3jeX7mbO7mbO7u+Lzq3YUxr3Rqu9RDXephrPcK1HeXajnJtx7h2T1d92amVwxl9EEFsDcqxt6B97XU7HeIRIq+unDwSp/JXQP6DUJSTPcYhIuW07BSYSkzKkb4pK1cz+wmuobSzLvf06tTOy0VcUxnXVM417eKad3PNu7nmCu7Wns4rpScKRvobv5U2pgSxJaMlMpftcVMePaKmHLEunAdXUU6yC4VDCkbFGYlyyptPYvhK5NNVf2qNOwVmEpNy+fn5Awjy8vJYW+794C/+84tO5j/v/2Yp5y3mvCWct5RrKOUa1nMNG7gbG/11+Z7c1I5fLlGby4LYsrMnPCgM2sK4y8H4Otze6XJpuspJd6FwSLRbJfQxqPiiKTke1Z86gp0C0zDoQ4LdM/98LDulo3Yud3U5dzWXu5rLXcvjrq3gruVzP6301WYdWZbqu0H3LQrw4QCwLAYpd6lmZfnMgVVzBu37aEj1/Kf2Lxhas2BozYKh+xc8fWTZyPPl8+/fbtVvbzAOWBfz51gCkFRAOQAMBcoBYChQDgBDgXIAGIo9lDvqfo66mH1cAESMbZSjlvw2xLrg1OVYQuIImGvBiN+S+U+bt4dyh9YMY5X8PrRmWJx3brpyxPSUxJ4+AuWsw/7VzyuU/N5f+Hw8dx71f5IecxqJ2JDwMvJTMorDMH02ZvwOAMppo7LgBYWS35WrXojnzk1UTjRNOVqgHAmU00Z5fqpCye/y/FRmS2YZKvlcX9Z6cmBJmSpMTvgnGhKjwUA5OcUYODV4rjSrTGMn4sOgHbmsfLlL1kTtN0qN5EtWasm5B9aTx+xyOWlJi/CRkEcerBxm7cLr9lBuW+4IhZLf23NHMNrRst6SbLX6erly8jg2c0e0ZzrQYuDU4DlTuUg6EZ3stNh4aK30oRL036i2UumyX5GWnDs1GUh0L9dFduSq8X8op40NS0cplPzesHSUQlvGc1NE36dl8MizR/x9hglKO2K2pX4jmAtiKRdRJ5LTV4z4iSkUG4k25IlMvZgR28mPXEvolr4+1BfVFsnxqKa0oJw21n48WqHk97rs0fRm1Kx3PJRT3ZGScqFTQW4Lw7nIOqFfMWQ9spSjohBsZ+woeuUCPwnjmKBcHKjMmZw77cmqwldZJb8LF79Mb0nNeoveAmhZTx9Yhv4Gu8V/1OkhboWBJeV9m1f0rAfxJSX0Dk1zJ9JLFvEOTGSiJInOGlhqK5Uu+xVpybkrqOh0uUSPnBH9wLIV0t8LlIuAqsJXc6YOunlktrfs3YJJg6klv1cs/BujNS3rLfx3hu8RkH9Mqetpt0+kcWzqjoJrtd8+kSnH3DySTsKHITpS+d+AsAuiJmIoGXPaHRV5Yj20gplzl/yNkgx8RdfgwOhVduRQLmZypz3ZcuC9nKmDThVM/2L+pG1zJstLfi+dPyaSLll/wk2/Mw6YJFIi2OrKVRW+euStv7UdT3/n2cd2TJ8wd1yKvOT3ko/GRtIllLMbifU/Y3XleJ5/59nH1r828kLO8+88+1j+a09nzUmXL5H0B+XsBHmrPzGwgXI8z1cVvpo77cn5af/L7AMBIFbsoRwACQOUA8BQoBwAhmIP5ZAKBwmDbZQzLxXOWyClal/M/+jZathDudhS4aKZXFFhunLEXBObncBQToo9lIspFe51O53O2D5yMzGlavdgOJSTYg/lYkmFC3MNY/ufN1E50aThaIFyFsIeykWfCqdnz7wIhpMryJG3hx0Ml20WnEZs7RS21bCHctGmwhWCLWKhRIEA+XoEw8W/TlulsK2GPZSLOhXOyHLEIaUaaiC67GhMqcq/Qb04M34w1U5iDYZLduywVyTUathDuShT4fLzixrTQjA8/LuCcnHHBsrFlAoX/X+HXiMYHmonMpEeDLd5CttqWF25WFLh8pt9wTUIhouaqQTDbZ7CthpWVy4OqXAekTlgIlZXLg6pcB7KAROxunK8/qlwHsoBE7GBcjxS4SCBsIdyACQMUA4AQ4FyABiKPZQ77cmnLmYfFwARYw/lPj9WQE2Fx8G6aG9aGhr6DnxM7XLHdaf4FDsu2EO544cLWalwva2zgXLiKZxQzmbYQ7ljB4sUUuGeg2v021VEypnzOZ5RD+iHcnHBHsod3L9OIRV+uGadfruCcuR+oJz+2EO5fXvXK6TC9+8rZbRTziyLh2WBE5kVDI8g9E2t/SQ7MGpcjTZHWZwTFz14iD5V2ul2S6VEoNs62EO53Xs2KaTCKys3MtqpZZaJ6wUZFqAHxjWGvtWvfPJEeUQRb2p0m0xNSOM+oV4R6LYC9lBuR/lWhVR42a4tjHZaoiWSjAkrpRp8IQvsUONw4lOeuP5Qg96RRbxpykl6oA89kS61BPZQbvPOnQqp8O1lOxjtVM+qwIlMVUf0Unvom2jILEOqrpxCxBvK2Rt7KFe6bZcQAKemwjduL2O0U1eO94rrULOC4dpD35Rq2vKjEifKI8yJRzCwRKDbethDOffmPS1+7ld/HzUVXrJ1N6OdBuWk57tSYDwwOlQLfdPuvYiRJspFjVQj3jTlRAcYvn2CQLf1sIdyqzdUNfu4Zh/X5OPkqfCiTZWxdG7UPXcDScAfKXGwh3L566uFDLgQA5ekwgvXV0XfdYKkUr1up+iCCeMsiz2UyyupySuuyS2uySupyS0R/j0grMwrrllZUh1dt+S9cdtD3E6Fb1bGHsoBkDBAOQAMBcoBYChQDgBDsYdyqBUOEgbbKGdorXBDI96qmPiRND4N1x97KBdbrfDIsa9y8lSQYbsG2rCHcjHVCrc9yue9uKoOOW1LB1ugnP7YQ7lYaoXbH+3KSVrFfqGDcvpjD+WirhXOSLjJJx4T60VzlCm5bD6wnhnBZu+dp438yF27XE7RRObgnGRWc3Eyndy37CqHYLhFsIdyUdYKp1wA2KFvcr0kbyrNZatHsBl7lyQDGDl0ShiO8J/WXKqFKIEk2z2C4aZiD+WirRUuD2izQt/i9ZKrnCQ+w8yDitPf8r2TAZ3wdpJDCnYnP+81NVf4GyA/JOR3TMAeykVbK1yADGjHVTm1vdO3lDoTypJKR3camqvdNIFy5mMD5aKvFU4JaDNC3xEpp3lgKdu7yIhgnW7ZyFAaVCcHlorNqXdSEAy3GFZXLpZa4TwloK0U+tasHCOCrb536h0VuSiSt2LEeU+7IRNOpstGnsGntiAYbiGsrpzetcLjkEhFBBtEgtWV07tWuC7KIYINosfqyvE61wrX6SqHCDaIFhsox6NWOEgg7KEcAAkDlAPAUKAcAIYC5QAwFPOV27Z8kdmHECHWCrACm2Gccg86b327febFTdMvbpr+/a45c8aPyExLyUxLyRyRInyx5HXt9/o1o+9H30JvUA7EgHHKnVmVfrf5Uk/btZ62ax1XT85NH9Zwtth7Zl1mWkrDV8UNZ9ZlpqXovtPgHK0ozKMnf6AaiJFYlautre3p6VHd7IG/8Wxuym/nsm5fybt3ZfmduuyPxg27/oW7/vM1mWkpP39R9POpojgoF5qLpYtymNkFdCBW5SoqKiorK/1+v/Jm51aParu85c6Nqu7G6u7G6oUTRwZGleKlaFYmtblSuFuaVZMXapNHpykbi3dBS1tT/ZUemWjQGX5Bm44MkhMdlPP5fFu2bGlpaVHY7GT2YK7dQy7zJrzQ8FWx98u1wsDSqymiB8EAAB0wSURBVDCwVA13MyY6Smbgy3PX4iKplF1IYmyyjAytgDgl1k2tMw6SFB2U43ne7/e73e7r16+zNvs0axD36z5huX9z940Tcz15aec2jj23ceyx3OG1G8bWbhh7dPnwi5+8WVeWIWutFu6mjvhEm1ALLpKXMbVdSK9s4u+ILmDyWDd1M5Ck6KMcz/Otra05OTldXV3UzQ7P+yt3cyd3c2fX90XnNoxprVvDtR7iWg9zrUe4tqNc21Gu7RjX7umqLzu1cjhjV+xwN005pjFK78iYu6C/IOOpsj2E77UwNgPJiT7KdXZ2Kl/lamY/wTWUdtblnl6d2nm5iGsq45rKuaZdXPNurnk311zB3drTeaX0RMFIf+O30saMcLf4eSHhcaObcotSMrCUZatVdsHwl7BXmjYnY92szUBSooNyHR0dqu/l9n7wF//5RSfzn/d/s5TzFnPeEs5byjWUcg3ruYYN3I2N/rp8T25qxy+XqM3p4W7JwwskdzHEl7JwdJqnD/Loz9lzOMQXLMnOiXA4UUBcZhZrM5CMGHTHcvfMPx/LTumonctdXc5dzeWu5nLX8rhrK7hr+dxPK321WUeWpfpu0H2LAn1v50t7w+AQxIBBn8tdqllZPnNg1ZxB+z4aUj3/qf0LhtYsGFqzYOj+BU8fWTbyfPn8+7dbYzwSgvgbh8/nQLSYP8fSTgRGn7jEgeiBcgAYCpQDwFCgHACGAuUAMBQoB4ChmK8c1/4j1/6j2UdhKuLEAe6HJjZmKvf7wwe+k/Nubn2m7Rg9syNCPENfMiuZl6+nn7qUMgGGQ506Y7RyN6peLF38YmnVucDrqwWlJZVdoa8Xv1i6+MXSxZl1vlCLc8cDK188flVYc6uu5MXgli+WLi64wd5d15nMyjO3mIexOHwwgTWhg0k4DFLuR98dyfJzZ/cfv/c3l43yf/aXm9uf67+vMn+FFooJrFYsPCPpgpzOpf3cjsfjHAzYkRI3qkLm8DxPKnfuuMg9QaRzx0WmCStv1ZWIO6Hiq6xc/GLp4hdZylF6IP1POAyafVJwof7NT6+Flv/+7NqqCz/zPN9ZW9haPeTXvU93XfxEpQuGctQcG53on6OQVMqRnDsuXOh8lZWU72pR7lZdyYuVZ27dqIJyAQyaY/kfLy/53xNXhpb//Ef+X15fxfM813H9ly3P+44N9G5Rq55DV46cfRXRVU7eXJx0U0qIy0PlqkW3pTuVDSxlaXfZFGtRCp5ZNItSc5w6AU6TcvSrXAhtV7ng7mjKkUNTYlwK5RTQmApvbrs9akcOuYz+JOeV6pxXqnO8m8f4jgz8ad1zPc3fKe2J/l5OOsNf21s5ce5HUq1UJSFOLditWnSb1ZtkhTjtziplTo+Zy9pKq7CKUFfOV1lJahZ4g0e+YRO/lwu9LaTBusqRG4jeTEI5FhpT4TzPj6/+eP5niyTLC7vntZ/d+sv2p5p2/bWpJktpT7SrnPiypXVUFlBTGlkVFStlJsSZoXLVasC03qQrWDE/5rMoHEy/VcoyKivXdSZTfO+EXB+yi3qVC91lETVXVS48iJUdTIJhUCqc5/nH1k9P2fqeZPk/JRkP77Z/t2yo/7PH65YM7e+7z2pOnFCsvGlEb4REV4dAOV9KAk92I5GeUjBWOXrMXNot4+cKIFGu60xm6DJ1o0r5khUaZMY+sJR0G7yEQjkFNKbCv8yaWLlgPHX5ctGkH9f9o2XvwB9WD23/92FGB8z3bMQ3NNw+oT68QRLiVkmIUwt266mcOCNL04keM6d1K6o5LkKsXOAmB88L40nZ7X5fZWVYwtDlKFrlfJWVwR66fOEN6J9YJBwGpcI/mzni8oq/yZdLy176bOaItvM1PxamNFf8+dLKV+VtZe+/KJeC0Jsw6gd24k0p7/UkTwhTSoiLe6G9wdOknOgwJVcq1VLm9Jg55S+OQonXkHKUD+gWk5+2BTYLDCmVPpejDETJ3dGUC3/WJ3IMyimg8Y7lEdew73Jfki8Xc0YfcQ17eO/2V+8P7jzxpy/fG9zz2y8xHlIUJOpDYRV+LvrdeYsA5RTQ+LnctrEDdk1+krJMHLRt7ACe579zv31u3pPHp/3fX45uj/GQIiZRZ1kp/lzSi5tlwOwTfbjb2qyw8Dx/58YPt84c4G53GHM8Ichb+olEov5cCYD505oBSCqgHACGAuUAMBQoB4ChQDkADMV85ZAKV0eXzw3xyFtrYItUODndkYQs6RhXtOTN4wmUSyBskQr3up0Op1M6WVA0CSu+yKY4Gqxdos6OSUpskQr3up0Ol5s2Ud5tzLmoMBHZEKBcAmGLVHjgBBedeMILaV6UHPmJBlLEC0am2x1JjluWLRC3ZYW7I9q7OJkn+skj7sHp9sofGSPZnlYCDOiPLVLhwZNFnIAOrAkldzSV7WZnusMda4jbqHTICndr37skIkQ+AyKCHhg1ujRWSwdxwRapcNGp7HR7RYln4rSS/Z2Wle1Wz3RTn0lEVY6oMS7tkJE01b53yUiS/Hmj64HX8ktwGPPOOMmxRSpcGsoOv4MLnVj0oLSsbLd6plubcgznGdvLr8lqe1dQLroeeMaFmXbkEC+u2CIVLn/jJIuG0oPS8mS0aqZbg3KiIRu1Q1a4W/vepQ+YIN+IRt6Dxy16L0frhJKFB3HBBqlwypMXyHc5xKUtMExSKtutmulmKke7k8HqkBXujmTv5A0Ot3gTjT2Et5Q9TYJ2q4R6twfoDlLh8QAXCsAEqfB4AOUAk2RPhccHKAeYmD+tGYCkAsoBYChQDgBDgXIAGAqUA8BQoBwAhmKccg86b31T+s+vC8Z+XTD2m9J/PuhUrsMCQGJinHJnCtJ7/d7fezt+7+2423zpfMk/Dds1ANbBIOUe+BvP5qb8Vpt1+0revSvL79Rl//b53O+3/ONi8ZiLxWMu73izr0dlyhgAiYFuyp0+fTo/P5/13XOrR7Vd3nLnRlV3Y3V3Y3X3L/vueKtue/febTx4t/Gg/1r5N6UTFDqXzcIlYtfMrDcAVkQf5U6dOjVw4MABAwawNji5ZDDX7lFYTi4ZzOydMn1KHLtWqqMGgLXQQTnBt0mTJrGUq09Nly/fbB13dm3q2bWpZ92pZ92pX+Q//fW6l75e99LX616WdaBYvJvH03iAnYhVuZBvkydPVlCu4e/Tbkx5uz41/caUtxv+Pq0+NZ1rPcS1HuZaD3NtR7i2o1zbMa7d01VfdmrlcMauyMAylAN2JSblSN+UlfOX7+V53jt+6h/9/R3bdtWnpnNNZVxTOde8i2vezTVXcLf2dF4pOVEw0t/4rbS9SvFunpKABsCqxKRcfn7+AIK8vDzqZsJIsrOiuv/O3dZVxcJLzlvCNZRyDeu5hg3cjY3+uhWe3NSOXy5Re5AFlqkPlkSkGdgAIz4kEBzzl+/9/V5P29pNAeWu5XHXVnDX8rmfVvpqFx5dPsJ3g+4bAImEQcq1l2z9o7+/YWLGH/39bWvW16em1ywYWrNg6P4FQ48tf/HfFVn3b7cacCQAmI5ByjW6Pmj+MKs+Nb35w6xG1wf1qekG7BcAC2LcwFKyGLBfACwIkgQAGAqUA8BQoBwAhgLlADAUKCcDBX5BPLGBckbHyaEciCc2UA5xcpBIWF05xMlBgmG+cvGMk3tcDqfbE5jxTNYxDQ8c5WWfJAV+lWqIAxAxJisX3zg5TzypgSwFGZaKVmFcXPpQsYY4ABFjpnKGxMnJcqfUr2XXOWYZeygHdMA05QyJk6spR60wDuVAPDFHOYPi5KrKUSuMQzkQT8xRzqg4uerAklZhHMqBeGL+HUsFECcHiYfVlUOcHCQYVlcOcXKQYFhdOcTJQYJhaeUASDygHACGAuUAMBQoB4ChQDldoNTjAoBKIitnYJwcygGtJLJyBsbJoRzQSsIqZ2ycHMoBrdhYufjFyYnpzETluvBaeV1yona5pOKWPHXO3JjdCUgg7KpcXOPkZJbA6XSGYuXSwI84Y0dUlXQ5FFLnChvT14OEwpbKxT1OHlTJ43K6vR6X0+0NhXfCFyHyQicZWIpeyq5zrI2VOgEJg/2UMyROLghGyOZxSy52su1ptlBT51AuubGZckbFyXmv2+l0hlUIDS8lAz6PixgTku/JhBfU1DlrY+Z6kFDYTDnDqpOLTnnJ471Yd0Rc8hsftNS54sa09SChsJlyGrF2nJw1YsRIMilIWOUsHCeHcklNwipn4Tg5lEtqElY5xMmBNUlM5QCwLFAOAEOBcgAYCpQDwFCgnK6gJhZQA8pRiD5ODuWAGlCOAqqTg/iRRMrV1tb29PSobobq5CCuJJFyFRUVlZWVfr+KMDFVJ5cUylIuUx7O3jndbmomCCQgyaWcz+fbsmVLS0uLwmYxVSeX1BlXKlNOhoDIXB1IcJJLOZ7n/X6/2+2+fv06a7NPswZxLfuE5X7jbu+nH0YRJ4+ogKt0E5DQJJ1yPM+3trbm5OR0dXVRNzs876/czZ3czZ1d3xfVrn+p/du1EcTJoRxQI+mU6+zsVL7K1cx+gmso7azLPb06tfNyEddUFkGcXLtyGFgmK8mlXEdHh+p7ub0f/MV/Putk/vP+b5Zy3mLOWxxBnDwC5USRcdw+SR6SSzktdyx3z/zzseyUjtq53NVl3NXl3NVcI+LkGFgmDUmknMbP5S4dWF0+c2DVnEH7PhpSPf+p/QuGxidO7nU7iacWYVyZNCSRcpaDeGwRfEseoBwAhgLlADAUKAeAoUA5AAwFygFgKFAOAEOBchSiToVLasJRahkESvmQ1bLCFSMlFbTkhFoSRe3Em4Y/UhfvBZ9CWAYoRyH6VLhoEolUieA36U9llswKYz23WTJhzOViTY/Gs58tCpSTElMqXHRd87gcLpeLnLssfEtdOQVdpMp5xJdSKGd5klG5+BUZF53oHldACGk4VVU5JVsom5F1uaCc5Uk65eJaZJwnznSPK+hDKKxDlKuTvZXT9F6OZ5hJKyIp2gveylmH5FJOtcg4H2MqnA85Rg4jnW6v+kVM9DYw/GaOeD6KV7IZ2U9QOlzlLE8SKaelyDgfYyqc58MDSqLSsei1FuXYYR6muoJ0LihndZJFOY1FxvkYU+E8zwdvm4guWaLXEV3lFDaT9hMYSkI5a5MsymksMs7HmAoX8LjEpb4lryWfy4VHjJR3eGLkn8uJtyMf6ADlLEqyKKcdc1LhIGmAclKMSoWDJAXKAWAoUA4AQ4FyABgKlAPAUKAcAIYC5QAwFChnDVDxOGmAcnqCIuNAFSinJygyDlSBcrqBIuNAC1AuAuIYJycmIROznskUeXjaMyYr2xoop5X4xslDylECAIKDZHoc0tkYKKeJuMfJRbUgJU9OkFiIVI69gXLqGBEnp8dNqU8Eg3L2BsqpYFCcnBhYuj2yVU5JWXEYZ2OgnAoGxcnFD+MT3ycJPiIWd08SAiinGzHFyZVGixhJJhRQTjdiiZMrTj6BcgkFlLMEisNFKJdQQDkADAXKAWAoUA4AQ4FyABgKlLMKR93PURezjwvoDJSzCkfdz/U97JcsPx7OVLOOWTCEtmVoGqe2O6AIzsYBKGcVDhYN4/r6Jcv1U4uuqlgH5WwGlLMK1YXDH3CPJMvNC0XXTy368fA71YXUwlp8fJUDcQDKWYU9Band9x/x2dm9s+d2vPWvm2Mn33vwKLTsWZXKaAflbAaUswpl+Wl37j+600NfyvLTGO08LofT7XbJ5jyHZ0eLakuKvuDFNbZkHiKrHgegnFXYljuys/th5fHLG/adX7ThxPRl1Z3dD8fPLe/sftjZ/XBb7khGO6J4XfitF3npk1YvF3+hWEcSWfU4AOWswoalo3x3+ljLhqWjGO0kdjndXml5yOCFTqacdEwqEwtZ9TgA5azC2uzRv3X18dnZvbPmtnb1LVt3aML7W/5zTG5rV19rV9/a7NGMdgzlKO/vtCgnboasehyAclahcPHLLf4+1rJ6sexxKQFoyonHeR6XfDzJGFiGbXK6vciqxwUoZxVWLBzT5OOOXtm240LxxyeWv1E1e+imjP9Y9WqTj2vycSsWjmG0oypHud0Rwe0TuXLIqusHlLMKy+a90tjO/dJGX5bNe8WEY0JWPQ5AOauwZO7YhtZe1pI9Z6zxh4SsejyAclYha/a4rDnjsuakL5ydLnwR/Do9a/a4rNnphh5NYByJrLr+QDkADAXKAWAoUA4AQ4FyABgKlNMZhLuBMlBOZ6INd0eLtVKkxsSC7B0+gnI6c2jNMLlyQrj70Jph+u8PytkNKKcz+1c/H3qMQm/fI66vv7evPxTu3l/4vNkHGFeUZdDrozwoBwgqC164zz26zz16fPSMGTmb7vf2z8jZ9PjoGfe5/gdcf+WqF8w+wLgC5dSBcjpTnp9678Gjew8e5m3c9/joGd0PHj0+ekbexn3C8xTK81nPU9AeuybWO91eUaQtHA8nxpqhHpxuN/OhDZRZ0JRcOblrl8spjsE63V7GhGlpho84BjKCEIw/eFwOp9sTOKDACnq83ZZAOZ3Zljsi+PSEh4Jsj4+ecafnobBme+4IerMIYtfi9ZIUKSUeLk7YUJWj7J2aK5cdUmATavCc3lzuSmDTcIvgX5Pgl6I/QTwP5YCIDUtHCY9O6OwOXOjyNu7r7O4T1iiGuzXGrsXrJVc55ayq5LR2SE5t2qVRdGWSHFKwO7kMmpqzfnbyoKlfQzlAsPbj0aGnJ4Sucr47D4U165jhbgEtsWtdlFPbO31LqTPCVkRKj5U3pzcnuoFyICoqcybnTnuyqvDV1q4+QbbWLk4QT3ieQiEr3B1B7DoS5TQPLGV7p+bKaQ9HcbpcTtKK8ChXqTnx2UbIW/GKUIdQDjCoKnw1Z+qgm0dme8veLZg0WLhj2eLvE+5YtnRyLX5uxcK/sZprjl1HpBx5Y0Tp9gnl4XiUOyryy5TkCQyEDLQbMoF1hGHEoyBCXUE5oI3caU+2HHgvZ+qgUwXTv5g/aducyc0dXLOvt7mjt8nHNXX0Nvm4pfNZz1OQE4dAmvbHzIK4AeV0o6rw1SNv/a3tePo7zz62Y/qEueNSbrb33mzvbWznGtt7G9t7b7b3LvlIe7hbF+W8bqforj2MMx0opyfvPPvY+tdGXsh5/p1nH8t/7Wkh2S1ZNHem01WOGODBNysA5XSmqvDV3GlPzk/7X2YfCLAoUA4AQ4FyABgKlAPAUKCczpz25FMXs48LWAUopzOfHyugpsL1ti4ej5G090fMdgHK6czxw4WsVLiu1kE5uwLldObYwSKFVLjn4Bqd9gPl7AqU05mD+9cppMIP16zTaT9Qzq5AOZ3Zt3e9Qip8/75Saiti8iMxB58Sb6MFtMVTh/nQt5MsbW0XoJzO7N6zSSEVXlm5kdqKzAM4neHgjSy7xg5oy2xJtrS1XYByOrOjfKtCKrxs1xZ6s+B573E53V6Py+n2qhT+1lI3OLmin3YByunM5p07FVLh28t2MNoJghGyedySi51seyhnS6CczpRu2yUEwKmp8I3by1gNvW6n0xkeNYaGlwoJa0pmPInT1nYByumMe/OeFj/3q7+Pmgov2bqb2ZKUSPIMZlZAW54ZT+K0tV2AcjqzekNVs49r9nFNPk6eCi/aVGn2AQKTgXI6k7++WsiACzFwSSq8cH2V2QcITAbK6UxeSU1ecU1ucU1eSU1uifDvAWFlXnHNypJqsw8QmAyUA8BQoBwAhgLlADAUKAeAoUA5Oij5DeIElKNjdMlvc4mo+rF8Apq1iidbHShH52DRsFDSNLQI4W6LWUfMTKGEeLT3AeUMAsrRqS4c/oB7JFlC4e7qwuFmH2AI8YRmoq5jvEBhg9iAcnT2FKR233/EZ2f3zp7b8da/bo6dLGRMhWXPKmb9YcOhFaCKq3RQLjagHJ2y/LQ79x8Fw6bSpSw/jdmSVuSJFuvWsobSGaOkuPQIyOyqbC+ykuKiPiiHIQ3tUQaWyofHTK8nIVCOzrbckZ3dDyuPX96w7/yiDSemL6vu7H44fm65kDTdljuS0c7rdhET9In6huKzlLpGFv1Wtom5iizLKI+T00qKM4vUUcs7spWLoOJ58gLl6GxYOiqUNJUv7JLfPC//Sy8fiVHXUKLf8gLiqiXFeVHVYnqfssqPYh+lTVSrH4uMVT68eI96bQCUo7M2e/RvXX18dnbvrLmtXX3L1h2a8P6W/xyTKyRN17JKfpO1gakXGwEtaySdys5jRklxcfyN0qeacvImESinenhQDsoxKFz8cou/j7WsZpX8Jk5HInFKDqc87uAFiL0mGP2Wl/BmlBQX37Eks6fyOLmicswmtILj8nFpBBXPkxcoR2fFwjFNPu7olW07LhR/fGL5G1Wzh27K+I9Vrzb5uCYft2Ihq/4wUZnb5XKKzzXR7QOlNbRbGfL7IfIbFvQbG/IOFJRj3P4hb6mECo5T3gpqr3ievEA5OsvmvdLYzv3SRl+WzXvF7AO0EkqjRYwkpUA5Okvmjm1o7WUt2XO0l/xOfBQnn0A5KVCOTtbscVlzxmXNSV84O134Ivh1etbscVmztZf8TmgC40gFp6CcFCgHgKFAOQAMBcoBYChQDgBDgXJ0kAoHcQLK0YljKlx7+EVj9BMJUVsB5ejEMRUO5ZIbKEcnjqlwRDyTGyhHJ46pcCiX3EA5OvFLhROTj9WKd0uSo5Iot2iPCGXbBihHR/dUOC1VrVa8WxL9lES5iX0ilG0joBydOKbCwy/Vaiwyn4/AUA6hbDsA5ejEMRUeR+WIg0Ao26pAOTpxS4WTUsamHELZ9gTK0dE5FU5NVeuuHELZdgDK0bFTKhyhbFsB5ejYKBWOULa9gHJ07JEKRyjbhkA5AAwFygFgKFAOAEOBcgAYCpSjg1Q4iBNQjk6UqfAYKwBrBJlUOwPl6ESZCodyQA0oR8eIWuHIqiYlUI6OEbXCoVxSAuXoRJkKV89xs4puSyt0k7P+pclSxMDtDJSjE2UqXCXHrRAPl1foDq5VqFqKGLgNgXJ0okyFK8dtWFlVelHv0Ddko0/EwO0MlKMTQyo8KuXob+pUlQu/RgzcLkA5OlGmwlUenaAQD5dX6A50ER6WIgaeEEA5OlGmwlWfVkKPh1NugxDv9ILiIAaeEEA5OpZOhSMGbmegHB0rp8IRA7c1UI6ORVPhiIHbHygHgKFAOQAMBcoBYChQDgBDgXJ0kAoHcQLK0Ym2VrjHFd39wshSpxHdllTcGGlXw4FydKKtFQ7lgApQjk60qfBolYsM/ZQDhgPl6ESbCodyQAUoRyfaWuGkcmQMjjznQ+uJmc0ay4IHYEe/KZXKZRlyBMxNBcrRibZWeEg5IgnAs+qGE/kdjWXBeaIhJfpNrVQe7Fp8RERPCJgbCpSjE22t8KBy0tQpcd5TU6oaaxRLeqO9pF+sXAxhEDA3HChHJ8pUuJJyisFwXZSjVioPrHXSL5gImBsOlKMTZSpcYWBJCYCzBpaalKNEv+mVykVCEu/bEDA3ByhHJ9pa4RpunxDlxJm3T7Rc5SjRb2qlcvLqJBySy4OAuXlAOToGpcJNf3osAuaGA+XoxC0V7nU7aU+yVEL6zD0dNUDA3HigHJ04psKJW4pmXuEQMDcJKAeAoUA5AAwFygFgKFAOAEOBcnSQCgdxAsrRsWgqHIlS+wPl6Fg0FQ7l7A+Uo2PtVDiwMVCOjrVT4cDGQDk6Fk2FI8Rtf6AcHYumwhHitj9QTkR9arp8sVAqHCFu+wPlRNSnpjf8fdqNKW/Xp6bfmPJ2w9+n1aemWygVjhC3/YFyIupT0/3le3me946f+kd/f8e2XfWp6eanwhHiTiCgnAhhJNlZUd1/527rqmLhpfmpcIS4EwgoJ0JwzF++9/d7PW1rNwkvLZQKR4jb/kA5EfWp6e0lW//o72+YmPFHf3/bmvX1qelmp8JFjRHitjtQTkR9anqj64PmD7PqU9ObP8xqdH1Qn2qNVDhC3IkClBNB/ZDA7IMCCQWUA8BQ/j8vmZ16+Kgy4gAAAABJRU5ErkJggg==" alt="" />

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH8AAAAZCAIAAACXcmYDAAACSklEQVRoge3Zv0vjYBgH8PevObIE7tBiKXJ/gkP2LO924HBk6XI6pCBHHLRLXBQOhwwF6Yu7gkMhkMGhJ8opVbOYq6VcCm+SNgUd3vwy1bTcBd57Y748lDfhfUv4vOkT2oInRnO9WwNBarvXtK/mLwNoX8C7TqlPM/+q/+HHr2JXLspvJQd9w3KKWozpHysfXy3qju9Cv/3903gyTdXP4y9MbQASAGyyqN/aWprVvzmTmdoAlvXd8TRVN2cy2YDW1hJt2ULrHzYq2PWx6zteXO546ng+dv3DRoW2bNH1beyfnN+dnN9dmkMb+5fmkBzaOEO/Ky0DQUNC+PVV0JIWUQIUw0ICqEqawkeTNUhm8HI3+c5tuRqtaooAiGiBtczq722s2NjnoMpBtb5/amO/vn9KDm3s722sZOjHuBoMx0hIgr48D5aVthXaiciwHENX+HiHgmqKgJe7hgaD+fPXsqw/GE04qFbWDyrrB4PRhAw4qA5Gk2z9xP0eHsZkqWlIAFVJT3wOXhmnPj1z50djlvUfhh658Tmo7hwZ0fj3n3Ee+hFQqT+jv12vEf2dI2Nts8VBdW2zRfbgYeht12tZnYd0gBfNeqbzxN0jU1BX+PAk6TxtubroWqb1zX6gT9Cjgdmfoy+IcObp6mQ9dRfQb4phi483uLj6DWnV7Huo09OvHi/ubdTpXdzb+tUj6vTMvteQVhfrPP9Lsad/a7m3lpd4javUTyVn/W9fP2dXqZ9M+Qsz4/rFrlyU30r5zyLNlPo0U+rTTKlPM895EgSpnxXpNAAAAABJRU5ErkJggg==" alt="" />

1.pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>spring_security_1</groupId>
<artifactId>spring_security_1</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>spring_security_1 Maven Webapp</name>
<url>http://maven.apache.org</url> <properties>
<!-- spring版本号 -->
<spring.version>3.2.4.RELEASE</spring.version>
<!-- mybatis版本号 -->
<mybatis.version>3.2.4</mybatis.version>
<!-- log4j日志文件管理包版本 -->
<slf4j.version>1.6.6</slf4j.version>
<log4j.version>1.2.9</log4j.version>
</properties>
<dependencies>
<!-- spring核心包 -->
<!-- springframe start -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${spring.version}</version>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- springframe end --> <!-- mybatis核心包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- mybatis/spring包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.29</version>
</dependency>
<!-- junit测试包 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency> <!-- 日志文件管理包 -->
<!-- log start -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- log end --> <dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency> <dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.11.0.GA</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency> <dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
</dependencies> <build>
<finalName>spring_security_1</finalName>
</build>
</project>

2.web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>spring_security_1</display-name> <context-param>
<param-name>contextConfigLocation</param-name>
<!-- 应用上下文配置文件 -->
<!-- 两种位置写法 -->
<!-- springMvc和spring security 两个配置文件 -->
<!-- <param-value>/WEB-INF/spring-servlet.xml</param-value> -->
<param-value>classpath:ApplicationContext.xml,classpath:spring-servlet2.xml,classpath:applicationContext-security.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <!-- spring securit start -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- spring securit start --> <!-- 配置spring核心servlet -->
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet> <!-- url-pattern配置为/ 拦截 -->
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping> </web-app>

3.ApplicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<!-- 配置数据源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost/spring_security?useUnicode=true&amp;characterEncoding=utf-8</value>
<!--springmybaitis是我的数据库 -->
</property>
<property name="username">
<value>cqyusp_dev</value>
</property>
<property name="password">
<value>cqyusp_dev</value>
</property>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
</bean>
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="lqy.UserMapper"></property>
<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean>
</beans>

4.applicationContext-security.xml

<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security.xsd"> <http auto-config="true" >
<access-denied-handler error-page="/accessDenied.jsp"/>
<intercept-url pattern="/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<intercept-url pattern="/**" access="ROLE_USER" />
<form-login login-page="/login.jsp" authentication-failure-url="/login.jsp?error=true" default-target-url="/index.jsp" />
</http> <authentication-manager>
<authentication-provider>
<!-- <password-encoder hash="md5">
<salt-source user-property="username"/>
</password-encoder> -->
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="select username,password,status as enabled
from user
where username=?"
authorities-by-username-query="select u.username,r.name as authority
from user u
join user_role ur
on u.id=ur.user_id
join role r
on r.id=ur.role_id
where u.username=?"/>
</authentication-provider>
</authentication-manager> <!-- ApplicationContext配了数据源了 -->
<!-- <beans:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<beans:property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<beans:property name="url" value="jdbc:mysql://localhost/spring_security?useUnicode=true&amp;characterEncoding=utf-8"/>
<beans:property name="username" value="cqyusp_dev"/>
<beans:property name="password" value="cqyusp_dev"/>
</beans:bean> --> </beans:beans>

5.mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC
"-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<mappers>
<mapper resource="lqy/User.xml"/>
</mappers>
</configuration>

6.spring-servlet2.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 启动注解驱动的Spring MVC功能,注册请求url和注解POJO类方法的映射-->
<mvc:annotation-driven />
<!-- 启动包扫描功能,以便注册带有@Controller、@Service、@repository、@Component等注解的类成为spring的bean -->
<context:component-scan base-package="lqy" /> <!--这个包根据自己的项目来配置,我的是lqy-->
<!-- 对模型视图名称的解析,在请求时模型视图名称添加前后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
</beans>

再看看java文件

User.java

package lqy;

public class User {

    private String id;
private String username;
private String password;
private String status;
private String descn;
/**
* @return 返回 id。
*/
public String getId() {
return id;
}
/**
* @param id 设置 id。
*/
public void setId(String id) {
this.id = id;
}
/**
* @return 返回 username。
*/
public String getUsername() {
return username;
}
/**
* @param username 设置 username。
*/
public void setUsername(String username) {
this.username = username;
}
/**
* @return 返回 password。
*/
public String getPassword() {
return password;
}
/**
* @param password 设置 password。
*/
public void setPassword(String password) {
this.password = password;
}
/**
* @return 返回 status。
*/
public String getStatus() {
return status;
}
/**
* @param status 设置 status。
*/
public void setStatus(String status) {
this.status = status;
}
/**
* @return 返回 descn。
*/
public String getDescn() {
return descn;
}
/**
* @param descn 设置 descn。
*/
public void setDescn(String descn) {
this.descn = descn;
} }

UserMapper.java

package lqy;

public interface  UserMapper {
public User getUser(User user);
public void addUser(User user);
}

User.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="lqy.UserMapper">
<select id="getUser" parameterType="lqy.User" resultType="lqy.User">
SELECT id,username,password,status,descn FROM user WHERE id=#{id}
</select>
<insert id="addUser" parameterType="lqy.User" flushCache="true">
INSERT INTO user (id,username,password,status,descn) VALUES (
#{id},#{username},#{password},#{status},#{descn}
)
</insert> </mapper>

WelcomeConstroller.java

package lqy;
import java.util.Collection; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; @Controller
public class WelcomeConstroller { @Autowired
private UserMapper userMapper; @RequestMapping(value = "/welcome", method = RequestMethod.GET)
public String welcome(HttpServletRequest request,Model model) {
UserDetails userDetails = (UserDetails) SecurityContextHolder.getContext()
.getAuthentication()
.getPrincipal();
Collection<? extends GrantedAuthority> authorities = userDetails.getAuthorities();
model.addAttribute("authorities", authorities.toString());
model.addAttribute("username", userDetails.getUsername());
model.addAttribute("userDetails", userDetails);
return "/hello";
} @RequestMapping(value = "/testUser", method = RequestMethod.GET)
public String testUser(HttpServletRequest request,Model model) {
User user=new User();
//添加两条数据
user.setId("11");
user.setUsername("testUser");
userMapper.addUser(user);
return "/hello";
} @SuppressWarnings("resource")
public static void main(String[] args) {
ApplicationContext ctx=null;
ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
UserMapper userMapper=(UserMapper) ctx.getBean("userMapper");
User user=new User();
//添加两条数据
user.setId("10");
user.setUsername("123");
userMapper.addUser(user);
System.out.println("添加成功"); } }

运行main方法,成功

sql建表

-- 资源
CREATE TABLE resc(
id BIGINT,
NAME VARCHAR(50),
res_type VARCHAR(50),
res_string VARCHAR(200),
priority INTEGER,
descn VARCHAR(200)
);
ALTER TABLE resc ADD CONSTRAINT pk_resc PRIMARY KEY(id);
ALTER TABLE resc MODIFY id BIGINT AUTO_INCREMENT; -- 角色
CREATE TABLE role(
id BIGINT,
NAME VARCHAR(50),
descn VARCHAR(200)
);
ALTER TABLE role ADD CONSTRAINT pk_role PRIMARY KEY(id);
ALTER TABLE role MODIFY id BIGINT AUTO_INCREMENT; -- 用户
CREATE TABLE USER(
id BIGINT,
username VARCHAR(50),
PASSWORD VARCHAR(50),
STATUS INTEGER,
descn VARCHAR(200)
);
ALTER TABLE USER ADD CONSTRAINT pk_user PRIMARY KEY(id);
ALTER TABLE USER MODIFY id BIGINT AUTO_INCREMENT; -- 资源角色连接表
CREATE TABLE resc_role(
resc_id BIGINT,
role_id BIGINT
);
ALTER TABLE resc_role ADD CONSTRAINT pk_resc_role PRIMARY KEY(resc_id, role_id);
ALTER TABLE resc_role ADD CONSTRAINT fk_resc_role_resc FOREIGN KEY(resc_id) REFERENCES resc(id);
ALTER TABLE resc_role ADD CONSTRAINT fk_resc_role_role FOREIGN KEY(role_id) REFERENCES role(id); -- 用户角色连接表
CREATE TABLE user_role(
user_id BIGINT,
role_id BIGINT
);
ALTER TABLE user_role ADD CONSTRAINT pk_user_role PRIMARY KEY(user_id, role_id);
ALTER TABLE user_role ADD CONSTRAINT fk_user_role_user FOREIGN KEY(user_id) REFERENCES USER(id);
ALTER TABLE user_role ADD CONSTRAINT fk_user_role_role FOREIGN KEY(role_id) REFERENCES role(id); INSERT INTO USER(id,username,PASSWORD,STATUS,descn) VALUES(1,'admin','admin',1,'管理员');
INSERT INTO USER(id,username,PASSWORD,STATUS,descn) VALUES(2,'user','user',1,'用户'); INSERT INTO role(id,NAME,descn) VALUES(1,'ROLE_ADMIN','管理员角色');
INSERT INTO role(id,NAME,descn) VALUES(2,'ROLE_USER','用户角色'); INSERT INTO resc(id,NAME,res_type,res_string,priority,descn) VALUES(1,'','URL','/admin.jsp',1,'');
INSERT INTO resc(id,NAME,res_type,res_string,priority,descn) VALUES(2,'','URL','/**',2,''); INSERT INTO resc_role(resc_id,role_id) VALUES(1,1);
INSERT INTO resc_role(resc_id,role_id) VALUES(2,1);
INSERT INTO resc_role(resc_id,role_id) VALUES(2,2); INSERT INTO user_role(user_id,role_id) VALUES(1,1);
INSERT INTO user_role(user_id,role_id) VALUES(1,2);
INSERT INTO user_role(user_id,role_id) VALUES(2,2);

测试输入 http://localhost:8080/spring_security_1/login.jsp

aaarticlea/png;base64,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" alt="" />

登陆成功

aaarticlea/png;base64,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" alt="" />

剩下jsp页面

hello.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<h2>${username }</h2>
<h3>${authorities }</h3>
</body>
</html>

accessDenied.jsp

<%@ page contentType="text/html;charset=UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Access Denied</title>
<style type="text/css">
div.error {
width: 260px;
border: 2px solid red;
background-color: yellow;
text-align: center;
}
</style>
</head>
<body>
<h1>Access Denied</h1>
<hr>
<div class="error">
访问被拒绝<br>
${requestScope['SPRING_SECURITY_403_EXCEPTION'].message}
</div>
<hr>
</body>
</html>

admin.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录首页</title>
</head>
<body>
<span color="red">登录成功!</span>
</body>
</html>

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%String path=request.getContextPath(); %>
<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录首页</title>
</head>
<body>
<div>username : <sec:authentication property="name"/></div>
<span color="red">登录成功!</span>
<a href="<%=path %>/welcome">welcome</a>
</body>
</html>

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<% String path=request.getContextPath(); %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>login</title>
</head>
<body> <div class="error ${param.error == true ? '' : 'hide'}">
${sessionScope['SPRING_SECURITY_LAST_EXCEPTION'].message}
</div>
<form action="${pageContext.request.contextPath}/j_spring_security_check" method="post">
<fieldset>
<legend>登陆</legend>
用户: <input type="text" name="j_username" style="width:150px;" value="${sessionScope['SPRING_SECURITY_LAST_USERNAME']}"/><br />
密码: <input type="password" name="j_password" style="width:150px;" /><br />
<input type="checkbox" name="_spring_security_remember_me" />两周之内不必登陆<br />
<input type="submit" value="登陆"/>
<input type="reset" value="重置"/>
</fieldset>
</form>
</body>
</html>

SpringMVC 3.2集成Spring Security 3.2集成mybaties的更多相关文章

  1. SpringMVC 3.1集成Spring Security 3.1

    这篇算是一个入门文章,昨天看见有网友提问,spring mvc集成spring security 的时候出错,揣测了一下问题木有解决.我就帮忙给搭建了一个集成框架他说可以,他告诉我这样的文章网上少.今 ...

  2. SpringMVC 3.2集成Spring Security 3.2

    参考:http://www.cnblogs.com/Beyond-bit/p/springmvc_and_springsecurity.html SpringMVC 3.2集成Spring Secur ...

  3. 【Spring】关于Boot应用中集成Spring Security你必须了解的那些事

    Spring Security Spring Security是Spring社区的一个顶级项目,也是Spring Boot官方推荐使用的Security框架.除了常规的Authentication和A ...

  4. SpringBoot 集成Spring security

    Spring security作为一种安全框架,使用简单,能够很轻松的集成到springboot项目中,下面讲一下如何在SpringBoot中集成Spring Security.使用gradle项目管 ...

  5. 关于Boot应用中集成Spring Security你必须了解的那些事

    Spring Security Spring Security是Spring社区的一个顶级项目,也是Spring Boot官方推荐使用的Security框架.除了常规的Authentication和A ...

  6. Spring Boot中集成Spring Security 专题

    check to see if spring security is applied that the appropriate resources are permitted: @Configurat ...

  7. SpringBoot集成Spring Security入门体验

    一.前言 Spring Security 和 Apache Shiro 都是安全框架,为Java应用程序提供身份认证和授权. 二者区别 Spring Security:重量级安全框架 Apache S ...

  8. SpringBoot集成Spring Security(7)——认证流程

    文章目录 一.认证流程 二.多个请求共享认证信息 三.获取用户认证信息 在前面的六章中,介绍了 Spring Security 的基础使用,在继续深入向下的学习前,有必要理解清楚 Spring Sec ...

  9. SpringBoot集成Spring Security(6)——登录管理

    文章目录 一.自定义认证成功.失败处理 1.1 CustomAuthenticationSuccessHandler 1.2 CustomAuthenticationFailureHandler 1. ...

随机推荐

  1. jmeter读取文件进行参数化时随机取值实现

    jmeter能用来做参数化的组件有几个,但是都没有随机取值的功能,遇到随机取值的需求怎么办呢? 突发奇想,可以用函数_StringFromFile来实现,先来介绍下此函数: 此函数位于函数助手中, 函 ...

  2. linux环境下安装jdk(本文示例是jdk1.6.0_export JAVA_HOME=/usr/java/jdk1.6.0_45 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar45)

    第一步:创建一个文件夹安装jdk(虽说地址一般自定义,但是为了方便查找请按照笔者建议目录 ):/usr/java 将jdk-6u45-linux-x64.bin文件放到   /usr/java 文件夹 ...

  3. Java虚拟机创建对象的内存分配以及对象的内存布局

    本博文知识参考周志明<深入理解Java虚拟机> Java虚拟机在创建对象使如果进行内存分配: 1.指针碰撞 2.空闲列表 Java在多线程情况下创建对象的内存分配: Java完成对象内存分 ...

  4. php变量布尔值验证

    使用 PHP 函数对变量 $x 进行比较 表达式 gettype() empty() is_null() isset() boolean : if($x) $x = ""; str ...

  5. JS中substring与substr的区别

    Substring: 该方法可以有一个参数也可以有两个参数. (1)  一个参数: 示例: var str=“Olive”: str.substring(3); 结果:“ve” 说明:当substri ...

  6. Redis技术分享

    环境介绍: 开发环境: spring3+tomcat7+maven3+redis-3.0.7 运行环境: Linux 前言: 项目中引入redis背景: 项目中最初将科目.打印.利润表.资产负债表.现 ...

  7. 1.2 N层架构

    N层架构 介绍 ABP架构 其他(通用) 领域层 应用层 基础设施层 网络和展现层 其他 总结 介绍 应用程序代码库的分层架构是被广泛认可的可以减少程序复杂度.提高代码复用率的技术.为了实现分层架构, ...

  8. Javascript中变量作用域(2)

    多层函数调用取变量时,无论在哪里调用,要到创建此函数的作用域中取值,如果找不到再往上一级,直到全局变量. 外面定义了很多的全局的变量,下面我们来一个个理一下. 定义三个变量a,b,c;将A1函数赋值给 ...

  9. Linux IO barrier

    I/O顺序问题是一个比较综合的问题,它涉及的层次比较多,从VFS page cache到I/O调度算法,从IO子系统到存储外设.而Linux I/O barrier就是其中重要的一部分. 可能很多人认 ...

  10. hibernate 对象三态(瞬态、持久态、脱管态)之我见

    刚开始学习hibernate时,对其对象的三种状态理解的模模糊糊,一直停留在一知半解的状态,前两天又回顾了一下,顿时醒悟,原来三种状态理解起来是很容易的. 先看一下对Hibernate对象状态的解释: ...