<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
    <title>TimberKito</title>
    <subtitle>Personal notes and technical articles</subtitle>
    <link rel="self" type="application/atom+xml" href="https://timberkito.com/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://timberkito.com"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-06-08T00:00:00+00:00</updated>
    <id>https://timberkito.com/atom.xml</id>
    <entry xml:lang="zh">
        <title>关于我</title>
        <published>2026-06-08T00:00:00+00:00</published>
        <updated>2026-06-08T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/about/"/>
        <id>https://timberkito.com/about/</id>
        
        <content type="html" xml:base="https://timberkito.com/about/">&lt;h2 id=&quot;hi-wo-shi-timber&quot;&gt;Hi，我是 Timber&lt;&#x2F;h2&gt;
&lt;p&gt;一名 Android Framework 工程师，也会做 Android 应用开发。这个博客用来记录技术实践、学习笔记，以及偶尔冒出来的生活思考。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;wo-zai-guan-zhu-shen-me&quot;&gt;我在关注什么&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Android Framework&lt;&#x2F;strong&gt;：系统服务、Binder 通信、权限、进程、窗口与包管理&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Android Platform&lt;&#x2F;strong&gt;：AOSP 阅读、系统定制、稳定性排查、日志分析与问题复现&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;编程开发&lt;&#x2F;strong&gt;：Kotlin、Java、Spring、Vue 与工程化实践&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;系统运维&lt;&#x2F;strong&gt;：Linux、部署、服务配置与日常排错&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;工具与效率&lt;&#x2F;strong&gt;：adb、logcat、Perfetto、Git、Markdown 与效率工具&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;guan-yu-zhe-ge-bo-ke&quot;&gt;关于这个博客&lt;&#x2F;h2&gt;
&lt;p&gt;写作是我整理知识和校正理解的方式。这里的文章主要来自真实学习与实践过程，希望它们既能成为自己的长期笔记，也能给遇到相似问题的人提供一点参考。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;zhao-dao-wo&quot;&gt;找到我&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;TimberKito&quot;&gt;GitHub：TimberKito&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;&#x2F;posts&#x2F;&quot;&gt;文章归档&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;&#x2F;categories&#x2F;&quot;&gt;文章分类&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;欢迎交流，也欢迎指出文章中不准确或可以改进的地方。&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>Debian 12 云服务器初始化记录</title>
        <published>2026-05-11T00:00:00+00:00</published>
        <updated>2026-05-11T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/debian12-server-init/"/>
        <id>https://timberkito.com/posts/debian12-server-init/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/debian12-server-init/">&lt;p&gt;这里记录 Debian 12 云服务器初始化、Docker、Nginx、frp、Zola 等部署过程。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;dang-qian-jia-gou&quot;&gt;当前架构&lt;&#x2F;h2&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>哲学导论：概念与概念框架</title>
        <published>2022-07-22T00:00:00+00:00</published>
        <updated>2022-07-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/philosophy-concepts-and-frameworks/"/>
        <id>https://timberkito.com/posts/philosophy-concepts-and-frameworks/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/philosophy-concepts-and-frameworks/">&lt;h2 id=&quot;gai-nian&quot;&gt;概念&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;zhi-shi-de-lei-xing&quot;&gt;知识的类型&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;经验知识：指基于经验的知识（无论是基于你自己的经验还是他人的观察和实验），比如“芝加哥今天的气温是17度”。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;先验经验：指独立于（“先于”）任何特殊经验的知识，比如“2+3=5”或“A+B=B+A”。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;较之“狗”这个经验概念，“数”这一先验概念引发了困难得多的问题。一般来说，哲学所关注的其实正是这些最困难的概念。由于哲学概念是抽象的，它们的含义可能会为各种不同的意见留有广阔的余地，比如“好人”的概念和“好的生活”的概念似乎对于不同的人有着非常不同的含义。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;zhe-xue-de-ling-yu&quot;&gt;哲学的领域&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;形而上学：关于实在以及万物最终本性的理论。形而上学的目标是形成一种关于宇宙的全面而整体的世界现。形而上学中有一个有时被称为本体论的部分，它所研究的是“存在”，试图依次列出构成宇宙中不同种类的实体的优先性。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;伦理学：对善恶对错的研究，对“好的生活”的寻求，以及对道德原理和准则的辨护，所以它有时又被称为道德哲学，尽管这实际上只是伦理学的丰富内容的一部分。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;认识论：对知识的研究，包括诸如“我们能知道什么？”“我们是怎样知道某种事物的？”以及“什么是真理？”这样的问题。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;逻辑（或哲学逻辑）：对合理思维和好的论证的形式结构的研究。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;宗教哲学（或哲学神学）：对宗教、宗教的本质、神圣事物的本质以及相信（或不相信）上帝存在的各种理由的哲学探究。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;政治（或社会政治）哲学：对社会和国家的基础与本质的研究，试图构想出理想社会的样子，并在我们自己的社会中实践某些观念和改革以更好地达到这个目标。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;美学（或艺术哲学）：对艺术的本质以及艺术体验的研究，包括对“美”、“表现”等概念的理解。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;gai-nian-kuang-jia&quot;&gt;概念框架&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;这些包容一切的图景和视角是我们最终的&lt;strong&gt;概念框架&lt;&#x2F;strong&gt;，即我们用来“框定”和组织所有其他更为具体的概念的那些最抽象的概念。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;从一种更具实践性的眼光来看，所谓“概念框架”也可以被当作一套价值和一种审视生活的方式，或者用现代的话来说，可以被当作一种&lt;strong&gt;生活方式&lt;&#x2F;strong&gt;。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;如果把侧重点放在政治与社会，那么这种东西可被称为&lt;strong&gt;意识形态&lt;&#x2F;strong&gt;——一套关于社会本质以及我们在其中所扮演的政治角色的观念。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;如果把侧重点更多地转向历史角度，我们会发现，历史学家们有时把同一种东西称为&lt;strong&gt;思想气候&lt;&#x2F;strong&gt;。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;把侧重点从赋予世界以形式的概念移开，而去强调由这种东西所得出的对世界的看法，那么我们可以用一个通俗的哲学术语——&lt;strong&gt;世界观&lt;&#x2F;strong&gt;。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>哲学导论：演绎与归纳</title>
        <published>2022-07-22T00:00:00+00:00</published>
        <updated>2022-07-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/philosophy-deduction-and-induction/"/>
        <id>https://timberkito.com/posts/philosophy-deduction-and-induction/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/philosophy-deduction-and-induction/">&lt;h2 id=&quot;yan-yi-lun-zheng&quot;&gt;演绎论证&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;ding-yi&quot;&gt;定义&lt;&#x2F;h3&gt;
&lt;p&gt;演绎论证有时可以这样来定义：一条最终陈述（或&lt;strong&gt;结论&lt;&#x2F;strong&gt;）的真完全由初始陈述（&lt;strong&gt;前提&lt;&#x2F;strong&gt;）的真来保证。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;san-duan-lun&quot;&gt;三段论&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;所有哲学家都是智慧的。&lt;&#x2F;p&gt;
&lt;p&gt;苏格拉底是哲学家。&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;因此，苏格拉底是智慧的。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;在这种论证中，重要的是论证的形式：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;所有的Ｐ都是Ｑ。&lt;&#x2F;p&gt;
&lt;p&gt;Ｓ是Ｐ。&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;因此，Ｓ是Ｑ。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;当一则演绎论证严格按照这种形式进行时，我们就说它是&lt;strong&gt;演绎有效的或有效的&lt;&#x2F;strong&gt;，否则就是&lt;strong&gt;无效的&lt;&#x2F;strong&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;即使&lt;strong&gt;前提和结论都是假的&lt;&#x2F;strong&gt;，该论证也可能是有效的。&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;所有的牛都是紫色的。&lt;&#x2F;p&gt;
&lt;p&gt;苏格拉底是牛。&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;因此，苏格拉底是紫色的。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;lun-zheng-de-he-li-xing&quot;&gt;论证的合理性&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;如果一则论证既是&lt;strong&gt;有效的&lt;&#x2F;strong&gt;，&lt;strong&gt;前提又是真的&lt;&#x2F;strong&gt;（换句话说，它是一则好的论证），那么该论证就被称为合理的。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;如果一则论证的前提为假，&lt;strong&gt;或者&lt;&#x2F;strong&gt;其本身是无效的，那么该论证就被称为不合理的（一则坏的演绎论证）。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;因此，一则好的演绎论证应当具备如下两条本质特征：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;1.它是有效论证。&lt;&#x2F;p&gt;
&lt;p&gt;2.它的前提为真。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;gui-na-lun-zheng&quot;&gt;归纳论证&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;ding-yi-1&quot;&gt;定义&lt;&#x2F;h3&gt;
&lt;p&gt;而对于归纳论证来说，即使&lt;strong&gt;前提为真，结论也未必为真&lt;&#x2F;strong&gt;。归纳论证最常见的形式是由若干个别事例出发进行&lt;strong&gt;概括&lt;&#x2F;strong&gt;。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;gai-gua&quot;&gt;概括&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;我们注意到每一只前齿锐利的动物都食肉，于是就下结论说，所有前齿锐利的动物都食肉。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;yan-yi-luo-ji-yu-gui-na-luo-ji&quot;&gt;演绎逻辑与归纳逻辑&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;演绎逻辑保证，只要前提为真，结论就为真。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;例子：如果某件事要么Ｍ做了，要么Ｓ做了，我们知道当时Ｍ还在狱中，所以一定是Ｓ做了（前提：“如果某件事要么Ｍ做了，要么Ｓ做了”以及“Ｍ当时还在狱中”）。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;归纳逻辑并不能保证其结论为真，而只能使我们认为结论（较之其他可能的结论）更合理一些。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;例子：这支烟斗的种类与他用的一致，这里的脚印也与他的鞋子相吻合，案件发生前仅一小时，有人看见他正在附近，并且听到他说：“只要我还有一口气在，我就要对她进行报复。”从这些证据来看，似乎只有认定他有罪才能最好地解释这些事实。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;jia-shuo&quot;&gt;假说&lt;&#x2F;h3&gt;
&lt;p&gt;归纳论证中最重要的部分之一是假说，即一个实验应当&lt;strong&gt;予以证实或否证&lt;&#x2F;strong&gt;的陈述。&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;其实不仅是在科学中，我们已经知道或希望知道的每一件事情几乎都要依赖于假说和归纳论证，从早上寻找车钥匙（“我确信把它放在书本旁边了”）到对空间中黑洞的存在与性质的思考，所有情况莫不如此。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>Microsoft Excel 使用笔记</title>
        <published>2022-04-10T00:00:00+00:00</published>
        <updated>2022-04-10T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/microsoft-excel-notes/"/>
        <id>https://timberkito.com/posts/microsoft-excel-notes/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/microsoft-excel-notes/">&lt;ul&gt;
&lt;li&gt;工作簿是由工作表组成，每个工作簿都可以包含&lt;strong&gt;一个或多个工作表&lt;&#x2F;strong&gt;，用户可以用其中的工作表来组织各种相关数据。&lt;&#x2F;li&gt;
&lt;li&gt;在excel中，&lt;strong&gt;直接处理的对象称为工作表&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;工作薄的&lt;strong&gt;最小组成单元是单元格&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;表格强制&lt;strong&gt;换行&lt;&#x2F;strong&gt;的快捷键是&lt;strong&gt;Alt&lt;&#x2F;strong&gt;+&lt;strong&gt;Enter&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;运算符的优先级：引用运算符、算术运算符、文本运算符、比较运算符、逻辑运算&lt;&#x2F;li&gt;
&lt;li&gt;单元格的值是&lt;strong&gt;0.1357&lt;&#x2F;strong&gt;，使用&lt;strong&gt;百分比数&lt;&#x2F;strong&gt;按钮来格式化后，单元格内所显示的内容为&lt;strong&gt;14%&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;blockquote&gt;
&lt;p&gt;关于排序&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;可以升序排列，可以降序排列，也可以按照自定义排序&lt;&#x2F;li&gt;
&lt;li&gt;可以对文本排序，可以对数字排序，也可以对单元格颜色或字体颜色排序&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;可以按列排序，也可以按行排序&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;可以按一列排序，也可以按多列排序&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;blockquote&gt;
&lt;p&gt;关于分类汇总&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;分类汇总前必须按关键字段排序&lt;&#x2F;li&gt;
&lt;li&gt;进行一次分类汇总时的关键字只能是一个字段&lt;&#x2F;li&gt;
&lt;li&gt;分类汇总可以删除，但删除汇总后排序操作不能撤销&lt;&#x2F;li&gt;
&lt;li&gt;汇总方式默认求和，也可以求平均值、最大值、最小值等&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;blockquote&gt;
&lt;p&gt;关于合并计算&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;可以按位置或分类进行合并计算&lt;&#x2F;li&gt;
&lt;li&gt;合并计算的函数可以为“求和”&lt;&#x2F;li&gt;
&lt;li&gt;可以在合并计算&lt;strong&gt;对话框内输入引用数据源的位置，不必打开数据源&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;数据源可来自于多个工作表或工作薄&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;在excel中，&lt;strong&gt;快速插入图表的快捷键是F11&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;单元格内真正存储的是公式，显示的是结果&lt;&#x2F;li&gt;
&lt;li&gt;如果所选条件出现在多列中，并且条件间有“与”的关系，可以使用自定义筛选&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>Microsoft Word 使用笔记</title>
        <published>2022-04-10T00:00:00+00:00</published>
        <updated>2022-04-10T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/microsoft-word-notes/"/>
        <id>https://timberkito.com/posts/microsoft-word-notes/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/microsoft-word-notes/">&lt;ul&gt;
&lt;li&gt;第一次保存某文件，出现的对话框为&lt;strong&gt;另存为&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;在word的&lt;strong&gt;文档编辑区&lt;&#x2F;strong&gt;，把鼠标光标放在某一字符处后&lt;strong&gt;点击3次左键&lt;&#x2F;strong&gt;，则选中一个&lt;strong&gt;段落&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;在word&lt;strong&gt;文本选择区&lt;&#x2F;strong&gt;三击鼠标，可选定&lt;strong&gt;整个文本&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;在word中可以使用**“开始”选项卡**插入项目符号和编号&lt;&#x2F;li&gt;
&lt;li&gt;在word中，人工加入&lt;strong&gt;分页符&lt;&#x2F;strong&gt;的快捷方式是**（ctrl+Enter）**&lt;&#x2F;li&gt;
&lt;li&gt;页脚页眉不能设置&lt;strong&gt;文字方向&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;将鼠标指针指向某单元格的左侧，待指针呈黑色箭头状时，单击鼠标左键可选中该单元格；&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;将鼠标指针指向某行的左侧时，待指针呈白色箭头状时，单击鼠标左键可选中该行；&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;将鼠标指向某列上方，待鼠标呈黑色箭头状时，点击鼠标左键可选中该列；&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;将鼠标指向表格时，单机表格的左上角的移动手柄或右下角出现的缩放手柄都可以选中整个表格&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;文本框默认的环绕方式为“浮于文字上方”&lt;&#x2F;li&gt;
&lt;li&gt;在草稿视图下，&lt;strong&gt;只显示水平标尺&lt;&#x2F;strong&gt;，不显示垂直标尺&lt;&#x2F;li&gt;
&lt;li&gt;表格外侧按Enter键可以插入一行，表格行数变化&lt;&#x2F;li&gt;
&lt;li&gt;在单元格内按Enter键可以&lt;strong&gt;增加行高&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;光标在表格&lt;strong&gt;最右下角单元格&lt;&#x2F;strong&gt;时，按&lt;strong&gt;Tab键&lt;&#x2F;strong&gt;可在表格尾部添加一个行&lt;&#x2F;li&gt;
&lt;li&gt;快速的&lt;strong&gt;拆分表格&lt;&#x2F;strong&gt;应按** ctrl+shift+回车键**&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;空格、逗号、制表符&lt;&#x2F;strong&gt;能用作将正文内容分隔开并转换为单元格内容的格式&lt;&#x2F;li&gt;
&lt;li&gt;“查找和替换”功能可以对**段落标记、分节符、**等进行查找和替换&lt;&#x2F;li&gt;
&lt;li&gt;在编辑状态下，光标在文档中，没有对文档进行任何选取，设置两倍行距，结果是&lt;strong&gt;光标所在的段落&lt;&#x2F;strong&gt;按两倍行距格式化&lt;&#x2F;li&gt;
&lt;li&gt;在“word 选项”对话框中，能显示或者&lt;strong&gt;隐藏段落标记和空格&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;文件提交打印后，能从打印队列中删除&lt;&#x2F;li&gt;
&lt;li&gt;两个段落之间的间距是通过设置**“段落”对话框&lt;strong&gt;中的&lt;&#x2F;strong&gt;“段前”和“段后”**值来调整&lt;&#x2F;li&gt;
&lt;li&gt;在word中文档如果看不到段落标记，可以通过单击“文件”按钮打开“选项”&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;对话框“显示”选项卡中的显示段落标记选项来更改&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>计算机新技术与应用</title>
        <published>2022-03-08T00:00:00+00:00</published>
        <updated>2022-03-08T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/emerging-computing-technologies/"/>
        <id>https://timberkito.com/posts/emerging-computing-technologies/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/emerging-computing-technologies/">&lt;!--
 * @Author: Timber.Wang
 * @Date: 2022-03-08 16:11:01
 * @LastEditors: Timber.Wang
 * @LastEditTime: 2022-03-08 16:27:17
 * @Description:
--&gt;
&lt;h2 id=&quot;di-shi-yi-zhang-ji-suan-ji-xin-ji-shu-yu-ying-yong&quot;&gt;第十一章-计算机新技术与应用&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;云计算提供的服务类型：&lt;strong&gt;基础架构即服务（IaaS）、平台即服务(PaaS)、软件即服务（SaaS）&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;物联网概念最早在&lt;strong&gt;1999年由美国提出&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;人工智能是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术学科。人工智能研究的一个主要目标是使机器能够胜任一些通常需要人类智慧才能完成的复杂工作，但是不同的时不同的人对这种“复杂工作”的理解是不一样的。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;虚拟现实技术突出的特征：&lt;strong&gt;沉浸性、交互性、想象性&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;所谓模式识别的问题就是用计算的方法根据样本的特征将样本划分到一定的类别中去。&lt;strong&gt;（模式识别属于人工智能研究领域）&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;电子商务的特征：普遍性、方便性、整体性、安全性、协调性&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;物联网的感知层主要完成信息的采集、转换和收集&lt;&#x2F;li&gt;
&lt;li&gt;网络层主要完成信息传递和处理&lt;&#x2F;li&gt;
&lt;li&gt;应用层主要完成数据的管理和数据的处理，并将这些数据与各行业应用的结合&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>信息安全基础</title>
        <published>2022-03-08T00:00:00+00:00</published>
        <updated>2022-03-08T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/information-security-fundamentals/"/>
        <id>https://timberkito.com/posts/information-security-fundamentals/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/information-security-fundamentals/">&lt;h2 id=&quot;di-shi-zhang-xin-xi-an-quan&quot;&gt;第十章-信息安全&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;信息安全的四大要素是&lt;strong&gt;技术、制度、流程、人&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;按照计算机病毒存在的媒体进行分类，计算机病毒可以分为&lt;strong&gt;网络病毒、文件病毒、引导型病毒、以及三种情况的混合型&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;计算机病毒按照破环能力进行分类包括：&lt;strong&gt;无害型、无危险型、危险型、非常危险型&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;计算机病毒的特点：&lt;strong&gt;衍生性、针对性、寄生性、隐蔽性、潜伏性、可触发性、可执行性、针对性、反病毒软件性&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;计算机病毒按表现性质可以分为&lt;strong&gt;良性和恶性&lt;&#x2F;strong&gt;，良性病毒可能会致使计算机系统变慢，恶性计算机病毒可能会致使计算机系统瘫痪&lt;&#x2F;li&gt;
&lt;li&gt;计算机&lt;strong&gt;网络道德&lt;&#x2F;strong&gt;是指以善恶为标准，通过社会舆论、内心信念和传统习惯来评价人们的上网行为，调节网络时空中人与人之间以及个人与社会之间关系的行为规范&lt;&#x2F;li&gt;
&lt;li&gt;信息安全技术主要有：&lt;strong&gt;密码技术、防火墙技术、虚拟专用网技术、病毒与反病毒技术和其他安全保密技术&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;信息安全与保密的核心和关键是&lt;strong&gt;密码技术&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;数字证书&lt;&#x2F;strong&gt;是一种电子身份证，以密码学为基础，采用数字签名、数字信封、时间戳服务等技术，在因特网上建立起有效的信任机制，以保证互联网上网上银行和电子交易以及支付的双方都必须拥有合法省份&lt;&#x2F;li&gt;
&lt;li&gt;数据加密仍是计算机系统对信息进行保护的一种最可靠的办法。&lt;strong&gt;数据加密技术&lt;&#x2F;strong&gt;的目的是对&lt;strong&gt;传输中的数据流加密&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;计算机信息的实体安全的三个反面：&lt;strong&gt;环境安全、设备安全、媒体安全&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>多媒体技术基础</title>
        <published>2022-03-07T00:00:00+00:00</published>
        <updated>2022-03-07T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/multimedia-technology/"/>
        <id>https://timberkito.com/posts/multimedia-technology/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/multimedia-technology/">&lt;h2 id=&quot;di-jiu-zhang-duo-mei-ti-ji-shu&quot;&gt;第九章 多媒体技术&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;表示媒体是为了加工、处理传输感觉媒体而人为构造的媒体，所以&lt;strong&gt;声音、文字、图像、视频属于表示媒体&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;多媒体技术利用&lt;strong&gt;计算机、通讯、广播&lt;&#x2F;strong&gt;技术，使它们&lt;strong&gt;建立逻辑关系&lt;&#x2F;strong&gt;，并&lt;strong&gt;能进行加工处理&lt;&#x2F;strong&gt;的技术&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;多媒体操作系统&lt;&#x2F;strong&gt;是多媒体软件的核心&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;计算机系统的组成包括计算机硬件设备和计算机软件设备&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;JPEG是一种&lt;strong&gt;静态图像&lt;&#x2F;strong&gt;压缩技术标准&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;视频图像的清晰度，与是否压缩并没有直接的关系&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;视频卡包括显卡&lt;&#x2F;strong&gt;，显卡也叫做图形加速卡&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;多媒体计算机指的是能对声音、视频、图像等多媒体信息进行综合处理的计算机，&lt;strong&gt;而并非单纯的个人计算机&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;声音的三个指标为&lt;strong&gt;振幅、周期、频率&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;多媒体是&lt;strong&gt;存储&lt;&#x2F;strong&gt;信息的实体和&lt;strong&gt;表示&lt;&#x2F;strong&gt;信息的实体&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;影响图像数字化质量的主要参数是&lt;strong&gt;量化字长、分辨率&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>Windows 环境下安装与配置Node.js</title>
        <published>2022-03-02T00:00:00+00:00</published>
        <updated>2022-03-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/windows-nodejs-installation/"/>
        <id>https://timberkito.com/posts/windows-nodejs-installation/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/windows-nodejs-installation/">&lt;h2 id=&quot;windows-huan-jing-xia-an-zhuang-yu-pei-zhi-node-js&quot;&gt;Windows 环境下安装与配置Node.js&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;yi-xia-zai-node-jsan-zhuang-bao&quot;&gt;一、下载Node.js安装包&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;下载地址：&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;nodejs.org&#x2F;en&#x2F;download&quot;&gt;Node.js 下载页面&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;本教程以msi安装包为例&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h4 id=&quot;dian-ji-windows-an-zhuang-bao-xia-zai&quot;&gt;点击Windows 安装包下载&lt;&#x2F;h4&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;1646151977902.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;br&#x2F;&gt;
