基于vue实现待办清单案例

news2024/12/25 23:46:49

一、需求

  • 新增内容;

  • 删除内容;

  • 统计操作;

  • 清空数据。

    示例图:

    在这里插入图片描述

二、代码演示

1、基础准备

  1. index.css代码

    html,
    body {
     margin: 0;
     padding: 0;
    }
    body {
     background: #fff ;
    }
    button {
     margin: 0;
     padding: 0;
     border: 0;
     background: none;
     font-size: 100%;
     vertical-align: baseline;
     font-family: inherit;
     font-weight: inherit;
     color: inherit;
     -webkit-appearance: none;
     appearance: none;
     -webkit-font-smoothing: antialiased;
     -moz-osx-font-smoothing: grayscale;
    }
    
    body {
     font: 14px "Helvetica Neue", Helvetica, Arial, sans-serif;
     line-height: 1.4em;
     background: #f1b7b7;
     color: #4d4d4d;
     min-width: 230px;
     max-width: 550px;
     margin: 0 auto;
     -webkit-font-smoothing: antialiased;
     -moz-osx-font-smoothing: grayscale;
     font-weight: 300;
    }
    
    :focus {
     outline: 0;
    }
    
    .hidden {
     display: none;
    }
    
    #app {
     background: #fff;
     margin: 180px 0 40px 0;
     position: relative;
     box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1);
    }
    
    #app input::-webkit-input-placeholder {
     font-style: italic;
     font-weight: 300;
     color: #e6e6e6;
    }
    
    #app input::-moz-placeholder {
     font-style: italic;
     font-weight: 300;
     color: #e6e6e6;
    }
    
    #app input::input-placeholder {
     font-style: italic;
     font-weight: 300;
     color: gray;
    }
    
    #app h1 {
     position: absolute;
     top: -160px;
     width: 100%;
     font-size: 60px;
     font-weight: 100;
     text-align: center;
     color: rgba(175, 47, 47, .8);
     -webkit-text-rendering: optimizeLegibility;
     -moz-text-rendering: optimizeLegibility;
     text-rendering: optimizeLegibility;
    }
    
    .new-todo,
    .edit {
     position: relative;
     margin: 0;
     width: 100%;
     font-size: 24px;
     font-family: inherit;
     font-weight: inherit;
     line-height: 1.4em;
     border: 0;
     color: inherit;
     padding: 6px;
     border: 1px solid #999;
     box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2);
     box-sizing: border-box;
     -webkit-font-smoothing: antialiased;
     -moz-osx-font-smoothing: grayscale;
    }
    
    .new-todo {
     padding: 16px;
     border: none;
     background: rgba(0, 0, 0, 0.003);
     box-shadow: inset 0 -2px 1px rgba(0, 0, 0, 0.03);
    }
    
    .main {
     position: relative;
     z-index: 2;
     border-top: 1px solid #e6e6e6;
    }
    
    .toggle-all {
     width: 1px;
     height: 1px;
     border: none; /* Mobile Safari */
     opacity: 0;
     position: absolute;
     right: 100%;
     bottom: 100%;
    }
    
    .toggle-all + label {
     width: 60px;
     height: 34px;
     font-size: 0;
     position: absolute;
     top: -52px;
     left: -13px;
     -webkit-transform: rotate(90deg);
     transform: rotate(90deg);
    }
    
    .toggle-all + label:before {
     content: "❯";
     font-size: 22px;
     color: #e6e6e6;
     padding: 10px 27px 10px 27px;
    }
    
    .toggle-all:checked + label:before {
     color: #737373;
    }
    
    .listview {
     margin: 0;
     padding: 0;
     list-style: none;
     max-height: 420px;
     overflow: auto;
    }
    
    .listview li {
     position: relative;
     font-size: 24px;
     border-bottom: 1px solid #ededed;
     height: 60px;
     box-sizing: border-box;
    }
    
    .listview li:last-child {
     border-bottom: none;
    }
    
    .listview .view .index {
     position: absolute;
     color: gray;
     left: 10px;
     top: 20px;
     font-size: 16px;
    }
    
    .listview li .toggle {
     text-align: center;
     width: 40px;
     /* auto, since non-WebKit browsers doesn't support input styling */
     height: auto;
     position: absolute;
     top: 0;
     bottom: 0;
     margin: auto 0;
     border: none; /* Mobile Safari */
     -webkit-appearance: none;
     appearance: none;
    }
    
    .listview li .toggle {
     opacity: 0;
    }
    
    .listview li .toggle + label {
     /*
    	Firefox requires `#` to be escaped - https://bugzilla.mozilla.org/show_bug.cgi?id=922433
    	IE and Edge requires *everything* to be escaped to render, so we do that instead of just the `#` - https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7157459/
    */
     background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23ededed%22%20stroke-width%3D%223%22/%3E%3C/svg%3E");
     background-repeat: no-repeat;
     background-position: center left;
    }
    
    .listview li .toggle:checked + label {
     background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23bddad5%22%20stroke-width%3D%223%22/%3E%3Cpath%20fill%3D%22%235dc2af%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22/%3E%3C/svg%3E");
    }
    
    .listview li label {
     word-break: break-all;
     padding: 15px 15px 15px 60px;
     display: block;
     line-height: 1.2;
     transition: color 0.4s;
    }
    
    .listview li.completed label {
     color: #d9d9d9;
     text-decoration: line-through;
    }
    
    .listview li .destroy {
     display: none;
     position: absolute;
     top: 0;
     right: 10px;
     bottom: 0;
     width: 40px;
     height: 40px;
     margin: auto 0;
     font-size: 30px;
     color: #cc9a9a;
     margin-bottom: 11px;
     transition: color 0.2s ease-out;
    }
    
    .listview li .destroy:hover {
     color: #af5b5e;
    }
    
    .listview li .destroy:after {
     content: "×";
    }
    
    .listview li:hover .destroy {
     display: block;
    }
    
    .listview li .edit {
     display: none;
    }
    
    .listview li.editing:last-child {
     margin-bottom: -1px;
    }
    
    .footer {
     color: #777;
     padding: 10px 15px;
     height: 20px;
     text-align: center;
     border-top: 1px solid #e6e6e6;
    }
    
    .footer:before {
     content: "";
     position: absolute;
     right: 0;
     bottom: 0;
     left: 0;
     height: 50px;
     overflow: hidden;
     box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6,
       0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6,
       0 17px 2px -6px rgba(0, 0, 0, 0.2);
    }
    
    .todo-count {
     float: left;
     text-align: left;
    }
    
    .todo-count strong {
     font-weight: 300;
    }
    
    .filters {
     margin: 0;
     padding: 0;
     list-style: none;
     position: absolute;
     right: 0;
     left: 0;
    }
    
    .filters li {
     display: inline;
    }
    
    .filters li a {
     color: inherit;
     margin: 3px;
     padding: 3px 7px;
     text-decoration: none;
     border: 1px solid transparent;
     border-radius: 3px;
    }
    
    .filters li a:hover {
     border-color: rgba(175, 47, 47, 0.1);
    }
    
    .filters li a.selected {
     border-color: rgba(175, 47, 47, 0.2);
    }
    
    .clear-completed,
    html .clear-completed:active {
     float: right;
     position: relative;
     line-height: 20px;
     text-decoration: none;
     cursor: pointer;
    }
    
    .clear-completed:hover {
     text-decoration: underline;
    }
    
    .info {
     margin: 50px auto 0;
     color: #bfbfbf;
     font-size: 15px;
     text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
     text-align: center;
    }
    
    .info p {
     line-height: 1;
    }
    
    .info a {
     color: inherit;
     text-decoration: none;
     font-weight: 400;
    }
    
    .info a:hover {
     text-decoration: underline;
    }
    
    /*
    Hack to remove background from Mobile Safari.
    Can't use it globally since it destroys checkboxes in Firefox
    */
    @media screen and (-webkit-min-device-pixel-ratio: 0) {
     .toggle-all,
     .listview li .toggle {
       background: none;
     }
    
     .listview li .toggle {
       height: 40px;
     }
    }
    
    @media (max-width: 430px) {
     .footer {
       height: 50px;
     }
    
     .filters {
       bottom: 10px;
     }
    }
    
    
  2. 模板代码

    <html>
      <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
        <title>待办清单list</title>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
        <meta name="robots" content="noindex, nofollow" />
        <meta name="googlebot" content="noindex, nofollow" />
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <link rel="stylesheet" type="text/css" href="./css/index.css" />
      </head>
    
      <body>
        <!-- VUE示例接管区域 -->
        <section id="app">
          <!-- 输入框 -->
          <header class="header">
            <h1>待办清单</h1>
            <input
              autofocus="autofocus"
              autocomplete="off"
              placeholder="输入日程"
              class="new-todo"
            />
          </header>
    
          <!-- 列表区域 -->
          <section class="main">
            <ul class="listview">
              <li class="todo">
                <div class="view">
                  <span class="index">1.</span> <label>待办事项1</label>
                  <button class="destroy"></button>
                </div>
              </li>
            </ul>
          </section>
          <!-- 统计和清空 -->
          <footer class="footer">
            <span class="todo-count"> <strong>1</strong> items left </span>
            <button class="clear-completed">Clear</button>
          </footer>
        </section>
    
        <!-- 开发环境版本,包含了有帮助的命令行警告 -->
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
      </body>
    </html>
    
    

