mirror of
				https://github.com/zhwei820/learn.lianglianglee.com.git
				synced 2025-11-04 08:13:45 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			643 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			643 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html>
 | 
						||
 | 
						||
<!-- saved from url=(0046)https://kaiiiz.github.io/hexo-theme-book-demo/ -->
 | 
						||
 | 
						||
<html xmlns="http://www.w3.org/1999/xhtml">
 | 
						||
 | 
						||
<head>
 | 
						||
 | 
						||
    <head>
 | 
						||
 | 
						||
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 | 
						||
 | 
						||
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
 | 
						||
 | 
						||
        <link rel="icon" href="/static/favicon.png">
 | 
						||
 | 
						||
        <title>23 结束语  会使用只能默默“搬砖”,懂原理才能快速晋升.md.html</title>
 | 
						||
 | 
						||
        <!-- Spectre.css framework -->
 | 
						||
 | 
						||
        <link rel="stylesheet" href="/static/index.css">
 | 
						||
 | 
						||
        <!-- theme css & js -->
 | 
						||
 | 
						||
        <meta name="generator" content="Hexo 4.2.0">
 | 
						||
 | 
						||
    </head>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
<body>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
<div class="book-container">
 | 
						||
 | 
						||
    <div class="book-sidebar">
 | 
						||
 | 
						||
        <div class="book-brand">
 | 
						||
 | 
						||
            <a href="/">
 | 
						||
 | 
						||
                <img src="/static/favicon.png">
 | 
						||
 | 
						||
                <span>技术文章摘抄</span>
 | 
						||
 | 
						||
            </a>
 | 
						||
 | 
						||
        </div>
 | 
						||
 | 
						||
        <div class="book-menu uncollapsible">
 | 
						||
 | 
						||
            <ul class="uncollapsible">
 | 
						||
 | 
						||
                <li><a href="/" class="current-tab">首页</a></li>
 | 
						||
 | 
						||
            </ul>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
            <ul class="uncollapsible">
 | 
						||
 | 
						||
                <li><a href="../">上一级</a></li>
 | 
						||
 | 
						||
            </ul>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
            <ul class="uncollapsible">
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/00 开篇词  领略 MyBatis 设计思维,突破持久化技术瓶颈.md.html">00 开篇词  领略 MyBatis 设计思维,突破持久化技术瓶颈.md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/01  常见持久层框架赏析,到底是什么让你选择 MyBatis?.md.html">01  常见持久层框架赏析,到底是什么让你选择 MyBatis?.md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/02  订单系统持久层示例分析,20 分钟带你快速上手 MyBatis.md.html">02  订单系统持久层示例分析,20 分钟带你快速上手 MyBatis.md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/03  MyBatis 源码环境搭建及整体架构解析.md.html">03  MyBatis 源码环境搭建及整体架构解析.md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/04  MyBatis 反射工具箱:带你领略不一样的反射设计思路.md.html">04  MyBatis 反射工具箱:带你领略不一样的反射设计思路.md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/05  数据库类型体系与 Java 类型体系之间的“爱恨情仇”.md.html">05  数据库类型体系与 Java 类型体系之间的“爱恨情仇”.md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/06  日志框架千千万,MyBatis 都能兼容的秘密是什么?.md.html">06  日志框架千千万,MyBatis 都能兼容的秘密是什么?.md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/07  深入数据源和事务,把握持久化框架的两个关键命脉.md.html">07  深入数据源和事务,把握持久化框架的两个关键命脉.md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/08  Mapper 文件与 Java 接口的优雅映射之道.md.html">08  Mapper 文件与 Java 接口的优雅映射之道.md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/09  基于 MyBatis 缓存分析装饰器模式的最佳实践.md.html">09  基于 MyBatis 缓存分析装饰器模式的最佳实践.md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/10  鸟瞰 MyBatis 初始化,把握 MyBatis 启动流程脉络(上).md.html">10  鸟瞰 MyBatis 初始化,把握 MyBatis 启动流程脉络(上).md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/11  鸟瞰 MyBatis 初始化,把握 MyBatis 启动流程脉络(下).md.html">11  鸟瞰 MyBatis 初始化,把握 MyBatis 启动流程脉络(下).md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/12  深入分析动态 SQL 语句解析全流程(上).md.html">12  深入分析动态 SQL 语句解析全流程(上).md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/13  深入分析动态 SQL 语句解析全流程(下).md.html">13  深入分析动态 SQL 语句解析全流程(下).md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/14  探究 MyBatis 结果集映射机制背后的秘密(上).md.html">14  探究 MyBatis 结果集映射机制背后的秘密(上).md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/15  探究 MyBatis 结果集映射机制背后的秘密(下).md.html">15  探究 MyBatis 结果集映射机制背后的秘密(下).md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/16  StatementHandler:参数绑定、SQL 执行和结果映射的奠基者.md.html">16  StatementHandler:参数绑定、SQL 执行和结果映射的奠基者.md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/17  Executor 才是执行 SQL 语句的幕后推手(上).md.html">17  Executor 才是执行 SQL 语句的幕后推手(上).md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/18  Executor 才是执行 SQL 语句的幕后推手(下).md.html">18  Executor 才是执行 SQL 语句的幕后推手(下).md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/19  深入 MyBatis 内核与业务逻辑的桥梁——接口层.md.html">19  深入 MyBatis 内核与业务逻辑的桥梁——接口层.md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/20  插件体系让 MyBatis 世界更加精彩.md.html">20  插件体系让 MyBatis 世界更加精彩.md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/21  深挖 MyBatis 与 Spring 集成底层原理.md.html">21  深挖 MyBatis 与 Spring 集成底层原理.md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
                    <a href="/专栏/深入剖析 MyBatis 核心原理-完/22  基于 MyBatis 的衍生框架一览.md.html">22  基于 MyBatis 的衍生框架一览.md.html</a>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
                <li>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    <a class="current-tab" href="/专栏/深入剖析 MyBatis 核心原理-完/23 结束语  会使用只能默默“搬砖”,懂原理才能快速晋升.md.html">23 结束语  会使用只能默默“搬砖”,懂原理才能快速晋升.md.html</a>
 | 
						||
 | 
						||
                    
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </li>
 | 
						||
 | 
						||
            </ul>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
        </div>
 | 
						||
 | 
						||
    </div>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
    <div class="sidebar-toggle" onclick="sidebar_toggle()" onmouseover="add_inner()" onmouseleave="remove_inner()">
 | 
						||
 | 
						||
        <div class="sidebar-toggle-inner"></div>
 | 
						||
 | 
						||
    </div>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
    <script>
 | 
						||
 | 
						||
        function add_inner() {
 | 
						||
 | 
						||
            let inner = document.querySelector('.sidebar-toggle-inner')
 | 
						||
 | 
						||
            inner.classList.add('show')
 | 
						||
 | 
						||
        }
 | 
						||
 | 
						||
 | 
						||
 | 
						||
        function remove_inner() {
 | 
						||
 | 
						||
            let inner = document.querySelector('.sidebar-toggle-inner')
 | 
						||
 | 
						||
            inner.classList.remove('show')
 | 
						||
 | 
						||
        }
 | 
						||
 | 
						||
 | 
						||
 | 
						||
        function sidebar_toggle() {
 | 
						||
 | 
						||
            let sidebar_toggle = document.querySelector('.sidebar-toggle')
 | 
						||
 | 
						||
            let sidebar = document.querySelector('.book-sidebar')
 | 
						||
 | 
						||
            let content = document.querySelector('.off-canvas-content')
 | 
						||
 | 
						||
            if (sidebar_toggle.classList.contains('extend')) { // show
 | 
						||
 | 
						||
                sidebar_toggle.classList.remove('extend')
 | 
						||
 | 
						||
                sidebar.classList.remove('hide')
 | 
						||
 | 
						||
                content.classList.remove('extend')
 | 
						||
 | 
						||
            } else { // hide
 | 
						||
 | 
						||
                sidebar_toggle.classList.add('extend')
 | 
						||
 | 
						||
                sidebar.classList.add('hide')
 | 
						||
 | 
						||
                content.classList.add('extend')
 | 
						||
 | 
						||
            }
 | 
						||
 | 
						||
        }
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 | 
						||
