(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{310:function(v,_,l){"use strict";l.r(_);var r=l(10),e=Object(r.a)({},(function(){var v=this,_=v._self._c;return _("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[_("h1",{attrs:{id:"q-a"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#q-a"}},[v._v("#")]),v._v(" Q&A")]),v._v(" "),_("ul",[_("li",[_("p",[v._v("Q: 为什么偶尔CPU占用特别高? 为什么预览图片时插件卡顿?")])]),v._v(" "),_("li",[_("p",[v._v("A: 这是由"),_("code",[v._v("超级剪贴板")]),v._v("监听剪贴板内容更新的机制决定的,为了不漏数据,"),_("code",[v._v("超级剪贴板")]),v._v("的监听策略为每"),_("code",[v._v("300ms")]),v._v("读取一次剪贴板内容并与上一次读取到的内容作比较。如果剪贴板当前位置是一张大图片,那么插件会反复读取这张图片,导致大量计算被用在了无意义的读取与对比上。")]),v._v(" "),_("p",[v._v("插件市场中相同原理的同类插件的处理方法是:")]),v._v(" "),_("ul",[_("li",[v._v("轮询比较两次剪贴板内容,如果检查到当前剪贴板内容数据量较大,则降低轮询时间间隔。\n"),_("ul",[_("li",[v._v("这避免了读取大图片/长文本时的高占用,然而这很容易导致漏数据")])])]),v._v(" "),_("li",[v._v("轮询比较两次剪贴板内容,由用户自定义轮询时间\n"),_("ul",[_("li",[v._v("用户设置的轮询间隔时间长,读取大图片/长文本时不会导致高占用,但很容易漏数据。")]),v._v(" "),_("li",[v._v("用户设置的轮询间隔时间较短,则又会造成高占用")])])])]),v._v(" "),_("p",[v._v("在"),_("code",[v._v("v1.4.0")]),v._v("版本更新中,"),_("code",[v._v("超级剪贴板")]),v._v("换用了"),_("a",{attrs:{href:"https://github.com/sudhakar3697/node-clipboard-event",target:"_blank",rel:"noopener noreferrer"}},[_("code",[v._v("clipboard-event")]),_("OutboundLink")],1),v._v("库监听剪贴板更新事件,这种方式性能更优,不需要反复读取剪贴板内容来做比较,而只需要在检查到剪贴板更新事件时通知插件读取一次剪贴板即可,完全解决了CPU占用高、浏览图片卡顿的问题。")]),v._v(" "),_("p",[v._v("然而该库包含了二进制文件,这触发了uTools插件市场的安全限制而"),_("strong",[v._v("无法上架")]),v._v("。所以自"),_("code",[v._v("v1.4.2")]),v._v("起,插件不再内置监听剪贴板更新事件的二进制文件,用户要使用"),_("strong",[v._v("低占用、高性能的剪贴板监听方案")]),v._v(",可以自行下载并将其移动到剪贴板数据库文件所在目录,详见"),_("RouterLink",{attrs:{to:"/project/ClipboardManager/guide/"}},[v._v("如何手动安装"),_("code",[v._v("clipboard-event-handler")])]),v._v(",插件会自动判断使用新的抑或是旧的方案监听剪贴板更新。同时,自"),_("code",[v._v("v1.4.3")]),v._v("起,你可以在设置页查看当前剪贴板监听程序的运行状态。")],1)])]),v._v(" "),_("hr"),v._v(" "),_("ul",[_("li",[v._v("Q: 为什么官方的剪贴板插件没有CPU占用高这个问题?")]),v._v(" "),_("li",[v._v("A: 官方的剪贴板内容更新事件监听函数也是从一个二进制文件引出的,这个二进制文件跟随主程序启动,不受剪贴板插件的打开或关闭的影响。")])]),v._v(" "),_("hr"),v._v(" "),_("ul",[_("li",[v._v("Q: 启动报错, 读取剪切板出错")]),v._v(" "),_("li",[v._v("A: 请尝试:1.清空本地数据库文件 2.格式化uTools内的插件数据。如果上述方法都无法解决你的问题,欢迎论坛回帖或加入QQ群看一下具体是什么问题")])]),v._v(" "),_("hr"),v._v(" "),_("ul",[_("li",[v._v("Q: 为什么剪贴板记录会丢失?")]),v._v(" "),_("li",[v._v("A: 从"),_("code",[v._v("v1.2.2")]),v._v("起, 已经从原理上修复了漏数据的问题, 之后的版本若出现漏数据, 一般是由于插件退出后台运行导致的: 插件需要保持后台运行才能记录剪贴板, 请检查:\n"),_("ul",[_("li",[v._v("是否正确设置了插件"),_("code",[v._v("跟随主程序启动")])]),v._v(" "),_("li",[v._v("是否在分离模式下关闭了插件 (由uTools机制决定, 分离插件模式下关闭插件会直接退出插件, 而不是隐藏到后台)")]),v._v(" "),_("li",[v._v("是否手动清理或关闭了后台插件 (使用了clear命令或在插件列表关闭了插件后台运行)")])])])]),v._v(" "),_("hr"),v._v(" "),_("ul",[_("li",[v._v("Q: 为什么"),_("code",[v._v("智慧分词")]),v._v("功能使用有限制?")]),v._v(" "),_("li",[v._v("A: 此功能需要服务器资源, 而服务器资源有限, 故暂时只开放部分的免费资源给大家使用; 如果实际使用量较少, 服务器有能力承担压力, 后续可能会开放限制")])]),v._v(" "),_("hr"),v._v(" "),_("ul",[_("li",[v._v("Q: 我对这个插件的安全性有担忧")]),v._v(" "),_("li",[v._v("A: 担忧大可不必, 插件是开源的, 每行代码的提交记录都可以在"),_("a",{attrs:{href:"https://githubcom/ZiuChen/ClipboardManager",target:"_blank",rel:"noopener noreferrer"}},[v._v("Github"),_("OutboundLink")],1),v._v("上完整查看, 如果你有兴趣的话, 我也十分欢迎你为项目贡献代码")])]),v._v(" "),_("hr"),v._v(" "),_("ul",[_("li",[v._v("Q: 万一你在代码里藏毒, 偷窃我的隐私怎么办?")]),v._v(" "),_("li",[v._v('A: 首先, 我写这个插件不是为了获取你的隐私的, 我对你的隐私没有兴趣, 这一点你完全可以放心; 其次uTools官方在插件上架前会对代码进行审查, 如果插件有高危行为, 那也不会过审; 再其次, uTools大部分用户是程序员, 如果我真的在代码里藏了"毒", 那他们也有办法发现, 如果你真的对你的隐私十分关心, 可以选择从'),_("a",{attrs:{href:"https://githubcom/ZiuChen/ClipboardManager",target:"_blank",rel:"noopener noreferrer"}},[v._v("开源仓库"),_("OutboundLink")],1),v._v("下载代码自行构建")])]),v._v(" "),_("hr"),v._v(" "),_("ul",[_("li",[v._v("Q: 我不懂代码, 我也不会构建, 但是我担心你的插件会窃取我的隐私")]),v._v(" "),_("li",[v._v("A: 我在贡献教程中详细说明了如何构建, JavaScript也并不是一门很高深的语言, 祝你能早日入门, 构建出安全的版本供自己使用, 学习的过程中遇到任何问题, 也欢迎随时与我交流 😄")])]),v._v(" "),_("hr"),v._v(" "),_("ul",[_("li",[v._v("Q: 我不管我不管, 你就是藏毒了!")]),v._v(" "),_("li",[v._v("A: 你可以开通会员或购买使用官方的剪贴板插件")])])])}),[],!1,null,null,null);_.default=e.exports}}]);