Back to directory

Here's the thing , There are some data in the foreground website that you don't want to read from the database every time , therefore , It should be a cache , And the entrance that causes cache update comes from the backstage management of the website , The foreground and background are deployed in different websites , At this point, the cache update becomes a problem , The cache in the foreground cannot be associated with the operation in the background , To solve this problem , I introduced it WCF As middleware , So with the operation of the database , read , Writing comes from one entrance , That's it WCF,WCF The user tells you whether to fetch data from the cache , All cached data is also cached in WCF in ,OK, Good idea , Let's talk about the specific implementation steps .

One First of all, let's look at the structure diagram :

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAl8AAAFvCAIAAAD7Tzl6AAAgAElEQVR4nO29aWxj533/K7RIA/jCQQvkP7j/3CJImr4YtDVS3N4GDVLccZV4bdzJJHbiMeyO7cS5HdtFnHSSSeNFdryMnXg8thsv4xk7jyiR4uGiXSIlahdFaqdEidqofaNELRRJUSOKFHlfnBmJPDxcRB3yIQ+/H/wAwyJ5nh8Ph8+Hz563s7Ozs7MzNDR0FQAAAMhtGhoaWC3msf+5evXqX//1Xz8OAAAA5Cr//M///Nhjj4XZ8ZNPPjl37lwQAAAAyFWuXLny7LPPwo4AAADAIbAjAAAAwAV2BAAAALjAjgAAAAAX2BEAAADgAjsCAAAAXGBHAAAAgAvsCAAAAHCBHQEAAAAusCMAAADABXYEAAAAuMCOAAAAABfYEQAAAOACOwIAAABcYEcAAACAC+wIAAAAcIEdAQAAAC6wIwAAAMAFdgQAAAC4wI4AAAAAF9gRAAAA4AI7AgAAAFxgRwAAAIAL7AgAAABwgR0BEA+BQGBz02GdnDKbhxEI0cf4+MTGxobf70/Ftwl2BEAkzM7NNzQ2S2UMApFTUVffMDU1LfgXKq12DAQCi4tLQ0MWY2c34vjRbxqYm5vf3d1NxYcFsgun08ko1HJGZTYP2+1r2wDkABsbG6Nj4yp1uVTGTM/MCvudSp8dp2dm6+sbqf/KEF/U1NZNTFgDgYDgHxnIFgKBQF19A6NQb246aOcCQLrZ3d2tqtYoVaU7N24IeNk02XF7e5tRqBmFenRs3OVyC3vxnGV3d3dubr68oloqY+bm5mmnA6ixuemQyphhywjtRACgg822IpUx4+MTAl4zTXZsaGyWMyr8sE0FPp+vvKJapS73evdo5wLoMDIyKpUxDscW7UQAoAPbAOvrMwl4zXTYcXd3VypjBgbMAl4ThLK0bJPKmIWFRdqJADqYzcNSGYPedZDLlFdUNzQ2C3jBdNhxanpGKmNWVlYFvCYIxel0ykoU6FjLWXr7TFIZQzsLAGiiVJW2tukFvGA67Dg2Ni6VMdvb2wJeE3CQypheQXsVQBYBOwIAOwJ+YMdcRlg77u/ve73e3Zh4vV6fz4e+XJA5KJWwI+ADdsxlhLWj3++/ceOG1WrtiEJnZ+fw8LDNZvP5fPv7+0KVC8BxgB0BP7BjLpMKO3722WcPRuHcuXOvv/56Q0PD7u4uWpAgQ4AdAT+wYy6ThB39fv9eFLxe787OTnV19auvvvrRhx99+ulnofHMM8/cc889jz766Jtvvtnc3Ly0tOTz+VL0vgBIHNgR8AM75jJJ2HF3d3dzc3Nqasoahba2Nq1WuzC/sOVwhsZ7776Xn5+fn5//yCOPvPLKK/39/djLEGQCsCPgB3bMZZKzY29v7y9/+ctnolBQUFBYWDgzPeNyunjteO+99549e7a5uRl2BJkA7JidkB+fa/SmtATYMZdJzo4tLS2nT5/+j//4j0uX3gyN//rFf91zzz0PP/zw888/X1NTMzE+4XK6nFs37aip1bBPe/rpZ+6///76+vqcsaPlv899Okc7iUSZvX7uv7N2AbTlypWj5w47Zh3kXz6Xl5f3fz4CO4KUcRw7FhZKOH2nTY1NP/jBg3fffff3v//9559/vra2dtu97dxycZ5WUiLPHTtazn85Ly/v9juFtSN71XAEKGP2+qnb8/Lyvvx0Ftrx5i1JJnfYMRvpfOYrX4IdQeoQxI4up4s9FWh+bl6na9BoNDqdrru7e2ZmxuPxbG973O5tt8t9oMmcsmMwGJy9fupLAtuRvertIUKcvX7qdiG0Nnv91O1ZacdgMBi0nP8y7JgrwI4gtQhiR7fLvb29bbFYoi1z7O7utgxblhaXWEHCjgJd9faw5qLl/JcFaj7CjscEdkwDsCNILULZcXNz86233oq2zPGnP/3p22+/bTQY2RYk7CjQVWFHDrBjDgE7gtQioB1ffPHFxx577MMPPgxd43j146uPP/74d7/73ccff/x/3v8ffbvetmyTyxnYUYirhtpRGDfCjoKQ2XbsfOYrf3IwWh0xsSX00X/83a0zoQ9mwbQdPnz4aAKwF+AtMnY+UV/J2jFGPvzv5EjAjrmMsHb81S9/NT8Xtsxxxbb6/PPPsws5nnzyyXfffddqtSoYRWJ2vDlJJMqkk9BHD+vEg1kwbYcPH6nGDJnwwi0ydj5RX8naMUY+/O8kDmHJxLk9id68YJgdD95P6KvDXvjNb0bc7Nvv/HTu8ElRXxn5ec2FPiksg9vv/HTu8N5yb9DhI7ffee4B2DEOnc985U9CVEH+5XOhyiH/8rkQBYX/Hyubg//vfOYrf5KodMIuRP7lcyGvi51PvFfmRXuQc11OKQkDO+Yy6bTj/fff/5//+Z/DQ8MKRSJ25DRiOG0jy/kvh1S94f/H1rDhFW6ClWbYhSznvxzyutj5xHtlXrQHOddNvOkW2XYMMUfsZMPuCM/snlsPWc7/DceqoReK6Nq9+fC5B758qMjDS0X/vHiy4968sOuEv7HkPugwcsmOHP2EdU9GOiT0LxE9mYkqh+OtCANHzSf2K7n5kH/5XFhbNzy1iD8kBOyYy6Tajmv2dQWjYJc5PvHEk48//vjg4KBSqUzAjpF15pfC/BdeDYb+JaInM1HlxKp6Y+YT+5XcfML6/yI6AxPtHYyQU+gf4t286JNdD+4VXx6RP1Eicudt/cb+vOLZMerN4xt6hR0TIbTTMaw1yO3YDPFT5Dgft6EXvax4YuLNJ84rY9kxpDf2kCRWR8KOuUyq7cjZK4e1o1qt/rd/+zd2L/J4pYV2x8VqtYT6KXKcL7FBuUQkyptPnFfGquD5Fi4mtnIx8iaEOzlqsrFvBvtWrpz/Mm8aYa+NvFCUS8f5vJK2Y0RxsGNcIvtHvxRqR76xu2h25LNplBJjOi5aPsezoyA7BcCOuQwVO1qt1rq6urm5ubg9q+FG/FKoHfnG7qLZka92jlJiTMdFy+d4dkxyMk3kmwr5S6xk49sxL+/LT49EuWmhOo/Xtgy9ZozPC3ZMhqTsGOGb4/Sscvo9o8Kjqlt7wMXOJ9YrY9uRR9xJbTsHO+Yyx7HjpUtvtra0tba0jY6OHcmON27cYE9C3tvbi1ZKRIV6nJ5VTr9nVHgq91t7wMXOJ9Yrj9g5mPC2c7w9q+zbPOrNC908LvxXRqR//ybWfYwm3hT2rIZeNtn5trllR56RvLZn/vnRRm+Qbx4OZ1ZO+KScBNtnnFI7n/nKNw6NGzOf6K+MM+4Y+U6+kcSkHNgxpzmOHb/73e+yyxmvfnz1SHb0er2BW0QrhTvD4mavYdv1Bx74dC7I7UUMr8dnr5+6nTNXI8H2WeQY3N8cGjdmPtFfGWfcMfKdxPRPeK7c4cObGRzt5oVPvgkzDH/7NHofcPRmabzPizNpNTE7Rk4vwk5ycQkbkvvH313hblgadR1E5zNf+dIjb/84uQUd/AOLR80nfDptSBqHT+J/ZbLdrLBjLpOcHScnJ2UyGbmFXq8/kh1jNBlDCRuSuzkUlhfhA54+vtnrp75053//d3ILOvjH6o6aT/j0zJA0Dp/E/8oENR53n9V4yfJ3kB4mcmtiTthTIgd0b/2FI03e9xH18+LcgJuf3JefHknk5oX9TZXcprY5ZcekScfq+0wDdsxlkrCj1+u9EUEq7Jg0kZU4EITIHmqh9iCgC+wYl8O2WsrPxcgkYMdcJgk77kewt7eXOXYMXRye9dV25sFptIrjHsOOxyFsqxsuSe5RkynAjrlMEnaMxOfzsXZ84oknioqKlUoVb/zi579IT9sxGhHdf6Fk2u5pWZVslgM7An5gx1xGQDu+/PLLd8fjxz/+MUU7AsAL7Aj4gR1zGaHs6Ha7e3p6auPR2tq6uroKO4KMAnYE/MCOuYwgdvT7/ZHzdGLg8/kESR4AQYAdAT+wYy4jiB0ByGqy0o5zc/NSGWO3rwl4TRBKIBCQypg+2DFXgR0ByEo7ulxuqYwZGRkT8JoglI2NDamMmZ6ZpZ0IoAPsCEBW2jEYDJZXVJeVV3m9GMZPCS2t7bISBfquc5bRsXGpjHG53LQTAYAajELdrjcIeME02XFldVUqYzRandPpFPbKOY7Xu2cwdEpljNk8TDsXQA27fQ2dByCX2dx0CN5DmSY7BoNB6+QUo1BLZUxZeVVDYzPi+FFTo5XKGKmM6entj7ETNBA9Pp+vrLyqvKIa3TMgN2H7zzY3HQJeM312DAaD29vb/aaBxqaW8orqTA51aUWxVK5Sl6etxLLyKqmMKZbKZSWKxMvVaHU9vf0rq6up+LBAdrG4uCSVMVXVmpXVVfxUArnD5qajobFZKmP6TQPCXjmtdswWbDYbIcRqtaazULfbPTQ0VF1dTQipr68fHx/3enNnm1ggANMzs0pVqVTGyBkV9Z+Y6Y+y8iq2AZ2DpedssP2RshJFv2lA8B+FsCMPVOzI4na7h4eH4UiQHB6PZ3Rs3GDopN7tn7bQNTSVV1TJSphiaQmjUNXrGqmkoVCqS+QK6ncj16JdbxgZGRO2Q/UA2JEHinZkgSMBiMvq6mp3d7dCoZBIJG1tbXNzNM+Z0Gq1KpWKYgJAcGBHHqjbkQWOBIAXu92eOV5kgR3FB+zIQ4bYkQWOBOCADPQiC+woPmBHHjLKjixwJMhxMtaLLLCj+IAdechAO7LAkSAHyXAvssCO4gN25CFj7cgCR4IcgfWiUqnMZC+ywI7iA3bkIcPtyLK9vQ1HArGSRV5kgR3FB+zIQ1bYkQWOBCLDbrf39PRkkRdZYEfxATvykEV2ZIEjgQjIUi+ywI7iA3bkIevsyAJHgiwlq73IAjuKD9iRhyy1IwscCbIIEXiRBXYUH7AjD1ltRxY4EmQ4a2tr4vAiC+woPmBHHkRgRxY4EmQgIvMiC+woPmBHHkRjRxY4EmQIovQiC+woPmBHHkRmRxbWkTU1NXAkSD8i9iIL7Cg+YEceRGlHFjgSpBnWiyqVSqxeZIEdxQfsyIOI7cgCR4I0kCNeZIEdxQfsyIPo7cgCR4IUkVNeZIEdxQfsyEOO2JEFjgQCsra21tvbm1NeZIEdxQfsyENO2ZEFjgTHJGe9yAI7ig/YkYcctCMLHAmSIMe9yAI7ig/YkYectSPL9va2xWKBI0Fc1tfX4UUW2FF8wI485LgdWeBIEAN4kQPsKD5gRx5gxwPgSMABXuQFdhQfsCMPsCMHOBIE4cWYwI7iA3bkAXbkBY7MWeDFuMCO4gN25AF2jAEcmVOwXlSr1fBibGBH8QE78gA7xgWOFD3w4pGAHcUH7MgD7JggHo8HjhQf6+vrfX198OKRgB3FB+zIA+x4JOBI0QAvJg3sKD5gRx5gxySAI7MaePGYwI7iA3bkAXZMGjgy64AXBQF2FB+wIw+w4zGBI7OCjY0NeFEoYEfxATvyADsKAhyZscCLggM7ig/YkQfYUUCO6ki73b66upq29ESGxWIJBAIxngAvpgjYUXzAjjzAjoLDOrK2tjauI0dHR+Vy+dbWVpozFAGzs7OEEIfDwfsovJhSYEfxATvyADumiEQc2d7eTgjRarV2u51KklnK6OioVColhMzPz3MeYr1YWloKL6YO2FF8wI48wI4pJbYjtVotIYQQUllZ6fP5KOaZRWxtbbFqJIQMDg4e/B1eTBuwo/iAHXmAHdMAryM3NzdlMhm5RXt7u8fjoZ1pprOwsFBeXn5w01pbW4PwYtqBHcUH7MgD7Jg2/H6/xWJhGIZtLBqNRhJOV1cXWpAxWFlZYX9hHKBQKPr7+w9uKbyYHmBH8QE78gA7pplQR0bS19dHO8EMJRAIaDQa3psGL6YZ2FF8wI48wI5UGBwc5K3oCwsLh4eHaWeXcbjd7tbWVt47plKpbDYb7QRzC9hRfMCOPMCO6cftdoeOOHKQSCSzs7O0c8wsuru7o90uQkhNTU3shY9AWGBH8QE78gA7ppn5+fnKysoYdT0hRK1Wz8zM0M40U+jt7Y19uwgher1+e3ubdqa5AuwoPmBHHmDHdLKwsFBdXR23rieEVFZWLi0t0c6XPmazOZHbRQjp6OjApN/0ADuKD9iRB9gxnVitVr1er9PpampqVCpVUVFRjOpepVLt7OzQTpkmq6urEokkxi2SyWQqlUqr1TY1Nen1emyqkB5gR/EBO/KQ+XZcWFjs6uqprdWWl1WKMspKK0rV5WpVmUpZqlSolYxKIVcycqW8RMHIldTTo3hbSmQMexMUcqVSoVYq1CplqVpVVqouLyutoJ5hiqKxqaXfNODI4P0FYUfxATvykMl29Pl87XqDVMbIpPLaPxY2fPpHBEL0UVYkk8oYWYliaMhC+yvID+woPmBHHjLZjsbObqmM6fnwY98rrwQLChCIHAnn66/XfUakMmZqapr2t5AH2FF8wI48ZKwdV1ZXpTKm+6OPqVdVCET6w//yy1WFxUqlOgO3T4IdxQfsyEPG2nHQPCSVMbu//S31egqBoBLWd65IZYzdvkb7u8gFdhQfsCMPGWvHltb2yiIp9RoKgaAVm29cksqY0bFx2t9FLrCj+IAdechYO9Zq6nTXP6NeQyEQtIK14xjsCFIP7MgD7IhAZGbAjiBtwI485IgdA2+8EXjnnThx+XLg0qXgK68EX36Zes2IQMCOIG3AjjzkiB191dU7sdnevuFw7DU0BN57L/jqq9RrRgQCdgRpA3bkIXfsuLW1VVtb+0kUpMXFOq12trnZp9Xuf/BB4PXXqVeOiBwP2BGkDdiRBzHZMXDlSrTYa2y02+2vvvrqgw8+eDacH/3o4fvuu++hhx76zW9+U19bu26xeNXq/fffp145InI8YEeQNmBHHsRkx93x8WhxY3nZ4XBUV1fLZCXt7XpDh/EgGhsan3766Xvuuef73/9+wUsvVSqVqyaTr7KSeuWIyPGAHUHagB15EJMdd3Z2RkdHK6JQXl4uk8l0uoaN9U3nlnPLcTMWF5YuXryYn5+fn5//yCOPXHrjjemJib3mZuqVIyLHA3YEaQN25EFkdpRKpfn5+d/m45577vn5z3/OyJmN9Q3nlivUjr/+9a8PnvbUU0+NjIzstbVRrxwROR6wI0gbsCMP4rPj/ffff+XKlfKyitAoeKngO9/5zg9+8INf/epXCkZhsVhcTjdrx7W1dX27nn3az3/+i9yy44X8c6fO008jY/OhGrAjSBuwIw/is+Pp06cbdA2s+ZxbLpfT5XK6tBrtc88999xzz73yyiuEkMHBwW33tsvpdm65QtuRl9++nDN2vFBwIi8v70//TlAbOc6e/GIee9lHC07k5eXl/dmJU23sH//0RMH54+Vz8eyZ2/JY/uzEKXPBxbbH06FSx9mTXxT6RiUSsCNIG7AjD+K2o9u97fF4PB7P+vr63Nzc3NzcwsLCysrK1tbWzs6Ox+PZ3va4Xe4DQeaSHQuCBRerTt4ueKW/eurEF04+GiwoCF44dcfnT9bd/ONfnnk07msvFJyILqELp+7I+/zBRVgN/9mJU+bU3yjYkQPsKD5gRx5Eb8fFxUWlUnktCgpG0dLcMj83zwoSdjx+OM6e/BIrrYtnz9zOthcvVv3tV2M2HNmIYceLVSdvuyndg7h49kdfTYcdaQXsCNIG7MiD6O1oNpuffPLJ7373u5xljg89+NDdd9/96KOPvvbaa4YOw+rK6pbDefky7HjccJw9+UW2yXjx7Jnb2NbehYK/vNmIjBmx7Sh8qhkesCNIG7AjDzlixxdffCl0jaOhw6hSqh955JH77rvv4Ycffuutt3Q6nWPT8c4778COx40Lp+5ghxgvnLqD7ZBMtJEXq2d19dSJvM8noljxBOwI0gbsyIPdbieEjI2N0U6Ei7B2fPfd9w6m3rDR32d64okn8vPz77rrrnPnzn388ccbGxtXrlxJyI4h00N4JpKEPnpYoR/MOnm86uRtEY8mEBdO3ZEXOicl4XxuFs0+GDo1hrVjjHwuHj4UMuYXJ241GR1nv/6jvzzxhZOPRsxEjZYPa8eo+ayeOhHrpvHe9sM/3vT0zf899HdoGrcSu5XVrUlG0aYUxbw//P8MYEeQicCOPKysrORC25HXjk8++WN2jWN+fv4LL7ywvr6ekB0POwxvSSu06jxoMB1U6IePspXpwaMXq07elmi9GXbZCwUn8g4H4WLnU3Ch4MShTcNbYJx8wi/LGerjlBIrbknub7/6TP7JL5041Xb26888ynn0PF+2nGmrF6tO3hYx7+aWwDj3LTy9w97d0EK//rdsWY6zJ794IDPO+7p49sxfRHwi3FsacvduleI4e/KLoc+Jk09221Gj0ZSVldHOAggJ7MjD6uoqIWRiYoJ2IlxSbcfFhcUGXUN5WYVczvzkxz85gh05deXh3JMIo3D/EtGTmahyON4KE17MfLgdkhG2DsvncLppQdiMU55HYwV72UcL/vLkZ2dPfvHzJ6/kf/0gn8M5OwWROXDeZjQt3TLTn4a9zfDcLhScCL2xFwpORG3Ahb7WcfZv8yO7dvnS4OgwzLjx80koMtaONTU1FRUVtLMAQgI78sD2rOagHTk7ybF2VCgUv/vd76anp+OPO4b2mx3UkhfPnrmN27EZ4qfIcb6YaxjCyopXt/LmwzvVk99M3Dr9ZjdmOAmuoFg9deILX/36j756ynzh1B2f/+q5r38jvLXK5VahEXcj5htfPXXiVj4hXbWHhF4q3lqRP405t5bPjiGlR0bcfLLbjlVVVVVVVbSzAEICO/KwtrZGCBkfz7hvIBU72u32paUll8sVr2c13Ii3h9qRW5uH9Krxth2PbccY+RzPjkmvJmSH675w8lE2t5DrxM4nhh0vVh0qNvLGxv2REfsJt9qsF059kze3ZOwowPrIjLVjRUVFTU0N7SyAkMCOPKyvr4vMjvfee+9LL7308Ucff/zRx/39/Ueyo3doyFdf76uv3yckulHC6/fj9KyGr3A/UuW+erO7MnY+fJX44RyZWHbkDqQVHGWbt8P3xe0sjZx66jgclYx4m6GtuojptSFvjWeEcjWkOzeurljRXom2ZUG0ntWIsc9z3zj4oGPnk1BkrB3Lyso0Gg3tLICQwI48bGxsiGnOanl5+SMhVFdXH8mOCRxcxZ1Kc3Mk7/FbixbCZ+WEOyZ8tIzbrooVnGEtx9mTf3Vo3Jj5XDx75rbwKTx/ETorJ/q4I2d0k3e6SrQI3QeAp7mcFzq6+X8f3gHO6GCYWVdPnQjrnOT8sIi47X/FHfZLYI+6aBNn+Ic/w+9PwYWC/x11clZEPtltR7VaXVdXRzsLICSwIw+bm5tisuP8/Hx3CAsLC0LbsYAzqvSFk/dwNwiNOpX/YtXJ2//uG/kHjyY2ySVUkLzjf0fJhztB9CCNwxFBTkdoxAsTicPl/3x7yIUkzJlZyk7k4Y5Hsm//6888mugKijCphw90Rvs5snrqf0fqM/Se8xUaeucTy0cUdlQqlTqdjnYWQEhgRx4cDgchZHR0lHYiXGo1dQ3X/3ik2mSvq4sTuymxY9KRixu+IJKOjLUjwzCNjY20swBCAjvy4HQ6RWPHyNhrb79pxyvvOja3eGNhfvHir9Jgx8N2Rnr2zkZke2SsHeVyeXNzM+0sgJDAjjy4XC5CyMjICO1EuAhrx3Pnzr3621d546WXXvrhD3+YlrZjtOBf58DX95gBEdFXGcqR+ooRsSNj7SiTydra2mhnAYQEduRhZ2eHEGIymWgnwkUoO1qt1kuXLj0Xj2vXrjkcDkp2RCB4ImPtWFxcrNfraWcBhAR25GF7e5sQMjQ0RDsRLkLZ0eVyLS4uzsbDZrN5PB7YEZE5kbF2lEgkBoOBdhZASGBHHti248DAAO1EuAhiR39h4Z5Ol3jsX71KvU5EINjITDvu7+8TQjo7O2knAoQEduTB6/USQvr6+mgnwkUQOyIQ2RuZaUefz0cI6e7upp0IEBLYkYeM/bcOOyJyPDLTjuzv6d7eXtqJACGBHXnI2H6Shsbmuj8WUq+hEAhasf3aa1IZYzYP0/4uhrG7u0sI6e/vp50IEBLYkZ+ioqKOjg7aWXAxGruqiksCtGsoBIJWTL1zRSpjFhYWaX8Xw2BnKgwODtJOBAgJ7MiPVCrNwNVL4+MTUhmz9LvfU6+kEAgq0fPhx1IZ43K5aX8Xw8jYWe7gOMCO/JSUlGTgzhde716ZurysuGT7tdeo11MIRJpj4fdvy2RMS2s77S8iF3b/EIvFQjsRICSwIz8MwzQ0NNDOgoelZZusRMFI5QN/+HDh92+vvPUWAiH6sL5zRX/1mlTGlKrLPR4P7W8hl62trczcexIcB9iRH5VKpdVqaWfBz+amo7ZWK5UxCEROhb7DuLu7S/v7xwN7qk8GnggLjgPsyE95eXltbS3tLGLh8XgWFhanpqYRqYjhYUtJibyurj4NZVksI2p1qURSpNXWTUxYqb/3DAy7fc3n89H+zkXF7XajZ1V8wI781NTUVFZW0s4CUGNiYoIQMjU1lZ7iPB5PX19fcXFxXV3d3NxcegoFQrG4uEgIwQcnMmBHfurq6kpLS2lnAajR3t6uUqm2t7fTWajVaq2qqlIoFGazOZObSoDD9PQ0IcRms9FOBAgJ7MhPU1OTQqGgnQWgw/b2tkqlam+nMDdydXW1tbWVEKLX69fX19OfAEiCsbExQgg+L5EBO/LT3t4uk8loZwHoMDU1RQiZmJigUvru7q7JZCopKamtrZ2enqaSAzgSZrOZEOJyuWgnAoQEduTHaDRKJJL9/X3aiQAKdHR0MAzjdDop5jA9PV1bW1tSUmIymTJzoiY4oLe3lxCCj0lkwI78sP/cvV4v7URAutnZ2SktLW1paaGdSHB9fV2v1xNCWltbV1dXaacDomIwGIqLiwOBAO1EgJDAjvwMDg4SQtI8KQNkAjMzM5mzstvn85nNZoVCUVlZabVaaacD+GlpacE0BfEBO/JjsVgIIVtbW7QTAemms7OzpKRkc3OTdiKHzGxDiWIAACAASURBVM3NabXa4uLi3t5e/GLLQOrr68vLy2lnAQQGduQHU7Rzk93d3YqKiqamJtqJcHE4HEajkRDS1NS0vLxMOx0QRnV1dYZvHgKSAHbkZ3Z2lhCytLREOxGQVubm5jJ205P9/X2LxaJWq8vKysbGxminAw4pLS3NzG2ZwXGAHflZXl4mhMzMzNBOBKSV7u7u4uLiTF64tri4qNPpCgsLu7q66M6qBQfI5fLW1lbaWQCBgR35WV9fJ4TgF3pO4fP5qqqqdDod7UTi4HK5uru7CwsLdTrdwsIC7XRyHZ/PJ5FIjEYj7USAwMCO/LAHtuGw75yC3S3TbDbTTiQhxsbGysvLVSrV8PAwFuZSxOPxEEL6+vpoJwIEBnbkZ3d3lxDS09NDOxGQPnp7ewsLC7NoZeHy8nJTUxMhxGAwZNQk25zC4XAQQoaGhmgnAgQGduQnEAhIpVK9Xk87EZAm9vf3a2pqMvZQz2h4PJ7e3t7i4mKtVjs7O0s7nVxkdXUVozCiBHaMilKpbGxspJ0FSBPsPCyTyUQ7kWSwWq2VlZUMwwwODmKDpzSzsLBACMGOuOIDdoxKRUWFRqOhnQVIEyaTiRCSvUsJDw73aG9vX1tbo51ODsHuWb+4uEg7ESAwsGNUtFqtUqmknQVIE1qttqamJquntxwc7lFdXZ22c5vB6OgoISSLhqtBgsCOUWlubmYYhnYWIB2srKwQQnp7e2knIgDT09M1NTUymay/v39nZ4d2OuKH3ZPZ4XDQTgQIDOwYlc7OTkLIjRs3aCcCUg5bwYlm7eDB4R4tLS0rKyu00xE5bJ+82+2mnQgQGNgxKvhJmDvU19dXVVXt7e3RTkQw9vb22MM9KioqxsfHaacjZlpbW0tKSvx+P+1EgMDAjlGZmJjARuS5wNraWlFRUXd3N+1EhMdut6tUKkJId3c3Th9MERqNpqKignYWQHhgx6jMz89jq9VcYGhoiBAyNzdHO5GUcHC4R2NjY/bOyM1k1Gp15u8+CJIAdozK2toaIWRkZIR2IiC1NDQ0lJeX7+7u0k4khVgsFolEIpPJRDO2miHs7u4WFRV1dHTQTgQID+wYle3tbUJIf38/7URACtnY2JBKpbmwhfTBEcp9fX2YyyoUm5ub2buJBIgN7BiV/f19mUxmMBhoJwJSyMjISO5sdLK5udnR0cHOZcX6PEFgd67HvCdRAjvGAtvliJ7m5ma1Wu3xeGgnkiZ8Pt/g4KBcLq+qqpqcnKSdTtbDzt1Df7UogR1jwU70p50FSBUOh0Mul+fgXvPLy8sMw0gkEpzRdkzYxY44IEWUwI6x6OjokMvlWb27GIjB2NgYIcRqtdJOhAI7OztarZbtZfX5fLTTyVY6OjqKiorEPaUrZ4EdY8H+MHS5XLQTAQLgcDg451e0trYqFIqc/Xxv3LjR29srkUgaGhqw2CM5dDqdWq2mnQVICbBjLNhBBezFJQ6sVqtKpTqYjeJyuRQKRWtrK92sqDMyMqJSqSoqKjAMmQSYmiBiYMdYLC0tEUJw3IE4YE9wlEgkJpPJ7/dbrVbMNmSZnZ2tra0tKSkxm83YES1x/H5/SUkJfmCJFdgxFg6HgxBiNptpJwIEwGazkVswDKPRaNBtfoDdbm9paSGEdHZ24p4kiMvlIoT09PTQTgSkBNgxFnt7e1KptLOzk3YiQADcbjeJgGEYbQi5OUOHJRAIsCd71NTUYLuARGAPPrNYLLQTASkBdoxDRUVFdXU17SyAALA9ATHo7OxEvyK751xpaenW1hbtXDKdqakpbMUsYmDHODQ1NZWVldHOAgiAx+OJocbm5mYc0ccyMTFRWlpaWVmZI1sIJQ27fz12HRIrsGMcenp6CgsLUW+KAL/fX1RUxKvG2tpau91OO8EMYnZ2trq6WqVSjY2N0c4lc+nq6sK5xyIGdowDu2B8aWmJdiJAABiGiVSjWq0W6/FVx8Fms+l0OqlUajabcTYkL83NzdgtRMTAjnFgF3WMjo7STgQIQFlZGUeNUqkUzaNo7O7usjN7u7q6IMhINBoNwzC0swCpAnaMAztpu6uri3YiQABqamo4dhwYGKCdVEbj9/vZlR4tLS0QZCi7u7tyuRyLHUUM7BgftVrd0NBAOwsgADqdLlSNRqMRW4zGZW9vr6enhxCi1+uxFPIAu92OX1fiBnaMT2Njo1QqpZ0FEIC2trYDNTY1NaGuTxC/39/f308IaW1tdTgctNPJCCYnJ7GcQ9zAjvHp7u4mOKRGFHR2drJqrKmpwUT8ozIwMCCRSJqamtbX12nnQp++vj5CyMbGBu1EQKqAHePDbsiJtV8igG0AqVSq2dlZ2rlkJUNDQ1KpVKfT4bdFc3OzSqXC9hEiBnaMz9raGiGkv7+fdiLguLA/dLBx7nGYmJiQSCRlZWU5vttceXl5fX097SxACoEd4+P3+9VqdVNTE+1EwggEApubjpXVVUTiMWg2NzQ2Uk8jE2JjYyPpds/s7GyOC9LlckkkEkxlFzewY0I0NTWVlpZmyLJfj8fT0qYvYVRSGYNAJB2yEkVDY7PT6UziH+Ho6GhJSYlOp1tbWxP8X3jms7i4iGXQogd2TAh2vCoTRuA3NjYUytJimeLjSuOV+vHLumkEIom4Uj/xUXWPVK4qYVSLi8lsBTUyMiKTyRoaGjLhe5FmLBYLIWR5eZl2IiCFwI4JwR6cS31TFb/fX1apKWZKL7WuF3QFEYhjxuvtziJVtUJVvru7m8Q/SIvFIpVKm5qacm1Gt9FoLC4u9ng8tBMBKQR2TAin05kJBz1aJ6ekMubtxjnqtSpCNPFm65pUxgwNJXlI4fDwcHFxcUtLS06deFVXV1dVVUU7C5BaYMdE0Wq1NTU1dHMwGruK1JqCrgD1KhUhoggUqWuNnclPMBkaGioqKmpvb8+RtpTP51MoFG1tbbQTAakFdkyUnp4eiURCtwepobH5s1Id7coUIba4XtZcWXWsX36Dg4PsXqxC/VPPZNbX17GHXC4AOybK9PQ0IcRqtVLMoVZTd62siXplihBZXCtrqtXUHedf5v7+PrsXa19fn1D/2jMWtirAHnKiB3ZMFHbo0Wg0UswBdkSkIo5vx2AweOPGjY6OjlzYbMFkMmFryVwAdjwCNTU1dI9zE9aOnwzt62b3YkT9jE8z7fvUsv9mb+CVbvqVOCJFIYgdg8Ggy+Vqbm6WSqXiXgjY2tqKPeRyAdjxCLCrHldWVmglIKwdq6d829vbNpttNgpz8wvzy6sNU9ufDO1fgiDFG0LZMRgM7uzslJWVSSSSxcVFQS6YgVRVVel0OtpZgJQDOx4BdoOMwcFBWgkIbseNjY2rV68+F4WCl1/+7I+kpWe4e8n76fD+m72YKyvOENCOwWDQ5XIxDCOTyUR5QJjf7y8qKtLr9bQTASkHdjwCPp+P7s/GJOyonPBHi75l7/r6+ocffvhf//Vfr7zy21d/++pBvPTSSz/84Q+/973vPf3004WS4g7TSL3V/Zlln3o9jkhFCGvHYDBos9kkEkllZaX4Dpdmj3XEiT25AOx4NLq7u4uLi2mdb5eEHXdi4nQ6jUajwWBYX9twbG4dxML84sVfXczPz8/Pzz9//vy169cnZxea5nzU63FEKkJwOwaDwYmJCUJIe3u7sJelTldXl1QqTW5zWpBdwI5HY25ujhAyMjJCpfTk7KjX69+IwqVLl95///3q6uqNjU3nlmvL4WRjcWHp4sWbdjxz5sx//+Y3Y+PWlvk96vU4IhWRCjsGg0GDwUAIGR4eFvzKFKmtrdVqtbSzAOkAdjwySqWS1qY5ydlRKpXedddd5849/mw4Z8+evfvuu3/6059+8MEHw0PDtmXbgSBtyyt/+MMH7NMefPDBp556amRkpC1H7Kh9/es/MdNPI42RIjsGAgGNRiORSGw2m+AXp4LD4SgqKurp6aGdCEgHsOOR6e3tLS4upnI2etJ2fOCBB5RK1fjYRGh88MGH3/72t++9994f//jH7737Xk93j9vldm45txzOzQ3H7Mwc+7RXf/tqzthx9dTX8vLy/uyEsHZsqDr553mh/OnXCs7Tf7OHkSI7BoPBnZ0dpVLJMMyOKE6CZE/PxqBjjgA7Hpnl5WWJRNLf35/+opO24+nTpxt0DWy70OV0uV1ut8vd09N77dq1a9euyWQynU43NTXl2fa43dsul9vldLGa3HI4L799OWfsGCzocpy980sC27GLFeSBdFdPfS0v73N/d0pG/c3ejNTZMRgMrq+vSyQScSyB6OzsxKBj7gA7JkNjY2N1dXVyh/4cB0Hs6HZvu1yupaWluSgsLiyu2FY2NzZhR8EizI5BVpBHakFevHzuG++n6l2n1I7BYHBgYIAQMjQ0lLoi0kNNTQ0GHXMH2DEZRkdHCSFTU1NpLlcoO1qt1jfffDPaMsdLly7J5fKJCavL6YIdhQmuHYMXL5+57QjNR8fZO//qZNbacXd3t6WlRalUzs/Pp66UVLO5uSmRSDDomDvAjsng9/vlcnn6f0UKZUez2fzkk0+eO3fut+H88pe/euCBf3vooYcuXLhQVlo2Njrm2Ny6fPkd2PG4EWHHAm3BicQHOLUFJ/K+kL12DAaDKysrFRUV9fX12btFAAYdcw3YMUl6e3uLiooWFhbSWaiwdnz3yruhaxwdm1t9vf1PPPFEfn7+Pffc84tf/ELBKDY3Nt95JzE7hs09iaj3Qx/9P848evPvB7Ng2s7e+cWIRxPURpSpLrHzuVl0Xl4eZwiQtWOMfByHDyVurHh2vHj5zG15fPmEvEH+QsOekKRB02DH4K3VUAaDIdUFpQij0SiVSrPX7uCowI5JYrfbGYbp6OhIZ6EC2/Hd9w4WOLLR32di7fid73znwQcfvHz58sb6xpUrV+LbsaHq5J+HVM3aghPcKv7QBBd+ckeIAFjZHDzqOHvnFxMVZNhlV099Le/zd9YllE/4sN+Fn9wRUiInn/DLdjnO3vnFqKUcyY4hf7l4+cxtIW/5wk/uiBiSXD31Nb6Cwt8X5zqZZsdgMGg0Ggkhaf5NKRTV1dV1dem4SyBDgB2Tp7OzUyaTLS8vp63EVNtxxDL62quvPfvss+fPnz99+vQLL7ywvr6ekB05+mmoOvm/wvwXIhjOXyJ6MhNVDsdb4fNcYuXD0WGkrcPyufCTOw5L0RacCNdP2KNHsmOI2jk6vHj5zO2J2ZGrw4j0Ms2ODoejpqZGo9Fk3bTPjY2NwsLC3t5e2omA9AE7Jo/L5ZJIJE1NTWkrMdV2XLOvT01Oj49N9PeZnnvuuSPY8dABEd2DkWII81PkON/qqa8lMCCXiER58+GxdWjEsuOFn9zB7eZMcPEivx3D8g/tXE207Xh4qche60y0Y/DWDnNZpxk2bZx4nFPAjseivb2dEJK2nQFSbUfOTnKsHdva2lQq1fLycrye1XAj/q9QO3Jr9pBGD2/b8dh2jJHP8eyY5EL+iDcV2mBlvXhw5cTbjje9eGDEjG87snR0dMhkstnZ2bSVeHwMBoNYTx0B0YAdj8XOzo5MJquurg4EAmko7jh75ajVpZPWyUnr5Jp97Uh23HTfWHHeWHHeqJ+Jtgt5hG+O07Oa6PxMnibmhfPnTsni5sMnucPd42LZkWcZRoLbzsVY7xih+Xh2dDz688/O896BLLGj3W4vLy/X6XQejydthR6TqqoqDDrmGrDjcbFYLISQsbGxNJR1nH1Wn3jiyZ/97Gc/+9nPGhoaj2RH/cLeZ5b9zyz77w5EO9+RO5XmZsPoatXf/j8F57v45mdyZuWEdcMmukz+4uUzt4V49OLlM39xaNyY+TRUnfzz8Ck8/1forJzo446c0c2wFyZsx8h27Z/zDKA+fvlHXw2z6a2XH/qYs6XArXetLfjLRIZC6dkxeGt1hMlkSmehSePxeLJ6ti1IDtjxuAQCgYqKCplMloadJJOzY3t7+2shdHR0HMmOlZOJHFwVskAiL+/zd17hbljKv6Ljlo0eev3g0YQmuYQJknes7ij5HKr68FWfv7MudPEGV0KRSy/iqDHmUCVnVcbPC05EXPzwnYbePc6qlZu38cjrOtJvx2AwqNVqi4qKsqL5yO71s7S0RDsRkFZgRwGw2+0SiUSj0aS6fzU5O3oiSIEdk47UrL5HHCWo2HF2draoqKirqyvN5SaBVqutra3d39+nnQhIK7CjMAwODhJC+vr6UlpKrabuelnzkSo+9YSfE6P23Yyx42FbLdOOrcipoGLHYDDY0dFRUlKyuLiY/qITx2azEUKonDoA6AI7CkZTU1OqN19Nwo6R0b6wx9rxxRdfMnQYeaOxofHpp59OS9sxWoRuSRNBUnNPUhgRfaehHKmvmErQsqPNZmMYpq2tLf1FJ47JZCKEpHNZM8gQYEfB8Hq9KpVKIpGkbqq6sHZ84IEHHonCww8/fN9991G1IyJ9QcuOwWCwp6eHyob+iaPVatMwaAIyENhRSGw2m1arZRgmRVNYhbLj4uKiQqH4JB7sniawo+iDoh29Xq9MJqusrKRSelzYbtVsmVsLhAV2FJitrS2GYSQSSSoEKZQdd44C7Cj6oGjHYDDY39+fsdvQsN2qNpuNdiKAArCj8GxtbZWVlRFCWltbfT6fgFcWxI5v9gbeMR0hXu+hX30jUhp07bi+vq5UKltbW2klEAOtVovjjnMW2DEl+Hw+g8FACCktLRVwPF8QOyIQnKBrx2Aw2NXVVVRUlGmTV9lu1YGBAdqJADrAjilkenpaJpMRQhobG7e2to5/QdgRkYqgbkebzSaTyTJtMxqTyVRYWLiyskI7EUAH2DG1eL3e7u5uiUQikUj0ev0xdzFubm4tVGmpV6YIkcX1suaaGsr9h+3t7RKJJKO2+dZqtdhbNZeBHdOBy+ViV0OyjtzY2EjuOv2mAamMeaUT02QQQoZUUW4wdAr7b/6orK+vZ9TJVmy36uDgIO1EADVgx/SxsbGh1+slEgkhpKmpKYnxyMXFJamM+R/tEPX6FCGaeKd+UipjJiYmU/FvPnH29/e1Wm1NTc3e3h7dTFhMJpNEIknb4XQgA4Ed043L5TIYDEVFRYSQioqKsbExv9+f+MtbWtulMsW7dWMvd0U7MQOBSDQu66aL5eoaTV0mrHY3m82EkAw591Gj0SiVStpZAJrAjnTY3d0dHBxkGIYQIpPJent7E5y2s3Pjhra+QSpjJIqqqxX6j6q7EYgk4mqloVBVI5UxldUap9OZ6n/wibC+vi6XyzNhbo7D4cAmAAB2pEkgEJiamqquriaEEEJqamqsVmvcpmQgEBgdG29salGoSqUyBoFIIuQKdb2u0WwePlLXRappa2tTqVTUbd3W1lZeXk49DUAX2DEj2NjY6OrqYpd/SKVSo9Fot9tpJwUSwuv1WiyWyspKiURiMBgwUnUcFhcXCSEWi4ViDjabTSqVpvq8HZD5wI4ZxI0bNyYnJ9va2kpKSggh1dXVfX19OBwgK9jY2Oju7pbJZKWlpYODg9vb27Qzykp2dnbUajXdUzu6u7tLSkrwKwfAjpmI2+0eHBxkt6Nje1wtFsvu7i7tvEAc5ufn2aU7dXV1k5OUZ4FmKWznqsfjoVL65uamSqXS6/VUSgcZBeyY0dhstv7+/pqaGrbHtbGx0WKxJL1cEqSBvb29kZGRqqqqwsJCvV6PnVaOytjYGMVNydljzOfm5qiUDjIK2DELCAQCy8vL7e3tUqmU3VKgsbFxampK2C3OgYA4HI6enh65XK5SqQYGBtxuN+2MsoaNjY3i4uLu7u70F72zs1NdXd3Y2JgJ61sAdWDHbMLv98/NzR1osqioqKmpCZrMWBYWFlpaWgghWq3WarWizk2Q+vr66urq/f39NJfLNlvHx8fTXC7ITGDHrGR3d3d2drazs7O8vJxdMdnY2Dg8PLy2tkY7NRCGz+cbGxtjF+20t7djjlUisNsCpHkEYX9/X6fTVVdX7+zspLNckLHAjtnN7u7u3Nxcd3d3VVUV25qsr68fHBzEcFdGsbW11dfXxzCMUqns7+/PqL22M5DZ2VlCiNVqTX+h2FgVHAA7igR2bNJoNCqVSnama3V1tclkWl9fp50auMnS0lJrayshpLa2dnx8PP09h9mC0+ksKirq6elJZ6Ht7e0qlWpzczOdhYJMBnYUIaurq729vaWlpawmlUqlwWCYm5vD8CR19vf3x8fHa2trCSGtra1LS0u0M8pQqqqqdDpd2opjdwDo6upKW4kg84EdxczW1pbZbNZoNKwmi4qKdDrd2NgYrcVkgMXpdPb39yuVSoZh+vr6BDkZW2To9XqFQuH1etNTnMlkIoRgBwAQCuyYEzidTqvV2tHREbrDQE9Pz+zsLOYg0IJdpcN+Fkc9qkX0TExMpE1XXq9XJpNVVlamoSyQRcCOuYXf719YWAgdnpTL5e3t7dPT02n7nQ4OCAQCVquVbdy3tLQsLCzQzihTYA9DnpiYSENZHR0dJSUli4uLaSgLZBGwY+7icDgGBwc1Gg17ILNEItFqtWaz2eFw0E4tt3C73SaTSaVSyeXynp4e3P/grTOkzGZzqguamZkpKiqisvkAyHBgRxB0u93T09OdnZ2VlZVsg7KsrEyv14+Pj2MKX9qw2Wx6vb6wsLCqqmp0dHRvb492RjTxer1SqTTVZz3u7e01NjaWlZVhajeIBHYEhwQCgdXVVZPJdHDkJNugHBwcRPWRHiYnJ+vq6gghzc3N8/PztNOhSVlZWaqnrY6OjmKNI4gG7Aj42d3dnZqaam9vl8vlrCkZhtHr9dPT0zgtJKVsb28PDg6q1WqZTNbd3Z2zm87X19eXl5en7voul6umpkaj0WAXXMAL7AjisL+/v7KyMjQ01NzcrFAoCCGFhYW1tbU9PT0zMzOoWVLE6uqqwWCQSCSVlZUWiyUH50x1dXURQlL3xtlVHNhVFUQDdgRHwOv1Tk9PG41GlUrFNijZc7VGR0exaC8VTE9P19fXE0IaGxtz7Vilzs7O1NnRbrer1eqmpiZskQGiATuCJHG73WNjYy0tLTKZjDWlSqUyGo2zs7M52NBJHTs7O2azuaysjN3MJXcGgHt7ewkhKdq5wmg0FhUVzc7OpuLiQBzAjuC47O/vr66uWiyW1tZWtVrNzuWpra3t6uqamppCm1IQ7HY7W6GXl5cPDw/fuHGDdkYpZ2BggBDidDoFv/L8/HwaJsSCbAd2BELi9/sXFxd7e3sPFocUFRVptVqTybS6uooDDo/JzMxMQ0MDIaShoWFmZoZ2OqlleHg4FedY+f3+5uZmpVKJc2xAbGBHkCrcbvfMzExPT8/BhgNyubyhocFkMi0sLORC6ycV3LhxY3h4uLy8vLi42Gg0ivhET/YsYsE3k1tdXSWE6PV6YS8LxAfsCNLBxsbGxMSEwWA4aFMqlcrm5maz2by8vIxxyqOyvr7e2dkplUrLysrMZrMoN8u1Wq2EEJvNJuA1A4EAO4KLjfhBXGBHkFYCgYDdbh8cHNRqtUVFRaErKa1WK9aHHInZ2dnGxkZCSH19/fT0NO10BCYVduzu7sYqDpAgsCOghtfrXV5eHhoaamlpOVgiUlFR0dHRMTY2ljuTM4/D7u6uxWKprKyUSCQGg0FMZzAJbsfp6eni4uKOjg6hLgjEDewIMgK/37+8vNzX11dTU8MOUhJCKisru7u75+bm0PUam42Nje7ubplMVlpaOjg4uL29TTsjARDWjm63u66urqKiwm63C3JBIHpgR5Bx+Hy+xcVF1pTkFjBlXObn55uamgghdXV1k5OTtNM5LsLasb+/nxAyMjIiyNVALgA7gozG4/HMz8+bTKaGhgaGYdh97Kqrq41G4/j4OHpfOezt7Y2MjFRVVRUWFur1+qxetCCgHRcWFhiGaWtrw844IHFgR5A1eL3eubm57u7ug4mvoW1K7I1+gMPh6OnpkcvlKpVqYGAgS+c6CWXHGzduNDU1qdVqYSf4ANEDO4KsZHt7e25urr+/X6fTlZSUHJiyo6NjdHTUbrfv7+/TzpEyCwsLLS0thBCtVmu1WrNuK4bk7Li8vMz5i9lsJoQMDQ0JlxrICWBHkPXwtilVKhVWifh8vrGxMfa0zvb29khzZBTDw8NTU1MHfQAcO7JHqg0PD8e4gsfjkUqlodvr2Gw2drdxdC2AowI7AlHBjlMODAw0Njay520RQkpLS1tbW4eGhnJz54Gtra2+vj6GYZRKZX9/v8vlop0RP9PT0+wmvfX19X19fewZHf39/X19ffX19exM5tjLOsfHx9m2Mjsg7ff729raFArF4uJiut4EEA+wIxAtB3NfNRpN6M4DLS0tFosl104VXlpaam1tJYTU1tZOTEzE7nmm0uB2uVylpaUkOhqNZm9vL8YV2CMb2Wfu7OyMjIwQQkwmU9reAhATsCPICfx+v81mM5lMoXv0yGSypqYmi8Vit9uzblguCfb398fHx2trawkhra2tS0tLvE/b2dmpqKigMr2TPfE4GmazOfbL2bMwWbRaLdtczsHeAiAIsCPIOXw+38rKysjIiF6vr6ioYCtTuVyu0+n6+/tnZ2fFPVTpdDr7+/uVSiXDMH19fZFHjM3OzrL6TH9ui4uL0dTIMEzs5r7P51MqlaEvKSoqampqwlRVkBywI8hpAoHA2tra+Pi40Wisrq5mB7dKSkrq6up6e3tnZmZScb5gJrC8vNze3k4IqampGRsb8/v9Bw91dHSwdrFYLOlPTKfT8dox7qkaXq+X94USiUSn0w0PD+daXzo4JrAjAIe4XC6r1arX6w8GwIqKimpqavr6+gTZpiej9goPBAJWq1Wj0RBCWlpaFhYW2L+XlZUdvPf077fADhZGEvc8y+Xl5WjtzgNNjo6OpuVNADEAOwLAz87OzvT0dFdXV+hCkYqKCqPRODU1lVzvq1QqbW1tzaiRMLfbbTKZVCqVXC7v6ekZGBgIDHft+gAADIlJREFUNUpdXZ3D4UhnPk6nU61Wc8RWW1sbez5OMBjs6+uLocampqYMX9ACMg3YEYD4eDyehYWFwcHBpqamg+NESktLW1pazGbz0tJSgoc5s6+tra2dmppKdc5HwuVysV2aMpmM45XGxsY0JxM5N2dwcDDuq9g9ZiMpKSnp7+/fEeMRmCClwI4AHA324K3h4eG2trby8nK2ClYoFA0NDeyknhgLCg/2VZdKpb29vZl2mAY7EhlJ3MmiwsKZmyOXy+N28AYCAd7VIBqNJqN6s0EWATsCkDx+v99ut4+NjRkMBnbvb9Z8Wq22u7t7cnJyc3Mz9PlarTa07q6srExzv2UMNjY2pFIprx0lEkmaT44MnZvT3t4e9/kOhyMybaPRyLn/ACQO7AiAYGxublqt1q6uLo1Gw5qmsLCwqqqK3f11dXU1sn2jVCrNZnPcQbVUMz4+HjnaF0ptbW06Z+iEzs1JpPE3MzMTmm1ZWdno6GgurGEFqQN2BCAl8E7qKS4u5nWPTqfzeDy0Uh0aGoocboykvb09bfOJDubm1NbWJlJo6GSi5uZmrHEExwd2BCDleL3ehYWFxsbGGO6pqKgYHx9Pf247Ozvt7e2VlZXRulVDSeeubOw+q4nMxwkGg+wmeXK53GQyJThDCoDYwI4ApAm2Bo9BYWFhZ2cnxZFIt9u9vLw8Pj7e29vb3NwcqUyZTDY5OZmeZNihxATvRmVlpVwun5ubS3VWIHeAHQFIFU6n0zo51dPbb+zsbtcbiqUlRcWyuCFnlM0tbcbO7kyIDkNnc0tbXX1DdY2mtKyCUahkJUy73pCe0quqaxN8ZmlZRdqyyoro6e23Tk6Jdaen9AA7AiA8m5uOnp4+mVwhlTEIBK1glCrTwKC49w1OHbAjAMJj7OyWyphrZW9fajpd0PHNFw3/gECkMwo6vnmp6fS1srelMsbY2U37C5GVwI4ACMzSsk0qYz6qeIV6FYlAfFTxklTGLC1jEu+RgR0BEBiDoVMqLynQf4t6zYhAFOi/JZWXGAydtL8W2QfsCICQBAKB8sqKj8tfpV4tIhBs/LH0D7qGBtrfjOwDdgRAYKQy5sPKF6nXiQgEG9dKf19WUUn7a5F9wI4ACAzsiMiogB2TA3YEQGBgR0RGBeyYHLAjAAIjrB01U+/ZtqZixKJjfHK9TzH2wu977isw/iP1uhiRaQE7JgfsCIDACGvHltnP1tbW2tvba6PQ1NLY2afXjf5RNvLLN7vvfsWI5ZWIsIAdkwN2BEBgBLfj6Ojo+fPn747Ck08+efmdy70DneaVhk8Gn7jU/W3q1TEiowJ2TA7YEQCBOaodf99zn2GBiRZzm0Pz8/Offvrphx9+qFSqQuPqx1d/9KMfPfDAA0888cQHH/6PtrW0a678j0NPU6+OERkVsGNywI4ACMxR7fgH08M7OzszMzN9UTAYDOXl5UZjp3PLteVwHsTgoPmpnzyVn59/1113PfXUU9euf2JbWyyfeI16dYzIqIAdkwN2BEBgkrNjYWHho1F46qmnXn31Va1W63a5QwV5YMf8/Pz77ruvoOClldWVCuub1KtjREYF7JgcsCMAApOcHd9///0zZ868/vobH37wYWj8x//3H/fee++///u/v/37t9ta2+bm5g8EOTszJy+Rf/jBh++99/5jjz3261//enV1tTJH7Oja8Hh+Tj+NbAjYMTlgRwAEJmk7PvHEE/19poOmoXPL5dxyXfvk2kMPPfTQQw/97Gc/++ijj4aHh9kWpHPrsIvVtrzym988nzN2NO8EgsGg/4awdlxb2eP7NH3eNwQqQuPcDwQDLttouu8Y7JgcsCMAAiOIHd0u9/a2Z3vbY52wdnR0dHR09PX1jY+Pr6+vezye7W3Ptnvb5XSzjswxO7Km8QlsR8M/vGgw7wTCpDvv8wf37ZWC5Qw7ZhOwIwACI4gdt7e3FxYWdDqdJgrt7e3DQ8P21TXnlgt2FCi4dnzR8A/zvh3XVKJXGPQ6thJ+clisrXgEa6RyA3ZMDtgRAIERyo4tLS0/+MEPoi1zfOaZZ65duzYzPeNyumFHgSLcjkce2tQ4928krtLQGPTu7sGOGQbsCIDACGXH5ubm06dPv/D8C0qFMjR+//u377///jNnzjz77LOFhYV9fX2rK/bnn4cdjx9hdhz0bu8cqQiXcz+4m5QdzTsBAQc4uQE7JgfsCIDACGtHSaEkdI3jlsPZoGs4ffp0fn7+v/7rvz777LMqlWptbe2FF15IyI5hc08iJraEPno43nYwC6bfuR+IeDRBbdx6nW9Cmng+N4sOBoPB8BE71o4x8tEcPnQEY4UUF57PoHc3wJZymHBoK/PwDfIVepgM9+1zSwwGD+cBHb7K530j5JlHno4EOyYH7AiAwKTNjt/5znfuv//+P/zhDxvrGwnZcW1lL7TWdjn3Q5Xjcu6H1LzzPn+IkNia+uBRjXM/kKggwy4b3kiKnY/BvBM41En4BBlOPpy2l8a5H4haShw7ht4Bb5iHWAXeynDQuxvgTrEx7wRiFTTv80fY8fAh3rZj+EvMO/vJTOqBHZMDdgRAYFJtR8uw5fq16x/84YM33rj0g+//4MqVKxsbidmRo5+1lb1w/4VX0KF/iejJTFQ5HG+FCS9mPtz5ohG29nEmlx6W4nLuh5s7mnti25E77si5bHi2KbJjWCkupzep3lfYMTlgRwAEJtV25OyVc+XKlc3Nzbfeeuv111+32+3xxx1DOzMPat61lb2ILrsQP0WO8/FM74xSVjyJ8ubDY+vQiGXHeZ8/8kOJpqVYduQEFTuG3IcjzZ6FHY8P7AiAwKTfjm6322KxDA8Pu1yueD2r4UYMsyO3Zh/07gai2ZHPpke2Y4x8jmfHxFyYFXa81cJ2ruwm+aZgxySBHQEQmKTt+MMf/vDT659WVVbV1mpmZ+cSt+O2xzVu7+xdquxdqvzjcLQzOiJ8c5ye1UTnZ/KtINxz2Ebj5sPnksOuzlh25BkRTHRtBp8dD157NDtq1ndHODJL0I6DO8tLYZfVOPd9e/6do02ghR2PDewIgMAkbcdvf/vbd91119133/29732vqakpcTtuba/LRn75svGfXjb+00vGf4xhR56RvINGSfisnHDHhO/zsrayl2hfJTvb89CjIQv74uWztrIXDJ/CEzYrJ/q4I2d0M+yFR7Rj6MhoQna89XI+H8e2462HzO7I53DnK8GO6QB2BEBgkrNjf39/6S0qKytnZmaOZMdiyy8Sq/0P8/R5l7kblvKv6LhlI+/G3uFrjzA95OZyCPaqYVX/UfI51MPhq3zeN6KslwhZ0ZGgV6Lss8reh8O3wF7tcAlHWAP68GncuxeIvGaU0vla5MfbSQd2TA7YEQCBOaodr/Sdtq51h8bkeu+GeyUFdkw6UrT6HpFQJL9BneEfXoQdkwV2BEBgjmrHl43/dKXve6HxgemsZbU1Y+x42FZLdrYLIqm41UI95m2HHZMDdgRAYI5qx8h4rev/Ndm0rB0vXLjw6aef8cbly5cffPDBtLQdo0VEn2Eogp1uIVBE6zsNBoNCnlSVcQE7JgfsCIDACGXHjo6Oxx9//MF4XL16lZ4dEVkQsGNywI4ACIxQdrTZbJ2dnR3xmJiYgB0RMQJ2TA7YEQCBOb4df9v5Ld3Mh2P2jgRjaKXpE/OT1GthRGYG7JgcsCMAAnN8OyIQAgbsmBywIwACAzsiMipgx+SAHQEQGNgRkVEBOyYH7AiAwFRWV31Sfol6nYhAsEFKP2psbqb9tcg+YEcABMZg6JTKSwr036JeLSIQBfpvSeUlBkMn7a9F9gE7AiAwS8s2qYz5qOIV6jUjAvFJ1atSGbO0bKP9tcg+YEcAhMfY2S2VMdfLLl9qOl3Q8U3qVSQi16Kg45uXmk5fL7sslTHGzm7aX4isBHYEQHg8Hs+geVipVktlDAJBK0orykZGxvb2YuygB6ICOwKQKpxOp3Vyqqe339jZjUCkM3p6+62TU06nk/aXIIuBHQEAAAAusCMAAADABXYEAAAAuMCOAAAAABfYEQAAAOACOwIAAABcYEcAAACAC+wIAAAAcIEdAQAAAC6wIwAAAMAFdgQAAAC4wI4AAAAAF9gRAAAA4AI7AgAAAFxgRwAAAIAL7AgAAABwgR0BAAAALrAjAAAAwAV2BAAAALjAjgAAAAAX2BEAAADgAjsCAAAAXGBHAAAAgAvsCAAAAHCBHQEAAAAuPHa8evXq3//93xcAAAAAucr3vve9xx57LMyOnZ2dzwMAAAC5DcMwrBb/f4i2TDX/o8dJAAAAAElFTkSuQmCC" alt="" />