2、新增功能

  1. 实现步骤

    • 生成列表结构(v-for 数组)
    • 获取用户输入(v-model 双向绑定)
    • 回车,新增数据(v-on .enter事件修饰符)
    • 页面布局不熟悉,可以通过审查元素的方式快速找到元素
  2. 修改js代码

    <html>
      <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
        <title>待办清单list</title>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
        <meta name="robots" content="noindex, nofollow" />
        <meta name="googlebot" content="noindex, nofollow" />
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <link rel="stylesheet" type="text/css" href="./css/index.css" />
      </head>
    
      <body>
        <!-- VUE示例接管区域 -->
        <section id="app">
          <!-- 输入框 -->
          <header class="header">
            <h1>待办清单</h1>
    
            <!-- 添加 数据绑定 和 回车添加进model数据列表的事件绑定-->
            <input
              autofocus="autofocus"
              autocomplete="off"
              placeholder="输入日程"
              class="new-todo"
              v-model="inputValue"
              @keyup.enter="add"
            />
          </header>
    
          <!-- 列表区域 -->
          <section class="main">
            <ul class="listview">
              <!-- 添加循环 -->
              <li v-for="(item, index) in todoList" class="todo">
                <div class="view">
                  <span class="index">{{index+1}}.</span> <label>{{item}}</label>
                  <button class="destroy"></button>
                </div>
              </li>
            </ul>
          </section>
          <!-- 统计和清空 -->
          <footer class="footer">
            <span class="todo-count"> <strong>1</strong> items left </span>
            <button class="clear-completed">Clear</button>
          </footer>
        </section>
    
        <!-- 开发环境版本,包含了有帮助的命令行警告 -->
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
      </body>
    
      <script src="./js/vue.min.js"></script>
      <script>
        var VM = new Vue({
          el: "#app",
          data: {
            inputValue: "待输入待办事项",
            todoList: ["事件1", "事件2"],
          },
          methods: {
            add: function () {
              this.todoList.push(this.inputValue);
            },
          },
        });
      </script>
    </html>
    
    
  3. 测试结果