&lt;h3 id=&quot;er-an-zhuang-node-js&quot;&gt;二、安装Node.js&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;1-da-kai-an-zhuang-bao&quot;&gt;1.打开安装包&lt;&#x2F;h4&gt;
&lt;blockquote&gt;
&lt;p&gt;欢迎页：点击Next&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;1646151561398.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h4 id=&quot;2-yun-xu-shi-yong-tiao-kuan&quot;&gt;2.允许使用条款&lt;&#x2F;h4&gt;
&lt;blockquote&gt;
&lt;p&gt;点击接受条款后Next&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;1646151572239.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h4 id=&quot;3-xuan-ze-an-zhuang-lu-jing&quot;&gt;3.选择安装路径&lt;&#x2F;h4&gt;
&lt;blockquote&gt;
&lt;p&gt;选择你要安装的路径&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;本案例保存默认在C盘路径：C:\Program Files\nodejs&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;1646151582648.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h4 id=&quot;4-an-zhuang-zu-jian&quot;&gt;4.安装组件&lt;&#x2F;h4&gt;
&lt;blockquote&gt;
&lt;p&gt;这些是Node.js里面包含的组件，例如运行环境，包管理器等&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;保持默认即可，点击Next&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;1646151642121.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h4 id=&quot;5-an-zhuang-kai-fa-gong-ju&quot;&gt;5.安装开发工具&lt;&#x2F;h4&gt;
&lt;blockquote&gt;
&lt;p&gt;开发工具可以等以后实际开发过程中安装&lt;&#x2F;p&gt;
&lt;p&gt;这里选择不勾选安装工具&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;1646151649358.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h4 id=&quot;6-an-zhuang-node-js&quot;&gt;6.安装Node.js&lt;&#x2F;h4&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;1646151682989.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;san-cha-kan-shi-fou-an-zhuang-cheng-gong&quot;&gt;三、查看是否安装成功&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;1-da-kai-zhong-duan&quot;&gt;1.打开终端&lt;&#x2F;h4&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;使用 Win键+R，输入cmd&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;1646151739167.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h4 id=&quot;2-shu-ru-zhi-ling&quot;&gt;2.输入指令&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;node&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -v&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;npm&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -v&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;blockquote&gt;
&lt;p&gt;出现如下图所示版本号，即为安装成功&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;1646151793731.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;si-pei-zhi-node-js-fei-bi-xu&quot;&gt;四、配置Node.js （非必须）&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;1-shi-yong-guan-li-yuan-quan-xian-da-kai-zhong-duan&quot;&gt;1.使用管理员权限打开终端&lt;&#x2F;h4&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;1646153769705.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;移动到Node.js安装目录下&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;cd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; C:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;\&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;Program Files&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;\&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;nodejs&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;2-chuang-jian-quan-ju-zu-jian-wen-jian-jia-he-huan-cun-wen-jian-jia&quot;&gt;2.创建全局组件文件夹和缓存文件夹&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mkdir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; node_global&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;1646154080664.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mkdir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; node_cache&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;1646154132904.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h4 id=&quot;3-she-zhi-npmquan-ju-bao-mu-lu-yu-huan-cun-mu-lu&quot;&gt;3.设置npm全局包目录与缓存目录&lt;&#x2F;h4&gt;
&lt;blockquote&gt;
&lt;p&gt;设置全局目录
&lt;strong&gt;双引号内为刚刚创建的 node_global 文件夹路径&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;npm&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; config set prefix &amp;quot;C:\Program Files\nodejs\node_global&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;blockquote&gt;
&lt;p&gt;设置缓存目录
&lt;strong&gt;双引号内为刚刚创建的 node_cache 文件夹路径&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;npm&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; config set cache &amp;quot;C:\Program Files\nodejs\node_cache&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;1646154565842.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h4 id=&quot;4-she-zhi-xi-tong-huan-jing-bian-liang&quot;&gt;4.设置系统环境变量&lt;&#x2F;h4&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;1646154866436.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;将环境变量 Path 中的npm路径更换为刚才&lt;strong&gt;自定义的 node_global 全局包&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;本案例为 C:\Program Files\nodejs\node_global&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;1646154941007.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;新建一个系统变量&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;1646155458711.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;变量名：NODE_PATH&lt;&#x2F;p&gt;
&lt;p&gt;变量值：&lt;strong&gt;自定义的 node_global 全局包路径后 + \node_modules&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;1646155075658.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;br&#x2F;&gt;
&lt;blockquote&gt;
&lt;p&gt;在Path变量中新建&lt;&#x2F;p&gt;
&lt;p&gt;%NODE_PATH%&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;1646155114230.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;1646155789028.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>关于 TimberKito 博客</title>
        <published>2022-01-22T00:00:00+00:00</published>
        <updated>2022-01-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/about-timberkito-blog/"/>
        <id>https://timberkito.com/posts/about-timberkito-blog/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/about-timberkito-blog/">&lt;h2 id=&quot;bo-ke-di-zhi&quot;&gt;博客地址&lt;&#x2F;h2&gt;
&lt;h2 id=&quot;jian-jie&quot;&gt;简介&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;大家好，我是Timber
欢迎来到我的blog，在这里可以交流计算机各方面知识。 此博客主要涉及JAVA开发相关内容，记录个人学习路上的点滴经历与实践。
创立博客的目的，一方面是记录学习笔记，作知识储备积累。
天道酬勤，自强不息，我们一起努力！&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;ji-shu-zhan&quot;&gt;技术栈&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;✍️常用语言：Java、JavaScript、Python&lt;&#x2F;li&gt;
&lt;li&gt;💽数据库：MySQL、Redis&lt;&#x2F;li&gt;
&lt;li&gt;🛠开发框架：Spring、Spring Boot、MyBatis、JQuery、Bootstrap、Vue&lt;&#x2F;li&gt;
&lt;li&gt;🗄️分布式：Docker&lt;&#x2F;li&gt;
&lt;li&gt;⚙️构建工具： Maven、Tomcat&lt;&#x2F;li&gt;
&lt;li&gt;💻环境： Windows、CentOS、Linux、 Git、Intellij IDEA&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;jin-kuang&quot;&gt;近况&lt;&#x2F;h2&gt;
&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;TimberKito&quot; target=&quot;_blank&quot;&gt;
	&lt;img src=&quot;https:&#x2F;&#x2F;ghchart.rshah.org&#x2F;TimberKito&quot; alt=&quot;Github contributions&quot;&gt;
&lt;&#x2F;a&gt;
&lt;h2 id=&quot;wo-de-bo-ke&quot;&gt;我的博客&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;编程、生活随笔&lt;&#x2F;li&gt;
&lt;li&gt;记录学习笔记，作知识储备积累&lt;&#x2F;li&gt;
&lt;li&gt;提升自己的写作能力&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;mian-ze-sheng-ming&quot;&gt;免责声明&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;本站所有文章为了记录工作、学习中遇到的问题、编程及生活随笔，可能由于本人能力有限，有些不正确的地方，仅供参考。&lt;&#x2F;li&gt;
&lt;li&gt;博客中转载文章会写明来源，感谢原作者的辛苦写作，如果有异议，及时联系我处理，谢谢！&lt;&#x2F;li&gt;
&lt;li&gt;如他人引用本站中的文章或内容，请注明出处。但其文章或内容或已不是本人原本的意思，请各位注意辨别！&lt;&#x2F;li&gt;
&lt;li&gt;本站所有文章仅代表个人当时意见和想法。&lt;&#x2F;li&gt;
&lt;li&gt;欢迎指出网站中有问题的地方，我会尽快修正，谢谢！&lt;&#x2F;li&gt;
&lt;li&gt;内容转载请保留署名以及原文连接，谢谢！&lt;&#x2F;li&gt;
&lt;li&gt;本网站所有作品采用 &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;http:&#x2F;&#x2F;creativecommons.org&#x2F;licenses&#x2F;by-sa&#x2F;4.0&#x2F;&quot;&gt;知识共享署名-相同方式共享 4.0 国际许可协议&lt;&#x2F;a&gt; 进行许可。 &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;http:&#x2F;&#x2F;creativecommons.org&#x2F;licenses&#x2F;by-sa&#x2F;4.0&#x2F;&quot;&gt;&lt;img src=&quot;https:&#x2F;&#x2F;i.creativecommons.org&#x2F;l&#x2F;by-sa&#x2F;4.0&#x2F;80x15.png&quot; alt=&quot;知识共享许可协议&quot; &#x2F;&gt;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>S-light 1.1.0 版本发布</title>
        <published>2022-01-22T00:00:00+00:00</published>
        <updated>2022-01-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/s-light-1-1-0-release/"/>
        <id>https://timberkito.com/posts/s-light-1-1-0-release/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/s-light-1-1-0-release/">&lt;!--
 * @Author: Timber.Wang
 * @Date: 2022-01-22 19:05:43
 * @LastEditors: Timber.Wang
 * @LastEditTime: 2022-01-22 19:22:18
 * @Description:
--&gt;
&lt;p align=&quot;center&quot;&gt;
    &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Elijah-0616&#x2F;bdLite&quot; target=&quot;_blank&quot;&gt;
        &lt;img width=&quot;100&quot; src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;QQ%E5%9B%BE%E7%89%8720220111125629.png&quot; alt=&quot;logo&quot; &#x2F;&gt;
    &lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
&lt;h3 id=&quot;s-light-yi-ge-liu-lan-qi-qi-shi-ye&quot;&gt;&lt;p align=&quot;center&quot;&gt;&lt;b&gt;S-light&lt;&#x2F;b&gt;，一个浏览器起始页:)&lt;&#x2F;p&gt;&lt;&#x2F;h3&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;1-1-0-ban-ben-zheng-shi-fa-bu&quot;&gt;1.1.0 版本正式发布&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;经过一周的刻苦开发（这次没摸鱼，真的很刻苦，(。&amp;gt;︿&amp;lt;)_θ ），v1.1.0 版本终于发布了！！！ヾ(≧▽≦*)o
欢迎体验&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;what-s-changed&quot;&gt;What&#x27;s Changed&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;新增: 动态背景开关 by @TimberKito in &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Elijah-0616&#x2F;bdLite&#x2F;pull&#x2F;7&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;Elijah-0616&#x2F;bdLite&#x2F;pull&#x2F;7&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;新增: 优化用户体验 by @TimberKito in &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Elijah-0616&#x2F;bdLite&#x2F;pull&#x2F;9&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;Elijah-0616&#x2F;bdLite&#x2F;pull&#x2F;9&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;新增: 小彩蛋（输入空文本状态下按 10 次回车触发） by @TimberKito in &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Elijah-0616&#x2F;bdLite&#x2F;pull&#x2F;10&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;Elijah-0616&#x2F;bdLite&#x2F;pull&#x2F;10&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;新增: 交互动画和毛玻璃背景 by @Elijah-0616&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;&#x2F;strong&gt;: &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Elijah-0616&#x2F;bdLite&#x2F;compare&#x2F;v1.0.0...v1.1.0&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;Elijah-0616&#x2F;bdLite&#x2F;compare&#x2F;v1.0.0...v1.1.0&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;shi-yong-fang-fa&quot;&gt;使用方法&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;liu-lan-qi-fang-wen-yi-xia-di-zhi&quot;&gt;浏览器访问以下地址&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Elijah-0616&#x2F;bdLite&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;Elijah-0616&#x2F;bdLite&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;ben-di-yun-xing&quot;&gt;本地运行&lt;&#x2F;h3&gt;
&lt;p&gt;克隆项目到本地&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;如果你已经 fork 此项目，请将以下命令中的 Elijah-0616 替换为你的 Github 用户名。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; clone&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --recursive&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; https:&#x2F;&#x2F;github.com&#x2F;Elijah-0616&#x2F;bdLite.git&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;用浏览器打开 index.html 文件&lt;&#x2F;p&gt;
&lt;h2 id=&quot;xiang-mu-yu-lan&quot;&gt;　项目预览&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;search.elijah16t.ml&#x2F;images&#x2F;2022-01-18_200034.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>S-light：一个浏览器起始页</title>
        <published>2022-01-13T00:00:00+00:00</published>
        <updated>2022-01-13T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/s-light-browser-start-page/"/>
        <id>https://timberkito.com/posts/s-light-browser-start-page/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/s-light-browser-start-page/">&lt;p align=&quot;center&quot;&gt;
    &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Elijah-0616&#x2F;bdLite&quot; target=&quot;_blank&quot;&gt;
        &lt;img width=&quot;100&quot; src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;QQ%E5%9B%BE%E7%89%8720220111125629.png&quot; alt=&quot;logo&quot; &#x2F;&gt;
    &lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
&lt;h3 id=&quot;s-light-yi-ge-liu-lan-qi-qi-shi-ye&quot;&gt;&lt;p align=&quot;center&quot;&gt;&lt;b&gt;S-light&lt;&#x2F;b&gt;，一个浏览器起始页:)&lt;&#x2F;p&gt;&lt;&#x2F;h3&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;qian-yan&quot;&gt;前言&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;由于平时经常接触后端的东西，即使有些项目中涉及前端的内容也是用框架来写，这就导致我关于前端的基础知识（HTML+JavaScript+CSS）非常薄弱。”水之积也不厚,则其负大舟也无力”提高自己的基础水平对以后的学习乃至工作至关重要。正好我的同学 &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Elijah-0616&quot;&gt;elijah&lt;&#x2F;a&gt;说他在搞一个小项目，我便加入了他。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;chun-jiang-chao-shui-lian-hai-ping-hai-shang-ming-yue-gong-chao-sheng&quot;&gt;春江潮水连海平，海上明月共潮生&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;yu-shi-s-lightxiang-mu-dan-sheng-liao&quot;&gt;于是S-light项目诞生了！&lt;&#x2F;h4&gt;
&lt;blockquote&gt;
&lt;p&gt;正如上文所说，这是一个有趣的小项目。经过一个月的刻（mo）苦（yu）开发，我们在2022年1月11日发布了S-light的1.0正式版本，一个浏览器起始页，值得你去尝试！&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;te-xing&quot;&gt;特性&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;清新简约的浏览器起始页&lt;&#x2F;li&gt;
&lt;li&gt;支持各种搜索引擎(百度、必应、谷歌、B站、油管)&lt;&#x2F;li&gt;
&lt;li&gt;美观的动态效果&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;xiang-mu-jie-tu&quot;&gt;项目截图&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1642086551127.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;shi-yong-fang-fa&quot;&gt;使用方法&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;liu-lan-qi-fang-wen-yi-xia-di-zhi&quot;&gt;浏览器访问以下地址&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;　　https:&#x2F;&#x2F;github.com&#x2F;Elijah-0616&#x2F;bdLite&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;ben-di-yun-xing&quot;&gt;本地运行&lt;&#x2F;h3&gt;
&lt;p&gt;克隆项目到本地&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;如果你已经fork此项目，请将以下命令中的 Elijah-0616 替换为你的 Github 用户名。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; clone&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --recursive&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; https:&#x2F;&#x2F;github.com&#x2F;Elijah-0616&#x2F;bdLite.git&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;用浏览器打开index.html文件&lt;&#x2F;p&gt;
&lt;h2 id=&quot;jia-ru-wo-men&quot;&gt;加入我们&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;项目地址：https:&#x2F;&#x2F;github.com&#x2F;Elijah-0616&#x2F;bdLite&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>Windows 更新安装错误 - 0x80070643</title>
        <published>2021-12-14T00:00:00+00:00</published>
        <updated>2021-12-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/windows-update-error-0x80070643/"/>
        <id>https://timberkito.com/posts/windows-update-error-0x80070643/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/windows-update-error-0x80070643/">&lt;h3 id=&quot;jin-tian-wu-yi-jian-da-kai-windowsgeng-xin-fa-xian-bao-cuo&quot;&gt;今天无意间打开Windows更新发现报错&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1639472362039.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;jie-jue-fang-an&quot;&gt;解决方案&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;win+R后，输入services.msc，回车。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;找到Windows Update，手动停掉。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;定位到C:\Windows\Software Distribution，清掉datastore里的内容。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;重启Windows Update，重新检查更新。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;can-kao&quot;&gt;参考&lt;&#x2F;h3&gt;
&lt;p&gt;https:&#x2F;&#x2F;answers.microsoft.com&#x2F;zh-hans&#x2F;windows&#x2F;forum&#x2F;windows_10-update&#x2F;%E9%94%99%E8%AF%AF-0x80070643&#x2F;3a5dcc9a-44da-4de6-b40c-83b99510ca7d&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>计算机基础知识</title>
        <published>2021-12-02T00:00:00+00:00</published>
        <updated>2021-12-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/computer-fundamentals/"/>
        <id>https://timberkito.com/posts/computer-fundamentals/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/computer-fundamentals/">&lt;h2 id=&quot;ji-suan-ji-ji-chu-zhi-shi&quot;&gt;计算机基础知识&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;1.最早使用操作系统的是&lt;u&gt;&lt;strong&gt;第二代计算机&lt;&#x2F;strong&gt;&lt;&#x2F;u&gt;（&lt;strong&gt;晶体管时代&lt;&#x2F;strong&gt;）&lt;&#x2F;li&gt;
&lt;li&gt;2.编译程序能产生目标程序而解释程序则不能&lt;&#x2F;li&gt;
&lt;li&gt;3.微处理器有**&lt;u&gt;运算&lt;&#x2F;u&gt;&lt;strong&gt;和&lt;&#x2F;strong&gt;&lt;u&gt;控制&lt;&#x2F;u&gt;&lt;strong&gt;、&lt;&#x2F;strong&gt;&lt;u&gt;存储&lt;&#x2F;u&gt;**（寄存器存储指令、数据）功能&lt;&#x2F;li&gt;
&lt;li&gt;4.表示信息的最小&#x2F;基本单位是b，存储信息的基本单位是B&lt;&#x2F;li&gt;
&lt;li&gt;5.Cache解决CPU和内存之间&lt;u&gt;速度不匹配&lt;&#x2F;u&gt;问题&lt;&#x2F;li&gt;
&lt;li&gt;6.用一个字节表示无符号整数，能表示的最大十进制整数是255&lt;&#x2F;li&gt;
&lt;li&gt;7.十进制转二进制数可能无法实现精确转换&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;十进制整数可以精转，十进制小数可能会除不尽&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;8.计算机的运算器由**&lt;u&gt;数据寄存器&lt;&#x2F;u&gt;&lt;strong&gt;，&lt;&#x2F;strong&gt;&lt;u&gt;累加器&lt;&#x2F;u&gt;&lt;strong&gt;，&lt;&#x2F;strong&gt;&lt;u&gt;算术逻辑部件&lt;&#x2F;u&gt;**组成&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;指令寄存器在控制器内&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;9.计算机中的总线：&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;地址总线：&lt;strong&gt;传递地址信息&lt;&#x2F;strong&gt;
数据总线：&lt;strong&gt;传递数据信息&lt;&#x2F;strong&gt;
控制总线：&lt;strong&gt;传递控制信号&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;10.CPU通过数据总线一次存取、加工和传输的数据称为：&lt;strong&gt;字&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;11.内存中的每一个储存单元被赋予一个唯一的序号，该序号称为：&lt;strong&gt;地址&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;12.机器语言中每一个语句称之为：&lt;strong&gt;机器指令&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;13.I&#x2F;O设备要想和总线连接必须要有相应的接口&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;直接接上I&#x2F;O总线，使I&#x2F;O设备更换困难，而且计算机性能下降&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;14.主存储器的地址编号为0000H到7FFFH，则该存储器的容量&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;一个地址可存储1Byte&lt;&#x2F;strong&gt;，地址从0000H到7FFFH，容量为32767+1Byte&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;15.汉字系统中的&lt;strong&gt;汉字字库&lt;&#x2F;strong&gt;里存放的是汉字的**&lt;u&gt;字形码&lt;&#x2F;u&gt;**&lt;&#x2F;li&gt;
&lt;li&gt;16.声卡上的乐器数字接口的英文缩写是MIDI&lt;&#x2F;li&gt;
&lt;li&gt;17.声卡上的主要性能由采样位数和量化位数决定&lt;&#x2F;li&gt;
&lt;li&gt;18.软盘最外层为0磁道，软盘的最内层为79磁道&lt;&#x2F;li&gt;
&lt;li&gt;19.计算机的分类&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;按照计算机的工作原理（处理对象）可以将计算机划分为数字计算机、模拟计算机、数模混合计算机；&lt;&#x2F;li&gt;
&lt;li&gt;按照计算机的功能用途可将计算机划分为通用计算机，专用计算机&lt;&#x2F;li&gt;
&lt;li&gt;按照计算机的规模可将计算机划分为巨型机、大型机、小型机、微型机、工作站等&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;20.计算机指令是指示计算机执行某种操作的指令，它由一串二进制数码组成，&lt;u&gt;能识别寄存器存放的内容是数据还是地址&lt;&#x2F;u&gt;&lt;&#x2F;li&gt;
&lt;li&gt;21.每个存储单元的大小为8个二进制位，即一个字节（8bit = 1Byte）&lt;&#x2F;li&gt;
&lt;li&gt;22.给出二进制小数，若小数点**&lt;u&gt;右移n位&lt;&#x2F;u&gt;&lt;strong&gt;，结果是原数的&lt;&#x2F;strong&gt;2^n**倍&lt;&#x2F;li&gt;
&lt;li&gt;23.正确表示32位二进制地址，最多需要8位十六进制数&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;每4位二进制可用1位十六进制表示8421法，则32÷4=8&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;24.字长是CPU一次&lt;strong&gt;并行处理&lt;&#x2F;strong&gt;二进制的位数&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;25.将汉字通过键盘输入到计算机采用的代码称之为输入码，也称之为汉字&lt;strong&gt;外部码（外码）&lt;&#x2F;strong&gt;。输入码包括流水码、音码、形码、均有重码、&lt;u&gt;不唯一&lt;&#x2F;u&gt;。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;26.CMOS芯片是用来保存计算机基本启动信息（日期、时间、启动设置等）以及BIOS的设置信息的**++RAM芯片++**，CMOS &lt;strong&gt;RAM芯片由系统通过一块纽扣电池供电&lt;&#x2F;strong&gt;，因此无论是在关机状态中，还是遭遇系统断电情况，CMOS芯片中的信息都不会丢失&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;27.一个汉字的机内码两个字节的最高位均为1，国标码两个字节最高位均为0&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;28.阶码的首位数值为1，表示阶码为负；尾数的首位数值为1，表示尾数为负&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;29.&lt;u&gt;比特&lt;&#x2F;u&gt;中的“1”和“0”没有大小之分，只是&lt;strong&gt;表示两种状态&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;30.光盘上记录信息的&lt;strong&gt;光道&lt;&#x2F;strong&gt;是&lt;u&gt;由里向外的螺旋线&lt;&#x2F;u&gt;，磁盘上记录信息是由&lt;u&gt;一圈一圈的同心圆构成的&lt;strong&gt;磁道&lt;&#x2F;strong&gt;&lt;&#x2F;u&gt;，通常磁盘有80个磁道，每个磁道有18个扇区&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;31.图中的“SS”代表“super speed”，是&lt;strong&gt;USB3.0&lt;&#x2F;strong&gt;的标识，传输速率最大可达5.0Gbps（625MB&#x2F;s）
&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1636707695082.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;32.&lt;strong&gt;串行接口&lt;&#x2F;strong&gt;是&lt;strong&gt;一位一位地传输&lt;&#x2F;strong&gt;数据，一次只传输一位&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;33.&lt;strong&gt;内存（RAM）容量&lt;&#x2F;strong&gt;与CPU数据线的宽度无关，与&lt;strong&gt;CPU地址线宽度有关&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;34.光盘驱动器属于&lt;strong&gt;外设，没有安装在主板上&lt;&#x2F;strong&gt;而是固定在机箱上&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;35.&lt;strong&gt;地址总线的位数与存储单元个数有关&lt;&#x2F;strong&gt;，地址总线位数越长，可访问的存储单元个数就越多，比如32位地址线，可寻址的最大容量为2^32B&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>计算机网络技术</title>
        <published>2021-12-02T00:00:00+00:00</published>
        <updated>2021-12-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/computer-network-fundamentals/"/>
        <id>https://timberkito.com/posts/computer-network-fundamentals/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/computer-network-fundamentals/">&lt;h2 id=&quot;ji-suan-ji-wang-luo-ji-shu&quot;&gt;计算机网络技术&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;计算机网络中，&lt;strong&gt;MAC地址是48位二进制数&lt;&#x2F;strong&gt;。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;子网掩码是一个32位地址，是与IP地址结合使用的一种技术。&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;1.用于屏蔽IP地址的一部分以区别和标识&lt;&#x2F;p&gt;