Pay attention to my chart , The front desk aop_cache Background aop_cache_background Projects all reference aop_cache_webservice project , And they have no impact on the data layer aop_cache_data References to , This aop_cache_webservice It's a WCF project , It mainly realizes the communication with data layer , Of course, it can also be related to BLL Business layer communication , This architecture is mainly about how to realize the shared cache between the front and back , Not Architecture , So it doesn't matter anymore , And in implementing shared caching .

Two WCF Layer implementation required DLL, Mainly unity,cache,interception,log4net etc. , Pictured :

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

3、 ... and about unity,wcf,cache On the call of , I did a second encapsulation , Pictured :

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPsAAABMCAIAAAAk31Y8AAAELklEQVR4nO2bsW7bMBCG8xwePGQIEGjMkF1PltlvkE4ZkjWakzFu1iyd2k512gKZbC+cOxg1FJE6HilZkn3fByNQKPLuaP+mCZv/mTsw14sr5ePQlQA4587GLgBgUFA82ALFgy1QPNgCxYMtUDzYQqX45XKZnYBvJ2FSqBR/eXmZLfrrxdVmvY0+UDwMg0rx8/m8KIo80XdR/LxGRuq8UdGYqSW1dT5EeRBFq/iqqqKif3hbXdyvZneri/vVw9tq17hXfPVYlWVZlmX1WG3W27Is93+FNX4vi2H0IWep302qB3FPB63inXNR0c/uVjcv70/fft28vM/uPil+J/c/v/9u1tsf33+WnzlGxfcYFoYkQfHOucViURTFx8eHPsFO8WVZvn59rW9j9Gt8fVewv25sFfydg76lEVxQZ9utjMjBf4U4vGf6IkHxy+WyKIqqqtq6ze5W9ceuMaj4jDW+3uLLItg5uAkRLoLp5GKUkTW5lKOgI1rFR+Xu/it+s976ir+9/VLf1WTs4zUtsuL9dVeTTnM3GjlP8fvIQkmQSsJ3NbLcnaj4vejLsnx+etZ/O9mj4qNx2hrlgJolueMaDz2iUvz5+XlU7k7c1XT8dlJoqbf7jRnRoqt125DGwP2//rUfR+6D9HtEpXiN3NsY8ReoYxeK/BkFeRz8XM3wpwxOaV08pblMBE6SgS1QPNgCxYMtUDzYAsWDLVA82AIPFNgCDxTYAg9UWsCj+OU/tTbNpLpMeVLPFR6ocLoB+vRFL7k0z/OkhJsNHqhwugH69AWKTwIPVDN49HX18waLEbLLs2iblzJXcAoZcTTltUUW5qh8NoJF9gIeqOQjiprs0T6aWWTX3Evkvi6U9QivXb/ggYoEj/ZRvsbR7G3v7eCoYRSvzO73keUrB2xE9ts7ggcq3ij3SVrV+moZco1PiuMUC7ZS8dFbeeCBCrw8wluosfL5120ltY1KqlAzfc2k/EqEUfJM/bFCkNSCg5PtCB6oY+L0ZjQ8eKCOhlOd18BwkgxsgeLBFigebIHiwRYoHmyB4sEWeKDAFnigwBZ4oNICNn4bHyw19AUeqHC6aIfUengPTAQ8UOF00Q4o/kjBAxU5xOfXU78I7ruSEnFUZmDwQEXOmrfVkxpHWTMcGjxQkeDRXF0Uj9yHBw9UvFHOlad4x35mJPBAhffcwQjBDv6OXFkkch8FPFCjMfHyThU8UCMw8fJOG06SgS1QPNgCxYMtUDzYAsWDLVA82AIPFNgCDxTYAg9UcsDGIbBGkfPP9FsAdAcPVDidcDeoexcqFcVPEDxQ4XTC3TbFB7vB1MAD1QweFX1jSLQPTAo8UDkeqKjiNaFgFPBARYIHO3QMAiOCByre6HeQPx9Q/JTBAyVt99tiCkHYxE8cPFBgCzxQYAtOkoEtUDzYAsWDLf4Bbpz63+mch58AAAAASUVORK5CYII=" alt="" />