function open_sidebar() {
 | 
						||
 | 
						||
    let sidebar = document.querySelector('.book-sidebar')
 | 
						||
 | 
						||
    let overlay = document.querySelector('.off-canvas-overlay')
 | 
						||
 | 
						||
    sidebar.classList.add('show')
 | 
						||
 | 
						||
    overlay.classList.add('show')
 | 
						||
 | 
						||
}
 | 
						||
 | 
						||
function hide_canvas() {
 | 
						||
 | 
						||
    let sidebar = document.querySelector('.book-sidebar')
 | 
						||
 | 
						||
    let overlay = document.querySelector('.off-canvas-overlay')
 | 
						||
 | 
						||
    sidebar.classList.remove('show')
 | 
						||
 | 
						||
    overlay.classList.remove('show')
 | 
						||
 | 
						||
}
 | 
						||
 | 
						||
 | 
						||
 | 
						||
    </script>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
    <div class="off-canvas-content">
 | 
						||
 | 
						||
        <div class="columns">
 | 
						||
 | 
						||
            <div class="column col-12 col-lg-12">
 | 
						||
 | 
						||
                <div class="book-navbar">
 | 
						||
 | 
						||
                    <!-- For Responsive Layout -->
 | 
						||
 | 
						||
                    <header class="navbar">
 | 
						||
 | 
						||
                        <section class="navbar-section">
 | 
						||
 | 
						||
                            <a onclick="open_sidebar()">
 | 
						||
 | 
						||
                                <i class="icon icon-menu"></i>
 | 
						||
 | 
						||
                            </a>
 | 
						||
 | 
						||
                        </section>
 | 
						||
 | 
						||
                    </header>
 | 
						||
 | 
						||
                </div>
 | 
						||
 | 
						||
                <div class="book-content" style="max-width: 960px; margin: 0 auto;
 | 
						||
 | 
						||
    overflow-x: auto;
 | 
						||
 | 
						||
    overflow-y: hidden;">
 | 
						||
 | 
						||
                    <div class="book-post">
 | 
						||
 | 
						||
                        <p id="tip" align="center"></p>
 | 
						||
 | 
						||
                        <div><h1>23 结束语  会使用只能默默“搬砖”,懂原理才能快速晋升</h1>
 | 
						||
 | 
						||