在这里插入图片描述

3、删除内容

  1. 步骤

    • 点击删除指定的内容( 根据索引删除元素)
    • 在methods中添加一个删除的方法,使用splice函数进行删除
  2. 代码修改

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
        <!-- 导入css资源 -->
        <link rel="stylesheet" href="./css/inputNum.css" />
      </head>
      <body>
        <!-- 显示区域 -->
        <div id="app">
          <input type="button" class="btn btn_plus" @click="add" />
          <span>{{num}}</span>
          <input type="button" class="btn btn_minus" @click="sub" />
        </div>
      </body>
    
      <script src="js/vue.min.js"></script>
      <script>
        var Vm = new Vue({
          el: "#app",
          data: {
            num: 1,
          },
          methods: {
            add: function () {
              if (this.num < 10) {
                this.num++;
              } else {
                alert("数字到达上限10!");
              }
            },
            sub: function () {
              if (this.num > 0) {
                this.num--;
              } else {
                alert("数字减到下限0!");
              }
            },
          },
        });
      </script>
    </html>
    
    
  3. 测试结果

    在这里插入图片描述

    点击即可删除。

4、统计操作

  1. 步骤

    • 统计页面信息的个数,就是列表中的元素的个数.
    • 获取 list数组的长度,就是信息的个数
  2. 修改代码

    <html>
     <head>
       <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
       <title>待办清单list</title>
       <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
       <meta name="robots" content="noindex, nofollow" />
       <meta name="googlebot" content="noindex, nofollow" />
       <meta name="viewport" content="width=device-width, initial-scale=1" />
       <link rel="stylesheet" type="text/css" href="./css/index.css" />
     </head>
    
     <body>
       <!-- VUE示例接管区域 -->
       <section id="app">
         <!-- 输入框 -->
         <header class="header">
           <h1>待办清单</h1>
    
           <!-- 添加 数据绑定 和 回车添加进model数据列表的事件绑定-->
           <input
             autofocus="autofocus"
             autocomplete="off"
             placeholder="输入日程"
             class="new-todo"
             v-model="inputValue"
             @keyup.enter="add"
           />
         </header>
    
         <!-- 列表区域 -->
         <section class="main">
           <ul class="listview">
             <!-- 添加循环 -->
             <li v-for="(item, index) in todoList" class="todo">
               <div class="view">
                 <span class="index">{{index+1}}.</span> <label>{{item}}</label>
                 <!-- 删除按钮 -->
                 <button class="destroy" @click="remove(index)"></button>
               </div>
             </li>
           </ul>
         </section>
         <!-- 统计和清空 -->
         <footer class="footer">
           <span class="todo-count">
              <!-- 此处添加数据的统计信息 -->
             <strong>{{todoList.length}}</strong> items left
           </span>
           <button class="clear-completed">Clear</button>
         </footer>
       </section>
    
       <!-- 开发环境版本,包含了有帮助的命令行警告 -->
       <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
     </body>
    
     <script src="./js/vue.min.js"></script>
     <script>
       var VM = new Vue({
         el: "#app",
         data: {
           inputValue: "待输入待办事项",
           todoList: ["事件1", "事件2"],
         },
         methods: {
           add: function () {
             this.todoList.push(this.inputValue);
           },
           //删除方法
           remove: function (index) {
             //使用splice(元素索引,删除几个) 根据索引删除
             //双向绑定数据,均只需要操作数据即可
             this.todoList.splice(index, 1);
           },
         },
       });
     </script>
    </html>
    
    
  3. 测试结果

    在这里插入图片描述