Four Look at these. , Let's take another look ,WEB Layer calls WCF Layer code snippet :

 public ActionResult Index()
{
// adopt WCF Get remote data , Don't walk the cache , go config Medium <system.serviceModel>
using (ServiceProxy<IService1> proxy = new ServiceProxy<IService1>())
{
return View(proxy.Channel.GetClassroom_Info());
}
}

web The layer's configuration file contains the WCF Call to

<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="ServiceProxyBinding" sendTimeout="00:10:00" receiveTimeout="00:10:00" closeTimeout="00:10:00"></binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint name="IService1" address="http://www.aop.com/Service1.svc" contract="aop_cache_WebService.IService1" binding="basicHttpBinding" bindingConfiguration="ServiceProxyBinding" />
</client>
</system.serviceModel>

5、 ... and WCF Layer calls DAL Layer code , Use unity To do method interception and dependency injection , take cache Function injection into the specified method

 IClassroom_InfoRepository _iClassroom_InfoRepository = ServiceLocator.Instance.GetService<IClassroom_InfoRepository>();
public void InsertClassroom_Info(Classroom_Info entity)
{
_iClassroom_InfoRepository.InsertClassroom_InfoData(entity);
} public List<Classroom_Info> GetClassroom_Info()
{
return _iClassroom_InfoRepository.GetClassroom_InfoData();
}