<p>你好,我是杨四正,到这里 MyBatis 的核心内容就介绍差不多了,你可能也需要一段时间来回顾和消化这些内容。在最后这结束语部分,我就不讲知识点了,咱们换个风格,从另一个角度来聊聊我们程序员这份工作。</p>
 | 
						||
 | 
						||
<p>不得不说,现在互联网是一个越来越内卷的圈子了。不仅员工的工作时长一延再延,对员工的要求也是一升再升,就目前国内互联网的环境来看,很少有人能够一直奋斗在一线进行开发(当然,也有一些“骨骼惊奇、天赋异禀”的大佬,那就另当别论)。作为一名普通程序员,我们在做好本职工作之后,就需要花些时间来考虑一下如何“破圈”了。</p>
 | 
						||
 | 
						||
<p>我个人觉得,要想“破圈”,需要有下面几个方面的操作。</p>
 | 
						||
 | 
						||
<p><strong>第一,选择一个上升期的行业或项目,也就是我们常说的“吃行业红利”</strong>。之所以把行业选择放在首位就是因为“选择大于努力”,在互联网这个大行业里面还有很多细分领域,例如,电商、在线教育、互联网医疗、短视频、各种游戏等,进入一个上升的行业或是上升的企业,拿到期权,等到公司上市是可以实现财富自由的。互联网的“造富”例子虽然减少了,但是依旧在不断发生,现在在风口上的“猪”依旧在飞。</p>
 | 
						||
 | 
						||