&lt;p&gt;2.将一个大的IP网络划分为若干小的子网络，&lt;strong&gt;减少IP的浪费&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;集线器的功能是对接收到的&lt;strong&gt;信号进行再生放大&lt;&#x2F;strong&gt;。&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;集线器本质上是中继器&lt;strong&gt;工作在物理层&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;交换机工作在数据链路层&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;当用户使用ADSL方式接入Internet并采用虚拟拨号时，&lt;strong&gt;ISP分配动态IP地址&lt;&#x2F;strong&gt;。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;WWW是一个&lt;strong&gt;基于超文本的信息检索工具&lt;&#x2F;strong&gt;，它将全世界Internet上的不同地点的信息连接在一起。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;从物理上讲，计算机网络系统主要由**&lt;u&gt;计算机系统&lt;&#x2F;u&gt;&lt;strong&gt;，&lt;&#x2F;strong&gt;&lt;u&gt;通信链路&lt;&#x2F;u&gt;&lt;strong&gt;和&lt;&#x2F;strong&gt;&lt;u&gt;网络节点&lt;&#x2F;u&gt;**构成。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;计算机网络&lt;strong&gt;最本质的功能&lt;&#x2F;strong&gt;是实现**&lt;u&gt;资源共享&lt;&#x2F;u&gt;**。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;计算机网络中，通信双方必须共同遵守的规定和约定，称之为协议。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;顶级域名分为三类：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;一类称为国家和地区顶级域名&lt;&#x2F;p&gt;
&lt;p&gt;另一类称为国际通用顶级域名&lt;&#x2F;p&gt;
&lt;p&gt;第三类是新顶级域名&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;蓝牙技术是一种&lt;strong&gt;无线数据和语音通信的开放性全球规范&lt;&#x2F;strong&gt;，它的目标是提供一种通用的无线接口标准，通过无线电波来实现所有移动设备之间的信息传输舒服。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;WWW采用的是**&lt;u&gt;客户机&#x2F;服务器&lt;&#x2F;u&gt;**交互模式&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;网络协议的三要素分别为：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;语法：用户数据与控制信息的结构或格式。&lt;&#x2F;p&gt;
&lt;p&gt;语义：规定需要发出何种控制信息，以及完成的动作与做出的响应。&lt;&#x2F;p&gt;
&lt;p&gt;时序：对事件实现顺序的详细说明。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;分组交换&lt;&#x2F;u&gt;&lt;strong&gt;不必在传输前建立双方物理链路，因为是&lt;&#x2F;strong&gt;存储转发&lt;&#x2F;strong&gt;。&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;比如QQ好友不在线，也能发消息，因此双方没有固定的物理链路。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;因为IP数量有限，只能在用户需要上网时分配给用户，而不在上网的用户则不需要IP，可以让有限的资源得到最大限度的利用，从而节省IP资源。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;TCP提供面向连接的服务，UDP提供无面向连接的服务。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;MODEM调制解调器由调制器和解调器两个部分组成&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;调制是指把数字信号变换为模拟信号&lt;&#x2F;p&gt;
&lt;p&gt;解调是指把模拟信号变换为数字信号&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;FTP服务器允许用户匿名访问，其登陆账号为anonymous，&lt;strong&gt;无口令&lt;&#x2F;strong&gt;。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;广域网和局域网的最本质的区别是通讯方式不同：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;局域网是&lt;strong&gt;分组广播&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;广域网是&lt;strong&gt;分组交换&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;DNS服务&lt;strong&gt;只能正向进行&lt;&#x2F;strong&gt;，将**&lt;u&gt;域名转换为IP地址&lt;&#x2F;u&gt;**。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;第一代计算机网络是以分组交换网为主。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;以太网是最常用的一种局域网，它采用广播方式进行通讯。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;局域网一般由**&lt;u&gt;网络系统软件&lt;&#x2F;u&gt;&lt;strong&gt;、&lt;&#x2F;strong&gt;&lt;u&gt;工作站&lt;&#x2F;u&gt;&lt;strong&gt;、&lt;&#x2F;strong&gt;&lt;u&gt;网络服务器&lt;&#x2F;u&gt;&lt;strong&gt;、&lt;&#x2F;strong&gt;&lt;u&gt;网卡&lt;&#x2F;u&gt;&lt;strong&gt;、&lt;&#x2F;strong&gt;&lt;u&gt;网间连接器&lt;&#x2F;u&gt;&lt;strong&gt;和&lt;&#x2F;strong&gt;&lt;u&gt;传输媒体&lt;&#x2F;u&gt;**组成。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;以太网中的节点相互通信时，通常使用MAC地址来指出收、发双方是那两个节点。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;网桥&lt;&#x2F;strong&gt;将**&lt;u&gt;两个相似的网络连接起来&lt;&#x2F;u&gt;**，并对网络数据的流通进行管理。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;发布到因特网的www信息又称&lt;strong&gt;网页&lt;&#x2F;strong&gt;，终端用户可以通过浏览器读取。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;以太网在传送数据时，将数据分成若干帧，每个节点每次可传送一个帧。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;中继器是工作在物理层的设备。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;文件服务器以集中方式管理共享文件，工作站可以根据所规定的权限对文件进行读写以及操作，&lt;strong&gt;用户在权限不足时不能访问任意一台主机的所有资源&lt;&#x2F;strong&gt;。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;网络中的**&lt;u&gt;所有交换机都必须有一张路由表&lt;&#x2F;u&gt;**，表中应有完整的路由，即必须包括所有可能目的地的下一站交换机位置，而且下一站的交换机位置必须是指向目的地的最短路径。&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;转发表是从路由表自动得出的&lt;&#x2F;strong&gt;，并不是由网络管理人员根据网络的连接情况预先输入的&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;广域网&lt;&#x2F;strong&gt;大多使用电信系统的公用数据通信线路作为传输介质，因此&lt;strong&gt;传输速率会收到线路繁忙程度的影响&lt;&#x2F;strong&gt;，有时会比较低。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;分组交换&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;优点：线路利用率较高；收发双方不需要同时工作；可以给数据包建立优先级，一些重要的数据包能优先传递。&lt;&#x2F;p&gt;
&lt;p&gt;缺点：&lt;strong&gt;不适用于实时或交互通信方式&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;路由器特性&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;1.处理的信息量比交换机多，处理速度比交换机慢。&lt;&#x2F;p&gt;
&lt;p&gt;2.可以实现不同的服务质量，根据IP报头字段的编码选择不同可靠性、优先级、延迟或吞吐率的线路进行转发，所以不止是提供延迟最小的路由。&lt;&#x2F;p&gt;
&lt;p&gt;3.连接的是多个逻辑上独立的网络，而各个网络的IP地址均不相同，故应给网络中的路由器分配两个以上的IP地址。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;IP数据报由两部分组成，头部和数据区&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;头部的信息主要是为了确定在网络中进行数据传输的路由。&lt;&#x2F;p&gt;
&lt;p&gt;数据区最大的时候可以达到64KB&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;在传送数据时，以**&lt;u&gt;原封不动&lt;&#x2F;u&gt;&lt;strong&gt;的形式把来自终端的信息送人线路称之为&lt;&#x2F;strong&gt;&lt;u&gt;基带传输&lt;&#x2F;u&gt;&lt;strong&gt;，这种方式&lt;&#x2F;strong&gt;&lt;u&gt;适合近距离传送&lt;&#x2F;u&gt;**。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;计算机网络的发展历程：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;以&lt;strong&gt;数据通信&lt;&#x2F;strong&gt;为主的第一代计算机网络&lt;&#x2F;p&gt;
&lt;p&gt;以&lt;strong&gt;资源共享&lt;&#x2F;strong&gt;为主的第二代计算机网络&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;体系结构标准化&lt;&#x2F;strong&gt;的第三代计算机网络&lt;&#x2F;p&gt;
&lt;p&gt;以&lt;strong&gt;Internet为核心&lt;&#x2F;strong&gt;的第四代计算机网络&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;利用微波可将信息集中向某个方向进行定向传输，但是这样并不能防止他人截取信号。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;无线电频率通信中的&lt;strong&gt;扩展频谱通信技术&lt;&#x2F;strong&gt;是当前&lt;strong&gt;无线电局域网&lt;&#x2F;strong&gt;的主流技术。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;双绞线使用的最大距离为100米&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;OSI参考模型中的物理层（最底层），传送数据的单位是比特（bit）&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;在数据通信过程中&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;将模拟信号还原成数字信号的过程称之为解调&lt;&#x2F;p&gt;
&lt;p&gt;将数字信号调制成模拟信号的过程称之为调制&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>数据库与 Access</title>
        <published>2021-12-02T00:00:00+00:00</published>
        <updated>2021-12-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/database-and-access/"/>
        <id>https://timberkito.com/posts/database-and-access/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/database-and-access/">&lt;h2 id=&quot;shu-ju-ku-yu-access&quot;&gt;数据库与Access&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;1.**&lt;u&gt;数据结构化&lt;&#x2F;u&gt;**是数据库系统和文件系统的根本区别&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;2.Access中**&lt;u&gt;字段名称&lt;&#x2F;u&gt;&lt;strong&gt;最长不超过&lt;&#x2F;strong&gt;&lt;u&gt;255个字符&lt;&#x2F;u&gt;**&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;3.数据库系统的**&lt;u&gt;核心&lt;&#x2F;u&gt;&lt;strong&gt;是&lt;&#x2F;strong&gt;&lt;u&gt;数据库管理系统&lt;&#x2F;u&gt;**&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;4.数据库中的每个表**&lt;u&gt;主键可有可无&lt;&#x2F;u&gt;**&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;5.运算关系&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;传统的关系运算：交、并、差、广义笛卡尔积&lt;&#x2F;p&gt;
&lt;p&gt;专门的关系运算：&lt;&#x2F;p&gt;
&lt;p&gt;选择：选择满足指定条件的&lt;strong&gt;元组&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;投影：选择某些&lt;strong&gt;属性&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;连接：两个关系的&lt;strong&gt;笛卡尔积中选取属性&lt;&#x2F;strong&gt;间满足的一定条件的元组&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;6.在Access中**&lt;u&gt;备注型不能建立索引&lt;&#x2F;u&gt;**&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;7.Access中like的通配符用法：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;“？”表示任何单一字符&lt;&#x2F;p&gt;
&lt;p&gt;“X” 表示零个或多个字符&lt;&#x2F;p&gt;
&lt;p&gt;“#” 表示任何一个数字&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;8.在Access中，设置**&lt;u&gt;输入掩码&lt;&#x2F;u&gt;&lt;strong&gt;，可以指定输入数据的格式和长度。设置&lt;&#x2F;strong&gt;&lt;u&gt;有效性规则&lt;&#x2F;u&gt;**，判定输入数据是否有效，满足则输入&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;9.在Access中设计窗体可以使用多种多样的控件&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;10.SQL指结构化查询语言，是一种高级的**&lt;u&gt;非过程化语言，非交互式&lt;&#x2F;u&gt;**&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;11.数据操纵语言是英文缩写：&lt;strong&gt;&lt;u&gt;DML&lt;&#x2F;u&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;12.在Access中，报表是按**&lt;u&gt;节&lt;&#x2F;u&gt;**设计的&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;13.数据完整性包括**&lt;u&gt;实体完整性&lt;&#x2F;u&gt;&lt;strong&gt;、&lt;&#x2F;strong&gt;&lt;u&gt;参照完整性&lt;&#x2F;u&gt;&lt;strong&gt;、&lt;&#x2F;strong&gt;&lt;u&gt;复杂的事务规则&lt;&#x2F;u&gt;**&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;14.SQL的英文全写形式：&lt;strong&gt;&lt;u&gt;structured query language&lt;&#x2F;u&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;15.Access定义了**&lt;u&gt;12种数据类型&lt;&#x2F;u&gt;**&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;16.SQL语句查询表中所有列名（字段名）&lt;strong&gt;以“，”分隔&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;sql&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;SELECT&lt;&#x2F;span&gt;&lt;span&gt; 列名1,列名2 &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;FROM&lt;&#x2F;span&gt;&lt;span&gt; 表名 &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;WHERE&lt;&#x2F;span&gt;&lt;span&gt; 列名1 运算符  值&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;17.关系模型的数据结构是一个“二维表”，&lt;strong&gt;每个二维表可称为一个关系，每个关系有一个关系名&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;18.表中的每一个元组是属性值的集合，&lt;strong&gt;&lt;u&gt;属性是关系二维表中最小的单位&lt;&#x2F;u&gt;&lt;&#x2F;strong&gt;，它不能再被划分&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;19.Access中&lt;strong&gt;使用&lt;u&gt;VBA&lt;&#x2F;u&gt;作为其内置的编程语言&lt;&#x2F;strong&gt;，而VBA采用面向对象程序设计思想&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;20.**&lt;u&gt;参照的完整性&lt;&#x2F;u&gt;**要求主表中没有相关记录时就不能将记录添加到相关表中&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;21.利用Access创建的数据库文件，其扩展名为**&lt;u&gt;MDB、ACCDB&lt;&#x2F;u&gt;**&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;22.创建交叉表查询时，最多只能选择&lt;strong&gt;3个行标题字段&lt;&#x2F;strong&gt;，&lt;strong&gt;列标题字段对多选择1个&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;23.在Access中，&lt;strong&gt;&lt;u&gt;字段名称长度小于等于64，文本型字段长度1到255&lt;&#x2F;u&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;24.用户使用数据库时候，可用&lt;strong&gt;报表来显示和汇总数据&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;25.如果一个字段要&lt;strong&gt;保存照片&lt;&#x2F;strong&gt;，该字段数据类型为**&lt;u&gt;OLE对象&lt;&#x2F;u&gt;**&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;26.报表是以&lt;strong&gt;打印格式显示&lt;&#x2F;strong&gt;用户数据的一种有效方式&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;27.利用&lt;strong&gt;对话框&lt;&#x2F;strong&gt;提示用户&lt;strong&gt;输入参数的查询&lt;&#x2F;strong&gt;过程称为**&lt;u&gt;参数查询&lt;&#x2F;u&gt;**&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;28.查询建立好后，要通过&lt;strong&gt;运行&lt;&#x2F;strong&gt;来获取查询结果&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;29.SQL语言通常包括：&lt;strong&gt;&lt;u&gt;数据定义语言、数据操作语言、数据查询语言、数据控制语言&lt;&#x2F;u&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;30.Access表中的每一个&lt;strong&gt;字段是不可拆分的&lt;&#x2F;strong&gt;，是&lt;u&gt;最基本的数据单位&lt;&#x2F;u&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;31.表是数据最&lt;u&gt;基本的操作对象&lt;&#x2F;u&gt;，也是整个数据库系统的&lt;u&gt;&lt;strong&gt;数据来源&lt;&#x2F;strong&gt;&lt;&#x2F;u&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;32.&lt;strong&gt;&lt;u&gt;实体-联系&lt;&#x2F;u&gt;&lt;strong&gt;方法简&lt;&#x2F;strong&gt;称&lt;u&gt;E-R方法&lt;&#x2F;u&gt;&lt;&#x2F;strong&gt;，是描述世界&lt;strong&gt;概念结构模型&lt;&#x2F;strong&gt;的有效方法&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;33.数据库的&lt;strong&gt;自然连接&lt;&#x2F;strong&gt;是指&lt;strong&gt;无重复属性&lt;&#x2F;strong&gt;的等值连接&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;34.在Access对象中，表是存放数据的容器，&lt;strong&gt;&lt;u&gt;查询是设计数据库的目的&lt;&#x2F;u&gt;&lt;&#x2F;strong&gt;，窗体是为了编制程序处理数据，报表是应用扩展，宏和模块是为了解决一些复杂问题&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;35.删除的记录是彻底删除，&lt;strong&gt;&lt;u&gt;不能恢复&lt;&#x2F;u&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;36.投影运算是在关系中**&lt;u&gt;选择某些属性（列）组成新的关系&lt;&#x2F;u&gt;**&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;37.数据库系统的数据独立性是指数据的储存和使用数据的程序彼此独立，&lt;strong&gt;&lt;u&gt;数据存储结构的变化不影响用户程序使用&lt;&#x2F;u&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;38.&lt;strong&gt;&lt;u&gt;Esc键&lt;&#x2F;u&gt;&lt;strong&gt;可以用来关闭对话窗口，&lt;&#x2F;strong&gt;&lt;u&gt;但是不能关闭程序窗口&lt;&#x2F;u&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;39.文本型字段的字段大小最多可达255个字符，如果取值的**&lt;u&gt;字符个数超过了255，可使用备注型&lt;&#x2F;u&gt;**&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;40.建议每个表设置主键，但主键并不是必须进行设置的&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;41.报表也有**&lt;u&gt;页面页眉与页面页脚&lt;&#x2F;u&gt;**&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;42.数据库管理系统的**&lt;u&gt;层次结构&lt;&#x2F;u&gt;**由高到低依次为：&lt;strong&gt;应用层、语言翻译处理层、数据存取层、数据存储层、操作系统&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;43.数据库表既相互独立，又相互联系&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;44.在数据库系统中，数据的逻辑独立性指的是用户的&lt;strong&gt;应用程序与数据库中的逻辑结构&lt;&#x2F;strong&gt;是&lt;strong&gt;相互独立的&lt;&#x2F;strong&gt;。&lt;u&gt;当数据的逻辑结构发生改变时，应用程序不需要改变&lt;&#x2F;u&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;45.SQL语句中，&lt;strong&gt;SELECT子句&lt;&#x2F;strong&gt;实现关系代数中的&lt;strong&gt;投影运算&lt;&#x2F;strong&gt;，&lt;strong&gt;WHERE子句&lt;&#x2F;strong&gt;实现关系代数中的&lt;strong&gt;选择运算&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;46.追加查询用于将一个或多个表中的一组记录添加到另一个表格的表尾，不会破坏目标表的原有结构&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;47.**&lt;u&gt;外关键字&lt;&#x2F;u&gt;**允许出现重复值或空值，&lt;strong&gt;不能唯一标识表的行&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;48.数据库设计过程可分为五个阶段：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;需求分析&lt;&#x2F;strong&gt;：调查、分析的基础上明确用户对系统的需求&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;概念设计&lt;&#x2F;strong&gt;：设计概念模型，主要采用的是E-R图&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;逻辑结构设计&lt;&#x2F;strong&gt;：概念模型转化为特定的DBMS的逻辑结构&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;物理设计&lt;&#x2F;strong&gt;：设计合适的物理数据库结构&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;验证设计&lt;&#x2F;strong&gt;：运行一些典型的应用来验证数据库设计的正确性和合理性&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;49.备注型字段是可以进行格式设置的，OLE对象不能进行格式设置&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;50.自动编号数据类型是每次向表中添加记录时自动生成，但是一旦&lt;strong&gt;生成就不会再发生变化&lt;&#x2F;strong&gt;，即使删除了某条记录，Access也不会对表中的自动编号字段重新编号&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>网页制作基础</title>
        <published>2021-12-02T00:00:00+00:00</published>
        <updated>2021-12-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/web-page-fundamentals/"/>
        <id>https://timberkito.com/posts/web-page-fundamentals/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/web-page-fundamentals/">&lt;h2 id=&quot;wang-ye-zhi-zuo-ji-chu&quot;&gt;网页制作基础&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;框架是网页的一种组织形式，将相互关联的多个网页的内容组织在一个浏览器窗口中显示。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;评价一个网站页面设计的好坏，主要根据&lt;strong&gt;创意和运营效果&lt;&#x2F;strong&gt;。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;表单处理方法有&lt;strong&gt;默认、GET和POST&lt;&#x2F;strong&gt;。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;HTML的字体标记中包括&lt;strong&gt;字体大小（size）、颜色（color）、字型（face）&lt;&#x2F;strong&gt;。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;网页中最基本的对象就是&lt;strong&gt;文本和图像&lt;&#x2F;strong&gt;，通过这两种对象可以构造最简单的网站。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;动态网页是指网页中包含有&lt;strong&gt;程序代码&lt;&#x2F;strong&gt;，需要服务器执行程序才能生成网页内容。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;为了可以快速生成Web站点，多数网页制作工具，提供了&lt;strong&gt;模板和向导&lt;&#x2F;strong&gt;。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;网页的布局一般是通过&lt;strong&gt;表格和框架&lt;&#x2F;strong&gt;的使用来实现。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;一般来说，网页主要由&lt;strong&gt;文字，图片，动画，超链接和特殊组件&lt;&#x2F;strong&gt;等元素构成。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;根据链接载体的特点，可以把链接分为&lt;strong&gt;文本超链接&lt;&#x2F;strong&gt;和&lt;strong&gt;图片超链接&lt;&#x2F;strong&gt;&lt;u&gt;&lt;strong&gt;两大类&lt;&#x2F;strong&gt;&lt;&#x2F;u&gt;。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;HTML是一种&lt;strong&gt;页面描述语言&lt;&#x2F;strong&gt;，通过浏览器解释HTML各种标记，并&lt;strong&gt;使用标记描述对象&lt;&#x2F;strong&gt;。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Fireworks默认输出图像文件的扩展名是：png&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;图片文件的扩展名有bmp、png、jpg等，&lt;strong&gt;属于默认的图像文件的扩展名为png。&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>Windows环境下配置GitHub GPG签名</title>
        <published>2021-12-02T00:00:00+00:00</published>
        <updated>2021-12-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/windows-github-gpg-signing/"/>
        <id>https://timberkito.com/posts/windows-github-gpg-signing/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/windows-github-gpg-signing/">&lt;blockquote&gt;