6、 ... and about WCF Configuration file for , We need to take a look at , It contains the configuration of the database connection string and unity Configuration of

 <configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
<section name="cachingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Caching.Configuration.CacheManagerSettings, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</configSections>
<connectionStrings>
<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-aop_cache-20131030092430;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-aop_cache-20131030092430.mdf" />
<add name="TsingDa_NewLearningBarEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.;initial catalog=TsingDa_NewLearningBar;user id=sa;password=zzl123;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
</connectionStrings> <!--BEGIN: Unity-->
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<sectionExtension type="Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigurationExtension, Microsoft.Practices.Unity.Interception.Configuration" />
<container>
<extension type="Interception" />
<register type="Project.Caching.ICacheProvider, Project.Caching" mapTo="Project.Caching.EntLibCacheProvider, Project.Caching" />
<!-- Yes WCF Access to the injection and caching and exception interception -->
<register type="aop_cache_Data.IClassroom_InfoRepository, aop_cache_Data" mapTo="aop_cache_Data.Classroom_InfoRepository, aop_cache_Data">
<interceptor type="InterfaceInterceptor" />
<interceptionBehavior type="Project.InterceptionBehaviors.CachingBehavior, Project.InterceptionBehaviors" />
</register>
</container>
</unity>
<!--END: Unity-->
<!--BEGIN: Caching-->
<cachingConfiguration defaultCacheManager="ByteartRetailCacheManager">
<cacheManagers>
<add name="ByteartRetailCacheManager" type="Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" expirationPollFrequencyInSeconds="" maximumElementsInCacheBeforeScavenging="" numberToRemoveWhenScavenging="" backingStoreName="NullBackingStore" />
<!--
expirationPollFrequencyInSeconds: Expiration time (seconds)
maximumElementsInCacheBeforeScavenging: The maximum number of elements in the buffer
numberToRemoveWhenScavenging: The amount removed at a time
-->
</cacheManagers>
<backingStores>
<add type="Microsoft.Practices.EnterpriseLibrary.Caching.BackingStoreImplementations.NullBackingStore, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="NullBackingStore" />
</backingStores>
</cachingConfiguration>
<!--END: Caching--> <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Practices.Unity.Interception" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Warning" propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="d:\wcf.svclog" />
</sharedListeners>
</system.diagnostics>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid leaking metadata information , Please set the following values to... Before deployment false -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<!-- To receive fault exception details for debugging , Please set the following values to true. Set to... Before deployment false To avoid the leakage of abnormal information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>