<p><strong>第二,选对 Leader,也就是所谓的“抱对大腿”</strong>。Leader 的能力决定了我们当前工作的上限,不仅是互联网行业,其实各个行业都是一样的。在遇到超出我们权限的资源问题、协调问题的时候,我们是需要向 Leader 求助的,如果我们的 Leader 也解决不来,可想而知这项工作的阻力会有多么大,做起来有多么艰辛。而我们的工作大多是以结果为导向的,不出成绩的话,再苦再难也无法被别人认可,所以说,选择一个靠谱的 Leader 是很重要的。</p>
 | 
						||
 | 
						||
<p><strong>第三,让自己变得可靠</strong>。在职场中,上级和下级之间是一个双向选择的关系,每个 Leader 身边围绕的人数是有限的,就那么几个位置。当我们千辛万苦找到一个靠谱的 Leader 之后,如何让 Leader 选择我们呢?那就是让我们自己变得靠谱。</p>
 | 
						||
 | 
						||
<p>举个例子,我懂 MyBatis,我邻桌同事也懂 MyBatis,我带了没几天的应届生也知道如何用 MyBatis 写动态 SQL 代码了,看起来都只是个熟练工。假设碰到一个 MyBatis 的问题,应届生不懂,同事不懂,我也不懂,单就 MyBatis 这项技术来说,我们在 Leader 眼里是完全没有区别的,扩展到其他技术也是一样的。但如果在别人解决不了问题的时候,我能解决,如此往复几次,同事有什么技术难题都会请教我,Leader 在决定技术方案的时候也会咨询我,这时我的影响力就会发生变化。</p>
 | 
						||
 | 
						||
<p>上面只是以 MyBatis 这种开源项目为例,其实面对公司内的项目也是一样,很多程序员会觉得自己公司项目代码写得非常垃圾,不愿意花时间读,这是非常错误的想法。其他同事都对“垃圾代码”嗤之以鼻,但是你能对“垃圾代码”了若指掌、如数家珍,这时 Leader 看到你这个人把一件大家不喜欢的事情都能做到八九十分,也会让 Leader 对你形成信任和依赖,更别说你可以通过阅读这些“垃圾代码”解决工作中的疑难问题了。Leader 就只会觉得你靠谱,觉得有你在项目就没有问题,即使有问题你也能解决,你说方案哪里不合理那多半就是不合理了,也就让你成为一个 Leader 和同事眼中靠谱的人,这就是在“垃圾山”里淘到的“宝藏”。</p>
 | 
						||
 | 
						||
<p><strong>第四,珍惜自己的时间,尽量将更多时间花到充实自己上,养成学习的惯性</strong>。我一直认为“拉勾教育 App”与手机里面的各种短视频 App、5v5 推塔 App、第一角色枪战类 App 是竞对,为什么这么说呢?因为这些 App 都是在竞争用户的时间,毕竟世界上最公平的事情就是每个人一天只有 24 小时。就算你守得了高地,推得了水晶,拿得了 5 杀,又能怎样呢?就算你杀得出 G 港,干得翻机场,拿得下 H 港,又能如何呢?都不如打开“拉勾教育 App”去学习、去巩固技能、去完善自己来得安心,所以需要养成学习的惯性。</p>
 | 
						||
 | 
						||
<p>数年之后,当你站到事业巅峰的时候,再回首,会感谢现在坚持学习的自己。</p>
 | 
						||
 | 
						||
<p>当然,如果你觉得我这门课程不错的话,也欢迎你推荐给身边的朋友。</p>
 | 
						||
 | 
						||