&lt;p&gt;使用 GPG 或 S&#x2F;MIME，您可以在本地对标记和提交进行签名。 这些标记或提交在 GitHub 上标示为已验证，便于其他人信任更改来自可信的来源。&lt;&#x2F;p&gt;
&lt;p&gt;GitHub官方文档：https:&#x2F;&#x2F;docs.github.com&#x2F;cn&#x2F;authentication&#x2F;managing-commit-signature-verification&#x2F;about-commit-signature-verification&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;yi-zai-windowshuan-jing-xia-an-zhuang-gpg&quot;&gt;一、在Windows环境下安装GPG&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;xia-zai-di-zhi&quot;&gt;下载地址&lt;&#x2F;h3&gt;
&lt;p&gt;https:&#x2F;&#x2F;www.gnupg.org&#x2F;download&#x2F;index.html&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1638341808218.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h4 id=&quot;an-zhuang-wan-cheng-hou-hui-you-liang-ge-ruan-jian-du-shi-guan-li-mi-yao-de-xia-wen-hui-jiang-dao&quot;&gt;安装完成后会有两个软件，都是管理密钥的，下文会讲到&lt;&#x2F;h4&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1638342277744.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;pei-zhi-xi-tong-huan-jing-bian-liang&quot;&gt;配置系统环境变量&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1638341914681.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;注：配置环境变量时选择你所安装软件的路径&lt;&#x2F;p&gt;
&lt;p&gt;此处为默认安装路径&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h4 id=&quot;jian-cha-huan-jing-bian-liang-shi-fou-sheng-xiao&quot;&gt;检查环境变量是否生效&lt;&#x2F;h4&gt;
&lt;p&gt;终端中输入&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;gpg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --version&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;输出如下则环境变量生效&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1638342069811.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;er-shi-yong-gpgsheng-cheng-mi-yao&quot;&gt;二、使用GPG生成密钥&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-da-kai-zhong-duan-huo-zhe-git-bash-shu-ru&quot;&gt;1.打开终端或者 Git Bash 输入&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;gpg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --full-generate-key&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1638342752224.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;2-she-zhi-sheng-cheng-mi-yao&quot;&gt;2.设置生成密钥&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1638343057855.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;由于GitHub签名认证密钥必须使用 RSA&lt;&#x2F;p&gt;
&lt;p&gt;所以我们选择（1）RSA and RSA (default)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;设置密钥尺寸选择4096，密钥尺寸越长加密越强。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;设置密钥的有效期限，这里我选择的是密钥永不过期。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1638343484915.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;设置密钥的姓名，邮箱，描述&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;建议设置为GitHub用户名，GitHub绑定的邮箱&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;检查无误后输入O下一步&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1638343633626.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;这时会弹窗提示你设置管理密钥的密码&lt;&#x2F;p&gt;
&lt;p&gt;此密码以后提交代码时候也要输入，请记牢&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1638343837496.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;输入以下内容则密钥生成完成&lt;&#x2F;p&gt;
&lt;p&gt;打开可视化软件也能看见密钥已生成&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1638342277744.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1638344068530.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1638344101953.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;san-xin-zeng-gpg-mi-yao-dao-github-zhang-hu&quot;&gt;三、新增 GPG 密钥到 GitHub 帐户&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-cha-kan-mi-yao&quot;&gt;1.查看密钥&lt;&#x2F;h3&gt;
&lt;p&gt;在终端中输入&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;gpg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --list-secret-keys --keyid-format=long&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1638344664913.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;图中 sec 所在行  rsa4096为你的密钥尺寸&#x2F;&lt;strong&gt;后面为你的密钥ID&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;我这里是3BECCAC113E09805&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;在终端中输入&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;gpg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --armor --export&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; 你的密钥ID&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1638344648411.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;复制 GPG 密钥，从 &lt;code&gt;-----BEGIN PGP PUBLIC KEY BLOCK-----&lt;&#x2F;code&gt; 开始，到 &lt;code&gt;-----END PGP PUBLIC KEY BLOCK-----&lt;&#x2F;code&gt; 结束。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;2-jiang-gpgmi-yao-tian-jia-dao-githubzhang-hu&quot;&gt;2.将GPG密钥添加到GitHub账户&lt;&#x2F;h2&gt;
&lt;h4 id=&quot;dan-ji-ge-ren-zi-liao-zhao-pian-ran-hou-dan-ji-settings&quot;&gt;单击个人资料照片，然后单击Settings&lt;&#x2F;h4&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1638345132906.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h4 id=&quot;yong-hu-she-zhi-ce-bian-lan-zhong-dan-ji-ssh-and-gpg-keys&quot;&gt;用户设置侧边栏中，单击 SSH and GPG keys&lt;&#x2F;h4&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1638345177668.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h4 id=&quot;dan-ji-new-gpg-key-xin-gpg-mi-yao&quot;&gt;单击 New GPG key（新 GPG 密钥）&lt;&#x2F;h4&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1638345223353.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h4 id=&quot;zai-key-mi-yao-zi-duan-zhong-nian-tie-zai-zhong-duan-fu-zhi-de-gpg-mi-yao&quot;&gt;在 &quot;Key&quot;（密钥）字段中，粘贴在终端复制的 GPG 密钥&lt;&#x2F;h4&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1638345243143.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h4 id=&quot;she-zhi-wan-cheng&quot;&gt;设置完成&lt;&#x2F;h4&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1638345462845.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;si-zai-ben-di-gitzhong-pei-zhi-mi-yao&quot;&gt;四、在本地Git中配置密钥&lt;&#x2F;h2&gt;
&lt;h4 id=&quot;1-cha-zhao-ni-de-gpg-mi-yao-id&quot;&gt;1.查找你的GPG 密钥 ID&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;gpg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --list-secret-keys --keyid-format=long&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1638344664913.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h4 id=&quot;2-zai-git-zhong-she-zhi-gpg-qian-ming-mi-yao&quot;&gt;2.在 Git 中设置 GPG 签名密钥&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; config&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --global&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; user.signingkey 3BECCAC113E09805&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;3-she-zhi-gitti-jiao-shi-shi-yong-qian-ming-mi-yao&quot;&gt;3.设置Git提交时使用签名密钥&lt;&#x2F;h4&gt;
&lt;p&gt;全局设置&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; config&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --global&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; commit.gpgsign&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;当前项目设置&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; config commit.gpgsign&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;ruo-ti-jiao-dai-ma-shi-bao-cuo&quot;&gt;若提交代码时报错&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;strong&gt;gpg: skipped &quot;3BECCAC113E09805&quot;: No secret key&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;zai-gitzhong-she-zhi-gpgde-qi-dong-lu-jing&quot;&gt;在Git中设置gpg的启动路径&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; config&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --global&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; gpg.program &amp;quot;C:\Program Files (x86)\GnuPG\bin\gpg.exe&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>关于我：Android Framework 工程师 Timber</title>
        <published>2021-11-20T00:00:00+00:00</published>
        <updated>2021-11-20T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/about-timber-android-framework-engineer/"/>
        <id>https://timberkito.com/posts/about-timber-android-framework-engineer/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/about-timber-android-framework-engineer/">&lt;h2 id=&quot;hi-i-m-timber-wave&quot;&gt;Hi, I&#x27;m Timber :wave:&lt;&#x2F;h2&gt;
&lt;p&gt;一名 Android Framework 工程师，也会做一些 Android 应用开发。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;focus&quot;&gt;Focus&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Android Framework：系统服务、Binder 通信、权限&#x2F;进程&#x2F;窗口&#x2F;包管理等 Framework 相关问题分析&lt;&#x2F;li&gt;
&lt;li&gt;Android Platform：AOSP 阅读、系统定制、稳定性问题排查、日志分析与问题复现&lt;&#x2F;li&gt;
&lt;li&gt;App Development：Kotlin&#x2F;Java、Jetpack、Gradle、常见应用架构与工程化实践&lt;&#x2F;li&gt;
&lt;li&gt;Tools &amp;amp; Notes：adb、logcat、Perfetto、dumpsys、Markdown，以及一些提升效率的小工具&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;tech-stack&quot;&gt;Tech Stack&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;img.shields.io&#x2F;badge&#x2F;Android-3DDC84?style=flat-square&amp;amp;logo=android&amp;amp;logoColor=white&quot; alt=&quot;Android&quot; &#x2F;&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;img.shields.io&#x2F;badge&#x2F;AOSP-20232A?style=flat-square&amp;amp;logo=android&amp;amp;logoColor=3DDC84&quot; alt=&quot;AOSP&quot; &#x2F;&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;img.shields.io&#x2F;badge&#x2F;Kotlin-7F52FF?style=flat-square&amp;amp;logo=kotlin&amp;amp;logoColor=white&quot; alt=&quot;Kotlin&quot; &#x2F;&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;img.shields.io&#x2F;badge&#x2F;Java-007396?style=flat-square&amp;amp;logo=openjdk&amp;amp;logoColor=white&quot; alt=&quot;Java&quot; &#x2F;&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;img.shields.io&#x2F;badge&#x2F;Gradle-02303A?style=flat-square&amp;amp;logo=gradle&amp;amp;logoColor=white&quot; alt=&quot;Gradle&quot; &#x2F;&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;img.shields.io&#x2F;badge&#x2F;Linux-FCC624?style=flat-square&amp;amp;logo=linux&amp;amp;logoColor=black&quot; alt=&quot;Linux&quot; &#x2F;&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;img.shields.io&#x2F;badge&#x2F;Git-F05032?style=flat-square&amp;amp;logo=git&amp;amp;logoColor=white&quot; alt=&quot;Git&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;world-community-grid&quot;&gt;World Community Grid&lt;&#x2F;h3&gt;
&lt;p&gt;通过 World Community Grid 贡献闲置算力，参与公共科学计算项目。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.worldcommunitygrid.org&#x2F;stat&#x2F;viewMemberInfo.do?userName=Timberkito&quot;&gt;&lt;img src=&quot;&#x2F;images&#x2F;world-community-grid.png&quot; alt=&quot;Timberkito&amp;#39;s World Community Grid statistics&quot; &#x2F;&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>bs4实现网页图片内容爬取</title>
        <published>2021-11-03T00:00:00+00:00</published>
        <updated>2021-11-03T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/python-bs4-image-crawler/"/>
        <id>https://timberkito.com/posts/python-bs4-image-crawler/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/python-bs4-image-crawler/">&lt;h2 id=&quot;xiang-mu-xin-xi&quot;&gt;项目信息&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;作者：Timber&lt;&#x2F;p&gt;
&lt;p&gt;指导教师：CQIPC_Bai&lt;&#x2F;p&gt;
&lt;p&gt;操作系统：Windows 11 x64&lt;&#x2F;p&gt;
&lt;p&gt;开发工具：IntelliJ PyCharm 2021.1.3 (Professional Edition)&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;xiang-mu-xu-qiu&quot;&gt;项目需求&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;对给定天气预报网站进行图片爬取（代码+注释截图）&lt;&#x2F;li&gt;
&lt;li&gt;运行结果截图&lt;&#x2F;li&gt;
&lt;li&gt;梳理代码流程及说明文档的截图&lt;&#x2F;li&gt;
&lt;li&gt;特别说明：每一个截图需包含个人信息，否则影响作业得分&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;xiang-mu-jie-gou&quot;&gt;项目结构&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1635216187907.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;xiang-mu-yi-lai-ku&quot;&gt;项目依赖库&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; bs4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; BeautifulSoup&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; bs4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; UnicodeDammit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;  # BS内置库，用于推测文档编码&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; urllib.request&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;  # 发起请求，获取响应&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;yuan-dai-ma&quot;&gt;源代码&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;#!&#x2F;usr&#x2F;bin&#x2F;env python&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# -*- coding:utf-8 -*-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&amp;quot;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;# @Time    : 2021&#x2F;10&#x2F;19 15:58&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;# @Author  : Timber&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;# @Id      : 201950130527&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;# @File    : get_weather_website_graphics.py&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;# @说明&#x2F;注释: bs4实现网页图片内容爬取&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&amp;quot;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; bs4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; BeautifulSoup&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; bs4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; UnicodeDammit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;  # BS内置库，用于推测文档编码&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; urllib.request&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;  # 发起请求，获取响应&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;def&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; image_spider&lt;&#x2F;span&gt;&lt;span&gt;(start_url):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    global&lt;&#x2F;span&gt;&lt;span&gt; count&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;  # 记录图片数量&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;    # 抓bug&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    try&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        req&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; urllib.request.Request(start_url,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; headers&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;headers)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;  # 创建请求对象&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        data&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; urllib.request.urlopen(req)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;  # 发起请求&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        data&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; data.read()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;  # 获得响应体&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        dammit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; UnicodeDammit(data, [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;utf-8&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;gbk&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;])&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        data&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; dammit.unicode_markup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;  # 解码&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;        # 指定Beautiful的解析器为 html.parser&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        soup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; BeautifulSoup(data,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;html.parser&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;        # 查找img标签&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        images&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; soup.select(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;img&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;        for&lt;&#x2F;span&gt;&lt;span&gt; image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span&gt; images:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;            # 抓bug&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;            try&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                src&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; image[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;src&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                url&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; src&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                count&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; count&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                # 调用download函数&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                download(url, count)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;            # 抓到bug的处理&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;            except&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; Exception&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; as&lt;&#x2F;span&gt;&lt;span&gt; err:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;                print&lt;&#x2F;span&gt;&lt;span&gt;(err)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    except&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; Exception&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; as&lt;&#x2F;span&gt;&lt;span&gt; err:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;        # 打印这个错误对象&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        print&lt;&#x2F;span&gt;&lt;span&gt;(err)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;def&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; download&lt;&#x2F;span&gt;&lt;span&gt;(url, count):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    try&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;        if&lt;&#x2F;span&gt;&lt;span&gt; url[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;len&lt;&#x2F;span&gt;&lt;span&gt;(url)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 4&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;.&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;  # 如果 图片url的长度的倒数第四位 = .&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            ext&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; url[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;len&lt;&#x2F;span&gt;&lt;span&gt;(url)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 4&lt;&#x2F;span&gt;&lt;span&gt;:]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;        else&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            ext&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;.jpg&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        req&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; urllib.request.Request(url,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; headers&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;headers)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        data&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; urllib.request.urlopen(req,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; timeout&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;100&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        data&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; data.read()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;  # 读取文件&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;        # 以images+序号命名；wb表示以二进制写方式打开，只能写文件， 如果文件不存在，创建该文件；如果文件已存在，则覆盖写&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        fobj&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; open&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;images&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; str&lt;&#x2F;span&gt;&lt;span&gt;(count)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; ext,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;wb&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        fobj.write(data)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;  # 写入文件&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        fobj.close()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;  # 关闭文件&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        print&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;downloaded&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; str&lt;&#x2F;span&gt;&lt;span&gt;(count)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; ext)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;  # 打印下载(爬取)信息&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    except&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; Exception&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; as&lt;&#x2F;span&gt;&lt;span&gt; err:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        print&lt;&#x2F;span&gt;&lt;span&gt;(err)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# 目标url&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;start_url&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;http:&#x2F;&#x2F;www.weather.com.cn&#x2F;weather&#x2F;101280601.shtml&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# User-Agent会告诉网站服务器，访问者是通过什么工具来请求的&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;headers&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;    &amp;quot;User-Agent&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;Mozilla&#x2F;5.0 (Windows NT 10.0; Win64; x64) AppleWebKit&#x2F;537.36 (KHTML, like Gecko) Chrome&#x2F;94.0.4606.81 Safari&#x2F;537.36 Edg&#x2F;94.0.992.50&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;count&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# 调用函数&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;image_spider(start_url)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;print&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;The end...&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;han-shu-ji-jie-kou-shuo-ming&quot;&gt;函数及接口说明&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;def&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; image_spider&lt;&#x2F;span&gt;&lt;span&gt;(start_url):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;blockquote&gt;
&lt;p&gt;项目主函数，获取网站源码并查找img标签内容
传入参数 start_url 为目标网址&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;def&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; download&lt;&#x2F;span&gt;&lt;span&gt;(url, count):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;blockquote&gt;
&lt;p&gt;项目下载函数，获取网站img标签内容中的图片&lt;&#x2F;p&gt;
&lt;p&gt;传入参数图片下载地址&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;yun-xing-jie-guo&quot;&gt;运行结果&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1635217288465.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>实现对客户表做增删改查后端部分</title>
        <published>2021-06-21T00:00:00+00:00</published>
        <updated>2021-06-21T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/customer-crud-backend/"/>
        <id>https://timberkito.com/posts/customer-crud-backend/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/customer-crud-backend/">&lt;h2 id=&quot;1-1xiang-mu-xin-xi&quot;&gt;1.1项目信息&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;作者：Timber&lt;&#x2F;p&gt;
&lt;p&gt;指导教师：lina&lt;&#x2F;p&gt;
&lt;p&gt;操作系统：Windows 10&lt;&#x2F;p&gt;
&lt;p&gt;开发工具：IntelliJ IDEA 2021.1 x64&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;1-2xiang-mu-xu-qiu&quot;&gt;1.2项目需求&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-2-1shi-yong-mysqlshu-ju-ku-chuang-jian-ke-hu-biao&quot;&gt;1.2.1使用MySQL数据库，创建客户表&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;sql&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;create table&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; t_customer&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;id &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;int primary key&lt;&#x2F;span&gt;&lt;span&gt; auto_increment,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;username &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;varchar&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;200&lt;&#x2F;span&gt;&lt;span&gt;),&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;jobs &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;varchar&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;200&lt;&#x2F;span&gt;&lt;span&gt;),&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;phone &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;varchar&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;200&lt;&#x2F;span&gt;&lt;span&gt;));&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;1-2-2shi-yong-mysqlzhong-insertyu-ju-xin-zeng-3-5tiao-ke-hu-shu-ju-dao-t-customerbiao-zhong-bing-wan-cheng-ru-xia-gong-neng&quot;&gt;1.2.2使用MySQL中insert语句新增3~5条客户数据到t_customer表中并完成如下功能:&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;查询所有的客户信息，以列表方式进行显示。&lt;&#x2F;li&gt;
&lt;li&gt;新增客户信息。&lt;&#x2F;li&gt;
&lt;li&gt;根据客户Id修改客户username,jobs,phone.&lt;&#x2F;li&gt;
&lt;li&gt;根据客户Id删除客户&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;1-3xiang-mu-jie-gou&quot;&gt;1.3项目结构&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1624263344480.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h1 id=&quot;shi-xian-dui-ke-hu-biao-zuo-zeng-shan-gai-cha-hou-duan-apijie-kou-wen-dang&quot;&gt;实现对客户表做增删改查后端API接口文档&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;1-1-api-v1-jie-kou-shuo-ming&quot;&gt;1.1. API V1 接口说明&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;接口基准地址：&lt;code&gt;http:&#x2F;&#x2F;127.0.0.1:8888&#x2F;api&#x2F;customer&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;服务端已开启 CORS 跨域支持&lt;&#x2F;li&gt;
&lt;li&gt;数据返回格式统一使用 JSON&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;1-1-1-zhi-chi-de-qing-qiu-fang-fa&quot;&gt;1.1.1. 支持的请求方法&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;GET（SELECT）：从服务器取出资源（一项或多项）。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;POST（CREATE）：在服务器新建一个资源。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;PUT（UPDATE）：在服务器更新资源（客户端提供改变后的完整资源）。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;DELETE（DELETE）：从服务器删除资源。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;1-1-2-tong-yong-fan-hui-zhuang-tai-shuo-ming&quot;&gt;1.1.2. 通用返回状态说明&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;em&gt;状态码&lt;&#x2F;em&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;em&gt;含义&lt;&#x2F;em&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;em&gt;说明&lt;&#x2F;em&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;200&lt;&#x2F;td&gt;&lt;td&gt;OK&lt;&#x2F;td&gt;&lt;td&gt;请求成功&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;400&lt;&#x2F;td&gt;&lt;td&gt;FAILURE&lt;&#x2F;td&gt;&lt;td&gt;请求失败&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;1-2-ke-hu-guan-li&quot;&gt;1.2. 客户管理&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-2-1-ke-hu-lie-biao&quot;&gt;1.2.1. 客户列表&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;请求路径：selectall&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;请求方法：GET&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;响应数据说明&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;id：客户ID（Integer）&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;ul&gt;
&lt;li&gt;username：用户名（String）&lt;&#x2F;li&gt;
&lt;li&gt;jobs：工作（String）&lt;&#x2F;li&gt;
&lt;li&gt;phone：电话（String）&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;响应数据&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;json&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        &amp;quot;id&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        &amp;quot;username&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;Timber&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        &amp;quot;jobs&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;架构师&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        &amp;quot;phone&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;18888888888&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    },&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        &amp;quot;id&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 2&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        &amp;quot;username&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;MinatoAqua&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        &amp;quot;jobs&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;VTuber&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        &amp;quot;phone&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;14454454455&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    },&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        &amp;quot;id&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 3&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        &amp;quot;username&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;Mea&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        &amp;quot;jobs&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;VTuber&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        &amp;quot;phone&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;16666666666&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    },&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        &amp;quot;id&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 4&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        &amp;quot;username&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;嘉然今天吃什么&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        &amp;quot;jobs&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;VUP&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        &amp;quot;phone&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;15555555555&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    },&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        &amp;quot;id&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 5&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        &amp;quot;username&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;安德森少校&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        &amp;quot;jobs&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;铁驭（Pilot）&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        &amp;quot;phone&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;16666666666&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;1-2-2-tian-jia-ke-hu&quot;&gt;1.2.2. 添加客户&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;请求路径：add&lt;&#x2F;li&gt;
&lt;li&gt;请求方法：POST&lt;&#x2F;li&gt;
&lt;li&gt;请求参数&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;参数名&lt;&#x2F;th&gt;&lt;th&gt;参数说明&lt;&#x2F;th&gt;&lt;th&gt;备注&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;username&lt;&#x2F;td&gt;&lt;td&gt;客户名称&lt;&#x2F;td&gt;&lt;td&gt;不能为空&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;jobs&lt;&#x2F;td&gt;&lt;td&gt;客户工作&lt;&#x2F;td&gt;&lt;td&gt;不能为空&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;phone&lt;&#x2F;td&gt;&lt;td&gt;客户电话&lt;&#x2F;td&gt;&lt;td&gt;不能为空&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;ul&gt;
&lt;li&gt;响应参数&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;参数名&lt;&#x2F;th&gt;&lt;th&gt;参数说明&lt;&#x2F;th&gt;&lt;th&gt;备注&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;200&lt;&#x2F;td&gt;&lt;td&gt;添加成功&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;400&lt;&#x2F;td&gt;&lt;td&gt;添加失败&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;ul&gt;
&lt;li&gt;响应数据&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;json&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;200&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;1-5-3-gen-ju-id-cha-xun-ke-hu&quot;&gt;1.5.3. 根据 ID 查询客户&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;请求路径：info&#x2F;:id&lt;&#x2F;li&gt;
&lt;li&gt;请求方法：GET&lt;&#x2F;li&gt;
&lt;li&gt;请求参数&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;参数名&lt;&#x2F;th&gt;&lt;th&gt;参数说明&lt;&#x2F;th&gt;&lt;th&gt;备注&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;:id&lt;&#x2F;td&gt;&lt;td&gt;角色 ID&lt;&#x2F;td&gt;&lt;td&gt;不能为空&lt;code&gt;携带在url中&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;ul&gt;
&lt;li&gt;响应参数&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;参数名&lt;&#x2F;th&gt;&lt;th&gt;参数说明&lt;&#x2F;th&gt;&lt;th&gt;备注&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;id&lt;&#x2F;td&gt;&lt;td&gt;客户 ID&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;username&lt;&#x2F;td&gt;&lt;td&gt;客户名称&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;jobs&lt;&#x2F;td&gt;&lt;td&gt;客户工作&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;phone&lt;&#x2F;td&gt;&lt;td&gt;客户电话&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;ul&gt;
&lt;li&gt;响应数据&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;json&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;    &amp;quot;id&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 2&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;    &amp;quot;username&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;MinatoAqua&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;    &amp;quot;jobs&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;VTuber&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;    &amp;quot;phone&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;14454454455&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;1-5-4-bian-ji-ti-jiao-ke-hu&quot;&gt;1.5.4. 编辑提交客户&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;请求路径：update&lt;&#x2F;li&gt;
&lt;li&gt;请求方法：PUT&lt;&#x2F;li&gt;
&lt;li&gt;请求参数&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;参数名&lt;&#x2F;th&gt;&lt;th&gt;参数说明&lt;&#x2F;th&gt;&lt;th&gt;备注&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;id&lt;&#x2F;td&gt;&lt;td&gt;客户 ID&lt;&#x2F;td&gt;&lt;td&gt;不能为空&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;username&lt;&#x2F;td&gt;&lt;td&gt;客户名称&lt;&#x2F;td&gt;&lt;td&gt;不能为空&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;jobs&lt;&#x2F;td&gt;&lt;td&gt;客户工作&lt;&#x2F;td&gt;&lt;td&gt;不能为空&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;phone&lt;&#x2F;td&gt;&lt;td&gt;客户电话&lt;&#x2F;td&gt;&lt;td&gt;不能为空&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;ul&gt;
&lt;li&gt;响应数据&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;200 &#x2F;&#x2F; 修改成功&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;400 &#x2F;&#x2F; 修改失败&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;1-5-5-shan-chu-ke-hu&quot;&gt;1.5.5. 删除客户&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;请求路径：delete&lt;&#x2F;li&gt;
&lt;li&gt;请求方法：DELETE&lt;&#x2F;li&gt;
&lt;li&gt;请求参数&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;参数名&lt;&#x2F;th&gt;&lt;th&gt;参数说明&lt;&#x2F;th&gt;&lt;th&gt;备注&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;:id&lt;&#x2F;td&gt;&lt;td&gt;角色 ID&lt;&#x2F;td&gt;&lt;td&gt;不能为空&lt;code&gt;携带在url中&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;ul&gt;
&lt;li&gt;响应数据&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;200 &#x2F;&#x2F; 删除成功&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;400 &#x2F;&#x2F; 删除失败&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>实现对客户表做增删改查前端部分</title>
        <published>2021-06-21T00:00:00+00:00</published>
        <updated>2021-06-21T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/customer-crud-frontend/"/>
        <id>https://timberkito.com/posts/customer-crud-frontend/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/customer-crud-frontend/">&lt;h2 id=&quot;1-1xiang-mu-xin-xi&quot;&gt;1.1项目信息&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;作者：Timber&lt;&#x2F;p&gt;