5、清空数据

  1. 步骤

    • 点击clear清空所有数据,只需要清空数组即可
  2. 代码修改

    <html>
     <head>
       <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
       <title>待办清单list</title>
       <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
       <meta name="robots" content="noindex, nofollow" />
       <meta name="googlebot" content="noindex, nofollow" />
       <meta name="viewport" content="width=device-width, initial-scale=1" />
       <link rel="stylesheet" type="text/css" href="./css/index.css" />
     </head>
    
     <body>
       <!-- VUE示例接管区域 -->
       <section id="app">
         <!-- 输入框 -->
         <header class="header">
           <h1>待办清单</h1>
    
           <!-- 添加 数据绑定 和 回车添加进model数据列表的事件绑定-->
           <input
             autofocus="autofocus"
             autocomplete="off"
             placeholder="输入日程"
             class="new-todo"
             v-model="inputValue"
             @keyup.enter="add"
           />
         </header>
    
         <!-- 列表区域 -->
         <section class="main">
           <ul class="listview">
             <!-- 添加循环 -->
             <li v-for="(item, index) in todoList" class="todo">
               <div class="view">
                 <span class="index">{{index+1}}.</span> <label>{{item}}</label>
                 <!-- 删除按钮 -->
                 <button class="destroy" @click="remove(index)"></button>
               </div>
             </li>
           </ul>
         </section>
         <!-- 统计和清空 -->
         <footer class="footer">
           <span class="todo-count">
             <!-- 此处添加数据的统计信息 -->
             <strong>{{todoList.length}}</strong> items left
           </span>
           <!-- 此处添加清空数组事件绑定 -->
           <button class="clear-completed" @click="clear">Clear</button>
         </footer>
       </section>
    
       <!-- 开发环境版本,包含了有帮助的命令行警告 -->
       <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
     </body>
    
     <script src="./js/vue.min.js"></script>
     <script>
       var VM = new Vue({
         el: "#app",
         data: {
           inputValue: "待输入待办事项",
           todoList: ["事件1", "事件2"],
         },
         methods: {
           add: function () {
             this.todoList.push(this.inputValue);
           },
           //删除方法
           remove: function (index) {
             //使用splice(元素索引,删除几个) 根据索引删除
             //双向绑定数据,均只需要操作数据即可
             this.todoList.splice(index, 1);
           },
           //清空数组
           clear: function () {
             this.todoList = [];
           },
         },
       });
     </script>
    </html>
    
    
  3. 测试结果

    在这里插入图片描述

    点击即可清空。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1418426.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BF16与FP16的区别