</div>
 | 
						||
 | 
						||
                    </div>
 | 
						||
 | 
						||
                    <div>
 | 
						||
 | 
						||
                        <div style="float: left">
 | 
						||
 | 
						||
                            <a href="/专栏/深入剖析 MyBatis 核心原理-完/22  基于 MyBatis 的衍生框架一览.md.html">上一页</a>
 | 
						||
 | 
						||
                        </div>
 | 
						||
 | 
						||
                        
 | 
						||
 | 
						||
                    </div>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                </div>
 | 
						||
 | 
						||
            </div>
 | 
						||
 | 
						||
        </div>
 | 
						||
 | 
						||
    </div>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
    <a class="off-canvas-overlay" onclick="hide_canvas()"></a>
 | 
						||
 | 
						||
</div>
 | 
						||
 | 
						||
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194" integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw==" data-cf-beacon='{"rayId":"709979d2ac573cfa","version":"2021.12.0","r":1,"token":"1f5d475227ce4f0089a7cff1ab17c0f5","si":100}' crossorigin="anonymous"></script>
 | 
						||
 | 
						||
</body>
 | 
						||
 | 
						||
<!-- Global site tag (gtag.js) - Google Analytics -->
 | 
						||
 | 
						||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-NPSEEVD756"></script>
 | 
						||
 | 
						||
<script>
 | 
						||
 | 
						||
    window.dataLayer = window.dataLayer || [];
 | 
						||
 | 
						||
 | 
						||
 | 
						||
    function gtag() {
 | 
						||
 | 
						||
        dataLayer.push(arguments);
 | 
						||
 | 
						||
    }
 | 
						||
 | 
						||
 | 
						||
 | 
						||
    gtag('js', new Date());
 | 
						||
 | 
						||
    gtag('config', 'G-NPSEEVD756');
 | 
						||
 | 
						||
    var path = window.location.pathname
 | 
						||
 | 
						||
    var cookie = getCookie("lastPath");
 | 
						||
 | 
						||
    console.log(path)
 | 
						||
 | 
						||
    if (path.replace("/", "") === "") {
 | 
						||
 | 
						||
        if (cookie.replace("/", "") !== "") {
 | 
						||
 | 
						||
            console.log(cookie)
 | 
						||
 | 
						||
            document.getElementById("tip").innerHTML = "<a href='" + cookie + "'>跳转到上次进度</a>"
 | 
						||
 | 
						||
        }
 | 
						||
 | 
						||
    } else {
 | 
						||
 | 
						||
        setCookie("lastPath", path)
 | 
						||
 | 
						||
    }
 | 
						||
 | 
						||
 | 
						||
 | 
						||
    function setCookie(cname, cvalue) {
 | 
						||
 | 
						||
        var d = new Date();
 | 
						||
 | 
						||
        d.setTime(d.getTime() + (180 * 24 * 60 * 60 * 1000));
 | 
						||
 | 
						||
        var expires = "expires=" + d.toGMTString();
 | 
						||
 | 
						||
        document.cookie = cname + "=" + cvalue + "; " + expires + ";path = /";
 | 
						||
 | 
						||
    }
 | 
						||
 | 
						||
 | 
						||
 | 
						||
    function getCookie(cname) {
 | 
						||
 | 
						||
        var name = cname + "=";
 | 
						||
 | 
						||
        var ca = document.cookie.split(';');
 | 
						||
 | 
						||
        for (var i = 0; i < ca.length; i++) {
 | 
						||
 | 
						||
            var c = ca[i].trim();
 | 
						||
 | 
						||
            if (c.indexOf(name) === 0) return c.substring(name.length, c.length);
 | 
						||
 | 
						||
        }
 | 
						||
 | 
						||
        return "";
 | 
						||
 | 
						||
    }
 | 
						||
 | 
						||
 | 
						||
 | 
						||
</script>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
</html>
 | 
						||
 |