&lt;p&gt;指导教师：lina&lt;&#x2F;p&gt;
&lt;p&gt;操作系统：Windows 10&lt;&#x2F;p&gt;
&lt;p&gt;开发工具：Visual Studio Code&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;1-2xiang-mu-xu-qiu&quot;&gt;1.2项目需求&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-2-1shi-yong-mysqlshu-ju-ku-chuang-jian-ke-hu-biao&quot;&gt;1.2.1使用MySQL数据库，创建客户表&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;sql&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;create table&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; t_customer&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;id &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;int primary key&lt;&#x2F;span&gt;&lt;span&gt; auto_increment,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;username &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;varchar&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;200&lt;&#x2F;span&gt;&lt;span&gt;),&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;jobs &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;varchar&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;200&lt;&#x2F;span&gt;&lt;span&gt;),&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;phone &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;varchar&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;200&lt;&#x2F;span&gt;&lt;span&gt;));&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;1-2-2shi-yong-mysqlzhong-insertyu-ju-xin-zeng-3-5tiao-ke-hu-shu-ju-dao-t-customerbiao-zhong-bing-wan-cheng-ru-xia-gong-neng&quot;&gt;1.2.2使用MySQL中insert语句新增3~5条客户数据到t_customer表中并完成如下功能:&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;查询所有的客户信息，以列表方式进行显示。&lt;&#x2F;li&gt;
&lt;li&gt;新增客户信息。&lt;&#x2F;li&gt;
&lt;li&gt;根据客户Id修改客户username,jobs,phone.&lt;&#x2F;li&gt;
&lt;li&gt;根据客户Id删除客户&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;1-3xiang-mu-xiao-guo&quot;&gt;1.3项目效果&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-3-1ke-hu-lie-biao&quot;&gt;1.3.1客户列表&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1624266284175.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;1-3-2tian-jia-ke-hu&quot;&gt;1.3.2添加客户&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1624266382686.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;1-3-3xiu-gai-ke-hu&quot;&gt;1.3.3修改客户&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1624266418411.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;1-4xiang-mu-bu-shu&quot;&gt;1.4项目部署&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-4-1an-zhuang-xiang-mu-yi-lai&quot;&gt;1.4.1安装项目依赖&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;npm install&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;1-4-2qi-dong-wei-kai-fa-bian-yi-he-re-zhong-zai&quot;&gt;1.4.2启动为开发编译和热重载&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;npm run serve&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;1-4-3qi-dong-wei-sheng-chan-huan-jing&quot;&gt;1.4.3启动为生产环境&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;npm run build&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>AOP配置（注解）</title>
        <published>2021-06-09T00:00:00+00:00</published>
        <updated>2021-06-09T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/spring-aop-annotations/"/>
        <id>https://timberkito.com/posts/spring-aop-annotations/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/spring-aop-annotations/">&lt;h2 id=&quot;ji-ben-de-zhu-jie-pei-zhi&quot;&gt;基本的注解配置&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;aspect&quot;&gt;@Aspect&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;位置：类定义上方&lt;&#x2F;li&gt;
&lt;li&gt;作用：设置当前类为切面类&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;pointcut&quot;&gt;@Pointcut&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;位置：方法定义上方&lt;&#x2F;li&gt;
&lt;li&gt;作用：使用**&lt;u&gt;当前的方法名&lt;&#x2F;u&gt;**作为切入点引用名称&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Pointcut&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;execution(* *..*(..))&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; pt&lt;&#x2F;span&gt;&lt;span&gt;(){ }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;可以写在独立类中&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; AOPPointcut&lt;&#x2F;span&gt;&lt;span&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    @&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Pointcut&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;execution(* *..*(..))&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; pt1&lt;&#x2F;span&gt;&lt;span&gt;(){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;before&quot;&gt;@Before&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;位置：方法定义上方&lt;&#x2F;li&gt;
&lt;li&gt;作用：标注该方法作为前置通知&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Before&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;AOPPointcut.pt1()&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; before&lt;&#x2F;span&gt;&lt;span&gt;(JoinPoint jp){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    Object&lt;&#x2F;span&gt;&lt;span&gt;[] args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; jp.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getArgs&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;前置...before ...&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; args[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; args[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;]);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;after&quot;&gt;@After&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;位置：方法定义上方&lt;&#x2F;li&gt;
&lt;li&gt;作用：标注该方法作为后置通知&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;After&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;AOPPointcut.pt1()&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; after&lt;&#x2F;span&gt;&lt;span&gt;(){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;后置...after ...&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;afterreturning&quot;&gt;@AfterReturning&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;位置：方法定义上方&lt;&#x2F;li&gt;
&lt;li&gt;作用：标注该方法作为返回后通知&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;AfterReturning&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;AOPPointcut.pt1()&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; afterReturing&lt;&#x2F;span&gt;&lt;span&gt;(){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;返回后...afterReturing ...&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;afterthrowing&quot;&gt;@AfterThrowing&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;位置：方法定义上方&lt;&#x2F;li&gt;
&lt;li&gt;作用：标注该方法作为异常后通知&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;AfterThrowing&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;AOPPointcut.pt1()&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; afterThrowing&lt;&#x2F;span&gt;&lt;span&gt;(){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;抛出异常后...afterThrowing ...&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;around&quot;&gt;@Around&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;位置：方法定义上方&lt;&#x2F;li&gt;
&lt;li&gt;作用：标注该方法作为环绕通知&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Around&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;AOPPointcut.pt1()&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public&lt;&#x2F;span&gt;&lt;span&gt; Object&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; around&lt;&#x2F;span&gt;&lt;span&gt;(ProceedingJoinPoint pjp){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;环绕前...around ... before&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;    &#x2F;&#x2F;对原始方法的调用&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Object ret&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; null&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    try&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        ret &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; pjp.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;proceed&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; catch&lt;&#x2F;span&gt;&lt;span&gt; (Throwable&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; throwable&lt;&#x2F;span&gt;&lt;span&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;环绕抛原方法异常...around... exception...&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; throwable.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getMessage&lt;&#x2F;span&gt;&lt;span&gt;());&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;环绕后...around ... after&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; ret);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span&gt; ret;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;zhu-jie-hou-tian-jia-can-shu&quot;&gt;注解后添加参数&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;zhu-jie-pei-zhi&quot;&gt;注解配置：&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;AfterReturning&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;value&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;AOPPointcut.pt1()&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;returning&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;ret&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; afterReturing&lt;&#x2F;span&gt;&lt;span&gt;(Object ret){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;返回后...afterReturing ...&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; ret);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;AfterThrowing&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;value&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;AOPPointcut.pt1()&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; throwing&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;t&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; afterThrowing&lt;&#x2F;span&gt;&lt;span&gt;(Throwable t){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;抛出异常后...afterThrowing ...&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; t.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getMessage&lt;&#x2F;span&gt;&lt;span&gt;());&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;xmlpei-zhi&quot;&gt;XML配置：&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;xml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:pointcut&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; expression&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;execution(* *..*(..))&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;myAdvice&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:after-returning&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; method&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;afterReturing&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; pointcut-ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; returning&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;ret&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:after-throwing&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; method&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;afterThrowing&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; pointcut-ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; throwing&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;t&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;aopzhu-jie-kai-fa-tong-zhi-zhi-xing-shun-xu-kong-zhi&quot;&gt;AOP注解开发通知执行顺序控制&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;spring-aopyun-xing-ji-zhi&quot;&gt;Spring AOP运行机制&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;同个通知类中，相同通知类型以方法名排序为准&lt;&#x2F;li&gt;
&lt;li&gt;不同通知类中，以类名排序为准&lt;&#x2F;li&gt;
&lt;li&gt;使用@Order()注解通过变更bean的加载顺序改变通知的加载顺序&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;qi-ye-kai-fa-jing-yan&quot;&gt;企业开发经验&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;通知方法名由3部分组成，分别是&lt;strong&gt;前缀、顺序编码、功能描述&lt;&#x2F;strong&gt;
前缀为固定字符串，例如 baidu、 timber等，无实际意义
顺序编码为6位以内的整数，通常3位即可，不足位补0
功能描述为该方法对应的实际通知功能，例如 exception、 strlenCheck、log
控制通知执行顺序使用顺序编码控制，使用时做定空间预留&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;003使用,006使用,预留001、002、004、005、007、008&lt;&#x2F;li&gt;
&lt;li&gt;使用时从中段开始使用,方便后期做前置迫加或后置迫加&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;u&gt;最终顺序以运行顺序为准,以测试结果为准,不以设定规则为准&lt;&#x2F;u&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;blockquote&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Before&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;AOPPointcut.pt1()&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; aop002log&lt;&#x2F;span&gt;&lt;span&gt;(){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;前置...before2 ...&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; );&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Before&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;AOPPointcut.pt1()&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; aop003log&lt;&#x2F;span&gt;&lt;span&gt;(){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;前置...before1 ...&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; );&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>AOP通知类型与XML配置</title>
        <published>2021-06-08T00:00:00+00:00</published>
        <updated>2021-06-08T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/spring-aop-advice-and-xml/"/>
        <id>https://timberkito.com/posts/spring-aop-advice-and-xml/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/spring-aop-advice-and-xml/">&lt;h2 id=&quot;aopde-tong-zhi-lei-xing-gong-5chong&quot;&gt;AOP的通知类型共5种&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;前置通知&lt;&#x2F;strong&gt;:原始方法执行前执行,如果通知中抛出异常,阻止原始方法运行
应用:数据校验&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;后置通知&lt;&#x2F;strong&gt;:原始方法执行后执行,无论原始方法中是否出现异常,都将执行通知
应用:现场清理&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;返回后通知&lt;&#x2F;strong&gt;:原始方法正常执行完毕并返回结果后执行,如果原始方法中抛出异常,无法执行
应用:返回值相关数据处理&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;抛出异常后通知&lt;&#x2F;strong&gt;:原始方法抛出异常后执行,如果原始方法没有抛出异常,无法执行
应用:对原始方法中出现的异常信息进行处理&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;环绕通知&lt;&#x2F;strong&gt;:在原始方法执行前后均有对应执行执行,还可以阻止原始方法的执行
应用:十分强大,可以做任何事情&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;aopadvicetong-zhi-lei&quot;&gt;AOPAdvice通知类&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;package&lt;&#x2F;span&gt;&lt;span&gt; com.timber.aop;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; org.aspectj.lang.ProceedingJoinPoint;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;&#x2F;&#x2F;1.制作通知类，在类中定义一个方法用于完成共性功能&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; AOPAdvice&lt;&#x2F;span&gt;&lt;span&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; function&lt;&#x2F;span&gt;&lt;span&gt;(){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;共性功能...&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; before&lt;&#x2F;span&gt;&lt;span&gt;(){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;before ...&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; after&lt;&#x2F;span&gt;&lt;span&gt;(){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;after ...&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; afterReturing&lt;&#x2F;span&gt;&lt;span&gt;(){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;afterReturing ...&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; afterThrowing&lt;&#x2F;span&gt;&lt;span&gt;(){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;afterThrowing ...&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; around&lt;&#x2F;span&gt;&lt;span&gt;(ProceedingJoinPoint&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; pjp&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; throws&lt;&#x2F;span&gt;&lt;span&gt; Throwable{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;around ... before&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;        &#x2F;&#x2F;对原始方法的调用&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        pjp.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;proceed&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;around ... after&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;qian-zhi-tong-zhi&quot;&gt;前置通知&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;xml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:pointcut&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; expression&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;execution(* *(..))&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;myAdvice&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:before&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; method&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;before&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; pointcut-ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1623134397657.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hou-zhi-tong-zhi&quot;&gt;后置通知&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;xml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:pointcut&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; expression&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;execution(* *(..))&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;myAdvice&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:after&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; method&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;after&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; pointcut-ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1623134460339.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;fan-hui-hou-tong-zhi&quot;&gt;返回后通知&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;xml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:pointcut&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; expression&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;execution(* *(..))&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;myAdvice&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:after-returning&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; method&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;afterReturing&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; pointcut-ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1623134489705.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;抛出异常后不执行&lt;&#x2F;u&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1623134530388.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;pao-chu-yi-chang-hou-tong-zhi&quot;&gt;抛出异常后通知&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;xml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:pointcut&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; expression&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;execution(* *(..))&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;myAdvice&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:after-throwing&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; method&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;afterThrowing&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; pointcut-ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1623134577902.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;huan-rao-tong-zhi&quot;&gt;环绕通知&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;xml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:pointcut&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; expression&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;execution(* *(..))&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;myAdvice&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:around&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; method&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;around&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; pointcut-ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;blockquote&gt;
&lt;p&gt;环绕通知是在原始方法的前后添加功能，在环绕通知中，存在对原始方法的显示调用&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public&lt;&#x2F;span&gt;&lt;span&gt; Object&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; around&lt;&#x2F;span&gt;&lt;span&gt;(ProceedingJoinPoint pjp) throws Throwable{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;around ... before&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;    &#x2F;&#x2F;对原始方法的调用&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Object ret&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; pjp.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;proceed&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;around ... after&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span&gt; ret;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;方法须设定 Object类型的返回值,否则会拦截原始方法的返回。如果原始方法返回值类型为
void,通知方法也可以设定返回值类型为void,最终返回null。&lt;&#x2F;li&gt;
&lt;li&gt;方法需在**&lt;u&gt;第一个参数位置设定ProceedingJoinPoint对象&lt;&#x2F;u&gt;**,通过该对象调用 proceed()方法,实
现对原始方法的调用。如省略该参数,原始方法将无法执行。&lt;&#x2F;li&gt;
&lt;li&gt;使用 proceed()方法调用原始方法时,因无法预知原始方法运行过程中是否会出现异常,强制抛
出 Throwable对象,封装原始方法中可能出现的异常信息。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;ji-yu-xmlpei-zhi-de-tong-zhi-shun-xu&quot;&gt;基于XML配置的通知顺序&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;当同一个切入点配置了多个通知时,通知会存在运行的先后顺序,该顺序以通知配置的顺序为准。&lt;&#x2F;u&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;xml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:before&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; method&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;before3&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; pointcut-ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:before&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; method&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;before&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; pointcut-ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:before&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; method&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;before2&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; pointcut-ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1623134290813.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;tong-zhi-huo-qu-can-shu-shu-ju&quot;&gt;通知获取参数数据&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-she-ding-tong-zhi-fang-fa-di-yi-ge-can-shu-wei-joinpoint-tong-guo-gai-dui-xiang-diao-yong-getargs-fang-fa-huo-qu-yuan-shi-fang-fa-de-can-shu-shu-zu&quot;&gt;1.设定通知方法第一个参数为JoinPoint，通过该对象调用getArgs（）方法，获取原始方法的参数数组&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; before&lt;&#x2F;span&gt;&lt;span&gt;(JoinPoint jp){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    Object&lt;&#x2F;span&gt;&lt;span&gt;[] args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; jp.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getArgs&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;before ...&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; args[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span&gt;]);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;2-she-ding-qie-ru-dian-biao-da-shi-wei-tong-zhi-fang-fa-chuan-di-can-shu-gai-bian-tong-zhi-bian-liang-ming-de-ding-yi-shun-xu&quot;&gt;2.设定切入点表达式为通知方法传递参数（改变通知变量名的定义顺序）&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;yuan-shi-fang-fa&quot;&gt;原始方法&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; UserServiceImpl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; implements&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; UserService&lt;&#x2F;span&gt;&lt;span&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; save&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; i&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; j&lt;&#x2F;span&gt;&lt;span&gt;){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;user service running ...&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; i &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;,&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; j);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;xmlpei-zhi&quot;&gt;XML配置&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;xml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:pointcut&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; expression&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;execution(* *(..))&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;myAdvice&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;           &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:after&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; method&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;after&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;                       arg-names&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;y,x&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;                       pointcut&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;execution(* *(int,int)) &lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;&amp;amp;amp;&amp;amp;amp;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; args(x,y) &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;blockquote&gt;
&lt;p&gt;arg-names=&quot;y,x&quot; 改变参数传入通知的顺序&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h4 id=&quot;tong-zhi-lei&quot;&gt;通知类&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; after&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span&gt; x ,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; int&lt;&#x2F;span&gt;&lt;span&gt; y){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;after ...&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span&gt; x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;,&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span&gt;y);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;####　输出&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1623137017485.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;tong-zhi-huo-qu-fan-hui-zhi-shu-ju&quot;&gt;通知获取返回值数据&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-gua-yong-yu-fan-hui-hou-tong-zhi-after-returning&quot;&gt;1.适用于返回后通知（ after-returning ）&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;yuan-shi-fang-fa-1&quot;&gt;原始方法&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; update&lt;&#x2F;span&gt;&lt;span&gt;(){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;user service update ...&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 200&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;####　XML配置&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;returning=&quot;ret&quot; 配置属性变量名&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;xml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:pointcut&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; expression&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;execution(* *(..))&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;myAdvice&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;			&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:after-returning&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; method&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;afterReturing&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                                pointcut-ref=&amp;quot;pt&amp;quot; returning=&amp;quot;ret&amp;quot;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;####　通知类&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; afterReturing&lt;&#x2F;span&gt;&lt;span&gt;(Object ret){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;afterReturing ...&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; ret);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;shu-chu&quot;&gt;输出&lt;&#x2F;h4&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1623138718506.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;2-gua-yong-yu-huan-rao-tong-zhi-around&quot;&gt;2.适用于环绕通知（around）&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;yuan-shi-fang-fa-2&quot;&gt;原始方法&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; update&lt;&#x2F;span&gt;&lt;span&gt;(){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;user service update ...&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 200&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;xmlpei-zhi-1&quot;&gt;XML配置&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;xml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:pointcut&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; expression&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;execution(* *(..))&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;myAdvice&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:around&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; method&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;around&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; pointcut-ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;tong-zhi-lei-1&quot;&gt;通知类&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public&lt;&#x2F;span&gt;&lt;span&gt; Object&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; around&lt;&#x2F;span&gt;&lt;span&gt;(ProceedingJoinPoint pjp) throws Throwable{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;around ... before&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;    &#x2F;&#x2F;对原始方法的调用&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Object ret&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; pjp.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;proceed&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;around ... after&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; ret);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span&gt; ret;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;shu-chu-1&quot;&gt;输出&lt;&#x2F;h4&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1623138618627.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;tong-zhi-huo-qu-yi-chang-shu-ju&quot;&gt;通知获取异常数据&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-gua-yong-yu-fan-hui-hou-tong-zhi-after-throwing&quot;&gt;1.适用于返回后通知（after-throwing）&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;设定异常对象变量名&lt;&#x2F;u&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h4 id=&quot;yuan-shi-fang-fa-3&quot;&gt;原始方法&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; delete&lt;&#x2F;span&gt;&lt;span&gt;(){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;user service delete ...&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    int&lt;&#x2F;span&gt;&lt;span&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt; &#x2F;&#x2F;抛异常&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;xmlpei-zhi-2&quot;&gt;XML配置&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;xml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:pointcut&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; expression&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;execution(* *(..))&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;myAdvice&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:after-throwing&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; method&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;afterThrowing&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;                                    pointcut-ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; throwing&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;t&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;blockquote&gt;
&lt;p&gt;throwing=&quot;t&quot; 设定异常对象名传入通知类&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h4 id=&quot;tong-zhi-lei-2&quot;&gt;通知类&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; afterThrowing&lt;&#x2F;span&gt;&lt;span&gt;(Throwable t){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;afterThrowing ...&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; t.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getMessage&lt;&#x2F;span&gt;&lt;span&gt;());&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;shu-chu-2&quot;&gt;输出&lt;&#x2F;h4&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1623139150479.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;2-gua-yong-yu-huan-rao-tong-zhi-around-1&quot;&gt;2.适用于环绕通知（around）&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;在通知类中的方法中调用原始方法捕获异常&lt;&#x2F;u&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;####　原始方法&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; delete&lt;&#x2F;span&gt;&lt;span&gt;(){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;user service delete ...&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    int&lt;&#x2F;span&gt;&lt;span&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt; &#x2F;&#x2F;抛异常&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;xmlpei-zhi-3&quot;&gt;XML配置&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;xml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:pointcut&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; expression&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;execution(* *(..))&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;myAdvice&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:around&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; method&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;around&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; pointcut-ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;tong-zhi-lei-3&quot;&gt;通知类&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public&lt;&#x2F;span&gt;&lt;span&gt; Object&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; around&lt;&#x2F;span&gt;&lt;span&gt;(ProceedingJoinPoint pjp){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;around ... before&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;    &#x2F;&#x2F;对原始方法捕获异常并且处理&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Object ret&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; null&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    try&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        ret &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; pjp.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;proceed&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; catch&lt;&#x2F;span&gt;&lt;span&gt; (Throwable&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; throwable&lt;&#x2F;span&gt;&lt;span&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;around... exception...&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; throwable.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getMessage&lt;&#x2F;span&gt;&lt;span&gt;());&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;around ... after&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; ret);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span&gt; ret;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;shu-chu-3&quot;&gt;输出&lt;&#x2F;h4&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1623139716755.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>AOP的相关概念以及代码案例</title>
        <published>2021-06-07T00:00:00+00:00</published>
        <updated>2021-06-07T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/spring-aop-concepts-and-examples/"/>
        <id>https://timberkito.com/posts/spring-aop-concepts-and-examples/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/spring-aop-concepts-and-examples/">&lt;h1 id=&quot;aopxiang-guan-gai-nian&quot;&gt;AOP相关概念&lt;&#x2F;h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Spring的AOP实现底层就是对上面的动态代理的代码进行了封装，封装后我们只需要对需要关注的部分进行代码编写，并通过配置的方式完成指定目标的方法增强。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1623042725264.png&quot; alt=&quot;&quot; &#x2F;&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1623043852641.png&quot; alt=&quot;&quot; &#x2F;&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1623043982204.png&quot; alt=&quot;&quot; &#x2F;&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1623044331906.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Target（目标对象）&lt;&#x2F;strong&gt;：代理的目标对象&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Proxy（代理）&lt;&#x2F;strong&gt;：一个类被AOP织入增强后产生的结果代理类&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Joinpoint（连接点）&lt;&#x2F;strong&gt;：在程序执行过程中的某个阶段点，指可以被增强的方法&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Pointcut（切入点）&lt;&#x2F;strong&gt;：切面与程序流程的交叉点，即那些需要处理的连接点，程序运行中被增强的方法&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Advice（通知&#x2F;增强）&lt;&#x2F;strong&gt;：所谓通知是指拦截到Joinpoint之后所要做的事情&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Aspect（切面）&lt;&#x2F;strong&gt;：封装的用于横向插入系统功能（如事务、日志等）的类（描述切入点与通知的关系）&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Weaving（织入）&lt;&#x2F;strong&gt;：将切面代码插入到目标对象上，从而生成代理对象的&lt;strong&gt;过程&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Introduction（引入&#x2F;引介）&lt;&#x2F;strong&gt;：对原始对象无中生有的添加成员变量或者成员方法&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h1 id=&quot;dai-ma-an-li&quot;&gt;代码案例&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;xiang-mu-jie-gou&quot;&gt;项目结构&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1623049417459.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;mu-biao-dui-xiang&quot;&gt;目标对象&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; UserServiceImpl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; implements&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; UserService&lt;&#x2F;span&gt;&lt;span&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; save&lt;&#x2F;span&gt;&lt;span&gt;(){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;        &#x2F;&#x2F;0.抽取共性功能&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;        &#x2F;&#x2F;System.out.println(&amp;quot;共性功能...&amp;quot;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;user service running ...&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;zhi-zuo-tong-zhi-lei&quot;&gt;制作通知类&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;&#x2F;&#x2F;1.制作通知类，在类中定义一个方法用于完成共性功能&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; AOPAdvice&lt;&#x2F;span&gt;&lt;span&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; function&lt;&#x2F;span&gt;&lt;span&gt;(){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;共性功能...&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;pei-zhi-xml&quot;&gt;配置XML&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;xml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;&amp;lt;!-- 3.开启AOP命名空间 --&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;bean&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;userService&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; class&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;com.timber.service.impl.UserServiceImpl&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;&amp;lt;!-- 2.配置共性功能为Spring控制的资源 --&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;bean&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;myAdvice&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; class&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;com.timber.aop.AOPAdvice&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;&amp;lt;!-- 4.配置AOP --&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;    &amp;lt;!-- 5.配置切入点 --&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:pointcut&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; expression&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;execution(* *..*(..))&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;    &amp;lt;!-- 6.配置切面（切入点与通知的关系） --&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;myAdvice&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;        &amp;lt;!-- 7.配置具体的切入点对应通知中那个操作方法 --&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:before&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; method&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;function&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; pointcut-ref&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;pt&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:aspect&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;aop:config&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;yun-xing-ce-shi&quot;&gt;运行测试&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; UserController&lt;&#x2F;span&gt;&lt;span&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    public static void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; main&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;String&lt;&#x2F;span&gt;&lt;span&gt;[]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; args&lt;&#x2F;span&gt;&lt;span&gt;){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        ApplicationContext applicationContext&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;                new&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; ClassPathXmlApplicationContext&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;applicationContext.xml&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        UserService userService&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; (UserService) applicationContext.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getBean&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;userService&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        userService.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;save&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;yun-xing-jie-guo&quot;&gt;运行结果&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1623050041870.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>Spring Cannot load configuration class 异常处理</title>
        <published>2021-06-05T00:00:00+00:00</published>
        <updated>2021-06-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/spring-cannot-load-configuration-class/"/>
        <id>https://timberkito.com/posts/spring-cannot-load-configuration-class/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/spring-cannot-load-configuration-class/">&lt;h1 id=&quot;springpao-java-lang-illegalstateexception-cannot-load-configuration-classyi-chang&quot;&gt;Spring抛java.lang.IllegalStateException: Cannot load configuration class异常&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;jie-jue-fang-an&quot;&gt;解决方案&lt;&#x2F;h2&gt;