参考 BF16 与 FP16 在模型上哪个精度更高呢BF16 与 FP16 在模型上哪个精度更高呢【bf16更适合深度学习计算&#xff0c;精度更高】&#xff1a; 两者差异图示如下&#xff1a; BF16 是对FP32单精度浮点数截断数据&#xff0c;即用8bit 表示指数&#xff0c;7bit 表示小数。…

微博怎么把客户引流到私域?(引流技巧)

微博 1&#xff09;背景banner图 在微博主页顶部的背景图里&#xff0c;可以引导添加个人微信、公众号等信息&#xff0c;通常配合福利引导用户添加。 2&#xff09;个人简介 微博中比较常见的引流方式&#xff0c;可以直接在简介区内留下微信号、公众号名称、邮箱等信息&#…

差异性分析汇总

在做科研写论文的时候&#xff0c;我们总会听说要对数据进行差异性分析&#xff0c;那么何为差异性分析&#xff1f;差异性分析常用的方法有哪些&#xff1f;这些方法应该如何进行分类&#xff1f;如何选择&#xff1f;差异性分析的数据格式是怎么样的&#xff1f;软件如何操作…

MarkDown快速入门-以Obsidian编辑器为例

直接上图&#xff0c;左右对应。 首先是基础语法。 # 标题&#xff0c;几个就代表几级标题&#xff1b;* 单个是序号&#xff0c;两个在一起就是斜体&#xff1b;- [ ] 代表任务&#xff0c;注意其中的空格&#xff1b; 然后是表格按钮代码 | 使用中竖线代表表格&#xff0c…

Bean的注入方法和区别

Bean有几种注入方式&#xff1f;它们有什么区别&#xff1f; Bean对象中有以下几种注入方式&#xff1a; 属性注入Setter注入构造方法注入 属性注入 属性注入是我们最熟悉的&#xff0c;也是日常开发最常使用的一种注入方式&#xff0c;它的实现代码如下&#xff1a; Rest…

HTML小白入门学习-表单标签

一、前言 HTML标签千千万&#xff0c;要学习的占一半。上篇文章中我们学习了列表标签&#xff0c;针对有序列表、无序列表、自定义列表和嵌套列表进行简单的学习了解和实操。本篇文章将为大家介绍另一种常用标签&#xff0c;那就是表单类标签。 我们在网页中经常会看到表单的…

JavaScript版数据结构与算法(二)图、堆、搜索排序算法、算法设计思想

一、图 &#xff08;一&#xff09;图是什么 图是网络结构的抽象模型&#xff0c;是一组由边连接的节点。图可以表示任何二元关系&#xff0c;比如道路、航班… JS中没有图&#xff0c;但是可以用 Object 和 Array 构建图。图的表示法&#xff1a;邻接矩阵、邻接表… 1、邻接…

SOME/IP 协议介绍(七)传输 CAN 和 FlexRay 帧

SOME/IP 不应仅用于传输 CAN 或 FlexRay 帧。但是&#xff0c;消息 ID 空间需要在两种用例之间进行协调。 传输 CAN/FlexRay 应使用完整的 SOME/IP 标头。 AUTOSAR Socket-Adapter 使用消息 ID 和长度来构建所需的内部 PDU&#xff0c;但不会查看其他字段。因此&#xff0c;必…

如何发现帕鲁私服漏洞

白天当帕鲁、晚上抓帕鲁 相信所有的帕鲁玩家都不希望辛辛苦苦肝了几百小时抓的帕鲁因为网络入侵消失&#xff0c;除了抵御游戏内的强盗入侵&#xff0c;还要抵御现实世界的网络入侵&#xff0c;原本单纯的帕鲁变的复杂无比。 服务器弱口令、服务漏洞、未授权访问等入侵手段&a…