7、 ... and DAL The realization of the layer , It consists of interface and implementation , The method of the interface specifies whether to carry out cache operation

 public interface IClassroom_InfoRepository
{
[Caching(CachingMethod.Remove, "GetClassroom_InfoData")]
void InsertClassroom_InfoData(Classroom_Info entity);
[Caching(CachingMethod.Get)]
List<Classroom_Info> GetClassroom_InfoData();
}

It's easy to implement , It's just a test

 public class Classroom_InfoRepository : TsingDa_NewLearningBarRepository<Classroom_Info>, IClassroom_InfoRepository
{
public void InsertClassroom_InfoData(Classroom_Info entity)
{
base.Insert(entity);
}
public List<Classroom_Info> GetClassroom_InfoData()
{
return base.GetModel().ToList();
}
}

Back to directory

DDD~WCF Do middleware , Realize the cache sharing of multiple projects

  1. Four 、 utilize EnterpriseFrameWork Rapid development is based on WCF It is a three-tier structure system of middleware

    return <[ Open source ]EnterpriseFrameWork Framework series index > EnterpriseFrameWork Framework instance source code download :  Instance download This chapter is the same as the previous one < utilize Enterprise ...

  2. ASP.NET Core Middleware detailed explanation and project actual combat

    Preface In the last article, I mainly introduced DotNetCore Project status , This article is actually used in our own projects , It fits the practical application , It's a deep use of middleware , It's not simple Hello World, If you think this article ...

  3. [ turn ]ASP.NET Core Middleware detailed explanation and project actual combat

    In this paper, from :http://www.cnblogs.com/savorboard/p/5586229.html Preface In the last article, I mainly introduced DotNetCore Project status , This article is about how we develop our own project ...

  4. net core Middleware detailed explanation and project actual combat

    net core Middleware detailed explanation and project actual combat Preface In the last article, I mainly introduced DotNetCore Project status , This article is actually used in our own projects , It fits the practical application , It's a deep use of middleware , It's not simple H ...

  5. 【 Reprint 】ASP.NET Core Middleware detailed explanation and project actual combat

    Preface In the last article, I mainly introduced DotNetCore Project status , This article is actually used in our own projects , It fits the practical application , It's a deep use of middleware , It's not simple Hello World, If you think this article ...

  6. use jinja Made a E-Letter Small projects

    Made a html E-Letter project . The email template uses jinja2, html Email content generation is so cool . The whole project development only used 2 Hours , Debugging took a long time , The generated e-mail can't be sent out all the time . therefore , open ...

  7. Make one with me vue Small project of ( Two )

    This vue The project is to follow the previous project and do one with me vue Small project of ( One ) To the . I'm going to continue the development later ( The writing is rough , Record while learning ) The picture below is header The pattern of the head header The components are as follows //header.vue ...

  8. Use gulp solve RequireJS Project front end cache problem ( Two )

    1. Preface This section , We mainly solved in the last section < Use gulp solve RequireJSs Project front end cache problem ( One )> A few questions mentioned at the end : Yes require-config.js Introduced js After document modification , No, ...

  9. Use gulp solve RequireJS Project front end cache problem ( One )

    1. Preface Front end caching has always been a headache , You may have seen the link to the resource file on the front page of the blog park below : Did you find a string of irregular things behind the file name , you 're right , This is the use of caching , That's what we're looking at today . It's better to stop first , Poking Links ...