&lt;h4 id=&quot;jiang-xiang-mu-sdkcong-jdk-16huan-cheng-jdk-1-8ji-ke&quot;&gt;将项目SDK从jdk_16换成jdk_1.8即可&lt;&#x2F;h4&gt;
&lt;p&gt;参考：https:&#x2F;&#x2F;teratail.com&#x2F;questions&#x2F;153773
&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1622906211247.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;kai-fa-huan-jing&quot;&gt;开发环境&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;系统：Windows 10 x64&lt;&#x2F;li&gt;
&lt;li&gt;项目SDK环境：jdk_16&lt;&#x2F;li&gt;
&lt;li&gt;开发工具：IntelliJ IDEA 2021.1 x64&lt;&#x2F;li&gt;
&lt;li&gt;pom.xml如下&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;xml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;   &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;dependency&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;groupId&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;junit&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;groupId&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;artifactId&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;junit&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;artifactId&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;version&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;4.12&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;version&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;dependency&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;dependency&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;groupId&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;org.springframework&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;groupId&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;artifactId&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;spring-context&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;artifactId&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;version&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;5.0.5.RELEASE&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;version&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;dependency&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;dependency&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;groupId&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;javax.annotation&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;groupId&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;artifactId&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;jsr250-api&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;artifactId&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;version&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;1.0&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;version&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;dependency&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;dependency&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;groupId&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;org.springframework&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;groupId&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;artifactId&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;spring-test&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;artifactId&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;version&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;5.0.5.RELEASE&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;version&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;dependency&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;yi-chang-chan-sheng&quot;&gt;异常产生&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;xiang-mu-jie-gou&quot;&gt;项目结构&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1622905765984.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h4 id=&quot;suo-you-lei-jun-an-zhao-springzhu-jie-pei-zhi-zheng-que-yun-xing-ce-shi-dai-ma-shi-pao-cuo&quot;&gt;所有类均按照Spring注解配置正确，运行测试代码时抛错&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    AnnotationConfigApplicationContext applicationContext&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; = new&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; AnnotationConfigApplicationContext&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    applicationContext.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;register&lt;&#x2F;span&gt;&lt;span&gt;(SpringConfiguration.class);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    applicationContext.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;refresh&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    UserService userService&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; applicationContext.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getBean&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;userService&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;, UserService.class);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    userService.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;save&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;yi-chang-ru-xia-bu-fen&quot;&gt;异常如下（部分）&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;Exception&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; in thread &amp;quot;main&amp;quot; java.lang.IllegalStateException: Cannot load configuration class: com.timber.config.SpringConfiguration&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;	at&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;ConfigurationClassPostProcessor.java:414&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;	at&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanFactory&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;ConfigurationClassPostProcessor.java:254&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;	at&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;PostProcessorRegistrationDelegate.java:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;yi-chang-jie-jue&quot;&gt;异常解决&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;jiang-xiang-mu-sdkcong-jdk-16huan-cheng-jdk-1-8&quot;&gt;将项目SDK从jdk_16换成jdk_1.8&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1622906434983.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;zhong-qi-idea-zhong-xin-jia-zai-xiang-mu-yi-chang-jie-jue&quot;&gt;重启IDEA，重新加载项目，异常解决&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;timber.oss-cn-chengdu.aliyuncs.com&#x2F;img&#x2F;utool_up&#x2F;1622906536172.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;can-kao-https-teratail-com-questions-153773&quot;&gt;参考：https:&#x2F;&#x2F;teratail.com&#x2F;questions&#x2F;153773&lt;&#x2F;h2&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>Linux 修改swap虚拟内存</title>
        <published>2021-06-01T00:00:00+00:00</published>
        <updated>2021-06-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/linux-swap-memory/"/>
        <id>https://timberkito.com/posts/linux-swap-memory/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/linux-swap-memory/">&lt;blockquote&gt;