怎样自行搭建幻兽帕鲁游戏联机服务器?

幻兽帕鲁是一款深受玩家喜爱的多人在线游戏&#xff0c;为了获取更好的游戏体验&#xff0c;许多玩家希望能够自行搭建幻兽帕鲁游戏联机服务器&#xff0c;本文将指导大家如何自行搭建幻兽帕鲁游戏联机服务器。 自行搭建幻兽帕鲁游戏联机服务器&#xff0c;阿里云是一个不错的选…

【UVM源码】UVM Config_db机制使用总结与源码解析

UVM Config_db机制使用总结与源码解析 UVM Config_db机制介绍UVM Config_db 机制引入的背景基本介绍使用方法优缺点&#xff1a; UVM Config_db机制使用示例&#xff1a;UVM Config_db使用高阶规则Config_db资源优先级 UVM Config_db 源码解析 UVM Config_db机制介绍 UVM Conf…

合作文章(IF=13.6)| 神经损伤修复:“多效气体发射器”凝胶的妙用”

研究背景 周围神经损伤&#xff08;PNI&#xff09;包括对周围神经的形态学结构或生理功能的所有损伤。由于周围神经的结构和功能复杂&#xff0c;PNI往往导致预后不良和高致残率。药物递送移植物因其重建周围神经微环境的潜力而备受关注&#xff0c;但调节微环境的适当调控时…

2024年自动化测试岗位需求的 7 项必备技能 (最新版)

随着敏捷和DevOps等新时代项目开发方法逐渐取代旧的瀑布模型&#xff0c;测试需求在业界不断增长。测试人员现在正在与开发人员一起工作&#xff0c;自动化测试在许多方面极大地取代了手动测试。 如果您是自动化测试领域的新手&#xff0c;刚雇用您的组织将期望您快速&#xf…

ES 分词器

概述 分词器的主要作用将用户输入的一段文本&#xff0c;按照一定逻辑&#xff0c;分析成多个词语的一种工具 什么是分词器 顾名思义&#xff0c;文本分析就是把全文本转换成一系列单词&#xff08;term/token&#xff09;的过程&#xff0c;也叫分词。在 ES 中&#xff0c;Ana…

【网络项目】基于SSM的227闪烁物业管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

分表过多引起的问题/Apache ShardingSphere元数据加载慢

目录 环境 背景 探寻 元数据的加载策略 如何解决 升级版本到5.x 调大max.connections.size.per.query max.connections.size.per.query分析 服务启动阶段相关源码 服务运行阶段相关源码 受到的影响 注意事项&#xff08;重要&#xff09; 其他 环境 Spring Boot 2…

如何本地搭建Tale博客网站并发布到公网分享好友远程访问——“cpolar内网穿透”

文章目录 前言1. Tale网站搭建1.1 检查本地环境1.2 部署Tale个人博客系统1.3 启动Tale服务1.4 访问博客地址 2. Linux安装Cpolar内网穿透3. 创建Tale博客公网地址4. 使用公网地址访问Tale 前言 今天给大家带来一款基于 Java 语言的轻量级博客开源项目——Tale&#xff0c;Tale…

什么是协程goroutine?

文章目录 一、进程和线程进程和线程的痛点为什么 Java 坚持多线程不选择协程&#xff1f; 二、什么是协程CSP并发模型golang 线程模型和GMP一直创建协程会出什么问题 三、参考 一、进程和线程 进程就是应用程序的启动实例&#xff0c;进程拥有代码和打开的文件资源、数据资源、…

Pytest中doctests的测试方法应用!

在 Python 的测试生态中&#xff0c;Pytest 提供了多种灵活且强大的测试工具。其中&#xff0c;doctests 是一种独特而直观的测试方法&#xff0c;通过直接从文档注释中提取和执行测试用例&#xff0c;确保代码示例的正确性。本文将深入介绍 Pytest 中 doctests 的测试方法&…

【大厂AI课学习笔记】1.2 人工智能的应用(1)

目录 1.2 人工智能的应用 1.2.1 产业中人工智能的应用 金融 教育 医疗 交通 制造 ——智慧金融 智能风控 智能理赔 智能投研 &#xff08;声明&#xff1a;本学习笔记学习原始资料来自于腾讯&#xff0c;截图等资料&#xff0c;如有不合适摘录的&#xff0c;请与我联…