<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:wfw="http://wellformedweb.org/CommentAPI/">
<channel>
<title>小生博客 - 学习</title>
<link>https://blog.pet111.cn/category/xuexi/</link>
<atom:link href="https://blog.pet111.cn/feed/category/xuexi/" rel="self" type="application/rss+xml" />
<language>zh-CN</language>
<description></description>
<lastBuildDate>Sat, 24 Jan 2026 19:13:00 +0800</lastBuildDate>
<pubDate>Sat, 24 Jan 2026 19:13:00 +0800</pubDate>
<item>
<title>新年专属网页悬浮音乐播放器代码</title>
<link>https://blog.pet111.cn/archives/511/</link>
<guid>https://blog.pet111.cn/archives/511/</guid>
<pubDate>Sat, 24 Jan 2026 19:13:00 +0800</pubDate>
<dc:creator>MR.李先森</dc:creator>
<description><![CDATA[上些日子给网站做了有关于新年红的配色，今天就总觉得差点什么，索性写了一个播放器。过年了放上会更加有新年氛围，提前祝大家新年快乐！功能说明响应式布局：手机端底部居中（支持收缩 / 展开），电脑端左...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<p><img src="https://pic1.imgdb.cn/item/6975c8300a9bd6cd87022e9c.png" alt="播放器" title="播放器"></p><blockquote>上些日子给网站做了有关于新年红的配色，今天就总觉得差点什么，索性写了一个播放器。过年了放上会更加有新年氛围，提前祝大家新年快乐！</blockquote><p><strong>功能说明</strong><br>响应式布局：手机端底部居中（支持收缩 / 展开），电脑端左下角固定显示<br>核心功能：播放 / 暂停、下一曲切换、单曲结束自动切歌，随机切歌不重复<br>体验优化：刷新 / 页面跳转精准续播、无闪烁无冗余样式、手机端点击空白处收缩展开<br>样式特色：新年红金配色、悬浮阴影效果、按钮交互反馈，适配中文字体无乱码<br>兼容处理：突破浏览器自动播放限制，兼容微信 X5 内核，全局样式无冲突<br>使用说明</p><p><strong>1. 代码部署</strong><br>将以下完整代码直接粘贴到 Typecho 主题自定义 HTML/PHP 文件中（如页脚文件footer.php），建议放在</body>标签前。</p><pre><code class="lang-html">    &lt;style&gt;
    #musicPlayer {
        position: fixed;
        bottom: 10px;
        z-index: 999;
        display: flex;
        align-items: center;
        gap: 12px;
        padding: 8px 20px;
        background: rgba(216, 0, 15, 0.9);
        border-radius: 50px;
        box-shadow: 0 0 20px rgba(250, 108, 0, 0.8);
        -webkit-tap-highlight-color: transparent;
        box-sizing: border-box;
        border: 2px solid #dc8f03;
        left: 50%;
        transform: translateX(-50%);
        min-width: fit-content;
        transition: all 0.3s ease-in-out;
    }
    @media screen and (min-width: 768px) {
        #musicPlayer {
            left: 15px;
            transform: translateX(0);
        }
        #musicInfo {
            display: block !important;
        }
    }
    @media screen and (max-width: 767px) {
        #musicPlayer.shrink {
            padding: 8px;
        }
        #musicInfo {
            display: block;
            transition: all 0.3s ease-in-out;
        }
        #musicPlayer.shrink #musicInfo {
            display: none;
        }
    }
    .music-btn {
        width: 42px;
        height: 42px;
        border-radius: 50%;
        border: none;
        outline: none;
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 12px;
        font-weight: bold;
        color: #d8000f;
        background: #dc8f03;
        transition: all 0.3s ease;
        box-shadow: 0 0 10px rgba(250, 108, 0, 0.5);
    }
    .music-btn:hover {
        background: #fff;
        color: #d8000f;
        box-shadow: 0 0 15px rgba(250, 108, 0, 1);
    }
    .music-btn:active {
        transform: scale(0.95);
    }
    #musicInfo {
        color: #fff;
        font-size: 13px;
        font-family: &quot;Microsoft YaHei&quot;, sans-serif;
        white-space: nowrap;
        line-height: 1.2;
    }
    #musicInfo span {
        color: #ffd700;
        font-weight: 500;
    }
    * {
        box-sizing: border-box;
        margin: 0;
        padding: 0;
    }
    &lt;/style&gt;
    &lt;div id=&quot;musicPlayer&quot;&gt;
        &lt;audio id=&quot;bgMusic&quot; preload=&quot;auto&quot; style=&quot;display: none;&quot;&gt;&lt;/audio&gt;
        &lt;button id=&quot;playBtn&quot; class=&quot;music-btn&quot;&gt;播放&lt;/button&gt;
        &lt;button id=&quot;nextBtn&quot; class=&quot;music-btn&quot;&gt;下一曲&lt;/button&gt;
        &lt;div id=&quot;musicInfo&quot;&gt;
            &lt;span id=&quot;playStatus&quot;&gt;暂停播放&lt;/span&gt;：&lt;span id=&quot;songName&quot;&gt;&lt;/span&gt; - &lt;span id=&quot;singerName&quot;&gt;&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;
    &lt;script&gt;
    window.addEventListener('load', function() {
        const audio = document.getElementById('bgMusic');
        const playBtn = document.getElementById('playBtn');
        const nextBtn = document.getElementById('nextBtn');
        const playStatusEl = document.getElementById('playStatus');
        const songNameEl = document.getElementById('songName');
        const singerNameEl = document.getElementById('singerName');
        const musicPlayer = document.getElementById('musicPlayer');
    
        const musicList = [
            { src: '/UGC/1.mp3', name: '《张灯结彩》', singer: '王二妮、阿宝' },
            { src: '/UGC/2.mp3', name: '《恭喜发财》', singer: '刘德华' },
            { src: '/UGC/3.mp3', name: '《新年大吉》', singer: '祁隆' }
        ];
    
        let lastIndex = -1;
        let isPlaying = false;
        const CACHE_KEY = 'music_play_state';
        let isInitiated = false;
        let isShrinked = false;
    
        function updateStatus() {
            const statusText = isPlaying ? '正在播放' : '暂停播放';
            playStatusEl.innerText = statusText;
            playBtn.innerText = isPlaying ? '暂停' : '播放';
        }
    
        function updateMusicInfo(index) {
            const song = musicList[index];
            songNameEl.innerText = song.name;
            singerNameEl.innerText = song.singer;
        }
    
        function getRandomIndex() {
            let randomIndex;
            do {
                randomIndex = Math.floor(Math.random() * musicList.length);
            } while (randomIndex === lastIndex &amp;&amp; musicList.length &gt; 1);
            lastIndex = randomIndex;
            return randomIndex;
        }
    
        function saveState() {
            const currentIndex = musicList.findIndex(item =&gt; item.src === audio.src);
            const state = {
                isPlaying,
                index: currentIndex &gt; -1 ? currentIndex : 0,
                time: audio.currentTime,
                lastIndex
            };
            sessionStorage.setItem(CACHE_KEY, JSON.stringify(state));
        }
    
        function restoreState() {
            const cache = sessionStorage.getItem(CACHE_KEY);
            if (!cache) return false;
            try {
                const state = JSON.parse(cache);
                audio.src = musicList[state.index].src;
                audio.currentTime = state.time;
                lastIndex = state.lastIndex;
                isPlaying = state.isPlaying;
                updateMusicInfo(state.index);
                return true;
            } catch (e) {
                sessionStorage.removeItem(CACHE_KEY);
                return false;
            }
        }
    
        function toggleShrink() {
            if (window.innerWidth &gt; 767) return;
            isShrinked = !isShrinked;
            musicPlayer.classList.toggle('shrink', isShrinked);
        }
    
        function playCore() {
            audio.muted = true;
            audio.play().then(() =&gt; {
                isPlaying = true;
                updateStatus();
                setTimeout(() =&gt; audio.muted = false, 100);
                isInitiated = true;
                saveState();
                if (window.innerWidth &lt;= 767 &amp;&amp; !isShrinked) {
                    isShrinked = true;
                    musicPlayer.classList.add('shrink');
                }
            }).catch(err =&gt; {
                isPlaying = false;
                updateStatus();
            });
        }
    
        function playMusic() {
            if (!audio.src) {
                const index = getRandomIndex();
                audio.src = musicList[index].src;
                updateMusicInfo(index);
            }
            playCore();
        }
    
        function pauseMusic() {
            audio.pause();
            isPlaying = false;
            updateStatus();
            saveState();
        }
    
        function togglePlay() {
            if (window.innerWidth &lt;= 767 &amp;&amp; isShrinked) {
                toggleShrink();
            }
            isPlaying ? pauseMusic() : playMusic();
        }
    
        function playNext() {
            if (window.innerWidth &lt;= 767 &amp;&amp; isShrinked) {
                toggleShrink();
            }
            const index = getRandomIndex();
            audio.src = musicList[index].src;
            updateMusicInfo(index);
            audio.currentTime = 0;
            playCore();
            setTimeout(() =&gt; {
                if (window.innerWidth &lt;= 767 &amp;&amp; !isShrinked) {
                    isShrinked = true;
                    musicPlayer.classList.add('shrink');
                }
            }, 2000);
        }
    
        playBtn.addEventListener('click', togglePlay);
        playBtn.addEventListener('touchstart', (e) =&gt; { e.preventDefault(); togglePlay(); });
        nextBtn.addEventListener('click', playNext);
        nextBtn.addEventListener('touchstart', (e) =&gt; { e.preventDefault(); playNext(); });
        musicPlayer.addEventListener('click', (e) =&gt; {
            if (e.target === musicPlayer &amp;&amp; window.innerWidth &lt;= 767) {
                toggleShrink();
            }
        });
        musicPlayer.addEventListener('touchstart', (e) =&gt; {
            if (e.target === musicPlayer &amp;&amp; window.innerWidth &lt;= 767) {
                e.preventDefault();
                toggleShrink();
            }
        }, { passive: false });
        audio.addEventListener('ended', playNext);
        audio.addEventListener('timeupdate', saveState);
        window.addEventListener('resize', () =&gt; {
            if (window.innerWidth &gt; 767) {
                musicPlayer.classList.remove('shrink');
            }
        });
    
        const hasCache = restoreState();
        if (hasCache) {
            isPlaying &amp;&amp; playCore();
        } else {
            playMusic();
        }
    
        function initOnUserAction() {
            if (isInitiated) return;
            playMusic();
            document.removeEventListener('click', initOnUserAction);
            document.removeEventListener('touchstart', initOnUserAction);
        }
        document.addEventListener('click', initOnUserAction);
        document.addEventListener('touchstart', initOnUserAction, { passive: false });
    });
    &lt;/script&gt;</code></pre><p><strong>2. 音乐文件配置</strong><br>将 MP3 音乐文件上传至网站/UGC/目录（若无该目录请自行创建）<br>如需修改音乐文件路径 / 添加 / 替换歌曲，直接修改代码中musicList数组即可，格式如下：</p><pre><code class="lang-javascript">const musicList = [
    { src: '音乐文件路径', name: '歌曲名', singer: '歌手名' },
    // 按需添加更多歌曲
];</code></pre><p><strong>3. 基础操作</strong><br>电脑端：直接点击「播放 / 暂停」「下一曲」按钮操作，全程显示歌曲信息<br>手机端：<br>点击按钮自动展开播放器，播放后 2 秒自动收缩<br>点击播放器空白处，可手动切换收缩 / 展开状态<br>切歌时自动展开显示新歌曲信息，2 秒后恢复收缩</p>
]]></content:encoded>
<slash:comments>4</slash:comments>
<comments>https://blog.pet111.cn/archives/511/#comments</comments>
<wfw:commentRss>https://blog.pet111.cn/feed/category/xuexi/</wfw:commentRss>
</item>
<item>
<title>利用百度地图做博客足迹地图HTML源码（可更改地图样式）</title>
<link>https://blog.pet111.cn/archives/440/</link>
<guid>https://blog.pet111.cn/archives/440/</guid>
<pubDate>Wed, 21 May 2025 17:23:00 +0800</pubDate>
<dc:creator>MR.李先森</dc:creator>
<description><![CDATA[简介之前发过一些关于足迹的源码，后来由于地图的更新或者一些限制无法在使用，又重新写了一套，这套足迹使用百度地图来实现的，我觉得要比之前好得多，加入了图文，足迹logo，等等。具体可到我的关于页面...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<h2>简介</h2><p>之前发过一些关于足迹的源码，后来由于地图的更新或者一些限制无法在使用，又重新写了一套，这套足迹使用百度地图来实现的，我觉得要比之前好得多，加入了图文，足迹logo，等等。具体可到我的<a href="https://blog.pet111.cn/guanyu.html">关于</a>页面查看。</p><h2>源码截图</h2><p><img src="https://pic1.imgdb.cn/item/682d9b2b58cb8da5c80252c6.png" alt="" title=""></p><h2>使用说明</h2><p>将源码下载好后首先我们要到<a href="https://blog.pet111.cn/go/aHR0cHM6Ly9sYnMuYmFpZHUuY29tLw">百度地图开放平台</a>注册一个自己的账号，并设置好自己的域名信息，等待审核通过后 拿到自己的AK码。然后添加至首页的` &lt;!-- 引入百度地图API --&gt;</p><pre><code>&lt;script type=&quot;text/javascript&quot; src=&quot;https://api.map.baidu.com/api?v=1.0&amp;&amp;type=webgl&amp;ak=这里是你的AK&quot;&gt;&lt;/script&gt;`这个位置即可。
</code></pre><p>地图样式可在<a href="https://blog.pet111.cn/go/aHR0cHM6Ly9sYnN5dW4uYmFpZHUuY29tL2FwaWNvbnNvbGUvY3VzdG9tbWFw">个性化地图</a>界面设置地图样式。然后将代码添加至` // 设置地图样式</p><pre><code>    map.setMapStyleV2({
        styleId: '这里是地图样式'ID
    });`
            
</code></pre><p>数据信息再markers.js中进行修改，一定要注意格式，不然会不显示的。</p><pre><code>// 坐标查询：https://api.map.baidu.com/lbsapi/getpoint/index.html

        var markers = [
            {
        latLng: [125.341771,43.873726],
        name: &quot;长春市&quot;,
        icon: &quot;/footprint/zj.png&quot;,
        desc: &quot;长春市&quot;
    },
    {
        latLng: [124.831767,45.148014],// 图文带跳转的
        name: &quot;松原市&quot;,
        icon: &quot;/footprint/zj.png&quot;,// 这是足迹logo
        desc: &quot;松原市。&quot;,// 这里是简介
        photo: [
            &quot;/usr/uploads/2025/01/2486362157.jpg&quot;,
            &quot;/usr/uploads/2025/01/1044572061.jpg&quot;,
            &quot;/usr/uploads/2025/01/1454283446.jpg&quot;,
            &quot;/usr/uploads/2025/01/3919603999.jpg&quot;,
        ],
        links: [
            &quot;/index.php/archives/138/&quot;,// 第一个图文带跳转的链接
            &quot;/index.php/archives/138/&quot;,// 第2个图文带跳转的链接
            &quot;/index.php/archives/138/&quot;,// 第3个图文带跳转的链接
            &quot;/index.php/archives/138/&quot;,// 第4个图文带跳转的链接
        ]
    },
    {
        latLng: [128.091721,42.05933],// 单独文字介绍的
        name: &quot;长白山&quot;,
        icon: &quot;/footprint/zj.png&quot;,        
        desc: &quot;长白山&quot;
    },
    {
        latLng: [128.251537,43.32305],
        name: &quot;六顶山&quot;,
        icon: &quot;/footprint/zj.png&quot;,        
        desc: &quot;六顶山&quot;
    },
    {
        latLng: [126.992893,46.644393],
        name: &quot;绥化市&quot;,
        icon: &quot;/footprint/zj.png&quot;,        
        desc: &quot;绥化市&quot;
    },

        ];</code></pre><p>喜欢什么样式添加什么样式就可以了。</p><h2>调试</h2><p>数据添加好了之后可以先访问一下看下有没有错误，没有的可以就可以在页面或者直连的方式进行访问查看了。如果是加入嵌入式。再加入如下 <code>原生html</code> 代码即可！</p><pre><code class="lang-html">&lt;iframe scrolling=no style=&quot;min-height:480px !important;&quot; src=&quot;你的足迹地址&quot; width=&quot;100%&quot; height=&quot;100%&quot;&gt;&lt;/iframe&gt;</code></pre><h2>源码下载</h2><p><a href="https://blog.pet111.cn/go/aHR0cHM6Ly93d3cuaWxhbnpvdS5jb20vcy9lYVRaeFpvRg">点击下载</a></p><h2>免责声明</h2><p><strong>本站提供的资源，均来自网络，如有版权争议与本站无关，所有内容及软件的文章仅限用于个人学习和研究目的。下载者不得将上述内容用于商业或者非法用途，否则，一切后果请用户自行自负，我们不保证内容的长久可用性，通过使用本站内容随之而来的风险与本站无关，您务必在下载后的24个小时之内，从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序，请支持正版软件，或购买注册，以得到更好的正版服务。如本站侵犯了您的权益，请致信E-mail：<a href="mailto:937745580@qq.com">937745580@qq.com</a> </strong></p>
]]></content:encoded>
<slash:comments>7</slash:comments>
<comments>https://blog.pet111.cn/archives/440/#comments</comments>
<wfw:commentRss>https://blog.pet111.cn/feed/category/xuexi/</wfw:commentRss>
</item>
<item>
<title>Adobe Photoshop 2025</title>
<link>https://blog.pet111.cn/archives/411/</link>
<guid>https://blog.pet111.cn/archives/411/</guid>
<pubDate>Thu, 24 Oct 2024 21:27:00 +0800</pubDate>
<dc:creator>MR.李先森</dc:creator>
<description><![CDATA[文章包含隐藏内容，请进入文章内页查看~]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
文章包含隐藏内容，请进入文章内页查看~
]]></content:encoded>
<slash:comments>1</slash:comments>
<comments>https://blog.pet111.cn/archives/411/#comments</comments>
<wfw:commentRss>https://blog.pet111.cn/feed/category/xuexi/</wfw:commentRss>
</item>
<item>
<title>情韵歌曲-陈瑞《情罪》MTV版本 伤感流行歌曲欣赏</title>
<link>https://blog.pet111.cn/archives/402/</link>
<guid>https://blog.pet111.cn/archives/402/</guid>
<pubDate>Wed, 02 Oct 2024 21:48:00 +0800</pubDate>
<dc:creator>MR.李先森</dc:creator>
<description><![CDATA[【MV来源：酷我音乐 仅用于个人欣赏，如有侵权联系删除。】我曾看到过一个舞者与歌曲中相匹配：他叫马克，妻子是一位舞者，但是妻子突然离世，马克有点精神失常，从此就经常在大街上跳舞，以此怀念自己的挚...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<p></p><p><p style="text-align:center; color:red;">【MV来源：酷我音乐 仅用于个人欣赏，如有侵权联系删除。】</p></p><p>我曾看到过一个舞者与歌曲中相匹配：他叫马克，妻子是一位舞者，但是妻子突然离世，马克有点精神失常，从此就经常在大街上跳舞，以此怀念自己的挚爱。</p><p>不品人间酒，不知其中醉；<br>不陷世间情，不知其中累；<br>不经沧桑苦，不知其中味；<br>爱过知情重，醉过知酒浓。</p><p>写歌的人用了脑，唱歌的人用了心,<br>听歌的人用了情，有故事的人流了泪。</p><p>不怕音乐太好听，就怕歌词入了心 ，<br>愿你们只听曲中意，不做曲中人。<br>珍惜眼前人，珍惜今生缘！</p>
]]></content:encoded>
<slash:comments>0</slash:comments>
<comments>https://blog.pet111.cn/archives/402/#comments</comments>
<wfw:commentRss>https://blog.pet111.cn/feed/category/xuexi/</wfw:commentRss>
</item>
<item>
<title>美化日志主题，我很满意嘻嘻。</title>
<link>https://blog.pet111.cn/archives/387/</link>
<guid>https://blog.pet111.cn/archives/387/</guid>
<pubDate>Sun, 15 Sep 2024 15:01:00 +0800</pubDate>
<dc:creator>MR.李先森</dc:creator>
<description><![CDATA[前些日子拿到这套主题，第一感觉是清爽，简洁。挺喜欢的，但是跟我实际使用可能稍微差了一点点功能于是动手改造一下。老铁们还有什么好的建议欢迎提出。增加完善。主题新增功能-新增折叠面板-新增进度条-新...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<blockquote>前些日子拿到这套主题，第一感觉是清爽，简洁。挺喜欢的，但是跟我实际使用可能稍微差了一点点功能于是动手改造一下。老铁们还有什么好的建议欢迎提出。增加完善。</blockquote><h2>主题新增功能</h2><p>-新增折叠面板<br>-新增进度条<br>-新增文字居中样式<br>-新增文字呼吸跑马灯<br>-新增彩色分隔条</p><p>/优化整体页面。<br>/修复已知问题<br>/修复专题页面</p><hr><h2>功能：</h2><p>浏览进度、暗黑模式、文章目录、相册、善念（说说）、归档页、专题页面、自定义字体、自定义菜单、自定义CSS等</p><h2>编辑器功能：</h2><p>行内代码、代码块、表格、视频、音频、影集（画廊）、时间线、下载按钮、任务清单、原生代码、折叠面板、进度条、文字居中<br>跑马灯文字、彩色分隔条、回复可见等...（陆续更新）</p><h2>演示地址：</h2><p></p>
]]></content:encoded>
<slash:comments>1</slash:comments>
<comments>https://blog.pet111.cn/archives/387/#comments</comments>
<wfw:commentRss>https://blog.pet111.cn/feed/category/xuexi/</wfw:commentRss>
</item>
<item>
<title>JP-Word简谱编辑软件</title>
<link>https://blog.pet111.cn/archives/380/</link>
<guid>https://blog.pet111.cn/archives/380/</guid>
<pubDate>Wed, 04 Sep 2024 22:24:00 +0800</pubDate>
<dc:creator>MR.李先森</dc:creator>
<description><![CDATA[文章包含隐藏内容，请进入文章内页查看~]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
文章包含隐藏内容，请进入文章内页查看~
]]></content:encoded>
<slash:comments>0</slash:comments>
<comments>https://blog.pet111.cn/archives/380/#comments</comments>
<wfw:commentRss>https://blog.pet111.cn/feed/category/xuexi/</wfw:commentRss>
</item>
<item>
<title>OPPO R11t-官方固件-线刷包-R11系列</title>
<link>https://blog.pet111.cn/archives/372/</link>
<guid>https://blog.pet111.cn/archives/372/</guid>
<pubDate>Sat, 24 Aug 2024 20:19:00 +0800</pubDate>
<dc:creator>MR.李先森</dc:creator>
<description><![CDATA[今天朋友的一款OPPO R11t手机忘记了密码，因为手机比较老，通过手机本身根本恢复不了，无奈只能刷机，在网上找了半天的刷机包最后也算是找到了。现将刷机包分享出来，有需要的下载即可。一、准备工作...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<blockquote>今天朋友的一款OPPO R11t手机忘记了密码，因为手机比较老，通过手机本身根本恢复不了，无奈只能刷机，在网上找了半天的刷机包最后也算是找到了。现将刷机包分享出来，有需要的下载即可。</blockquote><h2>一、准备工作</h2><p>1、手机要有50%以上的电量以免后续电量不足。</p><p>2、下载OPPO官方驱动：<a href="https://blog.pet111.cn/go/aHR0cHM6Ly93d3cuaWxhbnpvdS5jb20vcy9VYTV5bllseA">点击下载</a></p><p>3、下载并解压固件包：OPPO R11t-官方固件-线刷包-R11系列 <a href="https://blog.pet111.cn/go/aHR0cHM6Ly93d3cuMTIzcGFuLmNvbS9zL2tqTllUZC1ubWZrLmh0bWw">点击下载</a></p><p>4、刷机前将重要数据备份，线刷会清除所有数据，包括密码，深度还原出厂设置。</p><h2>二、开始刷机</h2><p>1、首先安装OPPO官方驱动</p><p>2、解压缩固件包后，双击运行工具“MsmDownloadTool.exe”，此时会提示选择型号。运行工具后，选择型号如下：</p><p>OPPO R11 选择 16051<br>OPPO R11T 选择 16052<br>OPPO R11 Plust 选择 16102<br>OPPO R11 Plus 选择 16103<br>OPPO R11 Pluskt 选择 16116<br>OPPO R11 Plusk 选择 16118</p><p>选择完型号后，所有选项基本默认无需改动（售后升级模式）</p><ul><li>手机在关机状态下，按住音量上键、下键不松手，插上USB线连接电脑，设备管理器将识别到一个9008字样的端口，这时就可以松手了。</li><li>或者当看到MsmDownloadTool上连接状态由N/A变为已连接时就可以松手了，工具与设备管理器是同时识别的。</li><li>MsmDownloadTool上点击“开始”或“Start”就开始刷机了。</li><li>刷机途中请勿触碰或者拔掉手机，以免中断。</li><li>直到提示“文件下载完毕”恭喜你刷机成功了，手机将自动重启，第一次开机时间有点长，以后在开机就好了，耐心等待。</li></ul><h2>特别说明：如果不显示端口COM和LPT，或者未识别的设备情况，则需要安装<code>QUSB_BULK</code>驱动，</h2><p>下载地址：<a href="https://blog.pet111.cn/go/aHR0cHM6Ly93d3cuaWxhbnpvdS5jb20vcy9aU3l5blkzeg">https://www.ilanzou.com/s/ZSyynY3z</a></p><h2>QUSB_BULK驱动安装教程：</h2><p>电脑端打开设备管理器，看到新设备QUSB_BULK，右键安装驱动, 浏览计算机以查找驱动软件,选择解压出来的高通驱动文件夹确定<br>如果弹出签名，选始终安装。</p>
]]></content:encoded>
<slash:comments>0</slash:comments>
<comments>https://blog.pet111.cn/archives/372/#comments</comments>
<wfw:commentRss>https://blog.pet111.cn/feed/category/xuexi/</wfw:commentRss>
</item>
<item>
<title>知识问答和多个趣味API接口嵌入博客（附源码）</title>
<link>https://blog.pet111.cn/archives/337/</link>
<guid>https://blog.pet111.cn/archives/337/</guid>
<pubDate>Mon, 05 Aug 2024 22:59:00 +0800</pubDate>
<dc:creator>MR.李先森</dc:creator>
<description><![CDATA[前些天我的博客站点的api签名突然就不好用了，后来发现是api接口出现了问题，随后就在网上找了一些API接口发现“天聚数行”挺有意思，接口也比较全，然后就写了几个接口，没怎么做页面美化，因为能力...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<blockquote>前些天我的博客站点的api签名突然就不好用了，后来发现是api接口出现了问题，随后就在网上找了一些API接口发现“天聚数行”挺有意思，接口也比较全，然后就写了几个接口，没怎么做页面美化，因为能力有限。我觉得给孩子看看还是挺好的。源码包含：十万个为什么、60秒读世界、故事大全、每日一问精彩阅读、古籍名句、脑筋急转弯、诗词问答、唐诗三百首等。源码和图片我都给大家准备好了，有需要的就下载使用吧！</blockquote><hr><h2>注册账号</h2><p>首先要到 <a href="https://blog.pet111.cn/go/aHR0cHM6Ly93d3cudGlhbmFwaS5jb20v">天聚数行</a> 注册一个账号， <code>免费版本每天可以使用接口100次</code> ，拿到自己的API秘钥添加至html代码中的秘钥区域即可。我都有标注的。</p><p>例：</p><pre><code class="lang-html">    &lt;script&gt;
        // 你的API密钥
        const apiKey = '@@@@@@@@@@@@@@@@@@'; // 替换为你的APIKEY密钥
        const apiUrl = `https://apis.tianapi.com/poetry/index?key=${apiKey}`;</code></pre><hr><h2>嵌入代码</h2><p>将所有的html的秘钥设置好后上传至你服务器，再你的博客当中在嵌入即可代码如下。</p><pre><code class="lang-html">&lt;iframe src=&quot;/这里写你源码的位置.html&quot; width=&quot;100%&quot; height=&quot;1000&quot;&gt;&lt;/iframe&gt;</code></pre><hr><h2>图片展示</h2><p><img src="https://pic.imgdb.cn/item/66b0e4c8d9c307b7e993fa3c.jpg" alt="Test" title="Test"> <br><img src="https://pic.imgdb.cn/item/66b0e4c8d9c307b7e993fa02.jpg" alt="Test" title="Test"> <br> <img src="https://pic.imgdb.cn/item/66b0e4c8d9c307b7e993fa1d.png" alt="Test" title="Test"></p><hr><h2>源码下载</h2><p>{hide}<br>{cloud title="趣味API" type="lz" url="https://www.ilanzou.com/s/6g2phcL" password=""/}<br>{/hide}</p>
]]></content:encoded>
<slash:comments>0</slash:comments>
<comments>https://blog.pet111.cn/archives/337/#comments</comments>
<wfw:commentRss>https://blog.pet111.cn/feed/category/xuexi/</wfw:commentRss>
</item>
<item>
<title>iOS17屏蔽更新，(附描述文件)</title>
<link>https://blog.pet111.cn/archives/327/</link>
<guid>https://blog.pet111.cn/archives/327/</guid>
<pubDate>Tue, 30 Jul 2024 14:01:00 +0800</pubDate>
<dc:creator>MR.李先森</dc:creator>
<description><![CDATA[就在前不久，我手欠升级了IOS18之后，导致手机内的数据丢失，后来被迫无奈仅仅恢复了3月份的17.5的备份，就在今天，苹果又提示更新，心想这次无论如何也不会再更新了。但是面对多少有点强迫症的我，...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<blockquote>就在前不久，我手欠升级了IOS18之后，导致手机内的数据丢失，后来被迫无奈仅仅恢复了3月份的17.5的备份，就在今天，苹果又提示更新，心想这次无论如何也不会再更新了。但是面对多少有点强迫症的我，看着桌面有个小红点，心里就不舒服，于是今天打算就将系统定格在IOS17.5.1，此描述文件仅适用于IOS 17.x</blockquote><h2>一、修改手机时间</h2><p>首先点击手机的 <code>设置-通用-日期与时间</code> ，将日期修改到 <code>2023年12月13日，时间随意</code> 完成后进行下一步。</p><h2>二、下载描述文件</h2><p>（1）在完成第一步的时间这时候就可以下载描述文件了，我们用手机自带的 <code>Safari浏览器</code> 访问 <code>https://wwl.lanzouj.com/imfQZ25ypzif</code> 或点击 <a href="https://blog.pet111.cn/go/aHR0cHM6Ly93d2wubGFuem91ai5jb20vaW1mUVoyNXlwemlm">传送门</a> </p><p>（2）之后点击下载，在弹出的安装配置描述文件弹窗时，点击 <code>允许</code> </p><p>注：如果出现选取设备弹窗，则选择手机即可。</p><h2>三、安装描述文件</h2><p>接下来就是安装描述文件，我们依次点击 <code>设置-通用-VPN与设备管理</code> ，接着你会发现在配置描述文件中出现一个名为 <code>tv OS 17 Beta........</code> 的文件，我们点击这个描述文件将其安装后重启手机即可（其实不重启也行）。</p><p>此刻我们在依次点击<code>设置-通用-软件更新</code>会出现IOS 17.x.x 已是最新版本，至此已经完成。</p><h2>四、恢复时间</h2><p>安装完成后 <code>务必立即改回正确系统时间。</code></p><h2>说明</h2><p>1， iOS 17 屏蔽更新的方法，是依靠安装tv OS 测试版的描述文件实现的，原理就是让 iPhone 的更新通道转移到tv OS 从而实现彻底屏蔽更新。</p><p>2，目前网上流传出来的tvOS 17 描述文件，是有“有效期”的，时间截止到2023 年 12 月 14 日</p><p>3，后续如果想要解除屏蔽更新，只需要移除屏蔽更新文件即可，选择“移除描述文件”，根据提示输入设备密码，移除成功后重新启动设备，返回“软件更新”中查看即可。</p><p>4，当然还有一个办法就是将固件下载后再删除，个人觉得费时间，再此就不演示了。</p><h2>免责声明</h2><p>本站提供的资源，均来自网络，如有版权争议与本站无关，所有内容及软件的文章仅限用于个人学习和研究目的。下载者不得将上述内容用于商业或者非法用途，否则，一切后果请用户自行自负，我们不保证内容的长久可用性，通过使用本站内容随之而来的风险与本站无关，您务必在下载后的24个小时之内，从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序，请支持正版软件，或购买注册，以得到更好的正版服务。如本站侵犯了您的权益，请致信E-mail：<a href="mailto:937745580@qq.com">937745580@qq.com</a></p>
]]></content:encoded>
<slash:comments>0</slash:comments>
<comments>https://blog.pet111.cn/archives/327/#comments</comments>
<wfw:commentRss>https://blog.pet111.cn/feed/category/xuexi/</wfw:commentRss>
</item>
<item>
<title>剪咉多版本合集（PC+手机）</title>
<link>https://blog.pet111.cn/archives/322/</link>
<guid>https://blog.pet111.cn/archives/322/</guid>
<pubDate>Mon, 22 Jul 2024 20:00:00 +0800</pubDate>
<dc:creator>MR.李先森</dc:creator>
<description><![CDATA[剪映5.5-5.9：{hide}{cloud title="剪映5.5-5.9版" type="lz" url="https://www.ilanzou.com/s/ZyaCgFj" passw...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<h3>剪映5.5-5.9：</h3><p>{hide}</p><p>{cloud title="剪映5.5-5.9版" type="lz" url="https://www.ilanzou.com/s/ZyaCgFj" password=""/}</p><p>{/hide}</p><hr><h3>剪映6.0：</h3><p>{hide}</p><p>{cloud title="剪映6.0版" type="lz" url="https://www.ilanzou.com/s/Y4uCgTn" password=""/}</p><p>{/hide}</p><hr><h3>剪映国际版：</h3><p>{hide}</p><p>{cloud title="剪映国际版" type="lz" url="https://www.ilanzou.com/s/qngCgt1" password=""/}</p><p>{/hide}</p><hr><h3>剪映安卓版：</h3><p>{hide}</p><p>{cloud title="手机版" type="default" url="https://pan.quark.cn/s/f26f40ac651e#/list/share" password=""/}</p><p>{/hide}</p><hr><h3>免责声明</h3><p>{alert type="info"}</p><p>本站提供的资源，均来自网络，如有版权争议与本站无关，所有内容及软件的文章仅限用于个人学习和研究目的。下载者不得将上述内容用于商业或者非法用途，否则，一切后果请用户自行自负，我们不保证内容的长久可用性，通过使用本站内容随之而来的风险与本站无关，您务必在下载后的24个小时之内，从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序，请支持正版软件，或购买注册，以得到更好的正版服务。如本站侵犯了您的权益，请致信E-mail：<a href="mailto:937745580@qq.com">937745580@qq.com</a></p><p>{/alert}</p>
]]></content:encoded>
<slash:comments>0</slash:comments>
<comments>https://blog.pet111.cn/archives/322/#comments</comments>
<wfw:commentRss>https://blog.pet111.cn/feed/category/xuexi/</wfw:commentRss>
</item>
</channel>
</rss>