&lt;p&gt;Linux中Swap（即：交换分区），类似于Windows的虚拟内存，就是当内存不足的时候，把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。Android是基于Linux的操作系统，所以也可以使用Swap分区来提升系统运行效率。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;yi-zeng-jia-swapkong-jian&quot;&gt;一、增加swap空间&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-cha-kan-dang-qian-xi-tong-swapkong-jian&quot;&gt;1.查看当前系统swap空间&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[root@localhost &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;~&lt;&#x2F;span&gt;&lt;span&gt;]# free -m&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;             total&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;       used       free     shared    buffers     cached&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;Mem:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;          1006        753        252          3         32        526&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;-&#x2F;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; buffers&#x2F;cache:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        195        810&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;Swap:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;         100          0       100&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;2-zeng-jia-swapwen-jian&quot;&gt;2.增加swap文件&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[root@localhost &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;~&lt;&#x2F;span&gt;&lt;span&gt;]# cd &#x2F;usr&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[root@localhost usr]# mkdir swap&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[root@localhost usr]# cd swap&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[root@localhost swap]# ll&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;总用量&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[root@localhost swap]# dd if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&#x2F;dev&#x2F;zero&lt;&#x2F;span&gt;&lt;span&gt; of&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&#x2F;usr&#x2F;swap&#x2F;swapfile1&lt;&#x2F;span&gt;&lt;span&gt; bs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;1M&lt;&#x2F;span&gt;&lt;span&gt; count&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;2048&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;u&gt;bs=1M 表示写入的每个块的大小为1M，count=2048 表示总共建立2048M的swap文件&lt;&#x2F;u&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;3-cha-kan-chuang-jian-wen-jian-da-xiao&quot;&gt;3.查看创建文件大小&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;du&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -sh&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;usr&#x2F;swap&#x2F;swapfile1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;4-jiang-mu-biao-wen-jian-biao-shi-wei-swapfen-qu-wen-jian&quot;&gt;4.将目标文件标识为swap分区文件&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mkswap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;usr&#x2F;swap&#x2F;swapfile1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;5-ji-huo-swapwen-jian&quot;&gt;5.激活swap文件&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;swapon&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;usr&#x2F;swap&#x2F;swapfile1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;6-xiu-gai-etc-fstabwen-jian-zai-mo-xing-zeng-jia-yi-xia-nei-rong&quot;&gt;6.修改&#x2F;etc&#x2F;fstab文件，在末行增加以下内容&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;vim&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;etc&#x2F;fstab&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;&#x2F;usr&#x2F;swap&#x2F;swapfile1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; swap swap defaults&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 0 0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;7-cha-kan-shi-fou-gua-zai-cheng-gong&quot;&gt;7.查看是否挂在成功&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[root@localhost &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;~&lt;&#x2F;span&gt;&lt;span&gt;]# swapon -s&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;Filename&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;				Type		Size	Used	Priority&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;&#x2F;swap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;                                  	file&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;	266236	266236	-2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;&#x2F;home&#x2F;swap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;                             	file&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;	2047996	260500	-3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[root@localhost &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;~&lt;&#x2F;span&gt;&lt;span&gt;]#&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;er-shan-chu-swapkong-jian&quot;&gt;二、删除swap空间&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-guan-bi-swap&quot;&gt;1.关闭swap&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;swapoff&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;usr&#x2F;swap&#x2F;swapfile1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;2-xiu-gai-etc-fstabwen-jian-shan-chu-yi-xia-nei-rong&quot;&gt;2.修改&#x2F;etc&#x2F;fstab文件，删除以下内容&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;&#x2F;usr&#x2F;swap&#x2F;swapfile1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; swap swap defaults&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 0 0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;san-xiu-gai-swappinessshe-zhi-swapde-shi-yong-shi-ji&quot;&gt;三、修改swappiness设置swap的使用时机&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-cha-kan-swapshi-yong-bi-li-qing-kuang&quot;&gt;1.查看swap使用比例情况&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;cat&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;proc&#x2F;sys&#x2F;vm&#x2F;swappiness&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;u&gt;0意味着“在任何情况下都不要发生交换”。&lt;&#x2F;u&gt;&lt;&#x2F;p&gt;
&lt;p&gt;swappiness＝&lt;u&gt;100的时候表示积极的使用swap分区&lt;&#x2F;u&gt;，并且把内存上的数据及时的搬运到swap空间里面&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;2-lin-shi-xiu-gai-shi-yong-bi-li&quot;&gt;2.临时修改使用比例&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;sysctl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; vm.swappiness=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;60&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;blockquote&gt;
&lt;p&gt;内存在使用到100-60=40%的时候，就开始出现有交换分区的使用。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;注意：临时修改后，重启操作系统会重置默认值。&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;3-yong-jiu-xiu-gai-shi-yong-bi-li&quot;&gt;3.永久修改使用比例&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;vim&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;  &#x2F;etc&#x2F;sysctl.conf&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;在sysctl.conf文件中最后一行加入&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;vm.swappiness&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;=60&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>关于Vue路由笔记(VueRouter)</title>
        <published>2021-05-31T00:00:00+00:00</published>
        <updated>2021-05-31T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/vue-router-notes/"/>
        <id>https://timberkito.com/posts/vue-router-notes/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/vue-router-notes/">&lt;h1 id=&quot;vuelu-you-vuerouter&quot;&gt;Vue路由(VueRouter)&lt;&#x2F;h1&gt;
&lt;p&gt;&lt;strong&gt;导入vue地址&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;html&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;script&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; src&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;https:&#x2F;&#x2F;cdn.jsdelivr.net&#x2F;npm&#x2F;vue&#x2F;dist&#x2F;vue.js&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;script&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;导入axios地址&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;html&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;script&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; src&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;https:&#x2F;&#x2F;unpkg.com&#x2F;axios&#x2F;dist&#x2F;axios.min.js&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;script&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;导入vue路由地址&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;html&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;script&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; src&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;https:&#x2F;&#x2F;unpkg.com&#x2F;vue-router&#x2F;dist&#x2F;vue-router.js&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;script&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;1-1-lu-you&quot;&gt;1.1 路由&lt;&#x2F;h3&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;​	&lt;code&gt;	路由：根据请求的路由按照统一的路由规则进行请求的转发从而帮助我们实现统一的请求管理&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;11-2-zuo-yong&quot;&gt;11.2 作用&lt;&#x2F;h3&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;​	&lt;code&gt;作用：用来在vue中实现组件之间的动态切换&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;1-3-shi-yong-lu-you&quot;&gt;1.3 使用路由&lt;&#x2F;h3&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;​	1.引入路由&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;html&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;script&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; src&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;https:&#x2F;&#x2F;cdn.jsdelivr.net&#x2F;npm&#x2F;vue&#x2F;dist&#x2F;vue.js&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;script&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&#x2F;&#x2F;vue路由&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;script&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; src&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;https:&#x2F;&#x2F;unpkg.com&#x2F;vue-router&#x2F;dist&#x2F;vue-router.js&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;script&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;
&lt;p&gt;创建组件对象&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;&#x2F;&#x2F;声明登录组件模板&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;const&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; login&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    template :&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;#39;&amp;lt;h1&amp;gt;用户登录&amp;lt;&#x2F;h1&amp;gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;};&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;&#x2F;&#x2F;声明注册组件模板&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;const&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; register&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    template :&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;#39;&amp;lt;h1&amp;gt;用户注册&amp;lt;&#x2F;h1&amp;gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;};&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;定义路由对象规则&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;&#x2F;&#x2F;创建一个路由对象&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;const&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; router&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=new&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; VueRouter&lt;&#x2F;span&gt;&lt;span&gt;({&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;   routes : [&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       {path :&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;&#x2F;   login&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,complate : login},&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;  &#x2F;&#x2F;path:路由的路径	component：路由对应组件&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       {path :&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;&#x2F;register&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,complate : register}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;   ]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;});&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;将路由对象注册到vue实例&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;const&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; app&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=new&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; Vue&lt;&#x2F;span&gt;&lt;span&gt;({&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    el :&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;#app&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    data : {},&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    methods : {},&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    router : router ,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;&#x2F;&#x2F;设置路由对象&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;});&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;在页面中显示路由组件&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    &amp;lt;!--&lt;&#x2F;span&gt;&lt;span&gt;显示路由的组件&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;router-view&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;router-view&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;根据链接切换路由&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;html&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; href&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;#&#x2F;login&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;点我登录&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; href&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;#&#x2F;register&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;点我注册&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h3 id=&quot;1-4-router-linkshi-yong&quot;&gt;1.4 router-link使用&lt;&#x2F;h3&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;code&gt;作用：用来代替我们在切换路由时使用a标签切换路由&lt;&#x2F;code&gt;
&lt;code&gt;好处：可以自动的给路由路径加入#号 不需要手动加入&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;html&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;        &amp;lt;!--router-link-好处：书写路由不需要# to：用来书写路由路径--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;router-link&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; to&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&#x2F;login&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; tag&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;button&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;点我登录&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;router-link&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;router-link&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; to&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&#x2F;register&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; tag&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;button&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;点我注册&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;router-link&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;markdown&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;font-weight: bold;&quot;&gt;# 总结&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	1.router-link 用来替换使用a标签实现路由切换 好处是不需要书写#号直接书写路由路径&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	2.router-link to属性:用来书写路由路径	tag属性:用来将router-link渲染成指定的标签&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;1-5-mo-ren-lu-you&quot;&gt;1.5 默认路由&lt;&#x2F;h3&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;​	&lt;code&gt;作用：用来在第一次进行界面显示一个默认路由&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;&#x2F;&#x2F;创建路由对象&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;const&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; router&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=new&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; VueRouter&lt;&#x2F;span&gt;&lt;span&gt;({&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;   routes : [&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;       &#x2F;&#x2F; {path:&amp;quot;&#x2F;&amp;quot;,component:login},&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       {path:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&#x2F;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,redirect:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&#x2F;login&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;},&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt; &#x2F;&#x2F;redirect:用来当访问的默认路由&amp;quot;&#x2F;&amp;quot;时，跳转到指定的路由展示 推荐使用&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       {path:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&#x2F;login&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,component:login},&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       {path:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&#x2F;register&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,component:register}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;   ]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;});&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;1-6-lu-you-chuan-di&quot;&gt;1.6 路由传递&lt;&#x2F;h3&gt;
&lt;hr &#x2F;&gt;
&lt;h5 id=&quot;di-yi-chong-fang-shi-chuan-di-can-shu-chuan-tong-fang-shi&quot;&gt;第一种方式传递参数--传统方式&lt;&#x2F;h5&gt;
&lt;ol&gt;
&lt;li&gt;通过？形式拼接参数&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;html&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;router-link&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; to&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&#x2F;login?uid=1&amp;amp;name=zhangsan&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;点我登录&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;router-link&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;2.组件中获取参数&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;&#x2F;&#x2F;声明组件模板&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;const&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; login&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    template:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&amp;lt;h1&amp;gt;用户登录&amp;lt;&#x2F;h1&amp;gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;    data&lt;&#x2F;span&gt;&lt;span&gt;(){&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;return&lt;&#x2F;span&gt;&lt;span&gt;{}},&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    methods:{},&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;    created&lt;&#x2F;span&gt;&lt;span&gt;(){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      console.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;log&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;=======&amp;gt;&amp;gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;this&lt;&#x2F;span&gt;&lt;span&gt;.$route.query.uid);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      console.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;log&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;=======&amp;gt;&amp;gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;this&lt;&#x2F;span&gt;&lt;span&gt;.$route.query.name);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    },&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;};&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h5 id=&quot;di-er-chong-fang-shi-chuan-di-can-shu-restfulfang-shi&quot;&gt;第二种方式传递参数--restful方式&lt;&#x2F;h5&gt;
&lt;p&gt;1.通过使用路径方式传递参数&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;router-link&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; to&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&#x2F;register&#x2F;21&#x2F;lisi&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;点我注册&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;router-link&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;        const&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; router&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=new&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; VueRouter&lt;&#x2F;span&gt;&lt;span&gt;({&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;           routes : [&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               {path:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;&#x2F;register&#x2F;:uid&#x2F;:name&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,component: register},&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;           ]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        });&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;2.组件中获取参数&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;const&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; register&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    template:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&amp;lt;h1&amp;gt;用户注册{{$route.params.name}}&amp;lt;&#x2F;h1&amp;gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;    data&lt;&#x2F;span&gt;&lt;span&gt;(){&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;return&lt;&#x2F;span&gt;&lt;span&gt;{}},&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    methods:{},&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;    created&lt;&#x2F;span&gt;&lt;span&gt;(){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        console.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;log&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;========&amp;gt;&amp;gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;this&lt;&#x2F;span&gt;&lt;span&gt;.$route.params.uid);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        console.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;log&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;========&amp;gt;&amp;gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;this&lt;&#x2F;span&gt;&lt;span&gt;.$route.params.name);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    },&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;};&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;​&lt;&#x2F;p&gt;
&lt;h3 id=&quot;1-7-vue-clian-zhuang&quot;&gt;1.7 Vue CLI安装&lt;&#x2F;h3&gt;
&lt;hr &#x2F;&gt;
&lt;h4 id=&quot;an-zhuang-jiao-shou-jia&quot;&gt;安装脚手架&lt;&#x2F;h4&gt;
&lt;h5 id=&quot;1-pei-zhi-tao-bao-jing-xiang&quot;&gt;1、配置淘宝镜像&lt;&#x2F;h5&gt;
&lt;p&gt;&lt;strong&gt;命令&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;npm config set registry https&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;&#x2F;&#x2F;registry.npm.taobao.org&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;验证&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;npm config get registry&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h5 id=&quot;2-an-zhuang-vue-cli&quot;&gt;2、安装vue cli&lt;&#x2F;h5&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;npm&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; install&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -g&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; @vue&#x2F;cli&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;npm&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; install vue-cli&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -g&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;创建vue-cli项目&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;vue init webpack vue-demo&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h5 id=&quot;4-yun-xing&quot;&gt;4、运行&lt;&#x2F;h5&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;npm start 在目录下运行&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;http:&#x2F;&#x2F;localhost:8080&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;config&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;node_modules&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h5 id=&quot;5-mu-lu&quot;&gt;5、 目录&lt;&#x2F;h5&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;markdown&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;   my-project  ---------&amp;gt;&amp;gt;项目名&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        build  -------------&amp;gt;&amp;gt;来使用webpack打包使用bulid依赖&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        config -------------&amp;gt;&amp;gt;用来整个项目配置&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        node_modules--------&amp;gt;&amp;gt;用来管理项目中的依赖&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        src	----------------&amp;gt;&amp;gt;用来书写vue的源代码 ··&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            assets	----------&amp;gt;&amp;gt;用来存放静态资源 ··&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            components 	------&amp;gt;&amp;gt;用来书写vue组件 ··&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            router 	----------&amp;gt;&amp;gt; 用来配置项目中的路由 ··&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            App.vue ----------&amp;gt;&amp;gt;项目中的组件 ··&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            main.js ----------&amp;gt;&amp;gt;项目中的主入口 ··&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        static -------------&amp;gt;&amp;gt;其他静态&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        .babelrc -----------&amp;gt;&amp;gt;将es6转为es5&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        .editorconfig ------&amp;gt;&amp;gt;项目编辑配置&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        .gitignore ---------&amp;gt;&amp;gt;git版本控制&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        .postcssrc.js ------&amp;gt;&amp;gt;源码&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        index.html ---------&amp;gt;&amp;gt;项目的主页&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        package.json -------&amp;gt;&amp;gt;类似于pom.xml文件(依赖管理)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        package-lock.json --&amp;gt;&amp;gt;对package.json加锁文件&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        README.md ----------&amp;gt;&amp;gt;阅读文件W&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h5 id=&quot;6-zai-jiao-shou-jia-zhong-shi-yong-axios&quot;&gt;6、在脚手架中使用axios&lt;&#x2F;h5&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;安装axios&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	npm install axios --save-dev&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;配置axios&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    import axios from &amp;#39;axios&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Vue.prototype.$http=axios&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;#使用axios&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	在需要发送异步请求的位置this.$http.get(&amp;#39;url&amp;#39;).then((res)==&amp;gt;{})&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h5 id=&quot;7-zai-vuezhong-da-bao-bu-shu&quot;&gt;7、在vue中打包部署&lt;&#x2F;h5&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;#1、在项目的根目录执行命令&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	vue run bulid&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	注意：vue脚手架打包的项目必须在服务器上运行不能双击运行&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;#2、打包之后项目目录的变化&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	在打包之后，项目出现dist目录，dist就是vue脚手架的生产目录(直接部署目录)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>Spark安装与部署实现文档</title>
        <published>2020-12-15T00:00:00+00:00</published>
        <updated>2020-12-15T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/spark-installation-and-deployment/"/>
        <id>https://timberkito.com/posts/spark-installation-and-deployment/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/spark-installation-and-deployment/">&lt;h1 id=&quot;kai-fa-huan-jing&quot;&gt;开发环境&lt;&#x2F;h1&gt;
&lt;h3 id=&quot;ni-xu-yao-jdkhuan-jing-xiang-xi-cao-zuo-liu-cheng-can-jian-yi-xia-wen-zhang&quot;&gt;++你需要jdk环境，详细操作流程参见以下文章++&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;strong&gt;++&#x2F;posts&#x2F;centos-7-install-jdk-8&#x2F;++&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;liang-tai-centosxi-tong-tui-jian-pei-zhi-nei-cun-2gbyi-shang&quot;&gt;++两台CentOS系统，推荐配置内存2GB以上++&lt;&#x2F;h3&gt;
&lt;h1 id=&quot;yi-cong-sparkguan-fang-huo-qu-sparkan-zhuang-bao&quot;&gt;一、从spark官方获取spark安装包&lt;&#x2F;h1&gt;
&lt;h3 id=&quot;ben-an-li-shi-yong-spark-3-0-1wei-li&quot;&gt;本案例使用spark-3.0.1为例&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-820d800917ed4a0397098d182ebd22f4.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;
下载地址 https:&#x2F;&#x2F;www.apache.org&#x2F;dyn&#x2F;closer.lua&#x2F;spark&#x2F;spark-3.0.1&#x2F;spark-3.0.1-bin-hadoop2.7.tgz&lt;&#x2F;p&gt;
&lt;h3 id=&quot;shi-yong-wget-ming-ling-huo-qu-sparkan-zhuang-bao&quot;&gt;使用wget 命令获取spark安装包&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mkdir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;usr&#x2F;spark&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;cd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;usr&#x2F;spark&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;wget&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; https:&#x2F;&#x2F;mirror.bit.edu.cn&#x2F;apache&#x2F;spark&#x2F;spark-3.0.1&#x2F;spark-3.0.1-bin-hadoop2.7.tgz&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;shi-yong-tarming-ling-jie-ya-an-zhuang-bao&quot;&gt;使用tar命令解压安装包&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;tar&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -zxvf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; spark-3.0.1-bin-hadoop2.7&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h1 id=&quot;er-pei-zhi-sparkhuan-jing-bian-liang&quot;&gt;二、配置spark环境变量&lt;&#x2F;h1&gt;
&lt;h3 id=&quot;jin-ru-spark-3-0-1mu-lu-zhong-confmu-lu-xia&quot;&gt;进入spark-3.0.1目录中conf目录下&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;cd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; spark-3.0.1-bin-hadoop2.7&#x2F;conf&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;jiang-spark-env-sh-templatewen-jian-zhong-ming-ming-wei-spark-env-sh&quot;&gt;将spark-env.sh.template文件重命名为spark-env.sh&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; spark-env.sh.template spark-env.sh&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-e67c89475df74d87bd92fcd0dc4df78b.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;使用vim在文件末尾添加如下变量
export JAVA_HOME=&#x2F;usr&#x2F;java&#x2F;jdk1.8.0_271&#x2F;
export SPARK_MASTER_HOST=192.168.94.129
export SPARK_MASTER_PORT=7077&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;zhu-yi-java-home-wei-ni-de-jdklu-jing-spark-master-host-wei-ni-de-masterzhu-ji-ipdi-zhi&quot;&gt;++注意：JAVA_HOME=为你的jdk路径 SPARK_MASTER_HOST=为你的master主机ip地址++&lt;&#x2F;h3&gt;
&lt;h3 id=&quot;jiang-slaves-templatewen-jian-zhong-ming-ming-wei-slaves&quot;&gt;将slaves.template文件重命名为slaves&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; slaves.template slaves&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-458d04d19091402da025b7ec2d1624e0.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;jiang-localhostgai-wei-ni-de-su-zhu-ji-ipdi-zhi&quot;&gt;++将localhost改为你的宿主机IP地址++&lt;&#x2F;h3&gt;
&lt;h1 id=&quot;san-pei-zhi-workershuan-jing-bian-liang&quot;&gt;三、配置Workers环境变量&lt;&#x2F;h1&gt;
&lt;h3 id=&quot;qi-dong-di-er-tai-centos-zhong-fu-yi-shang-suo-you-bu-zou&quot;&gt;启动第二台CentOS，重复以上所有步骤&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;++注意：Workers环境变量与上面配置一样，只要将 SPARK_MASTER_HOST=设置为你的Master主机ip即可（本案例Master主机为192.168.94.129）slaves中的保持不变为localhost++&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h1 id=&quot;si-qi-dong-sparktong-guo-web-uiguan-cha-cluster&quot;&gt;四、启动Spark通过Web UI观察cluster&lt;&#x2F;h1&gt;
&lt;h3 id=&quot;jin-ru-spark3-0mu-lu-zhong-de-sbinmu-lu&quot;&gt;进入spark3.0目录中的sbin目录&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;cd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;usr&#x2F;spark&#x2F;spark-3.0.1-bin-hadoop2.7&#x2F;sbin&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;qi-dong-spark&quot;&gt;启动Spark&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;bash&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; start-all.sh&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;shu-ru-workersfu-wu-qi-mi-ma&quot;&gt;输入Workers服务器密码&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;M%25K1B8DGSXP0%5B4%7DEOTGOZ$4-d289db32594340829a51ddf9adf63e21.png&quot; alt=&quot;MK1B8DGSXP04EOTGOZ4.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;zai-liu-lan-qi-zhong-shu-ru-masterzhu-ji-ip-8080duan-kou&quot;&gt;在浏览器中输入master主机ip：8080端口&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-62611986c6a949eca6eac58cf1db6da1.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h1 id=&quot;wu-zai-cluster-modexia-ji-suan-pizhi&quot;&gt;五、在cluster mode下，计算Pi值&lt;&#x2F;h1&gt;
&lt;h3 id=&quot;zai-masterzhu-ji-zhong-diao-yong-sparkguan-fang-yan-shi-cheng-xu&quot;&gt;在Master主机中调用Spark官方演示程序&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;cd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;usr&#x2F;spark&#x2F;spark-3.0.1-bin-hadoop2.7&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;.&#x2F;bin&#x2F;spark-submit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; org.apache.spark.examples.SparkPi&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --master&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; spark:&#x2F;&#x2F;192.168.11.128:7077 examples&#x2F;jars&#x2F;spark-examples_2.12-3.0.1.jar&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;kan-dao-yi-xia-shu-chu-jie-guo-ji-wei-cheng-gong&quot;&gt;看到以下输出结果即为成功&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;AR%7B%7B~QHGE7QIB%25X5VG%5B~TIL-11d9874859ab4f4f91abdad7308e0834.png&quot; alt=&quot;AR~QHGE7QIBX5VG~TIL.png&quot; &#x2F;&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-92f69929e455496fa3dd3cf2b2cdc2c0.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>CentOS 7 安装Tomcat和部署Web项目</title>
        <published>2020-12-14T00:00:00+00:00</published>
        <updated>2020-12-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/centos-7-tomcat-deployment/"/>
        <id>https://timberkito.com/posts/centos-7-tomcat-deployment/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/centos-7-tomcat-deployment/">&lt;h1 id=&quot;zai-zhe-zhi-qian&quot;&gt;在这之前&lt;&#x2F;h1&gt;
&lt;h3 id=&quot;ni-xu-yao-jdkhuan-jing-xiang-xi-cao-zuo-liu-cheng-can-jian-yi-xia-wen-zhang&quot;&gt;++你需要jdk环境，详细操作流程参见以下文章++&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;strong&gt;++&#x2F;posts&#x2F;centos-7-install-jdk-8&#x2F;++&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;h1 id=&quot;yi-cong-apache-tomcatguan-wang-huo-qu-an-zhuang-bao&quot;&gt;一、从Apache Tomcat官网获取安装包&lt;&#x2F;h1&gt;
&lt;blockquote&gt;
&lt;p&gt;官网地址：http:&#x2F;&#x2F;tomcat.apache.org&#x2F;
本案例以Tomcat9为例&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-cd43105196a54c76a77f7cf98db0b860.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;xuan-ze-tar-gzge-shi-an-zhuang-bao-xia-zai&quot;&gt;选择tar.gz格式安装包下载&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-d7ed997d8b9749e4afa94a43df63409d.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;复制下载链接：https:&#x2F;&#x2F;mirrors.tuna.tsinghua.edu.cn&#x2F;apache&#x2F;tomcat&#x2F;tomcat-9&#x2F;v9.0.41&#x2F;bin&#x2F;apache-tomcat-9.0.41.tar.gz&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;zai-centosxi-tong-zhong-xia-zai-an-zhuang-bao&quot;&gt;在CentOS系统中下载安装包&lt;&#x2F;h3&gt;
&lt;p&gt;创建文件夹&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mkdir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;usr&#x2F;tomcat&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;cd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;usr&#x2F;tomcat&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;使用wget命令下载链接&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;wget&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; https:&#x2F;&#x2F;mirrors.tuna.tsinghua.edu.cn&#x2F;apache&#x2F;tomcat&#x2F;tomcat-9&#x2F;v9.0.41&#x2F;bin&#x2F;apache-tomcat-9.0.41.tar.gz&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h1 id=&quot;er-jie-ya-suo-an-zhuang-bao-an-zhuang-tomcat&quot;&gt;二、解压缩安装包，安装Tomcat&lt;&#x2F;h1&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;tar&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -zxvf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; apache-tomcat-9.0.41.tar.gz&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h1 id=&quot;san-qi-dong-tomcatfu-wu&quot;&gt;三、启动Tomcat服务&lt;&#x2F;h1&gt;
&lt;h3 id=&quot;jin-ru-tomcatfu-wu-binmu-lu&quot;&gt;进入Tomcat服务bin目录&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;cd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; apache-tomcat-9.0.41&#x2F;bin&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;qi-dong-fu-wu&quot;&gt;启动服务&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;bash&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; startup.sh&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-6ee3ade8a952447fa2007c42bc786448.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;liu-lan-qi-shu-ru-di-zhi-8080mo-ren-duan-kou-cha-kan&quot;&gt;浏览器输入地址：8080默认端口查看&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-adcb3349439d409189d383fe4111c854.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h1 id=&quot;si-zai-tomcatfu-wu-shang-bu-shu-webying-yong&quot;&gt;四、在Tomcat服务上部署Web应用&lt;&#x2F;h1&gt;
&lt;h3 id=&quot;zai-ideashang-da-bao-xiang-mu&quot;&gt;在IDEA上打包项目&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-6eb164379c154b008fc5c8ebf8686092.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;jiang-warbao-fang-ru-tomcatmu-lu-zhong-webappsmu-lu-xia-ji-ke&quot;&gt;将war包放入tomcat目录中webapps目录下即可&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-daf95b45a16345f88a4e83862f3ff65e.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-aef80cc2f9fc48ce80d09926d1ec97cd.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>JavaWeb应用开发课程登录案例作业实现文档</title>
        <published>2020-12-12T00:00:00+00:00</published>
        <updated>2020-12-12T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/javaweb-login-example/"/>
        <id>https://timberkito.com/posts/javaweb-login-example/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/javaweb-login-example/">&lt;h1 id=&quot;zuo-ye-xu-qiu&quot;&gt;作业需求：&lt;&#x2F;h1&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-c002b05965074418a2156579a0786e3d.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h1 id=&quot;kai-fa-huan-jing&quot;&gt;开发环境&lt;&#x2F;h1&gt;
&lt;ul&gt;
&lt;li&gt;操作系统：Windows 10&lt;&#x2F;li&gt;
&lt;li&gt;软件环境：jdk1.8 、Tomcat9&lt;&#x2F;li&gt;
&lt;li&gt;开发工具：IntelliJ IDEA 2020&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h1 id=&quot;ji-ben-si-lu&quot;&gt;基本思路&lt;&#x2F;h1&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;%E6%97%A0%E6%A0%87%E9%A2%98-0ca1ec2416f34de7aab661d27477218d.png&quot; alt=&quot;无标题.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h1 id=&quot;dai-ma-shi-xian&quot;&gt;代码实现&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;deng-lu-ye-mian-dai-ma&quot;&gt;登录页面代码&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;html&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FDAEB7;font-style: italic;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;%--&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  Created by IntelliJ IDEA.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  User: Timber&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  Date: 2020&#x2F;12&#x2F;11&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  Time: 9:22&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  To change this template use File | Settings | File Templates.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;--%&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FDAEB7;font-style: italic;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;%@ page contentType=&amp;quot;text&#x2F;html;charset=UTF-8&amp;quot; language=&amp;quot;java&amp;quot; %&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;html&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;head&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;title&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;登录页面&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;title&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;head&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;body&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;form&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; action&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&#x2F;JAVAWEB&#x2F;loginServlet&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; method&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;post&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;label&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; type&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;text&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; placeholder&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;请输入用户名&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; name&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;username&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;label&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;br&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;label&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; type&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;password&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; placeholder&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;请输入密码&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; name&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;password&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;label&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;br&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; type&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;submit&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; value&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;登录&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;br&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;form&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;body&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;html&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;blockquote&gt;
&lt;p&gt;需求中提到密码框不能显示明文，故应使用 type=&quot;password&quot;&lt;br&gt; action=&quot;&#x2F;JAVAWEB&#x2F;loginServlet&quot; 是登录程序Servlet路径&lt;br&gt;method=&quot;post&quot; 请求方法为 POST&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;loginservletshi-xian-dai-ma&quot;&gt;LoginServlet实现代码&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;package&lt;&#x2F;span&gt;&lt;span&gt; cn.timber.servlet;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; cn.timber.mysql.HkMysql;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; java.io.IOException;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; java.text.SimpleDateFormat;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; java.util.Date;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; javax.servlet.ServletException;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; javax.servlet.annotation.WebServlet;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; javax.servlet.http.HttpServlet;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; javax.servlet.http.HttpServletRequest;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; javax.servlet.http.HttpServletResponse;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; javax.servlet.http.HttpSession;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;WebServlet&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&#x2F;loginServlet&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; LoginServlet&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; extends&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; HttpServlet&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    protected void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; doPost&lt;&#x2F;span&gt;&lt;span&gt;(HttpServletRequest&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; request&lt;&#x2F;span&gt;&lt;span&gt;, HttpServletResponse&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; response&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;            throws&lt;&#x2F;span&gt;&lt;span&gt; ServletException, IOException {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;        &#x2F;&#x2F;获取用户名和密码&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        String username&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; request.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getParameter&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;username&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        String password&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; request.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getParameter&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;password&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;        &#x2F;&#x2F;后端控制台输出&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(username&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span&gt;password);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;        &#x2F;&#x2F;密码匹配接口&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        String myPwd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;123456&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        HttpSession session&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;request.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getSession&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        session.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;setAttribute&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;username&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;, username);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;        &#x2F;&#x2F;信息加入数据库&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        String sqlINFO&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; = new&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; HkMysql&lt;&#x2F;span&gt;&lt;span&gt;().&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mysqlHK&lt;&#x2F;span&gt;&lt;span&gt;(request.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getParameter&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;username&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;), request.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getRemoteAddr&lt;&#x2F;span&gt;&lt;span&gt;(),&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; new&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; SimpleDateFormat&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;yyyy-MM-dd HH:mm:ss&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;).&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;format&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;new&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; Date&lt;&#x2F;span&gt;&lt;span&gt;()));&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(sqlINFO);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;        &#x2F;&#x2F;密码判断&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;        if&lt;&#x2F;span&gt;&lt;span&gt;(password.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;equals&lt;&#x2F;span&gt;&lt;span&gt;(myPwd)) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;            &#x2F;&#x2F;重定向到登录成功页面&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            response.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;sendRedirect&lt;&#x2F;span&gt;&lt;span&gt;(request.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getContextPath&lt;&#x2F;span&gt;&lt;span&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&#x2F;loginSuccess.jsp?username=&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span&gt; username);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        }&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;else&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;            &#x2F;&#x2F;重定向到登录失败页面&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            response.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;sendRedirect&lt;&#x2F;span&gt;&lt;span&gt;(request.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getContextPath&lt;&#x2F;span&gt;&lt;span&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&#x2F;loginFail.jsp?username=&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span&gt; username);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    protected void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; doGet&lt;&#x2F;span&gt;&lt;span&gt;(HttpServletRequest&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; request&lt;&#x2F;span&gt;&lt;span&gt;, HttpServletResponse&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; response&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;            throws&lt;&#x2F;span&gt;&lt;span&gt; ServletException, IOException {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        this&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;doPost&lt;&#x2F;span&gt;&lt;span&gt;(request , response);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;chuang-jian-shu-ju-ku-jian-li-biao-ge&quot;&gt;创建数据库，建立表格&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-0a87a628461042e18f7b8d7949f958f0.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-c52847e8536b441096c6ee4b18948609.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;jdbclian-jie-shu-ju-ku-dai-ma&quot;&gt;JDBC连接数据库代码&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;package&lt;&#x2F;span&gt;&lt;span&gt; cn.timber.mysql;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; java.sql.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; HkMysql&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    static final&lt;&#x2F;span&gt;&lt;span&gt; String JDBC_DRIVER&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;com.mysql.cj.jdbc.Driver&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    static final&lt;&#x2F;span&gt;&lt;span&gt; String DB_URL&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;jdbc:mysql:&#x2F;&#x2F;0.0.0.0:3306&#x2F;javaweb?useSSL=false&amp;amp;allowPublicKeyRetrieval=true&amp;amp;serverTimezone=UTC&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;    &#x2F;&#x2F; 数据库的用户名与密码&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    static final&lt;&#x2F;span&gt;&lt;span&gt; String USER&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;root&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    static final&lt;&#x2F;span&gt;&lt;span&gt; String PASS&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;123456&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    public&lt;&#x2F;span&gt;&lt;span&gt; String&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; mysqlHK&lt;&#x2F;span&gt;&lt;span&gt; (String&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; username&lt;&#x2F;span&gt;&lt;span&gt; , String&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; ipaddr&lt;&#x2F;span&gt;&lt;span&gt; , String&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; loginTime&lt;&#x2F;span&gt;&lt;span&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        Connection conn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; null&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        Statement stmt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; null&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        Statement statement&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; null&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;        try&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;            &#x2F;&#x2F; 注册 JDBC 驱动&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            Class.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;forName&lt;&#x2F;span&gt;&lt;span&gt;(JDBC_DRIVER);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;            &#x2F;&#x2F; 打开链接&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;连接数据库...&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            conn &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; DriverManager.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getConnection&lt;&#x2F;span&gt;&lt;span&gt;(DB_URL, USER, PASS);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;            &#x2F;&#x2F; 执行查询&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot; 实例化Statement对象...&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            stmt &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; conn.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;createStatement&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            String sql;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;            &#x2F;&#x2F;添加数据&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            String sql1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;insert into javaweb.javaweblogin values (&amp;#39;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span&gt;username&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&amp;#39;,&amp;#39;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span&gt;ipaddr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&amp;#39;,&amp;#39;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span&gt;loginTime&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&amp;#39;);&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            statement &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; conn.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;createStatement&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            statement.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;executeUpdate&lt;&#x2F;span&gt;&lt;span&gt;(sql1);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            sql &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;SELECT * FROM javaweblogin&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            ResultSet rs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; stmt.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;executeQuery&lt;&#x2F;span&gt;&lt;span&gt;(sql);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;            &#x2F;&#x2F;ResultSet rs1 = stmt.executeQuery(sql);&#x2F;&#x2F;创建数据对象&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;            while&lt;&#x2F;span&gt;&lt;span&gt; (rs.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;next&lt;&#x2F;span&gt;&lt;span&gt;()) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                &#x2F;&#x2F; 通过字段检索&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                String id&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; rs.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getString&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;IP地址&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                String name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; rs.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getString&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;用户名&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                String time&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; rs.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getString&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;提交时间&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                &#x2F;&#x2F; 输出数据&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;print&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;ip: &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; id);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;print&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;, 用户名: &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; name);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;print&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;, 提交时间: &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; time);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;print&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;\n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;            &#x2F;&#x2F; 完成后关闭&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            rs.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;close&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            stmt.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;close&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            conn.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;close&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        }&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; catch&lt;&#x2F;span&gt;&lt;span&gt; (SQLException&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; se&lt;&#x2F;span&gt;&lt;span&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;            &#x2F;&#x2F; 处理 JDBC 错误&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            se.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;printStackTrace&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        }&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; catch&lt;&#x2F;span&gt;&lt;span&gt; (Exception&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; e&lt;&#x2F;span&gt;&lt;span&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;            &#x2F;&#x2F; 处理 Class.forName 错误&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            e.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;printStackTrace&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        }&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; finally&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;            &#x2F;&#x2F; 关闭资源&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;            try&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;                if&lt;&#x2F;span&gt;&lt;span&gt; (stmt &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;!=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; null&lt;&#x2F;span&gt;&lt;span&gt;) stmt.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;close&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            }&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; catch&lt;&#x2F;span&gt;&lt;span&gt; (SQLException&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; se2&lt;&#x2F;span&gt;&lt;span&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            }&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;&#x2F;&#x2F; 什么都不做&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;            try&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;                if&lt;&#x2F;span&gt;&lt;span&gt; (conn &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;!=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; null&lt;&#x2F;span&gt;&lt;span&gt;) conn.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;close&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            }&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; catch&lt;&#x2F;span&gt;&lt;span&gt; (SQLException&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; se&lt;&#x2F;span&gt;&lt;span&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                se.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;printStackTrace&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;        return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;已加入数据库&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;blockquote&gt;
&lt;p&gt;++注：需要JDBC环境依赖++ &lt;br&gt;下载地址：https:&#x2F;&#x2F;downloads.mysql.com&#x2F;archives&#x2F;c-j&#x2F;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;zai-gong-cheng-xiang-mu-zhong-dao-ru-jarbao-bu-zou&quot;&gt;在工程项目中导入jar包步骤&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-8f8809b400f34bf2957f52d7d0e2d895.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-a85f84b201d84bd7b42be983b05f3bc9.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;
&lt;strong&gt;在web目录中WEB-INF包中创建lib目录导入jar包即可&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;deng-lu-cheng-gong-ye-mian-dai-ma&quot;&gt;登录成功页面代码&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;html&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FDAEB7;font-style: italic;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;%--&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  Created by IntelliJ IDEA.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  User: Timber&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  Date: 2020&#x2F;12&#x2F;11&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  Time: 9:43&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  To change this template use File | Settings | File Templates.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;--%&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FDAEB7;font-style: italic;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;%@ page contentType=&amp;quot;text&#x2F;html;charset=UTF-8&amp;quot; language=&amp;quot;java&amp;quot; %&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;html&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;head&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;meta&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; http-equiv&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;Content-Type&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; content&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;text&#x2F;html; charset=UTF-8&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;title&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FDAEB7;font-style: italic;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;%&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            out.print(request.getParameter(&amp;quot;username&amp;quot;));&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    %&amp;gt;登录成功&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;title&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;script&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; src&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;jquery-3.5.1.js&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;script&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;script&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;        $&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;function&lt;&#x2F;span&gt;&lt;span&gt;() {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;            &#x2F;&#x2F;toRight&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;            $&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;#toRight&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;).&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;click&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;function&lt;&#x2F;span&gt;&lt;span&gt;() {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                &#x2F;&#x2F;获取右边的下拉列表对象，append(左边下拉列表选中的option)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;                $&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;#rightName&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;).&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;append&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;#leftName &amp;gt; option:selected&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;));&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            });&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        });&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;script&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;style&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;        #leftName&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; #btn&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; #rightName&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;            width&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 100&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;px&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;            height&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 300&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;px&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;        #toRight&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;            margin-top&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 100&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;px&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;            margin-left&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 30&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;px&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;            width&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 50&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;px&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;        .border&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;            height&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 500&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;px&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;            padding&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 100&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;px&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;style&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;head&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;body&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;登陆成功&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;br&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;欢迎您：&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;br&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FDAEB7;font-style: italic;&quot;&gt;font&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; color&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;red&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; size&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;22&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FDAEB7;font-style: italic;&quot;&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;%&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        out.print(request.getParameter(&amp;quot;username&amp;quot;)+&amp;quot;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;br&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&amp;quot;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    %&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FDAEB7;font-style: italic;&quot;&gt;font&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; href&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&amp;lt;%=request.getContextPath()%&amp;gt;&#x2F;index.jsp&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;重新登录&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;form&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; action&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&#x2F;JAVAWEB&#x2F;heroServlet&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; method&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;post&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;div&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; class&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;border&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        英雄：&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;select&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;leftName&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; multiple&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;multiple&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;option&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; value&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;葫芦娃&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;葫芦娃&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;option&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;option&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; value&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;一只耳&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;一只耳&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;option&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;option&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; value&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;美国队长&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;美国队长&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;option&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;option&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; value&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;黑猫警长&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;黑猫警长&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;option&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;option&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; value&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;唐老鸭的情妇&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;唐老鸭的情妇&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;option&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;select&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;select&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; type&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;button&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;toRight&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; value&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;--&amp;gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; 败类：&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;select&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;rightName&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; name&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;bailei&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; multiple&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;multiple&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;select&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;br&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; type&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;submit&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; value&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;提交&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;div&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;form&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;div&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;body&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;html&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;deng-lu-shi-bai-ye-mian-dai-ma&quot;&gt;登录失败页面代码&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;html&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FDAEB7;font-style: italic;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;%--&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  Created by IntelliJ IDEA.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  User: Timber&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  Date: 2020&#x2F;12&#x2F;11&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  Time: 9:51&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  To change this template use File | Settings | File Templates.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;--%&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FDAEB7;font-style: italic;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;%@ page contentType=&amp;quot;text&#x2F;html;charset=UTF-8&amp;quot; language=&amp;quot;java&amp;quot; %&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;html&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;head&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;title&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;登陆失败&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;title&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;head&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;body&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;h1&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;用户名&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FDAEB7;font-style: italic;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;%out.print(request.getParameter(&amp;quot;username&amp;quot;));%&amp;gt;与密码不匹配，请重新登录&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;h1&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; href&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&amp;lt;%=request.getContextPath()%&amp;gt;&#x2F;index.jsp&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;h2&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;重新登录&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;h2&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;body&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;html&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;heroservletshi-xian-dai-ma&quot;&gt;HeroServlet实现代码&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;package&lt;&#x2F;span&gt;&lt;span&gt; cn.timber.servlet;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; cn.timber.mysql.HkMysql;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; javax.servlet.ServletException;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; javax.servlet.annotation.WebServlet;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; javax.servlet.http.HttpServlet;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; javax.servlet.http.HttpServletRequest;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; javax.servlet.http.HttpServletResponse;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; javax.servlet.http.HttpSession;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; java.io.IOException;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;WebServlet&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&#x2F;heroServlet&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; HeroServlet&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; extends&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; HttpServlet&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    protected void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; doPost&lt;&#x2F;span&gt;&lt;span&gt;(HttpServletRequest&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; request&lt;&#x2F;span&gt;&lt;span&gt;, HttpServletResponse&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; response&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;            throws&lt;&#x2F;span&gt;&lt;span&gt; ServletException, IOException {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;        &#x2F;&#x2F;获取选择败类的String数组&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;        String&lt;&#x2F;span&gt;&lt;span&gt;[] bailei&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; request.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getParameterValues&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;bailei&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        HttpSession session&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;request.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getSession&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        String username&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; (String)session.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getAttribute&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;username&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(username);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;        &#x2F;&#x2F;转发到jsp&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;&#x2F;&#x2F;        request.getAttribute(&amp;quot;name&amp;quot;, username);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        request.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;setAttribute&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;loginname&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; , username);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        request.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;setAttribute&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;s&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; , bailei);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        request.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;getRequestDispatcher&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;hero.jsp&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;).&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;forward&lt;&#x2F;span&gt;&lt;span&gt;(request , response);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    protected void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; doGet&lt;&#x2F;span&gt;&lt;span&gt;(HttpServletRequest&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; request&lt;&#x2F;span&gt;&lt;span&gt;, HttpServletResponse&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; response&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;            throws&lt;&#x2F;span&gt;&lt;span&gt; ServletException, IOException {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        this&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;doPost&lt;&#x2F;span&gt;&lt;span&gt;(request , response);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;blockquote&gt;
&lt;p&gt;++这里的“bailei”由于是多选项，所以一定要用getParameterValues方法来获取并用String[] 来接收，否则会出错++ &lt;br&gt;
关于用户名的获取由于loginServlet生命周期已结束，这里我用的session.getAttribute(&quot;username&quot;)方法来获取的，若有更好的实现方法，欢迎您的指教&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;xuan-ze-jie-guo-ye-mian-dai-ma&quot;&gt;选择结果页面代码&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;html&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FDAEB7;font-style: italic;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;%--&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  Created by IntelliJ IDEA.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  User: Timber&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  Date: 2020&#x2F;12&#x2F;11&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  Time: 9:48&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  To change this template use File | Settings | File Templates.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;--%&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FDAEB7;font-style: italic;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;%@ page contentType=&amp;quot;text&#x2F;html;charset=UTF-8&amp;quot; language=&amp;quot;java&amp;quot; %&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;html&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;head&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;title&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;选择结果页面&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;title&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;head&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;body&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;欢迎您：&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;br&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FDAEB7;font-style: italic;&quot;&gt;font&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; color&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;red&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; size&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;22&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FDAEB7;font-style: italic;&quot;&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;%&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        String loginname = (String)request.getAttribute(&amp;quot;loginname&amp;quot;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        out.print(loginname);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    %&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FDAEB7;font-style: italic;&quot;&gt;font&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;发现了混入革命队伍的败类：&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;br&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FDAEB7;font-style: italic;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;%&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    String [] s1 = (String [])request.getAttribute(&amp;quot;s&amp;quot;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    for (String s : s1) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        out.print(s + &amp;quot;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;br&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&amp;quot;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;%&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;body&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;html&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h1 id=&quot;xiang-mu-bu-shu&quot;&gt;项目部署&lt;&#x2F;h1&gt;
&lt;h3 id=&quot;guan-yu-xiang-mu-bu-shu-can-kao-yi-xia-wen-zhang&quot;&gt;关于项目部署参考以下文章&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;strong&gt;++&#x2F;posts&#x2F;centos-7-tomcat-deployment&#x2F;++&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;h1 id=&quot;githubxiang-mu-di-zhi-gei-wo-yi-ge-starba-qaq&quot;&gt;GitHub项目地址（给我一个Star吧QAQ）&lt;&#x2F;h1&gt;
&lt;p&gt;&lt;strong&gt;++https:&#x2F;&#x2F;github.com&#x2F;TimberKito&#x2F;CQIPC_jsp_login++&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>CentOS 7 安装JDK 1.8 环境教程</title>
        <published>2020-12-08T00:00:00+00:00</published>
        <updated>2020-12-08T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/centos-7-install-jdk-8/"/>
        <id>https://timberkito.com/posts/centos-7-install-jdk-8/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/centos-7-install-jdk-8/">&lt;h1 id=&quot;fang-fa-yi-shi-yong-yuman-zhuang-jdkhuan-huan-jing&quot;&gt;方法一：使用yum安装jdk环环境&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;1-cha-kan-yun-duan-yumku-zhong-mu-qian-zhi-chi-an-zhuang-de-jdkruan-jian-bao&quot;&gt;1.查看云端yum库中目前支持安装的jdk软件包&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;yum&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; search java&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;grep&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; jdk&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;11115-a79e9ed15dcd4a71989486666996645c.png&quot; alt=&quot;11115.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;2-xuan-ze-ban-ben-an-zhuang-jdk&quot;&gt;2.选择版本安装jdk&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; yum&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; install&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -y&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; java-1.8.0-openjdk&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;*&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;3-an-zhuang-wan-cheng-hou-yan-zheng-shi-fou-an-zhuang-cheng-gong&quot;&gt;3.安装完成后，验证是否安装成功&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;java&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -version&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;%E7%89%88%E6%9C%AC-8aa892e99e9647ecb19fd6af41b7de97.png&quot; alt=&quot;版本.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;4-cha-zhao-jdkan-zhuang-wei-zhi&quot;&gt;4.查找jdk安装位置&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;find&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;#39;java&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-73e1befe123d413b9e543a0e3b657dd5.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;默认安装路径一般为：
&#x2F;usr&#x2F;lib&#x2F;jvm&#x2F;java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64&#x2F;jre&#x2F;bin&#x2F;java&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h1 id=&quot;fang-fa-er-cong-oraclehuo-qu-an-zhuang-bao-shou-dong-an-zhuang&quot;&gt;方法二：从Oracle获取安装包，手动安装&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;1-cong-oracleguan-wang-zhong-huo-qu-jdkan-zhuang-bao&quot;&gt;1.从Oracle官网中获取jdk安装包&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;ben-an-li-shi-yong-jdk8yan-shi&quot;&gt;本案例使用jdk8演示&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;下载地址：https:&#x2F;&#x2F;www.oracle.com&#x2F;cn&#x2F;java&#x2F;technologies&#x2F;javase-downloads.html&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-b7720e2ed69a4b9b9e7abffe519d46a3.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;gen-ju-xi-tong-ban-ben-he-wei-shu-xuan-ze-tar-gz&quot;&gt;根据系统版本和位数选择tar.gz&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-0ce0659c9ad74eab81e80d04b1000db2.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;fu-zhi-xia-zai-lian-jie&quot;&gt;复制下载链接&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-971d274b30404abcb2618a5eff5e4fc3.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;https:&#x2F;&#x2F;download.oracle.com&#x2F;otn-pub&#x2F;java&#x2F;jdk&#x2F;8.0.1+9&#x2F;51f4f36ad4ef43e39d0dfdbaf6549e32&#x2F;jdk-8.0.1_linux-x64_bin.tar.gz&lt;&#x2F;p&gt;
&lt;h3 id=&quot;chuang-jian-wen-jian-jia-shi-yong-wgetming-ling-huo-qu-an-zhuang-bao&quot;&gt;创建文件夹，使用wget命令获取安装包&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mkdir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;usr&#x2F;java&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;cd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;usr&#x2F;java&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;wget&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; https:&#x2F;&#x2F;download.oracle.com&#x2F;otn&#x2F;java&#x2F;jdk&#x2F;8u271-b09&#x2F;61ae65e0886&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;deng-dai-xia-zai&quot;&gt;等待下载&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-435954996e4a48838819a60001475e6b.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;2-jie-ya-an-zhuang-jdk&quot;&gt;2.解压安装jdk&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;shi-yong-tarming-ling-jie-ya-an-zhuang-bao&quot;&gt;使用tar命令解压安装包&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;tar&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; zxvf jdk-8.0.1_linux-x64_bin.tar.gz&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;3-pei-zhi-xi-tong-huan-jing-bian-liang&quot;&gt;3.配置系统环境变量&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;yong-vimda-kai-profile&quot;&gt;用Vim打开profile&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;vim&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;etc&#x2F;profile&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;zai-wen-dang-mo-wei-ci-chu-tian-jia-xi-tong-huan-jing-bian-liang&quot;&gt;在文档末尾此处添加系统环境变量&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;image-f353469bb51044c9b984d0df016afa79.png&quot; alt=&quot;image.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;jian-pan-shang-an-ijian-jin-ru-bian-xie&quot;&gt;键盘上按i键进入编写&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;export&lt;&#x2F;span&gt;&lt;span&gt; JAVA_HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;usr&#x2F;share&#x2F;jdk1.6.0_14&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;export&lt;&#x2F;span&gt;&lt;span&gt; PATH&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;$JAVA_HOME&#x2F;bin:$PATH&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;export&lt;&#x2F;span&gt;&lt;span&gt; CLASSPATH&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;.:$JAVA_HOME&#x2F;lib&#x2F;dt.jar:$JAVA_HOME&#x2F;lib&#x2F;tools.jar&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;zhu-yi-java-homede-lu-jing-shi-ni-shi-ji-jie-ya-hou-de-jdkde-lu-jing&quot;&gt;++注意：JAVA_HOME的路径是你实际解压后的JDK的路径++&lt;&#x2F;h3&gt;
&lt;h3 id=&quot;an-esctui-chu-bian-ji-mo-shi-zai-an-shift-qshu-ru-xbao-cun&quot;&gt;按esc退出编辑模式，再按shift+Q输入x保存&lt;&#x2F;h3&gt;
&lt;h3 id=&quot;shu-ru-ming-ling-shi-profilesheng-xiao&quot;&gt;输入命令使profile生效&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;source&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;etc&#x2F;profile&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;4-an-zhuang-wan-cheng-hou-yan-zheng-shi-fou-an-zhuang-cheng-gong&quot;&gt;4.安装完成后，验证是否安装成功&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;java&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -version&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.timberkito.com&#x2F;upload&#x2F;2020&#x2F;12&#x2F;%E7%89%88%E6%9C%AC-8aa892e99e9647ecb19fd6af41b7de97.png&quot; alt=&quot;版本.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>request和response的工作原理简介</title>
        <published>2020-11-26T00:00:00+00:00</published>
        <updated>2020-11-26T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/servlet-request-response/"/>
        <id>https://timberkito.com/posts/servlet-request-response/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/servlet-request-response/">&lt;blockquote&gt;
&lt;p&gt;一、tomcat servers会根据请求url中的资源路径，创建对应的ServletDemo01的对象。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;url-http-localhost-project-demo01&quot;&gt;url：http:&#x2F;&#x2F;localhost&#x2F;project&#x2F;demo01&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;二、tomcat servers会创建request和response对象，其中request对象中会封装请求消息数据。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;servletrequest&quot;&gt;ServletRequest&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;WebServlet&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&#x2F;demo01&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; ServletDemo01&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; implements&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; Servlet&lt;&#x2F;span&gt;&lt;span&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;blockquote&gt;
&lt;p&gt;三、tomcat servers将request和response两个对象传递给ServletDemo01中的service方法，并且调用service方法。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;WebServlet&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&#x2F;demo01&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; ServletDemo01&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; implements&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; Servlet&lt;&#x2F;span&gt;&lt;span&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Override&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;	public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; service&lt;&#x2F;span&gt;&lt;span&gt; (ServletRequest&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; servletRequest&lt;&#x2F;span&gt;&lt;span&gt;, ServletResponse&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; servletResponse&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;            throws&lt;&#x2F;span&gt;&lt;span&gt; ServletException, IOException{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;blockquote&gt;
&lt;p&gt;四、程序员，可以通过request对象获取请求消息数据，通过response对象来设置响应消息数据&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;servletresponse&quot;&gt;ServletResponse&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;五、服务器在给浏览器做出响应之前，会从response对象中拿取程序员设置的响应消息数据。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>HTTP请求消息标头介绍</title>
        <published>2020-11-20T00:00:00+00:00</published>
        <updated>2020-11-20T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/http-request-headers/"/>
        <id>https://timberkito.com/posts/http-request-headers/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/http-request-headers/">&lt;h2 id=&quot;qing-qiu-xiao-xi-bao-wen&quot;&gt;请求消息报文&lt;&#x2F;h2&gt;
&lt;p&gt;GET &#x2F;login.html HTTP&#x2F;1.1
Host: localhost
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla&#x2F;5.0 (Windows NT 10.0; Win64; x64) AppleWebKit&#x2F;537.36 (KHTML, like Gecko) Chrome&#x2F;86.0.4240.193 Safari&#x2F;537.36 Edg&#x2F;86.0.622.68
Accept: text&#x2F;html,application&#x2F;xhtml+xml,application&#x2F;xml;q=0.9,image&#x2F;webp,image&#x2F;apng,&lt;em&gt;&#x2F;&lt;&#x2F;em&gt;;q=0.8,application&#x2F;signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: Idea-fe725cb4=de840fe3-c2ef-4646-bc17-d7e2c9b63008
If-None-Match: W&#x2F;&quot;408-1605348268629&quot;
If-Modified-Since: Sat, 14 Nov 2020 10:04:28 GMT&lt;&#x2F;p&gt;
&lt;h2 id=&quot;1-qing-qiu-xing&quot;&gt;1.请求行&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;qing-qiu-fang-shi-qing-qiu-url-qing-qiu-xie-yi-ban-ben&quot;&gt;请求方式 请求url 请求协议&#x2F;版本&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;strong&gt;GET &#x2F;login.html HTTP&#x2F;1.1&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;httpxie-yi-you-7chong-qing-qiu-fang-shi-chang-yong-de-you-liang-chong&quot;&gt;HTTP协议有7种请求方式，常用的有两种&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;get&quot;&gt;GET：&lt;&#x2F;h4&gt;
&lt;p&gt;1.请求参数在请求行中
http:／／localhost／demo03?username=timber
2.请求的url长度有限制的
3.不安全（暴露在网址栏）&lt;&#x2F;p&gt;
&lt;h4 id=&quot;post&quot;&gt;POST：&lt;&#x2F;h4&gt;
&lt;p&gt;1.请求参数在请求体中
2.请求的url长度没有限制
3.安全&lt;&#x2F;p&gt;
&lt;h2 id=&quot;2-qing-qiu-tou-ke-hu-duan-gao-su-fu-wu-qi-yi-xie-xin-xi&quot;&gt;2.请求头：客户端告诉服务器一些信息&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;qing-qiu-tou-ming-cheng-qing-qiu-tou-zhi&quot;&gt;请求头名称：请求头值&lt;&#x2F;h3&gt;
&lt;h3 id=&quot;chang-jian-de-qing-qiu-tou-zhi&quot;&gt;常见的请求头值：&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;1-user-agent&quot;&gt;1.User-Agent:&lt;&#x2F;h4&gt;
&lt;p&gt;浏览器告诉服务器，我访问你使用的浏览器版本信息
*可以在服务器端获取此头信息，解决兼容问题&lt;&#x2F;p&gt;
&lt;h4 id=&quot;2-referer&quot;&gt;2.Referer：&lt;&#x2F;h4&gt;
&lt;p&gt;告诉服务器，当前请求从哪里来
*防盗链：
*统计工作：&lt;&#x2F;p&gt;
&lt;h4 id=&quot;3-connection-keep-alive&quot;&gt;3.Connection: keep-alive&lt;&#x2F;h4&gt;
&lt;p&gt;链接方式
keep-alive 保持长连接为HTTP1.1版本才有的特性&lt;&#x2F;p&gt;
&lt;h2 id=&quot;3-qing-qiu-kong-xing&quot;&gt;3.请求空行&lt;&#x2F;h2&gt;
&lt;p&gt;空行，用于分割POST请求头，和请求体的。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;4-qing-qiu-ti&quot;&gt;4.请求体：&lt;&#x2F;h2&gt;
&lt;p&gt;封装POST请求消息的请求参数的&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>Servlet的体系结构</title>
        <published>2020-11-19T00:00:00+00:00</published>
        <updated>2020-11-19T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/servlet-class-hierarchy/"/>
        <id>https://timberkito.com/posts/servlet-class-hierarchy/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/servlet-class-hierarchy/">&lt;h3 id=&quot;servlet-jie-kou&quot;&gt;Servlet -- 接口&lt;&#x2F;h3&gt;
&lt;h3 id=&quot;&quot;&gt;      |&lt;&#x2F;h3&gt;
&lt;h3 id=&quot;genericservlet-chou-xiang-lei&quot;&gt;GenericServlet -- 抽象类&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;&#x2F;*&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;    将Servlet中其他的方法做了默认的空实现，只将servlet（）方法作为抽象&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;    可以继承GenericServlet，实现service（）方法&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;*&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; ServletDemo02&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; extends&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; GenericServlet&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    @&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Override&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; service&lt;&#x2F;span&gt;&lt;span&gt;(ServletRequest&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; servletRequest&lt;&#x2F;span&gt;&lt;span&gt;, ServletResponse&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; servletResponse&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;            throws&lt;&#x2F;span&gt;&lt;span&gt; ServletException, IOException {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;demo02....&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;-1&quot;&gt;      |&lt;&#x2F;h3&gt;
&lt;h3 id=&quot;httpservlet-chou-xiang-lei&quot;&gt;HttpServlet -- 抽象类&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;&#x2F;*&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;    对http协议的一种封装，简化操作。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt; *&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;WebServlet&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&#x2F;demo03&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; ServletDemo03&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; extends&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; HttpServlet&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    @&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Override&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    protected void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; service&lt;&#x2F;span&gt;&lt;span&gt;(HttpServletRequest&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; req&lt;&#x2F;span&gt;&lt;span&gt;, HttpServletResponse&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; resp&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; throws&lt;&#x2F;span&gt;&lt;span&gt; ServletException, IOException {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        super&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;service&lt;&#x2F;span&gt;&lt;span&gt;(req, resp);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    @&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Override&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    protected void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; doGet&lt;&#x2F;span&gt;&lt;span&gt;(HttpServletRequest&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; req&lt;&#x2F;span&gt;&lt;span&gt;, HttpServletResponse&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; resp&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;            throws&lt;&#x2F;span&gt;&lt;span&gt; ServletException, IOException {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        super&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;doGet&lt;&#x2F;span&gt;&lt;span&gt;(req, resp);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;get....启动&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    @&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Override&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    protected void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; doPost&lt;&#x2F;span&gt;&lt;span&gt;(HttpServletRequest&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; req&lt;&#x2F;span&gt;&lt;span&gt;, HttpServletResponse&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; resp&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;            throws&lt;&#x2F;span&gt;&lt;span&gt; ServletException, IOException {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;        super&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;doPost&lt;&#x2F;span&gt;&lt;span&gt;(req, resp);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;post...启动&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>配置Servlet的两种方式</title>
        <published>2020-11-18T00:00:00+00:00</published>
        <updated>2020-11-18T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/servlet-configuration-methods/"/>
        <id>https://timberkito.com/posts/servlet-configuration-methods/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/servlet-configuration-methods/">&lt;h2 id=&quot;fang-fa-yi-zai-web-xmlzhong-bu-shu-servlet&quot;&gt;方法一：在web.xml中部署Servlet&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;xml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;&amp;lt;!--配置Servlet--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;servlet&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;servlet-name&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;demo2&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;servlet-name&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; &#x2F;&#x2F;创建的Servlet名字&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;servlet-class&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;cn.timber.web.servlet.ServletDemo02&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;servlet-class&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; &#x2F;&#x2F;完整路径：包名+类名&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;        &amp;lt;!--指定Servlet的创建时机&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;            1.第一次被访问时，创建&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                &amp;lt;load-on-startup&amp;gt;的值为负数&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;            2.在服务器启动时，创建&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                &amp;lt;load-on-startup&amp;gt;的值为0或正整数&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;            --&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;load-on-startup&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;5&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;load-on-startup&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;servlet&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;servlet-mapping&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; &#x2F;&#x2F;映射位置&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;servlet-name&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;demo2&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;servlet-name&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;url-pattern&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&#x2F;demo2&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;url-pattern&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; &#x2F;&#x2F;Servlet的映射路径&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;servlet-mapping&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;fang-fa-er-shi-yong-zhu-jie-pei-zhi-servlet&quot;&gt;方法二：使用注解配置Servlet&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;WebServlet&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&#x2F;demo01&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;public class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; ServletDemo01&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; implements&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; Servlet&lt;&#x2F;span&gt;&lt;span&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;yi-ge-servletke-yi-ding-yi-duo-ge-fang-wen-lu-jing&quot;&gt;一个Servlet可以定义多个访问路径&lt;&#x2F;h4&gt;
&lt;p&gt;@WebServlet ({&quot;&#x2F;d4&quot; , &quot;&#x2F;dd4&quot; , &quot;&#x2F;ddd4&quot;})&lt;&#x2F;p&gt;
&lt;h4 id=&quot;lu-jing-de-ding-yi-gui-ze&quot;&gt;路径的定义规则：&lt;&#x2F;h4&gt;
&lt;p&gt;1.&#x2F;xxx
2.&#x2F;xxx&#x2F;xxx (多层路径)
3.*.do (*为通配符，任意字符)&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>关于Servlet接口中各抽象方法简介</title>
        <published>2020-11-17T00:00:00+00:00</published>
        <updated>2020-11-17T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://timberkito.com/posts/servlet-interface-methods/"/>
        <id>https://timberkito.com/posts/servlet-interface-methods/</id>
        
        <content type="html" xml:base="https://timberkito.com/posts/servlet-interface-methods/">&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;java&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;&#x2F;**&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     * 初始化方法&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     * 在Servlet被创建时，执行&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     * 只会执行一次&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     *&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    @&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Override&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; init&lt;&#x2F;span&gt;&lt;span&gt; (ServletConfig servletConfig) throws ServletException{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;init...&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;    &#x2F;**&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     * 获取ServletConfig对象&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     * ServletConfig： Servlet的配置对象&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     *&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    @&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Override&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    public&lt;&#x2F;span&gt;&lt;span&gt; ServletConfig&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; getServletConfig&lt;&#x2F;span&gt;&lt;span&gt; (){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;        return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; null&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;    &#x2F;**&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     * 提供服务的方法&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     * 每一次Servlet被访问时，执行&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     * 可执行多次&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     * &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;@param&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; servletRequest&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     * &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;@param&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFAB70;&quot;&gt; servletResponse&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     * &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;@throws&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; ServletException&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     * &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;@throws&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; IOException&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     *&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    @&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Override&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; service&lt;&#x2F;span&gt;&lt;span&gt; (ServletRequest servletRequest, ServletResponse servletResponse)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            throws ServletException, IOException{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;service...&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;    &#x2F;**&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     * 获取Servlet的一些信息，版本，作者 ...&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     *&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    @&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Override&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    public&lt;&#x2F;span&gt;&lt;span&gt; String&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; getServletInfo&lt;&#x2F;span&gt;&lt;span&gt; (){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;        return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; null&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;    &#x2F;**&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     * 销毁方法&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     * 在Servlet被杀死之前执行&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     * 在服务器正常关闭时，执行，执行一次&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     *&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    @&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Override&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    public void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; destroy&lt;&#x2F;span&gt;&lt;span&gt; (){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        System.out.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;println&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;destroy...&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
</feed>