Random recommendation

  1. SQLSERVER Full text search

    SQLSERVER Full text search Before reading this article, please take a look at the full text search below MSDN Information , Basically MSDN I have all the information about full text search on copy down And read and tested it very carefully , And added some SQL sentence ...

  2. ASP.NET MVC There are four ways to verify programming 【 turn 】

    ASP.NET MVC use Model Bind to target Action The corresponding parameter list is generated , But in the real implementation of the goal Action Before method , You also need to validate the parameters of the binding to ensure that they are valid sex , We'll make the validation of the parameters Model Tying ...

  3. 【 Learning notes 】【C Language 】 first C Program

    1. newly build C Language program * open Xcode  * New file  * choice C Language program  * Enter the program name  * Choose the storage path  * After creation  2. You can also use terminals to create   Create by command .c file   3. Write code  4. ...

  4. Oracle procedure Basic grammar

    from :http://lorry1113.javaeye.com/blog/513851 keyword : oracle stored procedure 1. The basic structure CREATE OR REPLACE PROCEDURE stored procedure ...

  5. YCbCr

    http://blog.csdn.net/shizhixin/article/details/4494358 YCbCr In the process of developing the video standard of the world digital organization ITU - R BT1601 One of the suggestions ...

  6. cocos2dx Make single mahjong ( 3、 ... and )

    cocos2dx Make single mahjong ( 3、 ... and ) Mahjong logic 4. Get the hand data We've saved a one-dimensional array , It's like a table , Count out the corresponding number of all cards , But how do we get what we're currently holding // Poker conversion BYTE Swit ...

  7. Record my first time in Android Experience in developing image processing algorithms

    About the end of April . Someone added me QQ Ask me if I can do some algorithms based on image skin detection , It is mainly to achieve the six indicators of skin : 1.       moisture 2.       Have a share 3.       Acne and acne 4.       Spots and skin ...

  8. Windows Phone 8.1 Application life cycle

    original text :Windows Phone 8.1 Application life cycle One .“ Backspace ” Will not terminate the application About Windows Phone 8.1 The application life cycle of , The first key to know is :“ Backspace ” Will not terminate the application ! stay 8. ...

  9. Luogu P2414 Ali's typewriter

    The question : With trie Given in the form of n A string , Every time you ask the second x The first string is in y Several times in a string . Explain : The total string length is n2 Grade , So you can't use any suffix automata ... [update] You can build triesam But I don't know trie On ...

  10. django+mongodb Built in user control

    0x01 project :django2.1 database :mongodb It's a very painful combination mongodb Not officially supported databases , This means using user group permissions And so on ...