学习资料
- JavaSE:【尚硅谷】Java零基础入门教程
- MySQL:【菜鸟教程】MySQL教程
- JDBC:【尚硅谷】JDBC核心技术
HTML+CSS+JavaScript:
- JavaWeb:【黑马程序员】JavaWeb全套教程
- 数据结构与算法:【尚硅谷】Java数据结构与算法
Spring+SpringMVC+MyBatis:
- Spring:【尚硅谷】Spring框架教程
- SpringMVC:【黑马程序员】SSM框架教程
- MyBatis:
- (待更新......)
实用插件
- Chrome插件:Tampermonkey 油猴脚本
油猴脚本:b站多倍速调节(支持剧集和视频)
// ==UserScript== // @name b站多倍速调节(支持剧集和视频) // @namespace lgldlk // @version 0.5 // @description b站多倍速调节(支持剧集和视频)🤞🤞🤞~~~ // @author lgldlk // @include *://*.bilibili.com/video/* // @include *://*.bilibili.tv/video/* // @include *://*.bilibili.com/bangumi/* // @include *://*.bilibili.tv/bangumi/* // @run-at document-start // @grant none // ==/UserScript== let cacheRate = 1, cacheFlag = true, rateArr = [5, 4.5, 4, 3.5, 3, 2.5, 2, 1.5, 1, 0.5, 0.1] function waitForNode(nodeSelector, callback) { var node = nodeSelector(); if (node) { callback(node); } else { setTimeout(function() { waitForNode(nodeSelector, callback); }, 100); } } function debounce(func, wait) { let timer; return function() { let args = arguments; if (timer) clearTimeout(timer); timer = setTimeout(() => { func.apply(this, args) }, wait) } } function deleteChild(e) { var child = e.lastElementChild; while (child) { e.removeChild(child); child = e.lastElementChild; } } function setRate(video, rate) { video.playbackRate=rate; } function setRateText(rate) { (document.querySelector(".bilibili-player-video-btn-speed-name")||document.querySelector("div.squirtle-select-result.squirtle-speed-select-result")).innerText = `${rate}x`; } const initRateBody = function(callBack) { waitForNode(() => document.querySelector('div.bilibili-player-video-btn-speed > div > ul')||document.querySelector("ul.squirtle-select-list.squirtle-speed-select-list.squirtle-dialog"), (node) => { var oV = document.getElementsByTagName("video")[0]; if (oV == undefined) { alert("清空缓存后刷新即可使用") return; } deleteChild(node) for (let i of rateArr) { var tmpLi = document.createElement('li'); tmpLi.classList = "bilibili-player-video-btn-speed-menu-list squirtle-select-item "; tmpLi.innerText = `${ i}x`; tmpLi.style.height = "30px" tmpLi.style["font-size"] = "16px" tmpLi.style["line-height"] = "30px" tmpLi.addEventListener("click", function(k) { return function(e) { e.stopPropagation(); e.preventDefault(); cacheRate = k setRate(oV, k) setRateText(k) } }(i)); node.appendChild(tmpLi); } oV.addEventListener('DOMNodeRemoved', () => { if (cacheFlag == true) { let tmp = debounce(function() { initRateBody(setRate(oV, cacheRate)); setRateText(cacheRate) cacheFlag = true; }, 1000) tmp(); } cacheFlag = false }); callBack && callBack(); }); }; window.onload = initRateBody(null); window.onhashchange = function() { initRateBody(setCacheRate); }
油猴脚本:跳过bilibili充电鸣谢
// ==UserScript== // @name 跳过bilibili充电鸣谢 // @namespace 怒火无边 // @version 2.0 // @description 跳过bilibili充电鸣谢,自动连续播放 // @author 怒火无边 // @match https://www.bilibili.com/video/* // @grant GM_log // @grant GM_addStyle // @grant GM_setValue // @grant GM_getValue // @grant GM_xmlhttpRequest // @grant GM_deleteValue // @license MIT License // ==/UserScript== (function() { if(document.getElementsByTagName('video').length==0){ document.getElementsByTagName('bwp-video')[0].onended=function(){ document.getElementsByClassName('bilibili-player-video-btn-next')[0].click() } }else{ document.getElementsByTagName('video')[0].onended=function(){ document.getElementsByClassName('bilibili-player-video-btn-next')[0].click() } } })();
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。